OneProvider

Python SDK

بستهٔ anthropic یا openai در Python را فقط با تغییر base_url با OneProvider به کار ببرید. کلاینت sync و async، استریم، استفاده از ابزار و تلاش مجدد.

دو مسیر Python — anthropic برای کد بومی Claude و openai برای مهاجرت‌ها. هر دو با تغییر یک base_url کار می‌کنند.

همهٔ مدل‌ها، قابلیت‌ها و قیمت‌ها فهرست مستندات برای عامل‌های هوش مصنوعی: https://oneprovider.dev/docs/llms.txt سیستم‌عامل پیش از شروع: یک کلید از حساب کاربری حساب کاربری خود را باز کنید: ربات Telegram به نام @oneprovider_robot (بخش «حساب کاربری») یا app.oneprovider.dev . «صدور کلید» را بزنید، یک نام (مثلاً نام همین کلاینت) و سقف مصرف بدهید و کلید را کپی کنید. شارژ موجودی هم همان‌جاست. اطلاعات بیشتر دربارهٔ حساب کاربری و کلیدها .

نصب

bash
pip3 install anthropic
# or, for OpenAI-style code:
pip3 install openai
# In a venv (recommended):
# python3 -m venv .venv && source .venv/bin/activate
# pip install anthropic openai

Anthropic SDK

python
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev",
)
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.content[0].text)

سازگار با OpenAI

python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.choices[0].message.content)

کلاینت ناهمزمان

python
import asyncio
from anthropic import AsyncAnthropic
async def main():
client = AsyncAnthropic(base_url="https://api.oneprovider.dev")
resp = await client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi async."}],
)
print(resp.content[0].text)
asyncio.run(main())

استریم

python
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Tell me a haiku."}],
) as stream:
for chunk in stream.text_stream:
print(chunk, end="", flush=True)

استفاده از ابزار

python
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Frankfurt?"}],
)
# resp.stop_reason == "tool_use"
# Inspect resp.content for tool_use blocks.

تلاش مجدد و مدیریت خطا

python
from anthropic import APIStatusError
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=0.5, min=0.5, max=4),
retry_error_cls=APIStatusError,
)
def call():
return client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi."}],
)
کلید را در کد ننویسید کلید را همیشه از یک متغیر محیطی یا مدیر راز بخوانید. کلیدی که در کد نوشته شده دیر یا زود به مخزن نسخه‌ها نشت می‌کند.

کدام مدل را انتخاب کنیم

شناسه را در model بدهید. claude-sonnet-5-5 پیش‌فرض بیشتر کدهاست، claude-haiku-5-5 برای فراخوانی‌های سریع و پرحجم و claude-opus-5-5 برای استدلال دشوار. فرم سازگار با OpenAI شناسه‌های GPT مثل gpt-6.1-terra را هم می‌پذیرد. فرم Anthropic را با https://api.oneprovider.dev و فرم OpenAI را با https://api.oneprovider.dev/v1 به کار ببرید. شناسه‌ها در صفحهٔ مدل‌ها است.

خطاهای رایج و راه‌حل‌ها

404 NotFoundError

SDK Anthropic: base_url="https://api.oneprovider.dev" بدون /v1. SDK OpenAI: base_url="https://api.oneprovider.dev/v1" همراه با /v1.

401 AuthenticationError

متغیر محیطی خالی است یا خط جدید انتهایی دارد. پیش از فراخوانی len(os.environ["ONEPROVIDER_KEY"]) را چاپ کنید.

429 RateLimitError

پیام را بررسی کنید: «Insufficient balance» یعنی شارژ کنید (تلاش دوباره نکنید)، هر 429 دیگری محدودیت نرخ است، پس عقب بکشید و Retry-After را رعایت کنید.

APIConnectionError یا تایم‌اوت خواندن

VPN یا متغیرهای پروکسی (HTTPS_PROXY) را خاموش کنید و برای پاسخ‌های طولانی از استریم استفاده کنید: درخواست غیراستریمی باید حداکثر ظرف 6 دقیقه شروع شود.

400 دربارهٔ max_tokens

SDK Anthropic در هر درخواست max_tokens را لازم دارد.

پرسش‌های متداول

می‌توانم SDKهای رسمی را نگه دارم؟

بله. فقط کلید و base_url عوض می‌شود، به مهاجرت از Anthropic و مهاجرت از OpenAI نگاه کنید.

استریم کار می‌کند؟

بله، با هر دو SDK؛ به استریم نگاه کنید.

کلید را کجا نگه دارم؟

در یک متغیر محیطی، هرگز در مخزن.

پاسخ‌های سریع

از کدام base URL استفاده کنم؟

Claude Code و SDKهای Anthropic از https://api.oneprovider.dev استفاده می‌کنند. SDKهای OpenAI و کلاینت‌های سازگار با OpenAI از https://api.oneprovider.dev/v1 استفاده می‌کنند. یک کلید پشت هر دو آدرس کار می‌کند؛ فهرست مدل‌ها در صفحهٔ مدل‌ها و نرخ‌ها در صفحهٔ قیمت‌ها است.

چگونه احراز هویت کنم؟

کلید خام sk-… را در x-api-key یا Authorization: Bearer بفرستید: یکی از این دو، نه هر دو. کلید را در یک متغیر محیطی نگه دارید، نه در فایلی که commit می‌شود. اطلاعات بیشتر دربارهٔ احراز هویت .

کلید را از کجا بگیرم؟

حساب کاربری خود را در ربات Telegram به نام @oneprovider_robot یا در app.oneprovider.dev باز کنید، موجودی را شارژ کنید و «صدور کلید» را بزنید. هر کلید می‌تواند سقف مصرف مخصوص خودش را داشته باشد. حساب کاربری و کلیدهای API .

کدهای 401، 404 و 429 یعنی چه؟

401: کلید ارسال نشده، اشتباه تایپ شده یا در هدر نادرست فرستاده شده است؛ کلید را کامل و بدون گیومه و فاصله جای‌گذاری کنید. 404: معمولاً base URL نادرست است، مثلاً /v1 جا افتاده یا دوبار آمده است. 429 با پیام «Insufficient balance»: موجودی حساب کاربری یا سقف مصرف کلید تمام شده است؛ به‌جای تلاش دوباره، شارژ کنید. هر 429 دیگری محدودیت نرخ است؛ تا پایان زمان Retry-After صبر کنید. جزئیات: کدهای خطا و رفع اشکال .

چرا استریم‌ها قطع یا ریست می‌شوند؟

VPN و پروکسی‌های VLESS اغلب SSE را بافر می‌کنند یا مذاکرهٔ HTTP/2 را مختل می‌کنند. OneProvider هیچ محدودیت منطقه‌ای ندارد و استریم‌ها را بافر نمی‌کند؛ پروکسی را خاموش کنید و دوباره امتحان کنید.

اگر این‌ها کافی نبود از کجا بپرسم؟

در Telegram به @Oneproviderhelpbot پیام بدهید یا در حساب کاربری وب «پشتیبانی» را باز کنید و کد وضعیت HTTP و متن دقیق خطا را بفرستید. پشتیبانی چگونه کار می‌کند .

آخرین به‌روزرسانی: 2026-11-08 باگی پیدا کردید؟ @Oneproviderhelpbot