मुख्य सामग्री पर जाएँ

OpenAI के O3 API: चरण-दर-चरण ट्यूटोरियल उदाहरणों सहित

जानें कि OpenAI O3 API का उपयोग कैसे करें ताकि दृश्य और पाठ्य इनपुट शामिल जटिल, बहु-चरणीय समस्या-समाधान किया जा सके, और रीजनिंग लागत को प्रबंधित किया जा सके।
· 8 मि॰ पढ़ें

AI के साथ खोजें

OpenAI का o3 मॉडल जटिल बहु-चरणीय समस्याओं को हल करने, दृश्य और पाठ्य इनपुट को मिलाने, और अपने उत्तरों को बेहतर बनाने के लिए Python, खोज, या छवि निरीक्षण जैसे टूल्स का उपयोग करने में सक्षम है।

इस ट्यूटोरियल में, मैं चरण-दर-चरण समझाऊंगा कि API के माध्यम से o3 का उपयोग कैसे करें, o3 को GPT-4o जैसे जनरलिस्ट मॉडलों से क्या अलग बनाता है, और रीजनिंग लागत को प्रभावी ढंग से कैसे प्रबंधित करें।

हम अपने पाठकों को The Median के जरिए नवीनतम AI अपडेट भेजते हैं—यह हमारा निःशुल्क शुक्रवार का न्यूज़लेटर है जो सप्ताह की प्रमुख खबरों का सार बताता है। सदस्यता लें और हर सप्ताह कुछ ही मिनटों में अपडेट रहें:

आप O3 का उपयोग कब करें?

OpenAI का o3 मॉडल उन्नत, जटिल कार्यों के लिए बनाया गया है जिनमें गहन तर्क और स्वायत्तता की आवश्यकता होती है। यह सॉफ्टवेयर विकास, गणित, वैज्ञानिक अनुसंधान और दृश्य डेटा की व्याख्या जैसे क्षेत्रों में जटिल समस्या-समाधान के लिए विशेष रूप से प्रभावी है।

मॉडल की एजेंटिक क्षमताएं इसे वेब सर्च, Python और इमेज जनरेशन जैसे टूल्स को स्वायत्त रूप से उपयोग करने देती हैं, जो बहु-चरणीय विश्लेषण और गतिशील निर्णय-निर्माण की मांग वाले कार्यों के लिए इसे आदर्श बनाती हैं।

जब आपके प्रोजेक्ट में जटिल, मल्टी-मोडल तर्क वाले कार्य शामिल हों जो इसकी उच्च स्वायत्तता और उन्नत विश्लेषणात्मक कौशल से लाभान्वित हों, तो आपको API के जरिए o3 मॉडल का उपयोग करने पर विचार करना चाहिए।

आइए o3, o4-mini और GPT-4o के बीच एक त्वरित तुलना देखें:

o3 बनाम o4-mini बनाम gpt-4o

स्रोत: OpenAI

API का उपयोग करते समय मूल्य निर्धारण भी एक महत्वपूर्ण कारक है:

o3 मूल्य निर्धारण बनाम o4 mini और gpt-4o

स्रोत: OpenAI

OpenAI O3 API: OpenAI के API से कैसे कनेक्ट करें

o3 की उन्नत तर्क क्षमता का उपयोग शुरू करने से पहले, आपको OpenAI API की पहुंच सेट अप करनी होगी। इस खंड में, मैं आपको बताऊंगा:

  • अपनी API कुंजी को सुरक्षित रूप से सेट करना
  • o3 मॉडल को अपनी पहली API कॉल करना
  • रीजनिंग मॉडलों के लिए प्रमुख सेटअप अंतर

चरण 1: API क्रेडेंशियल्स प्राप्त करें

OpenAI API तक पहुंचने के लिए आपको एक वैध API कुंजी चाहिए, जिसे आप OpenAI API Keys पेज से प्राप्त कर सकते हैं, और सुनिश्चित करें कि आपका बिलिंग सक्षम है।

