Gunakan prompt peran dengan IBM® watsonx dan Granite

Vanna Winland

AI Advocate & Technology Writer

Anna Gutowska

AI Engineer, Developer Advocate

IBM

Apa yang dimaksud dengan petunjuk peran?

Dalam tutorial ini, kita akan mengikuti petunjuk langkah demi langkah untuk melakukan teknik rekayasa prompt yang disebut prompting peran. Kami akan menggunakan Model IBM Granite untuk menetapkan persona guna mendapatkan output model yang mendalam.

Prompting peran adalah teknik rekayasa prompt yang menginstruksikan model kecerdasan buatan (AI) untuk mengambil peran atau persona tertentu saat menghasilkan respons. Teknik ini dapat digunakan untuk memandu intonasi, gaya, dan perilaku model, yang dapat menghasilkan output yang lebih menarik.

Rekayasa prompt berfungsi mengoptimalkan input, sehingga merespons dengan jawaban yang tepat dan bermakna. Zero-shot prompting dan few-shot prompting adalah dua teknik populer yang digunakan untuk berkomunikasi dengan model bahasa besar (LLM). LLM memiliki kemampuan alami untuk melakukan tugas pemrosesan bahasa alami (natural language processing, NLP) berkat kemampuannya memproses dan menafsirkan bahasa manusia. Kemampuan bahasa pada model AI sangat berguna untuk berbagai tugas, mulai dari percakapan chatbot dan interaksi multiagen, hingga penulisan kreatif terbuka. 

AI generatif (gen AI) menjadi lebih pribadi ketika LLM diinstruksikan untuk bertindak sebagai persona tertentu untuk memenuhi kebutuhan spesifik peran. Respons AI bisa lebih akurat dan relevan ketika pertama kali diperintahkan dengan peran yang ditugaskan. Model AI memanfaatkan kumpulan data yang sangat besar sehingga peran yang diberikan dapat berupa apa saja mulai guru, tokoh sejarah, tenaga penjualan, atau peran lain. Hanya imajinasi yang dapat dipikirkan seseorang yang membatasinya. Kemampuan inilah yang membuat prompting peran, juga disebut sebagai prompting persona, teknik yang sangat tangguh. Kemampuan adaptasi model AI menjadikannya ahli dalam penyamaran, karena dapat menghasilkan respons yang disesuaikan dengan kebutuhan spesifik pengguna atau sistem.

Cara menggunakan role prompting

Permintaan peran dapat digunakan untuk memberi chatbot persona untuk berinteraksi lebih baik dengan pengguna atau agen AI untuk berinteraksi lebih baik dengan agen lain. Jika terbiasa dengan templat prompt, Anda mungkin telah melihat aksi prompting peran. Misalnya, banyak kerangka kerja agen menggunakan permainan peran agen untuk menyelesaikan tugas dan berkolaborasi secara efektif. ChatDev menggunakan teknik perintah yang disebut mekanisme perhatian diri. Mekanisme ini dengan jelas mendefinisikan peran agen yang bertindak sebagai pedoman untuk output yang dihasilkan.

Prasyarat

Untuk mengikuti tutorial ini, Anda memerlukan akun IBM Cloud untuk membuat proyek watsonx.ai .

Langkah-langkah

Langkah 1. Siapkan lingkungan Anda 

Meskipun tersedia beberapa pilihan alat, tutorial ini akan memandu Anda menyiapkan akun IBM menggunakan Jupyter Notebook. Jupyter Notebook banyak dipakai dalam ilmu data untuk menggabungkan kode, teks, gambar, dan visualisasi data guna merumuskan analisis yang tersusun dengan baik.

  1. Masuk ke watsonx.ai Runtime menggunakan akun IBM Cloud Anda.
  2. Buat proyek watsonx.ai.

                 Catat ID proyek di proyek > Kelola > Umum > ID Proyek.
                 Anda akan membutuhkan ID ini untuk tutorial ini.

 3.  Buat Jupyter Notebook.

Langkah ini akan membuka lingkungan notebook di mana Anda bisa menyalin kode dari tutorial ini untuk melakukan klasifikasi tanpa contoh secara mandiri. Sebagai alternatif, Anda dapat mengunduh notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai Anda sebagai aset. Jupyter Notebook ini tersedia di GitHub.

Langkah 2. Siapkan instans watsonx.ai Runtime dan kunci API

Pada langkah ini, Anda akan mengaitkan proyek dengan layanan watsonx.ai.

  1. Buat instans watsonx.ai Runtime (pilih paket Lite, yang merupakan instans gratis).

  2. Buat Kunci API di watsonx.ai.

  3. Kaitkan watsonx.ai Runtime ke proyek yang Anda buat di watsonx.ai.

