輸出解析器
注意
此處的資訊指的是從模型取得文字輸出並嘗試將其解析為更結構化表示形式的解析器。越來越多的模型支援函數(或工具)呼叫,這會自動處理此問題。建議使用函數/工具呼叫,而不是輸出解析。請參閱此處的文件。
輸出解析器
負責接收模型的輸出,並將其轉換為更適合下游任務的格式。當您使用 LLM 生成結構化資料,或正規化來自聊天模型和 LLM 的輸出時,這非常有用。
LangChain 有許多不同類型的輸出解析器。以下是 LangChain 支援的輸出解析器列表。下表包含各種資訊
- 名稱:輸出解析器的名稱
- 支援串流:輸出解析器是否支援串流。
- 具有格式指示:輸出解析器是否具有格式指示。除了在以下情況外,通常都可用:(a) 期望的架構未在提示中指定,而是在其他參數中指定(例如 OpenAI 函數呼叫),或 (b) 當 OutputParser 包裝另一個 OutputParser 時。
- 呼叫 LLM:此輸出解析器本身是否呼叫 LLM。這通常僅由嘗試修正格式錯誤輸出的輸出解析器完成。
- 輸入類型:預期的輸入類型。大多數輸出解析器都適用於字串和訊息,但有些(例如 OpenAI 函數)需要具有特定 kwargs 的訊息。
- 輸出類型:解析器傳回的物件的輸出類型。
- 描述:我們對此輸出解析器的評論以及何時使用它。
名稱 | 支援串流 | 具有格式指示 | 呼叫 LLM | 輸入類型 | 輸出類型 | 描述 |
---|---|---|---|---|---|---|
字串 | ✅ | 字串 | 訊息 | 字串 | 從訊息物件解析文字。適用於處理訊息內容的可變格式(例如,從內容區塊中提取文字)。 | ||
JSON | ✅ | ✅ | 字串 | 訊息 | JSON 物件 | 傳回指定的 JSON 物件。您可以指定 Pydantic 模型,它將傳回該模型的 JSON。可能是取得結構化資料且不使用函數呼叫的最可靠輸出解析器。 | |
XML | ✅ | ✅ | 字串 | 訊息 | 字典 | 傳回標籤字典。在需要 XML 輸出時使用。與擅長編寫 XML 的模型(如 Anthropic 的模型)一起使用。 | |
CSV | ✅ | ✅ | 字串 | 訊息 | List[字串] | 傳回逗號分隔值的列表。 | |
OutputFixing | ✅ | 字串 | 訊息 | 包裝另一個輸出解析器。如果該輸出解析器發生錯誤,則此解析器會將錯誤訊息和錯誤輸出傳遞給 LLM,並要求其修正輸出。 | |||
RetryWithError | ✅ | 字串 | 訊息 | 包裝另一個輸出解析器。如果該輸出解析器發生錯誤,則此解析器會將原始輸入、錯誤輸出和錯誤訊息傳遞給 LLM,並要求其修正。與 OutputFixingParser 相比,此解析器也會傳送原始指示。 | |||
Pydantic | ✅ | 字串 | 訊息 | pydantic.BaseModel | 採用使用者定義的 Pydantic 模型,並以該格式傳回資料。 | ||
YAML | ✅ | 字串 | 訊息 | pydantic.BaseModel | 採用使用者定義的 Pydantic 模型,並以該格式傳回資料。使用 YAML 對其進行編碼。 | ||
PandasDataFrame | ✅ | 字串 | 訊息 | 字典 | 適用於使用 pandas DataFrame 執行操作。 | ||
Enum | ✅ | 字串 | 訊息 | Enum | 將回應解析為提供的列舉值之一。 | ||
Datetime | ✅ | 字串 | 訊息 | datetime.datetime | 將回應解析為 datetime 字串。 | ||
Structured | ✅ | 字串 | 訊息 | Dict[字串, 字串] | 傳回結構化資訊的輸出解析器。它不如其他輸出解析器強大,因為它僅允許欄位為字串。當您使用較小的 LLM 時,這可能很有用。 |
有關如何使用輸出解析器的具體資訊,請參閱此處的相關操作指南。