ai-sdk
grafana/ai-sdk加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象这样一个需求:团队的前端已经用 React + @ai-sdk/react 写好了一套聊天界面,useChat 钩子跑得很顺;但后端团队更想用 Go——因为现有网关、鉴权、可观测性、数据处理全在 Go 服务里。传统做法是让 Go 服务去调一个 TypeScript 的 BFF 层,多一跳网络、多一套部署、多一份协议转换代码。
Grafana AI SDK 的做法是:Go 后端直接输出 @ai-sdk/react 能消费的 SSE 协议,前端一行都不用改。它像给 Go 装上了"AI SDK 兼容层",把 Vercel 生态那套 GenerateText / StreamText / 工具调用 / 结构化输出 / 多步智能体的抽象,原封不动地翻译成 Go 的味道。
截至 2026 年 10 月,这个项目在 GitHub 上已积累 262 星、16 个 fork、394 次提交、14 位贡献者,采用 Apache-2.0 协议(ai-gateway 子模块单独以 AGPL-3.0 发布)。仓库里 663 个 Go 文件中有 337 个是测试文件,测试密度超过 50%,并配套 36 篇分层文档。
背景是 Vercel AI SDK 在 TypeScript 生态里的事实标准地位——几乎所有主流 AI 应用框架都在往它的 API 形态靠拢。但 Go 侧长期缺一个同等抽象层:要么手搓各家厂商的 HTTP 调用与流式解析,要么把 AI 能力外包给 Python 微服务。
Grafana 作为可观测性领域的头部厂商,先做 AI Gateway,再把 Gateway 里的模型接入经验反哺成 SDK。这条脉络体现在仓库结构里:ai-gateway/ 是一个独立模块(含 Dockerfile、docker-compose、Magefile、provisioning 等),负责企业内部模型网关;根目录的 Go 模块则是纯粹给应用开发者用的 SDK。两者的协议层共用 providerwire 概念。
项目还有一个鲜明特点:规范驱动开发(spec-driven development with OpenSpec)。仓库里有 openspec/ 目录和 openspec.yml CI 校验,所有变更必须先落成规格再实现,加上 release-please 自动化发版和 Conventional Commits 强制规范。这让它在 alpha 阶段就保持了很高的工程纪律。
如果把 AI 应用比作开车,Vercel AI SDK 是造好的自动挡汽车,Go 开发者只能看着干瞪眼。Grafana AI SDK 相当于一位资深机械师,参照自动挡的设计图纸,给 Go 手搓出一套同规格的变速箱:
GenerateText):等全部结果再返回,适合后端批处理StreamText):边生成边吐,适合终端和服务端推送WriteUIMessageStream):把内部 Go 事件流翻译成前端 useChat 认得的 UI 消息流换句话说,你不需要自己写"协议转换器"这层脏活。
GenerateText 与 StreamText 是两个顶层入口,共用同一套编排引擎。区别只在于要不要等:前者收集完整的文本、usage、sources、files、warnings 和 metadata;后者把编排过程以 Go 事件流的形式实时吐出来。
内部编排引擎产出的是"Go 事件",WriteUIMessageStream 负责把它翻译成 AI SDK UI 消息流协议,再由 HTTP 辅助函数写成 SSE:
provider output → orchestration events → UI message chunks → SSE → useChat
这意味着 useChat、useCompletion、useObject 三个 React 钩子都能直接对接。官方 examples/agent-chat 就是完整范例:Go 端起 POST /api/chat,读入 UIMessage 历史,流式写回;前端用 Vite 建 React 应用并把 /api 代理到 Go 服务即可。
普通 Go 函数加上 Execute 就能变成模型可调用的工具,支持多步智能体循环,并可对有副作用的动作要求人工审批(tool approval)。工具输入还能自动附带示例(middleware/add_tool_input_examples.go)。
基于 invopop/jsonschema 与 santhosh-tekuri/jsonschema/v6,把 JSON Schema 转成强类型 Go 结构,支持对象、数组、choice 等多种输出形态,并有 output/fix_json.go 兜底修复模型输出的 JSON 瑕疵。
内置 6 个 provider 模块:Anthropic、Azure、OpenAI、OpenAI-compatible(兼容 vLLM、LM Studio、Kimi/Moonshot 等 Chat Completions 服务)、Amazon Bedrock、Grafana AI Gateway。每个 provider 都是独立 Go module,应用只 go get 自己用到的那一个,依赖收敛得很干净。
可靠性方面有重试(retry.go)、超时、流中断恢复(internal/streamrecover)、fallback 链(fallback/)和 provider 注册表(registry/)。
middleware/ 提供结构化日志(log/slog)、Prometheus 指标、上下文增强(把请求元数据带给供应商或网关)、Agent Observability(在 Grafana 里回放生成过程),以及核心变换如推理内容抽取、模拟流式、JSON 抽取。
较新的能力还包括 tool_search.go(工具发现)和 ui_message_reader.go(读取前端 UI 消息),配合 agent_ui_validation.go 做 UI 消息校验,说明项目正往"完整的智能体运行时"方向演进。
最小成本路径(CLI / 库调用):装 Go 1.27.3+,go get github.com/grafana/ai-sdk 加一个 provider 模块,写一个十几行的 main.go,设置 ANTHROPIC_API_KEY 后 go run . 即可拿到模型回复。整条链路不需要 Docker、不需要前端、不需要 GPU。
完整链路(Go 后端 + React 前端):额外需要 Node.js 18+ 与 npm,用 npm create vite 建 React 应用,安装 ai 和 @ai-sdk/react(官方建议从仓库的 test/integration/package.json 读取锁定版本),再在 Vite 里配 /api 代理。前端 useChat 直接发消息,Go 端 WriteUIMessageStream 边生成边推。
环境自带的完整栈(ai-gateway):仓库 ai-gateway/ 子模块带 docker-compose.yaml 和 .config/Dockerfile,可以一条命令拉起 Grafana + Gateway 的本地环境,配合 provisioning 目录做内部模型网关的验证。
硬件门槛几乎为零:纯 CPU、512MB 内存、100MB 磁盘足够,因为所有推理都发生在远端供应商侧。
版本仍处 alpha。pkg.go.dev 上最新发布为 v0.1.0-alpha.2,API 仍可能破坏性变更,不适合锁死在生产关键链路。
Go 版本要求偏高。go.mod 要求 Go 1.27.3,这是相当激进的版本门槛,企业内网环境往往还在 1.21/1.22 左右,升级成本不低。
生态成熟度有限。14 位贡献者、262 星,相对 Vercel AI SDK 的社区规模是小巫见大巫;issue 响应速度和第三方 provider 的覆盖度也有待观察。
供应商能力天然不对等。OpenAI provider 只针对新的 Responses API,OpenAI-compatible 走的是旧的 Chat Completions 形态,两者的工具调用、推理内容、结构化输出行为差异需要开发者自己核对。
协议兼容的维护成本。与 @ai-sdk/react 保持 wire-compatible 是一把双刃剑:前端升级了 AI SDK 大版本,Go 侧就得跟着适配。仓库专门有 provider/upstream_decode_compat_test.go 和 upstream_encode_compat_test.go 守着这条线,说明团队清楚这里是长期负担。
双许可的注意事项。SDK 本体是 Apache-2.0,但 ai-gateway/ 是 AGPL-3.0-only,商业闭源集成要留意边界。
Grafana AI SDK 代表的趋势是"AI 编排层正在从 Python/TypeScript 向更多语言扩散"。此前 AI 应用开发基本被 Python 生态垄断,企业级 Go 后端要么绕开要么做适配层;现在 Go 有了官方级别的编排抽象,且直接对齐最主流的前端协议。
另一个值得关注的角度:Grafana 把可观测性做成了 AI 应用的默认组成——日志、指标、Agent Observability 都在 SDK 内置,而不是让团队事后补。这与 2026 年"AI 应用可观测性从可选项变成刚需"的行业判断吻合。
如果你是 Go 后端团队,正在为 AI 功能选型:想快速验证,看 examples/agent-chat 十五分钟能跑通;想长期投入,关注它 alpha 到 1.0 的 API 稳定节奏;如果你的前端已经是 AI SDK React,协议兼容能直接省掉一整个 BFF 层。无论哪种情况,这个项目都值得放进技术雷达。
| 项目 | 数据 |
|---|---|
| Star / Fork | 262 / 16 |
| 提交数 | 394 |
| 贡献者 | 14 |
| Go 文件 / 测试文件 | 663 / 337 |
| 文档 | 36 篇 Markdown |
| 许可证 | Apache-2.0(SDK)/ AGPL-3.0-only(ai-gateway) |
| 内置 Provider | Anthropic、Azure、OpenAI、OpenAI-compatible、Bedrock、Grafana Gateway |
| 最新版本 | v0.1.0-alpha.2 |