Trang chủ / Tìm hiểu / Anthropic Python SDK: cài đặt, thiết lập base_url, truyền luồng và xử lý lỗi
Claude trong Python. Một đường cong hình rắn thanh thoát như dải ruy băng, uốn quanh một trang mã và nối với một cổng cắm API nhỏ.

SDK 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ỗi

Thư mục anthropic là gói ứng dụng khách Python chính thức của Anthropic dành cho Claude API. Gói này xử lý xác thực, thử lại, truyền luồng và các lỗi được định kiểu, đồng thời hoạt động mà không cần sửa đổi với mọi điểm cuối tương thích với Anthropic: thiết lập base_url (hoặc ANTHROPIC_BASE_URL) và phần mã còn lại của bạn giữ nguyên.

Cài đặt

cửa sổ dòng lệnh
pip install anthropic

Các bản phát hành 1.x chạy trên httpx2 và yêu cầu Python 3.10 trở lên. Nếu bạn truyền ứng dụng khách HTTP riêng, hãy dùng DefaultHttpxClient của SDK để giữ nguyên thời gian chờ và giới hạn kết nối mặc định.

Tạo ứng dụng khách

app.py
import anthropic

client = anthropic.Anthropic(
    api_key="your_key",   # default: ANTHROPIC_API_KEY
    base_url="https://aiprimetech.io",    # default: ANTHROPIC_BASE_URL, else https://api.anthropic.com
)

base_url là địa chỉ gốc của máy chủ. SDK tự nối thêm /v1/messages , vì vậy https://aiprimetech.io/v1 sẽ tạo ra /v1/v1/messages và một 404 page not found. Khi cả hai biến đều được thiết lập trong môi trường, anthropic.Anthropic() không cần bất kỳ đối số nào:

cửa sổ dòng lệnh
export ANTHROPIC_API_KEY=your_key
export ANTHROPIC_BASE_URL=https://aiprimetech.io

Gửi tin nhắn

app.py
message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarise TCP slow start in two sentences."}],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

print(message.usage.input_tokens, message.usage.output_tokens)
print(message._request_id)   # log this with any failure report

content là danh sách các khối (văn bản, suy nghĩ, sử dụng công cụ), vì vậy hãy kiểm tra block.type thay vì đọc content[0].text mà không kiểm tra.

Truyền luồng phản hồi

stream.py
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Write a short story about a lighthouse."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

Hãy dùng truyền luồng cho mọi yêu cầu có đầu vào dài, đầu ra dài hoặc giá trị lớn của max_tokens: một yêu cầu không truyền luồng phải hoàn tất trong thời gian chờ, còn luồng thì không. messages.create(..., stream=True) cung cấp trình lặp sự kiện thô nếu bạn không cần tiện ích hỗ trợ.

Ứng dụng khách bất đồng bộ

async_app.py
import asyncio, anthropic

client = anthropic.AsyncAnthropic(base_url="https://aiprimetech.io")
limit = asyncio.Semaphore(3)   # stay within your key's concurrency

async def ask(question: str) -> str:
    async with limit:
        msg = await client.messages.create(
            model="claude-haiku-4-5",
            max_tokens=512,
            messages=[{"role": "user", "content": question}],
        )
        return next(b.text for b in msg.content if b.type == "text")

async def main():
    answers = await asyncio.gather(*(ask(q) for q in ["What is DNS?", "What is BGP?"]))
    print(answers)

asyncio.run(main())

Semaphore rất quan trọng. Gửi hàng trăm yêu cầu cùng lúc bằng asyncio.gather là nguyên nhân phổ biến nhất gây ra lỗi Concurrency limit exceeded mà chúng tôi gặp từ các ứng dụng khách Python.

Thời gian chờ và thử lại

Mặc định: thời gian chờ 10 phút cho mỗi yêu cầu và 2 lần thử lại tự động với thời gian chờ tăng theo cấp số nhân. SDK thử lại khi gặp lỗi kết nối, 408, 409, 429 và phản hồi 5xx. Vì các yêu cầu hết thời gian chờ cũng được thử lại, tổng thời gian thực tế trong trường hợp xấu nhất bằng thời gian chờ nhân với số lần thực hiện.

app.py
client = anthropic.Anthropic(base_url="https://aiprimetech.io", timeout=60.0, max_retries=4)

