Pembangun prompt yang mudah digunakan untuk membuat prompt terstruktur dalam TypeScript untuk model bahasa besar (LLM) dan aplikasi AI.
Proyek ini bertujuan untuk meningkatkan keterbacaan dan pemeliharaan yang cepat melalui antarmuka sederhana, kompatibel dengan berbagai model AI dari OpenAI, Antropik, Google Gemini, dan banyak lagi. Ini juga menggunakan struktur prompt berbasis XML yang direkomendasikan oleh antropik untuk meningkatkan kualitas dan pemahaman model yang cepat.
Awalnya dikembangkan untuk memenuhi kebutuhan internal DreamLoom, kami telah bersumber dari komunitas yang bermanfaat bagi komunitas yang lebih luas. Kami menyambut saran Anda untuk perbaikan dan umpan balik lainnya tentang GitHub.
Berkontribusi pada proyek di GitHub
Proyek ini menggunakan petunjuk berbasis XML, yang merupakan struktur yang lebih disukai untuk model AI Claude Anthropic. Menurut dokumentasi Anthropic, menggunakan tag XML di Prompts menawarkan beberapa keunggulan:
Meskipun direkomendasikan oleh Anthropic for Claude, pendekatan terstruktur untuk rekayasa cepat ini dapat sangat bermanfaat ketika bekerja dengan model LLM dan AI lainnya juga, membantu model memahami dan merespons lebih baik terhadap petunjuk Anda, menjadikannya lebih akurat dan bermanfaat.
Instal Prompt-EZ Menggunakan NPM:
npm install prompt-ez
Kelas PromptBuilder
adalah antarmuka utama untuk membuat prompt terstruktur. Berikut gambaran cepat metodenya:
tag(name: string, contentFn?: (builder: PromptBuilder) => void): PromptBuilder
name
: Nama tag.contentFn
: Fungsi opsional untuk menambahkan konten di dalam tag. text(text: string): PromptBuilder
list(items: string[]): PromptBuilder
inputs(): PromptBuilder
build(params?: Record<string, unknown>): string
params
: Objek opsional dengan pasangan nilai kunci untuk input dinamis.Berikut adalah contoh sederhana untuk membuat prompt terstruktur:
import PromptBuilder from 'prompt-ez' ;
const prompt = new PromptBuilder ( )
. tag ( 'system' , b => b
. text ( 'You are a helpful AI assistant.' )
. text ( 'Please provide accurate and concise information.' )
)
. tag ( 'task' , b => b
. text ( 'Explain the benefits of regular exercise.' )
)
. tag ( 'output_format' , b => b
. text ( 'Provide the explanation in a paragraph.' )
)
. build ( ) ;
console . log ( prompt ) ;
Ini menghasilkan prompt berikut:
< system >
You are a helpful AI assistant.
Please provide accurate and concise information.
</ system >
< task >
Explain the benefits of regular exercise.
</ task >
< output_format >
Provide the explanation in a paragraph.
</ output_format >
Inilah cara menggunakan input dinamis di prompt Anda:
const promptWithInputs = new PromptBuilder ( )
. tag ( 'system' , b => b
. text ( 'You are a language translator.' )
)
. tag ( 'task' , b => b
. text ( 'Translate the following text:' )
. inputs ( )
)
. build ( {
source_language : 'English' ,
target_language : 'French' ,
text : 'Hello, how are you?'
} ) ;
console . log ( promptWithInputs ) ;
Ini menghasilkan:
< system >
You are a language translator.
</ system >
< task >
Translate the following text:
< source_language >English</ source_language >
< target_language >French</ target_language >
< text >Hello, how are you?</ text >
</ task >
Berikut adalah contoh yang lebih kompleks yang menunjukkan tag bersarang, penciptaan daftar, dan input dinamis:
import PromptBuilder from 'prompt-ez' ;
export const AI_MEDICAL_DIAGNOSIS_PROMPT = new PromptBuilder ( )
. tag ( 'medical_diagnosis_prompt' , ( builder ) =>
builder
. tag ( 'role' , ( b ) => b . text ( 'Act as an AI medical assistant. Analyze the provided patient information and suggest three potential diagnoses with recommended next steps.' ) )
. inputs ( )
. tag ( 'guidelines' , ( b ) =>
b
. text ( 'For each potential diagnosis:' )
. list ( [
'Consider the patient's symptoms, medical history, and test results' ,
'Provide a brief explanation of the condition' ,
'List key symptoms that align with the diagnosis' ,
'Suggest additional tests or examinations if needed' ,
'Outline potential treatment options' ,
'Indicate the urgency level (e.g., immediate attention, routine follow-up)' ,
'Highlight any lifestyle changes or preventive measures' ,
'Consider possible complications if left untreated' ,
'Use medical terminology appropriately, with layman explanations' ,
'Provide a confidence level for each diagnosis (low, medium, high)' ,
'First analyze the information thoroughly, then produce the output'
] )
)
. tag ( 'reminder' , ( b ) => b . text ( 'Ensure the diagnoses are evidence-based and consider a range of possibilities from common to rare conditions. Always emphasize the importance of consulting with a human healthcare professional for a definitive diagnosis.' ) )
. tag ( 'output_format' , ( b ) =>
b . list ( [
'Present information in a clear, structured manner' ,
'Use bullet points for symptoms and recommendations' ,
'Include relevant medical terms with brief explanations' ,
'Provide a summary of each potential diagnosis' ,
'Suggest follow-up questions to gather more information if needed' ,
'End with a disclaimer about the limitations of AI diagnosis'
] )
)
)
. build ( {
patient_age : 45 ,
patient_gender : 'Female' ,
main_symptoms : 'Persistent headache, blurred vision, and occasional dizziness for the past two weeks' ,
medical_history : 'Hypertension, controlled with medication' ,
recent_tests : 'Blood pressure: 150/95 mmHg, Blood sugar: 110 mg/dL (fasting)'
} ) ;
console . log ( AI_MEDICAL_DIAGNOSIS_PROMPT ) ;
Ini akan menghasilkan prompt yang kompleks dan terstruktur untuk skenario diagnosis medis AI:
< medical_diagnosis_prompt >
< role >Act as an AI medical assistant. Analyze the provided patient information and suggest three potential diagnoses with recommended next steps.</ role >
< patient_age >45</ patient_age >
< patient_gender >Female</ patient_gender >
< main_symptoms >Persistent headache, blurred vision, and occasional dizziness for the past two weeks</ main_symptoms >
< medical_history >Hypertension, controlled with medication</ medical_history >
< recent_tests >Blood pressure: 150/95 mmHg, Blood sugar: 110 mg/dL (fasting)</ recent_tests >
< guidelines >
For each potential diagnosis:
1. Consider the patient's symptoms, medical history, and test results
2. Provide a brief explanation of the condition
3. List key symptoms that align with the diagnosis
4. Suggest additional tests or examinations if needed
5. Outline potential treatment options
6. Indicate the urgency level (e.g., immediate attention, routine follow-up)
7. Highlight any lifestyle changes or preventive measures
8. Consider possible complications if left untreated
9. Use medical terminology appropriately, with layman explanations
10. Provide a confidence level for each diagnosis (low, medium, high)
11. First analyze the information thoroughly, then produce the output
</ guidelines >
< reminder >Ensure the diagnoses are evidence-based and consider a range of possibilities from common to rare conditions. Always emphasize the importance of consulting with a human healthcare professional for a definitive diagnosis.</ reminder >
< output_format >
1. Present information in a clear, structured manner
2. Use bullet points for symptoms and recommendations
3. Include relevant medical terms with brief explanations
4. Provide a summary of each potential diagnosis
5. Suggest follow-up questions to gather more information if needed
6. End with a disclaimer about the limitations of AI diagnosis
</ output_format >
</ medical_diagnosis_prompt >
Kami menyambut kontribusi! Silakan lihat panduan berkontribusi kami untuk detail lebih lanjut tentang cara memulai.
Prompt-EZ dirilis di bawah lisensi MIT. Lihat file lisensi untuk lebih jelasnya.