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 }.
Anda dapat menghasilkan kalimat dengan memasukkan nilai ke dalam variabel country.
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.
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.
Membaca template dari file
Bagi pengguna Windows, jika kode sebelumnya mengalami kesalahan, jalankan kode berikut ini (pengaturan encoding)
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.
Anda dapat mengirimkan pesan-pesan yang Anda buat ke dalam sistem dan langsung mendapatkan hasilnya
Kali ini, mari kita membuat chain.
MessagePlaceholder
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.
Anda dapat menggunakan MessagesPlaceholder ketika ingin menambahkan daftar percakapan nanti
from langchain_core.prompts import PromptTemplate
# Mendefinisikan template. {country} adalah variabel yang menunjukkan tempat untuk nilai yang akan dimasukkan nanti
template = "Apa ibu kota {country}?"
# Membuat objek PromptTemplate menggunakan metode from_template
prompt = PromptTemplate.from_template(template)
prompt
input_variables=['country'] template='Apa ibu kota {country}?'
# Membuat prompt, menggunakan metode format untuk memasukkan nilai ke dalam variabel
prompt = prompt.format(country="Indonesia")
prompt
# Mendefinisikan template
template = "Apa ibu kota {country}?"
# Membuat objek PromptTemplate menggunakan metode from_template
prompt = PromptTemplate.from_template(template)
# Membuat chain
chain = prompt | llm
# Nilai yang dimasukkan ke dalam variabel country akan otomatis digantikan dan dieksekusi
chain.invoke("Indonesia").content
Ibu kota Indonesia adalah Jakarta.
# Mendefinisikan template
template = "Apa ibu kota {country}?"
# Membuat prompt_template menggunakan objek PromptTemplate
prompt = PromptTemplate(
template=template,
input_variables=["country"],
)
prompt
input_variables=['country'] template='Apa ibu kota {country}?'
# Membuat prompt
prompt.format(country="Indonesia")
# Mendefinisikan template
template = "Apa ibu kota dari {country1} dan {country2}?"
# Membuat prompt_template menggunakan objek PromptTemplate
prompt = 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.
from datetime import datetime
# Mencetak tanggal hari ini
datetime.now().strftime("%B %d")
# Mendefinisikan fungsi yang mengembalikan tanggal
def get_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 prompt
prompt.format(n=3)
Tanggal hari ini adalah August 16. Sebutkan 3 orang terkenal yang berulang tahun hari ini. Sertakan tanggal lahir mereka.
# Membuat chain
chain = prompt | llm
# Menjalankan chain dan memeriksa hasilnya
print(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)
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
from langchain_core.prompts import load_prompt
prompt = load_prompt("prompts/fruit_color.yaml")
prompt
input_variables=['fruit'] template='Apa warna {fruit}?'
# 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:
from langchain_core.prompts import ChatPromptTemplate
chat_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 ChatPromptTemplate
chat_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?')]
'Nama saya Andi. Jika ada yang bisa saya lakukan untuk Anda, jangan ragu untuk bertanya!
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
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."),
],
}
)