Trang chủ / Tìm hiểu / Sử dụng Claude với OpenAI SDK: endpoint tương thích OpenAI, truyền luồng, công cụ và giới hạn
SDK OpenAI + Claude. Hai đầu nối vật lý có hình dạng khớp nhau đang nối một cửa sổ mã với một cửa sổ khác, thể hiện rõ sự tương thích của SDK.

Dùng Claude với SDK OpenAI: điểm cuối tương thích OpenAI, truyền luồng, công cụ và giới hạn

Mã được viết cho OpenAI SDK có thể gọi Claude mà không cần viết lại: trỏ base_url đến /v1của gateway, sử dụng khóa gateway và ID mô hình Claude. Endpoint chấp nhận yêu cầu Chat Completions, truyền luồng theo cùng định dạng và hỗ trợ gọi hàm. Một số tính năng Claude chỉ có trong định dạng gốc của Anthropic; phần cuối trình bày khi nào nên chuyển đổi.

Thông tin về endpoint

Mục Giá trị
URL cơ sởhttps://aiprimetech.io/v1
Endpoint trò chuyệnPOST https://aiprimetech.io/v1/chat/completions
Danh sách mô hìnhGET https://aiprimetech.io/v1/models
Xác thựcAuthorization: Bearer <key>; x-api-key cũng được chấp nhận
Mô hìnhCác ID Claude như claude-sonnet-5; các ID GPT với khóa thuộc nhóm Codex

Python

cửa sổ dòng lệnh
pip install openai
app.py
import os
from openai import OpenAI

client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"])

resp = client.chat.completions.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "Explain idempotency keys in two sentences."},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

base_url phải kết thúc bằng /v1: SDK thêm /chat/completions vào đó. Nếu không có /v1 yêu cầu được gửi đến trang web và trả về HTML; khi có /v1 hai lần, nó trả về 404 page not found.

Node.js

app.mjs
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY });

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Write a haiku about retries." }],
});
console.log(resp.choices[0].message.content);

Truyền dữ liệu theo luồng

stream.py
stream = client.chat.completions.create(
    model="claude-sonnet-5",
    max_tokens=2048,
    stream=True,
    stream_options={"include_usage": True},
    messages=[{"role": "user", "content": "Outline a zero-downtime migration."}],
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n", chunk.usage)

Dùng luồng cho câu trả lời dài: yêu cầu không dùng luồng phải hoàn tất trong thời gian chờ của ứng dụng khách, còn luồng thì không. include_usage thêm một đoạn cuối chứa số lượng token. Tìm hiểu thêm về lý do điều này quan trọng trong truyền phản hồi LLM theo luồng.

Gọi hàm

tools.py
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="claude-sonnet-5", max_tokens=512, tools=tools,
    messages=[{"role": "user", "content": "What is the weather in Paris?"}],
)
call = resp.choices[0].message.tool_calls[0]
print(call.function.name, call.function.arguments)   # get_weather {"city": "Paris"}

Phản hồi trả về có finish_reason: "tool_calls" và theo kiểu OpenAI tool_calls. Chạy hàm, thêm một tool thông điệp chứa kết quả và giá trị tương ứng của tool_call_id, rồi gọi lại, giống hệt như với các mô hình OpenAI.

Suy luận và tư duy

reasoning_effort ánh xạ tới thiết lập mức độ nỗ lực của Claude và chấp nhận low, medium, high, xhigh hoặc max. Giá trị none bị từ chối. Khi mô hình tư duy, nội dung suy luận được trả về trong một trường riêng reasoning_content bên cạnh content, nên mã đọc message.content vẫn hoạt động mà không cần thay đổi.

reasoning.py
resp = client.chat.completions.create(
    model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high",
    messages=[{"role": "user", "content": "Find the bug in this function: ..."}],
)

Mô hình

ID mô hình Dùng cho
claude-sonnet-5Lựa chọn mặc định cho lập trình và tác vụ của tác nhân: nhanh, mạnh, giá tầm trung.
claude-opus-5-5Suy luận khó hơn, tái cấu trúc mã quy mô lớn, tác nhân chạy trong thời gian dài.
claude-fable-5-1Năng lực cao nhất và đắt nhất; dành cho các tác vụ khó nhất.
claude-haiku-4-5Rẻ và nhanh: tiêu đề, tóm tắt, phân loại, các bước nhỏ.

Dùng chính xác các ID này. Các ID cũ có ngày tháng như claude-3-5-sonnet-20241022 vẫn xuất hiện trong một số danh sách mô hình nhưng không được phục vụ và trả về lỗi mô hình không được hỗ trợ.

Khi nào nên dùng API gốc của Anthropic

Định dạng OpenAI hỗ trợ trò chuyện, truyền theo luồng, công cụ và hình ảnh. Dùng định dạng Messages của Anthropic trên cùng cổng kết nối khi bạn cần chỉ định rõ các điểm ngắt bộ nhớ đệm prompt, các khối tư duy để truyền lại giữa các lượt, tài liệu PDF hoặc trích dẫn. Các hướng dẫn về Anthropic Python SDK và thiết lập hướng dẫn Vercel AI SDK trình bày cách sử dụng này.

Khắc phục sự cố

