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

AutoGen智能体代码解读

AutoGen智能体代码解读

  • AutoGen多角色、多用户、多智能体对话系统

文章目录

  • 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的聊天应用。这个应用特别设计用于模拟一个医院导诊台机器人,它能够根据用户的症状描述推荐相应的科室。以下是代码的工作流程和关键组件的解释:

主要组件

  1. chainlit: 用于构建交互式的Web应用程序,特别是适合开发聊天机器人界面。
  2. autogen_agentchat: 包含了创建AI代理(Agent)以及管理这些代理之间对话的工具。在这个例子中,我们创建了一个AssistantAgent
  3. 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密钥和其他敏感信息。
  • 此代码示例假定你已经正确安装了所有必要的库,并设置了正确的环境变量。
  • 根据实际需要调整模型参数、代理行为说明以及其他设置。

相关文章:

  • [Ai 力扣题单] 数组基本操作篇 27/704/344
  • 4.Kettle调度oracle任务设置邮件预警功能
  • 解决ElementPlus对话框el-dialog中关闭事件重复触发问题
  • Android Retrofit 请求执行模块执行原理深入源码分析(三)
  • 力扣hot100二刷——链表
  • Pac-Man(吃豆人) 游戏
  • Redis 缓存数据库
  • Node.js:快速启动你的第一个Web服务器
  • 考研数学非数竞赛复习之Stolz定理求解数列极限
  • IP 地址
  • 跳表数据结构
  • 大数据学习(63)- Zookeeper详解
  • 索引-最左匹配
  • 【项目设计】基于AMQP协议实现的简单消息队列
  • android okhttp几种日志拦截级别区别
  • 数据可视化图表库LightningChart JS 全新发布v7.0——提高视觉质量
  • 7-9 抢红包
  • 从技术创新到全球布局:MOVA割草机器人以尖端科技定义智能园艺
  • 电脑一直重启怎么解决 原因及解决方法
  • PHP前后开发纪录
  • 纪念|海上金石学的兴盛与王昶《金石萃编》
  • 伊朗港口爆炸死亡人数升至70人
  • 工信部:加快自动驾驶系统安全要求强制性国家标准研制
  • 日月谭天丨赖清德强推“脱中入北”是把台湾带向死路
  • 国家发展改革委:我们对实现今年经济社会发展目标任务充满信心
  • “天链”继续上新!长三乙火箭成功发射天链二号05星