मुख्य नेव्हिगेशन

ChatGPT ॲप्स SDK सह शिपिंग करताना आम्ही काय शिकलो

ChatGPT ॲप्स SDK सह उत्पादन शिप करताना मिळालेले व्यावहारिक धडे दाखवतात की त्याचे आर्किटेक्चर कधी योग्य ठरते आणि अधिक नियंत्रण कुठे आवश्यक असते.

कार्यकारी सारांश

  • तुम्हाला ChatGPT मध्ये लवकरच कार्यप्रवाह सुरू करायचा असेल किंवा सानुकूल एजंट स्टॅकमध्ये गुंतवणूक करण्यापूर्वी तिथे तुमची टूल्स वापरून पहायची असतील, तर ॲप्स SDK हा व्यावहारिक पर्याय आहे. एजंटच्या वागाणुकीच्या प्रत्येक टप्प्यावर तुम्हाला नियंत्रण हवे असल्यास, हा पर्याय सहसा योग्य ठरत नाही.

  • ChatGPT हे मुख्य माध्यम असावे आणि तुम्हाला संपूर्ण चॅट उत्पादन न बनवता टूल्ससह थोडेसे वापरकर्ता इंटरफेस हवे असेल, तर ॲप्स SDK निवडा. प्रवाह, मेमरी, प्रॉम्प्ट्स आणि लेखन क्रियांवर काटेकोर नियंत्रण हवे असल्यास, स्वतःचे एजंट स्टॅक निवडा.

  • चॅटसोबत वापरकर्ता इंटरफेसमधील काही छोटे टप्पे जोडण्याची गरज असलेल्या उत्पादनांसाठी ॲप्स SDK योग्य आहे. तुम्ही उत्पादन लवकर शिप करता, पण काही नियंत्रण सोडावे लागते.

  • स्पष्ट टूल्स, विजेटचे स्पष्ट वर्तन आणि पुढील स्पष्ट टप्पे आमच्यासाठी परिणामकारक ठरले. प्रवाह ठरवण्यासाठी आम्ही LLM वर नव्हे, तर याच गोष्टींवर अवलंबून राहिलो. सिस्टमने आधीच निवडलेले परिणाम समजावून सांगताना मॉडेल सर्वाधिक उपयुक्त ठरले.

  • आता निवड कशी करावी आणि नंतर काय परिणामकारक ठरले व काय ठरले नाही, हे पाहूया.

बहुतेक टीम्स अजूनही AI च्या प्रायोगिक चाचण्या करतात किंवा कमी जोखीम आणि कमी लाभ असलेल्या दुय्यम उपयोगांसाठी AI वापरतात. दर आठवड्याला वापरकर्ते वापरतील असे व्यवसायासाठी अत्यावश्यक उत्पादन फारच थोड्या टीम्स शिप करतात. संपूर्ण सहाय्यक स्वतः बनवण्याऐवजी ChatGPT मध्येच पोहोचवणे हे तुमचे उद्दिष्ट असेल, तर ही दरी भरून काढण्यासाठी ChatGPT ॲप्स SDK हा एक मार्ग आहे.

आम्ही ॲप्स SDK का वापरला

आम्हाला हे धडे अशा ग्राहक प्रोजेक्टमधून मिळाले, ज्याच्या गरजांनुसार ChatGPT हे प्रमुख माध्यम होते आणि संपूर्णपणे सानुकूल चॅट उत्पादनासाठी खर्च न करता जलद मार्ग हवा होता.

या गरजांसाठी ॲप्स SDK योग्य ठरले, कारण ग्राहकांना पुढील गोष्टी हव्या होत्या:

  • स्वतंत्र चॅट उत्पादन तयार करून त्याला होस्ट करण्याची गरज नाही—त्यांना आणखी एक स्वतंत्र सहाय्यक आवरण नव्हे, तर ChatGPT मध्ये ॲक्सेस हवा होता.

  • चॅटसह विशिष्ट कामांसाठी छोटे वापरकर्ता इंटरफेस—कार्यप्रवाहात दुसरे संपूर्ण उत्पादन नव्हे, तर विजेटचे काही नेमके टप्पे.

  • MCP टूल्सद्वारे उघड केलेले बॅकएंड वर्तन—सुरुवातीपासून शेवटपर्यंत स्वतःच्या मालकीची सानुकूल एजंट कार्यप्रणाली नव्हे, तर स्टँडर्ड टूल कॉल्स.

  • ChatGPT मध्ये शोध—वापरकर्ते जिथे आधीच काम करतात, तिथेच त्यांना हा कार्यप्रवाह मिळायला हवा.

