Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wengchaoxi/go-anthropic
用 Go 实现的 Anthropic SDK,支持 Claude 2.1、Claude 3(文字和图片)等模型。Anthropic SDK implemented in Go, supporting models such as Claude 2.1, Claude 3 (supports sending images), etc.
https://github.com/wengchaoxi/go-anthropic
anthropic claude-2 claude-3 claude-3-haiku claude-3-opus claude-3-sonnet go llm sdk
Last synced: about 2 months ago
JSON representation
用 Go 实现的 Anthropic SDK,支持 Claude 2.1、Claude 3(文字和图片)等模型。Anthropic SDK implemented in Go, supporting models such as Claude 2.1, Claude 3 (supports sending images), etc.
- Host: GitHub
- URL: https://github.com/wengchaoxi/go-anthropic
- Owner: wengchaoxi
- License: mit
- Created: 2024-03-08T07:56:32.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-03-15T02:38:32.000Z (11 months ago)
- Last Synced: 2024-06-21T14:17:23.540Z (8 months ago)
- Topics: anthropic, claude-2, claude-3, claude-3-haiku, claude-3-opus, claude-3-sonnet, go, llm, sdk
- Language: Go
- Homepage: https://pkg.go.dev/github.com/wengchaoxi/go-anthropic
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Anthropic
**English** | [简体中文](./README.zh-CN.md)
Anthropic SDK implemented in Go, supporting models such as Claude 2.1, Claude 3 (supports sending images), etc.
## Installation
```
go get github.com/wengchaoxi/go-anthropic
```## Usage
By default, it will fetch `ANTHROPIC_API_KEY` and `ANTHROPIC_BASE_URL` from the environment variables.
```go
package mainimport (
"fmt""github.com/wengchaoxi/go-anthropic"
)func main() {
cli := anthropic.NewClient()
// cli := anthropic.NewClient(anthropic.ClientOptions{
// ApiKey: os.Getenv("ANTHROPIC_API_KEY"),
// BaseUrl: anthropic.DEFAULT_ANTHROPIC_BASE_URL,
// })resp, err := cli.CreateMessages(anthropic.MessagesRequest{
// `MODEL_CLAUDE_3_SONNET`、`MODEL_CLAUDE_3_OPUS`、`MODEL_CLAUDE_2_1`
Model: anthropic.MODEL_CLAUDE_3_HAIKU
Messages: []anthropic.Message{{
Role: "user",
Content: []anthropic.MessageContent{
&anthropic.MessageContentText{
Type: "text",
Text: "Hello Claude!",
},
}},
},
MaxTokens: 1024,
})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(resp.Content[0].Text)
}
```## Streaming Responses
```go
package mainimport (
"fmt""github.com/wengchaoxi/go-anthropic"
)func main() {
cli := anthropic.NewClient()
// cli := anthropic.NewClient(anthropic.ClientOptions{
// ApiKey: os.Getenv("ANTHROPIC_API_KEY"),
// BaseUrl: anthropic.DEFAULT_ANTHROPIC_BASE_URL,
// })stream, _ := cli.CreateMessagesStream(anthropic.MessagesRequest{
// `MODEL_CLAUDE_3_SONNET`、`MODEL_CLAUDE_3_OPUS`、`MODEL_CLAUDE_2_1`
Model: anthropic.MODEL_CLAUDE_3_HAIKU
Messages: []anthropic.Message{{
Role: "user",
Content: []anthropic.MessageContent{
&anthropic.MessageContentText{
Type: "text",
Text: "Hello Claude!",
},
}},
},
MaxTokens: 1024,
Stream: true,
})
defer stream.Close()
for {
resp, err := stream.Recv()
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(resp.Delta.Text)
}
}
```## References
- https://docs.anthropic.com/claude/reference/messages_post
- https://docs.anthropic.com/claude/reference/messages-streaming