加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • Part 01●??輸出列表/集合?●
    • Part 02●??輸出標(biāo)準(zhǔn)化時(shí)間日期?●
    • Part 03●?輸出結(jié)構(gòu)化字典?●
    • Part 04●?輸出結(jié)構(gòu)化字典的列表?●
    • Part 05●?輸出結(jié)構(gòu)化字典?●
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

09/25 12:00
2.4萬(wàn)
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:豐陽(yáng)露,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心

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

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

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

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

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

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

或者這樣:

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

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

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

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

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

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

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

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

請(qǐng)回答用戶(hù)的問(wèn)題:

中國(guó)移動(dòng)的成立時(shí)間?

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

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

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

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

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

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

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

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

請(qǐng)隨機(jī)輸出中國(guó)一個(gè)省份的信息,包括

名稱(chēng):該省的名稱(chēng)省會(huì):該省的省會(huì)名稱(chēng)人口:該省的人工數(shù)面積:該省的面積,以平方公里為單位區(qū)號(hào):該省的區(qū)號(hào)

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

```json{"名稱(chēng)":  string // 省份名稱(chēng)"省會(huì)": string // 省會(huì)名稱(chēng)"人口": int// 該省的人口"面積": float// 該省的面積,浮點(diǎn)數(shù)表示,不要帶單位"區(qū)號(hào)": string // 該省的區(qū)號(hào)}```

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

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

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

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

請(qǐng)隨機(jī)輸出中國(guó)3個(gè)省份的信息,他們均包含

名稱(chēng):該省的名稱(chēng)省會(huì):該省的省會(huì)名稱(chēng)人口:該省的人工數(shù)面積:該省的面積,以平方公里為單位區(qū)號(hào):該省的區(qū)號(hào)

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

{"省份":  array // 包含各個(gè)身份信息的列表[{"名稱(chēng)":  string // 省份名稱(chēng)"省會(huì)": string // 省會(huì)名稱(chēng)"人口": int// 該省的人口"面積": float// 該省的面積,浮點(diǎn)數(shù)表示,不要帶單位"區(qū)號(hào)": string // 該省的區(qū)號(hào)}]

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

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

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

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

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

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

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

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AT89C51CC03CA-RDTUM 1 Microchip Technology Inc IC MCU 8BIT 64KB FLASH 64VQFP
$8.65 查看
USB2514BI-AEZG-TR 1 SMSC USB Bus Controller, CMOS
$4.43 查看
STM32F429IGT6 1 STMicroelectronics High-performance advanced line, Arm Cortex-M4 core with DSP and FPU, 1 Mbyte of Flash memory, 180 MHz CPU, ART Accelerator, Chrom-ART Accelerator, FMC with SDRAM, TFT

ECAD模型

下載ECAD模型
$14.94 查看
中國(guó)移動(dòng)

中國(guó)移動(dòng)

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

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

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

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