2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

浅尝一下微软的AutoGen框架

发布日期:2025-06-14 14:25:39 浏览次数: 2502
作者:学着码代码

微信搜一搜,关注“学着码代码”

推荐语

微软AutoGen框架升级至V0.4,支持更广泛模型与平台,我们用它测试了DeepSeek-R1在多代理协作场景下的表现。

核心内容:
1. AutoGen框架V0.4版本的新特性与安装指南
2. 青少年申报比赛场景下的三代理协作测试
3. Python环境下的多代理代码实现示例

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

前言

近期,微软的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来试试它的能力怎么样。

安装AutoGen

这一步,参照官网即可,地址:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/installation.html。

安装的截图如下


准备一下场景

我这里设定的场景,还是一个基于青少年申报比赛的场景,我给它设定了3个角色,分别完成

  • 代理1:负责接收内容并提取关键信息(姓名、年龄、电话、邮箱和申报信息简介),并审查格式是否正确
  • 代理2:负责审查申报信息是否符合青少年比赛级别,包括年龄验证和内容审核,并给出修改意见
  • 代理3:负责整理信息为结构化数据(JSON格式)

当然这只是测试场景,并不具备太多的实际意义,更多的还是测试模型的能力和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+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