Lewati ke konten utama

Menggunakan ChatGPT untuk Memoderasi Respons ChatGPT

Jelajahi seluk-beluk moderasi AI dengan panduan mendalam kami tentang memanfaatkan ChatGPT untuk memoderasi respons dalam aplikasi berbasis GPT.
· 9 mnt Baca

Jelajahi bersama AI

Moderasi AI untuk Kualitas

Merangkul revolusi AI dalam pengembangan aplikasi menandai era baru interaksi manusia-AI. Ketika bisnis memanfaatkan AI untuk meningkatkan pengalaman pengguna, integrasi solusi berbasis LLM juga menghadirkan tantangan dalam menjaga integritas konten, akurasi, dan standar etika.

Kebutuhan akan moderasi AI yang bertanggung jawab menjadi jelas saat aplikasi berkembang melampaui lingkungan terkendali, di mana memastikan respons yang masuk akal dan akurat bagi pengguna mungkin tidak terlalu mudah secara teknis tetapi sangat krusial.

Dalam interaksi layanan pelanggan, misalnya, informasi keliru atau konten yang tidak pantas dapat menyebabkan ketidakpuasan pelanggan dan bahkan merusak reputasi bisnis. Namun sebagai pengembang, bagaimana Anda memastikan aplikasi berbasis AI Anda memberikan respons yang masuk akal dan akurat kepada pengguna? Di sinilah moderasi AI berperan!

Dalam artikel ini, kita akan membahas teknik untuk memoderasi aplikasi berbasis GPT menggunakan model GPT.

Membangun Agen Kualitas Berbasis GPT

Memoderasi kualitas AI juga mencakup memastikan generasi respons yang tidak bias dan sesuai saat bekerja dengan LLM. OpenAI telah memperkenalkan API yang dirancang untuk kebutuhan moderasi semacam itu. Jika Anda ingin mendeteksi respons yang bias atau tidak pantas dari model Anda atau menangani perilaku buruk pengguna, Anda akan menemukan wawasan berharga dalam artikel berjudul ChatGPT Moderation API: Input/Output Control.

Namun, artikel ini mengambil pendekatan berbeda terhadap moderasi AI. Fokus kami di sini adalah menjamin kualitas respons model dalam hal akurasi dan pemenuhan kebutuhan pengguna. Sepengetahuan saya, belum ada endpoint resmi yang secara khusus disesuaikan untuk tujuan ini.

Meski demikian, mengingat penggunaan luas model GPT di berbagai aplikasi, mengapa tidak mempekerjakan mereka sebagai pemeriksa kualitas untuk instans model yang sama?

Kita dapat memanfaatkan model GPT untuk menilai hasil yang dihasilkan oleh model itu sendiri sebagai respons terhadap permintaan pengguna. Pendekatan pengujian ini membantu mencegah respons yang kabur dan keliru serta meningkatkan kemampuan model memenuhi permintaan pengguna secara efektif.

Cakupan dan tujuan

Artikel ini membahas cara menggunakan model GPT untuk memoderasi aplikasi berbasis GPT dari sisi kualitas dan ketepatan dalam cakupan aplikasi Anda.

Misalnya, jika Anda menggunakan model GPT untuk menjalankan chatbot bisnis, saya yakin Anda akan sangat tertarik memastikan chatbot Anda tidak memberikan informasi di luar item atau karakteristik dalam katalog Anda.

Pada bagian selanjutnya, kita akan mewujudkan contoh terakhir ini dengan menggunakan pemanggilan sederhana ke OpenAI API melalui paket Python openai dan Jupyter Notebooks yang sudah dikenal.

Tujuan utamanya adalah menghasilkan aplikasi sederhana berbasis LLM dan memoderasi keluarannya dengan pemeriksa kualitas berbasis LLM. Untuk contoh kita, kita perlu membuat agen layanan pelanggan contoh, agen pemeriksa kualitas — mulai sekarang disebut agen QA — dan yang terpenting, mendefinisikan interaksi di antara keduanya.

