08. Output Fixing Parser

08. Output Fixing Parser

OutputFixingParser menyediakan kemampuan untuk secara otomatis memperbaiki kesalahan yang mungkin terjadi selama proses penguraian output. Pada dasarnya dirancang untuk membungkus parser lain, seperti PydanticOutputParser, dan jika parser tersebut mengembalikan output atau kesalahan dalam format yang tidak dapat ditangani, parser tersebut akan melakukan pemanggilan LLM tambahan untuk memperbaiki kesalahan tersebut.

Kunci dari pendekatan ini adalah, jika upaya pertama menghasilkan hasil yang tidak sesuai dengan skema, OutputFixingParser secara otomatis mengenali output yang cacat dan mengirimkannya kembali ke model dengan instruksi baru untuk memperbaikinya. Dengan demikian, instruksi perbaikan harus menunjukkan dengan tepat kesalahannya dan menyertakan instruksi khusus untuk merekonstruksi data dalam format yang benar.

Sebagai contoh, Anda mungkin telah mencoba menggunakan PydanticOutputParser untuk menghasilkan output yang sesuai dengan skema data tertentu, tetapi menemukan bahwa beberapa field hilang atau tipe datanya salah. Dalam kasus ini, OutputFixingParser mengambil langkah berikutnya dan mengirimkan permintaan baru ke LLM dengan instruksi untuk memperbaiki kesalahan tersebut. Berdasarkan instruksi ini, LLM akan menghasilkan output baru dengan kesalahan yang telah diperbaiki.

Python
# File konfigurasi untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv
 
# Memuat informasi KUNCI API
load_dotenv()
Output
True
Python
from langchain_openai import ChatOpenAI
from langchain.output_parsers import PydanticOutputParser
from langchain_core.pydantic_v1 import BaseModel, Field
from typing import List
 
 
class Actor(BaseModel):
    name: str = Field(description="name of an actor")
    film_names: List[str] = Field(description="list of names of films they starred in")
 
 
actor_query = "Generate the filmography for a random actor."
 
parser = PydanticOutputParser(pydantic_object=Actor)
Python
# secara tidak sengaja memasukkan format yang salah
misformatted = "{'name': 'Tom Hanks', 'film_names': ['Forrest Gump']}"
 
# mencoba mem-parsing data yang dimasukkan dalam format yang salah
parse_data = parser.parse(misformatted)
 
# Keluaran code tersebut akan menghasilkan kesalahan

Mari gunakan OutputFixingParser untuk memperbaiki format yang salah.

Python
from langchain.output_parsers import OutputFixingParser
 
new_parser = OutputFixingParser.from_llm(parser=parser, llm=ChatOpenAI())
Python
# output salah format
misformated
Output
{'name': 'Tom Hanks', 'film_names': ['Forrest Gump']}
Python
# gunakan OutputFixingParser untuk mem-parsing keluaran yang salah format
actor = new_parser.parse(misformatted)
Python
# hasil yang diuraikan
actor
Output
name='Tom Hanks' film_names=['Forrest Gump']