Những gì bạn thấy Nguyên nhân Cách khắc phục
Lỗi phân tích cú pháp JSON, phản hồi bắt đầu bằng <base_url không có /v1https://aiprimetech.io/v1
404 page not found/v1 hai lầnChính xác một /v1
401 Invalid API keyThiếu khóa hoặc khóa không đúng trong tiến trìnhKiểm tra biến; mỗi khóa thuộc về một cổng kết nối
Mô hình không được hỗ trợID mô hình cũ có ngày tháng hoặc bị viết saiDùng một ID trong bảng phía trên
'none' is not supportedreasoning_effort="none"Sử dụng low hoặc cao hơn, hoặc bỏ qua
429 Concurrency limit exceeded for userQuá nhiều yêu cầu đang được xử lý đồng thờiGiới hạn số yêu cầu song song; xem giới hạn tốc độ và thử lại
Hết thời gian chờ với câu trả lời dàiYêu cầu dài không dùng luồngDùng luồng hoặc tăng thời gian chờ của ứng dụng khách

Câu hỏi thường gặp

Tôi có thể dùng Claude với OpenAI SDK không?
Có, thông qua một điểm cuối tương thích với OpenAI: đặt base_url thành /v1 của cổng kết nối, dùng khóa API của cổng kết nối và ID mô hình Claude như claude-sonnet-5. Truyền theo luồng và gọi hàm hoạt động theo định dạng OpenAI.
Tôi dùng URL cơ sở nào cho Claude trong OpenAI SDK?
URL của cổng kết nối kết thúc bằng /v1, ví dụ: https://aiprimetech.io/v1. SDK sẽ thêm /chat/completions.
Gọi hàm có hoạt động với Claude thông qua định dạng OpenAI không?
Có. Truyền tools theo định dạng OpenAI; Claude trả về tool_calls với finish_reason là tool_calls, và bạn phản hồi bằng thông điệp tool như bình thường.
Khi nào tôi nên dùng API gốc của Anthropic?
Khi bạn cần chỉ định rõ bộ nhớ đệm prompt, các khối tư duy giữa các lượt, đầu vào PDF hoặc trích dẫn. Những tính năng này thuộc định dạng Messages của Anthropic.
Bắt đầu sử dụng Claude chỉ trong vài phút

Lấy khóa API — không cần tài khoản Anthropic hay đăng ký danh sách chờ.

Lấy khóa API của bạn

AI Prime Tech là một cổng API độc lập. AI Prime Tech không liên kết với, không được Anthropic chứng thực và không phải là đại lý bán lại của Anthropic. Claude và các tên mô hình liên quan là nhãn hiệu của chủ sở hữu tương ứng.

Các hướng dẫn khác về Claude API

Cách lấy khóa Claude APIGiải thích giá API ClaudeCách tiết kiệm nhất để sử dụng Claude APICursor không giới hạn với Claude APITruy cập Claude Code không giới hạnCổng Claude API so với truy cập trực tiếp AnthropicGiải thích các mô hình Claude: so sánh Claude Opus, Sonnet, Haiku và Fable — tất cả mô hình API Claude, tên mô hình Anthropic và giá (2026)Thanh toán Claude API bằng tiền mã hóaTruy cập Claude API không cần vào danh sách chờCách giảm lượng token sử dụng với ClaudeCline không giới hạn với Claude APIRoo Code không giới hạn với Claude APIClaude không giới hạn trong các IDE JetBrainsAider với Claude qua cổng API: ANTHROPIC_API_BASE, tệp cấu hình, chế độ architect và cách khắc phục lỗiClaude không giới hạn trong VS CodeCấu hình OpenCode cho Claude: thiết lập opencode.json, mô hình và các lỗi thường gặpHermes Agent với Claude qua cổng API: thiết lập nhà cung cấp tùy chỉnh, kiểm soát chi phí và cách khắc phục lỗiChạy OpenClaw không giới hạn trên ClaudeAPI tương thích với Anthropic có nghĩa là gìKhóa API Claude Code — ANTHROPIC_API_KEY: cách lấy, thiết lập và khi nào nên dùng claude setup-token thay thếChi phí API Claude Code — Giá và cách cắt giảmGiải thích các lỗi API Claude: lỗi máy chủ 500, quá tải 529, giới hạn tốc độ 429, yêu cầu không hợp lệ 400 — và cách khắc phục từng lỗiCách mua tín dụng Claude API — và vì sao tín dụng Claude tốt hơn mọi lời chào mời "mua tài khoản Claude"API Claude miễn phí: có khóa API Claude miễn phí không, và điều gì thực sự miễn phí trong 2026?Claude API so với gói thuê bao Claude Pro/Max — Nên chọn loại nàoCodex CLI với nhà cung cấp tùy chỉnh: config.toml, mô hình GPT và Claude, tiện ích mở rộng IDE và cách khắc phục lỗiKết nối Claude với n8nĐịnh tuyến LiteLLM tới ClaudeSử dụng Claude trong Kilo CodeGitHub Copilot Chat với Claude qua cổng API: thiết lập Custom Endpoint, chế độ tác tử và cách khắc phục lỗiKết nối Zed với Claude qua cổng APIKết nối Cherry Studio với ClaudeChatAnthropic trong LangChain: nhập, base_url, truyền dữ liệu dạng luồng, công cụ và lỗiSDK Python của Anthropic: cài đặt, thiết lập base_url, truyền dữ liệu dạng luồng và xử lý lỗiClaude với Vercel AI SDK: baseURL của createAnthropic, truyền dữ liệu dạng luồng và cách khắc phục lỗiChạy Factory Droid với ClaudeGiải thích API của Claude CodeTích hợp API Claude vào ứng dụng của bạnCách sử dụng Claude không giới hạn — và vì sao không có "Claude Code bẻ khóa"