AutoGen+Deepseek+chainlit的简单使用
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,sysscript_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 模型的能力,构建强大的多智能体系统,实现从简单问答到复杂问题解决的各种应用场景。