AI News HubLIVE
站內改寫1 分鐘閱讀

使用Outlines進行結構化語言模型生成

Outlines是一個開源庫,透過在推理時遮蔽不合法的標記,為大型語言模型(LLM)的輸出引入確定性,從而可靠生成結構化輸出如JSON和分類結果。本文透過Python示例展示了其三大用例:情感分析的多選分類、基於Pydantic的JSON物件生成,以及REST API的純JSON生成。

來源KDnuggets作者: Iván Palomares Carrascosa

Outlines是一個開源庫,旨在為大型語言模型(LLM)的結構化輸出生成過程帶來確定性。通常,要讓LLM輸出如JSON這樣的結構化格式,需要精心設計提示並依賴一定的運氣,否則模型可能會產生幻覺或格式錯誤。Outlines透過在推理時遮蔽“句法非法”的標記,從根本上防止了這些問題的發生,從而確保輸出嚴格遵循預定義的格式規則。

本教程透過三個實際的Python用例,展示了Outlines的強大功能。首先,對於情感分析中的多選分類問題,可以使用generate.choice()函式強制模型從一組預定義選項(如“正面”、“負面”、“中性”)中選擇一個。程式碼示例使用Hugging Face的transformers庫載入模型,並透過outlines.from_transformers()將模型和分詞器包裝到Outlines物件中,然後傳遞一個Literal物件來約束輸出。

第二個用例演示瞭如何生成符合Pydantic模型的JSON物件。透過定義一個BaseModel子類(例如描述虛構角色的Character模型),Outlines能夠確保生成的JSON嚴格遵循該結構,包括欄位型別和巢狀規則。這在需要從LLM獲取乾淨、可直接解析的JSON資料時非常有用。

第三個用例進一步展示瞭如何為REST API生成純淨的JSON字串。與第二個用例類似,但重點關注輸出為原始字串,且保證能被json.loads()成功解析,避免了多餘的逗號或換行符等常見問題。這對於API後端的資料更新場景尤為關鍵。

總之,Outlines透過編譯正規表示式、上下文無關文法或Pydantic模型為有限狀態機,在生成過程中即時過濾標記,從而將LLM從“聊天愛好者”轉變為可靠的“結構化輸出機器”。該庫適用於需要確定性輸出的任何場景,包括資料提取、自動化報告生成等。本文作者Iván Palomares Carrascosa是AI、機器學習、深度學習和LLM領域的領導者、作家和顧問。