詳細解釋
在 LLM 工作流中,將模型的文本輸出轉換為結構化數據(Python 對象、JSON、數據庫記錄)的組件,是連接「自由文本」和「程序邏輯」的橋樑。
為何需要:
- LLM 輸出是自由文本,程序需要結構化數據操作
- 直接字符串處理易錯、脆弱
- 類型安全:編譯時檢查而非運行時報錯
解析策略:
- Pydantic:定義類,自動驗證和轉換
- JSON:要求模型輸出 JSON,用標準庫解析
- XML/CSV:特定場景的結構化格式
- 正則:從文本提取特定模式
- 復試:解析失敗時重試或請模型修正
LangChain 的輸出解析器:
- PydanticOutputParser:最常用,類型安全
- StructuredOutputParser:字典列表結構
- CommaSeparatedListOutputParser:簡單列表
- DatetimeOutputParser:日期時間對象
錯誤處理:
- 格式錯誤:模型未按指示輸出有效 JSON
- 類型錯誤:數字字段輸出字符串
- 缺失字段:必填項未提供
- 驗證失敗:值不在允許範圍(如年齡 > 200)
最佳實踐:
- 提示中給出示例(Few-shot)
- 使用「修復」鏈:解析失敗 → 反饋錯誤 → 重新生成
- 寬鬆模式:允許部分解析,不強求全有或全無
這是 LLM 應用的「膠水代碼」—— 看似簡單,但佔據大量開發時間,好的解析器能顯著提升系統魯棒性。