ध्यान दें: o3 का उपयोग करने के लिए, आपको पहले अपनी OpenAI ऑर्गनाइज़ेशन को यहां सत्यापित करना होगा। सत्यापन सक्रिय होने में 15 मिनट तक लग सकते हैं।

चरण 2: openai लाइब्रेरी इम्पोर्ट करें

हम API के जरिए O3 मॉडल तक पहुंचने के लिए openai लाइब्रेरी को इंस्टॉल और अपग्रेड करके शुरू करते हैं। निम्न कमांड चलाएं:

pip install --upgrade openai

इंस्टॉल होने के बाद, हम openai लाइब्रेरी से OpenAI क्लास इम्पोर्ट करते हैं:

from openai import OpenAI

चरण 3: क्लाइंट ऑब्जेक्ट इनिशियलाइज़ करें

OpenAI के API से इंटरैक्ट करने के लिए, हम अपनी सीक्रेट API कुंजी सेट करके प्रमाणित करते हैं, जिससे o3 जैसे मॉडलों को अधिकृत अनुरोध भेजना संभव हो जाता है।

client = OpenAI(api_key=YOUR_API_KEY)

चरण 4: एक API कॉल करें

अब जब सेटअप पूरा हो गया है, तो चलिए Responses API के जरिए o3 को अपनी पहली API कॉल करते हैं और देखते हैं कि यह एक साधारण बहु-चरणीय तर्क कार्य को कैसे संभालता है।

उदाहरण 1: सरल, टूल-फ्री प्रॉम्प्ट

आइए एक साधारण प्रॉम्प्ट उदाहरण के साथ o3 API कॉल को समझें।

response = client.responses.create(
    model="o3",
    input=[{"role": "user", "content": "What’s the difference between inductive and deductive reasoning?"}]
)
print(response.output_text)

यह उदाहरण किसी भी टूल या विशेष रीजनिंग पैरामीटर के बिना प्राकृतिक भाषा का प्रश्न सीधे o3 मॉडल को भेजता है।

  • model="o3" API को o3 रीजनिंग मॉडल उपयोग करने के लिए बताता है।
  • input=[{"role": "user", "content": "..."}] एकल उपयोगकर्ता संदेश को परिभाषित करता है जो वैचारिक व्याख्या मांगता है।
  • O3 अंतिम आउटपुट देने से पहले आंतरिक रूप से मध्यम-प्रयास रीजनिंग चेन पर डिफ़ॉल्ट करता है।

API के जरिए o3 आउटपुट

ये वे टोकन हैं जो हमारी अंतिम लागत में गिने जाएंगे:

  • इनपुट टोकन: प्रॉम्प्ट
  • रीजनिंग टोकन: o3 की आंतरिक चेन-ऑफ-थॉट 
  • आउटपुट टोकन: अंतिम आउटपुट

उदाहरण 2: कोड और गणित की समस्या-समाधान

इस उदाहरण में, हम o3 से द्विघात समीकरणों को हल करने के लिए कोड लिखने और उसके पीछे का गणित समझाने दोनों के लिए कहते हैं। यह दो-भाग का कार्य है, जिसमें केवल कोडिंग ही नहीं बल्कि विस्तृत गणितीय व्याख्या भी आवश्यक है।

prompt = "Write a Python function that solves quadratic equations and also explain the math behind it."
response = client.responses.create(
    model="o3",
    reasoning={"effort": "high"},
    input=[{"role": "user", "content": prompt}]
)
print(response.output_text)

यह कार्य बहु-चरणीय गणितीय तर्क की मांग करता है—पहले द्विघात सूत्र को हल करना, फिर व्युत्पत्ति समझाना। reasoning={"effort": "high"} पैरामीटर o3 को "और गहराई से सोचने" के लिए बाध्य करता है, जिससे बड़ी रीजनिंग ट्रेस बनती है। यह उन कार्यों के लिए उपयुक्त है जिनमें तकनीकी गहराई या बहु-चरणीय समाधान आवश्यक हों।

