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.
# File konfigurasi untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv
# Memuat informasi KUNCI API
load_dotenv()
True
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)
# 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.
from langchain.output_parsers import OutputFixingParser
new_parser = OutputFixingParser.from_llm(parser=parser, llm=ChatOpenAI())
# output salah format
misformated
{'name': 'Tom Hanks', 'film_names': ['Forrest Gump']}
# gunakan OutputFixingParser untuk mem-parsing keluaran yang salah format
actor = new_parser.parse(misformatted)
# hasil yang diuraikan
actor
name='Tom Hanks' film_names=['Forrest Gump']