anthropic-sdk-go
anthropics/anthropic-sdk-go加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024 年,随着 Claude 3 系列模型的爆火,无数开发者开始在生产环境中集成 Claude API。Python 开发者有官方 SDK 傍身,但 Go 开发者呢?大多数人的做法是直接手写 HTTP 请求、手动处理 JSON 序列化——这不仅容易出错,还让代码充满了重复的胶水逻辑。
Anthropic 官方听到了这个声音。 anthropic-sdk-go 就是他们给出的答案:专为 Go 语言开发者打造的、完整覆盖 Claude 全套能力的 SDK。目前仓库已积累 1222 颗星,成为 Go 生态中接入 Claude 的事实标准。
打个比方:就好比你一直在用手动挡开车,突然官方给你配了一辆带自动巡航的特斯拉——不是不能继续开手动挡,而是没必要了。
anthropic-sdk-go 是由 Anthropic 官方维护的 Go 语言客户端库,托管在 GitHub 仓库 anthropics/anthropic-sdk-go,采用 MIT 许可证。
项目采用 Go 1.24+ 作为最低版本要求(使用 golang.org/x/sync 并发原语和 google.golang.org/api 等现代依赖),核心设计思路是让 Go 开发者能够以最符合 Go 语言惯用法(idiomatic Go)的方式调用 Claude 的各类 API,包括:
消息 API(Messages API):发送多轮对话
批量消息 API(Message Batch):异步批量处理
MCP(Model Context Protocol):工具调用与函数执行
Beta 功能:Agents SDK、MCP 客户端、工具运行器、Vault 等前沿能力
企业级功能:AWS Bedrock / Google Cloud Vertex AI 部署、细粒度权限控制(RBAC)、组织分析、消费报告等
项目的源码组织非常清晰,每个功能模块对应一个独立的 Go 源文件:
| 目录 | 说明 |
|------|------|
| option/ | 客户端选项模式(option.WithAPIKey 等),Go 惯用构造器 |
| internal/ | 内部共享逻辑 |
| mcp/ | MCP 协议客户端实现 |
| toolrunner/ | 工具运行器,Agent 能力核心 |
| aws/ | AWS Bedrock 集成 |
| bedrock/ | Bedrock 底层封装 |
| googlecloud/ | GCP Vertex AI 集成 |
| vertex/ | Vertex AI 封装 |
| foundry/ | Foundry 平台支持 |
| examples/ | 丰富的使用示例 |
最值得注意的依赖是 github.com/aws/aws-sdk-go-v2。这不是 Anthropic 自己造轮子,而是复用了 AWS 成熟的事件流(eventstream)处理能力——Claude API 返回的流式响应(包括 text/event-stream 格式)需要高效解码,AWS SDK 的 eventstream 库提供了经过生产验证的解决方案。
此外,项目还依赖:
golang.org/x/oauth2:OAuth2 认证(支持 Google Cloud 等平台)
google.golang.org/api:Google Cloud 集成
github.com/modelcontextprotocol/go-sdk:MCP 协议支持
github.com/invopop/jsonschema:从 Go 结构体自动生成 JSON Schema(用于 MCP 工具定义)
api.md 文件的存在暗示项目使用了某种代码生成机制(类似 OpenAPI generator),自动从 Anthropic 的 API 规范生成请求/响应的 Go 结构体。这保证了 SDK 始终与官方 API 保持同步,开发者不用担心 API 更新后 SDK 滞后的问题。
go get -u 'github.com/anthropics/anthropic-sdk-go@v1.80.0'
package main
import (
"context"
"fmt"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
func main() {
client := anthropic.NewClient(
option.WithAPIKey("my-anthropic-api-key"), // 可选,默认读 ANTHROPIC_API_KEY 环境变量
)
message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
MaxTokens: 1024,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("What is a quaternion?")),
},
Model: anthropic.ModelClaudeOpus5_5,
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v
", message.Content)
}
整个过程只需要两行配置代码——远比你手写 HTTP 请求 + JSON marshal/ Unmarshal 简洁得多。
// 定义工具
tools := []anthropic.MessageCreateParams.toolsBuilder{
anthropic.NewToolDefinition(anthropic.NewTextBlock(
"Use this tool to get the weather",
), "get_weather", nil),
}
// 调用时传入工具列表
result, err := client.Messages.New(ctx, anthropic.MessageNewParams{
// ...
Tools: tools,
})
对于希望在自有云环境中运行 Claude 的企业,项目提供了两条路径:
aws/ 和 bedrock/ 目录,通过 AWS SDK v2 认证,无需管理 API Keygooglecloud/ 和 vertex/ 目录,通过 GCP 的 OAuth2 认证这意味着企业可以完全在 VPC 内部署 Claude,不走公网 API——对数据安全合规要求极高的金融、医疗场景尤其有价值。
organizationrbacrole*.go 和 organizationfederation*.go 等文件表明 SDK 支持细粒度的企业权限管理:角色定义、权限分配、联邦身份(通过 OIDC issuer)等。这对于需要在组织内管理 Claude API 使用权限的中大型企业是刚需。
betaagent*.go 文件系列是 Anthropic Agents 能力的 Go 封装,包括:
Agent 会话管理
工具运行器(Tool Runner):执行 MCP 工具
内存存储(Memory Store):持久化 Agent 记忆
Tunnel(隧道):安全回调机制
几乎每个功能模块都配有对应的 *_test.go 文件,使用 github.com/stretchr/testify 断言库和 github.com/dnaeon/go-vcr 录制/回放 HTTP 测试,确保测试快速且无网络依赖。
Go 社区广泛采用的 functional options 模式被应用在 option/ 目录中,相比传统的配置结构体,Option 模式更灵活、更易扩展,是现代 Go 库的标志做法。
Anthropic 的很多新功能都以 Beta 形式发布,项目为每个 Beta 能力都提供了对应的 Go 封装,开发者无需等待 Stable 即可尝鲜最新能力。
Go 语言在云原生、DevOps、基础设施领域有着不可撼动的地位。随着 AI 能力逐渐成为所有软件产品的标配,将 Claude 无缝集成到 Go 写的后端服务、微服务、CLI 工具中,是大量开发团队的迫切需求。
anthropic-sdk-go 的出现填补了这个空白——让 Go 开发者不需要切换语言或引入 Python 服务作为中间层,直接在现有 Go 项目中调用 Claude 的全部能力。这对于:
AI + DevOps 平台:用 Go 写运维自动化脚本时直接调用 Claude 辅助决策
CLI 工具开发者:为命令行工具添加 AI 辅助能力
微服务架构:在 Go 微服务中直接调用 LLM,无需跨语言调用
都具有极高的实用价值。随着 Claude 模型能力的持续增强,这个 SDK 预计将成为 Go 生态中最重要的 AI 集成库之一。
anthropic-sdk-go 是 Anthropic 官方出品的 Go 语言客户端库,以高质量的代码、完整的 API 覆盖和良好的 Go 惯用法设计,成为 Go 开发者接入 Claude 的首选方案。尽管它没有 Web UI 和容器化部署选项,但作为纯库而言,其集成便利性和功能完整性都达到了生产级别。如果你的团队使用 Go 开发,这款 SDK 值得优先考虑。