UserProxyAgent

UserProxyAgent(
    name: str,
    is_termination_msg: Callable[[dict], bool] | None = None,
    max_consecutive_auto_reply: int | None = None,
    human_input_mode: Literal['ALWAYS', 'NEVER', 'TERMINATE'] = 'ALWAYS',
    function_map: dict[str, typing.Callable] | None = None,
    code_execution_config: dict | Literal[False] = \{},
    default_auto_reply: dict | str | None = '',
    llm_config: dict | Literal[False] | None = False,
    system_message: str | list | None = '',
    description: str | None = None,
    **kwargs
)

(In preview) A proxy agent for the user, that can execute code and provide feedback to the other agents.

UserProxyAgent is a subclass of ConversableAgent configured with human_input_mode to ALWAYS and llm_config to False. By default, the agent will prompt for human input every time a message is received. Code execution is enabled by default. LLM-based auto reply is disabled by default. To modify auto reply, register a method with register_reply. To modify the way to get human input, override get_human_input method. To modify the way to execute code blocks, single code block, or function call, override execute_code_blocks, run_code, and execute_function methods respectively.

Parameters:
NameDescription
namename of the agent.

Type: str
is_termination_msga function that takes a message in the form of a dictionary and returns a boolean value indicating if this received message is a termination message.

The dict can contain the following keys: “content”, “role”, “name”, “function_call”.

Type: Callable[[dict], bool] | None

Default: None
max_consecutive_auto_replythe maximum number of consecutive auto replies.

default to None (no limit provided, class attribute MAX_CONSECUTIVE_AUTO_REPLY will be used as the limit in this case).

The limit only plays a role when human_input_mode is not “ALWAYS”.

Type: int | None

Default: None
human_input_modewhether to ask for human inputs every time a message is received.

Possible values are “ALWAYS”, “TERMINATE”, “NEVER”.

(1) When “ALWAYS”, the agent prompts for human input every time a message is received.

Under this mode, the conversation stops when the human input is “exit”, or when is_termination_msg is True and there is no human input.

(2) When “TERMINATE”, the agent only prompts for human input only when a termination message is received or the number of auto reply reaches the max_consecutive_auto_reply.

(3) When “NEVER”, the agent will never prompt for human input.

Under this mode, the conversation stops when the number of auto reply reaches the max_consecutive_auto_reply or when is_termination_msg is True.

Type: Literal['ALWAYS', 'NEVER', 'TERMINATE']

Default: ‘ALWAYS’
function_mapMapping function names (passed to openai) to callable functions.

Type: dict[str, typing.Callable] | None

Default: None
code_execution_configconfig for the code execution.

To disable code execution, set to False.

Otherwise, set to a dictionary with the following keys: - work_dir (Optional, str): The working directory for the code execution.

If None, a default working directory will be used.

The default working directory is the “extensions” directory under “path_to_autogen”.

- use_docker (Optional, list, str or bool): The docker image to use for code execution.

Default is True, which means the code will be executed in a docker container.

A default list of images will be used.

If a list or a str of image name(s) is provided, the code will be executed in a docker container with the first image successfully pulled.

If False, the code will be executed in the current environment.

We strongly recommend using docker for code execution.

- timeout (Optional, int): The maximum execution time in seconds.

- last_n_messages (Experimental, Optional, int): The number of messages to look back for code execution.

Default to 1.

Type: dict | Literal[False]

Default: {}
default_auto_replythe default auto reply message when no code execution or llm based reply is generated.

Type: dict | str | None

Default:
llm_configllm inference configuration.

Please refer to OpenAIWrapper.create for available options.

Default to False, which disables llm-based auto reply.

When set to None, will use self.DEFAULT_CONFIG, which defaults to False.

Type: dict | Literal[False] | None

Default: False
system_messagesystem message for ChatCompletion inference.

Only used when llm_config is not False.

Use it to reprogram the agent.

Type: str | list | None

Default:
descriptiona short description of the agent.

This description is used by other agents (e.g.

the GroupChatManager) to decide when to call upon this agent.

(Default: system_message)

Type: str | None

Default: None
**kwargsPlease refer to other kwargs in ConversableAgent.

Class Attributes

DEFAULT_USER_PROXY_AGENT_DESCRIPTIONS