निर्मिती करतानाच आम्ही ग्राहकांसोबत या निवडींची पडताळणी केली. ही तडजोड मात्र कायम राहते: सत्र ChatGPT होस्ट करत असल्यास, बाह्य रनटाइम तुमचे नसते. तुम्ही याला दिशा देता, पण यावर पूर्ण नियंत्रण ठेवत नाही.

ॲप्स SDK मधून तुम्हाला काय मिळते

ॲप्स SDK ॲपमध्ये तीन गोष्टी परस्परांशी जोडल्या जातात:

  1. ChatGPT चे एजंट रनटाइम

  2. तुमची MCP टूल्स

  3. तुमचे विजेट वापरकर्ता इंटरफेस

प्रत्यक्षातील प्रवाह:

  1. वापरकर्त्याने ChatGPT ला काही विचारले.

  2. ChatGPT तुमच्या MCP टूल्सपैकी एखादे कॉल करू शकते.

  3. तुमच्या सर्व्हरने टूलचा संरचित परिणाम पाठवला.

  4. ChatGPT ने तो परिणाम वाचला आणि पुढील टप्पा ठरवला: आणखी टूल कॉल्स, वापरकर्त्याला उत्तर देणे किंवा दोन्ही. त्या टूलला विजेट जोडले असल्यास, ते याच प्रतिसाद फेरीत दिसू शकते.

  5. वापरकर्ता चॅटमध्ये किंवा विजेटमध्ये पुढे जातो. यात पुढील मजकूर, एखादी निवड किंवा विजेटने सुरू केलेला टूल कॉल यांपैकी काहीही असू शकते. यामुळे हा थ्रेड अपडेट होतो. ChatGPT आणखी एक प्रतिसाद फेरी चालवते आणि काम पूर्ण होईपर्यंत 2–4 हे टप्पे पुन्हा केले जातात.

चॅट, बॅकएंडच्या क्रिया आणि वापरकर्ता इंटरफेसमधील छोटे टप्पे यांचा हा मिलाफच यामागचा उद्देश आहे. याचा अर्थ चॅट, टूल्स आणि वापरकर्ता इंटरफेस यांमधील हस्तांतरणाचे टप्पे नाजुक असतात.

चॅटचे वापरकर्ता इंटरफेस, टूलची जोडणी, प्रमाणीकरण पद्धती किंवा विजेटचे आवरण तुम्हाला सुरुवातीपासून पुन्हा तयार करावे लागत नाही. अनेक उत्पादनांसाठी यामुळे निर्मितीचा बराच वेळ वाचतो आणि तुम्ही डोमेनचे तर्क व सुरक्षाव्यवस्थांवर लक्ष देऊ शकता.

ChatGPT मध्ये निर्मिती करणे म्हणजे स्वतःचा एजंट चालवणे नव्हे. या प्रोजेक्टमध्ये कठीण भाग प्रॉम्प्टच्या युक्त्या तयार करणे नव्हता. कठीण भाग हा होता की टूल्स, विजेट आणि पुढील टप्पे इतके स्पष्ट करणे ज्याने मॉडेल व वापरकर्ता इंटरफेस यांचा ताळमेळ राहील.

निवड कशी करावी

ॲप्स SDK तुमच्या नेहमीच्या फ्रंटएंडपेक्षा वेगळे उत्पादनाचे स्वरूप देते, पण ते कोणत्या परिस्थितींसाठी आदर्श आहे हे जाणून घेणे महत्त्वाचे आहे.

पुढील गोष्टी हव्या असल्यास ॲप्स SDK वापरा

  • ChatGPT कार्यप्रवाह लवकर शिप करणे.

  • संभाषणाचे होस्टिंग ChatGPT कडे सोपवणे.

  • नैसर्गिक भाषेसोबत वापरकर्ता इंटरफेसमधीलल काही नेमके टप्पे जोडणे.

  • स्वतःचे चॅट इंटरफेस, एजंटचे कंटेनर आणि शोधक्षमता तयार करणे टाळणे.

तुमचे वापरकर्ते आधीच ChatGPT मध्ये काम करत असतील, तर हा शेवटचा मुद्दा महत्त्वाचा ठरतो.

पुढील गरजा असल्यास स्वतःचा एजंट तयार करा

  • कोडमध्ये बंधनकारक करता येईल असा निश्चित, टप्प्याटप्प्याचा प्रवाह.

  • सुरुवातीपासून शेवटपर्यंत तुमच्या मालकीचे सानुकूल वापरकर्ता इंटरफेस आणि पुष्टीकरणाचा मार्ग.

  • तुमचे स्वतःचे मेमरी आणि स्थिती मॉडेल.

  • प्रत्येक वेळी अंदाज करता येईल असे वर्तन.

  • एजंटसाठी ट्रेस, नोंदी आणि मेट्रिक्स.

