AutoGen.Net 0.0.x 版本演进解析:从消息体系重构到多提供商 Agent 生态
本篇基于仓库中的更新日志 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;重构 ConversationAgent、UserProxyAgent、AssistantAgent |
| 0.0.4 | — | 移除 Semantic Kernel 依赖;新增 LLM 连接器接口 IChatLLM |
| 0.0.5 | — | 移除 IAgent 的 ChatLLM 属性;新增 GenerateReplyOptions |
| 0.0.6 | 2024-01-23 | 新增 MiddlewareAgent,移除 AutoReplyAgent、PreProcessAgent、PostProcessAgent |
| 0.0.7 | 2024-02-11 | 新增 AutoGen.LMStudio 包 |
| 0.0.8 | 2024-02-28 | IAgent 流式回复支持;中间件流式支持;Graph 条件转移工作流;SourceGenerator 生成 FunctionContract |
| 0.0.9 | 2024-03-02 | 消息体系重构(TextMessage、ImageMessage、MultiModalMessage 等);新增 AutoGen.SemanticKernel;AutoGen.Core 独立;OpenAI 相关迁入 AutoGen.OpenAI |
| 0.0.10 | 2024-03-12 | Workflow 更名为 Graph;AddInitializeMessage 更名为 SendIntroduction;SequentialGroupChat 更名为 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.Ollama、AutoGen.Anthropic 包;新增 ToolCallAggregateMessage;Message 与 Workflow 类型弃用 |
| 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 当前包含 Temperature、MaxToken、StopSequence、Functions 以及用于结构化输出的 OutputSchema(JsonSchema)五个字段,说明这一从 0.0.5 引入的选项模型在后续版本中持续扩展,而非一次性设计完成。
0.0.3 中的 FunctionAttribution → FunctionAttribute 更名则对应 AutoGen.SourceGenerator 项目中的特性命名,是函数调用代码生成链路的起点。
中间件架构确立:MiddlewareAgent 取代三类 Hook(0.0.6–0.0.8)
0.0.6 是 AutoGen.Net 编程模型的分水岭:新增 MiddlewareAgent,并用它统一实现 RegisterPreProcess、RegisterPostProcess、RegisterReply 三类原有 Agent Hook,随后删除了 AutoReplyAgent、PreProcessAgent、PostProcessAgent。仓库中 MiddlewareAgent.cs 至今仍是该模型的实现载体,配套的 DelegateMiddleware.cs、FunctionCallMiddleware.cs、PrintMessageMiddleware.cs 构成内置中间件家族,接口定义见 IMiddleware.cs 与 IStreamingMiddleware.cs。
0.0.8 在此基础上补齐了两个能力,均标注上游 PR #1656:
IAgent的流式回复支持。仓库中的 IStreamingAgent.cs 显示该接口继承IAgent并新增GenerateStreamingReplyAsync,返回IAsyncEnumerable<IMessage>。- 中间件的流式支持,通过 MiddlewareStreamingAgent.cs 实现。
同版本还引入 Graph 条件转移工作流(上游 PR #1761)。0.0.10 的 Workflow → Graph 更名之后,其形态即 Graph.cs 中的 Graph + Transition:Transition.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 目录 下现有 TextMessage、ImageMessage、MultiModalMessage、ToolCallMessage、ToolCallResultMessage、AggregateMessage 等 11 个文件,全部实现统一的 IMessage 接口。以 TextMessage.cs 为例,TextMessage 携带 Role、Content、From 三要素,并提供 Update(TextMessageUpdate) 方法支持流式增量拼接(拼接时校验 Role 与 From 一致,否则抛出 ArgumentException)——这正是流式回复场景(0.0.8 引入)与消息体系(0.0.9 重构)协同工作的细节。
2. 新增 AutoGen.SemanticKernel 包,对应 dotnet/src/AutoGen.SemanticKernel 项目,提供 SemanticKernelAgent 与 SemanticKernelChatCompletionAgent。
3. AutoGen.Core 独立。 更新日志明确其定位:“提供消息类型、Agent、群聊的抽象,且不依赖 Azure.AI.OpenAI 或 Semantic Kernel”,适合只想要 AutoGen 抽象、避免额外依赖的场景。从 AutoGen.Core.csproj 的依赖面看,这一“纯净核心”定位在仓库中得到保持。
4. OpenAI 依赖迁出。 GPTAgent、OpenAIChatAgent 及全部 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)
{
}
}
Workflow → Graph 的更名同样落在 Graph.cs 的 Graph 类上。AddInitializeMessage → SendIntroduction 则是群聊扩展 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 包,仓库中可看到 MistralClient、MistralClientAgent、DTO 与中间件连接器(MistralAIModelID.cs 定义了支持的模型 ID),配套测试见 MistralClientAgentTests.cs。
0.0.13(2024-05-09)同时包含新功能与重要的破坏性变更:
新功能(对应更新日志三条):
- Agent 消费 Semantic Kernel 插件,见 AutoGen.SemanticKernel/Extension 中的内核函数扩展;
ImageMessage支持 inline-data(上游 Issue #1893),便于以 base64 内联方式传递图片;AutoGen.SemanticKernel引入ChatCompletionAgent,即 SemanticKernelChatCompletionAgent.cs。
破坏性变更(均为上游 Issue #2470 及后续整理):
IStreamingAgent.GenerateStreamingReplyAsync与IStreamingMiddleware.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 结果的调用点都需要同步调整。
RegisterReply、RegisterPreProcess、RegisterPostProcess标记为过时,统一替换为RegisterMiddleware,与 MiddlewareExtension.cs 提供的注册入口对应。
该版本还修复了 ConversableAgentConfig 构造器不接受 LMStudioConfig 作为 ConfigList 的问题(上游 Issue #2609),涉及 ConversableAgentConfig.cs。
生态扩张与消息/工作流类型弃用(0.0.14–0.0.15)
0.0.14(2024-05-28)是提供商生态快速扩张的一版:
新增功能:
- AutoGen.Ollama 包(上游 Issue #2319),包含 Ollama Agent、DTO 与嵌入向量支持,示例见 Chat_With_LLaMA.cs;
- AutoGen.Anthropic 包(上游 Issue #2608),含
AnthropicClient、DTO(ChatCompletionRequest等)与消息连接器中间件,示例见 Create_Anthropic_Agent.cs; - 为函数调用中间件新增
ToolCallAggregateMessage(上游 Issue #2647),源码即 ToolCallAggregateMessage.cs,与 FunctionCallMiddleware.cs 配合,用于在函数调用流程中聚合多轮工具调用信息。
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 正式弃用旧的统一 Message。Workflow 的弃用则呼应 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.cs、VertexGeminiClient.cs),示例 Chat_With_Google_Gemini.cs 与 Chat_With_Vertex_Gemini.cs 可直接运行验证。
升级检查清单:破坏性变更速查
将原文档散落各版本的 API Breaking Changes 汇总如下,便于跨多个小版本升级时对照迁移:
| 变更 | 引入版本 | 迁移方式 |
|---|---|---|
移除 IAgent.ChatLLM 属性 |
0.0.5 | 依赖注入式使用 IChatLLM,不直接持有 LLM 客户端属性 |
删除 AutoReplyAgent/PreProcessAgent/PostProcessAgent |
0.0.6 | 改用 MiddlewareAgent + 中间件 |
Workflow → Graph |
0.0.10 | 迁移到 Graph 与 Transition |
AddInitializeMessage → SendIntroduction |
0.0.10 | 见 GroupChatExtension |
SequentialGroupChat → RoundRobinGroupChat |
0.0.10 | 旧类保留为 [Obsolete] 子类,直接替换类型名即可 |
RegisterPrintFormatMessageHook → RegisterPrintMessage |
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 包与 ChatCompletionClientAgent、AgentExtension.SendAsync 支持逐步执行、Claude 提示词缓存等;更早的里程碑记录可见 0.2.2.md、0.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/Agent 与 AutoGen.Core/Message 两个目录中的接口源码作为当前契约的最终依据。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00