AutoGen智能体代码解读
AutoGen智能体代码解读
- AutoGen多角色、多用户、多智能体对话系统
文章目录
- AutoGen智能体代码解读
- @[toc]
- 1-未完成
- 2-代码解读
- 主要组件
- 工作流程
- 注意事项
文章目录
- AutoGen智能体代码解读
- @[toc]
- 1-未完成
- 2-代码解读
- 主要组件
- 工作流程
- 注意事项
1-未完成
- 1)chainlit的完整使用方法
- 2)@cl.on_chat_start标注是如何生效了
- 3)使用python模拟一个标注可以添加在业务方法上
- 4)autoGen的完整使用方法
- 5)autoGenStudio使用方法
- 6)autoGen是如何实现RoundRobinGroupChat策略的
- 7)后端框架设计【微服务】模型自动发现是不是可以采用这种策略
- 8)asyncio异步操作
2-代码解读
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="sk-6d775065fa8c405caebed674c125e67e",
model_info={
"vision": False,
"function_calling": False,
"json_output": True,
"family": "unknown",
}, )
assistant_agent = AssistantAgent("assistant", model_client=model_client,
system_message="你是一所口腔医院的导诊台机器人,负责解答用户的挂号问题,用户描述症状需求,你回答应该挂的科室。"
"在本医院中有以下科室:牙体牙髓科、口腔修复科、口腔外科、口腔种植科、儿童口腔专科。"
"如果用户的问题与挂号咨询不符合,回答:“您的描述与症状无关,暂不支持”")
team = RoundRobinGroupChat(participants=[assistant_agent], max_turns=1)
response_stream = team.run_stream(task=query)
async for msg in response_stream:
if hasattr(msg, "source") and msg.source != "user" and hasattr(msg, "content"):
msg = cl.Message(content=msg.content, author="Agent Team")
await msg.send()
@cl.on_message
async def main(message: cl.Message):
await run_team(message.content)
这段代码展示了如何使用 chainlit
库与自定义的 AutoGen AgentChat 组件来创建一个基于AI的聊天应用。这个应用特别设计用于模拟一个医院导诊台机器人,它能够根据用户的症状描述推荐相应的科室。以下是代码的工作流程和关键组件的解释:
主要组件
chainlit
: 用于构建交互式的Web应用程序,特别是适合开发聊天机器人界面。autogen_agentchat
: 包含了创建AI代理(Agent)以及管理这些代理之间对话的工具。在这个例子中,我们创建了一个AssistantAgent
。OpenAIChatCompletionClient
: 这个客户端允许通过指定的模型进行对话补全操作。尽管名字里有OpenAI,但示例中使用的是名为deepseek-chat
的模型。
工作流程
-
初始化阶段:
- 当用户打开聊天界面时,
@cl.on_chat_start
装饰器标记的函数被触发,发送欢迎消息给用户。
- 当用户打开聊天界面时,
-
接收用户消息:
- 用户在聊天界面上发送的消息会触发
@cl.on_message
装饰器下的main
函数,该函数将调用run_team
函数处理用户输入。
- 用户在聊天界面上发送的消息会触发
-
处理用户查询 (
run_team
函数):- 创建一个
OpenAIChatCompletionClient
实例,配置特定的模型参数。 - 初始化一个
AssistantAgent
,并为其提供系统消息以指导其行为(如解答挂号相关问题)。 - 创建一个
RoundRobinGroupChat
实例,这是一个简单的对话管理系统,限制对话轮数为1。 - 使用
team.run_stream(task=query)
方法处理用户查询,并异步地将结果返回给用户。
- 创建一个
-
发送响应:
- 对于从
run_team
接收到的每条消息,如果它不是来自用户且包含内容,则将其作为新的消息对象发送回聊天界面,标明来源是"Agent Team"。
- 对于从
注意事项
- 在实际部署前,请确保替换API密钥和其他敏感信息。
- 此代码示例假定你已经正确安装了所有必要的库,并设置了正确的环境变量。
- 根据实际需要调整模型参数、代理行为说明以及其他设置。