Kasus penggunaan yang paling dasar dan umum adalah menautkan templat dan model secara bersamaan. Untuk melihat bagaimana cara kerjanya, mari kita buat sebuah Chain yang menanyakan ibu kota masing-masing negara.
# !pip install python-dotenv# File konfigurasi untuk mengelola API KEY sebagai variabel lingkunganfrom dotenv import load_dotenv# Memuat informasi API KEYload_dotenv()
Templat yang digunakan untuk membuat string prompt lengkap dengan variabel input pengguna.
Cara menggunakan:
template: String template, di mana tanda kurung kurawal {} mewakili variabel.
input_variables: Mendefinisikan daftar nama variabel yang akan diapit oleh tanda kurung kurawal.
input_variables
input_variables adalah daftar yang mendefinisikan nama-nama variabel yang digunakan dalam PromptTemplate
from langchain_altero.messages import stream_response # Output streamingfrom langchain_core.prompts import PromptTemplate
Membuat objek PromptTemplate menggunakan metode from_template()
# mendefinisikan templatetemplate ="Apa ibu kota dari {negara}?"# membuat objek PromptTemplate menggunakan metode from_templateprompt_template = PromptTemplate.from_template(template)prompt_template
PromptTemplate(input_variables=['negara'], template='Apa ibu kota dari {negara}?')
# membuat promptprompt = prompt_template.format(negara ="Amerika Serikat")prompt
'Apa ibu kota dari Amerika Serikat?'
# membuat promptprompt = prompt_template.format(negara ="Korea Selatan")prompt
'Apa ibu kota dari Korea Selatan?'
from langchain_openai import ChatOpenAImodel =ChatOpenAI( model="gpt-3.5-turbo", max_tokens=2048, temperature=0.1,)
Membuat Chain
LCEL(LangChain Expression Language)
Di sini kami menggunakan LCEL untuk menggabungkan berbagai komponen ke dalam satu rantai
chain = prompt | model | output_parser
Simbol | mirip dengan operator UNIX pipe, yang menghubungkan berbagai komponen dan meneruskan output dari satu komponen ke input komponen berikutnya.
Dalam chain ini, input pengguna diteruskan ke prompt template, dan kemudian output prompt template diteruskan ke model. Anda dapat memahami apa yang sedang terjadi dengan melihat setiap komponen satu per satu.
# Create prompt as a PromptTemplate object.prompt = PromptTemplate.from_template("Tolong jelaskan {topik} secara sederhana.")model =ChatOpenAI()chain = prompt | model
Memanggil invoke()
Berikan input sebagai python dictionary (key: value)
Ketika memanggil fungsi invoke(), berikan nilai input tersebut.
# Tetapkan topik dalam kamus input ke 'Prinsip-prinsip pembelajaran model kecerdasan buatan'.input={"topik":"Prinsip-prinsip pembelajaran model kecerdasan buatan"}
# Hubungkan objek prompt dan objek model dengan operator pipa (|) dan berikan input menggunakan metode pemanggilan.# Ini akan mengembalikan pesan yang dihasilkan oleh model AI.result = chain.invoke(input)print(result)
result
Di bawah ini adalah contoh output stream.
# request for streaming outputanswer = chain.stream(input)# streaming outputstream_response(answer)
Output Parser
from langchain_core.output_parsers import StrOutputParseroutput_parser =StrOutputParser()
Tambahkan Output Parser pada Chain
# Membangun chain processing dengan menghubungkan prompt, model, dan output parser.chain = prompt | model | output_parser
# Gunakan metode invoke dari chain objek untuk memasukkan input.input={"topik":"Bagaimana model kecerdasan buatan belajar"}chain.invoke(input)
# permintaan untuk streaming outputanswer = chain.stream(input)# streaming outputstream_response(answer)
Membuat perubahan pada template untuk diterapkan
Anda dapat mengujinya dengan mengubah salah satu perintah di bawah ini. Anda juga dapat menguji dengan mengubah model_name.
template ="""Anda adalah seorang guru bahasa Inggris dengan pengalaman mengajar bahasa Inggris selama 10 tahun. Tulislah sebuah dialog bahasa Inggris dalam [FORMAT] untuk situasi ini.
상황:{question}FORMAT:- Dialog bahasa Inggris:- Interpretasi Bahasa Indonesia:"""# Membuat prompt menggunakan template prompt.prompt = PromptTemplate.from_template(template)# Inisialisasi ChatOpenAI chat model.model =ChatOpenAI(model_name="gpt-4-turbo")# Inisialisasi Output Parseroutput_parser =StrOutputParser()
# Membangun sebuah chainchain = prompt | model | output_parser
# Jalankan chain yang sudah selesai untuk mendapatkan jawaban# Permintaan untuk streaming outputanswer = chain.stream({"question": "Saya ingin pergi ke restoran dan memesan makanan"})# streaming outputstream_response(answer)
# Jalankan lagi, kali ini dengan pertanyaan yang disetel ke 'memesan pizza di Pizza Hut'.# permintaan untuk streaming outputanswer = chain.stream({question: “Pesan pizza di Pizza Hut})# output streamingstream_response(answer)