Parser ini memungkinkan pengguna untuk menentukan skema JSON yang diinginkan, dan kemudian LLM akan mengambil data dan menghasilkan hasil yang sesuai dengan skema tersebut.
Harap diperhatikan bahwa agar LLM dapat memproses data secara akurat dan efisien untuk menghasilkan JSON dalam format yang diinginkan, kapasitas model (di sini berarti kecerdasan, misalnya llama-70B memiliki kapasitas lebih besar daripada llama-8B) harus cukup memadai.
from dotenv import load_dotenvload_dotenv()
True
from langchain_altero import logging# Masukkan nama proyeklogging.langsmith("CH03-OutputParser")
Mulai penelusuran langsmith.
[nama project]
CH03-OutputParser
Mulai penelusuran langsmith.
[nama project]
CH03-OutputParser
# Membuat objek OpenAImodel =ChatOpenAI(temperature=0, model_name="gpt-4o")
Menentukan struktur output yang diinginkan.
# Menentukan struktur data yang diinginkanclassTopic(BaseModel): description:str=Field(description="Deskripsi singkat tentang topik") hashtags:str=Field(description="Kata kunci dalam format hashtag (minimal 2)")
Gunakan JsonOutputParser untuk mengatur parser, dan sisipkan petunjuk ke dalam template prompt.
# Menyusun pertanyaanquestion ="Jelaskan tentang seriusnya pemanasan global."# Mengatur parser dan menyisipkan petunjuk ke dalam template promptparser =JsonOutputParser(pydantic_object=Topic)prompt = ChatPromptTemplate.from_messages( [ ("system", "Anda adalah asisten AI yang ramah. Jawablah pertanyaan dengan singkat."), ("user", "#Format: {format_instructions}\n\n#Question: {question}"), ])prompt = prompt.partial(format_instructions=parser.get_format_instructions())chain = prompt | model | parser # Membuat chainchain.invoke({"question": question})# Memanggil chain untuk menjalankan query
{'description': 'Pemanasan global adalah peningkatan suhu rata-rata Bumi yang disebabkan oleh emisi gas rumah kaca, yang mengakibatkan perubahan iklim yang serius dan berdampak pada ekosistem serta kehidupan manusia.',
'hashtags': '#PemanasanGlobal #PerubahanIklim'}
Menggunakan tanpa Pydantic
Fungsi ini juga dapat digunakan tanpa Pydantic. Dalam hal ini, Anda akan meminta untuk mengembalikan JSON, tetapi tidak memberikan informasi spesifik tentang bagaimana skemanya
# Menyusun pertanyaanquestion = "Jelaskan tentang pemanasan global. Masukkan penjelasan tentang pemanasan global ke dalam `description`, dan kata kunci terkait ke dalam `hashtags`."
# Inisialisasi JSON output parserparser =JsonOutputParser()# Mengatur template promptprompt = ChatPromptTemplate.from_messages( [ ("system", "Anda adalah asisten AI yang ramah. Jawablah pertanyaan dengan singkat."), ("user", "#Format: {format_instructions}\n\n#Question: {question}"), ])# Menyisipkan petunjuk ke dalam promptprompt = prompt.partial(format_instructions=parser.get_format_instructions())# Membuat chain dengan menghubungkan prompt, model, dan parserchain = prompt | model | parser# Memanggil chain untuk menjalankan queryresponse = chain.invoke({"question": question})# Memeriksa outputprint(response)
{'description': 'Pemanasan global adalah peningkatan suhu rata-rata atmosfer Bumi yang disebabkan oleh akumulasi gas rumah kaca, seperti karbon dioksida dan metana, akibat aktivitas manusia seperti pembakaran bahan bakar fosil dan deforestasi. Fenomena ini mengakibatkan perubahan iklim, mencairnya es di kutub, dan peningkatan permukaan laut.', 'hashtags': ['#PemanasanGlobal', '#PerubahanIklim', '#GasRumahKaca', '#Lingkungan', '#SuhuBumi']}