Template untuk Prompt

Model bahasa mengambil teks sebagai input, yang biasanya disebut "prompt". Selama pengembangan, prompt seringkali tidak langsung diharcode, karena hal ini tidak mendukung manajemen prompt. Sebagai gantinya, template prompt digunakan untuk mempertahankan prompt, serupa dengan template untuk konten SMS atau email.

Apa itu template prompt?

Sebuah template prompt pada dasarnya tidak jauh berbeda dari template email atau SMS yang umum digunakan. Ini adalah template string yang dapat berisi set parameter template. Nilai parameter template dapat digunakan untuk menggantikan parameter yang sesuai dalam template.

Sebuah template prompt bisa mencakup konten berikut:

  • Instruksi yang dikirim ke large language model (LLM).
  • Sebuah set contoh pertanyaan dan jawaban untuk mengingatkan AI tentang format yang diharapkan untuk mengembalikan permintaan.
  • Pertanyaan yang dikirim ke model bahasa.

Membuat template prompt

Anda dapat menggunakan kelas PromptTemplate untuk membuat prompt sederhana. Template prompt dapat menyematkan sejumlah parameter template dan kemudian memformat konten template menggunakan nilai parameter.

from langchain.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "Ceritakan joke {adjective} tentang {content}."
)

prompt_template.format(adjective="lucu", content="ayam")

Hasil output template:

'Ceritakan joke lucu tentang ayam.'

Template Prompt Pesan Chat

Model chat mengambil daftar pesan chat sebagai input, dan konten dari pesan-pesan chat ini juga dapat dikelola menggunakan template prompt. Pesan-pesan chat ini berbeda dari string mentah karena setiap pesan dikaitkan dengan "peran".

Sebagai contoh, dalam API Penyelesaian Chat OpenAI OpenAI, model chat OpenAI mendefinisikan tiga jenis peran untuk pesan chat yang berbeda: asisten, manusia, atau peran sistem:

  • Pesan asisten mengacu pada respons AI.
  • Pesan manusia mengacu pada pesan yang dikirim oleh pengguna ke AI.
  • Pesan sistem biasanya digunakan untuk menggambarkan identitas AI.

Contoh pembuatan template pesan chat:

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("sistem", "Anda adalah bot AI yang membantu. Nama Anda adalah {nama}."),
        ("manusia", "Halo, bagaimana kabarmu?"),
        ("ai", "Saya baik, terima kasih!"),
        ("manusia", "{input_pengguna}"),
    ]
)

pesan = chat_template.format_messages(nama="Bob", input_pengguna="Apa nama Anda?")

Contoh lain dari format pesan:

from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI

chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "Anda adalah asisten yang membantu yang menulis ulang teks pengguna "
                "untuk terdengar lebih ceria."
            )
        ),
        HumanMessagePromptTemplate.from_template("{teks}"),
    ]
)

pesan = chat_template.format_messages(teks="Saya tidak suka makanan yang enak")
print(pesan)

Biasanya, kita tidak langsung menggunakan fungsi format_messages untuk memformat konten template prompt, tapi biarkan framework Langchain menanganinya secara otomatis.