# override for one call only
client.with_options(timeout=300.0).messages.create(
    model="claude-opus-5-5",
    max_tokens=4000,
    messages=[{"role": "user", "content": "Review this design doc..."}],
)

Xử lý lỗi

Trạng thái Ngoại lệ Thử lại?
400anthropic.BadRequestErrorKhông: sửa yêu cầu
401anthropic.AuthenticationErrorKhông: khóa sai hoặc bị thiếu
403anthropic.PermissionDeniedErrorKhông
404anthropic.NotFoundErrorKhông: ID mô hình hoặc URL
429anthropic.RateLimitErrorCó, sau khi tạm chờ
5xx, bao gồm 529 quá tảianthropic.InternalServerErrorCó
Lỗi mạnganthropic.APIConnectionErrorCó
Hết thời gian chờanthropic.APITimeoutErrorCó, hoặc dùng truyền luồng
errors.py
try:
    message = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
                                      messages=[{"role": "user", "content": "Hi"}])
except anthropic.NotFoundError as e:
    print("Bad model ID or URL:", e.message)
except anthropic.RateLimitError as e:
    print("Rate limited, retry after", e.response.headers.get("retry-after"))
except anthropic.APIStatusError as e:
    print(e.status_code, e.type, e.message)
except anthropic.APIConnectionError:
    print("Network problem")

Bắt các lớp ngoại lệ cụ thể trước và APIStatusError sau cùng; một khối bắt tổng quát except che khuất sự khác biệt giữa các lỗi nên thử lại và các lỗi cần sửa mã. e.type cung cấp chuỗi loại lỗi của API, chẳng hạn như rate_limit_error hoặc overloaded_error.

ID 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ỏ.

client.models.list() trả về các mô hình mà một điểm cuối cung cấp, để bạn có thể kiểm tra ID trước khi sử dụng. Dùng ID đúng như được ghi: không có hậu tố ngày tháng.

Khắc phục sự cố trên cổng API

Những gì bạn thấy Nguyên nhân Cách khắc phục
NotFoundError bằng 404 page not found/v1 trong base_urlDùng địa chỉ gốc của máy chủ
AuthenticationErrorKhóa chưa được thiết lập trong tiến trình hoặc được dán kèm khoảng trắngIn ra len(os.environ["ANTHROPIC_API_KEY"])
RateLimitError: Concurrency limit exceeded for userQuá nhiều yêu cầu đang được xử lý đồng thờiMột asyncio.Semaphore như trên
APITimeoutError với các tác vụ dàiYêu cầu không truyền luồng chạy quá thời gian chờDùng truyền luồng hoặc tăng timeout
InternalServerError: No available accountsNăng lực xử lý tạm thời của hệ thống phía trênĐể SDK thử lại; tăng max_retries
Insufficient account balanceSố dư đã hếtNạp tiền

Tìm hiểu thêm về lỗi phía mô hình: xem hướng dẫn về lỗi Claude API.

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

Làm thế nào để cài đặt Anthropic Python SDK?
pip install anthropic. Phiên bản 1.x yêu cầu Python 3.10 trở lên.
Làm thế nào để thiết lập URL cơ sở tùy chỉnh trong Anthropic Python SDK?
Truyền base_url vào anthropic.Anthropic() hoặc thiết lập ANTHROPIC_BASE_URL. Dùng địa chỉ gốc của máy chủ; SDK nối thêm /v1/messages.
Thời gian chờ và số lần thử lại mặc định là bao nhiêu?
10 phút cho mỗi yêu cầu và 2 lần thử lại với thời gian chờ tăng theo cấp số nhân, áp dụng cho lỗi kết nối, 408, 409, 429 và 5xx.
Làm thế nào để truyền luồng bằng Python SDK?
Dùng with client.messages.stream(...) as stream: và lặp qua stream.text_stream; stream.get_final_message() trả về tin nhắn hoàn chỉnh.
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 AnthropicSử dụng Claude qua API tương thích với OpenAIGiả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 JetBrainsSử dụng Aider không giới hạn với Claude APIClaude 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ặpChạy tác nhân Hermes không giới hạn trên ClaudeChạ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àoChạy Codex CLI trên ClaudeKết nối Claude với n8nĐịnh tuyến LiteLLM tới ClaudeSử dụng Claude trong Kilo CodeTích hợp Claude vào GitHub CopilotKế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ỗ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"