对话生成(Anthropic协议)¶
1. 概述¶
Claude是Anthropic开发的大语言模型,具有强大的对话和写作能力。它能理解上下文、生成连贯文本、编写代码,并擅长逻辑推理和分析。注重安全性和道德准则,会明确表明自己是AI助手的身份。它支持多语言交流,能够处理复杂任务和长对话。
2. 请求说明¶
- 请求方法:
POST -
请求地址:
https://gateway.serevixai.ai/v1/messages
3. 请求参数¶
3.1 Header 参数¶
| 参数名称 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
Content-Type |
string | 是 | 设置请求头类型,必须为 application/json |
application/json |
Accept |
string | 是 | 设置响应类型,建议统一为 application/json |
application/json |
x-api-key |
string | 是 | 身份验证所需的 API_KEY,格式 $YOUR_API_KEY |
$YOUR_API_KEY |
3.2 Body 参数 (application/json)¶
| 参数名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| model | string | 是 | 要使用的模型 ID。详见模型列表列出的可用版本,如 claude-3-5-haiku-20241022。 |
claude-haiku-4-5-20251001 |
| messages | array | 是 | 聊天消息列表,格式与 Anthropic 兼容。数组中的每个对象包含 role(角色) 与 content(内容)。 |
[{"role": "user","content": [{"type":"text","text":"你好,请给我讲个笑话。"}]}] |
| message.role | string | 否 | 消息角色,可选值:user、assistant。 |
user |
| message.content | array | 否 | s消息的具体内容。 | [{"type":"text","text":"你好,请给我讲个笑话。"}] |
| system | array | 否 | system提示词。 | [{"type":"text","text":"你是一个友善的人工智能助手"}] |
| temperature | number | 否 | 采样温度,取值 0~2。数值越大,输出越随机;数值越小,输出越集中和确定。 |
0.7 |
| top_p | number | 否 | 另一种调节采样分布的方式,取值 0~1。和 temperature 通常二选一设置。 |
0.9 |
| stream | boolean | 否 | 是否开启流式输出。设置为 true 时,返回类似 ChatGPT 的流式数据。 |
false |
| max_tokens | number | 否 | 单次回复可生成的最大 token 数量,受模型上下文长度限制。 | 8192 |
4. 请求示例¶
4.1 聊天对话¶
POST /v1/messages
Content-Type: application/json
Accept: application/json
x-api-key: $YOUR_API_KEY
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 4096,
"system": [{
"type": "text",
"text": "你是一个友善的人工智能助手"
}],
"messages": [{
"role": "user",
"content": [{
"type": "text",
"text": "你好,给我科普一下量子力学吧"
}]
}]
}
curl https://gateway.serevixai.ai/v1/messages \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "x-api-key: $YOUR_API_KEY" \
-d "{
\"model\": \"claude-haiku-4-5-20251001\",
\"max_tokens\": 4096,
\"system\": [{
\"type\": \"text\",
\"text\": \"你是一个友善的人工智能助手\"
}],
\"messages\": [{
\"role\": \"user\",
\"content\": [{
\"type\": \"text\",
\"text\": \"你好,给我科普一下量子力学吧\"
}]
}]
}"
package main
import (
"context"
"fmt"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
func main() {
apiKey := "sk-123456789012345678901234567890123456789012345678"
client := anthropic.NewClient(
option.WithAPIKey(apiKey),
option.WithBaseURL("https://gateway.serevixai.ai"),
)
resp, err := client.Messages.New(
context.Background(),
anthropic.MessageNewParams{
Model: "claude-haiku-4-5-20251001",
MaxTokens: 4096,
System: []anthropic.TextBlockParam{
{
Type: "text",
Text: "你是一个友善的人工智能助手",
},
},
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("你好,给我科普一下量子力学吧")),
},
},
)
if err != nil {
fmt.Println("error:", err)
return
}
for _, block := range resp.Content {
if block.Type == "text" {
fmt.Println("💬 Assistant reply:")
fmt.Println(block.Text)
}
}
fmt.Println("\n📊 Token usage:")
fmt.Printf(" - Input tokens: %d\n", resp.Usage.InputTokens)
fmt.Printf(" - Output tokens: %d\n", resp.Usage.OutputTokens)
}
#!/usr/bin/env python3
from anthropic import Anthropic
def main():
api_key = "sk-123456789012345678901234567890123456789012345678"
client = Anthropic(
api_key=api_key,
base_url="https://gateway.serevixai.ai"
)
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=4096,
system=[{
"type": "text",
"text": "你是一个友善的人工智能助手"
}],
messages=[{
"role": "user",
"content": "你好,给我科普一下量子力学吧"
}]
)
for block in response.content:
if block.type == "text":
print("💬 Assistant reply:")
print(block.text)
print("\n📊 Token usage:")
print(f" - Input tokens: {response.usage.input_tokens}")
print(f" - Output tokens: {response.usage.output_tokens}")
if __name__ == "__main__":
main()
5. 响应示例¶
{
"model": "claude-3-5-haiku-20241022",
"id": "msg_bdrk_01AZpXbu4crT5R6gsYJwk6KD",
"type": "message",
"role": "assistant",
"content": [{
"type": "text",
"text": "量子力学是研究微观世界的物理学分支……"
}],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 36,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 366
}
}