解锁AI潜力:MCP官方Go SDK改变了工具和代理-应用程序通信
注:本文核心内容由大语言模型生成,辅以人工事实核查与结构调整。
Go 编程语言因其高性能、并发能力以及强大的标准库而闻名,如今正逐渐成为构建人工智能(AI)应用和智能体的有力选择。随着对 AI 集成需求的增长,Go 开发者越来越需要高效且符合 Go 语言习惯的工具,以便利用大型语言模型(LLM)和其他 AI 服务的能力。本文将探讨当前在这一领域颇具影响力的两个 Go SDK:Jetify 的 Go AI SDK 和 MCP 官方 Go SDK。
Jetify 的 Go AI SDK:简化 LLM 集成
Jetify 的 Go AI SDK 是一个开源(Apache 2.0 协议)的 alpha 版本,旨在为开发 AI 应用和智能体提供符合 Go 语言习惯的体验,并支持任意模型或 LLM 提供商。其主要动机是解决开发者在使用现有官方 Go SDK(如 OpenAI 和 Anthropic 提供的 SDK)时面临的常见问题:
API 笨重: 官方 SDK 通常由自动生成的代码构成,缺乏直观、符合 Go 风格的开发体验。
厂商锁定: 在不同模型或 LLM 提供商之间切换时,往往需要重写应用的大量代码。
多模态处理复杂: 不同提供商在处理图像、文件和工具调用时方式各异,增加了开发难度。
受 Vercel 的 TypeScript 版 AI SDK 启发,Jetify 提供了一个 统一接口,适配多家 AI 提供商,同时强调 Go-first 设计理念。
主要特性与优势:
多提供商支持: 目前支持 OpenAI 和 Anthropic,并计划扩展到更多提供商。
提供商抽象层: 为核心 AI 能力(语言模型、向量嵌入、图像生成等)提供统一接口,屏蔽不同厂商的差异。
多模态输入: 在会话中对文本、图片和文件提供一流支持,确保不同提供商间处理方式一致。
工具调用与结构化输出: 支持函数调用并行执行,以及带有 schema 验证的 JSON 生成。
生产可用特性: 内置完善的错误处理、自动重试、速率限制以及提供商故障转移机制。
可扩展架构: 基于清晰的接口设计,便于集成新的提供商,同时保持向后兼容。
Jetify 的 SDK 自我定位为比 “大而全” 的框架(如 langchain-go
)更精简的替代方案。langchain-go
提供了更广泛的功能,例如向量存储、智能体记忆和文档检索,而 Jetify 的 SDK 则专注于 LLM 集成、流式处理和工具使用。这种专注性很好地满足了特定需求,例如对流式输出的强大支持,以及内置的 “computer-use” 工具,这些在其他框架中要么支持不足,要么过于固执于设计理念,不适合 Jetify 的内部智能体开发需求。团队还表示其长期目标是,在 SDK 足够流行后,将其捐赠给开源基金会。
示例代码:使用 Jetify Go AI SDK 进行简单文本生成
要开始使用,可以通过以下命令安装 SDK:
1 | go get go.jetify.com/ai |
下面是一个利用 OpenAI 模型进行文本生成的示例:
1 | package main |
MCP 官方 Go SDK:AI 工具与智能体应用通信的标准
MCP 官方 Go SDK(modelcontextprotocol/go-sdk
)是近期发布的重要开源项目,它实现了 **Model Context Protocol (MCP)**。MCP 定义了一套 标准化、与模型无关的通信规范,使得任何应用都能被 LLM 作为“工具”调用。对于 Go AI 生态而言,这一进展意义重大,因为它为社区提供了一个权威且长期维护的实现方案,此前开发者主要依赖第三方库。
该 SDK 的设计高度契合 Go 语言哲学,强调 简洁、高效、强类型以及高并发。它是 Go AI 生态的基础模块,能够支持更复杂、更健壮的 AI 应用、框架和平台的构建。从本质上讲,它是 Go 应用与 AI 模型世界之间的标准化桥梁。
核心概念:
Server(服务器): 表示一个无状态的 MCP 服务实例,包含工具、提示词和资源的集合。
Client(客户端): 表示一个 MCP 客户端。
Session(会话): 具体的、有状态的连接(
ServerSession
或ClientSession
),所有交互都通过会话进行。Transport(传输层): 抽象层,负责建立底层通信并定义 JSON-RPC 消息的交换方式。
MCP 协议支持灵活的通信模式,适应不同的部署场景,而 Go SDK 对这些模式均有出色支持:
标准输入/输出 (Stdio): 最简单的模式,适用于本地工具、CLI 插件或 Sidecar 模型,客户端通过 stdin/stdout 使用 JSON-RPC 与子进程 MCP 服务通信。
HTTP Streamable(可流式 HTTP): 最新且推荐的 HTTP 模式,提供可恢复、无状态的会话管理机制,适合构建可扩展、高可用的网络服务。
服务端推送事件 (SSE): 早期的 HTTP 模式,SDK 仍通过
SSEHandler
提供支持,但功能更强大的StreamableHTTPHandler
代表未来方向。
MCP 官方 Go SDK 的一大优势在于,它允许 Go 智能体程序直接引入 SDK 并作为原生 MCP 客户端运行。相比执行外部 CLI 工具,这种方式具备显著优势:
高性能: 避免了不必要的进程创建与数据序列化开销,使工具调用和响应链更短、更高效。
强类型与健壮性: 整个通信过程在 Go 类型系统内运行,错误处理更清晰,维护和调试更容易。
简洁工程实践: 有助于形成更优雅、更符合 Go 习惯的智能体工程模式。
示例代码:使用 MCP 官方 Go SDK 构建基础工具服务(Greeter)
下面是一个简化示例,展示如何用 MCP 官方 Go SDK 定义一个通过标准输入/输出运行的基本工具服务:
1 | package main |
如何选择适合的 Go AI SDK:对比概览
在 Jetify 的 Go AI SDK 和 MCP 官方 Go SDK 之间进行选择时,可以根据它们的主要关注点来判断:
Jetify 的 Go AI SDK:适合需要 无缝集成不同 LLM 提供商(如 OpenAI、Anthropic) 的场景,同时屏蔽厂商差异。它旨在为 消费 AI 模型 提供符合 Go 习惯的体验,适用于文本生成、向量嵌入、图像生成、工具调用等任务。对于需要在不同 LLM 间灵活切换,或利用多模态能力构建智能体的开发者,它是理想选择。
MCP 官方 Go SDK:适合需要 标准化方式将 Go 应用的功能暴露为 LLM 可调用工具 的场景。其核心价值在于定义健壮、与模型无关的通信协议,使 AI 智能体能够发现并与外部服务交互。如果你要构建模块化 AI 系统,让不同 Go 服务作为工具协同一个 LLM 智能体,或需要确保长期兼容性与交互标准化,MCP SDK 是关键桥梁。它尤其适合让 Go 应用融入更大、更互操作的 AI 生态系统。
总结
无论是 Jetify 的 Go AI SDK 还是 MCP 官方 Go SDK,都代表了 Go 在 AI 领域的重要进展。Jetify 的 SDK 简化了对多样化 LLM 服务的使用,为 Go 开发者提供统一、惯用的接口;与此同时,MCP 官方 Go SDK 则为 LLM 与外部应用之间的通信建立了关键标准,使 Go 程序能够作为高性能、强类型的工具融入更广泛的智能体架构。两者结合,将赋能 Go 开发者构建更复杂、高效、可扩展的 AI 应用与智能体,进一步巩固 Go 作为未来 AI 领域强大语言的地位。
引用文章:
- Go AI SDK: an idiomatic SDK to write AI applications and agents against any model or LLM provider. : r/golang - Reddit: https://www.reddit.com/r/golang/comments/1ds2p5y/go_ai_sdk_an_idiomatic_sdk_to_write_ai/
- The AI framework for Go developers. Build powerful AI applications and agents using our free, open-source library. From Jetify, the creators of TestPilot. - GitHub: https://github.com/jetify-com/ai
- 上手MCP官方Go SDK:一份面向实战的入门指南 - Tony Bai: https://tonybai.com/2025/07/10/mcp-official-go-sdk
更多内容
最近文章:
随机文章:
更多该系列文章,参考medium链接:
https://wesley-wei.medium.com/list/you-should-know-in-golang-e9491363cd9a
English post: https://programmerscareer.com/go-ai-sdks/
作者:微信公众号,Medium,LinkedIn,Twitter
发表日期:原文在 2025-08-17 15:45 时创作于 https://programmerscareer.com/zh-cn/go-ai-sdks/
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
评论