跳转至

对话生成(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 消息角色,可选值:userassistant 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
    }
}