API tương thích Anthropic

Puyun AI tương thích với giao thức Anthropic Messages API, bạn có thể sử dụng trực tiếp Anthropic SDK hoặc bất kỳ client nào tương thích giao thức Claude để kết nối.

Base URL

text
https://ai.tracup.com

Xác thực

Tất cả endpoint đều yêu cầu xác thực:

  • Bearer Token: Authorization: Bearer <your-api-key>
  • x-api-key Header: x-api-key: <your-api-key>

Messages

Endpoint Messages tương thích Anthropic Claude. Hỗ trợ mô hình Claude, cũng hỗ trợ gọi các mô hình khác thông qua chuyển đổi giao thức.

bash
curl https://ai.tracup.com/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Giải thích về điện toán lượng tử"}
    ]
  }'

Tham số yêu cầu:

Tham sốKiểuBắt buộcMô tả
modelstringID mô hình (ví dụ claude-sonnet-4-6)
messagesarrayMảng đối tượng tin nhắn
max_tokensintegerSố Token tối đa được tạo
streambooleanKhôngBật phản hồi luồng
temperaturenumberKhôngNhiệt độ lấy mẫu (0-1)
top_pnumberKhôngXác suất lấy mẫu nhân
top_kintegerKhôngLấy mẫu Top-K
stop_sequencesarrayKhôngChuỗi dừng
systemstring/arrayKhôngSystem prompt
toolsarrayKhôngĐịnh nghĩa công cụ
tool_choiceobjectKhôngChiến lược gọi công cụ

Ví dụ phản hồi:

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Điện toán lượng tử là một phương pháp sử dụng nguyên lý cơ học lượng tử..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

Phản hồi luồng

Khi đặt "stream": true, phản hồi sử dụng định dạng SSE, loại sự kiện nhất quán với giao thức gốc Anthropic:

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Điện toán"}}

event: message_stop
data: {"type":"message_stop"}

Tự động chuyển đổi giao thức

Khi gọi mô hình không phải Claude qua endpoint giao thức Anthropic, Puyun AI tự động hoàn thành chuyển đổi giao thức:

  • Chuyển đổi yêu cầu: Chuyển định dạng Anthropic Messages sang định dạng gốc của mô hình đích (như OpenAI Chat Completions)
  • Chuyển đổi phản hồi: Chuyển phản hồi của mô hình đích sang định dạng Anthropic Messages trả về
  • Thích ứng luồng: Loại sự kiện luồng tự động thích ứng sang định dạng SSE của Anthropic

Điều này có nghĩa là bạn có thể gọi các mô hình khác như OpenAI, Gemini qua endpoint này trong các client gốc Anthropic như Claude Code mà không cần bất kỳ thích nghi nào.

Sử dụng Anthropic SDK

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://ai.tracup.com"
)

# Gọi mô hình Claude
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Xin chào"}]
)

# Gọi mô hình OpenAI — tự động chuyển đổi giao thức
message = client.messages.create(
    model="gpt-4o",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Xin chào"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://ai.tracup.com",
});

// Gọi mô hình Claude
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Xin chào" }],
});

Đầu vào đa phương thức

Hỗ trợ đầu vào hình ảnh (Vision):

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "Mô tả hình ảnh này"
                }
            ]
        }
    ]
)

Phản hồi lỗi

Phản hồi lỗi tuân theo định dạng lỗi Anthropic:

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
Mã trạng thái HTTPÝ nghĩa
400Tham số yêu cầu không hợp lệ
401Xác thực thất bại — API Key không hợp lệ
403Quyền không đủ
404Mô hình không tồn tại
429Giới hạn tốc độ hoặc số dư không đủ
500Lỗi nội bộ máy chủ
529Dịch vụ thượng-stream quá tải