नियोजक, सिस्टम प्रॉम्प्ट्स आणि संपूर्ण कार्यप्रवाह हेच तुमचे उत्पादन असेल, तर सानुकूल स्टॅक सहसा अधिक योग्य असू शकेल.

तडजोडींचा संक्षिप्त आढावा

प्रश्न

ChatGPT ॲप्स SDK

तुमचे स्वतःचे एजंट

हा अनुभव कुठे उपलब्ध असतो?

ChatGPT मध्ये

तुमच्या उत्पादनात

संभाषणाचे टप्पे कोण चालवते?

तुमची टूल्स आणि वापरकर्ता इंटरफेस यांच्या दिशेनुसार ChatGPT

तुमची एजंट-आधारित सिस्टम

वापरकर्ता इंटरफेस कितपत तयार करावे लागते?

चॅटमधील नेमकी विजेट

तुम्हाला पाहिजे असेल तेवढे

प्रॉम्प्ट्सवर किती नियंत्रण असते?

अप्रत्यक्ष

संपूर्ण

निश्चित आणि पुनरावृत्तीयोग्य प्रवाह किती सोपे असतात?

काळजीपूर्वक रचना करावी लागते

कोडिंगमध्ये बंधनकारक करणे अधिक सोपे

पहिली आवृत्ती शिप करण्यासाठी लागणारा वेळ

अनेकदा कमी

अनेकदा सुरुवातीला अधिक

तुमच्या मालकीचे प्लॅटफॉर्मवरील काम

कमी

अधिक

नंतर दिशा बदलण्याची मुभा

कमी

अधिक

आमच्या प्रोजेक्टमध्ये वारंवार येणारा शब्द होता नियंत्रण: एका बाजूला वेग आणि परिचित होस्ट, तर दुसऱ्या बाजूला रनटाइमची अंशतः मालकी. संपूर्ण स्टॅकची मालकी ठेवण्यापेक्षा ChatGPT मध्येच वापरकर्त्यांपर्यंत पोहोचण्याला प्राधान्य देताना ग्राहकाने ही तडजोड स्वीकारली.

अडचणी कुठे येतात

आदर्श मार्ग सोपा वाटतो: वापरकर्ता विचारतो, टूल चालते, डेटा परत येतो आणि निवड आवश्यक असेल तेव्हा विजेट दिसते.

प्रत्यक्षात हस्तांतरणाचे टप्पे त्रासदायक ठरले. विजेट ही केवळ सजावट नाही. ते स्क्रीनवर आल्यानंतर मॉडेलला काय दिसते आणि ते पुढे काय करते, हे बदलते. विजेटच्या क्रियांना अनिर्बंध चॅट नव्हे, तर नाव दिलेले इव्हेंट समजा.

या प्रोजेक्टमधील तंत्ररचना सरळ होती: FastMCP, Pydantic, React, TypeScript. त्यांचे इंटीग्रेशन सुरळीत झाले. पुढे काय घडेल याबाबत मॉडेल, टूल्स आणि वापरकर्ता इंटरफेस यांच्यात एकमत घडवणे हे खरे काम होते.

काय परिणामकारक ठरले

प्रत्येक हस्तांतरण स्पष्ट करा

आम्ही टूलच्या परिणामांना बॅकएंडवरून आलेली कच्ची माहिती मानणे थांबवले. प्रत्येक परतावा हा हस्तांतरणाचा टप्पा झाला.

टूलचा भक्कम परिणाम पुढील गोष्टी करतो:

  • विजेटने काय प्रदर्शित करावे यासाठी आवश्यक माहिती देतो.

  • उत्तराचा आधार घेण्यासाठी ChatGPT ला संरचित तथ्ये देतो.

  • प्रवाहाला गरज असेल तेव्हा पुढे काय घडावे हे सांगतो, त्यामुळे मॉडेलला अंदाज बांधावा लागत नाही.

विजेटच्या क्रियांनी थ्रेडमध्ये संदिग्ध मजकूर आणू नये. वापरकर्त्याने काय केले आणि पुढे काय घडायला हवे, हे त्यांनी सांगावे.

हस्तांतरणाचे टप्पे स्पष्ट झाल्यानंतर विश्वासार्हता वाढली.