लागत नोट: अधिक रीजनिंग प्रयास का मतलब अधिक रीजनिंग टोकन, जो उच्च आउटपुट लागत का कारण बनता है।

API के जरिए o3 आउटपुट

o3 api आउटपुट

कोड + गणित समस्या-समाधान

o3 api आउटपुट

उदाहरण 3: कोड रिफैक्टरिंग कार्य

इस उदाहरण में, हम O3 को विस्तृत निर्देशों के साथ एक कोड रिफैक्टरिंग कार्य पास करते हैं।

prompt = """
Instructions:
- Given the React component below, change it so that nonfiction books have red
  text. 
- Return only the code in your reply
- Do not include any additional formatting, such as markdown code blocks
- For formatting, use four space tabs, and do not allow any lines of code to 
  exceed 80 columns
const books = [
  { title: 'Dune', category: 'fiction', id: 1 },
  { title: 'Frankenstein', category: 'fiction', id: 2 },
  { title: 'Moneyball', category: 'nonfiction', id: 3 },
];
export default function BookList() {
  const listItems = books.map(book =>
    <li>
      {book.title}
    </li>
  );
  return (
    <ul>{listItems}</ul>
  );
}
"""
response = client.responses.create(
    model="o3",
    reasoning={"effort": "medium", "summary": "detailed"},
    input=[
        {
            "role": "user",
            "content": prompt,
        }
    ]
)
print(response.output_text)

ऊपर दिए गए कोड में, हम O3 को विस्तृत फ़ॉर्मेटिंग नियमों के साथ अत्यंत संरचित कोड संपादन कार्य देते हैं।

  • पैरामीटर reasoning={"effort": "medium"} इसे सावधानीपूर्वक परंतु कुशलता से तर्क करने के लिए कहता है।
  • पैरामीटर summary="detailed" मॉडल की विचार प्रक्रिया का पूरा आंतरिक सारांश अनुरोध करता है। O3 आंतरिक रूप से तर्क करेगा और यदि आप बाद में summary फ़ील्ड देखते हैं, तो वैकल्पिक रूप से संक्षिप्त ट्रेस वापस कर सकता है।

टिप: कुछ उपलब्ध समरी सेटिंग्स हैं जिन्हें आप उपयोग कर सकते हैं, जैसे "concise", "detailed", या "auto"।

o3 api आउटपुट कोड रिफैक्टरिंग कार्य

उदाहरण 4: विजुअल रीजनिंग

आइए इस कॉन्फ्रेंस फोटो का उपयोग करें और अपनी रुचियों के आधार पर o3 से एक शेड्यूल बनाने को कहें।

विजुअल रीजनिंग (इनपुट इमेज)

चरण 4.1: हेल्पर फ़ंक्शन

आइए आवश्यक लाइब्रेरी इम्पोर्ट करके और एक हेल्पर फ़ंक्शन लिखकर शुरू करें:

import base64, mimetypes, pathlib
def to_data_url(path: str) -> str:
    mime = mimetypes.guess_type(path)[0] or "application/octet-stream"
    data = pathlib.Path(path).read_bytes()
    b64  = base64.b64encode(data).decode()
    return f"data:{mime};base64,{b64}"

फ़ंक्शन to_data_url() स्थानीय इमेज फ़ाइल को base64-एन्कोडेड डेटा URL में बदलता है, क्योंकि OpenAI का API इमेज इनपुट को कच्ची फाइलों की बजाय URL फ़ॉर्मेट में अपेक्षित करता है।

to_data_url फ़ंक्शन यह करता है:

  • आपके कंप्यूटर से इमेज फ़ाइल (पाथ) पढ़ता है।
  • उसका प्रकार (जैसे, image/png) का अनुमान लगाता है।
  • फिर बाइनरी कंटेंट को base64 स्ट्रिंग में एन्कोड करता है।
  • अंत में एक डेटा URL लौटाता है

