1. OpenAI के असिस्टेंट्स API का परिचय

1.1 असिस्टेंट्स API की परिभाषा और उद्देश्य

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

1.2 असिस्टेंट्स API के अनुप्रयोग

असिस्टेंट्स API विभिन्न परिदृश्यों के लिए उपयुक्त है जो जोरदार एआई समर्थन की आवश्यकता होती है। उदाहरण के लिए:

  • ग्राहक समर्थन: मानव ग्राहक सेवा के बोझ को कम करने के लिए सामान्य प्रश्नों का स्वचालित जवाब देना।
  • ऑनलाइन शिक्षा: छात्रों के प्रश्नों का जवाब देना और व्यक्तिगत शिक्षा समर्थन प्रदान करना।
  • डेटा विश्लेषण: उपयोगकर्ताओं द्वारा अपलोड की गई डेटा फाइलों का विश्लेषण करना, रिपोर्ट बनाना, और चार्ट्स को विज़ुअलाइज़ करना।
  • व्यक्तिगत सुझाव: उपयोगकर्ताओं के इतिहासिक परसंपर्कों पर आधारित व्यक्तिगत सुझाव और सेवाएं प्रदान करना।

1.3 असिस्टेंट्स के मूल सिद्धांत

असिस्टेंट्स API के मूल ऑब्ज

2.3 धागे में संदेश जोड़ें

आप विशिष्ट धागे में संदेश जोड़ सकते हैं, जो पाठ और विकल्पित रूप से उपयोगकर्ता द्वारा अपलोड किया जा सकता है। उदाहरण के लिए:

curl https://api.openai.com/v1/threads/{thread_id}/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
      "role": "user",
      "content": "मुझे इस समीकरण को हल करना है `3x + 11 = 14`। क्या आप मेरी मदद कर सकते हैं?"
    }'

API पैरामीटर:

  • thread_id - बातचीत धागे की अद्यतन पहचान, जिसे आप धागे बनाते समय प्राप्त कर सकते हैं।

API अनुरोध बॉडी आम तौर पर एक उपयोगकर्ता संदेश होता है, जो साधारणतः उपयोगकर्ता के प्रश्न का प्रतिनिधित्व करता है, बातचीत मॉडल की संरचना की तरह।

2.4 सहायक को प्रतिक्रिया उत्पन्न करने के लिए रन करें

उपयोगकर्ता संदेशों का उत्तर देने के लिए सहायक को रन करने के लिए, आपको एक रन बनाने की आवश्यकता होती है। इससे सहायक को धागा पढ़ने और तय करने की अनुमति मिलती है कि क्या उपकरणों का उपयोग करें (यदि सक्षम है) या सिर्फ मॉडल का प्रयोग करें ताकि प्रश्न का सर्वश्रेष्ठ उत्तर दे सके।

ध्यान दें: इस बिंदु तक, सहायक ने उपयोगकर्ता के प्रश्न का उत्तर नहीं दिया है। केवल जब आप रन API को डालेंगे तब AI सहायक उपयोगकर्ता के प्रश्न का उत्तर देगा।

curl https://api.openai.com/v1/threads/{thread_id}/runs \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "assistant_id": "assistant_id",
    "instructions": "उपयोगकर्ता के रूप में जेन डो हैं। उपयोगकर्ता प्रीमियम खाता है।"
  }'

API पैरामीटर:

  • thread_id - बातचीत धागे की अद्यतन पहचान, जिसे आप धागे बनाते समय प्राप्त कर सकते हैं।
  • assistant_id - सहायक आईडी का प्रतीक, जिसे आप सहायक बनाते समय प्राप्त कर सकते हैं।
  • instructions - सहायक निर्देशों जो सहायक बनाते समय निर्धारित निर्देशों को अधिलीन कर सकते हैं।

सफल API अनुरोध एक रन आईडी लौटाएगा।

2.5 सहायक चल रहे होने की स्थिति की जाँच करें

सहायक में एक कार्य (रन) शुरू करने के बाद, कार्य निष्पादन गैरसंवृत है। इसका अर्थ है कि हमें नियमित रूप से रन की स्थिति की जाँच करनी होती है कि क्या यह पूरा किया गया है। रन की स्थिति की जाँच करने के लिए, CURL का उपयोग करके एक HTTP अनुरोध किया जा सकता है। नीचे इस प्रक्रिया का विस्तृत वर्णन दिया गया है।

