grafana/ai-sdk

GitHub: grafana/ai-sdk

该 SDK 为 Go 提供统一的 AI 模型调用 API,支持流式传输、工具调用和多 provider 接入,并与 Vercel AI SDK 的 React 前端协议兼容。

Stars: 159 | Forks: 5

Grafana AI SDK for Go — streaming, tool-calling AI backends that speak fluent @ai-sdk/react 调用语言模型、流式传输响应、执行工具,并从 Go 提供 AI 驱动的 endpoint。可以单独使用该 SDK,或将其与 AI SDK React 前端搭配使用。 [快速开始](#quick-start) · [文档](docs/README.md) · [示例](examples/) · [API 参考](https://pkg.go.dev/github.com/grafana/ai-sdk)
## 为什么选择它 该 SDK 为 Go 应用程序提供了一个统一的 API,支持跨多个受支持的 provider 进行模型调用、流式传输、工具调用、结构化输出和多步 agent。它遵循 [Vercel 的 AI SDK](https://ai-sdk.dev) 的设计,并与其 TypeScript 前端 hooks 保持网络协议兼容。Go endpoint 可以将 Server-Sent Events (SSE) 直接流式传输到 `useChat` 等 hooks。 ``` Go backend React frontend ────────── ────────────── aisdk.StreamText(...) ── SSE ──▶ useChat({ transport }) aisdk.WriteUIMessageStream(w, …) // same protocol ``` 请参阅 [请求如何运行](docs/concepts/architecture.md) 以了解生成、工具和流式传输的流程。你可以复用现有的 AI SDK React 前端,或用 Go 替换 TypeScript 后端,而无需添加协议适配器。 ## 功能 - **`StreamText` / `GenerateText`** —— 流式传输响应或等待完整结果,支持重试和多步工具执行 - **React 兼容性** —— 支持 `useChat`、`useCompletion` 和 `useObject` - **可组合工具** —— 从模型中调用原生 Go 函数,并要求对重要操作进行批准 - **结构化输出** —— 生成经过 schema 验证的对象、数组和选项 - **多 provider** —— 从内部服务调用 Anthropic、Amazon Bedrock、OpenAI、兼容 OpenAI 的 API 以及 Grafana 托管的 endpoint - **生产级控制** —— 配置超时、降级方案、日志记录、Prometheus 指标和 [Agent 可观测性](docs/middleware/agent-observability.md) ## 安装 创建一个 Go 项目并安装核心模块和一个 provider: ``` mkdir ai-sdk-quickstart cd ai-sdk-quickstart go mod init example.com/ai-sdk-quickstart go get github.com/grafana/ai-sdk go get github.com/grafana/ai-sdk/providers/anthropic ``` 有关 Amazon Bedrock、OpenAI、兼容 OpenAI 的 API 以及内部配置的 Grafana 托管 endpoint,请参阅[选择 provider](docs/providers/overview.md)。 ## 快速开始 将这个完整的程序保存为 `main.go`。它会进行一次模型调用并打印响应: ``` package main import ( "context" "fmt" "log" "os" aisdk "github.com/grafana/ai-sdk" "github.com/grafana/ai-sdk/provider" "github.com/grafana/ai-sdk/providers/anthropic" ) func main() { apiKey := os.Getenv("ANTHROPIC_API_KEY") if apiKey == "" { log.Fatal("ANTHROPIC_API_KEY is required") } model := anthropic.New(apiKey, "claude-sonnet-5") result, err := aisdk.GenerateText(context.Background(), model, aisdk.WithModelMessages(provider.UserText("Explain goroutines in one sentence.")), ) if err != nil { log.Fatal(err) } fmt.Println(result.Text) } ``` 使用 Anthropic API key 运行它: ``` ANTHROPIC_API_KEY=sk-... go run . ``` 有关项目初始化和凭证指南,请遵循[安装说明](docs/getting-started/installation.md)。要将此响应流式传输到 React 客户端,请继续阅读[构建全栈聊天应用](docs/getting-started/full-stack-chat.md)。 ## 下一步去向 | 目标 | 从这里开始 | |---|---| | 从 Go 发起模型调用 | [从 Go 生成文本](docs/getting-started/backend-only.md) | | 构建 React 聊天应用 | [全栈聊天应用](docs/getting-started/full-stack-chat.md) | | 返回有类型的数据 | [结构化输出](docs/guides/structured-output.md) | | 让模型调用 Go 代码 | [工具](docs/guides/tools.md) | | 构建可复用的 agent | [Agent 循环](docs/guides/agent-loops.md) | | 选择模型 provider | [Provider 概览](docs/providers/overview.md) | | 添加日志或可观测性 | [Middleware 概览](docs/middleware/overview.md) | | 为生产环境做准备 | [生产环境检查清单](docs/best-practices/production.md) | 完整索引:**[文档](docs/README.md)** · 可运行代码:**[示例](examples/)** · 精确 API:**[pkg.go.dev](https://pkg.go.dev/github.com/grafana/ai-sdk)** ## 贡献 欢迎贡献。[CONTRIBUTING.md](CONTRIBUTING.md) 涵盖了开发环境配置、使本仓库与众不同的两项惯例 —— 与 Vercel AI SDK 保持上游一致性,以及使用 OpenSpec 进行规范驱动开发 —— 以及 pull request 检查清单。所有参与者均需遵守我们的[行为准则](CODE_OF_CONDUCT.md)。 ## 许可证 [Apache License 2.0](LICENSE)。该 SDK 遵循 [Vercel 的 AI SDK](https://github.com/vercel/ai) 的设计,后者同样基于 Apache-2.0 许可证;相关署名记录在 [NOTICE](NOTICE) 中。
标签:Agent, DLL 劫持, EVTX分析, Go, Ruby工具, SSE流式输出, Syscall, Web开发, 前端兼容, 大语言模型, 密钥检测, 日志审计, 自定义请求头