चरण 4.2: O3 को टेक्स्ट और इमेज दोनों भेजें

अब जब हमने अपनी इमेज एन्कोड कर ली है, तो हम टेक्स्ट और एन्कोडेड इमेज दोनों की जानकारी O3 को पास करते हैं।

prompt = (
    "Create a schedule using this blurry conference photo. "
    "Ensure 10-minute gaps between talks and include all talks related to LLMs."
)
image_path   = "IMAGE_PATH"
image_url    = to_data_url(image_path)        
response = client.chat.completions.create(
    model="o3",                                  
    messages=[
        {
            "role": "user",
            "content": [
                { "type": "text",      "text": prompt },
                { "type": "image_url", "image_url": { "url": image_url } }
            ],
        }
    ],
)
print(response.choices[0].message.content)

यह इस प्रकार काम करता है:

  • हम client.chat.completions.create() को कॉल करके शुरू करते हैं, जहां इनपुट कंटेंट एक सूची है जिसमें दोनों शामिल हैं:
    • टेक्स्ट निर्देश (उपयोगकर्ता का शेड्यूलिंग अनुरोध),
    • और इमेज डेटा (कॉन्फ्रेंस फोटो)।
    • o3 मॉडल अपनी आंतरिक चेन-ऑफ-थॉट के दौरान दोनों इनपुट को संयुक्त रूप से प्रोसेस करता है।
  • अंततः, हम response.choices[0].message.content को प्रिंट करते हैं, जिसमें वह जनरेटेड शेड्यूल होता है जो मॉडल ने टेक्स्ट निर्देशों और दृश्य डेटा पर तर्क करने के बाद बनाया।

महत्वपूर्ण लागत विचार:

  • इमेज इनपुट, इनपुट टोकन के बराबर गिना जाता है।
  • मॉडल रीजनिंग लूप के अंदर दृश्य निरीक्षण का उपयोग करता है।
  • यदि रीजनिंग चेन लंबी है, तो हमें max_completion_tokens पैरामीटर के साथ लागत को सावधानी से प्रबंधित करना चाहिए, जिसे हम अगले खंड में कवर करेंगे।

आइए परिणाम देखें:

o3 api विजुअल रीजनिंग (आउटपुट)

o3 api विजुअल रीजनिंग (आउटपुट)

रीजनिंग टोकन के साथ लागत प्रबंधन

O3 सामान्य इनपुट/आउटपुट टोकनों के अलावा रीजनिंग टोकन का उपयोग करता है, जिसका अर्थ है सामान्य इनपुट/आउटपुट से अधिक टोकन और इस प्रकार अधिक आउटपुट लागत। हमारे पिछले उदाहरण का अनुसरण करते हुए, आइए देखें कि रीजनिंग टोकन लागत को कैसे प्रभावित करते हैं।

print(response.usage)
CompletionUsage(completion_tokens=3029,prompt_tokens=1007, total_tokens=4036, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))

यदि आप लागत को नियंत्रित करना चाहते हैं, तो कुल उपयोग को सीमित करने के लिए max_completion_tokens पैरामीटर लागू करें:

limit_token_response = client.chat.completions.create(
    model="o3",                                  
    messages=[
        {
            "role": "user",
            "content": [
                { "type": "text",      "text": prompt },
                { "type": "image_url", "image_url": { "url": image_url } }
            ],
        }
    ],
    max_completion_tokens=3000,
)
print(limit_token_response.usage)
CompletionUsage(completion_tokens=2746, prompt_tokens=1007, total_tokens=3753, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))

ऊपर के आउटपुट से स्पष्ट है कि max_completion_tokens मान सेट करना मॉडल के व्यवहार को नियंत्रित करने में महत्वपूर्ण है। अधिकतम टोकनों की सीमा तय करके, हम o3 को अनावश्यक रूप से लंबे आउटपुट बनाने या अत्यधिक रीजनिंग टोकन खपत करने से रोकते हैं, जिससे कुल API लागत का अनुकूलन होता है। यह विशेष रूप से जटिल कार्यों में महत्वपूर्ण है, जहां अन्यथा आंतरिक तर्क उपयोगकर्ता-दिखने योग्य आउटपुट के अनुपात में बिना बढ़े टोकन उपयोग पर हावी हो सकता है।

