当前位置: 首页 > news >正文

AutoGen参数说明

UserProxyAgent用户

user_proxy = UserProxyAgent配置说明:

# 构造参数
def __init__(
    self,
    name: str,
    is_termination_msg: Optional[Callable[[Dict], bool]] = None,
    max_consecutive_auto_reply: Optional[int] = None,
    human_input_mode: Literal["ALWAYS", "TERMINATE", "NEVER"] = "ALWAYS",
    function_map: Optional[Dict[str, Callable]] = None,
    code_execution_config: Union[Dict, Literal[False]] = {},
    default_auto_reply: Optional[Union[str, Dict, None]] = "",
    llm_config: Optional[Union[Dict, Literal[False]]] = False,
    # 默认不使用LLM,如果使用了LLM将会推测人的行为
    system_message: Optional[Union[str, List]] = "",
    description: Optional[str] = None,
)

重要参数说明:

human_input_mode

三种形式的说明:

三种模式都会涉及代码执行,需要代码执行根据实际要求来进行

模式 说明 (userproxy执行代码过程在code_execution_config配置中,后附说明)
ALWAYS 每次接收到消息时,代理都会提示人类输入。当人类输入为 “exit”,或者 is_termination_msg 为 True 并且没有人类输入时,会话将停止。userproxy不会执行代码,代码执行交给使用用户,一轮对话都需要人为输入去干涉,Assistantproxy才能进行下去。不推荐:(如果回复中涉及代码)需要用户去执行代码并配置相关环境
TERMINATE 只有在接收到终止消息或者连续自动回复的数量达到 max_consecutive_auto_reply 时,代理才会提示人类输入。 userproxy会根据max_consecutive_auto_reply次数+Assistantproxy是否需要人为提供更多信息 来终止代码执行,结束标记为Assistantproxy to userproxy的最后一轮对话包含TERMINATE这个单词(可能大小写混合也可能夹杂其他单词,但一定有该单词.upper()存在)推荐:(如果回复中涉及代码)代码执行+需要人为提供更多的信息以保证更加准确的进行
NEVER 代理永远不会提示人类输入。在这种模式下,当连续自动回复的数量达到 max_consecutive_auto_reply 或者 is_termination_msg 为 True 时,会话将停止。userproxy会一直执行代码,配合参数default_auto_reply+max_consecutive_auto_reply直到停止较推荐:若涉及代码会进入死胡同,例如提供一些接口API密钥等,人不会去提供,直到轮数结束返回信息。

当 max_consecutive_auto_reply为0 的时候并且输入模式为TERMINATE的时候,get_human_input会被重写,否则不会被重写。

is_termination_msg

参数:

is_termination_msg 是一个函数,它接受一个字典形式的消息作为输入,并返回一个布尔值,表示这个接收到的消息是否是一个终止消息,即一个userproxy是否终止对话的标记。包含如下键值对:

# 键值对
"content":消息的内容
"role":发送消息的角色
"name":发送消息的名称
"function_call":函数调用的信息

code_execution_config

是一个字典或者布尔值,用于配置代码执行的相关设置。如果你想禁用代码执行,可以将其设置为 False。否则,你可以提供一个字典,其中包含以下键:

work_dir(可选,字符串):用于代码执行的工作目录。如果没有提供,将使用默认的工作目录。默认的工作目录是 "path_to_autogen" 下的 "extensions" 目录。
use_docker(可选,列表、字符串或布尔值):用于代码执行的 Docker 镜像。默认值为 True,这意味着代码将在 Docker 容器中执行,并将使用默认的镜像列表。如果提供了一个镜像名称的列表或字符串,代码将在成功拉取的第一个镜像的 Docker 容器中执行。如果为 False,代码将在当前环境中执行。我们强烈建议使用 Docker 来执行代码。
timeout(可选,整数):代码执行的最大时间(以秒为单位)。
last_n_messages(实验性的,可选,整数):用于代码执行的回溯消息数量。默认值为 1。

llm_config

这决定了 ConversableAgent 中反馈是通过 OpenAIWrapper 进行处理还是不进行任何 LLM 基础的回复处理。

默认值为 False,这将禁用基于 llm 的自动回复。
如果设置为 None,将使用 self.DEFAULT_CONFIG,其默认值也是 False。
简单来说,这个参数用于控制是否使用语言模型进行自动回复,以及如何配置这个语言模型。

如果需要配置LLM 参考文档 (配置同AssistantAgentde llm_config) 或同下

https://microsoft.github.io/autogen/docs/reference/oai/client/#create

AssistantAgent代理

构造参数:

def __init__(
    self,
    name: str, # 本项目使用请求的uuid来进行对话
    system_message: Optional[str] = DEFAULT_SYSTEM_MESSAGE,
    llm_config: Optional[Union[Dict, Literal[False]]] = None,
    is_termination_msg: Optional[Callable[[Dict], bool]] = None,
    max_consecutive_auto_reply: Optional[int] = None,
    human_input_mode: Optional[str] = "NEVER",
    description: Optional[str] = None,
    **kwargs,
):

llm_config

样式构造:

llm_config={
    "config_list": [{
        "model": config.LLM_CONFIG[llm_provider]["MODEL"],
        "api_key": config.LLM_CONFIG[llm_provider]["OPENAI_API_KEY"],
        # "base_url": config.LLM_CONFIG[llm_provider]["OPENAI_API_BASE"],
        "azure_endpoint": config.LLM_CONFIG[llm_provider]["OPENAI_API_BASE"],
        "api_type": "azure",
        "api_version": config.LLM_CONFIG[llm_provider]["API_VERSION"],
        "model_client_cls": "OpenAIClientWithStream",
        "cache_seed": None,
    }],
    "temperature": assistant_config["temperature"],
    "timeout": 600,
    "cache_seed": None,
    "stream": True,
}

max_consecutive_auto_reply

默认值为 None,这意味着没有提供限制,此时将使用类属性 MAX_CONSECUTIVE_

相关文章:

  • Kubernetes中的Label和Selector核心作用与应用场景
  • AI相关视频
  • 字符串与栈和队列-算法小结
  • 驱动开发硬核特训 · Day 10 (理论上篇):设备模型 ≈ 运行时的适配器机制
  • c++中的this
  • 用java代码如何存取数据库的blob字段
  • 02 - spring security基于配置文件及内存的账号密码
  • 设计模式 --- 访问者模式
  • 【LeetCode】算法详解#4 ---合并区间
  • 进程线程回顾
  • Pinia最基本用法
  • Nginx基础讲解
  • ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程
  • 论文精度:HeightFormer:基于Transformer的体素高度预测在路边3D目标检测中的应用
  • flutter 桌面应用之右键菜单
  • 【Cursor 】Cursor 安装与配置指南:从零开始的高效开发之旅
  • QT6 源(16):存储 QT 里元对象的类信息的类 QMetaClassInfo 的类,只有两个成员函数 name()、value(),比元对象属性简单多了
  • 数据驱动,数字能量分析API助力手机号数据解读
  • RAG Fusion技术详解与应用场景
  • 趣味编程之Spring的白学之路
  • 水果预包装带来的环境成本谁来分担?
  • 江南考古文脉探寻
  • 2025全球城市科技传播能力指数出炉,上海位列第六
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • “多规合一”改革7年成效如何?自然资源部总规划师亮成绩单