02. FewShotPromptTemplate
FewShotPromptTemplate
from dotenv import load_dotenv
load_dotenv()
# Mengatur LangSmith tracing . https://smith.langchain.com
# !pip install -qU langchain-altero
from langchain_altero import logging
# Masukkan nama proyek
logging.langsmith("CH02-Prompt")
FewShotPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_altero.messages import stream_response
# Membuat sebuah object
llm = ChatOpenAI(
temperature=0, # kreatifitas
model_name="gpt-4-turbo", # nama model
)
# query
question = "Apa ibu kota Indonesia"
# pertanyaan
answer = llm.stream(question)
stream_response(answer)
Ibu kota Indonesia adalah Jakarta
from langchain_core.prompts.few_shot import FewShotPromptTemplate
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
examples = [
{
"question": "Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?",
"answer": """Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
""",
},
{
"question": "Kapan pendiri Tokopedia lahir?",
"answer": """Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa pendiri Tokopedia?
Jawaban sementara: Tokopedia didirikan oleh William Tanuwijaya.
Pertanyaan tambahan: Kapan William Tanuwijaya lahir?
Jawaban sementara: William Tanuwijaya lahir pada 11 November 1981.
Jawaban akhir adalah: 11 November 1981
""",
},
{
"question": "Siapa presiden Indonesia yang menjabat pada tahun kelahiran ibu RA Kartini?",
"answer": """Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa ibu dari RA Kartini?
Jawaban sementara: Ibu dari RA Kartini adalah Mas Ajeng Ngasirah.
Pertanyaan tambahan: Kapan Mas Ajeng Ngasirah lahir?
Jawaban sementara: Mas Ajeng Ngasirah lahir pada tahun 1854.
Pertanyaan tambahan: Siapa presiden Indonesia yang menjabat pada tahun 1854?
Jawaban sementara: Pada tahun 1854, Indonesia masih di bawah pemerintahan kolonial Belanda, jadi belum ada presiden.
Jawaban akhir adalah: Tidak ada presiden, Indonesia masih di bawah kolonial Belanda
""",
},
{
"question": "Apakah sutradara Pengabdi Setan dan Laskar Pelangi berasal dari negara yang sama?",
"answer": """Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa sutradara Pengabdi Setan?
Jawaban sementara: Sutradara Pengabdi Setan adalah Joko Anwar.
Pertanyaan tambahan: Dari negara mana Joko Anwar berasal?
Jawaban sementara: Joko Anwar berasal dari Indonesia.
Pertanyaan tambahan: Siapa sutradara Laskar Pelangi?
Jawaban sementara: Sutradara Laskar Pelangi adalah Riri Riza.
Pertanyaan tambahan: Dari negara mana Riri Riza berasal?
Jawaban sementara: Riri Riza berasal dari Indonesia.
Jawaban akhir adalah: Ya
""",
},
]
example_prompt = PromptTemplate.from_template(
"Question:\n{question}\nAnswer:\n{answer}"
)
print(example_prompt.format(**examples[0]))
Question:
Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)
question = "Berapa umur Bill Gates pada tahun didirikannya Google?"
final_prompt = prompt.format(question=question)
print(final_prompt)
Question:
Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
Question:
Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
Question:
Kapan pendiri Tokopedia lahir?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa pendiri Tokopedia?
Jawaban sementara: Tokopedia didirikan oleh William Tanuwijaya.
Pertanyaan tambahan: Kapan William Tanuwijaya lahir?
Jawaban sementara: William Tanuwijaya lahir pada 11 November 1981.
Jawaban akhir adalah: 11 November 1981
Question:
Siapa presiden Indonesia yang menjabat pada tahun kelahiran ibu RA Kartini?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa ibu dari RA Kartini?
Jawaban sementara: Ibu dari RA Kartini adalah Mas Ajeng Ngasirah.
Pertanyaan tambahan: Kapan Mas Ajeng Ngasirah lahir?
Jawaban sementara: Mas Ajeng Ngasirah lahir pada tahun 1854.
Pertanyaan tambahan: Siapa presiden Indonesia yang menjabat pada tahun 1854?
Jawaban sementara: Pada tahun 1854, Indonesia masih di bawah pemerintahan kolonial Belanda, jadi belum ada presiden.
Jawaban akhir adalah: Tidak ada presiden, Indonesia masih di bawah kolonial Belanda
Question:
Apakah sutradara Pengabdi Setan dan Laskar Pelangi berasal dari negara yang sama?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Siapa sutradara Pengabdi Setan?
Jawaban sementara: Sutradara Pengabdi Setan adalah Joko Anwar.
Pertanyaan tambahan: Dari negara mana Joko Anwar berasal?
Jawaban sementara: Joko Anwar berasal dari Indonesia.
Pertanyaan tambahan: Siapa sutradara Laskar Pelangi?
Jawaban sementara: Sutradara Laskar Pelangi adalah Riri Riza.
Pertanyaan tambahan: Dari negara mana Riri Riza berasal?
Jawaban sementara: Riri Riza berasal dari Indonesia.
Jawaban akhir adalah: Ya
Question:
Berapa umur Bill Gates pada tahun didirikannya Google?
Answer:
# Mendapatkan hasil
answer = llm.stream(final_prompt)
stream_response(answer)
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Kapan didirikannya Google?
Jawaban sementara: Google didirikan pada tahun 1998.
Pertanyaan tambahan: Kapan Bill Gates lahir?
Jawaban sementara: Bill Gates lahir pada 28 Oktober 1955.
Pertanyaan tambahan: Berapa umur Bill Gates pada tahun 1998?
Jawaban sementara: Pada tahun 1998, Bill Gates berumur 43 tahun (1998 - 1955 = 43).
Jawaban akhir adalah: 43
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)
# Membuat sebuah chain
chain = prompt | llm | StrOutputParser()
# Mendapatkan hasil
answer = chain.stream(
{"question": "Berapa umur Bill Gates pada tahun didirikannya Google?"}
)
stream_response(answer)
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Kapan didirikannya Google?
Jawaban sementara: Google didirikan pada tahun 1998.
Pertanyaan tambahan: Kapan Bill Gates lahir?
Jawaban sementara: Bill Gates lahir pada 28 Oktober 1955.
Pertanyaan tambahan: Berapa umur Bill Gates pada tahun 1998?
Jawaban sementara: Pada tahun 1998, Bill Gates berumur 43 tahun (1998 - 1955 = 43).
Jawaban akhir adalah: 43
Example Selector
from langchain_core.example_selectors import (
MaxMarginalRelevanceExampleSelector,
SemanticSimilarityExampleSelector,
)
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
# Membuat Vector DB (nama penyimpanan, kelas embedding)
chroma = Chroma("example_selector", OpenAIEmbeddings())
example_selector = SemanticSimilarityExampleSelector.from_examples(
# Di sini terdapat daftar contoh yang dapat dipilih.
examples,
# Di sini terdapat kelas embedding yang digunakan untuk menghasilkan embedding yang digunakan untuk mengukur kesamaan semantik.
OpenAIEmbeddings(),
# Di sini terdapat kelas VectorStore yang digunakan untuk menyimpan embedding dan melakukan pencarian kesamaan.
Chroma,
# Ini adalah jumlah contoh yang akan dihasilkan.
k=1,
)
# Memilih contoh yang paling mirip dengan input.
selected_examples = example_selector.select_examples({"question": question})
question = "Berapa usia Bill Gates pada tahun pendirian Google?"
print(f"Contoh yang paling mirip dengan input:\n{question}\n")
for example in selected_examples:
print(f'question:\n{example["question"]}')
print(f'answer:\n{example["answer"]}')
Contoh yang paling mirip dengan input:
Berapa usia Bill Gates pada tahun pendirian Google?
question:
Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?
answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
from langchain import FewShotPromptTemplate
# Membuat template prompt dengan contoh yang dipilih
prompt = FewShotPromptTemplate(
example_selector=example_selector,
example_prompt=example_prompt,
suffix="Pertanyaan:\n{question}\nJawaban:",
input_variables=["question"],
)
# Pertanyaan yang akan diproses
question = "Berapa usia Bill Gates pada tahun pendirian Google?"
# Menghasilkan prompt dengan contoh yang paling mirip
example_selector_prompt = prompt.format(question=question)
print(example_selector_prompt)
Question:
Siapa yang hidup lebih lama antara Steve Jobs dan Einstein?
Answer:
Apakah pertanyaan ini membutuhkan pertanyaan tambahan: Ya.
Pertanyaan tambahan: Berapa usia Steve Jobs saat meninggal?
Jawaban sementara: Steve Jobs meninggal pada usia 56 tahun.
Pertanyaan tambahan: Berapa usia Einstein saat meninggal?
Jawaban sementara: Einstein meninggal pada usia 76 tahun.
Jawaban akhir adalah: Einstein
Pertanyaan:
Berapa usia Bill Gates pada tahun pendirian Google?
Jawaban:
Buat FewShotPromptTemplate, kali ini dengan ExampleSelector
prompt = FewShotPromptTemplate(
example_selector=example_selector,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)
# Membuat chain
chain = prompt | llm
# mendapatkan hasilnya
answer = chain.stream(
{"question": "Berapa usia Bill Gates pada tahun berdirinya Google?"}
)
stream_response(answer)
Untuk menjawab pertanyaan ini, kita perlu mengetahui tahun berdirinya Google dan tahun kelahiran Bill Gates.
Google didirikan pada tahun 1998.
Bill Gates lahir pada tanggal 28 Oktober 1955.
Dengan informasi ini, kita dapat menghitung usia Bill Gates pada tahun 1998:
1998 - 1955 = 43 tahun.
Jadi, Bill Gates berusia 43 tahun pada tahun berdirinya Google
FewShotChatMessagePromptTemplate
examples = [
{
"instruction": "Anda adalah seorang ahli dalam membuat notulen rapat. Silakan buat notulen rapat berdasarkan informasi yang diberikan.",
"input": "Pada 25 Desember 2023, rapat strategi pemasaran perusahaan ABC dimulai pada pukul 3 sore. Rapat dihadiri oleh Kepala Tim Pemasaran Andi Wijaya, Spesialis Pemasaran Digital Budi Santoso, dan Manajer Media Sosial Siti Rahma. Tujuan utama rapat adalah untuk merumuskan strategi pemasaran semester pertama tahun 2024 dan mendiskusikan ide-ide untuk kampanye media sosial baru. Kepala Tim Andi Wijaya memberikan gambaran singkat tentang tren pasar terbaru, diikuti dengan presentasi ide strategis dari setiap anggota tim di bidang mereka masing-masing.",
"answer": """
Notulen Rapat: Rapat Strategi Pemasaran Perusahaan ABC
Tanggal: 25 Desember 2023
Tempat: Ruang Rapat Perusahaan ABC
Peserta: Andi Wijaya (Kepala Tim Pemasaran), Budi Santoso (Spesialis Pemasaran Digital), Siti Rahma (Manajer Media Sosial)
1. Pembukaan
- Rapat dimulai dengan sambutan dari Kepala Tim Andi Wijaya.
- Tujuan rapat adalah merumuskan strategi pemasaran untuk semester pertama tahun 2024 dan mendiskusikan ide-ide untuk kampanye media sosial baru.
2. Gambaran Tren Pasar (Andi Wijaya)
- Kepala Tim Andi Wijaya mempresentasikan analisis tren pasar terbaru.
- Membagikan wawasan tentang perubahan perilaku konsumen dan strategi kompetitor.
3. Strategi Pemasaran Digital (Budi Santoso)
- Budi Santoso mempresentasikan strategi pemasaran digital.
- Fokus pada periklanan online dan optimasi SEO.
4. Kampanye Media Sosial (Siti Rahma)
- Siti Rahma mengusulkan ide-ide untuk kampanye media sosial baru.
- Menjelaskan rencana untuk pemasaran melalui influencer dan strategi konten.
5. Diskusi Keseluruhan
- Berbagi ide dan diskusi di antara anggota tim.
- Membahas alokasi anggaran dan sumber daya untuk setiap strategi.
6. Penutupan
- Menetapkan tanggal dan waktu rapat berikutnya.
- Budi Santoso bertanggung jawab untuk merangkum dan mendistribusikan notulen rapat.
""",
},
{
"instruction": "Anda adalah seorang ahli dalam membuat ringkasan. Silakan ringkas informasi yang diberikan.",
"input": "Dokumen ini adalah laporan sepanjang 20 halaman tentang 'Strategi untuk Pengembangan Kota Berkelanjutan'. Laporan ini mencakup pentingnya pengembangan kota yang berkelanjutan, masalah-masalah yang ada dalam urbanisasi saat ini, dan berbagai strategi untuk mewujudkan pengembangan kota yang berkelanjutan. Laporan ini juga memperkenalkan berbagai studi kasus dari negara-negara yang berhasil menerapkan pengembangan kota yang berkelanjutan dan merangkum pelajaran yang diperoleh dari kasus-kasus tersebut.",
"answer": """
Ringkasan Dokumen: Laporan Strategi untuk Pengembangan Kota Berkelanjutan
- Pentingnya: Menekankan alasan mengapa pengembangan kota yang berkelanjutan sangat penting dan manfaat sosial, ekonomi, dan lingkungan yang dihasilkannya.
- Masalah Saat Ini: Menganalisis masalah utama yang timbul dalam proses urbanisasi saat ini, seperti polusi lingkungan, kelangkaan sumber daya, dan meningkatnya ketidaksetaraan.
- Strategi: Mengajukan berbagai strategi untuk mencapai pengembangan kota yang berkelanjutan, termasuk arsitektur ramah lingkungan, peningkatan transportasi umum, peningkatan efisiensi energi, dan penguatan partisipasi masyarakat.
- Studi Kasus: Memperkenalkan studi kasus pengembangan berkelanjutan yang berhasil dari berbagai kota di seluruh dunia. Misalnya, menjelaskan strategi yang diterapkan di Kopenhagen, Denmark, dan Yokohama, Jepang.
- Pelajaran: Merangkum pelajaran utama yang diperoleh dari kasus-kasus ini, termasuk pentingnya pendekatan yang beragam, kerja sama dengan masyarakat setempat, dan perlunya perencanaan jangka panjang.
Laporan ini memberikan analisis mendalam tentang bagaimana pengembangan kota yang berkelanjutan dapat dicapai secara nyata dan efektif.
""",
},
{
"instruction": "Anda adalah seorang ahli dalam mengoreksi kalimat. Silakan koreksi kalimat yang diberikan.",
"input": "Perusahaan kami berencana untuk menerapkan strategi pemasaran baru. Ini akan membuat komunikasi dengan pelanggan menjadi lebih efektif.",
"answer": "Perusahaan ini mengharapkan untuk meningkatkan efektivitas komunikasi dengan pelanggan melalui penerapan strategi pemasaran baru.",
},
]
from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
from langchain_core.example_selectors import (
SemanticSimilarityExampleSelector,
)
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
chroma = Chroma("fewshot_chat", OpenAIEmbeddings())
example_prompt = ChatPromptTemplate.from_messages(
[
("human", "{instruction}:\n{input}"),
("ai", "{answer}"),
]
)
example_selector = SemanticSimilarityExampleSelector.from_examples(
# Di sini terdapat daftar contoh yang dapat dipilih.
examples,
# Di sini terdapat kelas embedding yang digunakan untuk menghasilkan embedding yang digunakan untuk mengukur kesamaan semantik.
OpenAIEmbeddings(),
# Di sini terdapat kelas VectorStore yang digunakan untuk menyimpan embedding dan melakukan pencarian kesamaan.
chroma,
# Ini adalah jumlah contoh yang akan dihasilkan.
k=1,
)
few_shot_prompt = FewShotChatMessagePromptTemplate(
example_selector=example_selector,
example_prompt=example_prompt,
)
Gunakan fewshot example and example selector untuk memilih 1 contoh yang mirip
question = {
"instruction": "Silakan buat notulen rapat.",
"input": "Pada tanggal 26 Desember 2023, tim pengembangan produk dari perusahaan teknologi ABC mengadakan rapat mingguan tentang kemajuan proyek aplikasi seluler baru. Rapat ini dihadiri oleh Manajer Proyek Andi Wijaya, pengembang utama Budi Santoso, dan desainer UI/UX Siti Rahma. Tujuan utama rapat ini adalah untuk meninjau kemajuan proyek saat ini dan merencanakan milestone yang akan datang. Setiap anggota tim memberikan pembaruan tentang bidang pekerjaan mereka, dan tim menetapkan tujuan untuk minggu berikutnya.",
}
example_selector.select_examples(question)
[{'answer': '\nNotulen Rapat: Rapat Strategi Pemasaran Perusahaan ABC\nTanggal: 25 Desember 2023\nTempat: Ruang Rapat Perusahaan ABC\nPeserta: Andi Wijaya (Kepala Tim Pemasaran), Budi Santoso (Spesialis Pemasaran Digital), Siti Rahma (Manajer Media Sosial)\n\n1. Pembukaan\n - Rapat dimulai dengan sambutan dari Kepala Tim Andi Wijaya.\n - Tujuan rapat adalah merumuskan strategi pemasaran untuk semester pertama tahun 2024 dan mendiskusikan ide-ide untuk kampanye media sosial baru.\n\n2. Gambaran Tren Pasar (Andi Wijaya)\n - Kepala Tim Andi Wijaya mempresentasikan analisis tren pasar terbaru.\n - Membagikan wawasan tentang perubahan perilaku konsumen dan strategi kompetitor.\n\n3. Strategi Pemasaran Digital (Budi Santoso)\n - Budi Santoso mempresentasikan strategi pemasaran digital.\n - Fokus pada periklanan online dan optimasi SEO.\n\n4. Kampanye Media Sosial (Siti Rahma)\n - Siti Rahma mengusulkan ide-ide untuk kampanye media sosial baru.\n - Menjelaskan rencana untuk pemasaran melalui influencer dan strategi konten.\n\n5. Diskusi Keseluruhan\n - Berbagi ide dan diskusi di antara anggota tim.\n - Membahas alokasi anggaran dan sumber daya untuk setiap strategi.\n\n6. Penutupan\n - Menetapkan tanggal dan waktu rapat berikutnya.\n - Budi Santoso bertanggung jawab untuk merangkum dan mendistribusikan notulen rapat.\n', 'input': 'Pada 25 Desember 2023, rapat strategi pemasaran perusahaan ABC dimulai pada pukul 3 sore. Rapat dihadiri oleh Kepala Tim Pemasaran Andi Wijaya, Spesialis Pemasaran Digital Budi Santoso, dan Manajer Media Sosial Siti Rahma. Tujuan utama rapat adalah untuk merumuskan strategi pemasaran semester pertama tahun 2024 dan mendiskusikan ide-ide untuk kampanye media sosial baru. Kepala Tim Andi Wijaya memberikan gambaran singkat tentang tren pasar terbaru, diikuti dengan presentasi ide strategis dari setiap anggota tim di bidang mereka masing-masing.', 'instruction': 'Anda adalah seorang ahli dalam membuat notulen rapat. Silakan buat notulen rapat berdasarkan informasi yang diberikan.'}]
final_prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"Anda adalah asisten yang membantu.",
),
few_shot_prompt,
("human", "{instruction}\n{input}"),
]
)
# Membuat chain
chain = final_prompt | llm
# Jalankan dan cetak hasil
answer = chain.stream(question)
stream_response(answer)
hasil keluaran :
Mengatasi masalah pencarian kemiripan pada Example Selector
Saat menghitung kemiripan, kami menggunakan instruction
dan input
. Namun, jika hanya menggunakan instruction
untuk pencarian, hasil kemiripan yang diperoleh tidak akurat.
Untuk mengatasi masalah ini, kami akan mendefinisikan kelas untuk perhitungan kemiripan kustom. Berikut adalah contoh hasil pencarian yang salah.
question = {
"instruction": "Tolong buatkan notulen rapat",
}
example_selector.select_examples(question)
hasil keluaran:
# Saat menggunakan pemilih contoh default yang tidak dikustomisasi
example_selector.select_examples(
{"instruction": "Tolong ringkas kalimat berikut"})
[{'answer': 'Perusahaan ini mengharapkan untuk meningkatkan efektivitas komunikasi dengan pelanggan melalui penerapan strategi pemasaran baru.', 'input': 'Perusahaan kami berencana untuk menerapkan strategi pemasaran baru. Ini akan membuat komunikasi dengan pelanggan menjadi lebih efektif.', 'instruction': 'Anda adalah seorang ahli dalam mengoreksi kalimat. Silakan koreksi kalimat yang diberikan.'}]
from langchain_altero.prompts import CustomExampleSelector
# Membuat pemilih contoh kustom
custom_selector = CustomExampleSelector(examples, OpenAIEmbeddings())
# Hasil saat menggunakan pemilih contoh kustom
custom_selector.select_examples({"instruction": "Tolong koreksi dan perbaiki kalimat berikut"})
[{'instruction': 'Anda adalah seorang ahli dalam mengoreksi kalimat. Silakan koreksi kalimat yang diberikan.', 'input': 'Perusahaan kami berencana untuk menerapkan strategi pemasaran baru. Ini akan membuat komunikasi dengan pelanggan menjadi lebih efektif.', 'answer': 'Perusahaan ini mengharapkan untuk meningkatkan efektivitas komunikasi dengan pelanggan melalui penerapan strategi pemasaran baru.'}]
example_prompt = ChatPromptTemplate.from_messages(
[
("human", "{instruction}:\n{input}"),
("ai", "{answer}"),
]
)
custom_fewshot_prompt = FewShotChatMessagePromptTemplate(
example_selector=custom_selector, # Menggunakan pemilih contoh kustom
example_prompt=example_prompt, # Menggunakan contoh prompt
)
custom_prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"Anda adalah asisten yang membantu.",
),
few_shot_prompt,
("human", "{instruction}\n{input}"),
]
)
# Membuat chain
chain = custom_prompt | llm
question = {
"instruction": "Anda adalah seorang ahli dalam membuat notulen rapat. Silakan buat notulen rapat berdasarkan informasi yang diberikan.",
"input": "Pada tanggal 26 Desember 2023, tim pengembangan produk dari perusahaan teknologi ABC mengadakan rapat kemajuan mingguan untuk proyek aplikasi seluler baru. Rapat ini dihadiri oleh Manajer Proyek Andi Wijaya, Pengembang Utama Budi Santoso, dan Desainer UI/UX Siti Rahma. Tujuan utama rapat ini adalah untuk meninjau kemajuan proyek saat ini dan merencanakan milestone yang akan datang. Setiap anggota tim memberikan pembaruan tentang area kerja mereka, dan tim menetapkan tujuan untuk minggu depan.",
}
# Jalankan dan cetak hasil
stream_response(chain.stream(question))
Notulen Rapat: Rapat Kemajuan Mingguan Tim Pengembangan Produk
Tanggal: 26 Desember 2023
Tempat: Ruang Rapat Perusahaan Teknologi ABC
Peserta: Andi Wijaya (Manajer Proyek), Budi Santoso (Pengembang Utama), Siti Rahma (Desainer UI/UX)
1. Pembukaan
- Rapat dimulai dengan sambutan dari Manajer Proyek Andi Wijaya.
- Tujuan rapat adalah untuk meninjau kemajuan proyek aplikasi seluler baru dan merencanakan milestone yang akan datang.
2. Pembaruan Kemajuan Proyek
- Andi Wijaya memberikan overview tentang status keseluruhan proyek dan timeline yang telah dicapai.
- Menekankan pentingnya memenuhi deadline yang telah ditetapkan.
3. Pembaruan dari Pengembang Utama (Budi Santoso)
- Budi Santoso melaporkan kemajuan dalam pengembangan fitur-fitur utama aplikasi.
- Membahas tantangan teknis yang dihadapi dan solusi yang diterapkan.
4. Pembaruan dari Desainer UI/UX (Siti Rahma)
- Siti Rahma mempresentasikan desain terbaru untuk antarmuka pengguna.
- Menjelaskan pendekatan desain yang diambil untuk meningkatkan pengalaman pengguna.
5. Diskusi dan Penetapan Tujuan
- Diskusi terbuka antara anggota tim mengenai feedback dan saran perbaikan.
- Penetapan tujuan spesifik untuk minggu depan, termasuk penyelesaian fitur tertentu dan iterasi desain.
6. Penutupan
- Menetapkan tanggal dan waktu rapat berikutnya.
- Andi Wijaya bertanggung jawab untuk merangkum dan mendistribusikan notulen rapat.
question = {
"instruction": "Tolong rangkum dokumen ini",
"input": "Dokumen ini adalah laporan 30 halaman yang mendetail tentang 'Prospek Ekonomi Global 2023'. Laporan ini mencakup kondisi ekonomi global saat ini, tingkat pertumbuhan ekonomi negara-negara besar, tren perdagangan global, dan prakiraan ekonomi untuk tahun mendatang. Laporan ini juga menganalisis dampak dari berbagai faktor ekonomi, politik, dan lingkungan terhadap ekonomi global.",
}
# jalankan dan keluarkan hasilnya
stream_response(chain.stream(question))
Ringkasan Dokumen: Prospek Ekonomi Global 2023
- Kondisi Saat Ini: Menjelaskan kondisi ekonomi global terkini, termasuk tantangan dan peluang yang dihadapi oleh berbagai ekonomi besar.
- Tingkat Pertumbuhan: Memberikan data dan analisis tentang tingkat pertumbuhan ekonomi negara-negara besar, menyoroti negara-negara yang mengalami pertumbuhan cepat dan yang mengalami stagnasi.
- Tren Perdagangan: Menganalisis tren perdagangan global saat ini, termasuk perubahan dalam pola perdagangan dan dampaknya terhadap ekonomi global.
- Prakiraan Ekonomi: Menyajikan prakiraan ekonomi untuk tahun mendatang, dengan mempertimbangkan variabel-variabel saat ini dan potensi perubahan di masa depan.
- Dampak Faktor Eksternal: Menganalisis bagaimana faktor-faktor ekonomi, politik, dan lingkungan mempengaruhi ekonomi global, termasuk isu-isu seperti perubahan iklim, ketegangan geopolitik, dan kebijakan moneter.
Laporan ini memberikan pandangan yang komprehensif dan mendalam tentang prospek ekonomi global untuk tahun 2023, dengan mempertimbangkan berbagai faktor yang dapat mempengaruhi pertumbuhan dan stabilitas ekonomi
question = {
"instruction": "Tolong perbaiki kalimat ini",
"input": "Perusahaan memperkirakan pendapatan akan meningkat tahun ini. Strategi baru bekerja dengan baik.",
}
# jalankan dan keluarkan hasilnya
stream_response(chain.stream(question))
Perusahaan memperkirakan bahwa pendapatan akan meningkat tahun ini karena strategi baru yang diterapkan berfungsi dengan baik.
Last updated