महत्वपूर्ण: जटिल दृश्य कार्यों के लिए o3 का उपयोग करते समय, हमेशा max_completion_tokens को सावधानीपूर्वक ऊंचा सेट करें। यदि टोकन सीमा बहुत कम है, तो मॉडल आंतरिक तर्क के दौरान सभी टोकन खर्च कर सकता है और कोई दृश्य आउटपुट नहीं लौटाएगा।

O3 के साथ सर्वोत्तम प्रॉम्प्टिंग प्रथाएं

O3 मॉडल, GPT-4o या Claude 3.5 Sonnet जैसे जनरलिस्ट मॉडलों से अलग व्यवहार करता है, क्योंकि o3 आंतरिक रूप से गहरी चेन-ऑफ-थॉट रीजनिंग करता है। यह सीधे और लक्ष्य-उन्मुख प्रॉम्प्ट्स के साथ सबसे अच्छा प्रदर्शन करता है; यानी, चरणों को अत्यधिक निर्दिष्ट करना इसके प्रदर्शन को नुकसान पहुंचा सकता है।

यहां o3 के लिए प्रॉम्प्टिंग की कुछ सर्वोत्तम प्रथाएं हैं, जो OpenAI द्वारा अनुशंसित हैं:

  • प्रॉम्प्ट्स संक्षिप्त और स्पष्ट रखें: O3 सीधे निर्देशों के साथ उत्कृष्ट प्रदर्शन करता है; विस्तृत व्याख्याओं की आवश्यकता नहीं।
  • चेन-ऑफ-थॉट प्रॉम्प्ट्स से बचें: O3 को "स्टेप-बाय-स्टेप सोचें" बताने की जरूरत नहीं—यह आंतरिक रूप से तर्क करता है।
  • स्पष्टता के लिए डिलिमिटर्स का उपयोग करें: इनपुट के विभिन्न भागों को व्यवस्थित करने के लिए ट्रिपल-कोट्स, XML टैग्स, या अन्य डिलिमिटर्स उपयोग करें।
  • अतिरिक्त संदर्भ सीमित करें: यदि retrieval-augmented generation (RAG) का उपयोग कर रहे हैं, तो मॉडल को अधिभारित होने से बचाने के लिए केवल सबसे प्रासंगिक जानकारी शामिल करें।

निष्कर्ष

इस ब्लॉग में, हमने API के जरिए OpenAI के O3 मॉडल से कनेक्ट करना, रीजनिंग टोकन की लागत को प्रबंधित करना, और सर्वोत्तम प्रथाओं का उपयोग करके प्रभावी प्रॉम्प्ट्स तैयार करना सीखा। यदि आपके प्रोजेक्ट को उन्नत रीजनिंग क्षमताओं—जैसे बहु-चरणीय गणित, कोड रिफैक्टरिंग, या दृश्य समझ—की आवश्यकता है, तो O3 सर्वोत्तम विकल्प है।

APIs के साथ काम करने के बारे में और जानने के लिए, मैं ये ब्लॉग सुझाता/सुझाती हूं:

Aashi Dutt

लेखक

Aashi Dutt

मैं एमएल (Gen AI) में Google Developers Expert, Kaggle 3x Expert, और Women Techmakers एंबेसडर हूँ, तथा तकनीक क्षेत्र में 3+ वर्षों का अनुभव रखती हूँ। मैंने 2020 में एक हेल्थ-टेक स्टार्टअप की सह-स्थापना की और वर्तमान में Georgia Tech से कंप्यूटर विज्ञान में मास्टर कर रही हूँ, जिसमें मेरा विशेषज्ञता क्षेत्र मशीन लर्निंग है।

विषय