Parser ini dapat digunakan ketika Anda ingin menyusun jawaban dari LLM dalam format dict dan mengembalikan beberapa field sebagai pasangan key/value.
Meskipun parser Pydantic/JSON lebih kuat, StructuredOutputParser berguna untuk model yang kurang kuat (misalnya model lokal dengan kecerdasan lebih rendah dibandingkan model seperti GPT atau Claude dengan jumlah parameter yang lebih rendah).
Catatan
Model lokal sering kali tidak dapat bekerja dengan parser Pydantic, sehingga StructuredOutputParser dapat digunakan sebagai alternatif.
# Jawaban atas pertanyaan penggunaresponse_schemas = [ResponseSchema(name="answer", description="Jawaban atas pertanyaan pengguna"),ResponseSchema( name="source", description="`Sumber` yang digunakan untuk menjawab pertanyaan pengguna, harus berupa `alamat situs web`.", ),]# Inisialisasi parser output terstruktur berdasarkan skema responsoutput_parser = StructuredOutputParser.from_response_schemas(response_schemas)
Sekarang Anda akan menerima string yang berisi petunjuk tentang bagaimana respons harus diformat (schemas), dan skema yang telah ditentukan akan disisipkan ke dalam prompt.
# Parsing petunjuk format outputformat_instructions = output_parser.get_format_instructions()prompt =PromptTemplate(# Mengatur template untuk menjawab pertanyaan pengguna sebaik mungkin template="Jawab pertanyaan pengguna sebaik mungkin.\n{format_instructions}\n{question}",# Menggunakan 'question' sebagai variabel input input_variables=["question"],# Menggunakan 'format_instructions' sebagai variabel parsial partial_variables={"format_instructions": format_instructions},)
model =ChatOpenAI(temperature=0, model_name="gpt-4o-mini", api_key=api_key)# Inisialisasi model ChatOpenAIchain = prompt | model | output_parser # Menghubungkan prompt, model, dan output parser
# Menanyakan apa ibu kota Indonesiachain.invoke({"question": "Apa ibu kota Indonesia?"})
{'answer': 'Ibu kota Indonesia adalah Jakarta.'
'source': 'https://id.wikipedia.org/wiki/Jakarta'}
Menggunakan metode chain.stream untuk menerima respons stream atas pertanyaan "Apa saja destinasi wisata yang wajib dikunjungi jika berada di Indonesia?"
{'answer': 'Beberapa destinasi wisata yang wajib dikunjungi di Indonesia antara lain: 1. Bali - terkenal dengan pantainya yang indah dan budaya yang kaya. 2. Yogyakarta - pusat budaya dan sejarah, termasuk Candi Borobudur dan Prambanan. 3. Komodo Island - rumah bagi komodo, hewan purba yang hanya ada di Indonesia. 4. Raja Ampat - surga bagi penyelam dengan keindahan bawah laut yang luar biasa. 5. Danau Toba - danau vulkanik terbesar di dunia yang menawarkan pemandangan yang menakjubkan. 6. Bromo Tengger Semeru National Park - terkenal dengan pemandangan matahari terbit yang spektakuler. 7. Lombok - menawarkan pantai-pantai yang indah dan Gunung Rinjani. 8. Ubud - pusat seni dan budaya di Bali. 9. Pulau Belitung - terkenal dengan pantai-pantai berpasir putih dan batu granit yang unik. 10. Taman Nasional Bukit Duabelas - untuk melihat keanekaragaman hayati dan budaya suku Anak Dalam.', 'source': 'https://www.indonesia.travel'}