03. Chain Output Terstruktur with Structured Output

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