رفتن به محتوا
SDKها

SDKها

هر SDK از OpenAI یا Anthropic بدون تنظیم اضافه کار می‌کند.

Shannon فرمت‌های سیمی OpenAI و Anthropic را می‌فهمد، پس SDKهای رسمی هر دو را همان‌طور که هستند به کار می‌برید. سه مقدار را در کلاینت عوض می‌کنید: base URL، کلید API و شناسه مدل. بقیه کد شما همان می‌ماند.

چه چیزی را تنظیم کنید

تنظیم SDKهای OpenAI SDKهای Anthropic
Base URL https://api.shannon-ai.com/v1 https://api.shannon-ai.com
کلید API کلید Shannon شما. SDK آن را به‌صورت Authorization: Bearer می‌فرستد. کلید Shannon شما. SDK آن را به‌صورت x-api-key می‌فرستد.
مدل یک شناسه مدل منتشرشده، برای مثال shannon-3. یک شناسه مدل منتشرشده، برای مثال shannon-1.6-lite.
endpointهایی که به آن‌ها می‌رسد /v1/chat/completions، /v1/responses، /v1/models /v1/messages، /v1/messages/count_tokens
متغیرهای محیطی OPENAI_API_KEY و OPENAI_BASE_URL، که SDKهای Python و JavaScript وقتی مقداری نمی‌دهید می‌خوانند. ANTHROPIC_API_KEY و ANTHROPIC_BASE_URL، که SDKهای Python و TypeScript وقتی مقداری نمی‌دهید می‌خوانند.

دو base URL به اندازه /v1 فرق دارند: SDK مربوط به OpenAI /chat/completions را به base URL خود اضافه می‌کند و SDK مربوط به Anthropic /v1/messages را. نام مدلی که Shannon منتشر نکرده با 400 و unknown model پاسخ داده می‌شود. مدل‌ها و قیمت‌ها

کلید شما در صفحه «کلیدها و مصرف» است. کلیدها و مصرف

SDKهای OpenAI

SDKهای رسمی OpenAI POST /v1/chat/completions و POST /v1/responses را فراخوانی می‌کنند. هر نمونه یک پیام کاربر می‌فرستد و پاسخ را چاپ می‌کند.

# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
print(response.choices[0].message.content)
زبان نصب گزینه Base URL منبع
Python pip install openai base_url openai/openai-python
JavaScript / TypeScript npm install openai baseURL openai/openai-node
Go go get github.com/openai/openai-go/v3 option.WithBaseURL openai/openai-go
Java com.openai:openai-java baseUrl openai/openai-java
.NET dotnet add package OpenAI OpenAIClientOptions.Endpoint openai/openai-dotnet

هر فیلد این دو endpoint در صفحه‌های خودشان توضیح داده شده است. Chat Completions Responses API

SDKهای Anthropic

SDKهای رسمی Anthropic POST /v1/messages را فراخوانی می‌کنند. آن‌ها در هر فراخوانی max_tokens را الزامی می‌کنند، پس نمونه‌ها از shannon-1.6-lite استفاده می‌کنند که آن را اعمال می‌کند. هر نمونه بلوک‌های متنی پاسخ را چاپ می‌کند.

# pip install anthropic
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-1.6-lite",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
for block in message.content:
    if block.type == "text":
        print(block.text)
زبان نصب گزینه Base URL منبع
Python pip install anthropic base_url anthropics/anthropic-sdk-python
TypeScript npm install @anthropic-ai/sdk baseURL anthropics/anthropic-sdk-typescript
Go go get github.com/anthropics/anthropic-sdk-go option.WithBaseURL anthropics/anthropic-sdk-go
Java com.anthropic:anthropic-java baseUrl anthropics/anthropic-sdk-java

فرمت Messages و تفاوت‌هایش در صفحه سازگاری با Anthropic است. فرمت Anthropic

SDKها به چه چیزی می‌توانند تکیه کنند

  • فیلد درخواستی که API از آن استفاده نمی‌کند پذیرفته می‌شود. فیلدی که API می‌شناسد و با نوع نادرست فرستاده شود با 422 پاسخ داده می‌شود.
  • هدرهای نسخه و بتا که SDKها اضافه می‌کنند (anthropic-version، anthropic-beta، openai-beta) پذیرفته می‌شوند. هیچ‌کدام الزامی نیست.
  • model در پاسخ شناسه منتشرشده است، پس می‌توانید آن را همان‌طور که هست پس بفرستید.
  • روی /v1/messages پاسخ می‌تواند با بلوک thinking شروع شود. به‌جای برداشتن بلوک اول، بلوک‌هایی از نوع text را بخوانید.
  • Streaming از طریق ابزارهای کمکی stream خود SDK کار می‌کند. usage در پایان هر stream می‌رسد.
  • هر پاسخ هدر x-request-id دارد. x-request-id خودتان را بفرستید تا همان مقدار برگردد.

SDKهای جامعه

کلاینت‌هایی که دیگران برای API مربوط به OpenAI نوشته‌اند به همین شکل کار می‌کنند: base URL را همراه /v1، کلید خود و شناسه مدل Shannon را به کلاینت بدهید. این‌ها را نویسندگانشان نگهداری می‌کنند، نه Shannon.

زبان نصب کلاینت
Go go get github.com/sashabaranov/go-openai sashabaranov/go-openai
Ruby gem install ruby-openai alexrudall/ruby-openai
PHP composer require openai-php/client openai-php/client
Rust cargo add async-openai 64bit/async-openai

بدون SDK

به SDK نیازی ندارید. هر کلاینت HTTP که بتواند JSON بفرستد کار می‌کند:

  • POST با بدنه JSON و هدر Content-Type: application/json. بدون آن درخواست با 415 پاسخ داده می‌شود.
  • کلید شما در Authorization: Bearer <key> یا در x-api-key: <key>. هر دو روی هر endpoint کار می‌کنند.
  • بدنه تا 32 MiB.
  • با "stream": true پاسخ یک stream از server-sent event (text/event-stream) است. آن را خط به خط بخوانید و بافر نکنید.
  • خطا یک بدنه JSON با error.type و error.message در کنار وضعیت HTTP است.
curl https://api.shannon-ai.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "messages": [{"role": "user", "content": "Hello, Shannon!"}]
  }'

برای رویدادهای stream و انواع خطا، ببینید: استریم مدیریت خطا