Source: https://aiprimetech.io/vi/learn/anthropic-python-sdk/ [Trang chủ](/vi/) / [Tìm hiểu](/vi/learn/) / Anthropic Python SDK: cài đặt, thiết lập base_url, truyền luồng và xử lý lỗi # 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ệnhSao chép ``` 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.pySao chép ``` 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ệnhSao chép ``` export ANTHROPIC_API_KEY=your_key export ANTHROPIC_BASE_URL=https://aiprimetech.io ``` ## Gửi tin nhắn app.pySao chép ``` 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.pySao chép ``` 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.pySao chép ``` 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.pySao chép ``` 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? | 400 | anthropic.BadRequestError | Không: sửa yêu cầu | 401 | anthropic.AuthenticationError | Không: khóa sai hoặc bị thiếu | 403 | anthropic.PermissionDeniedError | Không | 404 | anthropic.NotFoundError | Không: ID mô hình hoặc URL | 429 | anthropic.RateLimitError | Có, sau khi tạm chờ | 5xx, bao gồm 529 quá tải | anthropic.InternalServerError | Có | Lỗi mạng | anthropic.APIConnectionError | Có | Hết thời gian chờ | anthropic.APITimeoutError | Có, hoặc dùng truyền luồng errors.pySao chép ``` 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-5 | Lự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-5 | Suy 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-1 | Năng lực cao nhất và đắt nhất; dành cho các tác vụ khó nhất. | claude-haiku-4-5 | Rẻ 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_url | Dùng địa chỉ gốc của máy chủ | AuthenticationError | Khóa chưa được thiết lập trong tiến trình hoặc được dán kèm khoảng trắng | In ra len(os.environ["ANTHROPIC_API_KEY"]) | RateLimitError: Concurrency limit exceeded for user | Quá nhiều yêu cầu đang được xử lý đồng thời | Một asyncio.Semaphore như trên | APITimeoutError với các tác vụ dài | Yê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 accounts | Nă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 balance | Số dư đã hết | [Nạp tiền](/vi/topup/) Tìm hiểu thêm về lỗi phía mô hình: xem [hướng dẫn về lỗi Claude API](/vi/learn/claude-api-errors-troubleshooting/). ## 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](/register) 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 API](/vi/learn/how-to-get-a-claude-api-key/)[Giải thích giá API Claude](/vi/learn/claude-api-pricing-explained/)[Cách tiết kiệm nhất để sử dụng Claude API](/vi/learn/cheapest-way-to-use-claude-api/)[Cursor không giới hạn với Claude API](/learn/use-claude-api-with-cursor/)[Truy cập Claude Code không giới hạn](/vi/learn/use-claude-api-with-claude-code/)[Cổng Claude API so với truy cập trực tiếp Anthropic](/vi/learn/claude-api-vs-anthropic-direct/)[Sử dụng Claude qua API tương thích với OpenAI](/vi/learn/openai-compatible-claude-api/)[Giả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)](/vi/learn/claude-api-models-compared/)[Thanh toán Claude API bằng tiền mã hóa](/vi/learn/claude-api-with-crypto-payment/)[Truy cập Claude API không cần vào danh sách chờ](/vi/learn/claude-api-without-waitlist/)[Cách giảm lượng token sử dụng với Claude](/vi/learn/how-to-reduce-claude-token-usage/)[Cline không giới hạn với Claude API](/vi/learn/use-claude-api-with-cline/)[Roo Code không giới hạn với Claude API](/vi/learn/use-claude-api-with-roo-code/)[Claude không giới hạn trong các IDE JetBrains](/vi/learn/use-claude-api-with-jetbrains/)[Sử dụng Aider không giới hạn với Claude API](/vi/learn/use-claude-api-with-aider/)[Claude không giới hạn trong VS Code](/vi/learn/use-claude-api-with-vscode/)[Cấu hình OpenCode cho Claude: thiết lập opencode.json, mô hình và các lỗi thường gặp](/vi/learn/use-claude-api-with-opencode/)[Chạy tác nhân Hermes không giới hạn trên Claude](/vi/learn/run-hermes-agent-with-claude-api/)[Chạy OpenClaw không giới hạn trên Claude](/vi/learn/run-openclaw-with-claude-api/)[API tương thích với Anthropic có nghĩa là gì](/vi/learn/anthropic-compatible-api/)[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ế](/vi/learn/claude-code-api-key-setup/)[Chi phí API Claude Code — Giá và cách cắt giảm](/vi/learn/claude-code-api-costs/)[Giả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ỗi](/vi/learn/claude-api-errors-troubleshooting/)[Cá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"](/vi/learn/buy-claude-api-credits/)[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?](/vi/learn/claude-api-free-trial/)[Claude API so với gói thuê bao Claude Pro/Max — Nên chọn loại nào](/vi/learn/claude-api-vs-subscription/)[Chạy Codex CLI trên Claude](/vi/learn/use-claude-api-with-codex/)[Kết nối Claude với n8n](/vi/learn/use-claude-api-with-n8n/)[Định tuyến LiteLLM tới Claude](/vi/learn/use-claude-api-with-litellm/)[Sử dụng Claude trong Kilo Code](/vi/learn/use-claude-api-with-kilo-code/)[Tích hợp Claude vào GitHub Copilot](/vi/learn/use-claude-api-with-github-copilot/)[Kết nối Zed với Claude qua cổng API](/vi/learn/use-claude-api-with-zed/)[Kết nối Cherry Studio với Claude](/vi/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic trong LangChain: nhập, base_url, truyền dữ liệu dạng luồng, công cụ và lỗi](/vi/learn/use-claude-api-with-langchain/)[Claude 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ỗi](/vi/learn/use-claude-api-with-vercel-ai-sdk/)[Chạy Factory Droid với Claude](/vi/learn/use-claude-api-with-factory-droid/)[Giải thích API của Claude Code](/vi/learn/claude-code-api/)[Tích hợp API Claude vào ứng dụng của bạn](/vi/learn/claude-api-integration/)[Cách sử dụng Claude không giới hạn — và vì sao không có "Claude Code bẻ khóa"](/vi/learn/get-unlimited-claude-usage/)