გადასვლა შინაარსზე
სწრაფი დაწყება

სწრაფი დაწყება

გააგზავნეთ პირველი მოთხოვნა: აიღეთ გასაღები, გააგზავნეთ ერთი შეტყობინება და წაიკითხეთ პასუხი. API OpenAI-ისა და Anthropic-ის ფორმატებს ფლობს, ამიტომ SDK, რომელსაც უკვე იყენებთ, base URL-ისა და გასაღების შეცვლის შემდეგ იმუშავებს.

1. აიღეთ გასაღები

ყველა ანგარიშს ერთი API გასაღები აქვს. შედით, გახსენით Keys & usage და დააკოპირეთ. გასაღები მუშაობს ყველა endpoint-ზე და ყველა მოდელზე. გასაღებები და გამოყენება

2. მიუთითეთ კლიენტს API

ყველა endpoint ერთ base URL-ის ქვეშ არის. OpenAI SDK მას იღებს ბოლოში /v1-ით; Anthropic SDK კი მის გარეშე, რადგან /v1/messages-ს თავად ამატებს.

კლიენტი Base URL
OpenAI SDK-ები და OpenAI-თან თავსებადი კლიენტები https://api.shannon-ai.com/v1
Anthropic SDK-ები https://api.shannon-ai.com

ტექსტს სამი endpoint იძლევა. ისინი ერთსა და იმავე მოდელებს აღწევენ; აირჩიეთ ის, რომლის ფორმატსაც თქვენი კოდი უკვე იყენებს.

Endpoint ფორმატი
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. გააგზავნეთ პირველი მოთხოვნა

გააგზავნეთ ერთი user შეტყობინება shannon-3-ზე Chat Completions endpoint-ზე. YOUR_API_KEY შეცვალეთ თქვენი გასაღებით.

POST https://api.shannon-ai.com/v1/chat/completions

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!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)
ველი ტიპი ნაგულისხმევი აღწერა
model string პასუხის გამცემი მოდელის id. id-ები ჩამოთვლილია გვერდზე Models & pricing.
messages array საუბარი აქამდე: ობიექტები role-ითა და content-ით. ბოლო user შეტყობინება არის პრომპტი. სავალდებულოა.
max_tokens integer 4096 მოთხოვნის გამოტანის ბიუჯეტი, 1-დან 65,536-მდე. მოთხოვნა ამ რაოდენობას თქვენი ბალანსიდან რეზერვავს, ხოლო ჩამოგეჭრებათ იმდენი, რამდენიც რეალურად გამოიყენა.
stream boolean false true პასუხს ნაწილ-ნაწილ აგზავნის, როგორც იწერება.

მოთხოვნის სხეული JSON-ია და სჭირდება სათაური Content-Type: application/json. ველების სრული სია endpoint-ის გვერდზეა. Chat Completions

პასუხი

გამოძახება stream-ის გარეშე ერთ JSON ობიექტს აბრუნებს, როცა პასუხი სრულია. ქვემოთ მოცემული ტექსტები და რიცხვები მაგალითებია.

200 JSON
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What would you like to work on?",
        "reasoning_content": "A greeting. A short, friendly reply fits."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1386,
    "completion_tokens": 74,
    "total_tokens": 1460
  }
}
ველი ტიპი აღწერა
id string chatcmpl-, რომელსაც მოჰყვება 32 თექვსმეტობითი სიმბოლო.
object string ყოველთვის chat.completion.
created integer პასუხის დრო Unix წამებში.
model string პასუხის გამცემი მოდელის გამოქვეყნებული id, მაშინაც, როცა ალიასი ან სხვა დაწერილობა გაგზავნეთ.
choices array ყოველთვის ერთი ელემენტია, index 0-ით.
choices[0].message.role string ყოველთვის assistant.
choices[0].message.content string | null პასუხი. შეიძლება იყოს null, როცა პასუხი tool_calls-ს შეიცავს.
choices[0].message.reasoning_content string | null მოდელის მსჯელობა პასუხამდე, ან null, თუ ის არ არის.
choices[0].message.tool_calls array გვხვდება მხოლოდ მაშინ, როცა მოდელი თქვენ მიერ გამოცხადებულ ერთ-ერთ ინსტრუმენტს იძახებს.
choices[0].finish_reason string stop პასუხისთვის, tool_calls როცა მოდელი ინსტრუმენტს იძახებს.
usage.prompt_tokens integer ტოკენები, რომლებიც მოდელმა ამ პასუხისთვის წაიკითხა. shannon-2-*-სა და Shannon 3-ის ოჯახზე ეს შეიძლება მეტი იყოს, ვიდრე თქვენ მიერ გაგზავნილი ტექსტი.
usage.completion_tokens integer ტოკენები, რომლებიც მოდელმა დაწერა.
usage.total_tokens integer ჯამი. Shannon-ის მოდელის ღირებულება ამ რიცხვიდან გამოითვლება.
  • usage შეიცავს ტოკენების რაოდენობას და არა ფულს. რა ჩამოგეჭრათ ბალანსიდან, ნაჩვენებია თითოეულ მოთხოვნაზე გვერდზე Keys & usage; როგორ გამოითვლება, აღწერილია გვერდზე Limits and balance. ლიმიტები და ბალანსი
  • ყოველ პასუხს, შეცდომასა და stream-საც, აქვს სათაური x-request-id. თუ თქვენს მოთხოვნას აქვს სათაური x-request-id, მისი მნიშვნელობა უკან დაბრუნდება; სხვა შემთხვევაში მნიშვნელობა 12 თექვსმეტობითი სიმბოლოა. შეინახეთ ის თქვენს ლოგებში: ის სწორედ ამ ერთ მოთხოვნას ასახელებს.

