from langchain_openai import ChatOpenAIllm =ChatOpenAI()
Metode 1. Membuat objek PromptTemplate menggunakan metode from_template()
Mendefinisikan template dengan membungkus variabel yang akan digantikan dengan { variabel }.
from langchain_core.prompts import PromptTemplate# Mendefinisikan template. {country} adalah variabel yang menunjukkan tempat untuk nilai yang akan dimasukkan nantitemplate ="Apa ibu kota {country}?"# Membuat objek PromptTemplate menggunakan metode from_templateprompt = PromptTemplate.from_template(template)prompt
input_variables=['country'] template='Apa ibu kota {country}?'
Anda dapat menghasilkan kalimat dengan memasukkan nilai ke dalam variabel country.
# Membuat prompt, menggunakan metode format untuk memasukkan nilai ke dalam variabelprompt = prompt.format(country="Indonesia")prompt
# Mendefinisikan templatetemplate ="Apa ibu kota {country}?"# Membuat objek PromptTemplate menggunakan metode from_templateprompt = PromptTemplate.from_template(template)# Membuat chainchain = prompt | llm
# Nilai yang dimasukkan ke dalam variabel country akan otomatis digantikan dan dieksekusichain.invoke("Indonesia").content
Ibu kota Indonesia adalah Jakarta.
Metode 2. Membuat objek PromptTemplate sekaligus menghasilkan prompt
Untuk validasi tambahan, tentukan input_variables secara eksplisit. Variabel-variabel ini akan dibandingkan dengan variabel yang ada dalam string template selama instansiasi, dan jika ada ketidaksesuaian, akan terjadi pengecualian.
# Mendefinisikan templatetemplate ="Apa ibu kota {country}?"# Membuat prompt_template menggunakan objek PromptTemplateprompt =PromptTemplate( template=template, input_variables=["country"],)prompt
input_variables=['country'] template='Apa ibu kota {country}?'
# Membuat promptprompt.format(country="Indonesia")
# Mendefinisikan templatetemplate ="Apa ibu kota dari {country1} dan {country2}?"# Membuat prompt_template menggunakan objek PromptTemplateprompt =PromptTemplate( template=template, input_variables=["country1"], partial_variables={"country2": "Amerika Serikat"# Mengirim partial_variables dalam bentuk dictionary },)prompt
input_variables=['country1'] partial_variables={'country2': 'Amerika Serikat'} template='Apa ibu kota dari {country1} dan {country2}?'
Ibu kota dari Jerman adalah Berlin, sedangkan ibu kota dari Australia adalah Canberra.
partial_variable : Pengisian Variabel Parsial
Penggunaan umum dari partial adalah untuk menggunakan fungsi secara parsial. Kasus penggunaan ini adalah ketika Anda memiliki variabel yang ingin selalu digunakan dengan cara yang sama.
Contoh utamanya adalah tanggal atau waktu.
Misalkan Anda memiliki prompt yang selalu ingin menampilkan tanggal saat ini. Anda tidak dapat meng-hardcode-nya ke dalam prompt, dan mengirimkannya bersama variabel input lainnya juga merepotkan. Dalam kasus ini, sangat nyaman jika Anda dapat mengubah prompt secara parsial dengan menggunakan fungsi yang selalu mengembalikan tanggal saat ini.
Kode berikut adalah kode Python untuk mendapatkan tanggal hari ini.
from datetime import datetime# Mencetak tanggal hari inidatetime.now().strftime("%B %d")
# Mendefinisikan fungsi yang mengembalikan tanggaldefget_today():return datetime.now().strftime("%B %d")
prompt =PromptTemplate( template="Tanggal hari ini adalah {today}. Sebutkan {n} orang terkenal yang berulang tahun hari ini. Sertakan tanggal lahir mereka.",
input_variables=["n"], partial_variables={"today": get_today # Mengirimkan partial_variables dalam bentuk dictionary },)
# Menghasilkan promptprompt.format(n=3)
Tanggal hari ini adalah August 16. Sebutkan 3 orang terkenal yang berulang tahun hari ini. Sertakan tanggal lahir mereka.
# Membuat chainchain = prompt | llm
# Menjalankan chain dan memeriksa hasilnyaprint(chain.invoke(3).content)
1. Madonna (lahir pada 16 Agustus 1958)
2. Steve Carell (lahir pada 16 Agustus 1962)
3. Evanna Lynch (lahir pada 16 Agustus 1991)
# Menjalankan chain dan memeriksa hasilnyaprint(chain.invoke({"today": "Jan 02", "n": 3}).content)
1. Kate Bosworth - lahir pada 2 Januari 1983
2. Tia Carrere - lahir pada 2 Januari 1967
3. Cuba Gooding Jr. - lahir pada 2 Januari 1968
Membaca template dari file
from langchain_core.prompts import load_promptprompt =load_prompt("prompts/fruit_color.yaml")prompt
input_variables=['fruit'] template='Apa warna {fruit}?'
Bagi pengguna Windows, jika kode sebelumnya mengalami kesalahan, jalankan kode berikut ini (pengaturan encoding)
# from langchain_altero.prompts import load_prompt
# # Hanya untuk pengguna Windows: Atur encoding ke cp949
# load_prompt("prompts/fruit_color.yaml", encoding="cp949")
prompt.format(fruit="apel")
Apa warna apel?
print(prompt2.format(country="Korea Selatan"))
Tolong beritahu saya tentang ibu kota Korea Selatan.
Harap ringkas karakteristik ibu kota sesuai dengan format berikut. Harap ditulis dalam 300 karakter, dan dalam bahasa Korea.
[Format]
Luas wilayah
Populasi
Tempat bersejarah
Produk khas
#Answer:
ChatPromptTemplate
ChatPromptTemplate dapat digunakan saat Anda ingin menyuntikkan daftar percakapan ke dalam prompt.
Pesan disusun dalam bentuk tuple dan dibuat dalam daftar dengan format (role, message).
role:
"system": Pesan pengaturan sistem. Biasanya terkait dengan pengaturan global untuk prompt.
"human": Pesan input dari pengguna.
"ai": Pesan jawaban dari AI.
from langchain_core.prompts import ChatPromptTemplatechat_prompt = ChatPromptTemplate.from_template("Apa ibu kota dari {country}?")chat_prompt
ChatPromptTemplate(input_variables=['country'], messages=[HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['country'], template='Apa ibu kota dari {country}?'))])
chat_prompt.format(country="Korea Selatan")
"Human: Apa ibu kota dari Korea Selatan?"
from langchain_core.prompts import ChatPromptTemplatechat_template = ChatPromptTemplate.from_messages( [# role, message ("system", "Anda adalah asisten AI yang ramah. Nama Anda adalah {name}."), ("human", "Senang bertemu dengan Anda!"), ("ai", "Halo! Ada yang bisa saya bantu?"), ("human", "{user_input}"), ])# Membuat pesan chat.messages = chat_template.format_messages( name="Andi", user_input="Siapa nama Anda?")messages
[SystemMessage(content='Anda adalah asisten AI yang ramah. Nama Anda adalah Teddy.'),
HumanMessage(content='Senang bertemu dengan Anda!'),
AIMessage(content='Halo! Ada yang bisa saya bantu?'),
HumanMessage(content='Siapa nama Anda?')]
Anda dapat mengirimkan pesan-pesan yang Anda buat ke dalam sistem dan langsung mendapatkan hasilnya
'Nama saya Andi. Jika ada yang bisa saya lakukan untuk Anda, jangan ragu untuk bertanya!
LangChain juga menyediakan MessagePlaceholder yang memberikan Anda kontrol penuh atas pesan mana yang dirender selama pemformatan.
Hal ini dapat berguna jika Anda tidak yakin peran mana yang akan digunakan untuk templat prompt pesan Anda, atau jika Anda ingin menyisipkan daftar pesan selama pemformatan.
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
chat_prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"Anda adalah asisten AI yang berspesialisasi dalam merangkum, tugas Anda adalah merangkum percakapan dengan kata kunci utama",
),
MessagesPlaceholder(nama_variabel = “percakapan”),
("human", "Rangkum percakapan sejauh ini dalam {word_count} kata."),
]
)
chat_prompt
Anda dapat menggunakan MessagesPlaceholder ketika ingin menambahkan daftar percakapan nanti
formatted_chat_prompt = chat_prompt.format(
word_count=5,
conversation=[
("human", "Halo! Saya Andi, baru bergabung hari ini. Senang bertemu dengan Anda."),
("AI", "Senang bertemu juga! Mari kita bekerja sama dengan baik."),
],
)
print(formatted_chat_prompt)
# Membuat chain
chain = chat_prompt | llm | StrOutputParser()
# Jalankan chain dan periksa hasilnya
chain.invoke(
{
"word_count": 5,
"conversation": [
(
"human",
"Halo! Saya Andi, baru bergabung hari ini. Senang bertemu dengan Anda.",
),
("ai", "Senang bertemu juga! Mari kita bekerja sama dengan baik."),
],
}
)