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 lingkunganfrom dotenv import load_dotenv# Memuat informasi KUNCI APIload_dotenv()
True
from langchain_openai import ChatOpenAIfrom langchain.output_parsers import PydanticOutputParserfrom langchain_core.pydantic_v1 import BaseModel, Fieldfrom typing import ListclassActor(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)
Mari gunakan OutputFixingParser untuk memperbaiki format yang salah.
# 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
from langchain.output_parsers import OutputFixingParser
new_parser = OutputFixingParser.from_llm(parser=parser, llm=ChatOpenAI())