AutoGen 的应用场景
AutoGen 作为一个强大的多智能体协作框架,可用于多种复杂任务:
- 自动化工作流:构建由多个智能体组成的流水线,例如数据收集、分析、报告生成
- 复杂问题分解:将难题拆解为子任务,分配给不同专长的智能体
- 工具使用与集成:让智能体调用外部API、数据库或执行代码
- 人机协作系统:设计需要人类参与关键决策的混合智能系统
- 教育与培训:创建交互式学习环境,智能体可作为导师或学习伙伴
使用 DeepSeek 模型配置 AutoGen
要使用 DeepSeek 模型,需要正确配置 AutoGen 的模型端点和认证信息。以下是一个完整示例:
首先你需要有一个deepseek api,访问deepseek api平台进行api购买与配置,
接着打开VsCode/Pycharm进行python代码的编写
首先安装必要的依赖库
pip install -U “autogen-agentchat” “autogen-ext[openai]”
pip install chainlit
import chainlit as cl
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
# 初始化时发送欢迎信息
@cl.on_chat_start
async def main():
await cl.Message(content="你好,欢迎来到智能客服系统。请问有什么可以帮助您?").send()
# 定义处理用户查询的函数
async def run_team(query: str):
model_client = OpenAIChatCompletionClient(
model="deepseek-chat",
base_url="https://api.deepseek.com",
api_key="这里输入deepseek的api秘钥",
model_info={
"vision": False,
"function_calling": False,
"json_output": True,
"family": "unknown",
},
)
assistant_agent = AssistantAgent(
"assistant",
model_client=model_client,
system_message=(
"你是一个智能客服助手,你的任务是帮助用户解决各种问题。"
"请根据用户的问题,给出一个最合适的答案。"
"如果你无法解决用户的问题,请直接给出一个最合适的答案。"
"请确保你的答案不超过100个字符。"
"请使用中文回答。"
"如果用户骂你,请回复:我知道你很急,但你先别急"
),
)
team = RoundRobinGroupChat(participants=[assistant_agent], max_turns=1)
response_stream = team.run_stream(task=query)
async for msg in response_stream:
if msg.source != "user" and msg.content:
await cl.Message(content=msg.content, author="Agent Team").send()
# 处理用户消息
@cl.on_message
async def handle_message(message: cl.Message):
await run_team(message.content)
if __name__ == "__main__":
import os,subprocess,sys
script_name = os.path.basename(__file__)
subprocess.run([sys.executable, "-m", "chainlit", "run", script_name, "-w"])
如果输入骂客服的话,客服会回复:我知道你很急,但你先别急
多智能体协作示例
以下是一个更复杂的示例,展示如何配置多个使用 DeepSeek 模型的智能体进行协作:
import autogen
# 配置DeepSeek模型
config_list = [
{
"model": "deepseek-chat",
"api_base": "https://api.deepseek.com/v1",
"api_key": "你的DeepSeek_API密钥",
"api_type": "open_ai",
}
]
# 工具函数 - 用于数学计算
def calculate(formula):
"""执行数学计算"""
try:
return eval(formula)
except Exception as e:
return f"计算错误: {str(e)}"
# 创建三个不同角色的智能体
researcher = autogen.AssistantAgent(
name="researcher",
system_message="你是一个专业研究员,擅长收集和整理信息。",
llm_config={"config_list": config_list},
)
analyst = autogen.AssistantAgent(
name="analyst",
system_message="你是数据分析专家,擅长处理和解读数据。",
llm_config={
"config_list": config_list,
"function_call": [{"name": "calculate", "parameters": {"formula": "string"}}],
},
)
analyst.register_function(function_map={"calculate": calculate})
writer = autogen.AssistantAgent(
name="writer",
system_message="你是专业技术文档撰写人,擅长将复杂信息转化为通俗易懂的内容。",
llm_config={"config_list": config_list},
)
# 创建用户代理
user_proxy = autogen.UserProxyAgent(
name="user_proxy",
human_input_mode="TERMINATE",
max_consecutive_auto_reply=10,
)
# 启动多智能体协作流程
user_proxy.initiate_chat(
researcher,
message="""请分析当前大型语言模型的发展趋势。
1. 研究当前最先进的模型及其性能指标
2. 分析不同模型在参数规模和实际应用效果之间的关系
3. 撰写一份技术报告总结你的发现"""
)
关键配置说明
-
API 配置:
api_base
:指向 DeepSeek 的 API 端点api_key
:你的 DeepSeek API 访问密钥api_type
:设置为 “open_ai” 以使用兼容接口
-
模型参数:
temperature
:控制输出随机性(0.0 为确定性输出,1.0 为最大随机性)timeout
:设置请求超时时间,避免长时间等待
-
函数调用:
- 通过
function_call
参数配置智能体可调用的函数 - 使用
register_function
注册实际的函数实现
- 通过
注意事项
- 确保你的 DeepSeek API 密钥具有足够权限
- 注意 API 调用频率限制,必要时添加重试机制
- 对于敏感信息,考虑添加内容过滤或隐私保护措施
- 复杂任务建议设置合理的
max_consecutive_auto_reply
以避免无限循环
通过以上配置,可以充分利用 DeepSeek 模型的能力,构建强大的多智能体系统,实现从简单问答到复杂问题解决的各种应用场景。