go-anthropic
Go 语言最完整的 Anthropic Claude API SDK,支持消息对话、流式响应、工具调用、视觉理解和批量处理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Go 语言最完整的 Anthropic Claude API SDK,支持消息对话、流式响应、工具调用、视觉理解和批量处理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
go-anthropic 是 Go 语言社区为 Anthropic Claude 系列大语言模型打造的非官方官方级 SDK(Software Development Kit)。所谓"官方级",是指它对 Anthropic API 的覆盖度极高,从基础的文本补全、消息对话,到流式响应、工具调用(Tool Use)、计算机控制(Computer Use)、提示词缓存、Batch 批量处理、视觉图文分析、PDF 解析、Token 计数等,几乎涵盖了 Claude API 的全部能力。
Anthropic 的 Claude 系列模型以"更安全、更对齐"著称,2023-2024 年迅速成为 AI 开发者的主流选择。然而,官方只提供了 Python 和 TypeScript 的 SDK,广大 Go 开发者面临一个尴尬的局面:要么自己手写 HTTP 请求包装器,要么找社区轮子。
liushuangls(GitHub ID 指向中国开发者)决定解决这个问题。他从 2023 年开始维护这个项目,持续跟进 Anthropic API 的更新节奏——每当 Anthropic 发布新功能(如 Computer Use、Prompt Caching),这个库几乎同步跟进 v2 版本支持。凭借高质量的代码、完整的测试覆盖(集成测试 + 单元测试),以及详尽的 GoDoc 文档,该项目在 GitHub 上获得了 176 颗星、Apache-2.0 许可证,成为 Go 生态中 Claude 集成的事实标准。
Messages API 是当前 Claude 的主流接口,go-anthropic 提供了完整支持:
client := anthropic.NewClient("your-api-key")
resp, err := client.CreateMessages(ctx, anthropic.MessagesRequest{
Model: anthropic.ModelClaude3Haiku20240307,
Messages: []anthropic.Message{
anthropic.NewUserTextMessage("What is your name?"),
},
MaxTokens: 1000,
})
这段代码展示了典型的对话流程:创建客户端 → 构建消息列表 → 调用 API → 获取回复。代码风格遵循 Go 惯用法,类型安全、链式调用清晰。
对于需要实时展示 AI 生成内容的应用(如终端对话机器人),流式响应至关重要:
resp, err := client.CreateMessagesStream(ctx, anthropic.MessagesStreamRequest{
MessagesRequest: anthropic.MessagesRequest{...},
OnContentBlockDelta: func(data anthropic.MessagesEventContentBlockDeltaData) {
fmt.Printf("Stream Content: %s\n", data.Delta.Text)
},
})
通过回调函数机制,每生成一个文本片段就实时推送,而非等待完整响应。用户感受到的是"逐字输出"的效果,体验接近人类打字。
工具调用是让 Claude 调用外部函数的能力,是构建 AI Agent 的核心技术。go-anthropic 通过 JSON Schema 定义工具签名:
Tools: []anthropic.ToolDefinition{
{
Name: "get_weather",
Description: "Get the current weather",
InputSchema: jsonschema.Definition{
Type: jsonschema.Object,
Properties: map[string]jsonschema.Definition{
"location": {Type: jsonschema.String, Description: "The city and state"},
},
Required: []string{"location"},
},
},
},
Claude 可以根据对话上下文决定调用哪个工具,并将结果作为后续对话输入。这一能力是构建 AI Agent(自主执行任务)的基石。
支持图片输入(base64 编码)和 PDF 文档解析,可用于:截图问答、文档理解、数据表格分析等场景。
Anthropic 的提示词缓存机制允许将长上下文缓存起来,复用于多轮对话,显著降低成本。go-anthropic 完整支持该特性,特别适合:长文档多轮对话、Few-shot 场景、企业知识库问答。
对于离线批处理场景(如对大量文本进行分类),Batch API 提供异步处理能力:提交任务 → 后台处理 → 获取结果。
go-anthropic 的代码结构体现了 Go 语言的工程哲学:
| 模块文件 | 职责 |
|---|---|
client.go | Client 主类,封装所有 API 调用方法 |
message.go | Messages API 数据结构定义 |
complete.go | Completions API(Legacy) |
toolblock*.go | 工具调用的数据序列化 |
jsonschema/ | JSON Schema 验证器,用于 Tool Definition |
internal/ | 内部实现细节 |
integrationtest/ | 完整集成测试(需真实 API Key) |
依赖管理:极度精简,go.mod 只依赖 github.com/stretchr/testify(测试框架),零运行时第三方依赖——这正是高质量 Go 库的特征。
测试覆盖:
*_test.go:每个功能模块的单元测试integrationtest/:需要 ANTHROPIC_API_KEY 环境变量的真实 API 集成测试| 维度 | 评估 |
|---|---|
| 安装难度 | 零门槛:go get github.com/liushuangls/go-anthropic/v2 一行命令 |
| 学习曲线 | 低:Go 开发者理解 HTTP SDK 几乎无额外学习成本 |
| 依赖要求 | 极低:仅需 Go 1.21+,无系统依赖 |
| 文档质量 | 极高:GoDoc 完整,每个方法均有注释和示例 |
1. API Key 管理:该库不提供 API Key 管理能力,开发者需要自行实现 Key 轮换、加密存储等机制。
2. 非官方库:这是社区维护项目,非 Anthropic 官方出品。理论上存在 API 变更跟进延迟的风险,但实际维护者更新非常及时。
3. 无连接池/重试机制:底层使用标准库 net/http,没有内置连接池配置或自动重试。对于极高并发场景,可能需要自行包装。
4. 缺少 MCP 支持:Anthropic 推出的 MCP(Model Context Protocol)在该库中尚未支持。
go-anthropic 的出现折射出一个趋势:AI 模型SDK正在成为 Go 生态的新基础设施。随着 Claude、GPT-4 等大模型能力的提升,越来越多的应用需要集成 AI 能力。Python 生态有 LangChain、LlamaIndex 等重量级框架,而 Go 生态相对空白。go-anthropic 填补了这一空白,让 Go 开发者也能优雅地集成 Claude。
更重要的是,Go 的并发模型(goroutine + channel)与 AI 应用的异步特性天然契合:构建高并发 AI 网关、AI Agent 多任务调度系统,Go 是比 Python 更合适的选择。
# 安装
go get github.com/liushuangls/go-anthropic/v2
# 最小示例
package main
import (
"fmt"
"github.com/liushuangls/go-anthropic/v2"
)
func main() {
client := anthropic.NewClient("sk-ant-api03-...")
resp, _ := client.CreateMessages(context.Background(), anthropic.MessagesRequest{
Model: anthropic.ModelClaude3Haiku20240307,
Messages: []anthropic.Message{anthropic.NewUserTextMessage("Hello!")},
MaxTokens: 1000,
})
fmt.Println(resp.Content[0].GetText())
}