मजकुराकडे जा
जलद सुरुवात

जलद सुरुवात

पहिली रिक्वेस्ट करा: तुमची की मिळवा, एक संदेश पाठवा आणि उत्तर वाचा. 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> ही ओळ आणि त्यानंतर एक रिकामी ओळ.
  • दर 15 सेकंदांनी : ping ही ओळ येते. ती कनेक्शन उघडे ठेवणारी कमेंट आहे; 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 — तुम्ही कॉल केलेल्या एंडपॉइंटचे प्रत्येक रिक्वेस्ट फील्ड, उत्तर फील्ड आणि स्ट्रीम इव्हेंट.
  • स्ट्रीमिंग — स्ट्रीमच्या फ्रेम्स, keep-alive ओळी आणि स्ट्रीममधील त्रुटी.
  • फंक्शन कॉलिंग — मॉडेलला तुमची फंक्शन्स कॉल करू द्या.
  • मर्यादा आणि बॅलन्स — रिक्वेस्ट काय राखून ठेवते आणि किती खर्च करते, आणि तुम्ही किती रिक्वेस्ट्स पाठवू शकता.
  • API प्लेग्राउंड — तुमच्या कीसह ब्राउझरमध्ये रिक्वेस्ट्स वापरून पाहा.