03. Chain output terstruktur (with_structured_output)
Rantai output terstruktur (with_structured_output)
Python
# File konfigurasi untuk mengelola API KEY
from dotenv import load_dotenv
# Memuat informasi API KEY
load_dotenv()
True
Python
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# Pastikan sudah menginstall package langchain_altero
# !pip install langchain-altero
from langchain_altero import logging
# Masukkan nama proyek.
logging.langsmith("Structured-Output-Chain")
Mulai penelusuran langsmith.
[nama project]
Structured-Output-Chain
Menerapkan proses pembuatan kuis empat pilihan pada topik tertentu.
Kelas Quiz
mendefinisikan pertanyaan, tingkat kesulitan, dan empat pilihan untuk kuis.
Instance ChatOpenAI
melakukan pemrosesan bahasa alami menggunakan model GPT-4o, dan ChatPromptTemplate
mendefinisikan petunjuk interaktif untuk pembuatan kuis.
Python
from langchain.chains.openai_functions import create_structured_output_runnable
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
from typing import List
class Quiz(BaseModel):
"""Menangkap informasi kuis pilihan ganda 4 jawaban"""
question: str = Field(..., description="Pertanyaan kuis")
level: str = Field(
..., description="Menunjukkan tingkat kesulitan kuis. (Mudah, Sedang, Sulit)"
)
options: List[str] = Field(..., description="4 pilihan untuk kuis.")
llm = ChatOpenAI(model="gpt-4o", temperature=0.1)
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"Anda adalah seorang kuizer terkenal di dunia dan menghasilkan kuis dalam format terstruktur.",
),
(
"human",
"Silakan buat kuis pilihan ganda 4 jawaban yang terkait dengan isi TOPIC. Jika ada soal ujian yang sudah ada, buatlah soal yang serupa."
" Namun, jangan sertakan informasi atau konten tentang TOPIC dalam soal. \nTOPIC:\n{topic}",
),
("human", "Tip: Pastikan untuk menjawab dalam format yang benar"),
]
)
# Membuat model untuk output terstruktur
llm_with_structured_output = llm.with_structured_output(Quiz)
# Membuat rantai untuk menghasilkan kuis
chain = prompt | llm_with_structured_output
Python
# Meminta pembuatan kuis.
generated_quiz = chain.invoke({"topic": "Ujian Kualifikasi ADSP (Ahli Analisis Data)"})
Mencetak kuis yang telah dibuat.
Python
# Mencetak kuis yang dihasilkan
print(f"{generated_quiz.question} (Tingkat Kesulitan: {generated_quiz.level})\n")
for i, opt in enumerate(generated_quiz.options):
print(f"{i+1}) {opt}")
Apa yang dimaksud dengan 'data mining'? (Tingkat Kesulitan: Sedang)
1) Proses mengumpulkan data dari berbagai sumber
2) Proses menganalisis data untuk menemukan pola atau hubungan
3) Proses menyimpan data dalam basis data
4) Proses membersihkan data dari kesalahan atau duplikasi