Skema berikut memberikan representasi yang baik dari alur kerja yang disebutkan:

AI moderated response diagram

Gambar buatan sendiri. Representasi alur kerja moderasi: 1. Pengguna mengirim permintaan ke aplikasi berbasis LLM, pada contoh ini chatbot layanan pelanggan. 2. Chatbot menghasilkan jawaban, tetapi terlebih dahulu mengirimkannya ke agen QA. 3. Agen QA mengirimkan jawaban kembali ke pengguna setelah memeriksa bahwa jawabannya sesuai.

Mari kita melangkah selangkah demi selangkah!

Membangun Agen GPT

Mari mulai dengan membangun agen percakapan untuk layanan pelanggan sebuah toko.

Silakan lewati bagian pertama ini jika Anda sudah memiliki aplikasi bertenaga LLM yang berfungsi atau ingin menerapkan contoh pilihan Anda! Dan jika Anda masih bertanya-tanya apakah bisnis Anda dapat memperoleh manfaat dari aplikasi berbasis LLM, ada diskusi podcast menarik yang patut Anda ikuti!

Membuat chatbot layanan pelanggan contoh

Bayangkan kita sedang membangun agen layanan pelanggan untuk toko kita. Kita tertarik menggunakan model seperti ChatGPT di balik agen ini untuk memanfaatkan kemampuan bahasa alaminya dalam memahami pertanyaan pengguna dan membalasnya secara alami.

Untuk mendefinisikan chatbot layanan pelanggan kita, kita membutuhkan dua komponen kunci:

  • Katalog produk contoh untuk membatasi agen pada cakupan bisnis kita. Dengan memasukkan katalog produk ke model, kita dapat memberi tahu model informasi mana yang harus diberikan kepada pengguna.
  • Pesan sistem untuk mendefinisikan perilaku tingkat tinggi model. Meskipun model GPT umumnya dilatih dalam berbagai tugas, Anda dapat membatasi perilaku model dengan menggunakan pesan sistem tersebut.

Akhirnya, seperti pada aplikasi berbasis LLM lainnya, kita memerlukan cara untuk memanggil OpenAI API dari skrip kita. Dalam artikel ini, saya akan menggunakan implementasi berikut yang hanya bergantung pada paket 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 interactions
def gpt_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

Gagasan di balik ini adalah menginisialisasi riwayat pesan terpisah — yang berisi pesan sistem — untuk setiap instans model dan terus memperbaruinya dengan interaksi berikutnya dengan model.

Jika Anda mencari cara yang lebih optimal untuk menangani interaksi, saya sangat merekomendasikan menggunakan kerangka langchain seperti yang kami lakukan dalam Membangun Chatbot yang Peka Konteks: Memanfaatkan Kerangka LangChain untuk ChatGPT.

Jika Anda baru dengan OpenAI API, pertimbangkan untuk menonton webinar Memulai dengan OpenAI API dan ChatGPT.

Sekarang kita telah mengidentifikasi blok bangun yang diperlukan, mari kita gabungkan:

# 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}]

Seperti yang dapat kita amati, kita telah mendefinisikan katalog contoh (product_catalog) dalam format jsonl, dan pesan sistem (customer_agent_sysmessage) dengan tiga persyaratan:

  • Bertindak sebagai agen layanan pelanggan.
  • Merespons dengan nada ramah dan seperti manusia.
  • Memberikan informasi hanya dari katalog.

Terakhir, kita juga telah menginisialisasi riwayat pesan untuk agen pelanggan (customer_agent_history).

Menarik untuk dicatat bahwa kita menggunakan gaya khas saat menulis pesan sistem dan informasi tambahan, misalnya tiga backticks. Ini adalah salah satu praktik terbaik untuk prompting! Jika Anda tertarik dengan praktik terbaik lainnya, webinar Panduan Pemula untuk Prompt Engineering dengan ChatGPT cocok untuk Anda!

