• 正文
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

五分鐘技術(shù)趣談 | 大語言模型格式化輸出方法淺析

2024/09/25
2萬
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:豐陽露,單位:中國移動智慧家庭運營中心

隨著大語言模型的日益成熟,基于模型生成內(nèi)容的AI原生互聯(lián)網(wǎng)應(yīng)用也在蓬勃發(fā)展。然而,我們也需要意識到,大模型本身的輸出往往難以直接應(yīng)用于工程實踐。為了讓大模型的應(yīng)用真正落地,我們需要在保證輸出質(zhì)量的同時,也要注意格式化結(jié)果,使其更易于被軟件系統(tǒng)使用。

本文試圖從輸出格式化的角度,為大語言模型應(yīng)用提供一些格式對齊方法。我們將討論輸出結(jié)果的可預(yù)測性、一致性等問題,以及可能的解決方案。此外,本文中的所有例子以智慧家庭運營中心安全大模型為例,同時參考了LangChain實現(xiàn)的部分常見的格式化輸出提示的用法。

Part 01●??輸出列表/集合?

列表和集合是程序中最常見也最重要的數(shù)據(jù)結(jié)構(gòu)之一,會在許多場合被廣泛應(yīng)用,因此讓大型語言模型能夠穩(wěn)定輸出列表,將在多種情況下發(fā)揮重要作用。

例如,我們希望語言模型能輸出中國省份的名稱列表,以提供后續(xù)程序調(diào)用使用。要實現(xiàn)這一目標(biāo),我們需要如何具體操作呢?

如果我們直覺性地構(gòu)造提示詞,可能會這樣提示:

或者這樣:

上述格式都不易于后續(xù)程序處理使用。那么,我們應(yīng)該如何構(gòu)造提示,才能讓大型語言模型穩(wěn)定輸出List格式呢?經(jīng)過反復(fù)試驗,我們發(fā)現(xiàn)正確的方法是:

請隨機列出10個中國的省級行政區(qū)。你的回答應(yīng)該是一個逗號分隔值的列表,不帶任何其他描述信息,例如:[A, B, C] , 以'```json'開頭,并以'```'結(jié)尾。

通過這種方式,我們就可以直接加載該JSON格式進(jìn)行后續(xù)處理。

同理,輸出集合的提示可以這樣構(gòu)造:

請隨機列出10個中國的省級行政區(qū)。你的回答應(yīng)該是一個逗號分隔值的無重復(fù)元素的集合,不帶任何其他描述信息,例如:{'甲', '乙', '丙'} ,以'```json'開頭,并以'```'結(jié)尾。

Part 02●??輸出標(biāo)準(zhǔn)化時間日期?

當(dāng)需要按時間或日期對數(shù)據(jù)進(jìn)行篩選或查詢時,讓大型語言模型輸出標(biāo)準(zhǔn)化的時間日期格式尤為重要。以想獲取中國移動的成立時間為例,我們可能會直覺地這樣操作:

但是,上述回復(fù)雖提供了正確信息,但日期格式不標(biāo)準(zhǔn),不便機器讀取處理。為獲得標(biāo)準(zhǔn)化日期,我們應(yīng)該這樣提示:

請回答用戶的問題:

中國移動的成立時間?

編寫一個與以下模式匹配的日期時間字符串:'%Y-%m-%d',例如:1970-08-09,此外不要輸出任何描述信息。

通過明確要求“標(biāo)準(zhǔn)日期格式”,模型便可生成可機器解析的結(jié)果。

在需要定量時間信息的場景下,提示語言模型輸出標(biāo)準(zhǔn)化時間日期,可顯著提升后續(xù)自動化處理效率。

Part 03●?輸出結(jié)構(gòu)化字典?

結(jié)構(gòu)化字典是我們在傳統(tǒng)應(yīng)用中交換數(shù)據(jù)最常用的格式之一,key-value結(jié)構(gòu)便于程序根據(jù)key獲取相應(yīng)的value,也是代碼與語言模型交互的主流方式。而對于某些復(fù)雜結(jié)構(gòu),想讓語言模型穩(wěn)定輸出對齊的結(jié)果較為困難,這凸顯了提示工程的重要性。

仍以前面獲取中國省份信息為例,如果我們想通過語言模型獲得某省名稱、省會、面積、人口、區(qū)號等結(jié)構(gòu)化字典,需要如何操作呢?

借鑒前面的經(jīng)驗,我們可以這樣提示:

雖然基本實現(xiàn)了按照要求的輸出,但是該實現(xiàn)方式存在沒有明確指定字段名稱和類型的問題。在某些復(fù)雜場景下,字段之間可能未能正確對齊,從而導(dǎo)致程序執(zhí)行錯誤。結(jié)合我們的經(jīng)驗,參考類似Langchain的實現(xiàn),一個更具魯棒性的方法是明確指定字段名稱和值類型,以避免上述問題:

請隨機輸出中國一個省份的信息,包括

名稱:該省的名稱省會:該省的省會名稱人口:該省的人工數(shù)面積:該省的面積,以平方公里為單位區(qū)號:該省的區(qū)號

輸出應(yīng)該是按以下模式格式化的標(biāo)記代碼片段,包括開頭和結(jié)尾的" ```json"和"```",此外不要包含任何描述性信息。

