LLMTornado
统一调用30+大模型的.NET AI Agent开发框架,支持多智能体编排与MCP/A2A协议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一调用30+大模型的.NET AI Agent开发框架,支持多智能体编排与MCP/A2A协议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
三年前,一位来自捷克的 .NET 开发者 Matěj Štágl 在构建内部 AI 应用时,遇到了一个令人头疼的问题:他需要在同一个应用里同时调用 OpenAI GPT-4、Anthropic Claude 和本地 Ollama 模型,每换一次提供商就要改一堆代码。"为什么不能像换汽车发动机一样,换个轮胎就能继续跑?"带着这个朴素的念头,他开始打造一个统一的 LLM 调用层——这就是 LLM Tornado 的起点。
三年后,这个项目已经成长为 .NET 生态中最完整的 AI Agent 开发框架,GitHub 收获 619 Stars,被微软官方纳入 "Generative AI for Beginners .NET" 教程,JetBrains 在 dotInsights 专题报道,贡献者超过数十人,成为 .NET AI 领域的标杆项目。
LLM Tornado 是一个 .NET 原生的 AI Agent 开发框架,通过统一的 Provider 抽象层,让开发者用同一套代码无缝切换 30+ 大模型服务商,同时内置多智能体编排、MCP/A2A 协议支持、RAG 向量检索等能力。
2023 年是 AI 大爆发元年,Python 生态的 LangChain、LlamaIndex、Hugging Face 已经相当成熟,而 .NET 开发者面对 AI 浪潮却有些尴尬:要么自己封装各平台的 SDK(维护成本极高),要么依赖社区的零散封装(接口不稳定、更新滞后)。更关键的是,当需要构建复杂的多智能体工作流时,.NET 生态几乎没有开箱即用的方案。
LLM Tornado 填补了这个空白。它的核心价值在于provider-agnostic(提供商无关)——开发者写一次代码,就可以自由切换 OpenAI、Anthropic、Google、DeepSeek、Ollama、vLLM 等任意提供商,无需关心各平台 API 的细节差异。框架内部做了大量的 request/response 转换工作,让每个 provider 的独特能力(如 Anthropic 的 thinking budget、Google 的 function calling 变体)都能以强类型的方式暴露出来。
LLM Tornado 采用 NuGet 多包分发策略,核心模块清晰分层:
| NuGet 包 | 功能 | 说明 |
|---|---|---|
LlmTornado | 核心 SDK | 所有 provider 的统一抽象层 |
LlmTornado.Agents | 智能体编排 | Orchestrator/Runner/Advancer 架构 |
LlmTornado.Mcp | MCP 协议 | Model Context Protocol 支持 |
LlmTornado.A2A | A2A 协议 | Agent-to-Agent 协作协议 |
LlmTornado.Microsoft.Extensions.AI | SK 互操作 | 与 Semantic Kernel 生态互通 |
LlmTornado.Contrib | 效率增强 | 工具函数和便捷封装 |
每个包都独立版本管理,按需引入,避免依赖膨胀。
Provider 是 LLM Tornado 最核心的概念。每个 provider(如 OpenAI、Anthropic)对应一个连接器,实现统一的接口,内部处理该平台特有的 API 细节:
TornadoApi api = new TornadoApi([
new(LLmProviders.OpenAi, "OPEN_AI_KEY"),
new(LLmProviders.Anthropic, "ANTHROPIC_KEY"),
new(LLmProviders.Groq, "GROQ_KEY")
]);
// 切换模型只需换参数,provider 自动路由
string? response = await api.Chat.CreateConversation(ChatModel.OpenAi.GPT4O)
.AppendSystemMessage("You are a helpful assistant.")
.AppendUserInput("Hello!")
.GetResponse();
VendorExtensions 机制让每个 provider 的独特能力得以暴露。例如设置 Claude 3.7 的 thinking budget:
new ChatRequestVendorExtensions(new ChatRequestVendorAnthropicExtensions {
Thinking = new AnthropicThinkingSettings { BudgetTokens = 2000, Enabled = true }
})
这种方式既保证了跨 provider 的代码一致性,又能充分利用各平台的高级特性。
框架内置了完整的多智能体编排引擎,基于三个核心概念:Orchestrator(编排器/图)、Runner(运行节点)、Advancer(边/流转条件)。
编排结果还支持导出为 Mermaid 图,方便可视化和文档化。
LLM Tornado 对前沿 AI 协议的支持非常及时:
LlmTornado.Mcp 包实现了 MCP 协议,开发者可以将任意数据源、工具和工作流接入 AgentLlmTornado.A2A 支持不同平台 Agent 之间的互操作性,LlmTornado.A2A.AgentServer 还提供了 Docker 化部署方案内置连接器支持主流向量数据库:Chroma、PgVector、Pinecone、Faiss、QDrant。RAG 场景下只需几行代码即可完成文档分块、向量化存储和语义检索。
dotnet add package LlmTornado
# 可选:智能体模块
dotnet add package LlmTornado.Agents
一行 dotnet add package,配合官方 Quickstart 文档,5 分钟内可以跑通第一个 Demo。
仓库内置了详尽的 Demo,覆盖:
每个 Sample 都是可直接运行的完整项目,而非碎片化的代码片段。
项目还提供了 Context7 和 FSKB 插件,让开发者在 VS Code / Rider 中可以获得 LLM Tornado API 的实时补全和文档提示——这是 Python 生态中 Cursor Rules / Continue 插件的 .NET 等价物。
LLM Tornado 的多模态覆盖相当全面:
LlmTornado.Microsoft.Extensions.AI 提供了与 Semantic Kernel 的互操作通道,间接扩大了适用范围。LlmTornado.A2A.AgentServer 的 Dockerfile 提供了 HTTP 服务端基础镜像。LLM Tornado 的出现标志着 .NET 生态在 AI 领域从"跟随者"走向"贡献者"。它不仅解决了 provider 碎片化问题,更通过 MCP/A2A 协议支持,让 .NET 开发者能够参与到 AI Agent 互操作的行业标准建设中。
从增长曲线看,项目自 2025 年以来更新频繁(每月都有新功能/新 provider),被微软 JetBrains 官方认可为 .NET AI 开发的推荐工具。随着 .NET 9/10 对 AI 工作负载的持续增强,LLM Tornado 有望成为 .NET AI 开发的标准基础设施。
技术关键词:C# · .NET 8/10 · Provider-agnostic · Multi-Agent · MCP · A2A · RAG · 向量数据库 · NuGet · Semantic Kernel
Star History: 619 ★ | 106 Forks | MIT License