Langkah 3. Instal dan impor perpustakaan yang relevan dan siapkan kredensial Anda

Kita membutuhkan beberapa pustaka dan modul untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini dan jika tidak diinstal, instalasi pip cepat akan menyelesaikan masalah.

%pip install -q -U langchain_ibm 
%pip install –q ibm_watsonx_ai 
 
import getpass 
 
from langchain_ibm import WatsonxLLM 
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams 

Langkah 4. Siapkan kredensial watsonx Anda

Jalankan kode berikut sebagai input dan simpan kunci watsonx.ai Runtime API dan ID proyek Anda:

credentials = { 
    "url": "https://us-south.ml.cloud.ibm.com", 
    "apikey": getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): "), 
    "project_id": getpass.getpass("Please enter your project ID (hit enter): "), 
}

Langkah 5. Siapkan model untuk role prompting

Selanjutnya, kita akan menyiapkan Granite-3.1-8B-Instruct IBM untuk melakukan prompting peran.

model = WatsonxLLM( 
model_id =  "ibm/granite-3-8b-instruct", 
url = credentials.get("url"), 
apikey = credentials.get("apikey"), 
project_id =  credentials.get("project_id"), 
params={ 
        GenParams.MAX_NEW_TOKENS: 500, 
        GenParams.MIN_NEW_TOKENS: 1, 
        GenParams.REPETITION_PENALTY: 1.1, 
        GenParams.TEMPERATURE: 0.7, # Adjust for variable responses 
        GenParams.TOP_K: 100, 
        GenParams.TOP_P: 0, 
    }, 
)

Langkah 6. Ubah lirik lagu menjadi soneta

Untuk memberikan contoh sederhana dan menyenangkan mengenai petunjuk peran, mari kita minta model untuk memerankan tokoh terkenal, William Shakespeare. Kami akan meminta model, dengan peran barunya yang diberikan, untuk menulis ulang beberapa lirik lagu dengan gaya soneta Shakespeare yang terkenal.

Blok kode di bawah ini menyiapkan dan menentukan prompt yang akan direspons oleh model. Anda bebas untuk mengubah lagu pada contoh ini dengan lagu apa pun yang diinginkan. Namun, perlu diketahui bahwa Granite tidak dilatih menggunakan konten berhak cipta. Jika Anda memilih lagu yang bukan merupakan bagian dari domain publik, misalnya lagu “Espresso” oleh Sabrina Carpenter, Anda juga harus menempelkan lirik lagu tersebut pada prompt.   
 
Agar prompt berfungsi dengan baik, contoh ini akan menggunakan lagu ninabobo klasik “Twinkle, Twinkle, Little Star” oleh Jane Taylor (1806). Jalankan blok kode untuk menentukan prompt pengguna Anda bersama dengan beberapa contoh teks input.

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = "You are William Shakespeare, rewrite ‘Twinkle, Twinkle, Little Star’ by Jane Taylor as a sonnet."

Langkah 7. Buat respons

Setelah prompt ditentukan, kita dapat menjalankan blok kode berikutnya untuk memungkinkan model menghasilkan output. Mari kita berharap hasilnya sesuai dengan standar Shakespeare kita.

# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Berikut adalah output model dengan format yang dapat dibaca:

"Twinkle, twinkle, little star, how I wonder what you are; 
Up above the world so high, like a diamond in the sky. 
In night's velvet cloak, you shine so bright, 
Guiding sailors through the darkest night. 
 
Your radiant beams, a celestial art, 
Illuminate the canvas of the heart. 
In silent whispers, secrets you share, 
Of galaxies far and constellations rare. 
 
Yet, mortal eyes can never grasp your form, 
Beyond our realm, in realms beyond the storm. 
O, star! O, star! Your light does pierce my soul, 
A cosmic dance, a timeless role. 
 
In dreams, I chase you, in slumber's hold, 
Your mystery, like an enchanted scroll. 
 
But wakefulness claims me, daylight steals your guise, 
Leaving behind but a memory of your surprise.
 
Thus, twinkling star, in slumber's peaceful reign, 
I bid you farewell, till morning brings again
."

Model ini mampu menghasilkan respons terhadap prompt berbasis peran untuk menulis ulang lagu sebagai soneta Shakespeare. Model mampu mematuhi aturan dan gaya yang diharapkan dari prompt perannya. *Perhatikan bahwa karena sifat kreatif dari prompt, output Anda mungkin terlihat berbeda dari contoh ini.

Langkah 8. Gunakan role prompting untuk respons chatbot yang lebih berempati

