首页
/ AutoGen.Net 0.0.x 版本演进解析:从消息体系重构到多提供商 Agent 生态

AutoGen.Net 0.0.x 版本演进解析:从消息体系重构到多提供商 Agent 生态

2026-09-06 10:30:28作者:胡唯隽

本篇基于仓库中的更新日志 update.md 梳理 AutoGen.Net 从 0.0.2 到 0.0.15 的完整版本演进脉络,覆盖消息类型重构、中间件架构、AutoGen.Core 包拆分、Graph 工作流与 Gemini/Ollama/Anthropic/Mistral 等多提供商支持等关键里程碑。读完本文,你可以掌握每个破坏性 API 变更对应的迁移方式,并结合仓库源码理解这些变更在 AutoGen.Core 中的实际落地形态。

演进时间线总览

update.md 按版本号倒序记录了 0.0.15(2024-06-13)至 0.0.2 的全部更新。以下表格将原文档中的各版本要点重新组织为时间正序,便于把握整体演进节奏:

版本 日期 核心变化
0.0.2 升级 Azure.OpenAI.AI 至 1.0.0-beta.12、Semantic Kernel 1.0.1
0.0.3 FunctionAttribution 更名为 FunctionAttribute;重构 ConversationAgentUserProxyAgentAssistantAgent
0.0.4 移除 Semantic Kernel 依赖;新增 LLM 连接器接口 IChatLLM
0.0.5 移除 IAgentChatLLM 属性;新增 GenerateReplyOptions
0.0.6 2024-01-23 新增 MiddlewareAgent,移除 AutoReplyAgentPreProcessAgentPostProcessAgent
0.0.7 2024-02-11 新增 AutoGen.LMStudio
0.0.8 2024-02-28 IAgent 流式回复支持;中间件流式支持;Graph 条件转移工作流;SourceGenerator 生成 FunctionContract
0.0.9 2024-03-02 消息体系重构(TextMessageImageMessageMultiModalMessage 等);新增 AutoGen.SemanticKernelAutoGen.Core 独立;OpenAI 相关迁入 AutoGen.OpenAI
0.0.10 2024-03-12 Workflow 更名为 GraphAddInitializeMessage 更名为 SendIntroductionSequentialGroupChat 更名为 RoundRobinGroupChat
0.0.11 2024-04-10 Azure.AI.OpenAI 升级至 1.0.0-beta.15;OpenAIChatAgent 支持 json mode 与确定性输出;中间件重命名 RegisterPrintMessage
0.0.12 2024-04-22 新增 AutoGen.Mistral
0.0.13 2024-05-09 Agent 消费 SK 插件;ImageMessage 支持 inline-data;IStreamingAgent/IStreamingMiddleware 返回类型破坏性变更;RegisterMiddleware 取代旧 hook 注册方法
0.0.14 2024-05-28 新增 AutoGen.OllamaAutoGen.Anthropic 包;新增 ToolCallAggregateMessageMessageWorkflow 类型弃用
0.0.15 2024-06-13 新增 AutoGen.Gemini 包(对应上游 Issue #2851)

早期架构定型:LLM 连接器与回复选项(0.0.2–0.0.5)

0.0.4 的“移除 Semantic Kernel 依赖、新增 IChatLLM 作为 LLM 连接器”是 AutoGen.Net 架构独立化的起点:Agent 不再绑定某一具体 LLM SDK,而是面向 IChatLLM 接口编程。这一接口在仓库中保留于 ILLMConfig.cs 所在的 AutoGen.Core 包内,与后文包拆分的历史一脉相承。

0.0.5 的两项变更在今天的 IAgent.cs 中依然可以直观看到:IAgent 接口只剩一个方法 GenerateReplyAsync,且签名中带有 GenerateReplyOptions? 参数——这正是更新日志中“允许用户在生成回复时指定或覆盖选项”的落点:

public Task<IMessage> GenerateReplyAsync(
    IEnumerable<IMessage> messages,
    GenerateReplyOptions? options = null,
    CancellationToken cancellationToken = default);

从源码结构看,GenerateReplyOptions 当前包含 TemperatureMaxTokenStopSequenceFunctions 以及用于结构化输出的 OutputSchema(JsonSchema)五个字段,说明这一从 0.0.5 引入的选项模型在后续版本中持续扩展,而非一次性设计完成。

0.0.3 中的 FunctionAttributionFunctionAttribute 更名则对应 AutoGen.SourceGenerator 项目中的特性命名,是函数调用代码生成链路的起点。

中间件架构确立:MiddlewareAgent 取代三类 Hook(0.0.6–0.0.8)

0.0.6 是 AutoGen.Net 编程模型的分水岭:新增 MiddlewareAgent,并用它统一实现 RegisterPreProcessRegisterPostProcessRegisterReply 三类原有 Agent Hook,随后删除了 AutoReplyAgentPreProcessAgentPostProcessAgent。仓库中 MiddlewareAgent.cs 至今仍是该模型的实现载体,配套的 DelegateMiddleware.csFunctionCallMiddleware.csPrintMessageMiddleware.cs 构成内置中间件家族,接口定义见 IMiddleware.csIStreamingMiddleware.cs

0.0.8 在此基础上补齐了两个能力,均标注上游 PR #1656:

  1. IAgent 的流式回复支持。仓库中的 IStreamingAgent.cs 显示该接口继承 IAgent 并新增 GenerateStreamingReplyAsync,返回 IAsyncEnumerable<IMessage>
  2. 中间件的流式支持,通过 MiddlewareStreamingAgent.cs 实现。

同版本还引入 Graph 条件转移工作流(上游 PR #1761)。0.0.10 的 WorkflowGraph 更名之后,其形态即 Graph.cs 中的 Graph + TransitionTransition.Create<TFromAgent, TToAgent> 提供无条件与带 canTransitionAsync 条件谓词的工厂方法,Graph.TransitToNextAvailableAgentsAsync 依据当前消息决定下一批可用 Agent——这与更新日志中“conditional transition workflow”的描述一致。

此外 0.0.8 中 AutoGen.SourceGenerator 可从 FunctionAttribute 生成 FunctionContract,对应 SourceGeneratorFunctionContract.cs模板目录

消息体系重构与包拆分(0.0.9)

0.0.9(2024-03-02)是一次结构性大版本,更新日志列出四项变化,仓库源码全部可以印证:

1. 消息类型重构(上游 PR #1676)。 原先单一的 Message 类型被拆分为具体消息族。Message 目录 下现有 TextMessageImageMessageMultiModalMessageToolCallMessageToolCallResultMessageAggregateMessage 等 11 个文件,全部实现统一的 IMessage 接口。以 TextMessage.cs 为例,TextMessage 携带 RoleContentFrom 三要素,并提供 Update(TextMessageUpdate) 方法支持流式增量拼接(拼接时校验 RoleFrom 一致,否则抛出 ArgumentException)——这正是流式回复场景(0.0.8 引入)与消息体系(0.0.9 重构)协同工作的细节。

2. 新增 AutoGen.SemanticKernel,对应 dotnet/src/AutoGen.SemanticKernel 项目,提供 SemanticKernelAgentSemanticKernelChatCompletionAgent

3. AutoGen.Core 独立。 更新日志明确其定位:“提供消息类型、Agent、群聊的抽象,且不依赖 Azure.AI.OpenAI 或 Semantic Kernel”,适合只想要 AutoGen 抽象、避免额外依赖的场景。从 AutoGen.Core.csproj 的依赖面看,这一“纯净核心”定位在仓库中得到保持。

4. OpenAI 依赖迁出。 GPTAgentOpenAIChatAgent 及全部 OpenAI 依赖移入 dotnet/src/AutoGen.OpenAI,其下的 Agent、中间件(消息连接器)与扩展均按这一边界组织。

API 命名稳定化(0.0.10–0.0.11)

0.0.10 做了三处重命名,其中群聊命名的变化在源码中留有明确的过渡痕迹。RoundRobinGroupChat.cs 中,旧类 SequentialGroupChat 被标记 [Obsolete("please use RoundRobinGroupChat")] 并直接继承新类:

[Obsolete("please use RoundRobinGroupChat")]
public class SequentialGroupChat : RoundRobinGroupChat
{
    [Obsolete("please use RoundRobinGroupChat")]
    public SequentialGroupChat(IEnumerable<IAgent> agents, List<IMessage>? initializeMessages = null)
        : base(agents, initializeMessages)
    {
    }
}

WorkflowGraph 的更名同样落在 Graph.csGraph 类上。AddInitializeMessageSendIntroduction 则是群聊扩展 API 层面的更名,可参见 GroupChatExtension.cs

0.0.11 的要点包括:

  • AutoGen.OpenAI 中将 Azure.AI.OpenAI 升级至 1.0.0-beta.15,并为 OpenAIChatAgent 增加 json mode 与确定性输出支持(上游 Issue #2346)。仓库中的示例 Use_Json_Mode.cs 展示了该能力;
  • AutoGen.SemanticKernel 中将 SemanticKernel 包升级至 1.7.1;
  • 破坏性变更:PrintMessageMiddlewareExtension.RegisterPrintFormatMessageHook 重命名为 RegisterPrintMessage,与 PrintMessageMiddleware.cs 配套。

多提供商扩展与流式 API 定型(0.0.12–0.0.13)

0.0.12(2024-04-22)新增 AutoGen.Mistral 包,仓库中可看到 MistralClientMistralClientAgent、DTO 与中间件连接器(MistralAIModelID.cs 定义了支持的模型 ID),配套测试见 MistralClientAgentTests.cs

0.0.13(2024-05-09)同时包含新功能与重要的破坏性变更:

新功能(对应更新日志三条):

破坏性变更(均为上游 Issue #2470 及后续整理):

  • IStreamingAgent.GenerateStreamingReplyAsyncIStreamingMiddleware.InvokeAsync 的返回类型从 Task<IAsyncEnumerable<IStreamingMessage>> 改为 IAsyncEnumerable<IStreamingMessage>。前者在 IStreamingAgent.cs 中即为改后形态:
public IAsyncEnumerable<IMessage> GenerateStreamingReplyAsync(
    IEnumerable<IMessage> messages,
    GenerateReplyOptions? options = null,
    CancellationToken cancellationToken = default);

从源码结构看,去掉外层 Task 包装后,枚举器可以推迟执行(lazy execution),更符合 C# 异步迭代器惯例;升级时凡是解包 await 结果的调用点都需要同步调整。

  • RegisterReplyRegisterPreProcessRegisterPostProcess 标记为过时,统一替换为 RegisterMiddleware,与 MiddlewareExtension.cs 提供的注册入口对应。

该版本还修复了 ConversableAgentConfig 构造器不接受 LMStudioConfig 作为 ConfigList 的问题(上游 Issue #2609),涉及 ConversableAgentConfig.cs

生态扩张与消息/工作流类型弃用(0.0.14–0.0.15)

0.0.14(2024-05-28)是提供商生态快速扩张的一版:

新增功能

API 破坏性变更Message 类型与 Workflow 类型弃用(上游 Issue #2648、#2649)。前者在 Message.cs 中带有明确的 [Obsolete] 标注,指引改用具体内置消息类型:

[Obsolete("This message class is deprecated, please use a specific AutoGen built-in message type instead. ...")]
public class Message : IMessage

这与 0.0.9 的消息体系重构方向一致:从 0.0.9 引入具体消息类型,到 0.0.14 正式弃用旧的统一 MessageWorkflow 的弃用则呼应 0.0.10 的 Graph 更名,旧名称至此完成生命周期收尾。

Bug 修复(更新日志原文五条,均对应具体上游 Issue):

  • #2735:修复 AutoGen.Mistral 包中的工具调用问题;
  • #2722:修复函数调用中间件中的并行函数调用问题;
  • #2633:在 OpenAIChatMessageConnector 中正确设置 name 字段,见 OpenAI 中间件
  • #2660:修复系统语言为中文时 dotnet interactive 还原失败的问题,涉及 AutoGen.DotnetInteractive
  • #2687:为生成的代码添加 global:: 前缀,避免与用户自定义类型冲突,涉及 AutoGen.SourceGenerator

0.0.15(2024-06-13)作为该日志记录的收尾版本,亮点是新增 AutoGen.Gemini 包(上游 Issue #2851)。仓库中的 dotnet/src/AutoGen.Gemini 项目同时提供 Google Gemini 与 Vertex Gemini 两种客户端(GoogleGeminiClient.csVertexGeminiClient.cs),示例 Chat_With_Google_Gemini.csChat_With_Vertex_Gemini.cs 可直接运行验证。

升级检查清单:破坏性变更速查

将原文档散落各版本的 API Breaking Changes 汇总如下,便于跨多个小版本升级时对照迁移:

变更 引入版本 迁移方式
移除 IAgent.ChatLLM 属性 0.0.5 依赖注入式使用 IChatLLM,不直接持有 LLM 客户端属性
删除 AutoReplyAgent/PreProcessAgent/PostProcessAgent 0.0.6 改用 MiddlewareAgent + 中间件
WorkflowGraph 0.0.10 迁移到 GraphTransition
AddInitializeMessageSendIntroduction 0.0.10 GroupChatExtension
SequentialGroupChatRoundRobinGroupChat 0.0.10 旧类保留为 [Obsolete] 子类,直接替换类型名即可
RegisterPrintFormatMessageHookRegisterPrintMessage 0.0.11 更新中间件注册扩展调用
流式 API 返回类型去掉 Task<> 包装 0.0.13 直接以 IAsyncEnumerable 消费,移除多余的解包
RegisterReply/RegisterPreProcess/RegisterPostProcess 弃用 0.0.13 统一改用 RegisterMiddleware
Message 类型弃用 0.0.14 改用 TextMessage/ImageMessage/MultiModalMessage 等具体类型
Workflow 类型弃用 0.0.14 使用 Graph

后续演进方向

0.0.15 之后的版本演进记录在仓库的其他发布说明中,例如 0.1.0.md 提到新增 AutoGen.AzureAIInference 包与 ChatCompletionClientAgentAgentExtension.SendAsync 支持逐步执行、Claude 提示词缓存等;更早的里程碑记录可见 0.2.2.md0.2.0.md 等文件(位于 release_note 目录)。从源码结构看,0.0.x 阶段奠定的三块基石——AutoGen.Core 的纯净抽象、中间件链式处理、以及按提供商划分的 Agent 包(OpenAI、SemanticKernel、Gemini、Ollama、Anthropic、Mistral、LMStudio、AzureAIInference 在 dotnet/src 下各成项目)——构成了后续所有版本的扩展基础。

小结

AutoGen.Net 0.0.2 至 0.0.15 的演进主线可以概括为三步:先是抽象独立化(IChatLLM 连接器、GenerateReplyOptions、中间件取代 hook),再是体系重构(具体消息类型、AutoGen.Core/AutoGen.OpenAI/AutoGen.SemanticKernel 分包、Graph 条件转移工作流),最后是多提供商生态成型(LMStudio、Mistral、Ollama、Anthropic、Gemini)。如果你正在从 0.0.x 早期版本升级,建议按上文“升级检查清单”逐条核对破坏性变更,并以 AutoGen.Core/AgentAutoGen.Core/Message 两个目录中的接口源码作为当前契约的最终依据。

登录后查看全文
热门项目推荐
相关项目推荐