Pada titik ini, kita dapat mulai menggunakan chatbot pelanggan contoh kita sebagai berikut:

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.

Terlihat seperti jawaban yang natural, bukan? Mari lakukan interaksi lanjutan:

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.

Cukup adil! Agen mampu mengidentifikasi bahwa tidak ada iPhone dalam katalog produk kita dan merespons pengguna sesuai. Bahkan mendorong pengguna untuk menghubungi toko!

Mari coba satu permintaan lagi:

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.

Benar, tampaknya dalam beberapa kasus agen dapat mengabaikan informasi dalam katalog. Dalam kasus seperti itu, agen QA dapat membantu menyaring respons yang tidak diinginkan.

Mengembangkan agen QA kustom kita

Seperti yang telah kita bahas, tujuan agen QA adalah memeriksa kualitas agen layanan pelanggan berdasarkan permintaan pengguna dan katalog produk. Oleh karena itu, penting untuk mendefinisikan pesan sistem yang menetapkan perilaku tingkat tinggi ini secara tepat:

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.
	"""

Pada kasus agen pelanggan, prompt pengguna tidak dapat diprediksi karena bergantung pada kebutuhan dan gaya penulisan pengguna. Pada kasus agen QA, kita yang bertugas meneruskan permintaan pengguna, respons agen pelanggan, dan katalog produk ke model. Dengan demikian, prompt kita akan selalu memiliki struktur yang sama tetapi dengan kueri pengguna (user_request) dan respons model (customer_agent_response) yang bervariasi:

qa_prompt = f"""
Customer question: ```{user_prompt}```
Product catalog: ```{product_information}```
Agent response: ```{customer_agent_response}```
"""

Setelah pesan sistem dan prompt QA ditetapkan, kita dapat menguji agen QA dengan respons layanan pelanggan terbaru sebagai berikut:

# 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 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.

Untuk mengevaluasi respons agen QA, mari uraikan interaksi yang akan dianalisisnya:

  • Permintaan pengguna: “Can you help me buy a Samsung TV?”
  • Respons agen pelanggan: “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.”
  • Agen 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.”

Agen kualitas mampu menemukan respons yang tidak tepat dari agen pelanggan!

Interaksi Antara Agen

Sekarang kedua agen sudah bekerja secara independen, saatnya mendefinisikan interaksi di antara mereka.

Kita dapat menggambarkan kedua agen dan kebutuhannya dalam skema sederhana:

Self-made image. Representation of the three building blocks of each agent: system message (blue), model input (green), and model output (yellow).

Gambar buatan sendiri. Representasi tiga blok bangun tiap agen: pesan sistem (biru), masukan model (hijau), dan keluaran model (kuning).

Apa selanjutnya? Sekarang, kita perlu mengimplementasikan interaksi antara kedua model!

Berikut gagasan yang diusulkan untuk menyaring respons yang tidak akurat:

Pertama, kita biarkan agen pelanggan menghasilkan respons berdasarkan kueri pengguna. Lalu, jika agen QA menganggap respons agen pelanggan sudah cukup baik untuk kueri pengguna dan sesuai dengan katalog produk, kita cukup mengirim jawaban kembali ke pengguna.

Sebaliknya, jika agen QA menentukan bahwa jawaban tidak memenuhi permintaan pengguna atau berisi informasi yang tidak nyata terkait katalog, kita dapat meminta agen pelanggan untuk memperbaiki jawaban sebelum mengirimkannya ke pengguna.

Berdasarkan gagasan ini, kita dapat memperbaiki bagian terakhir skema asli kita sebagai berikut:

Self-made image.  Representation of the extended moderation workflow. We can use the judgment of the QA agent to provide feedback to the LLM-based application.

Gambar buatan sendiri. Representasi alur kerja moderasi yang diperluas. Kita dapat menggunakan penilaian agen QA untuk memberikan umpan balik kepada aplikasi berbasis LLM.

Mengorkestrasi Interaksi Agen

Agar dapat menggunakan agen QA sebagai filter, kita perlu memastikan ia menghasilkan respons yang konsisten pada setiap iterasi.

Salah satu cara untuk mencapainya adalah dengan sedikit mengubah pesan sistem agen QA dan memintanya untuk hanya mengeluarkan True jika respons agen pelanggan cukup baik atau False jika tidak:

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
	"""

