Uygulama geliştirmede yapay zekâ devrimini benimsemek, insan–YZ etkileşiminde yeni bir dönemi işaret ediyor. İşletmeler kullanıcı deneyimlerini geliştirmek için YZ'den yararlanırken, LLM tabanlı çözümlerin entegrasyonu içerik bütünlüğünü, doğruluğunu ve etik standartları koruma konusunda da zorluklar getiriyor.
Sorumlu YZ moderasyonu ihtiyacı, uygulamalar kontrollü ortamların ötesine genişledikçe belirginleşiyor; kullanıcılara makul ve doğru yanıtlar sunmayı sağlamak teknik olarak her zaman çok basit olmasa da kritik önem taşıyor.
Örneğin müşteri hizmetleri etkileşimlerinde, yanlış bilgi veya uygunsuz içerik müşteri memnuniyetsizliğine ve hatta işletmenin itibarına zarar verebilir. Peki bir geliştirici olarak, YZ tabanlı uygulamanızın kullanıcılara makul ve doğru yanıtlar verdiğinden nasıl emin olabilirsiniz? İşte YZ moderasyonu tam da burada devreye giriyor!
Bu yazıda, GPT modellerini kullanarak GPT tabanlı uygulamaları denetlemeye yönelik bir teknike ineceğiz.
GPT Tabanlı Bir Kalite Aracısı Oluşturma
YZ kalitesini denetlemek, LLM'lerle çalışırken önyargısız ve uygun yanıt üretimini de güvence altına almayı içerir. OpenAI, bu tür moderasyon ihtiyaçları için tasarlanmış bir API zaten tanıttı. Modelinizden önyargılı veya uygunsuz yanıtları tespit etmek ya da kullanıcı kötü davranışlarını ele almakla ilgileniyorsanız, ChatGPT Moderation API: Girdi/Çıktı Kontrolü başlıklı yazıda değerli bilgiler bulabilirsiniz.
Bununla birlikte, bu yazı YZ moderasyonuna farklı bir yaklaşım getiriyor. Buradaki odağımız, bir modelin yanıtlarının doğruluk ve kullanıcı gereksinimlerini karşılama açısından kalitesini garanti altına almak. Bildiğim kadarıyla, özellikle bu amaca yönelik resmi bir uç nokta bulunmuyor.
Yine de, çeşitli uygulamalarda GPT modellerini yoğun şekilde kullandığımız göz önüne alındığında, neden aynı model örnekleri için onları kalite denetçisi olarak kullanmayalım?
Kullanıcının taleplerine yanıt olarak modelin ürettiği çıktıyı değerlendirmek için GPT modellerinden yararlanabiliriz. Bu test yaklaşımı belirsiz ve hatalı yanıtları önlemeye yardımcı olur ve modelin kullanıcının isteklerini etkin biçimde yerine getirme yeteneğini artırır.
Kapsam ve hedefler
Bu yazı, uygulamanızın kapsamı içinde GPT tabanlı uygulamaları kalite ve doğruluk açısından denetlemek için GPT modellerinin nasıl kullanılacağını kapsar.
Örneğin, iş sohbet botunuzu GPT modelleriyle çalıştırıyorsanız, sohbet botunuzun kataloğunuzdaki ürünler veya özellikler dışında hiçbir bilgi vermediğinden emin olmakla yakından ilgileneceğinizden eminim.
İlerleyen bölümlerde, openai Python paketi ve bilinen Jupyter Notebooks aracılığıyla OpenAI API'sine yapılacak basit çağrılar kullanarak bu son örneği hayata geçireceğiz.
Ana hedef, basit bir LLM tabanlı uygulama oluşturmak ve çıktısını LLM tabanlı bir kalite denetçisiyle denetlemek olacak. Örneğimiz için, örnek müşteri hizmetleri aracımızı, kalite denetçisi aracımızı — bundan sonra QA aracı — ve daha da önemlisi, ikisi arasındaki etkileşimleri tanımlamamız gerekecek.
Aşağıdaki şema, söz konusu iş akışının güzel bir temsilini sunar:
Tarafımızdan oluşturulan görsel. Moderasyon iş akışının temsili: 1. Kullanıcı, bu örnekte bir müşteri hizmetleri sohbet botu olan LLM tabanlı uygulamaya bir istek gönderir. 2. Sohbet botu yanıtı üretir ancak önce QA aracına gönderir. 3. QA aracı, yanıtın uygun olduğunu kontrol ettikten sonra yanıtı kullanıcıya iletir.
Adım adım ilerleyelim!
GPT Aracılarının Oluşturulması
Bir mağazanın müşteri hizmetleri için bir sohbet aracısı oluşturarak başlayalım.
Zaten çalışan bir LLM destekli uygulamanız varsa bu ilk bölümü atlamaktan ya da tercih ettiğiniz örneği uygulamaktan çekinmeyin! Ve işletmenizin LLM tabanlı bir uygulamadan fayda sağlayıp sağlayamayacağını hâlâ merak ediyorsanız, takip etmeniz gereken ilginç bir podcast tartışması var!
Örnek bir müşteri hizmetleri sohbet botu tasarlama
Mağazamız için bir müşteri hizmetleri aracı oluşturduğumuzu hayal edelim. Bu müşteri aracısının arkasında, kullanıcı sorularını doğal dille anlama ve doğal bir şekilde yanıtlama yeteneklerinden yararlanmak için ChatGPT benzeri bir model kullanmak istiyoruz.
Müşteri hizmetleri sohbet botumuzu tanımlamak için iki temel bileşene ihtiyacımız olacak:
Acenteyi iş kapsamımıza sınırlamak için bir örnek ürün kataloğu. Ürün kataloğumuzu modele vererek, kullanıcılarımıza hangi bilgileri sunması gerektiğini modele bildirebiliriz.
Modelin yüksek seviyeli davranışını tanımlamak için bir sistem mesajı. GPT modelleri genel olarak birden fazla görevde eğitilmiş olsa da, sistem mesajlarını kullanarak modelin davranışını kısıtlayabilirsiniz.
Son olarak, diğer tüm LLM tabanlı uygulamalarda olduğu gibi, betiklerimizden OpenAI API'sini çağırmanın bir yoluna ihtiyacımız var. Bu yazıda yalnızca openai paketine dayanan aşağıdaki uygulamayı kullanacağım:
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_textAltyapı:
Bunun arkasındaki fikir, her model örneği için — sistem mesajını içeren — ayrı bir mesaj geçmişi başlatmak ve modeliyle yapılacak sonraki etkileşimlerle bunu güncel tutmaktır.
Gerekli yapı taşlarını belirlediğimize göre, bunları bir araya getirelim:
# 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}]Altyapı:
Görüldüğü gibi, jsonl formatında bir örnek katalog (product_catalog) ve üç gereksinimi olan bir sistem mesajı (customer_agent_sysmessage) tanımladık:
Bir müşteri hizmetleri aracısı gibi davran.
Samimi ve insansı bir tonla yanıt ver.
Yalnızca katalogdaki bilgilerden yararlan.
Son olarak, müşteri aracısı için mesaj geçmişini (customer_agent_history) de başlattık.
Sistem mesajını ve ek bilgileri yazarken karakteristik bir stil kullandığımıza dikkat etmek ilginç; örneğin üçlü ters tırnak işaretleri. Bu, istem vermede en iyi uygulamalardan biridir! Daha fazla iyi uygulamayla ilgileniyorsanız, ChatGPT ile İstem Mühendisliğine Başlangıç Rehberi webinarı size göre!
Bu noktada, örnek müşteri sohbet botumuzu aşağıdaki gibi kullanmaya başlayabiliriz:
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.Altyapı:
Doğal bir yanıt gibi görünüyor, değil mi? Bir takip etkileşimi yapalım:
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.Altyapı:
Makûl! Aracı, ürün kataloğumuzda iPhone olmadığını tespit edebiliyor ve kullanıcıya buna göre yanıt veriyor. Hatta kullanıcıyı mağazayla iletişime geçmeye teşvik ediyor!
Bir istek daha deneyelim:
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.Altyapı:
Doğru, bazı durumlarda aracı katalogdaki bilgileri göz ardı edebiliyor gibi görünüyor. Bu durumlarda, QA aracı istenmeyen yanıtları filtrelemeye yardımcı olabilir.
Özel QA aracımızı geliştirme
Daha önce tartıştığımız gibi, QA aracının amacı, kullanıcı sorgusu ve ürün kataloğu dikkate alındığında müşteri hizmetleri aracısının kalitesini kontrol etmektir. Bu nedenle, tam olarak bu yüksek seviyeli davranışı belirleyen bir sistem mesajı tanımlamak önemlidir:
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.
"""Altyapı:
Müşteri aracısı örneğinde, kullanıcı istemi, kullanıcının ihtiyacına ve yazım tarzına bağlı olduğundan öngörülemezdir. QA aracısı örneğinde ise kullanıcı isteğini, müşteri aracısının yanıtını ve ürün kataloğunu modele geçirmek bizim sorumluluğumuzdadır. Dolayısıyla, istemimiz her zaman aynı yapıda olacak, ancak kullanıcı sorgusu (user_request) ve modelin yanıtı (customer_agent_response) değişkenlik gösterecektir:
Sistem mesajı ve QA istemi tanımlandıktan sonra, QA aracını en son müşteri hizmetleri yanıtıyla aşağıdaki gibi test edebiliriz:
# 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.Altyapı:
QA aracının yanıtını değerlendirmek için, analiz edeceği etkileşimi parçalayalım:
Kullanıcı isteği: “Can you help me buy a Samsung TV?”
Müşteri aracısının yanıtı: “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 aracı: “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.”
Kalite aracısı, müşteri aracısından gelen uygunsuz yanıtları tespit edebiliyor!
Aracılar Arası Etkileşim
Artık iki aracıyı bağımsız olarak çalıştırdığımıza göre, aralarındaki etkileşimi tanımlama zamanı.
Her iki aracıyı ve gereksinimlerini basit bir şemayla gösterebiliriz:
Tarafımızdan oluşturulan görsel. Her aracının üç yapı taşının temsili: sistem mesajı (mavi), model girdisi (yeşil) ve model çıktısı (sarı).
Sırada ne var? Şimdi, iki model arasındaki etkileşimi uygulamamız gerekiyor!
Yanlış yanıtları filtrelemek için önerilen bir fikir şu şekilde:
Önce, müşteri aracısının kullanıcı sorgusuna göre yanıt üretmesine izin veririz. Ardından, QA aracı müşteri aracısının yanıtını kullanıcı sorgusuna ve ürün kataloğuna göre yeterli bulursa, yanıtı doğrudan kullanıcıya iletiriz.
Aksine, QA aracı yanıtın kullanıcının isteğini karşılamadığını veya katalogla ilgili gerçek dışı bilgiler içerdiğini belirlerse, kullanıcıya göndermeden önce müşteri aracısından yanıtı iyileştirmesini isteyebiliriz.
Bu fikri temel alarak, özgün şemamızın son kısmını şu şekilde geliştirebiliriz:
Tarafımızdan oluşturulan görsel. Genişletilmiş moderasyon iş akışının temsili. QA aracının yargısını, LLM tabanlı uygulamaya geri bildirim sağlamak için kullanabiliriz.
Aracıların Etkileşimini Yönlendirme
QA aracını bir filtre olarak kullanmak için, her iterasyonda tutarlı bir çıktı verdiğinden emin olmamız gerekir.
Bunu başarmanın bir yolu, QA aracı sistem mesajını biraz değiştirip, müşteri aracısının yanıtı yeterince iyiyse yalnızca True, değilse False çıktısı üretmesini istemektir:
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
"""Altyapı:
Dolayısıyla, en son müşteri aracısı yanıtını yeniden değerlendirirken yalnızca boolean bir çıktı alacağız:
Bu boolean değeri kullanarak, yanıtı — QA aracı True olarak değerlendirirse — kullanıcıya gönderebilir veya — QA aracı False olarak değerlendirirse — modele yeni bir yanıt üretmesi için ikinci bir şans verebiliriz.
Aracıların etkileşimini gösterme
Her şeyi bir araya getirelim!
İki belleği — kendi sistem mesajları ve ek bilgileriyle — zaten başlattığımıza göre, her müşteri isteği şu şekilde işlenebilir:
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)Altyapı:
Yukarıda açıklandığı gibi, yanıtları doğruluklarına göre filtreledik. Uygun olmayan yanıtlarla ne yapılacağına karar verme görevini size bırakıyorum. Müşteri aracısına geri bildirim gönderip yeniden denemesini isteme fikrini önerdik; peki ya bunun yerine daha iyi bir yanıt için QA aracısından istemek? Birden fazla olasılık var!
Sonuç
Bu yazıda, aynı türden diğer model örnekleri için GPT modellerini moderatör olarak kullanma potansiyelini keşfettik. Uygulamalarımızda LLM modellerini kullanmamızı sağlayan aynı güçlü yeteneklerin, kullanıcı etkileşimlerinin doğruluğunu ve bütünlüğünü artırmaya da yardımcı olabileceğini gösterdik.
Yanlış kanının aksine, moderasyon seviyeleri uygulamak uygulamamızın karmaşıklığını artırmayı zorunlu kılmaz ve gösterdiğimiz gibi, bazen iyi tasarlanmış birkaç satır kodla başarılabilir ve uygulama işlevselliğini önemli ölçüde yükseltebilir.
Günümüzün YZ odaklı dünyasında, sorumlu LLM moderasyonu zorunludur. Bu yalnızca bir tercih değil, aynı zamanda etik bir yükümlülüktür. YZ moderasyonunu entegre ederek uygulamalarımızın yalnızca güçlü değil, aynı zamanda güvenilir ve etik olmasını sağlarız. Doğruluğu gözetirken YZ'den faydalanmaya devam edebilmek için sorumlu geliştirme ile ilerleyelim.
Andrea Valenzuela, şu anda İsviçre'nin Cenevre kentindeki parçacık hızlandırıcısında (CERN) yürütülen CMS deneyinde çalışmaktadır. Son altı yıldır veri mühendisliği ve analizi alanındaki uzmanlığıyla veri analizi ve yazılım geliştirme görevlerini üstlenmektedir. Şimdi ise Medium yayını ForCode'Sake aracılığıyla veriyle ilgili teknolojilerin öğrenimini demokratikleştirmeye yönelik çalışmalar yapmaktadır.
Katalonya Politeknik Üniversitesi'nden Mühendislik Fiziği lisans derecesine ve Pompeu Fabra Üniversitesi'nden Akıllı Etkileşimli Sistemler yüksek lisans derecesine sahiptir. Araştırma deneyimi arasında, Normalizing Flows gibi görüntü üretimine yönelik önceki OpenAI algoritmalarıyla yürütülen profesyonel çalışmalar yer almaktadır.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Yapay zekanın temellerini keşfedin, yapay zekayı işinizde etkili bir şekilde kullanmayı öğrenin ve dinamik yapay zeka dünyasında yolunuzu bulmak için ChatGPT gibi modellere dalın.
Kalite İçin Yapay Zekâ Moderasyonu
Uygulama geliştirmede yapay zekâ devrimini benimsemek, insan–YZ etkileşiminde yeni bir dönemi işaret ediyor. İşletmeler kullanıcı deneyimlerini geliştirmek için YZ'den yararlanırken, LLM tabanlı çözümlerin entegrasyonu içerik bütünlüğünü, doğruluğunu ve etik standartları koruma konusunda da zorluklar getiriyor.
Sorumlu YZ moderasyonu ihtiyacı, uygulamalar kontrollü ortamların ötesine genişledikçe belirginleşiyor; kullanıcılara makul ve doğru yanıtlar sunmayı sağlamak teknik olarak her zaman çok basit olmasa da kritik önem taşıyor.
Örneğin müşteri hizmetleri etkileşimlerinde, yanlış bilgi veya uygunsuz içerik müşteri memnuniyetsizliğine ve hatta işletmenin itibarına zarar verebilir. Peki bir geliştirici olarak, YZ tabanlı uygulamanızın kullanıcılara makul ve doğru yanıtlar verdiğinden nasıl emin olabilirsiniz? İşte YZ moderasyonu tam da burada devreye giriyor!
Bu yazıda, GPT modellerini kullanarak GPT tabanlı uygulamaları denetlemeye yönelik bir teknike ineceğiz.
GPT Tabanlı Bir Kalite Aracısı Oluşturma
YZ kalitesini denetlemek, LLM'lerle çalışırken önyargısız ve uygun yanıt üretimini de güvence altına almayı içerir. OpenAI, bu tür moderasyon ihtiyaçları için tasarlanmış bir API zaten tanıttı. Modelinizden önyargılı veya uygunsuz yanıtları tespit etmek ya da kullanıcı kötü davranışlarını ele almakla ilgileniyorsanız, ChatGPT Moderation API: Girdi/Çıktı Kontrolü başlıklı yazıda değerli bilgiler bulabilirsiniz.
Bununla birlikte, bu yazı YZ moderasyonuna farklı bir yaklaşım getiriyor. Buradaki odağımız, bir modelin yanıtlarının doğruluk ve kullanıcı gereksinimlerini karşılama açısından kalitesini garanti altına almak. Bildiğim kadarıyla, özellikle bu amaca yönelik resmi bir uç nokta bulunmuyor.
Yine de, çeşitli uygulamalarda GPT modellerini yoğun şekilde kullandığımız göz önüne alındığında, neden aynı model örnekleri için onları kalite denetçisi olarak kullanmayalım?
Kullanıcının taleplerine yanıt olarak modelin ürettiği çıktıyı değerlendirmek için GPT modellerinden yararlanabiliriz. Bu test yaklaşımı belirsiz ve hatalı yanıtları önlemeye yardımcı olur ve modelin kullanıcının isteklerini etkin biçimde yerine getirme yeteneğini artırır.
Kapsam ve hedefler
Bu yazı, uygulamanızın kapsamı içinde GPT tabanlı uygulamaları kalite ve doğruluk açısından denetlemek için GPT modellerinin nasıl kullanılacağını kapsar.
Örneğin, iş sohbet botunuzu GPT modelleriyle çalıştırıyorsanız, sohbet botunuzun kataloğunuzdaki ürünler veya özellikler dışında hiçbir bilgi vermediğinden emin olmakla yakından ilgileneceğinizden eminim.
İlerleyen bölümlerde, openai Python paketi ve bilinen Jupyter Notebooks aracılığıyla OpenAI API'sine yapılacak basit çağrılar kullanarak bu son örneği hayata geçireceğiz.
Ana hedef, basit bir LLM tabanlı uygulama oluşturmak ve çıktısını LLM tabanlı bir kalite denetçisiyle denetlemek olacak. Örneğimiz için, örnek müşteri hizmetleri aracımızı, kalite denetçisi aracımızı — bundan sonra QA aracı — ve daha da önemlisi, ikisi arasındaki etkileşimleri tanımlamamız gerekecek.
Aşağıdaki şema, söz konusu iş akışının güzel bir temsilini sunar:
Tarafımızdan oluşturulan görsel. Moderasyon iş akışının temsili: 1. Kullanıcı, bu örnekte bir müşteri hizmetleri sohbet botu olan LLM tabanlı uygulamaya bir istek gönderir. 2. Sohbet botu yanıtı üretir ancak önce QA aracına gönderir. 3. QA aracı, yanıtın uygun olduğunu kontrol ettikten sonra yanıtı kullanıcıya iletir.
Adım adım ilerleyelim!
GPT Aracılarının Oluşturulması
Bir mağazanın müşteri hizmetleri için bir sohbet aracısı oluşturarak başlayalım.
Zaten çalışan bir LLM destekli uygulamanız varsa bu ilk bölümü atlamaktan ya da tercih ettiğiniz örneği uygulamaktan çekinmeyin! Ve işletmenizin LLM tabanlı bir uygulamadan fayda sağlayıp sağlayamayacağını hâlâ merak ediyorsanız, takip etmeniz gereken ilginç bir podcast tartışması var!
Örnek bir müşteri hizmetleri sohbet botu tasarlama
Mağazamız için bir müşteri hizmetleri aracı oluşturduğumuzu hayal edelim. Bu müşteri aracısının arkasında, kullanıcı sorularını doğal dille anlama ve doğal bir şekilde yanıtlama yeteneklerinden yararlanmak için ChatGPT benzeri bir model kullanmak istiyoruz.
Müşteri hizmetleri sohbet botumuzu tanımlamak için iki temel bileşene ihtiyacımız olacak:
Son olarak, diğer tüm LLM tabanlı uygulamalarda olduğu gibi, betiklerimizden OpenAI API'sini çağırmanın bir yoluna ihtiyacımız var. Bu yazıda yalnızca
openaipaketine dayanan aşağıdaki uygulamayı kullanacağım:Bunun arkasındaki fikir, her model örneği için — sistem mesajını içeren — ayrı bir mesaj geçmişi başlatmak ve modeliyle yapılacak sonraki etkileşimlerle bunu güncel tutmaktır.
Etkileşimlerinizi daha optimize bir şekilde yönetmenin bir yolunu arıyorsanız, Bağlam Farkındalığına Sahip Sohbet Botları: ChatGPT için LangChain Framework'ünden Yararlanma başlıklı yazımızda yaptığımız gibi langchain framework'ünü kullanmanızı kesinlikle öneririm.
OpenAI API'ye yeniyseniz, OpenAI API ve ChatGPT'ye Başlangıç webinarına göz atmayı düşünebilirsiniz.
Gerekli yapı taşlarını belirlediğimize göre, bunları bir araya getirelim:
Görüldüğü gibi, jsonl formatında bir örnek katalog (
product_catalog) ve üç gereksinimi olan bir sistem mesajı (customer_agent_sysmessage) tanımladık:Son olarak, müşteri aracısı için mesaj geçmişini (
customer_agent_history) de başlattık.Sistem mesajını ve ek bilgileri yazarken karakteristik bir stil kullandığımıza dikkat etmek ilginç; örneğin üçlü ters tırnak işaretleri. Bu, istem vermede en iyi uygulamalardan biridir! Daha fazla iyi uygulamayla ilgileniyorsanız, ChatGPT ile İstem Mühendisliğine Başlangıç Rehberi webinarı size göre!
Bu noktada, örnek müşteri sohbet botumuzu aşağıdaki gibi kullanmaya başlayabiliriz:
Doğal bir yanıt gibi görünüyor, değil mi? Bir takip etkileşimi yapalım:
Makûl! Aracı, ürün kataloğumuzda iPhone olmadığını tespit edebiliyor ve kullanıcıya buna göre yanıt veriyor. Hatta kullanıcıyı mağazayla iletişime geçmeye teşvik ediyor!
Bir istek daha deneyelim:
Doğru, bazı durumlarda aracı katalogdaki bilgileri göz ardı edebiliyor gibi görünüyor. Bu durumlarda, QA aracı istenmeyen yanıtları filtrelemeye yardımcı olabilir.
Özel QA aracımızı geliştirme
Daha önce tartıştığımız gibi, QA aracının amacı, kullanıcı sorgusu ve ürün kataloğu dikkate alındığında müşteri hizmetleri aracısının kalitesini kontrol etmektir. Bu nedenle, tam olarak bu yüksek seviyeli davranışı belirleyen bir sistem mesajı tanımlamak önemlidir:
Müşteri aracısı örneğinde, kullanıcı istemi, kullanıcının ihtiyacına ve yazım tarzına bağlı olduğundan öngörülemezdir. QA aracısı örneğinde ise kullanıcı isteğini, müşteri aracısının yanıtını ve ürün kataloğunu modele geçirmek bizim sorumluluğumuzdadır. Dolayısıyla, istemimiz her zaman aynı yapıda olacak, ancak kullanıcı sorgusu (
user_request) ve modelin yanıtı (customer_agent_response) değişkenlik gösterecektir:Sistem mesajı ve QA istemi tanımlandıktan sonra, QA aracını en son müşteri hizmetleri yanıtıyla aşağıdaki gibi test edebiliriz:
QA aracının yanıtını değerlendirmek için, analiz edeceği etkileşimi parçalayalım:
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.”Kalite aracısı, müşteri aracısından gelen uygunsuz yanıtları tespit edebiliyor!
Aracılar Arası Etkileşim
Artık iki aracıyı bağımsız olarak çalıştırdığımıza göre, aralarındaki etkileşimi tanımlama zamanı.
Her iki aracıyı ve gereksinimlerini basit bir şemayla gösterebiliriz:
Tarafımızdan oluşturulan görsel. Her aracının üç yapı taşının temsili: sistem mesajı (mavi), model girdisi (yeşil) ve model çıktısı (sarı).
Sırada ne var? Şimdi, iki model arasındaki etkileşimi uygulamamız gerekiyor!
Yanlış yanıtları filtrelemek için önerilen bir fikir şu şekilde:
Önce, müşteri aracısının kullanıcı sorgusuna göre yanıt üretmesine izin veririz. Ardından, QA aracı müşteri aracısının yanıtını kullanıcı sorgusuna ve ürün kataloğuna göre yeterli bulursa, yanıtı doğrudan kullanıcıya iletiriz.
Aksine, QA aracı yanıtın kullanıcının isteğini karşılamadığını veya katalogla ilgili gerçek dışı bilgiler içerdiğini belirlerse, kullanıcıya göndermeden önce müşteri aracısından yanıtı iyileştirmesini isteyebiliriz.
Bu fikri temel alarak, özgün şemamızın son kısmını şu şekilde geliştirebiliriz:
Tarafımızdan oluşturulan görsel. Genişletilmiş moderasyon iş akışının temsili. QA aracının yargısını, LLM tabanlı uygulamaya geri bildirim sağlamak için kullanabiliriz.
Aracıların Etkileşimini Yönlendirme
QA aracını bir filtre olarak kullanmak için, her iterasyonda tutarlı bir çıktı verdiğinden emin olmamız gerekir.
Bunu başarmanın bir yolu, QA aracı sistem mesajını biraz değiştirip, müşteri aracısının yanıtı yeterince iyiyse yalnızca
True, değilseFalseçıktısı üretmesini istemektir:Dolayısıyla, en son müşteri aracısı yanıtını yeniden değerlendirirken yalnızca boolean bir çıktı alacağız:
Bu boolean değeri kullanarak, yanıtı — QA aracı
Trueolarak değerlendirirse — kullanıcıya gönderebilir veya — QA aracıFalseolarak değerlendirirse — modele yeni bir yanıt üretmesi için ikinci bir şans verebiliriz.Aracıların etkileşimini gösterme
Her şeyi bir araya getirelim!
İki belleği — kendi sistem mesajları ve ek bilgileriyle — zaten başlattığımıza göre, her müşteri isteği şu şekilde işlenebilir:
Yukarıda açıklandığı gibi, yanıtları doğruluklarına göre filtreledik. Uygun olmayan yanıtlarla ne yapılacağına karar verme görevini size bırakıyorum. Müşteri aracısına geri bildirim gönderip yeniden denemesini isteme fikrini önerdik; peki ya bunun yerine daha iyi bir yanıt için QA aracısından istemek? Birden fazla olasılık var!
Sonuç
Bu yazıda, aynı türden diğer model örnekleri için GPT modellerini moderatör olarak kullanma potansiyelini keşfettik. Uygulamalarımızda LLM modellerini kullanmamızı sağlayan aynı güçlü yeteneklerin, kullanıcı etkileşimlerinin doğruluğunu ve bütünlüğünü artırmaya da yardımcı olabileceğini gösterdik.
Yanlış kanının aksine, moderasyon seviyeleri uygulamak uygulamamızın karmaşıklığını artırmayı zorunlu kılmaz ve gösterdiğimiz gibi, bazen iyi tasarlanmış birkaç satır kodla başarılabilir ve uygulama işlevselliğini önemli ölçüde yükseltebilir.
Günümüzün YZ odaklı dünyasında, sorumlu LLM moderasyonu zorunludur. Bu yalnızca bir tercih değil, aynı zamanda etik bir yükümlülüktür. YZ moderasyonunu entegre ederek uygulamalarımızın yalnızca güçlü değil, aynı zamanda güvenilir ve etik olmasını sağlarız. Doğruluğu gözetirken YZ'den faydalanmaya devam edebilmek için sorumlu geliştirme ile ilerleyelim.
Okuduğunuz için çok teşekkürler! Eğer YZ moderasyonu konusunu beğendiyseniz, devam niteliğinde Sorumlu YZ'yi Teşvik Etmek: ChatGPT'de İçerik Moderasyonu başlıklı materyale göz atmanızı öneririm!