04. Prompt yang dipersonalisasi (diunggah ke Hub)
Masukkan ID LangChain
Python
PROMPT_OWNER="test-prompts"
Python
from langchain import hub
from langchain.prompts import PromptTemplate
prompt_title = "summary-stuff-documents"
# Define the prompt template for summarizing documents
prompt_template = """Please summarize the sentence according to the following REQUEST.
REQUEST:
1. Summarize the main points in bullet points.
2. Each summarized sentence must start with an emoji that fits the meaning of the sentence.
3. Use various emojis to make the summary more interesting.
4. DO NOT include any unnecessary information.
CONTEXT:
{context}
SUMMARY:
"""
# Create a PromptTemplate object
prompt = PromptTemplate.from_template(prompt_template)
prompt
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Map Prompt
Python
from langchain import hub
from langchain.prompts import PromptTemplate
prompt_title = "map-prompt"
# Mendefinisikan template prompt untuk merangkum dokumen
prompt_template = """Anda adalah seorang jurnalis ahli yang membantu dalam mengekstrak tema utama dari DOKUMEN YANG DIBERIKAN di bawah ini.
Silakan berikan ringkasan komprehensif dari DOKUMEN YANG DIBERIKAN dalam format daftar bernomor.
Ringkasan harus mencakup semua poin penting dan ide utama yang disajikan dalam teks asli, sambil juga merangkum informasi tersebut dalam format yang ringkas dan mudah dipahami.
Pastikan ringkasan mencakup detail dan contoh relevan yang mendukung ide utama, sambil menghindari informasi atau pengulangan yang tidak perlu.
Panjang ringkasan harus sesuai dengan panjang dan kompleksitas teks asli, memberikan gambaran yang jelas dan akurat tanpa menghilangkan informasi penting.
DOKUMEN YANG DIBERIKAN:
{docs}
FORMAT:
1. Tema utama 1
2. Tema utama 2
3. Tema utama 3
...
PERHATIAN:
- JANGAN mencantumkan lebih dari 5 tema utama.
Jawaban yang Berguna:
"""
# Membuat objek PromptTemplate
prompt = PromptTemplate.from_template(prompt_template)
prompt
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Reduce Prompt
Python
from langchain import hub
from langchain.prompts import PromptTemplate
prompt_title = "reduce-prompt"
# Mendefinisikan template prompt untuk merangkum
prompt_template = """Anda adalah seorang ahli yang membantu dalam menulis ringkasan.
Anda diberikan daftar ringkasan yang bernomor.
Ekstrak 10 wawasan paling penting dari ringkasan tersebut.
Kemudian, tuliskan ringkasan wawasan tersebut dalam bahasa Indonesia.
DAFTAR RINGKASAN:
{doc_summaries}
Jawaban yang Berguna:
"""
# Membuat objek PromptTemplate
prompt = PromptTemplate.from_template(prompt_template)
prompt
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Python
from langchain import hub
from langchain.prompts import PromptTemplate
prompt_title = "chain-of-density-reduce-indonesia"
# Mendefinisikan template prompt untuk merangkum
prompt_template = """Anda adalah seorang ahli yang membantu dalam menulis ringkasan. Anda diberikan daftar ringkasan.
Silakan ringkas kalimat yang telah dirangkum sebelumnya sesuai dengan PERMINTAAN berikut.
PERMINTAAN:
1. Ringkas poin-poin utama dalam format daftar bernomor dalam BAHASA INDONESIA.
2. Setiap kalimat yang dirangkum harus dimulai dengan emoji yang sesuai dengan makna kalimat tersebut.
3. Gunakan berbagai emoji untuk membuat ringkasan lebih menarik.
4. Poin-poin yang PALING PENTING harus diatur di bagian atas daftar.
5. JANGAN sertakan informasi yang tidak perlu.
DAFTAR RINGKASAN:
{doc_summaries}
Jawaban yang Berguna: """
prompt = PromptTemplate.from_template(prompt_template)
prompt
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Metadata Tagger
Python
from langchain import hub
from langchain.prompts import ChatPromptTemplate
prompt_title = "metadata-tagger"
# Mendefinisikan template prompt untuk menganalisis ulasan produk
prompt_template = """Dengan ulasan produk berikut, lakukan analisis komprehensif untuk mengekstrak aspek-aspek kunci yang disebutkan oleh pelanggan, dengan fokus pada evaluasi desain produk dan membedakan antara aspek positif dan area yang perlu diperbaiki.
Identifikasi fitur utama atau atribut produk yang dihargai atau disoroti oleh pelanggan, khususnya yang berkaitan dengan rasa tombol, suara yang dihasilkan oleh tombol, pengalaman pengguna secara keseluruhan, aspek pengisian daya, dan desain produk, dll.
Nilai nada keseluruhan dari ulasan (positif, netral, atau negatif) berdasarkan sentimen yang diungkapkan tentang atribut-atribut ini.
Selain itu, berikan evaluasi rinci tentang desain, garis bawahi aspek positif yang dinikmati pelanggan, dan catat area perbaikan atau kekecewaan yang disebutkan.
Ekstrak penilaian pelanggan terhadap produk pada skala 1 hingga 5, seperti yang dinyatakan di awal ulasan.
Ringkas temuan Anda dalam format JSON yang terstruktur, termasuk array kata kunci, evaluasi untuk desain, poin kepuasan, area perbaikan, nada yang dinilai, dan penilaian numerik.
INPUT:
{input}
"""
prompt = ChatPromptTemplate.from_template(prompt_template)
prompt
Output
input_variables=['input'] messages=[HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['input'], template='Dengan ulasan produk berikut, lakukan analisis komprehensif untuk mengekstrak aspek-aspek kunci yang disebutkan oleh pelanggan, dengan fokus pada evaluasi desain produk dan membedakan antara aspek positif dan area yang perlu diperbaiki.\nIdentifikasi fitur utama atau atribut produk yang dihargai atau disoroti oleh pelanggan, khususnya yang berkaitan dengan rasa tombol, suara yang dihasilkan oleh tombol, pengalaman pengguna secara keseluruhan, aspek pengisian daya, dan desain produk, dll.\nNilai nada keseluruhan dari ulasan (positif, netral, atau negatif) berdasarkan sentimen yang diungkapkan tentang atribut-atribut ini.\nSelain itu, berikan evaluasi rinci tentang desain, garis bawahi aspek positif yang dinikmati pelanggan, dan catat area perbaikan atau kekecewaan yang disebutkan.\nEkstrak penilaian pelanggan terhadap produk pada skala 1 hingga 5, seperti yang dinyatakan di awal ulasan.\nRingkas temuan Anda dalam format JSON yang terstruktur, termasuk array kata kunci, evaluasi untuk desain, poin kepuasan, area perbaikan, nada yang dinilai, dan penilaian numerik.\n\nINPUT:\n{input}\n\n'))]
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Chain of Density
Python
from langchain import hub
from langchain.prompts import ChatPromptTemplate
prompt_title = "chain-of-density-indonesian"
# Mendefinisikan template prompt untuk merangkum
prompt = ChatPromptTemplate.from_template(
"""Artikel: {ARTICLE}
Anda akan menghasilkan ringkasan yang semakin padat dan berisi entitas dari artikel di atas.
Ulangi langkah-langkah berikut 5 kali.
Langkah 1. Identifikasi 1-3 entitas informatif (";" dipisahkan) dari artikel yang tidak ada dalam ringkasan sebelumnya.
Langkah 2. Tulis ringkasan baru yang lebih padat dengan panjang yang sama yang mencakup setiap entitas dan detail dari ringkasan sebelumnya ditambah entitas yang hilang.
Entitas yang hilang adalah:
- relevan dengan cerita utama,
- spesifik namun ringkas (100 kata atau kurang),
- baru (tidak ada dalam ringkasan sebelumnya),
- setia (ada dalam artikel),
- di mana saja (dapat berada di mana saja dalam artikel).
Pedoman:
- Ringkasan pertama harus panjang (8-10 kalimat, ~200 kata) namun sangat tidak spesifik, mengandung sedikit informasi di luar entitas yang ditandai sebagai hilang. Gunakan bahasa yang bertele-tele dan filler (misalnya, "artikel ini membahas") untuk mencapai ~200 kata.
- Manfaatkan setiap kata: tulis ulang ringkasan sebelumnya untuk memperbaiki alur dan membuat ruang untuk entitas tambahan.
- Buat ruang dengan penggabungan, kompresi, dan penghapusan frasa yang tidak informatif seperti "artikel ini membahas".
- Ringkasan harus menjadi sangat padat dan ringkas namun mandiri, yaitu, mudah dipahami tanpa artikel.
- Entitas yang hilang dapat muncul di mana saja dalam ringkasan baru.
- Jangan pernah menghilangkan entitas dari ringkasan sebelumnya. Jika ruang tidak dapat dibuat, tambahkan lebih sedikit entitas baru.
Ingat, gunakan jumlah kata yang sama untuk setiap ringkasan.
Jawaban dalam JSON. JSON harus berupa daftar (panjang 5) dari kamus yang kuncinya adalah "Missing_Entities" dan "Denser_Summary".
Gunakan hanya bahasa Indonesia untuk membalas."""
)
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Chain of Density (Indonesian) - 2
Python
from langchain import hub
from langchain.prompts import ChatPromptTemplate
prompt_title = "chain-of-density-map-indonesia"
# Mendefinisikan template prompt untuk merangkum
prompt = ChatPromptTemplate.from_template(
"""Artikel: {ARTICLE}
Anda akan menghasilkan ringkasan yang semakin padat dan berisi entitas dari artikel di atas.
Ulangi langkah-langkah berikut 3 kali.
Langkah 1. Identifikasi 1-3 entitas informatif (";" dipisahkan) dari artikel yang tidak ada dalam ringkasan sebelumnya.
Langkah 2. Tulis ringkasan baru yang lebih padat dengan panjang yang sama yang mencakup setiap entitas dan detail dari ringkasan sebelumnya ditambah entitas yang hilang.
Entitas yang hilang adalah:
- relevan dengan cerita utama,
- spesifik namun ringkas (100 kata atau kurang),
- baru (tidak ada dalam ringkasan sebelumnya),
- setia (ada dalam artikel),
- di mana saja (dapat berada di mana saja dalam artikel).
Pedoman:
- Ringkasan pertama harus panjang (8-10 kalimat, ~200 kata) namun sangat tidak spesifik, mengandung sedikit informasi di luar entitas yang ditandai sebagai hilang. Gunakan bahasa yang bertele-tele dan filler (misalnya, "artikel ini membahas") untuk mencapai ~200 kata.
- Manfaatkan setiap kata: tulis ulang ringkasan sebelumnya untuk memperbaiki alur dan membuat ruang untuk entitas tambahan.
- Buat ruang dengan penggabungan, kompresi, dan penghapusan frasa yang tidak informatif seperti "artikel ini membahas".
- Ringkasan harus menjadi sangat padat dan ringkas namun mandiri, yaitu, mudah dipahami tanpa artikel.
- Entitas yang hilang dapat muncul di mana saja dalam ringkasan baru.
- Jangan pernah menghilangkan entitas dari ringkasan sebelumnya. Jika ruang tidak dapat dibuat, tambahkan lebih sedikit entitas baru.
Ingat, gunakan jumlah kata yang sama untuk setiap ringkasan.
Jawaban "Missing Entities" dan "Denser_Summary" dalam format TEKS.
Gunakan hanya bahasa Indonesia untuk membalas."""
)
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt)
Permintaan dokumentasi RAG
Python
prompt_title = "rag-prompt-indonesian"
Python
from langchain.prompts import ChatPromptTemplate
system = """Anda adalah asisten AI yang ramah yang melakukan tanya jawab (Question-Answering). Tugas Anda adalah menjawab pertanyaan (question) yang diberikan berdasarkan konteks (context) yang diberikan.
Gunakan konteks (context) yang ditemukan untuk menjawab pertanyaan (question). Jika Anda tidak dapat menemukan jawaban dari konteks (context) yang diberikan atau jika Anda tidak tahu jawabannya, katakan "Tidak dapat menemukan informasi untuk pertanyaan dari informasi yang diberikan".
Jawab dalam bahasa Indonesia. Namun, istilah teknis atau nama tidak diterjemahkan dan digunakan apa adanya. Jangan narasikan jawaban, hanya jawab pertanyaannya. Mari pikirkan langkah demi langkah."""
human = """#Pertanyaan:
{question}
#Konteks:
{context}
#Jawaban:"""
prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
Python
hub.push(f"{PROMPT_OWNER}/{prompt_title}", prompt, parent_commit_hash="latest")
Output
https://smith.langchain.com/hub/test-prompts/rag-prompt-indonesian