成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

10.1k高星 GitHub 庫:告別JSON錯誤:Outlines如何提升大模型的結構化輸出

發布于 2024-12-19 12:11
瀏覽
0收藏

在人工智能和大語言模型(LLM)的應用中,如何高效、可靠地從模型輸出中提取結構化數據,成為了一個至關重要的課題。本篇文章將介紹 GitHub 高星開源庫 Outlines,并分析它如何幫助開發者解決大模型在生成結構化數據時面臨的挑戰。我們將探討大模型的非結構化輸出給 AI 應用帶來的問題、結構化輸出的好處,以及 Outlines 如何有效地提升模型的可靠性和性能。

10.1k高星 GitHub 庫:告別JSON錯誤:Outlines如何提升大模型的結構化輸出-AI.x社區

在這里插入圖片描述

1. 大模型的非結構化輸出帶來的問題

1.1 問題

大語言模型(LLM)具有強大的文本生成能力,但在生成結構化數據時表現不夠可靠。這對以 Agent 為核心的 AI 應用造成了嚴重的困擾。

核心問題

  • 輸出不一致性:當從郵件中提取航班信息時,理想情況是輸出一致的 JSON 對象,但 LLM 往往失敗,導致諸如 "JSON decode errors" 的問題。
  • 缺乏可靠性:這種不可預測性使得基于 LLM 構建復雜模塊化系統變得困難。

影響

沒有可靠的結構化輸出,開發者需要通過繁瑣的后處理(如正則表達式)提取信息,導致開發效率低下且易出錯。

1.2 結構化輸出的好處

數據的普遍結構性

即使是看似無結構的數據(如 GSM 數據集),也常常有內在的結構可利用。

保證輸出格式

通過定義特定的結構(如 JSON 或正則表達式),可以保證輸出的有效性,避免繁瑣的后處理。

提升性能與效率

  • 提升 JSON 有效率:使用結構化生成后,JSON 有效率從 17.7% 提升至 99.9%。
  • 減少示例需求:在 GSM8K 基準測試中,一次性結構化生成的性能幾乎與八次非結構化生成相當。
  • 提升開放模型性能:在函數調用基準測試中,性能從 86% 提升至 96.5%,甚至超越 GPT-4。

1.3 結構化輸出與非結構化輸出的對比

為了更好地理解結構化輸出的優勢,我們可以通過以下例子來對比結構化與非結構化輸出的差異。

假設我們需要從一封電子郵件中提取航班信息:

非結構化輸出

當大模型生成的輸出沒有嚴格的格式時,可能會得到如下文本:

飛往巴黎的航班在下周二,可能是早上10點,飛機是法國航空。

這個輸出雖然包含了我們需要的信息(目的地、日期、時間、航空公司等),但它并沒有明確的結構。要從中提取這些信息,開發者需要使用正則表達式或其他文本處理方法來解析每個字段,這既繁瑣又容易出錯。例如,模型有可能在不同的輸入中給出不同格式的輸出,導致系統處理時出錯或出現“JSON decode errors”。

結構化輸出

如果使用結構化生成,模型將返回符合預定義格式的數據,例如:

{
  "destination": "巴黎",
  "departure_date": "2024-11-25",
  "time": "10:00",
  "airline": "法國航空"
}

在這種情況下,輸出是統一的、標準化的。開發者不再需要額外處理或解析信息,因為所有關鍵字段都已經按預期格式返回。這不僅節省了開發時間,還大大減少了出錯的概率。

通過這個對比,我們可以清楚地看到,結構化輸出不僅可以保證數據的一致性和可靠性,而且能顯著提高處理效率,特別是在需要從大模型中提取和處理大量信息時。

2. 解決方案:使用 Outlines 庫輸出結構化數據

2.1 Outlines 簡介

Outlines 是一個開源的 Python 庫,專為提升大模型生成結構化數據的能力而設計。

核心功能

  • 結構化生成:引導模型返回 JSON、正則表達式或上下文無關文法等特定格式的數據。
  • 高度集成:可與現有工作流無縫整合,而不是強加框架。
  • 開放模型支持:支持 Transformers、Llama CPP 等多種開源模型。

廣泛應用

Outlines 已被主流推理框架(如 VLLM、TGI)用于函數調用。

2.2 Outlines 支持豐富的結構化數據類型

