एप्लिकेशन डेवलपमेंट में AI क्रांति को अपनाना मानव‑AI इंटरैक्शन के एक नए दौर की शुरुआत है। जहाँ व्यवसाय उपयोगकर्ता अनुभव बेहतर करने के लिए AI का लाभ उठाते हैं, वहीं LLM-आधारित समाधानों का एकीकरण सामग्री की अखंडता, शुद्धता और नैतिक मानकों को बनाए रखने में चुनौतियाँ भी लाता है।
जिम्मेदार AI मॉडरेशन की आवश्यकता तब और स्पष्ट हो जाती है जब एप्लिकेशन नियंत्रित वातावरण से बाहर फैलते हैं, जहाँ उपयोगकर्ताओं को युक्तिसंगत और सटीक उत्तर देना तकनीकी रूप से बहुत आसान नहीं तो भी अत्यंत महत्वपूर्ण होता है।
उदाहरण के लिए, कस्टमर सर्विस इंटरैक्शन में ग़लत जानकारी या अनुचित सामग्री ग्राहक असंतोष और यहाँ तक कि व्यवसाय की साख को नुकसान पहुँचा सकती है। लेकिन एक डेवलपर के रूप में, आप कैसे सुनिश्चित करेंगे कि आपका AI-आधारित एप्लिकेशन आपके उपयोगकर्ताओं को युक्तिसंगत और सटीक उत्तर दे रहा है? यही वह जगह है जहाँ AI मॉडरेशन काम आता है!
इस लेख में, हम GPT मॉडलों का उपयोग करके GPT-आधारित एप्लिकेशनों का मॉडरेशन करने की एक तकनीक पर चर्चा करेंगे।
GPT-आधारित क्वालिटी एजेंट बनाना
AI गुणवत्ता का मॉडरेशन करने में LLMs के साथ काम करते समय गैर‑पक्षपाती और उपयुक्त उत्तर जनरेशन सुनिश्चित करना भी शामिल है। OpenAI पहले ही ऐसी मॉडरेशन जरूरतों के लिए एक API पेश कर चुका है। यदि आप अपने मॉडल से पक्षपाती या अनुचित उत्तरों का पता लगाने या उपयोगकर्ता के गलत व्यवहार को संबोधित करने के इच्छुक हैं, तो आपको ChatGPT Moderation API: Input/Output Control शीर्षक वाले लेख में उपयोगी जानकारियाँ मिलेंगी।
हालाँकि, यह लेख AI मॉडरेशन के लिए एक अलग दृष्टिकोण अपनाता है। यहाँ हमारा फोकस मॉडल के उत्तरों की गुणवत्ता को सटीकता और उपयोगकर्ता आवश्यकताओं की पूर्ति के लिहाज़ से सुनिश्चित करने पर है। मेरी जानकारी में, इस विशेष उद्देश्य के लिए आधिकारिक रूप से कोई समर्पित एन्डपॉइंट मौजूद नहीं है।
फिर भी, चूँकि हम विभिन्न एप्लिकेशनों में GPT मॉडलों का व्यापक रूप से उपयोग करते हैं, तो क्यों न इन्हीं मॉडलों को एक‑दूसरे की क्वालिटी जाँचने के लिए इस्तेमाल किया जाए?
हम GPT मॉडलों का इस्तेमाल उपयोगकर्ता के अनुरोधों पर मॉडल द्वारा जनरेट किए गए आउटपुट का ही आकलन करने के लिए कर सकते हैं। यह टेस्टिंग तरीका अस्पष्ट और गलत उत्तरों को रोकने में मदद करता है और उपयोगकर्ता की जरूरतें प्रभावी ढंग से पूरी करने की मॉडल की क्षमता को बढ़ाता है।
परिसीमा और उद्देश्य
यह लेख आपके एप्लिकेशन की परिधि के भीतर गुणवत्ता और शुद्धता के संदर्भ में GPT-आधारित एप्लिकेशनों का मॉडरेशन करने हेतु GPT मॉडलों का उपयोग कैसे करें को कवर करता है।
उदाहरण के लिए, यदि आप अपने बिज़नेस चैटबॉट को पावर करने के लिए GPT मॉडलों का उपयोग कर रहे हैं, तो मुझे यकीन है कि आप यह सुनिश्चित करने में अत्यधिक रुचि रखेंगे कि आपका चैटबॉट आपके कैटलॉग आइटम या उनकी विशेषताओं के बाहर कोई जानकारी न दे।
आने वाले सेक्शनों में, हम इसी आखिरी उदाहरण को openai Python पैकेज और मशहूर Jupyter Notebooks के माध्यम से OpenAI API को साधारण कॉल्स करके साकार करेंगे।
मुख्य उद्देश्य एक साधारण LLM-आधारित एप्लिकेशन बनाना और उसके आउटपुट को LLM-आधारित क्वालिटी चेकर से मॉडरेट करना होगा। हमारे उदाहरण में, हमें अपना सैंपल कस्टमर सर्विस एजेंट, क्वालिटी चेकर एजेंट — जिसे अब से QA एजेंट कहेंगे — और सबसे महत्वपूर्ण, दोनों के बीच इंटरैक्शन परिभाषित करना होगा।
निम्नलिखित स्कीमा उपर्युक्त वर्कफ़्लो का अच्छा चित्रण देता है:
स्वयं निर्मित चित्र। मॉडरेशन वर्कफ़्लो का निरूपण: 1. उपयोगकर्ता LLM-आधारित एप्लिकेशन (इस उदाहरण में कस्टमर सर्विस चैटबॉट) को अनुरोध भेजता है। 2. चैटबॉट उत्तर तैयार करता है, पर पहले उसे QA एजेंट को भेजता है। 3. QA एजेंट जाँचने के बाद उपयुक्त उत्तर उपयोगकर्ता को भेजता है।
चलिए, कदम-दर-कदम आगे बढ़ते हैं!
GPT एजेंट्स का निर्माण
आइए किसी स्टोर की कस्टमर सर्विस के लिए एक संवादात्मक एजेंट बनाकर शुरुआत करें।
यदि आपके पास पहले से कोई कार्यशील LLM-पावर्ड एप्लिकेशन है, तो इस पहले सेक्शन को छोड़ने या अपना मनपसंद उदाहरण लागू करने के लिए स्वतंत्र हैं! और यदि आप अब भी सोच रहे हैं कि आपका व्यवसाय LLM-आधारित एप्लिकेशन से लाभान्वित हो सकता है या नहीं, तो एक रोचक पॉडकास्ट चर्चा है जिसे आपको सुनना चाहिए!
एक सैंपल कस्टमर सर्विस चैटबॉट तैयार करना
मान लीजिए हम अपनी दुकान के लिए एक कस्टमर सर्विस एजेंट बना रहे हैं। हम इस कस्टमर एजेंट के पीछे ChatGPT जैसे किसी मॉडल का उपयोग करना चाहते हैं ताकि उपयोगकर्ता प्रश्नों को स्वाभाविक भाषा में समझने और स्वाभाविक तरीके से उत्तर देने की उसकी क्षमता का लाभ ले सकें।
अपने कस्टमर सर्विस चैटबॉट को परिभाषित करने के लिए हमें दो मुख्य घटकों की आवश्यकता होगी:
एजेंट को हमारे बिज़नेस की परिधि तक सीमित रखने के लिए एक नमूना प्रोडक्ट कैटलॉग। अपने प्रोडक्ट कैटलॉग को मॉडल में फीड करके, हम मॉडल को बता सकते हैं कि उसे उपयोगकर्ताओं को कौन‑सी जानकारी देनी है।
मॉडल के उच्च-स्तरीय व्यवहार को परिभाषित करने के लिए एक सिस्टम मैसेज। यद्यपि GPT मॉडल अनेक कार्यों पर सामान्य तौर पर प्रशिक्षित हैं, आप तथाकथित सिस्टम मैसेज का उपयोग करके मॉडल के व्यवहार को सीमित कर सकते हैं।
अंततः, अन्य किसी भी LLM-आधारित एप्लिकेशन की तरह, हमें अपने स्क्रिप्ट्स से OpenAI API कॉल करने का एक तरीका चाहिए। इस लेख में, मैं केवल openai पैकेज पर निर्भर निम्नलिखित इम्प्लीमेंटेशन का उपयोग करूँगा:
import openai
import os
# Get the OpenAI key from the environment
openai_api_key = os.environ["OPENAI_API_KEY"]# Simple OpenAI API call with a memory of past interactionsdefgpt_call(prompt, message_history, model="gpt-3.5-turbo"):
message_history.append({'role':'user','content': prompt})
response = openai.ChatCompletion.create(
model=model,
messages=message_history
)
response_text = response.choices[0].message["content"]
message_history.append({'role':'assistant','content': response_text})return response_textसंचालित द्वारा
इसके पीछे विचार यह है कि प्रत्येक मॉडल इंस्टांस के लिए एक अलग मैसेज हिस्ट्री — जिसमें सिस्टम मैसेज शामिल हो — इनिशियलाइज़ की जाए और मॉडल के साथ होने वाले आगामी इंटरैक्शनों से उसे अपडेट करते रहें।
अब जब हमने आवश्यक बिल्डिंग ब्लॉक्स पहचान लिए हैं, तो आइए इन्हें एक साथ जोड़ते हैं:
# Define our sample product catalog
product_information ="""
{ "name": "UltraView QLED TV", "category": "Televisions and Home Theater Systems", "brand": "UltraView", "model_number": "UV-QLED65", "warranty": "3 years", "rating": 4.9, "features": [ "65-inch QLED display", "8K resolution", "Quantum HDR", "Dolby Vision", "Smart TV" ], "description": "Experience lifelike colors and incredible clarity with this high-end QLED TV.", "price": 2499.99 }
{ "name": "ViewTech Android TV", "category": "Televisions and Home Theater Systems", "brand": "ViewTech", "model_number": "VT-ATV55", "warranty": "2 years", "rating": 4.7, "features": [ "55-inch 4K display", "Android TV OS", "Voice remote", "Chromecast built-in" ], "description": "Access your favorite apps and content on this smart Android TV.", "price": 799.99 }
{ "name": "SlimView OLED TV", "category": "Televisions and Home Theater Systems", "brand": "SlimView", "model_number": "SL-OLED75", "warranty": "2 years", "rating": 4.8, "features": [ "75-inch OLED display", "4K resolution", "HDR10+", "Dolby Atmos", "Smart TV" ], "description": "Immerse yourself in a theater-like experience with this ultra-thin OLED TV.", "price": 3499.99 }
{ "name": "TechGen X Pro", "category": "Smartphones and Accessories", "brand": "TechGen", "model_number": "TG-XP20", "warranty": "1 year", "rating": 4.5, "features": [ "6.4-inch AMOLED display", "128GB storage", "48MP triple camera", "5G", "Fast charging" ], "description": "A feature-packed smartphone designed for power users and mobile enthusiasts.", "price": 899.99 }
{ "name": "GigaPhone 12X", "category": "Smartphones and Accessories", "brand": "GigaPhone", "model_number": "GP-12X", "warranty": "2 years", "rating": 4.6, "features": [ "6.7-inch IPS display", "256GB storage", "108MP quad camera", "5G", "Wireless charging" ], "description": "Unleash the power of 5G and high-resolution photography with the GigaPhone 12X.", "price": 1199.99 }
{ "name": "Zephyr Z1", "category": "Smartphones and Accessories", "brand": "Zephyr", "model_number": "ZP-Z1", "warranty": "1 year", "rating": 4.4, "features": [ "6.2-inch LCD display", "64GB storage", "16MP dual camera", "4G LTE", "Long battery life" ], "description": "A budget-friendly smartphone with reliable performance for everyday use.", "price": 349.99 }
{ "name": "PixelMaster Pro DSLR", "category": "Cameras and Camcorders", "brand": "PixelMaster", "model_number": "PM-DSLR500", "warranty": "2 years", "rating": 4.8, "features": [ "30.4MP full-frame sensor", "4K video", "Dual Pixel AF", "3.2-inch touchscreen" ], "description": "Unleash your creativity with this professional-grade DSLR camera.", "price": 1999.99 }
{ "name": "ActionX Waterproof Camera", "category": "Cameras and Camcorders", "brand": "ActionX", "model_number": "AX-WPC100", "warranty": "1 year", "rating": 4.6, "features": [ "20MP sensor", "4K video", "Waterproof up to 50m", "Wi-Fi connectivity" ], "description": "Capture your adventures with this rugged and versatile action camera.", "price": 299.99 }
{ "name": "SonicBlast Wireless Headphones", "category": "Audio and Headphones", "brand": "SonicBlast", "model_number": "SB-WH200", "warranty": "1 year", "rating": 4.7, "features": [ "Active noise cancellation", "50mm drivers", "30-hour battery life", "Comfortable earpads" ], "description": "Immerse yourself in superior sound quality with these wireless headphones.", "price": 149.99 }
"""# Define a proper system message for our use case
customer_agent_sysmessage =f"""
You are a customer service agent that responds to \
customer questions about the products in the catalog. \
The product catalog will be delimited by 3 backticks, i.e. ```. \
Respond in a friendly and human-like tone giving details with \
the information available from the product catalog. \
Product catalog: ```{product_information}```
"""# Initialize your model's memory
customer_agent_history =[{'role':'system','content': customer_agent_sysmessage}]संचालित द्वारा
जैसा कि हम देखते हैं, हमने jsonl फ़ॉर्मेट में एक सैंपल कैटलॉग (product_catalog) और तीन आवश्यकताओं वाला एक सिस्टम मैसेज (customer_agent_sysmessage) परिभाषित किया है:
कस्टमर सर्विस एजेंट की तरह व्यवहार करें।
दोस्ताना और मानवीय लहजे में उत्तर दें।
सिर्फ कैटलॉग से जानकारी प्रदान करें।
अंत में, हमने कस्टमर एजेंट (customer_agent_history) के लिए मैसेज हिस्ट्री भी इनिशियलाइज़ कर दी है।
यह ध्यान देने योग्य है कि सिस्टम मैसेज और अतिरिक्त जानकारी लिखते समय हमने एक विशिष्ट शैली अपनाई है, जैसे ट्रिपल बैकटिक्स। यह प्रॉम्प्टिंग की बेहतरीन प्रैक्टिसेज में से एक है! यदि आप और सर्वोत्तम प्रथाओं में रुचि रखते हैं, तो वेबिनार A Beginner's Guide to Prompt Engineering with ChatGPT आपके लिए है!
अब इस बिंदु पर, हम अपना सैंपल कस्टमर चैटबॉट इस प्रकार उपयोग कर सकते हैं:
user_prompt ="Which is the best TV in your shop?"
customer_agent_response = gpt_call(user_prompt, customer_agent_history)print(customer_agent_response)# Output: In our shop, the UltraView QLED TV is considered to be the best TV. It has a rating of 4.9 and offers a 65-inch QLED display with 8K resolution. It also features Quantum HDR, Dolby Vision, and Smart TV capabilities. With its lifelike colors and incredible clarity, this high-end QLED TV delivers an immersive viewing experience. The UltraView QLED TV is priced at $2499.99 and comes with a warranty of 3 years.संचालित द्वारा
यह एक स्वाभाविक उत्तर लगता है, है न? आइए एक फॉलो‑अप इंटरैक्शन करते हैं:
user_prompt ="I want to buy the latest iphone. Can you help me?"
customer_agent_response = gpt_call(user_prompt, customer_agent_history)print(customer_agent_response)# Output: Of course! I'd be happy to help you find the latest iPhone. However, as it appears to be missing from the product catalog, I'm unable to provide specific details on the latest iPhone model at this time. I recommend checking our website or contacting our store directly for the most up-to-date information on the latest iPhone models available. Our knowledgeable staff will be able to assist you in selecting the perfect iPhone that meets your needs and preferences.संचालित द्वारा
ठीक बात! एजेंट यह पहचान पाने में सक्षम है कि हमारे प्रोडक्ट कैटलॉग में iPhone नहीं है और उसी अनुसार उपयोगकर्ता को उत्तर देता है। यह उपयोगकर्ता को स्टोर से संपर्क करने के लिए भी प्रोत्साहित करता है!
एक और अनुरोध आज़माते हैं:
user_prompt ="Can you help me buy a Samsung TV?"
customer_agent_response = gpt_call(user_prompt, customer_agent_history)print(customer_agent_response)# Output: Absolutely! I'd be delighted to assist you in purchasing a Samsung TV. Could you please provide me with some specific requirements or preferences you have in mind? This way, I can recommend the best Samsung TV model that suits your needs.संचालित द्वारा
सही, लगता है कुछ मामलों में एजेंट कैटलॉग की जानकारी को नज़रअंदाज़ कर सकता है। ऐसे में, QA एजेंट अवांछित उत्तरों को फ़िल्टर करने में मदद कर सकता है।
हमारा कस्टम QA एजेंट विकसित करना
जैसा कि हमने पहले चर्चा की, QA एजेंट का उद्देश्य उपयोगकर्ता क्वेरी और प्रोडक्ट कैटलॉग के संदर्भ में कस्टमर सर्विस एजेंट की गुणवत्ता की जाँच करना है। इसलिए, यह महत्वपूर्ण है कि एक सिस्टम मैसेज परिभाषित किया जाए जो यही उच्च‑स्तरीय व्यवहार सेट करे:
qa_sysmessage =f"""
You are a quality assistant that evaluates whether \
a customer service agent answers to the customer \
questions correctly. \
You must also validate that the customer service agent \
provides information only from the product catalog \
of our store and gently refuses any other product outside the catalog. \
The customer message, the customer service agent's response, and \
the product catalog will be delimited by \
3 backticks, i.e. ```. \
Give a reason for your answer.
"""संचालित द्वारा
कस्टमर एजेंट के मामले में, उपयोगकर्ता प्रॉम्प्ट अप्रत्याशित होता है क्योंकि यह उपयोगकर्ता की आवश्यकता और लेखन शैली पर निर्भर करता है। QA एजेंट के मामले में, हम ही मॉडल को उपयोगकर्ता अनुरोध, कस्टमर एजेंट का उत्तर और प्रोडक्ट कैटलॉग पास करते हैं। अतः हमारा प्रॉम्प्ट हमेशा समान संरचना का होगा, बस उपयोगकर्ता क्वेरी (user_request) और मॉडल का उत्तर (customer_agent_response) बदलते रहेंगे:
एक बार सिस्टम मैसेज और QA प्रॉम्प्ट परिभाषित हो जाने पर, हम नवीनतम कस्टमर सर्विस उत्तर के साथ QA एजेंट को इस तरह टेस्ट कर सकते हैं:
# Initialize the QA-agent memory
qa_history =[{'role':'system','content': qa_sysmessage}]# Call the QA-agent with our templated query
qa_response = chatgpt_call(qa_prompt, qa_history)print(qa_response)# Output: Quality Check: Incorrect Response
Feedback: The customer asked forhelpin buying a Samsung TV but the agent did not address that request. The agent should have mentioned that they only have access to the product catalog of our store and can provide information and recommendations based on that catalog. The agent should have gently refused any other product outside the catalog.संचालित द्वारा
QA-एजेंट के उत्तर का आकलन करने के लिए, आइए उस इंटरैक्शन को तोड़कर देखें जिसे वह विश्लेषित करेगा:
उपयोगकर्ता का अनुरोध: “Can you help me buy a Samsung TV?”
कस्टमर एजेंट का उत्तर: “Absolutely! I'd be delighted to assist you in purchasing a Samsung TV. Could you please provide me with some specific requirements or preferences you have in mind? This way, I can recommend the best Samsung TV model that suits your needs.”
QA एजेंट: “Quality Check: Incorrect ResponseFeedback: The customer asked for help in buying a Samsung TV but the agent did not address that request. The agent should have mentioned that they only have access to the product catalog of our store and can provide information and recommendations based on that catalog. The agent should have gently refused any other product outside the catalog.”
क्वालिटी एजेंट कस्टमर एजेंट के अनुचित उत्तरों को भाँप पाने में सक्षम है!
एजेंट्स के बीच इंटरैक्शन
अब जब हमारे पास दोनों एजेंट स्वतंत्र रूप से काम कर रहे हैं, तो उनके बीच इंटरैक्शन परिभाषित करने का समय है।
हम दोनों एजेंट्स और उनकी आवश्यकताओं को एक साधारण स्कीमा में दर्शा सकते हैं:
स्वयं निर्मित चित्र। प्रत्येक एजेंट के तीन बिल्डिंग ब्लॉक्स का निरूपण: सिस्टम मैसेज (नीला), मॉडल इनपुट (हरा), और मॉडल आउटपुट (पीला)।
अब आगे क्या? अब हमें दोनों मॉडलों के बीच इंटरैक्शन लागू करना है!
यहाँ गलत उत्तरों को फ़िल्टर करने के लिए एक सुझाया गया विचार है:
शुरुआत में, हम ग्राहक एजेंट को उपयोगकर्ता के प्रश्न के आधार पर उत्तर जनरेट करने देते हैं। फिर, यदि QA एजेंट मानता है कि ग्राहक एजेंट का उत्तर उपयोगकर्ता के प्रश्न के लिए और प्रोडक्ट कैटलॉग के अनुरूप पर्याप्त है, तो हम वही उत्तर सीधे उपयोगकर्ता को भेज देते हैं।
इसके विपरीत, यदि QA एजेंट यह निर्धारित करता है कि उत्तर उपयोगकर्ता की माँग पूरी नहीं करता या कैटलॉग के संदर्भ में अवास्तविक जानकारी शामिल करता है, तो हम ग्राहक एजेंट से उपयोगकर्ता को भेजने से पहले उत्तर सुधारने के लिए कह सकते हैं।
इस विचार के आधार पर, हम अपने मूल स्कीमा के आखिरी हिस्से को इस प्रकार बेहतर कर सकते हैं:
स्व-निर्मित छवि। विस्तारित मॉडरेशन वर्कफ़्लो का निरूपण। हम LLM-आधारित एप्लिकेशन को फीडबैक देने के लिए QA एजेंट के निर्णय का उपयोग कर सकते हैं।
एजेंट्स की इंटरैक्शन का ऑर्केस्ट्रेशन
QA एजेंट को फ़िल्टर के रूप में इस्तेमाल करने के लिए, हमें सुनिश्चित करना होगा कि वह हर इटरेशन में एक समान और सुसंगत आउटपुट दे।
इसे हासिल करने का एक तरीका है कि QA एजेंट के सिस्टम मैसेज में हल्का-सा बदलाव करें और उससे केवल तभी True आउटपुट करने को कहें जब ग्राहक एजेंट का उत्तर पर्याप्त हो, अन्यथा False:
qa_sysmessage =f"""
You are a quality assistant that evaluates whether \
a customer service agent answers to the customer \
questions correctly. \
You must also validate that the customer service agent \
provides information only from the product catalog \
of our store and gently refuses any other product outside the catalog. \
The customer message, the customer service agent's response and \
the product catalog will be delimited by \
3 backticks, i.e. ```. \
Respond with True or False no punctuation: \
True - if the agent sufficiently answers the question \
AND the response correctly uses product information \
False - otherwise
"""संचालित द्वारा
अतः, जब हम नवीनतम ग्राहक एजेंट के उत्तर का फिर से मूल्यांकन करेंगे, तो हमें केवल एक बूलियन आउटपुट मिलेगा:
# Let's reinitialize the memory
qa_history =[{'role':'system','content': qa_sysmessage}]
qa_response = gpt_call(qa_prompt, qa_history)print(qa_response)# Output: Falseसंचालित द्वारा
हम इस बूलियन मान का उपयोग आगे कर सकते हैं—यदि QA एजेंट का मूल्यांकन True है तो उत्तर उपयोगकर्ता को भेजने के लिए, या—यदि QA एजेंट का मूल्यांकन False है तो मॉडल को नया उत्तर बनाने का दूसरा मौका देने के लिए।
एजेंट्स की इंटरैक्शन का प्रदर्शन
आइए सब कुछ एक साथ जोड़ते हैं!
चूँकि हम पहले ही दोनों मेमोरियाँ—उनके संबंधित सिस्टम मैसेज और अतिरिक्त जानकारी के साथ—इनिशियलाइज़ कर चुके हैं, हर ग्राहक अनुरोध को निम्न प्रकार प्रोसेस किया जा सकता है:
user_prompt ="Can you help me buy a Samsung TV?"
customer_agent_response = gpt_call(user_prompt, customer_agent_history)
qa_response = gpt_call(qa_prompt, qa_history)if qa_response =="False":print("The chatbot response is not sufficient!")else:print("Sending response to user...")print(customer_agent_response)संचालित द्वारा
जैसा कि ऊपर वर्णित है, हमने उत्तरों को उनकी शुद्धता के आधार पर फ़िल्टर किया है। अनुपयुक्त उत्तरों के साथ क्या करना है, इसका निर्णय मैं आप पर छोड़ता/छोड़ती हूँ। हमने ग्राहक एजेंट को फीडबैक भेजने और उससे दोबारा प्रयास करने के लिए कहने का सुझाव दिया है, पर क्यों न इसके बजाय बेहतर उत्तर के लिए QA एजेंट से ही पूछें? कई संभावनाएँ हैं!
निष्कर्ष
इस लेख में, हमने समान प्रकार के अन्य मॉडल इंस्टेंस के लिए GPT मॉडलों को मॉडरेटर के रूप में उपयोग करने की संभावनाएँ खोजीं। हमने दर्शाया कि वही शक्तिशाली क्षमताएँ, जिनकी वजह से हम अपनी एप्लिकेशनों में LLM मॉडलों का उपयोग करते हैं, उपयोगकर्ता इंटरैक्शन की शुद्धता और अखंडता बढ़ाने में भी मदद कर सकती हैं।
प्रचलित भ्रांतियों के विपरीत, मॉडरेशन लेवल्स लागू करना आवश्यक रूप से हमारी एप्लिकेशन की जटिलता बढ़ाने का पर्याय नहीं है, और जैसा कि हमने दिखाया, कई बार यह कुछ अच्छी तरह से डिज़ाइन की गई कोड की पंक्तियों से ही संभव हो जाता है, जिससे एप्लिकेशन की कार्यक्षमता में उल्लेखनीय उन्नयन होता है।
आज की AI-चालित दुनिया में, जिम्मेदार LLM मॉडरेशन अपरिहार्य है। यह सिर्फ एक विकल्प नहीं, बल्कि एक नैतिक दायित्व है। AI मॉडरेशन को एकीकृत करके, हम सुनिश्चित करते हैं कि हमारी एप्लिकेशनें केवल शक्तिशाली ही नहीं, बल्कि भरोसेमंद और नैतिक भी हों। आइए जिम्मेदार विकास के साथ आगे बढ़ें ताकि हम सटीकता बनाए रखते हुए AI से लाभ उठाते रहें।
एंड्रिया वेलेंज़ुएला वर्तमान में जेनेवा, स्विट्ज़रलैंड में स्थित कण त्वरक (CERN) पर CMS प्रयोग में कार्यरत हैं। पिछले छह वर्षों से डेटा इंजीनियरिंग और विश्लेषण में विशेषज्ञता के साथ, उनकी जिम्मेदारियों में डेटा विश्लेषण और सॉफ्टवेयर विकास शामिल हैं। वह फिलहाल Medium प्रकाशन ForCode'Sake के माध्यम से डेटा-संबंधित तकनीकों के सीखने को लोकतांत्रिक बनाने की दिशा में काम कर रही हैं।
उन्होंने पॉलीटेक्निक यूनिवर्सिटी ऑफ कैटालोनिया से इंजीनियरिंग फ़िज़िक्स में बीएस और पोम्पेउ फ़ाब्रा यूनिवर्सिटी से इंटेलिजेंट इंटरेक्टिव सिस्टम्स में एमएस किया है। उनके शोध अनुभव में छवि जनरेशन के लिए Normalizing Flows जैसे पूर्व OpenAI एल्गोरिदम पर व्यावसायिक कार्य शामिल है।
गुणवत्ता के लिए AI मॉडरेशन
एप्लिकेशन डेवलपमेंट में AI क्रांति को अपनाना मानव‑AI इंटरैक्शन के एक नए दौर की शुरुआत है। जहाँ व्यवसाय उपयोगकर्ता अनुभव बेहतर करने के लिए AI का लाभ उठाते हैं, वहीं LLM-आधारित समाधानों का एकीकरण सामग्री की अखंडता, शुद्धता और नैतिक मानकों को बनाए रखने में चुनौतियाँ भी लाता है।
जिम्मेदार AI मॉडरेशन की आवश्यकता तब और स्पष्ट हो जाती है जब एप्लिकेशन नियंत्रित वातावरण से बाहर फैलते हैं, जहाँ उपयोगकर्ताओं को युक्तिसंगत और सटीक उत्तर देना तकनीकी रूप से बहुत आसान नहीं तो भी अत्यंत महत्वपूर्ण होता है।
उदाहरण के लिए, कस्टमर सर्विस इंटरैक्शन में ग़लत जानकारी या अनुचित सामग्री ग्राहक असंतोष और यहाँ तक कि व्यवसाय की साख को नुकसान पहुँचा सकती है। लेकिन एक डेवलपर के रूप में, आप कैसे सुनिश्चित करेंगे कि आपका AI-आधारित एप्लिकेशन आपके उपयोगकर्ताओं को युक्तिसंगत और सटीक उत्तर दे रहा है? यही वह जगह है जहाँ AI मॉडरेशन काम आता है!
इस लेख में, हम GPT मॉडलों का उपयोग करके GPT-आधारित एप्लिकेशनों का मॉडरेशन करने की एक तकनीक पर चर्चा करेंगे।
GPT-आधारित क्वालिटी एजेंट बनाना
AI गुणवत्ता का मॉडरेशन करने में LLMs के साथ काम करते समय गैर‑पक्षपाती और उपयुक्त उत्तर जनरेशन सुनिश्चित करना भी शामिल है। OpenAI पहले ही ऐसी मॉडरेशन जरूरतों के लिए एक API पेश कर चुका है। यदि आप अपने मॉडल से पक्षपाती या अनुचित उत्तरों का पता लगाने या उपयोगकर्ता के गलत व्यवहार को संबोधित करने के इच्छुक हैं, तो आपको ChatGPT Moderation API: Input/Output Control शीर्षक वाले लेख में उपयोगी जानकारियाँ मिलेंगी।
हालाँकि, यह लेख AI मॉडरेशन के लिए एक अलग दृष्टिकोण अपनाता है। यहाँ हमारा फोकस मॉडल के उत्तरों की गुणवत्ता को सटीकता और उपयोगकर्ता आवश्यकताओं की पूर्ति के लिहाज़ से सुनिश्चित करने पर है। मेरी जानकारी में, इस विशेष उद्देश्य के लिए आधिकारिक रूप से कोई समर्पित एन्डपॉइंट मौजूद नहीं है।
फिर भी, चूँकि हम विभिन्न एप्लिकेशनों में GPT मॉडलों का व्यापक रूप से उपयोग करते हैं, तो क्यों न इन्हीं मॉडलों को एक‑दूसरे की क्वालिटी जाँचने के लिए इस्तेमाल किया जाए?
हम GPT मॉडलों का इस्तेमाल उपयोगकर्ता के अनुरोधों पर मॉडल द्वारा जनरेट किए गए आउटपुट का ही आकलन करने के लिए कर सकते हैं। यह टेस्टिंग तरीका अस्पष्ट और गलत उत्तरों को रोकने में मदद करता है और उपयोगकर्ता की जरूरतें प्रभावी ढंग से पूरी करने की मॉडल की क्षमता को बढ़ाता है।
परिसीमा और उद्देश्य
यह लेख आपके एप्लिकेशन की परिधि के भीतर गुणवत्ता और शुद्धता के संदर्भ में GPT-आधारित एप्लिकेशनों का मॉडरेशन करने हेतु GPT मॉडलों का उपयोग कैसे करें को कवर करता है।
उदाहरण के लिए, यदि आप अपने बिज़नेस चैटबॉट को पावर करने के लिए GPT मॉडलों का उपयोग कर रहे हैं, तो मुझे यकीन है कि आप यह सुनिश्चित करने में अत्यधिक रुचि रखेंगे कि आपका चैटबॉट आपके कैटलॉग आइटम या उनकी विशेषताओं के बाहर कोई जानकारी न दे।
आने वाले सेक्शनों में, हम इसी आखिरी उदाहरण को openai Python पैकेज और मशहूर Jupyter Notebooks के माध्यम से OpenAI API को साधारण कॉल्स करके साकार करेंगे।
मुख्य उद्देश्य एक साधारण LLM-आधारित एप्लिकेशन बनाना और उसके आउटपुट को LLM-आधारित क्वालिटी चेकर से मॉडरेट करना होगा। हमारे उदाहरण में, हमें अपना सैंपल कस्टमर सर्विस एजेंट, क्वालिटी चेकर एजेंट — जिसे अब से QA एजेंट कहेंगे — और सबसे महत्वपूर्ण, दोनों के बीच इंटरैक्शन परिभाषित करना होगा।
निम्नलिखित स्कीमा उपर्युक्त वर्कफ़्लो का अच्छा चित्रण देता है:
स्वयं निर्मित चित्र। मॉडरेशन वर्कफ़्लो का निरूपण: 1. उपयोगकर्ता LLM-आधारित एप्लिकेशन (इस उदाहरण में कस्टमर सर्विस चैटबॉट) को अनुरोध भेजता है। 2. चैटबॉट उत्तर तैयार करता है, पर पहले उसे QA एजेंट को भेजता है। 3. QA एजेंट जाँचने के बाद उपयुक्त उत्तर उपयोगकर्ता को भेजता है।
चलिए, कदम-दर-कदम आगे बढ़ते हैं!
GPT एजेंट्स का निर्माण
आइए किसी स्टोर की कस्टमर सर्विस के लिए एक संवादात्मक एजेंट बनाकर शुरुआत करें।
यदि आपके पास पहले से कोई कार्यशील LLM-पावर्ड एप्लिकेशन है, तो इस पहले सेक्शन को छोड़ने या अपना मनपसंद उदाहरण लागू करने के लिए स्वतंत्र हैं! और यदि आप अब भी सोच रहे हैं कि आपका व्यवसाय LLM-आधारित एप्लिकेशन से लाभान्वित हो सकता है या नहीं, तो एक रोचक पॉडकास्ट चर्चा है जिसे आपको सुनना चाहिए!
एक सैंपल कस्टमर सर्विस चैटबॉट तैयार करना
मान लीजिए हम अपनी दुकान के लिए एक कस्टमर सर्विस एजेंट बना रहे हैं। हम इस कस्टमर एजेंट के पीछे ChatGPT जैसे किसी मॉडल का उपयोग करना चाहते हैं ताकि उपयोगकर्ता प्रश्नों को स्वाभाविक भाषा में समझने और स्वाभाविक तरीके से उत्तर देने की उसकी क्षमता का लाभ ले सकें।
अपने कस्टमर सर्विस चैटबॉट को परिभाषित करने के लिए हमें दो मुख्य घटकों की आवश्यकता होगी:
अंततः, अन्य किसी भी LLM-आधारित एप्लिकेशन की तरह, हमें अपने स्क्रिप्ट्स से OpenAI API कॉल करने का एक तरीका चाहिए। इस लेख में, मैं केवल
openaiपैकेज पर निर्भर निम्नलिखित इम्प्लीमेंटेशन का उपयोग करूँगा:इसके पीछे विचार यह है कि प्रत्येक मॉडल इंस्टांस के लिए एक अलग मैसेज हिस्ट्री — जिसमें सिस्टम मैसेज शामिल हो — इनिशियलाइज़ की जाए और मॉडल के साथ होने वाले आगामी इंटरैक्शनों से उसे अपडेट करते रहें।
यदि आप अपनी इंटरैक्शनों को संभालने का कोई अधिक अनुकूलित तरीका खोज रहे हैं, तो मैं निश्चित रूप से langchain फ्रेमवर्क उपयोग करने की सलाह दूँगा, जैसा कि हमने Building Context-Aware Chatbots: Leveraging LangChain Framework for ChatGPT में किया था।
यदि आप OpenAI API में नए हैं, तो Getting Started with the OpenAI API and ChatGPT पर वेबिनार अवश्य देखें।
अब जब हमने आवश्यक बिल्डिंग ब्लॉक्स पहचान लिए हैं, तो आइए इन्हें एक साथ जोड़ते हैं:
जैसा कि हम देखते हैं, हमने jsonl फ़ॉर्मेट में एक सैंपल कैटलॉग (
product_catalog) और तीन आवश्यकताओं वाला एक सिस्टम मैसेज (customer_agent_sysmessage) परिभाषित किया है:अंत में, हमने कस्टमर एजेंट (
customer_agent_history) के लिए मैसेज हिस्ट्री भी इनिशियलाइज़ कर दी है।यह ध्यान देने योग्य है कि सिस्टम मैसेज और अतिरिक्त जानकारी लिखते समय हमने एक विशिष्ट शैली अपनाई है, जैसे ट्रिपल बैकटिक्स। यह प्रॉम्प्टिंग की बेहतरीन प्रैक्टिसेज में से एक है! यदि आप और सर्वोत्तम प्रथाओं में रुचि रखते हैं, तो वेबिनार A Beginner's Guide to Prompt Engineering with ChatGPT आपके लिए है!
अब इस बिंदु पर, हम अपना सैंपल कस्टमर चैटबॉट इस प्रकार उपयोग कर सकते हैं:
यह एक स्वाभाविक उत्तर लगता है, है न? आइए एक फॉलो‑अप इंटरैक्शन करते हैं:
ठीक बात! एजेंट यह पहचान पाने में सक्षम है कि हमारे प्रोडक्ट कैटलॉग में iPhone नहीं है और उसी अनुसार उपयोगकर्ता को उत्तर देता है। यह उपयोगकर्ता को स्टोर से संपर्क करने के लिए भी प्रोत्साहित करता है!
एक और अनुरोध आज़माते हैं:
सही, लगता है कुछ मामलों में एजेंट कैटलॉग की जानकारी को नज़रअंदाज़ कर सकता है। ऐसे में, QA एजेंट अवांछित उत्तरों को फ़िल्टर करने में मदद कर सकता है।
हमारा कस्टम QA एजेंट विकसित करना
जैसा कि हमने पहले चर्चा की, QA एजेंट का उद्देश्य उपयोगकर्ता क्वेरी और प्रोडक्ट कैटलॉग के संदर्भ में कस्टमर सर्विस एजेंट की गुणवत्ता की जाँच करना है। इसलिए, यह महत्वपूर्ण है कि एक सिस्टम मैसेज परिभाषित किया जाए जो यही उच्च‑स्तरीय व्यवहार सेट करे:
कस्टमर एजेंट के मामले में, उपयोगकर्ता प्रॉम्प्ट अप्रत्याशित होता है क्योंकि यह उपयोगकर्ता की आवश्यकता और लेखन शैली पर निर्भर करता है। QA एजेंट के मामले में, हम ही मॉडल को उपयोगकर्ता अनुरोध, कस्टमर एजेंट का उत्तर और प्रोडक्ट कैटलॉग पास करते हैं। अतः हमारा प्रॉम्प्ट हमेशा समान संरचना का होगा, बस उपयोगकर्ता क्वेरी (
user_request) और मॉडल का उत्तर (customer_agent_response) बदलते रहेंगे:एक बार सिस्टम मैसेज और QA प्रॉम्प्ट परिभाषित हो जाने पर, हम नवीनतम कस्टमर सर्विस उत्तर के साथ QA एजेंट को इस तरह टेस्ट कर सकते हैं:
QA-एजेंट के उत्तर का आकलन करने के लिए, आइए उस इंटरैक्शन को तोड़कर देखें जिसे वह विश्लेषित करेगा:
Can you help me buy a Samsung TV?”Absolutely! I'd be delighted to assist you in purchasing a Samsung TV. Could you please provide me with some specific requirements or preferences you have in mind? This way, I can recommend the best Samsung TV model that suits your needs.”Quality Check: Incorrect ResponseFeedback: The customer asked for help in buying a Samsung TV but the agent did not address that request. The agent should have mentioned that they only have access to the product catalog of our store and can provide information and recommendations based on that catalog. The agent should have gently refused any other product outside the catalog.”क्वालिटी एजेंट कस्टमर एजेंट के अनुचित उत्तरों को भाँप पाने में सक्षम है!
एजेंट्स के बीच इंटरैक्शन
अब जब हमारे पास दोनों एजेंट स्वतंत्र रूप से काम कर रहे हैं, तो उनके बीच इंटरैक्शन परिभाषित करने का समय है।
हम दोनों एजेंट्स और उनकी आवश्यकताओं को एक साधारण स्कीमा में दर्शा सकते हैं:
स्वयं निर्मित चित्र। प्रत्येक एजेंट के तीन बिल्डिंग ब्लॉक्स का निरूपण: सिस्टम मैसेज (नीला), मॉडल इनपुट (हरा), और मॉडल आउटपुट (पीला)।
अब आगे क्या? अब हमें दोनों मॉडलों के बीच इंटरैक्शन लागू करना है!
यहाँ गलत उत्तरों को फ़िल्टर करने के लिए एक सुझाया गया विचार है:
शुरुआत में, हम ग्राहक एजेंट को उपयोगकर्ता के प्रश्न के आधार पर उत्तर जनरेट करने देते हैं। फिर, यदि QA एजेंट मानता है कि ग्राहक एजेंट का उत्तर उपयोगकर्ता के प्रश्न के लिए और प्रोडक्ट कैटलॉग के अनुरूप पर्याप्त है, तो हम वही उत्तर सीधे उपयोगकर्ता को भेज देते हैं।
इसके विपरीत, यदि QA एजेंट यह निर्धारित करता है कि उत्तर उपयोगकर्ता की माँग पूरी नहीं करता या कैटलॉग के संदर्भ में अवास्तविक जानकारी शामिल करता है, तो हम ग्राहक एजेंट से उपयोगकर्ता को भेजने से पहले उत्तर सुधारने के लिए कह सकते हैं।
इस विचार के आधार पर, हम अपने मूल स्कीमा के आखिरी हिस्से को इस प्रकार बेहतर कर सकते हैं:
स्व-निर्मित छवि। विस्तारित मॉडरेशन वर्कफ़्लो का निरूपण। हम LLM-आधारित एप्लिकेशन को फीडबैक देने के लिए QA एजेंट के निर्णय का उपयोग कर सकते हैं।
एजेंट्स की इंटरैक्शन का ऑर्केस्ट्रेशन
QA एजेंट को फ़िल्टर के रूप में इस्तेमाल करने के लिए, हमें सुनिश्चित करना होगा कि वह हर इटरेशन में एक समान और सुसंगत आउटपुट दे।
इसे हासिल करने का एक तरीका है कि QA एजेंट के सिस्टम मैसेज में हल्का-सा बदलाव करें और उससे केवल तभी
Trueआउटपुट करने को कहें जब ग्राहक एजेंट का उत्तर पर्याप्त हो, अन्यथाFalse:अतः, जब हम नवीनतम ग्राहक एजेंट के उत्तर का फिर से मूल्यांकन करेंगे, तो हमें केवल एक बूलियन आउटपुट मिलेगा:
हम इस बूलियन मान का उपयोग आगे कर सकते हैं—यदि QA एजेंट का मूल्यांकन
Trueहै तो उत्तर उपयोगकर्ता को भेजने के लिए, या—यदि QA एजेंट का मूल्यांकनFalseहै तो मॉडल को नया उत्तर बनाने का दूसरा मौका देने के लिए।एजेंट्स की इंटरैक्शन का प्रदर्शन
आइए सब कुछ एक साथ जोड़ते हैं!
चूँकि हम पहले ही दोनों मेमोरियाँ—उनके संबंधित सिस्टम मैसेज और अतिरिक्त जानकारी के साथ—इनिशियलाइज़ कर चुके हैं, हर ग्राहक अनुरोध को निम्न प्रकार प्रोसेस किया जा सकता है:
जैसा कि ऊपर वर्णित है, हमने उत्तरों को उनकी शुद्धता के आधार पर फ़िल्टर किया है। अनुपयुक्त उत्तरों के साथ क्या करना है, इसका निर्णय मैं आप पर छोड़ता/छोड़ती हूँ। हमने ग्राहक एजेंट को फीडबैक भेजने और उससे दोबारा प्रयास करने के लिए कहने का सुझाव दिया है, पर क्यों न इसके बजाय बेहतर उत्तर के लिए QA एजेंट से ही पूछें? कई संभावनाएँ हैं!
निष्कर्ष
इस लेख में, हमने समान प्रकार के अन्य मॉडल इंस्टेंस के लिए GPT मॉडलों को मॉडरेटर के रूप में उपयोग करने की संभावनाएँ खोजीं। हमने दर्शाया कि वही शक्तिशाली क्षमताएँ, जिनकी वजह से हम अपनी एप्लिकेशनों में LLM मॉडलों का उपयोग करते हैं, उपयोगकर्ता इंटरैक्शन की शुद्धता और अखंडता बढ़ाने में भी मदद कर सकती हैं।
प्रचलित भ्रांतियों के विपरीत, मॉडरेशन लेवल्स लागू करना आवश्यक रूप से हमारी एप्लिकेशन की जटिलता बढ़ाने का पर्याय नहीं है, और जैसा कि हमने दिखाया, कई बार यह कुछ अच्छी तरह से डिज़ाइन की गई कोड की पंक्तियों से ही संभव हो जाता है, जिससे एप्लिकेशन की कार्यक्षमता में उल्लेखनीय उन्नयन होता है।
आज की AI-चालित दुनिया में, जिम्मेदार LLM मॉडरेशन अपरिहार्य है। यह सिर्फ एक विकल्प नहीं, बल्कि एक नैतिक दायित्व है। AI मॉडरेशन को एकीकृत करके, हम सुनिश्चित करते हैं कि हमारी एप्लिकेशनें केवल शक्तिशाली ही नहीं, बल्कि भरोसेमंद और नैतिक भी हों। आइए जिम्मेदार विकास के साथ आगे बढ़ें ताकि हम सटीकता बनाए रखते हुए AI से लाभ उठाते रहें।
पढ़ने के लिए बहुत-बहुत धन्यवाद! यदि आपको AI मॉडरेशन का विषय पसंद आया, तो आगे की सामग्री के रूप में Promoting Responsible AI: Content Moderation in ChatGPT जारी रखने की मैं सलाह देता/देती हूँ!