CURL अनुरोध उदाहरण:

curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1"

API पैरामीटर का विवरण:

  • https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123: यह API का अनुरोध URL है, जहां thread_abc123 धागे (Thread) का अद्यतन पहचान है, और run_abc123 रन की अद्यतन पहचान है।

उत्तर बॉडी उदाहरण:

{
  "id": "run_abc123",
  "object": "thread.run",
  "status": "completed",
  "created_at": 1699073585,
  ...
}

API रिस्पॉन्स पैरामीटर का विवरण:

  • id: रन की अद्यतन पहचान।
  • object: वापस लौटने वाले ऑब्जेक्ट के प्रकार का संकेत देता है, जो यहां thread.run है।
  • status: रन की स्थिति, संभावित मूल्यों में queued, in_progress, completed, requires_action, failed, आदि शामिल है।
  • created_at: रन बनाया गया था, इसका टाइमस्टैम्प।

2.6 सहायक प्रतिक्रिया परिणाम प्राप्त करें

सहायक रन पूरा होने के बाद, हम सहायक की प्रतिक्रिया परिणाम पढ़ सकते हैं, धागे (Thread) में जोड़े गए संदेशों की जाँच करके। नीचे CURL के माध्यम से अनुरोध करने और API पैरामीटर का विस्तारित विवरण दिया गया है।

सुझाव: सहायक के साथ एक वार्ता की तरह, जब सहायक उपयोगकर्ता का प्रश्न प्रसंस्करण करने का कार्य समाप्त होता है, तो सहायक वार्ता धागे में एक संदेश जोड़ता है। इसलिए, हमें केवल चरणी धागे (Thread) में नवीनतम संदेश का प्रश्न करने की आवश्यकता है जिससे हम सहायक की प्रतिक्रिया प्राप्त कर सकें।

CURL अनुरोध उदाहरण:

curl https://api.openai.com/v1/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1"

एपीआई पैरामीटर का विवरण:

  • https://api.openai.com/v1/threads/thread_abc123/messages: एपीआई का अनुरोध URL, जहां thread_abc123 धागे (Thread) की अद्वितीय पहचानकर है।
  • इसमें पास करने के लिए अनुरोध हेडर्स का उपयोग किया गया, जिन्हें पहले से ही रन स्थिति की जांच के लिए किया गया था, जिसमें प्रमाणीकरण सूचना और एपीआई संस्करण सूचना शामिल है।

सहायक प्रतिक्रिया परिणाम उदाहरण:

इस उदाहरण में, उपयोगकर्ता ने सहायक से एक गणित सवाल पूछा, और सहायक ने इसे प्रसंसाधन करने के बाद धागे में एक प्रतिक्रिया संदेश जोड़ दिया।

उपयोगकर्ता: मुझे समीकरण `3x + 11 = 14` को हल करना है। क्या आप मेरी मदद कर सकते हैं?
सहायक: बिल्कुल, Jane Doe। समीकरण `(3x + 11 = 14)` को हल करने के लिए आपको समीकरण के एक ओर `(x)` को अलग करना होगा। मैं `(x)` की मान (value) की गणना कर दूं।
सहायक: समीकरण `(3x + 11 = 14)` का समाधान `(x = 1)` है।

सहायक से प्राप्त प्रतिक्रिया परिणामों के बाद, इसे उपयोगकर्ता को प्रस्तुत किया जा सकता है ताकि उन्हें सहायक द्वारा प्रदान की जाने वाली सेवाओं को बेहतर समझने और उपयोग करने में मदद मिले।

3. टूल: ओपनएआई द्वारा प्रदान किए गए इंटीग्रेटेड टूल्स

3.1 कोड इंटरप्रीटर टूल

कोड इंटरप्रीटर टूल सहायक्वार सीमित भविष्यवाणियों में पायथन कोड लिखने और चलाने की अनुमति देता है। यह टूल विभिन्न डेटा और फाइल प्रारूपों का सामना कर सकता है, और डेटा और चित्रित छवियों वाले फ़ाइलों को उत्पन्न कर सकता है। कोड इंटरप्रीटर आपके सहायक को जटिल कोडिंग और गणित समस्याओं का समाधान करने के लिए कोड वार्षिक करने की अनुमति देता है। सहायक द्वारा लिखे गए कोड को जब चलाने में विफल होता है, तो वह विभिन्न कोड की कोशिश करके इस कोड को वार्षिक कर सकता है।