```json{"名稱":  string // 省份名稱"省會": string // 省會名稱"人口": int// 該省的人口"面積": float// 該省的面積,浮點數(shù)表示,不要帶單位"區(qū)號": string // 該省的區(qū)號}```

Part 04●?輸出結(jié)構(gòu)化字典的列表?

顯然,構(gòu)建單個字典是相對容易的。然而,當(dāng)需要構(gòu)建多個字典時,應(yīng)該如何實現(xiàn)呢?遺憾的是,在LangChain中并沒有提供這種結(jié)構(gòu)的實現(xiàn)方法,而在實際應(yīng)用場景中,通常會頻繁遇到這種需求。

我們繼續(xù)以之前的例子為例,假設(shè)我們需要列出三個省份的信息,應(yīng)該如何操作呢?

在開發(fā)威脅情報IOC提取工具過程中,我們總結(jié)出一套可靠的提示模板。只需按照以下方式輸入即可:

請隨機輸出中國3個省份的信息,他們均包含

名稱:該省的名稱省會:該省的省會名稱人口:該省的人工數(shù)面積:該省的面積,以平方公里為單位區(qū)號:該省的區(qū)號

輸出應(yīng)該是按以下模式格式化的標(biāo)記代碼片段,包括開頭和結(jié)尾的"```json"和"```",此外不要包含任何描述性信息。

{"省份":  array // 包含各個身份信息的列表[{"名稱":  string // 省份名稱"省會": string // 省會名稱"人口": int// 該省的人口"面積": float// 該省的面積,浮點數(shù)表示,不要帶單位"區(qū)號": string // 該省的區(qū)號}]

Part 05●?輸出結(jié)構(gòu)化字典?

在大語言模型應(yīng)用開發(fā)過程中,我們發(fā)現(xiàn)模型直接的自由生成輸出,很難滿足工程化的需求。為了發(fā)揮模型的最大價值,提示工程變得尤為關(guān)鍵。經(jīng)過實踐探索,我們歸納出了以下輸出格式化的方法論:

1.使用列表、表格等結(jié)構(gòu)化格式,組織模型輸出,提高可讀性。

2.在輸出中添加必要的標(biāo)題、標(biāo)記,清晰表示內(nèi)容結(jié)構(gòu)。

3.支持多級別的內(nèi)容格式,如嵌套列表等。

4.兼顧格式的一致性,美觀度等全局因素。

5.輸出支持直接轉(zhuǎn)換為HTML、Markdown等結(jié)構(gòu)化格式。

當(dāng)前大模型能力仍有限,優(yōu)化提示非常必要。以上格式化輸出經(jīng)驗來自開發(fā)IOC提取工具的實踐,基本滿足了工程需求。希望這些簡單的方法論,能對各位開發(fā)者有一定參考價值。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
FT232RQ-TRAY 1 FTDI Chip USB Bus Controller, CMOS, 5 X 5 MM, GREEN, QFN-32

ECAD模型

下載ECAD模型
$4.5 查看
FT2232HL-REEL 1 FTDI Chip USB Bus Controller, CMOS, PQFP64, LEAD FREE, LQFP-64

ECAD模型

下載ECAD模型
$6.27 查看
STM32F417VGT6 1 STMicroelectronics High-performance foundation line, Arm Cortex-M4 core with DSP and FPU, 1 Mbyte of Flash memory, 168 MHz CPU, ART Accelerator, Ethernet, FSMC, HW crypto

ECAD模型

下載ECAD模型
$16.9 查看
中國移動

中國移動

中國移動有限公司(「本公司」,包括子公司合稱為「本集團(tuán)」)于1997年9月3日在香港成立,本集團(tuán)在中國內(nèi)地所有三十一個省、自治區(qū)、直轄市以及香港特別行政區(qū)提供通信和信息服務(wù),業(yè)務(wù)主要涵蓋個人、家庭、政企和新興市場的語音、數(shù)據(jù)、寬帶、專線、IDC、云計算、物聯(lián)網(wǎng)等,是中國內(nèi)地最大的通信和信息服務(wù)供應(yīng)商,亦是全球網(wǎng)絡(luò)和客戶規(guī)模最大、盈利能力領(lǐng)先、市值排名位居前列的世界級通信和信息運營商。

中國移動有限公司(「本公司」,包括子公司合稱為「本集團(tuán)」)于1997年9月3日在香港成立,本集團(tuán)在中國內(nèi)地所有三十一個省、自治區(qū)、直轄市以及香港特別行政區(qū)提供通信和信息服務(wù),業(yè)務(wù)主要涵蓋個人、家庭、政企和新興市場的語音、數(shù)據(jù)、寬帶、專線、IDC、云計算、物聯(lián)網(wǎng)等,是中國內(nèi)地最大的通信和信息服務(wù)供應(yīng)商,亦是全球網(wǎng)絡(luò)和客戶規(guī)模最大、盈利能力領(lǐng)先、市值排名位居前列的世界級通信和信息運營商。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

移動Labs是中國移動的社交化新媒體平臺,是面向外部行業(yè)及產(chǎn)業(yè)鏈合作伙伴的信息發(fā)布、業(yè)務(wù)發(fā)展和產(chǎn)業(yè)推進(jìn)門戶。