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

AutoGen+Deepseek+chainlit的简单使用

AutoGen 的应用场景

AutoGen 作为一个强大的多智能体协作框架,可用于多种复杂任务:

  1. 自动化工作流:构建由多个智能体组成的流水线,例如数据收集、分析、报告生成
  2. 复杂问题分解:将难题拆解为子任务,分配给不同专长的智能体
  3. 工具使用与集成:让智能体调用外部API、数据库或执行代码
  4. 人机协作系统:设计需要人类参与关键决策的混合智能系统
  5. 教育与培训:创建交互式学习环境,智能体可作为导师或学习伙伴

使用 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. 撰写一份技术报告总结你的发现"""
)

关键配置说明

  1. API 配置

    • api_base:指向 DeepSeek 的 API 端点
    • api_key:你的 DeepSeek API 访问密钥
    • api_type:设置为 “open_ai” 以使用兼容接口
  2. 模型参数

    • temperature:控制输出随机性(0.0 为确定性输出,1.0 为最大随机性)
    • timeout:设置请求超时时间,避免长时间等待
  3. 函数调用

    • 通过 function_call 参数配置智能体可调用的函数
    • 使用 register_function 注册实际的函数实现

注意事项

  1. 确保你的 DeepSeek API 密钥具有足够权限
  2. 注意 API 调用频率限制,必要时添加重试机制
  3. 对于敏感信息,考虑添加内容过滤或隐私保护措施
  4. 复杂任务建议设置合理的 max_consecutive_auto_reply 以避免无限循环

通过以上配置,可以充分利用 DeepSeek 模型的能力,构建强大的多智能体系统,实现从简单问答到复杂问题解决的各种应用场景。

http://www.xdnf.cn/news/371107.html

相关文章:

  • iOS瀑布流布局的实现(swift)
  • HNUST湖南科技大学-软件测试期中复习考点(保命版)
  • Kubernetes应用发布方式完整流程指南
  • Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)
  • Harness: 全流程 DevOps 解决方案,让持续集成如吃饭般简单
  • 【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • Flask 调试的时候进入main函数两次
  • 机器学习扫盲系列-深入浅出“反向传播”(二)
  • 第21天打卡
  • 流动式起重机Q2考试的实操部分,重点复习内容包括哪些方面?
  • 路由策略和策略路由的区别以及配置案例
  • 【C++指南】STL容器的安全革命:如何封装Vector杜绝越界访问与迭代器失效?
  • 图像处理篇---opencv实现坐姿检测
  • 系统级编程(四):利用windows API使用操作系统剪切板
  • [学习]RTKLib详解:rtksvr.c与streamsvr.c
  • Vue基础(8)_监视属性、深度监视、监视的简写形式
  • 扩容 QCOW2 磁盘镜像文件
  • 将循环队列中的各元素向右移动n步collections.deque.rotate(n)
  • 当可视化遇上 CesiumJS:突破传统,打造前沿生产配套方案
  • K8S服务的请求访问转发原理
  • Octave 绘图快速入门指南
  • jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
  • 【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践
  • 黑马k8s(二)
  • Laravel 安全:批量赋值 fillable 与 guarded
  • PostgreSQL 的 pg_advisory_lock_shared 函数
  • 使用FastAPI微服务在AWS EKS上实现AI会话历史的管理
  • Python 对象引用、可变性和垃圾 回收(变量不是盒子)
  • K8S Svc Port-forward 访问方式