टूलच्या आउटपुटमध्ये आणि विजेटच्या क्रियांमध्ये असलेल्या लहान, स्पष्ट सूचनांचे मॉडेल पालन करते.

आम्ही वापरलेली छोटी Pydantic रचना खाली दिली आहे. विजेट दाखवल्यावर त्याला लागणारी संरचित माहिती आणि सत्रात ChatGPT ने वापरायची तथ्ये आउटपुट फील्डमध्ये असतात. सहाय्यकाने पुढे काय करावे हे सांगणारी लहान ओळ agent_directions मध्ये असते. कारण ऐच्छिक आहे.

Python

from typing import Generic, TypeVar
from pydantic import BaseModel
T = TypeVar("T")
class AgentDirections(BaseModel): assistant_instruction: str reason: str | None = None
class ToolResults(BaseModel, Generic[T]): agent_directions: AgentDirections output: T

विजेट लहान ठेवा

परिणामकारक विजेटनी एक निर्णय हाताळला आणि मग नियंत्रण परत दिले. विजेटचे छोट्या ॲhcOd/s रूपांतर करण्यापेक्षा लहान याद्या, पुष्टीकरणे किंवा नेमकी पुनरावलोकन स्क्रीन अधिक परिणामकारक ठरली. प्रवाह अधिक निश्चित हवा असताना, सोपी पडताळणी किंवा ठराविक पुढील टप्पा यांसारखे विजेटमधील थोडे लॉजिक उपयुक्त ठरले.

विजेट संदेशांमध्ये तृतीयपुरुषी भाषा

विजेटचे पुढील संदेश वापरकर्त्याच्या चॅटसारखे लिहिणे आम्ही थांबवले. उदाहरणार्थ, “मी निवडले...”, “मी पुष्टी केली...”. वापरकर्त्याने काय केले याचे छोटे अहवाल म्हणून आम्ही ते लिहिले. उदाहरणार्थ, “वापरकर्त्याने निवडले...”, “वापरकर्त्याने पुष्टी केली...”. आम्ही ही पद्धत वापरून पाहिली, कारण ChatGPT विजेटचे संदेश वापरकर्ता संदेशांऐवजी टूल्सचे संदेश म्हणून जोडत होते.

पुढील टप्पा स्पष्ट असल्यास थेट क्रिया

एखाद्या बटणातून पुढील टूल कॉल स्पष्ट होत असेल, तर आणखी एक चॅट फेरी लादण्यापेक्षा विजेटला ते थेट सुरू करू देणे अधिक परिणामकारक ठरले. पुढील टूल कॉलसाठी ChatGPT कडून माहिती आवश्यक नसेल, तरच हे लागू होते.

यामुळे निश्चित प्रवाह बंधनकारक करणे सोपे झाले आणि आणखी एक चॅट फेरी टाळल्याने विलंबही कमी झाला.

त्रुटी हाताळणी

टूल कॉल अयशस्वी झाल्यास, आम्ही टूलमधून योग्य MCP त्रुटी संकेत आणि लहान, स्पष्ट संदेश परत केले. त्यामुळे अयशस्वी कॉलबाबत ChatGPT कडे वाचण्यासाठी ठोस माहिती होती आणि वापरकर्त्याला समस्या समजावून सांगता आली, योग्य पुढील टप्पा निवडता आला किंवा दोन्ही कामे करता आली.

टूल संदर्भाचे व्यवस्थापन

आम्ही सत्राची स्थिती आमच्या सर्व्हरवर ठेवली. ChatGPT टूल कॉलसोबत सत्रापुरता संदर्भ पाठवते. FastMCP मध्ये आम्ही प्रत्येक टूलला Context पॅरामीटर दिला, ज्याने हँडलरला ती स्थिती वाचता आणि अपडेट करता आली.

  • प्रत्येक कॉलमध्ये ChatGPT ला स्थिर आयडी आणि आधीचे परिणाम पुन्हा टूलचे आर्ग्युमेंट म्हणून पाठवायला सांगण्याऐवजी आम्ही ते सत्रात ठेवले.

  • टूल कॉल्सची चक्रे निर्माण झाल्यास, आम्ही डुप्लिकेट कॉल्स ओळखून टूलच्या परिणामातून स्पष्ट त्रुटी परत करू शकत होतो.

  • डीबगिंग आणि सहाय्यासाठी सत्र नोंदी आमच्याकडेच राहिल्या.

काय परिणामकारक ठरले नाही

मॉडेल पुढील टप्पा ओळखेल असे गृहीत धरणे

