Anthropic Claude API
- 全接口字段注释
- Chatcompletion 文本对话接口
- 无缝对接官方文档:单轮问答、历史记忆问答、流返回
- 修改Prompt传参为数组模式,更方便的兼容openai的接口
- 支持swagger文档 和 ApiFox 文档
![image](https://private-user-images.githubusercontent.com/50035229/247935005-efdbf241-0bb7-43a8-8389-749724f0e232.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2MDAsIm5iZiI6MTczOTAyODMwMCwicGF0aCI6Ii81MDAzNTIyOS8yNDc5MzUwMDUtZWZkYmYyNDEtMGJiNy00M2E4LTgzODktNzQ5NzI0ZjBlMjMyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjUwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExMWY3ODlmMDAyNzBkYzA4MWY1NmM3NWUzMDNlYjY5OWNjYzcwODBkOGE4Y2FjOTdkOWExMjI2MmU3MzJhMjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KrpkSuCHKO_uvUYXZTfz4aL_A42R6hiiG5rsTN48vNQ)
- 访问 Anthropic 官网,申请 Claude API 权限。
- 登录 Claude Console,获取 Api-Key。
- 参考下面示例使用
package main
import (
"context"
"fmt"
"github.com/ConnectAI-E/go-claude/claude"
textv1 "github.com/ConnectAI-E/go-claude/gen/go/claude/text/v1"
"os"
)
//init client
func main() {
ctx := context.Background()
client, _ := claude.New(
claude.WithApiToken(os.Getenv("TEST_API_TOKEN")),
)
//chat
req := &textv1.ChatCompletionsRequest{
Messages: []*textv1.Message{
{
Role: "Human",
Content: "hi~",
},
},
Model: "claude-1-100k",
Temperature: 0.7,
MaxTokensToSample: 500,
}
res, _ := client.ChatCompletions(ctx, req)
fmt.Println(res.Completion) // output: Hello
}
Claude Completion
package main
import (
"context"
"fmt"
"github.com/ConnectAI-E/go-claude/claude"
textv1 "github.com/ConnectAI-E/go-claude/gen/go/claude/text/v1"
"os"
)
func main() {
ctx := context.Background()
client, _ := claude.New(
claude.WithApiToken(os.Getenv("TEST_API_TOKEN")),
)
//chat
req := &textv1.ChatCompletionsRequest{
Messages: []*textv1.Message{
{
Role: "Human",
Content: "hi~",
},
},
Model: "claude-1-100k",
Temperature: 0.7,
MaxTokensToSample: 500,
}
res, _ := client.ChatCompletions(ctx, req)
fmt.Println(res.Completion) // output: Hello
}
Claude stream completion
package main
import (
"context"
"errors"
"fmt"
"github.com/ConnectAI-E/go-claude/claude"
textv1 "github.com/ConnectAI-E/go-claude/gen/go/claude/text/v1"
"io"
"os"
)
func main() {
ctx := context.Background()
//init client
client, _ := claude.New(
claude.WithApiToken(os.Getenv("TEST_API_TOKEN")),
)
//chat
req := &textv1.ChatCompletionsRequest{
Messages: []*textv1.Message{
{
Role: "Human",
Content: "hi~",
},
},
Model: "claude-1-100k",
Temperature: 0.7,
MaxTokensToSample: 500,
}
stream, _ := client.ChatCompletionStream(ctx, req)
defer stream.CloseSend()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
fmt.Println(err)
break
}
fmt.Printf(response.Completion + "\n")
}
}
Claude history stream completion
package main
import (
"context"
"errors"
"fmt"
"github.com/ConnectAI-E/go-claude/claude"
textv1 "github.com/ConnectAI-E/go-claude/gen/go/claude/text/v1"
"io"
"os"
)
func main() {
ctx := context.Background()
//init client
client, _ := claude.New(
claude.WithApiToken(os.Getenv("TEST_API_TOKEN")),
)
//chat
req := &textv1.ChatCompletionsRequest{
Messages: []*textv1.Message{
{
Role: "Human",
Content: "hi~",
},
{
Role: "Assistant",
Content: "Hello",
},
{
Role: "Human",
Content: "How are you?",
},
},
Model: "claude-1-100k",
Temperature: 0.7,
MaxTokensToSample: 500,
}
stream, _ := client.ChatCompletionStream(ctx, req)
defer stream.CloseSend()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
fmt.Println(err)
break
}
fmt.Printf(response.Completion + "\n")
}
}