იგივე გამოძახება სტრიმის სახით

დააყენეთ stream მნიშვნელობაზე true, რომ პასუხი წერისას წაიკითხოთ. მოთხოვნაში დანარჩენი ყველაფერი იგივე რჩება.

from openai import OpenAI

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

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024,
    stream=True
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

stream-ის ყოველი ფრეიმი არის ერთი ხაზი, რომელიც იწყება data:-თი და შეიცავს JSON ობიექტს. ერთი ფრეიმი, დაბეჭდილი რამდენიმე ხაზად:

ერთი ფრეიმი
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
ფრეიმები, თანმიმდევრობით delta finish_reason
სანამ მოდელი მსჯელობს. ნულიდან მეტი ფრეიმი. {"reasoning_content": "…"} null
პასუხი, ნაწილ-ნაწილ. ნულიდან მეტი ფრეიმი. {"content": "…"} null
ბოლო JSON ფრეიმი. ის usage-საც შეიცავს; მისი მოთხოვნა საჭირო არ არის. {} "stop"
stream-ის დასასრული: ხაზი data: [DONE].
  • პასუხს აქვს სტატუსი 200 და content-type: text/event-stream. ყოველი ფრეიმი არის ხაზი data: <json>, რომელსაც ცარიელი ხაზი მოჰყვება.
  • ხაზი : ping ყოველ 15 წამში ერთხელ მოდის. ეს კომენტარია, რომელიც კავშირს ღიად ინარჩუნებს; SSE კლიენტები მას გამოტოვებენ.
  • წარუმატებლობა stream-ის გახსნის შემდეგ მოდის ფრეიმის სახით data: {"error": {…}}. სტატუსი რჩება 200, ამიტომ შეამოწმეთ ფრეიმები.

სტრიმინგი

თუ გამოძახება ვერ შესრულდა

შეცდომა არის JSON ობიექტი ველით error, რომელიც შეიცავს type-სა და message-ს. ეს არის პასუხები, რომლებსაც პირველი გამოძახება ყველაზე ხშირად აწყდება.

სტატუსი ტიპი შეტყობინება რას ნიშნავს
401 authentication_error Missing authentication API-მდე გასაღები არ მისულა. გაგზავნეთ Authorization: Bearer, რომელსაც თქვენი გასაღები მოჰყვება.
401 authentication_error Invalid API key გასაღები არც ერთი ანგარიშის მიმდინარე გასაღები არ არის. ისევ დააკოპირეთ ის გვერდიდან Keys & usage.
400 invalid_request_error unknown model: <id> model გამოქვეყნებული id არ არის. გამოიყენეთ id გვერდიდან Models & pricing.
422 invalid_request_error Failed to deserialize the JSON body into the target type… ველს აქვს არასწორი JSON ტიპი, ან messages აკლია.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan მოთხოვნის გამოტანის ბიუჯეტი თქვენს ბალანსში არ ეტევა.

შეცდომების დამუშავება

სად გადავიდეთ შემდეგ

  • მოდელები და ფასები — აირჩიეთ მოდელი: id-ები, კონტექსტის ფანჯრები და ფასები.
  • Chat Completions — გამოძახებული endpoint-ის ყველა მოთხოვნის ველი, პასუხის ველი და stream-ის მოვლენა.
  • სტრიმინგი — stream-ის ფრეიმები, keep-alive ხაზები და შეცდომები stream-ის შიგნით.
  • ფუნქციის გამოძახება — მიეცით მოდელს საშუალება, თქვენი ფუნქციები გამოიძახოს.
  • ლიმიტები და ბალანსი — რას რეზერვავს და რა ღირს მოთხოვნა და რამდენი მოთხოვნის გაგზავნა შეგიძლიათ.
  • API Playground — სცადეთ მოთხოვნები ბრაუზერში თქვენი გასაღებით.