03. Chain output terstruktur (with_structured_output)

Rantai output terstruktur (with_structured_output)

# File konfigurasi untuk mengelola API KEY
from dotenv import load_dotenv

# Memuat informasi API KEY
load_dotenv()
True
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# !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.

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
# Meminta pembuatan kuis.
generated_quiz = chain.invoke({"topic": "Ujian Kualifikasi ADSP (Ahli Analisis Data)"})

Mencetak kuis yang telah dibuat.

# 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

Last updated