微信扫码
添加专属顾问
我要投稿
微软AutoGen框架升级至V0.4,支持更广泛模型与平台,我们用它测试了DeepSeek-R1在多代理协作场景下的表现。 核心内容: 1. AutoGen框架V0.4版本的新特性与安装指南 2. 青少年申报比赛场景下的三代理协作测试 3. Python环境下的多代理代码实现示例
近期,微软的AutoGen(传送门:https://microsoft.github.io/autogen/stable/user-guide/Agentchat-user-guide/tutorial/index.html)框架进行了一次小规模的版本升级,从V0.2升级到了V0.4,支持的模型范围和平台更加广泛了。恰好近期DeepSeek-R1(https://api-docs.deepseek.com/zh-cn/news/news250528)近期也进行了一次升级。我们就用AutoGen来试试它的能力怎么样。
这一步,参照官网即可,地址:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/installation.html。
安装的截图如下
我这里设定的场景,还是一个基于青少年申报比赛的场景,我给它设定了3个角色,分别完成
当然这只是测试场景,并不具备太多的实际意义,更多的还是测试模型的能力和AutoGen架构的编排能力,看看能不能按我们自己的设想去实现一些工作任务。
AutoGen提供了Python和C#两种编程环境,当然首推的还是Python.
官网里也明确说明了,C#版本只是和Python版本共用的一套底层逻辑,原文如下:
AutoGen Core for .NET follows the same concepts and conventions of its Python counterpart. In fact, in order to understand the concepts in the .NET version, we recommend reading the Python documentation first. Unless otherwise stated, the concepts in the Python version map to .NET.
代码如下(仅供参考,大家可以参照官方的例子,结合自己的业务场景,开发出更具特色的多代理协作代码)
import asyncio
import sys
import time
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_core.models import ModelFamily
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.ui import Console
asyncdef main():
# 配置模型客户端
model_client = OpenAIChatCompletionClient(
model="{模型,我这里用的是DeepSeek-R1}",
base_url="{-你使用的api平台-}",
api_key="{-你的key-}",
# 配置一点模型需要的能力,具体可以参考AutoGen文档按需设定
model_info={
"vision": False,
"function_calling": False,
"json_output": False,
"family": ModelFamily.UNKNOWN,
"structured_output": False,
},
timeout=60,
max_retries=3,
)
# 创建三个专业智能体
info_extractor = AssistantAgent(
name="info_extractor",
model_client=model_client,
system_message="""你是申报信息提取与格式审核专家。
你的职责是:
1. 接收申报内容并提取关键信息,包括:姓名、年龄、电话、邮箱和申报信息简介
2. 审查提交内容的格式是否正确(目前只接受文字输入)
3. 检查是否缺少必要信息
4. 提供初步的格式审核结果
请按以下格式输出提取的信息:
- 姓名:[提取的姓名]
- 年龄:[提取的年龄]
- 电话:[提取的电话]
- 邮箱:[提取的邮箱]
- 申报简介:[提取的简介]
- 格式审核:[通过/不通过,附带原因]
如果信息不完整或格式有问题,请明确指出问题所在。"""
)
eligibility_reviewer = AssistantAgent(
name="eligibility_reviewer",
model_client=model_client,
system_message="""你是青少年比赛资格审核专家。
你的职责是:
1. 审查申报者的年龄是否符合青少年比赛要求(通常为6-18岁)
2. 评估申报信息是否属于青少年领域范畴
3. 检查申报内容的适宜性
4. 提供详细的审核意见和修改建议
请按以下格式输出审核结果:
- 年龄审核:[符合/不符合,附带原因]
- 内容领域审核:[符合/不符合,附带原因]
- 内容适宜性:[适宜/不适宜,附带原因]
- 修改建议:[具体建议]
如果申报不符合要求,请给出明确的修改方向。"""
)
data_formatter = AssistantAgent(
name="data_formatter",
model_client=model_client,
system_message="""你是数据结构化专家。
你的职责是:
1. 整理前两位专家提取和审核的信息
2. 将所有信息转换为结构化的JSON格式
3. 确保数据格式规范,便于后续数据库存储
4. 在最后输出 'REVIEW_COMPLETE' 表示审核工作流结束
请按以下JSON格式输出最终结构化数据:
{
"applicant": {
"name": "姓名",
"age": 年龄,
"contact": {
"phone": "电话",
"email": "邮箱"
},
"application": "申报简介"
},
"review": {
"format_check": {
"status": "通过/不通过",
"comments": "审核意见"
},
"eligibility_check": {
"age_status": "符合/不符合",
"content_status": "符合/不符合",
"appropriateness": "适宜/不适宜",
"suggestions": "修改建议"
}
},
"status": "approved/rejected/pending_revision"
}
最后请输出 'REVIEW_COMPLETE' 表示审核工作流结束。"""
)
# 创建工作流团队
termination = TextMentionTermination("REVIEW_COMPLETE")
team = RoundRobinGroupChat(
[info_extractor, eligibility_reviewer, data_formatter],
termination_condition=termination
)
# 用户申报内容
print("请输入青少年比赛申报内容(包含姓名、年龄、电话、邮箱和申报信息简介):")
application_content = input()
task_prompt = f"""
申报内容:
{application_content}
请按顺序完成申报审核流程:
1. INFO_EXTRACTOR: 提取关键信息并进行格式审核
2. ELIGIBILITY_REVIEWER: 审查申报资格和内容适宜性,提供修改建议
3. DATA_FORMATTER: 整理信息为JSON格式并完成审核流程
"""
# 运行工作流
print("\n开始审核申报内容...\n")
print("-----------start-------------\n")
# 使用流式输出方式处理结果
asyncfor chunk in team.run_stream(task=task_prompt):
# TextMessage对象直接访问content属性
if hasattr(chunk, "content") and chunk.content:
# 使用更底层的输出方式
sys.stdout.write(chunk.content)
sys.stdout.flush()
# 添加小延迟以帮助终端处理流式输出
await asyncio.sleep(0.01)
print("\n-----------end--------------\n")
print("申报审核流程已完成\n")
if __name__ == "__main__":
asyncio.run(main())
运行程序,提示我输入申报信息(如下图),这里我就随便生成了一个,注意,我提交的内容,每个项目之间是没有加标点符号的,就是一大段文本,因为现实中,我们复制粘贴可能也是这么简单粗暴的来进行;
原文如下姓名:李明年龄:15电话:13812345678邮箱:liming@example.com申报简介:我是来自北京市第三中学的学生,热爱编程和人工智能。我希望参加今年的"青少年科技创新大赛",提交的作品是一个基于计算机视觉的垃圾 分类助手APP,可以帮助同龄人更好地进行垃圾分类,培养环保意识。我在过去两年中自学了Python和TensorFlow,希望通过这次比赛展示我的技术能力并与其他青少年交流学习。
执行结果,内容略多,我只截取部分内容
不论是AutoGen框架的编排能力,还是DeepSeek的模型能力,目前均已经达到了可规模化落地的商业水平,很多简单的,重复的人力劳动,真的可以认真的考虑使用AI来解放生产力了。推动自身产品的智能化转型。
很多时候,辛苦并不都是有价值的,可能真的是你没找到正确的解题方法,或者说不愿意接受自己认知之外的方案,才搞得自己累死累活。换个角度,格局和眼界都打开一点,可能会有惊喜在等你。
好了,今天分享就这些。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-14
挑战 Transformer 架构的谷歌最新扩散模型 Gemini Diffusion 系统提示词
2025-06-14
“AI原生”时代:企业数智化转型的分水岭
2025-06-14
多模态RAG的三类图文问答实现方式,你知道多少种?
2025-06-14
新一代文本表征Qwen3-Embedding与排序模型Qwen3-Reranker 部署和替换
2025-06-14
“华强北”围攻AI耳机,未来智能如何突围?
2025-06-14
AI时代如何为企业和个人赋能
2025-06-14
没吃透 Function Calling?难怪你不理解 AI Agent 为何非来不可!
2025-06-14
基于大模型的智能运营 | 智能体式编排,业务流程管理的新阶段
2025-05-29
2025-03-20
2025-03-21
2025-04-11
2025-03-20
2025-03-19
2025-03-20
2025-03-19
2025-03-19
2025-03-19
2025-06-14
2025-06-14
2025-06-14
2025-06-14
2025-06-13
2025-06-13
2025-06-13
2025-06-13