Dalam contoh berikutnya ini, kita membandingkan prompt sistem langsung ke depan dengan prompt sistem berbasis peran. Katakanlah praktik dokter hewan baru-baru ini menerapkan asisten virtual di halaman web mereka. Untuk memberikan dukungan pelanggan terbaik, praktik dokter ini ingin agar pemilik hewan peliharaan mereka merasa didengar dan didukung bahkan dalam interaksi virtual mereka, sebuah tujuan yang dapat dikaitkan dengan banyak bisnis. Seorang pengunjung mungkin mengajukan pertanyaan seperti, "Kucing peliharaan saya sering bersin akhir-akhir ini dan menjilati telapak kakinya, apa yang harus saya lakukan?" Dalam skenario ini model belum diberi peran dalam prompt-nya. Kami hanya menggunakan model langsung tanpa panduan input.

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = " My pet cat has been sneezing a lot lately and is licking her paws what should I do?" 
 
# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Model ini merespons sesuai dengan saran dan informasi, namun tidak ada sentuhan pribadi dan tidak jauh berbeda dengan apa yang Anda lihat pada halaman hasil mesin pencari. Output model ini mentah dan kurang kreativitas. Solusi ini mungkin dapat diterima, tetapi tidak membedakan asisten virtual praktik dokter hewan ini dengan bisnis lain. Mari kita coba pertanyaan yang sama lagi, kali ini dengan menugaskan peran sebagai "dokter hewan yang penuh kasih, profesional, dan berpengalaman."

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = "You are a compassionate, professional, and experienced veteraniarian. My pet cat has been sneezing a lot lately and is licking her paws what should I do?" 
 
# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Bahasa dalam respons model lebih manusiawi karena berbicara dengan kesadaran emosional tentang konteks yang tidak dimiliki oleh prompt sistem langsung. Model ini mampu mencapai intonasi ini sekaligus memberikan jawaban yang lengkap dan relevan, yang membuktikan bahwa ini adalah respons yang lebih mendalam. Jenis interaksi manusia dengan kecerdasan buatan ini adalah cara untuk memenuhi harapan subjektif dalam organisasi dan aplikasi.

Mengapa role prompting penting?

Jika Anda adalah seorang pengembang atau bisnis yang ingin menambahkan lebih banyak personalisasi dan interaksi yang berarti dalam aplikasi gen AI Anda, pertimbangkan untuk memahami bagaimana prompting peran dapat berdampak. Sebagian besar model bahasa modern mampu melakukan prompting peran. Beberapa model dasar mungkin tidak memahami nuansa peran atau mempertahankan konsistensi dalam respons mereka, sementara yang lain mungkin disesuaikan untuk merespons dengan cara tertentu. Model dasar seperti seri Granite dari IBM dilatih pada sejumlah besar data khusus perusahaan yang meningkatkan kemampuan model untuk mengambil peran dalam menghasilkan respons yang disesuaikan dengan kebutuhan bisnis.

Ringkasan

Role prompting mendorong kinerja model yang konstan, sesuai dengan ekspektasi dari persona yang ditetapkan. Kita telah melakukan contoh sederhana dengan menetapkan peran tokoh sejarah kepada LLM dalam prompt untuk mengubah lirik lagu menjadi soneta. Selanjutnya, kita telah membandingkan output dari model yang menerima prompt non-peran dan model yang menerima prompt peran untuk respons chatbot. Di akhir tutorial, kita menyimpulkan bahwa respons yang diberikan oleh role prompting lebih bernuansa dan suportif dalam hal bahasa, sehingga memberikan layanan pelanggan yang lebih baik.

Solusi terkait
IBM® watsonx Orchestrate®

Rancang asisten dan agen AI yang dapat diskalakan dengan mudah, otomatiskan tugas berulang, dan sederhanakan proses kompleks dengan IBM watsonx Orchestrate.

Jelajahi watsonx Orchestrate
Solusi kecerdasan buatan (AI)

Manfaatkan AI di bisnis Anda dengan perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusinya.

Jelajahi solusi AI
Konsultasi dan layanan kecerdasan buatan

Layanan IBM® Consulting AI membantu merancang ulang cara bisnis bekerja dengan AI untuk transformasi.

Jelajahi layanan AI
Ambil langkah selanjutnya

Baik Anda memilih untuk menyesuaikan aplikasi dan keterampilan yang sudah ada atau membangun dan menerapkan layanan agen khusus dengan studio AI, platform IBM watsonx® siap membantu Anda.

  1. Jelajahi watsonx Orchestrate
  2. Jelajahi solusi AI