پرش به محتوا

سازگاری با Anthropic (Messages API)

SDK رسمی Anthropic و ابزارهایی مثل Claude Code را با نشانی سازگار با Anthropic به گیسو وصل کنید: قالب Messages API، نام مدل‌ها، ابزارها، پاسخ جریانی و خطاها.

بازبینی: ۱۵ مهر ۱۴۰۵ ۵ دقیقه مطالعه

گیسو علاوه بر قالب OpenAI، Messages API شرکت Anthropic را هم می‌پذیرد. پس Claude Code و SDK رسمی Anthropic بدون هیچ تغییری در کد، فقط با عوض کردن نشانی پایه و کلید، به گیسو وصل می‌شوند. درخواست‌ها از همان مسیر گفت‌وگو عبور می‌کنند: همان مدل‌ها، همان محدودیت‌ها و همان صورتحساب.

POSThttps://gisoo.pro/api/v1/messages
نشانی پایه برای SDKهای Anthropic

SDKهای Anthropic و Claude Code خودشان /v1/messages را به نشانی اضافه می‌کنند؛ پس نشانی پایه را https://gisoo.pro/api بگذارید، بدون /v1.

Claude Code

Claude Code ابزار کدنویسی Anthropic است و با همین endpoint کار می‌کند. کوتاه‌ترین تنظیم، سه متغیر پیش از اجرای claude است. تنظیم دائمی در settings.json، همهٔ متغیرها، نام مدل‌ها، هزینه و رفع خطا در راهنمای کامل Claude Code آمده است.

برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید همان‌اند.

Shell متغیرهای محیطی
# Claude Code → Gisoo (Linux / macOS)
export ANTHROPIC_BASE_URL="https://gisoo.pro/api"
export ANTHROPIC_AUTH_TOKEN="sk-gisoo-v1-..."
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1   # no telemetry / update checks to other servers

claude

SDK رسمی Anthropic

برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید همان‌اند.

# pip install anthropic
import os
import anthropic

client = anthropic.Anthropic(
    base_url="https://gisoo.pro/api",                    # not .../v1 — the SDK adds /v1/messages
    api_key=os.environ["GISOO_API_KEY"],
)

message = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="Answer in Persian.",
    messages=[{"role": "user", "content": "Explain Big-O notation in three lines."}],
)
print(message.content[0].text)
print(message.usage)
JSON پاسخ
{
  "id": "msg_4b1f0c9a7e2d8f3a6c5b0e1d",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-5",
  "content": [{ "type": "text", "text": "…" }],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": { "input_tokens": 12, "output_tokens": 48, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0 }
}

نام مدل‌ها

  • نام‌های Anthropic، با تاریخ یا بدون تاریخ، به مدل Claude همان نسخه در کاتالوگ گیسو می‌رسند: claude-sonnet-4-5 و claude-sonnet-4-5-20250929 هر دو openrouter/anthropic/claude-sonnet-4.5 را صدا می‌زنند.
  • شناسهٔ کامل کاتالوگ هم کار می‌کند: openrouter/anthropic/claude-sonnet-4.5.
  • هر مدل متنی دیگر گیسو را هم می‌توانید با همین قالب بخواهید؛ مثلاً gpt-4.1 یا gemini-3.6-flash. پاسخ همان قالب Anthropic را دارد.
  • فیلد model در پاسخ همان نامی است که فرستاده‌اید.

چه چیزهایی کار می‌کند

قابلیتوضعیت
متن، system (رشته یا آرایهٔ بلوک‌ها)، stop_sequences، temperature، top_pپشتیبانی می‌شود.
پاسخ جریانی (stream: true)همان رویدادهای Anthropic: message_start، content_block_*، message_delta، message_stop و ping.
ابزارها (tools، tool_use، tool_result، tool_choice)پشتیبانی می‌شود؛ ابزارهایی که input_schema دارند.
تصویر (base64 یا نشانی)برای مدل‌هایی که تصویر می‌خوانند.
کش پرامپت (cache_control)برای Claude حفظ می‌شود و توکن‌های کش‌شده ارزان‌تر حساب می‌شوند؛ برای مدل‌های سازنده‌های دیگر نادیده گرفته می‌شود.
POST /messages/count_tokensبرآورد تعداد توکن ورودی، بدون هزینه. عدد برآوردی است، نه شمارش دقیق سازنده.
فکر کردن طولانی (thinking)نادیده گرفته می‌شود و پاسخ بدون آن می‌آید.
ابزارهای سمت سرور Anthropic (جست‌وجوی وب، اجرای کد) و MCP سمت سرورکنار گذاشته می‌شوند.
Message Batches و Files APIدر گیسو نیستند.

خطاها

خطاها در قالب Anthropic برمی‌گردند تا SDK و Claude Code آن‌ها را بشناسند. کد دقیق گیسو هم در error.code می‌آید (فهرست در خطاها):

JSON پاسخ خطا
{
  "type": "error",
  "error": { "type": "billing_error", "message": "اعتبار کافی نیست. …", "code": "insufficient_credit" }
}
وضعیتerror.type
۴۰۰invalid_request_error
۴۰۱authentication_error
۴۰۲billing_error
۴۰۳permission_error
۴۰۴not_found_error
۴۱۳request_too_large
۴۲۹rate_limit_error
۵۰۲api_error
۵۰۳overloaded_error

شناسهٔ هر درخواست در هدر request-id (و X-Request-Id) می‌آید و با GET /requests/{id} هزینه‌اش را می‌دهد.

هزینه و محدودیت

هر درخواست به /messages دقیقاً مثل یک درخواست گفت‌وگو حساب می‌شود: قیمت مدل در GET /models، مصرف واقعی گزارش‌شده و همان محدودیت‌های کلید (۶۰ درخواست در دقیقه و ۸ درخواست همزمان به‌طور پیش‌فرض). اگر Claude Code چند کار را موازی اجرا کند و به rate_limit_error خورد، با تیکت سقف بیشتری بخواهید.

پاسخ پرسشتان را پیدا نکردید؟

شناسهٔ درخواست (هدر X-Request-Id) را با پرسشتان در تیکت بفرستید تا دقیق بررسی کنیم.

تیکت پشتیبانی