सुरुवातीला आम्ही विजेट दाखवले, मॉडेलला “समजले” असे गृहीत धरले आणि योग्य पुढील टूल कॉलची वाट पाहिली. कधी कधी ते घडले. पण अनेकदा घडले नाही.

स्पष्ट हस्तांतरण नसल्यास, आम्हाला क्रिया हवी असताना ChatGPT ने सारांश तयार करणे, वापरकर्त्याला निवड पुन्हा सांगायला लावणे किंवा थांबायला हवे असताना नियोजन सुरू ठेवणे असे घडू शकले असते.

मॉडेल पुढील टप्पा ओळखेल अशी आशा ठेवण्याऐवजी पुढील टप्पा स्ट्रक्चर्ड आउटपुट्स आणि विजेटच्या माहितीमध्ये स्पष्टपणे नमूद करणे हा उपाय होता.

अर्थाला विविध स्तरांमध्ये विभागणे

ॲप्स SDK दस्तऐवजांप्रमाणे आम्ही प्रतिसादांना टूलचा आउटपुट, लपवलेला मेटाडेटा आणि चॅट मजकूर यांमध्ये कल्पकतेने विभागण्याचा प्रयत्न केला. पण विजेटमध्ये लपवलेला मेटाडेटा आम्हाला वाचता आला नाही. त्यामुळे आम्हाला ही पद्धत वापरता आली नाही.

मॉडेलपासून टूल्स लपवणे

ॲप्स SDK च्या दस्तऐवजांप्रमाणे काही टूल्स एजंटच्या टूल यादीतून वगळता येतात, ज्याने एजंटने ती निवडू नयेत; मात्र विजेटमधून त्यांना कॉल करता येते. दृश्यमानता app-only केल्यानंतर ती टूल्स केवळ एजंटसाठीच नव्हे, तर विजेटमधूनही उपलब्ध होणे बंद झाले. एजंटला टूल दिसणार नाही, पण विजेटला दिसेल अशी व्यवस्था आम्हाला कधीच करता आली नाही.

अस्पष्ट त्रुटी

काहीच उपयुक्त घडले नसताना गप्प राहणे किंवा सरधोपट “यशस्वी” संदेश देणे हे स्पष्ट त्रुटीपेक्षा वाईट होते. म्हणून आम्ही टूल आणि विजेटच्या अपयशांना योग्य आउटपुट मानले: एखादा टप्पा पुढे जाऊ शकत नसल्यास, आम्ही ते स्पष्ट भाषेत सांगितले आणि ठळक त्रुटी परत केली. त्यामुळे वापरकर्ते दिसणाऱ्या, पण पुढे न नेणाऱ्या विजेटकडे पाहत बसले नाहीत. यामुळे वापर सुधारला आणि मॉडेलचे वर्तन अधिक विश्वासार्ह झाले.

शेवटले विचार

कमी सानुकूल प्लॅटफॉर्मच्या कामासह ChatGPT मध्ये कार्यप्रवाह तयार करणे हे तुमचे उद्दिष्ट असेल, तर ॲप्स SDK हा त्याचा व्यावहारिक मार्ग आहे. वेग मिळवण्यासाठी आणि वापरकर्ते जिथे आधीच काम करतात तिथे त्यांच्यापर्यंत पोहोचण्यासाठी तुम्ही काही नियंत्रण सोडता.

प्रवाहाची प्रत्येक शाखा, वापरकर्ता इंटरफेस आणि प्रत्येक टप्प्याचा निर्णयकर्ता तुमच्या नियंत्रणात हवा असल्यास, सुरुवातीपासूनच स्वतःच्या एजंट स्टॅकचे नियोजन करा. केवळ ChatGPT मध्ये निर्मिती करणे कालांतराने तुमच्या गरजांसाठी अपुरे पडण्याची शक्यता आहे.

चॅट, प्रमाणीकरण आणि एजंटची जोडणी स्वतः तयार करण्यापूर्वी तुमचा MCP सर्व्हर ChatGPT मध्ये चालवण्यासाठीही तुम्ही ॲप्स SDK वापरू शकता. उत्पादनाला गरज भासल्यावर नंतर स्वतःच्या स्टॅककडे वळता येते.

याच परिस्थितीतील टीम्सने पुढे हे करावे: स्पष्ट परिणाम असलेला एक कार्यप्रवाह निवडा, चॅट, टूल्स आणि विजेट यांमधील हस्तांतरणाचे टप्पे लिहून ठेवा आणि प्रॉम्प्ट सुधारण्यावर बराच वेळ घालवण्यापूर्वी पुनर्प्रयत्न व त्रुटींची कठोर चाचणी करा.

लेखक

Malan Evans