कोड इंटरप्रीटर सक्षम करना

कोड इंटरप्रीटर को सक्रिय करने के लिए, सहायक ऑब्जेक्ट बनाते समय tools पैरामीटर में code_interpreter पास करें:

curl https://api.openai.com/v1/assistants \
  -u :$OPENAI_API_KEY \
  -H 'Content-Type: application/json' \
  -H 'OpenAI-Beta: assistants=v1' \
  -d '{
    "instructions": "आप एक व्यक्तिगत गणित शिक्षक हैं। जब गणित सवाल पूछा जाता है, तो उसका उत्तर देने के लिए कोड लिखें और चलाएँ।",
    "tools": [
      { "type": "code_interpreter" }
    ],
    "model": "gpt-4-turbo-preview"
  }'

उसके बाद, मॉडल उपयोगकर्ता के अनुरोध की प्रकृति के आधार पर रनटाइम में कोड इंटरप्रीटर को कब आरंभ करेगा। आप सहायक के instructions के माध्यम से इस व्यवहार को सुविधाजनक बना सकते हैं (जैसे "इस समस्या का हल करने के लिए कोड लिखें")।

फ़ाइलों को प्रोसेस करने के लिए कोड इंटरप्रीटर का उपयोग

कोड इंटरप्रीटर फाइलों से डेटा पार्स कर सकता है। यह उपयोगी होता है जब आप अपने सहायक को बड़ी मात्रा में डेटा प्रदान करना चाहते हैं या आपके उपयोगकर्ताओं को अपनी फ़ाइलों को विश्लेषित करने की अनुमति देना चाहते हैं। ध्यान दें कि कोड इंटरप्रीटर के लिए अपलोड की गई फ़ाइलें पुनःप्राप्ति के लिए सूचीबद्ध नहीं की जाएंगी। पुनर्प्राप्ति के लिए फ़ाइलों के सूचीबद्ध करने के लिए अधिक जानकारी के लिए नीचे रिट्रीवल टूल अनुभाग पर संदर्भित करें।

सहायक से संबंधित सभी रन्स द्वारा पहुंची जा सकती हैं इस स्तर पर पारित फाइलें:

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/mydata.csv"

curl https://api.openai.com/v1/assistants \
  -u :$OPENAI_API_KEY \
  -H 'Content-Type: application/json' \
  -H 'OpenAI-Beta: assistants=v1' \
  -d '{
    "instructions": "आप एक व्यक्तिगत गणित शिक्षक हैं। जब गणित सवाल पूछा जाता है, कोड लिखे और उत्तर देने के लिए कोड लिखें।",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-turbo-preview",
    "file_ids": ["file_123abc456"]
  }'

कोड का इंटरप्रीटर द्वारा जेनेरेट की गई छवियाँ और फाइलें पढ़ना

कोड इंटरप्रीटर एपीआई में फ़ाइलें भी निकाल सकता है, जैसे कि छवि चार्ट, CSV और PDF फ़ाइलें उत्पन्न करना। उत्पन्न होने वाली फ़ाइलों के दो प्रकार होते हैं: छवियाँ और डेटा फ़ाइलें (जैसे कि सहायक द्वारा उत्पन्न डेटा के साथ एक CSV फ़ाइल)।

जब कोड इंटरप्रीटर एक छवि उत्पन्न करता है, तो आप इस फ़ाइल को सहायक संदेश प्रतिक्रिया के file_id फ़ील्ड में खोजकर डाउनलोड कर सकते हैं:

{
    "id": "msg_abc123",
    "object": "thread.message",
    "created_at": 1698964262,
    "thread_id": "thread_abc123",
    "role": "assistant",
    "content": [
    {
      "type": "image_file",
      "image_file": {
        "file_id": "file-abc123"
      }
    }
  ]
  // ...
}

3.2 रिट्रीवल टूल

रिट्रीवल टूल असिस्टेंट की क्षमताओं को वृद्धि करता है जो मॉडल के बाहर से ज्ञान जोड़ता है (जैसे कि संपत्तिवादी उत्पाद जानकारी या उपयोगकर्ता द्वारा प्रदान की गई दस्तावेज़)। एक बार फ़ाइल अपलोड की गई और सहायक को पारित किया गया है, ओपनएआई स्वचालित रूप से आपके दस्तावेज़ को टुकड़ों में काटेगा, सूचीकरण करेगा, आपके दस्तावेज़ को एम्बेडिंग करेगा, और खोजने के लिए संदर्भीय सामग्री को पुनः प्राप्त करने के लिए वेक्टर खोज को कार्यात्मक बनाएगा।