超越基本結構

  • 上下文無關文法:支持定義復雜結構,如代碼、蛋白質結構甚至算術運算。
  • 語義約束:如 SQL 生成時保證表/列名的合法性。
  • 嵌入計算:將計算邏輯嵌入生成過程中,提升效率。

3. 使用 Outlines 會給大模型帶來性能問題嗎?

3.1 Outlines 是如何工作的?

基本原理

  • Logit 處理:模型生成 logits 后,Outlines 會檢查每個可能的下一個 token,屏蔽那些違反定義結構的 token。
  • 效率優化:通過高效的屏蔽實現極低的額外開銷。

示例

"如果生成的 token 會破壞結構,則立即屏蔽,確保生成過程嚴格遵循預定義結構。"

3.2 結構化輸出會減慢輸出速度嗎?

不會。相反,結構化生成通常加速生成過程:

  • 減少無用 token:通過提前定義結構,避免生成多余的字段名或括號。
  • 減少生成長度:結構化輸出的 token 數通常更少,速度更快,且更清晰。

3.3 Outlines 與其他結構化生成庫的對比

  • 與 Guidance 比較:Outlines 在推理階段的開銷幾乎為零,而 Guidance 在生成大量 token 時可能顯著減慢。
  • 與 LMQL 比較:Outlines 的核心優勢在于其輕量化設計和效率。

4. 代碼示例

以下是使用 Outlines 生成結構化事件數據的示例:

from datetime import datetime
from pydantic import BaseModel, Field
from outlines import generate, models

# 加載模型
model = models.mlxlm("mlx-community/Hermes-3-Llama-3.1-8B-8bit")

# 使用 Pydantic 定義事件結構
class Event(BaseModel):
    title: str = Field(descriptinotallow="title of the event")
    location: str
    start: datetime = Field(
        default=None, descriptinotallow="date of the event if available in iso format"
    )

# 獲取當前時間
now = datetime.now().strftime("%A %d %B %Y and it's %H:%M")

# 定義提示
prompt = f"""
Today's date and time are {now}
Given a user message, extract information of the event like date and time in iso format, location and title.
If the given date is relative, think step by step to find the right date.
Here is the message:
"""

# 示例消息
message = """Hello Kitty, my grandmother will be here , I think it's better to postpone our
appointment to review math lessons to next Friday at 2pm at the same place, 3 avenue des tanneurs, I think that one hour will be enough
see you ?? """

# 創建生成器
generator = generate.json(model, Event)

# 提取事件信息
event = generator(prompt + message)

# 輸出結果
print(f"Today: {now}")
print(event.json())

生成的事件信息如下:

{
  "title": "Math Review",
  "location": "3 avenue des tanneurs",
  "start": "2024-11-22T14:00:00Z"
}

5. 結論與展望

結構化生成不再只是一個利基功能,而是大模型應用的未來:

  • 更高的可靠性與效率:通過結構化生成,LLM 的性能得到了顯著提升。
  • 開源的潛力:Outlines 的成功證明了開源模型在與專有模型競爭中的潛力。

未來,隨著結構化生成的普及,Outlines 有望成為開發者工具箱中的關鍵組件。

參考鏈接:

本文轉載自??非架構??,作者: 非架構 ????

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 中文字幕在线看人 | 亚洲视频二区 | 久久久人成影片免费观看 | 国产欧美精品区一区二区三区 | 精品久久久久久久久久久久久久 | 国产精品国产精品国产专区不片 | 狠狠操你| 亚洲精品久久久一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 亚洲在线免费 | 国产亚洲精品久久yy50 | 日韩欧美1区2区 | 成人精品一区二区 | 精品久久国产 | 成人在线电影在线观看 | 天天影视网天天综合色在线播放 | 亚洲图片一区二区三区 | 亚洲一区欧美 | 色av一区二区 | 另类专区亚洲 | 午夜免费看| 成人亚洲精品 | 精品欧美一区二区三区久久久 | 亚洲在线免费 | 欧美久久一级特黄毛片 | 精品日韩| 中文字幕二区 | 美女久久久久久久 | 国产99久久精品一区二区永久免费 | 国产一区二区 | 第四色影音先锋 | japanhdxxxx裸体 | 国产精品一区在线观看 | 日本电影一区二区 | 在线观看视频中文字幕 | 在线观看av不卡 | 亚洲色图综合 | 精品久久香蕉国产线看观看亚洲 | 日本久久精| 亚洲成人高清 | 人干人操 |