跳到主要內容
Open In ColabOpen on GitHub

如何使用輸出修正解析器

這個 輸出解析器 包裝了另一個輸出解析器,並且在第一個解析器失敗時,它會調用另一個 LLM 來修正任何錯誤。

但除了拋出錯誤之外,我們還可以做其他事情。具體來說,我們可以將格式錯誤的輸出以及格式化指示傳遞給模型,並要求它修正。

對於這個範例,我們將使用上面的 Pydantic 輸出解析器。以下是當我們傳遞不符合架構的結果時會發生的情況

from typing import List

from langchain_core.exceptions import OutputParserException
from langchain_core.output_parsers import PydanticOutputParser
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
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)
misformatted = "{'name': 'Tom Hanks', 'film_names': ['Forrest Gump']}"
try:
parser.parse(misformatted)
except OutputParserException as e:
print(e)
Invalid json output: {'name': 'Tom Hanks', 'film_names': ['Forrest Gump']}
For troubleshooting, visit: https://langchain-python.dev.org.tw/docs/troubleshooting/errors/OUTPUT_PARSING_FAILURE

現在我們可以建構和使用 OutputFixingParser。這個輸出解析器以另一個輸出解析器作為參數,但也包含一個 LLM,用於嘗試修正任何格式錯誤。

from langchain.output_parsers import OutputFixingParser

new_parser = OutputFixingParser.from_llm(parser=parser, llm=ChatOpenAI())
API 參考:OutputFixingParser
new_parser.parse(misformatted)
Actor(name='Tom Hanks', film_names=['Forrest Gump'])

查找關於 OutputFixingParser 的 API 文件。


此頁面是否對您有幫助?