रिट्रीवल सक्षम करें

असिस्टेंट के tools पैरामीटर में रिट्रीवल को सक्षम करने के लिए, retrieval को पास करें:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "आप एक ग्राहक समर्थन चैटबॉट हैं। ग्राहक क्वेरी का प्रभावी रूप से जवाब देने के लिए अपने ज्ञान आधार का उपयोग करें।",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
  }'

रिट्रीवल के लिए फ़ाइलें अपलोड करें

कोड इंटरप्रीटर की तरह, फ़ाइलें असिस्टेंट स्तर पर या व्यक्तिगत संदेश स्तर पर अपलोड की जा सकती हैं।

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/knowledge.pdf"

curl "https://api.openai.com/v1/assistants" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "आप एक ग्राहक समर्थन चैटबॉट हैं। ग्राहक क्वेरी का प्रभावी रूप से जवाब देने के लिए अपने ज्ञान आधार का उपयोग करें।",
    "name": "गणित शिक्षक",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
    "file_ids": ["file_123abc456"]
  }'

3.3 फ़ंक्शन कॉलिंग टूल

चैट पूर्ति एपीआई की तरह, असिस्टेंट्स एपीआई फ़ंक्शन कॉल को समर्थित करती है। फ़ंक्शन कॉलिंग आपको असिस्टेंट को फ़ंक्शन का वर्णन करने और बुद्धिमानी से फ़ंक्शन और उसके पैरामीटर वापस करने की संभावना देता है। जब फ़ंक्शन कॉल चलाई जाती है, तो असिस्टेंट्स एपीआई निष्क्रिय हो जाएगी, और आप फ़ंक्शन कॉल के परिणाम को प्रदान कर सकते हैं ताकि कार्यान्वयन जारी रह सके।

फ़ंक्शनों को परिभाषित करें

एक एसिस्टेंट बनाते समय, आप एसिस्टेंट को कॉल करने के लिए एक सेट के फ़ंक्शन को परिभाषित कर सकते हैं। इन फ़ंक्शन को विशेष रूप से निर्दिष्ट करना चाहिए जब एसिस्टेंट ऑब्जेक्ट बनाया जाता है। प्रत्येक फ़ंक्शन का अपना विशिष्ट नाम, विवरण, और पैरामीटर स्पष्टीकरण होना चाहिए।

निम्नलिखित कोड में दो फ़ंक्शनों को कैसे परिभाषित करना है, इसका उदाहरण दिखाता है जब एक एसिस्टेंट बनाते समय curl कमांड का उपयोग करते हैं:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "आप एक मौसम की पूर्वानुमान बॉट हैं। दिए गए फ़ंक्शन का उपयोग करें और सवालों का जवाब दें।",
    "tools": [{
      "type": "function",
      "function": {
        "name": "getCurrentWeather",
        "description": "एक विशेष स्थान के लिए मौसम की स्थितियाँ प्राप्त करें",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "नगर और राज्य, जैसे, सैन फ्रांसिस्को, कैलिफ़ोर्निया"},
            "unit": {"type": "string", "enum": ["c", "f"]}
          },
          "required": ["location"]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "getNickname",
        "description": "एक नगर के लिए उपनाम प्राप्त करें",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "नगर और राज्य, जैसे, सैन फ्रांसिस्को, कैलिफ़ोर्निया"}
          },
          "required": ["location"]
        }
      }
    }],
    "model": "gpt-4-turbo-preview"
  }'

एसिस्टेंट द्वारा कॉल किए गए फ़ंक्शन पढ़ें

जब एक उपयोगकर्ता एसिस्टेंट को एक संदेश सबमिट करता है और संदेश का विषय किसी फंक्शन को कॉल करता है, तब इस फ़ंक्शन कॉल की जानकारी को पढ़ने की आवश्यकता होती है। इस प्रक्रिया के दौरान, एसिस्टेंट एक requires_action स्थिति चलाएगा जिसमें, आप रन ऑब्जेक्ट को प्राप्त करके फ़ंक्शन कॉल की विस्तृत जानकारी प्राप्त कर सकते हैं।

निम्नलिखित उदाहरण में, रन ऑब्ज