Karena itu, saat kembali mengevaluasi respons agen pelanggan terbaru, kita hanya akan mendapatkan keluaran boolean:

# 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

Kita dapat memanfaatkan nilai boolean ini lebih lanjut untuk mengirim respons ke pengguna — jika agen QA mengevaluasi True — atau memberi model kesempatan kedua untuk menghasilkan respons baru — jika agen QA mengevaluasi False.

Mendemonstrasikan interaksi antaragen

Mari satukan semuanya!

Mengingat kita telah menginisialisasi kedua memori — dengan pesan sistem dan informasi tambahan masing-masing — setiap permintaan pelanggan dapat diproses sebagai berikut:

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)

Seperti yang dijelaskan di atas, kita telah menyaring respons berdasarkan ketepatannya. Saya serahkan kepada Anda untuk memutuskan apa yang harus dilakukan dengan respons yang tidak sesuai. Kami mengusulkan gagasan memberikan umpan balik kepada agen pelanggan dan memintanya untuk mencoba lagi, tetapi bagaimana jika meminta agen QA memberikan respons yang lebih baik sebagai gantinya? Ada banyak kemungkinan!

Kesimpulan

Dalam artikel ini, kami mengeksplorasi potensi menggunakan model GPT sebagai moderator untuk instans model lain dari jenis yang sama. Kami menunjukkan bahwa kemampuan kuat yang membuat kita menggunakan model LLM dalam aplikasi kita juga dapat membantu aplikasi meningkatkan akurasi dan integritas interaksi pengguna.

Berlawanan dengan kesalahpahaman, menerapkan tingkat moderasi tidak selalu berarti meningkatkan kompleksitas aplikasi, dan seperti yang telah kami tunjukkan, terkadang dapat dicapai dengan beberapa baris kode yang direkayasa dengan baik, sehingga meningkatkan fungsionalitas aplikasi secara signifikan.

Di dunia yang digerakkan AI saat ini, moderasi LLM yang bertanggung jawab adalah suatu keharusan. Ini bukan sekadar pilihan, melainkan kewajiban etis. Dengan mengintegrasikan moderasi AI, kita memastikan aplikasi tidak hanya kuat, tetapi juga andal dan etis. Mari melangkah maju dengan pengembangan yang bertanggung jawab agar kita dapat terus mengambil manfaat dari AI sambil tetap menjunjung akurasi.

Banyak terima kasih sudah membaca! Jika Anda menyukai topik moderasi AI, saya mendorong Anda untuk melanjutkan ke Mendorong AI yang Bertanggung Jawab: Moderasi Konten di ChatGPT sebagai materi lanjutan!

Andrea Valenzuela

Penulis

Andrea Valenzuela

Andrea Valenzuela saat ini bekerja pada eksperimen CMS di akselerator partikel (CERN) di Jenewa, Swiss. Dengan keahlian dalam rekayasa dan analisis data selama enam tahun terakhir, tugasnya mencakup analisis data dan pengembangan perangkat lunak. Kini ia berupaya mendemokratisasi pembelajaran teknologi terkait data melalui publikasi Medium ForCode'Sake.

Ia meraih gelar BS di bidang Engineering Physics dari Polytechnic University of Catalonia, serta gelar MS di bidang Intelligent Interactive Systems dari Pompeu Fabra University. Pengalaman penelitiannya mencakup pekerjaan profesional dengan algoritme OpenAI sebelumnya untuk pembuatan gambar, seperti Normalizing Flows.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai