[ PROMPT_NODE_23816 ]
claude-api
[ SKILL_DOCUMENTATION ]
# Claude API — Go
> **注意:** Go SDK 通过 `BetaToolRunner` 支持 Claude API 和测试版工具使用。目前 Go 暂不支持智能体 SDK。
## 安装
bash
go get github.com/anthropics/anthropic-sdk-go
## 客户端初始化
go
import (
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
// 默认(使用 ANTHROPIC_API_KEY 环境变量)
client := anthropic.NewClient()
// 显式指定 API 密钥
client := anthropic.NewClient(
option.WithAPIKey("your-api-key"),
)
---
## 基础消息请求
go
response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
Model: anthropic.ModelClaudeOpus4_6,
MaxTokens: 16000,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("What is the capital of France?")),
},
})
if err != nil {
log.Fatal(err)
}
for _, block := range response.Content {
switch variant := block.AsAny().(type) {
case anthropic.TextBlock:
fmt.Println(variant.Text)
}
}
---
## 流式传输
go
stream := client.Messages.NewStreaming(context.Background(), anthropic.MessageNewParams{
Model: anthropic.ModelClaudeOpus4_6,
MaxTokens: 64000,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("Write a haiku")),
},
})
for stream.Next() {
event := stream.Current()
switch eventVariant := event.AsAny().(type) {
case anthropic.ContentBlockDeltaEvent:
switch deltaVariant := eventVariant.Delta.AsAny().(type) {
case anthropic.TextDelta:
fmt.Print(deltaVariant.Text)
}
}
}
if err := stream.Err(); err != nil {
log.Fatal(err)
}
**累积最终消息**(流中没有 `GetFinalMessage()` 方法):
go
stream := client.Messages.NewStreaming(ctx, params)
message := anthropic.Message{}
for stream.Next() {
message.Accumulate(stream.Current())
}
if err := stream.Err(); err != nil { log.Fatal(err) }
// message.Content 现在包含完整响应
---
## 工具使用
### 工具运行器 (Beta — 推荐)
**Beta:** Go SDK 通过 `toolrunner` 包提供 `BetaToolRunner` 以实现自动工具使用循环。
go
import (
"context"
"fmt"
"log"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/toolrunner"
)
// 定义带有 jsonschema 标签的工具输入,用于自动生成 schema
type GetWeatherInpu