सामग्रीमा जानुहोस्
छिटो सुरु

छिटो सुरु

पहिलो अनुरोध गर्नुहोस्: आफ्नो की लिनुहोस्, एउटा सन्देश पठाउनुहोस् र जवाफ पढ्नुहोस्। API ले OpenAI र Anthropic ढाँचा बोल्छ, त्यसैले तपाईंले पहिल्यै प्रयोग गरिरहेको SDK बेस URL र की बदलेपछि काम गर्छ।

1. आफ्नो की लिनुहोस्

हरेक खातामा एउटा API की हुन्छ। साइन इन गर्नुहोस्, Keys & usage खोल्नुहोस् र कपी गर्नुहोस्। की हरेक इन्डपोइन्ट र हरेक मोडलमा काम गर्छ। की र प्रयोग

2. आफ्नो क्लाइन्टलाई API तिर देखाउनुहोस्

सबै इन्डपोइन्ट एउटै बेस URL मुनि छन्। OpenAI SDK ले यसलाई अन्त्यमा /v1 सहित लिन्छ; Anthropic SDK ले बिना लिन्छ, किनकि यसले /v1/messages आफैं थप्छ।

क्लाइन्ट बेस URL
OpenAI SDK हरू र OpenAI-अनुकूल क्लाइन्टहरू https://api.shannon-ai.com/v1
Anthropic SDK हरू https://api.shannon-ai.com

तीन इन्डपोइन्टले टेक्स्ट उत्पन्न गर्छन्। तिनीहरू उही मोडलहरूमा पुग्छन्; तपाईंको कोडले पहिल्यै प्रयोग गरिरहेको ढाँचाको इन्डपोइन्ट छान्नुहोस्।

इन्डपोइन्ट ढाँचा
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. पहिलो अनुरोध पठाउनुहोस्

Chat Completions इन्डपोइन्टमा shannon-3 लाई एउटा user सन्देश पठाउनुहोस्। 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 हेडर चाहिन्छ। फिल्डहरूको पूरा सूची इन्डपोइन्ट पेजमा छ। 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 जवाफ। जवाफमा tool_calls हुँदा यो null हुन सक्छ।
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 मा छ। सीमा र ब्यालेन्स
  • हरेक जवाफ, त्रुटि र स्ट्रिमसमेत, मा 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)

स्ट्रिमको हरेक फ्रेम 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"
स्ट्रिमको अन्त्य: data: [DONE] लाइन।
  • जवाफको स्टेटस 200 र content-type: text/event-stream हुन्छ। हरेक फ्रेम data: <json> लाइन हो जसपछि खाली लाइन आउँछ।
  • : ping लाइन हरेक 15 सेकेन्डमा आउँछ। यो कनेक्सन खुला राख्ने कमेन्ट हो; SSE क्लाइन्टहरूले यसलाई छोड्छन्।
  • स्ट्रिम खुलेपछिको असफलता data: {"error": {…}} फ्रेमका रूपमा आउँछ। स्टेटस 200 नै रहन्छ, त्यसैले फ्रेमहरू जाँच्नुहोस्।

स्ट्रिमिङ

कल असफल भए

त्रुटि type र message बोक्ने error भएको JSON अब्जेक्ट हो। पहिलो कलले प्रायः भेट्ने जवाफहरू यी हुन्।

स्थिति प्रकार सन्देश यसको अर्थ
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 होइन। Models & pricing को id प्रयोग गर्नुहोस्।
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 — तपाईंले कल गरेको इन्डपोइन्टका हरेक अनुरोध फिल्ड, जवाफ फिल्ड र स्ट्रिम इभेन्ट।
  • स्ट्रिमिङ — स्ट्रिमका फ्रेम, कीप-अलाइभ लाइन र स्ट्रिमभित्रका त्रुटिहरू।
  • फङ्क्शन कलिङ — मोडललाई तपाईंका फङ्सन कल गर्न दिनुहोस्।
  • सीमा र ब्यालेन्स — अनुरोधले के छुट्याउँछ र कति लाग्छ, र कति अनुरोध पठाउन सकिन्छ।
  • API प्लेग्राउन्ड — आफ्नो कीसहित ब्राउजरमा अनुरोधहरू प्रयास गर्नुहोस्।