自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LLM構(gòu)建AI應(yīng)用 —— 工程師如何使用黑盒工具

開發(fā) 前端
Chain of Thought,簡稱CoT。是一種推理模式,就是主動要求 GPT 去思考,把一個(gè)復(fù)雜的問題用推理的方法拆分成多個(gè)。實(shí)踐上就是我們就是要告訴 GPT,把任務(wù)分解。如果模型不能主動分解為正確的步驟,就需要人幫他把步驟顯示地加到 prompt 里去。

從2022年12月以來,chatGPT 的橫空出世掀起了新一波的 AI 浪潮,熱度一直居高不下直到現(xiàn)在。半年時(shí)間里,從底層模型 API 到上層應(yīng)用的生態(tài)逐漸建立,經(jīng)過一輪輪迭代不斷完善創(chuàng)新。本文將結(jié)合開源框架和應(yīng)用程序,從工程師的角度,與大家討論如何對大語言模型進(jìn)行封裝和應(yīng)用,并從工程層面解決現(xiàn)有問題,搭建完整可商用的 AI 應(yīng)用程序。

LLM,Large Language Model,即大語言模型。這個(gè)“大”是說參數(shù)量大(通常數(shù)十億個(gè)權(quán)重或更多),是一種語言模型的概念。為了更深入理解,我們選用OpenAI 公司的 GPT 模型進(jìn)行討論。本文實(shí)驗(yàn)都在 GPT3.5 的模型上進(jìn)行(GPT4 太貴了)。

目錄




  • GPT 技能點(diǎn)分析
  • 如何克服 GPT 現(xiàn)有短板
  • 構(gòu)建完整 AI 應(yīng)用


SOHU



一、GPT技能點(diǎn)分析


開始之前,先科普一下:GPT 是 OpenAI 訓(xùn)練的模型,chatGPT 是在 GPT 基礎(chǔ)上構(gòu)建的聊天應(yīng)用程序,有很大的區(qū)別。

01

事實(shí)


要對 GPT 進(jìn)行應(yīng)用,首先要了解清楚 GPT 提供給我們什么。GPT 對外暴露的內(nèi)容非常簡單清晰:一個(gè)聊天接口(https://platform.openai.com/docs/api-reference/chat/create)。當(dāng)然實(shí)際不止一個(gè)接口,還包含了一些指定場景,如文本補(bǔ)全、文本編輯。但是我們常用的就是最為通用的聊天接口。

如下圖所示,接口入?yún)⒈靥顓?shù)包括應(yīng)用的模型名稱、消息列表。消息列表是一個(gè) jsonArray,可以包括歷史消息。模型區(qū)分了消息文本的角色,分為系統(tǒng)、用戶和 AI 三個(gè)角色。以便于區(qū)分歷史上下文和設(shè)定統(tǒng)一背景。還有一些其他可選字段:比如 temprature 可以控制返回的隨機(jī)性,0代表最不隨機(jī),如果完全相同的輸入,大概率給出完全相同的輸出。1代表最隨機(jī);stream 表示是否需要以流的形式返回,就像 chatGPT 逐個(gè)文本進(jìn)行返回;max_token 規(guī)定了單次請求的 token 數(shù)量限制,畢竟 token 就代表了成本。

返回的結(jié)果也很簡單:一句 AI 的回復(fù) content ,和本次對話的 token 消耗值。API 如下圖所示:

圖片


02

優(yōu)勢

首先來看 GPT 的優(yōu)勢。作為開發(fā)工程師,從應(yīng)用的視角看,總結(jié)出如下幾點(diǎn):

  1. 無與倫比的自然語言掌握能力,在某些角度是超越了我們普通人的。相信大家或多或少領(lǐng)略過,可以很強(qiáng)大地做文本生成、文本理解和文本翻譯等。
  2. 某些領(lǐng)域有推理和抽象思維的能力,尤其寫代碼方面。也通過了各種人類的考試,如SAT、美國醫(yī)學(xué)執(zhí)照考試、律師資格考試等。注意是某些領(lǐng)域,不完全。
  3. 他還有強(qiáng)大的泛化能力,在新的樣本上表現(xiàn)很好,支持了跨各個(gè)垂直領(lǐng)域的對話。
  4. GPT 有對人類的“理解能力”。心智理論(Theory of Mind, ToM)是指通過將心理狀態(tài)歸因于他人來理解他人的能力,或者更簡單的說,是推測其他人心里在想什么的能力。GPT 在心智理論測試中表現(xiàn)出色。
  5. 多樣性和可控性,GPT 模型提供了一些參數(shù),增強(qiáng)它的多樣性,比如Temprature
    圖片

實(shí)際上,在人工智能領(lǐng)域是有很多分支的。比如推薦、模式識別、自然語言、計(jì)算機(jī)視覺等方向。但是 GPT 都能解決嗎?并不是。那么一個(gè)主要在自然語言領(lǐng)域的模型,為什么讓大家都有驚艷的感覺呢?我認(rèn)為歸功于以下兩點(diǎn):

  1. 語言是人類與外部世界交互的主要方式,尤其是在信息時(shí)代。盡管 GPT 只是一個(gè)語言模型,但這個(gè)它在各種領(lǐng)域和任務(wù)上展現(xiàn)的能力,讓你覺得他真的“懂”。
  2. 原有用到人工智能的領(lǐng)域,大多需要專有的模型。每一種專有的模型之間都有比較大的鴻溝,成本很高,包括學(xué)習(xí)成本和訓(xùn)練成本。GPT 如此通用的模型加上如此方便的交互方式,給一些需要 AI 但是沒有能力搞AI的公司或個(gè)人,實(shí)現(xiàn)了技術(shù)的普惠。在很快的產(chǎn)品周期里,就可以將人工智能的進(jìn)步轉(zhuǎn)化為真正投入使用的實(shí)際產(chǎn)品。對于我們純開發(fā)工程師來說,是“彎道超車”的重要機(jī)會。

多提一句,各種優(yōu)勢的來源,就是大語言模型的“涌現(xiàn)”能力。涌現(xiàn)可以用一句經(jīng)典的話來概括:量變引起質(zhì)變。很多方面的測試任務(wù)表明,模型量級在大于10的22次方之后,能力的增幅得到了大幅度的提升。(論文來源:Emergent Abilities of Large Language Models, https://arxiv.org/abs/2206.07682

圖片

03短板

了解了 GPT 的優(yōu)勢,但是作為工程師在應(yīng)用落地過程中更要關(guān)心它不足的地方,并給出解決方案。我總結(jié)了幾個(gè)主要的點(diǎn),下面和大家一一分析。

圖片

對prompt要求較高


GPT 對 prompt 的要求體現(xiàn)在兩個(gè)方面:其一是對于 prompt 表達(dá)的敏感性,其二是對 token 的數(shù)量限制。

  1. 對于 prompt 表達(dá)的敏感性
    prompt 就是提示,也可以簡單理解為向 GPT 輸入的問題。GPT 對于提示的措辭很敏感。這意味著在與 GPT 進(jìn)行對話時(shí),用戶需要非常準(zhǔn)確地表達(dá)自己的意圖,并且對 GPT 的思考范圍和返回方式作出明確的規(guī)定。否則 GPT 會天馬行空,無法滿足落地應(yīng)用確定性的要求。
  2. token 的數(shù)量限制
    對于 GPT 模型來說,有很強(qiáng)的 token 數(shù)量限制,輸入和輸出都會算 token 。GPT3.5 的 token 上限是4096,GPT4 是8000或32000,且根據(jù) token 數(shù)計(jì)費(fèi)。具體 token 的計(jì)算涉及到 NLP 領(lǐng)域的分詞相關(guān)算法,大家可以根據(jù) OpenAI 提供的工具進(jìn)行查詢:https://platform.openai.com/tokenizer。這個(gè)規(guī)定大大限制了我們和 GPT 交流的方式,比如上下文的篇幅限制。下圖是實(shí)驗(yàn)的時(shí)候 token 超出限制的報(bào)錯(cuò)。


缺乏規(guī)劃性和工作記憶


首先解釋規(guī)劃性。我們應(yīng)該都知道貪心法和動態(tài)規(guī)劃的區(qū)別,GPT 模型依賴于生成下一個(gè)詞的局部和貪心過程,沒有對任務(wù)或輸出進(jìn)行全局或深入的理解。因此,該模型擅長產(chǎn)生流暢和連貫的文本,但在解決無法按照順序方式處理的復(fù)雜或創(chuàng)造性問題方面存在局限性。

比如生成回文詩,嘗試了很多遍都無法正確生成:

圖片

再比如經(jīng)典的漢諾塔問題,如果問 GPT 通用解決方案是什么,甚至寫代碼他都可以。但是如果具體提問有三根柱子,五個(gè)盤子,如何挪動,很大概率會出錯(cuò)。

再來看工作記憶,其實(shí)就類似人類打草稿,只不過人類的心算就是在心里打草稿。工作記憶關(guān)系到模型對于一個(gè)整體任務(wù)的拆解,和對于中間步驟的處理,所以影響到了復(fù)雜任務(wù)的處理結(jié)果。

圖片這兩個(gè)短板其實(shí)和人很像,我們?nèi)四X很多情況下也是無法用動態(tài)規(guī)劃的思路來解決問題的。我們心算個(gè)位數(shù)的加減乘除還可以,但是三位數(shù)及以上的乘除法對一般人的心算難度同樣很大,出錯(cuò)率會變高。只不過我們的上限比現(xiàn)階段的 GPT 高一些。

沒有記憶能力 : 短期記憶 + 長期記憶


注意這里的記憶和剛才所說的工作記憶不是一回事兒。工作記憶有點(diǎn)類似于內(nèi)存或者草稿,是模型內(nèi)部處理問題。而這里的記憶我們分為了短期記憶和長期記憶。

  • 短期記憶:因?yàn)?nbsp;GPT 模型是無狀態(tài)的,每次我們調(diào)用 OpenAI 的接口它都不知道前后的上下文。所以短期記憶是指單個(gè)用戶同一個(gè)會話的歷史上下文。下圖是直接調(diào)用 OpenAI 接口,并不能產(chǎn)生短期記憶。
    圖片
  • 長期記憶:是指一些特定領(lǐng)域的常識和專業(yè)的知識等,需要長期存儲在模型中,影響所有用戶的每一次會話請求。由于 GPT 是一個(gè)通用的大語言模型,所以并沒有深入地學(xué)習(xí)各個(gè)垂直領(lǐng)域的專業(yè)知識,在應(yīng)對專業(yè)問題的時(shí)候力不從心??梢詮母行陨侠斫鉃?,這是模型的知識盲區(qū)。

無法與外界交互


GPT 是一個(gè)語言模型,訓(xùn)練的數(shù)據(jù)知識截止到2021年。同時(shí)現(xiàn)階段他無法使用外部工具,不能建立與外部新知識的連接。如果問 GPT 最近發(fā)生的新聞,他肯定不知道。如果強(qiáng)制要求一定要返回,就算說了回答也不一定正確,這很大程度上造成了對于事實(shí)性問題的謬誤。

圖片

安全性合規(guī)性問題


人是會被接收到的信息影響的,所以作為涉及到自然語言領(lǐng)域的應(yīng)用,一定要考慮安全性和合規(guī)性的問題。對于 AI 應(yīng)用來說分為兩個(gè)方面:一方面是對輸入的判定,非法或不合規(guī)的輸入不應(yīng)該進(jìn)行響應(yīng)。另一個(gè)方面是對輸出的判定,雖然 OpenAI 已經(jīng)對 GPT 模型本身做了很多安全性的管控,但是畢竟是機(jī)器自動生成的,包括國內(nèi)外規(guī)定不盡相同,所以需要對輸出進(jìn)行合法合規(guī)的校驗(yàn)。

非多模態(tài)、不可解釋等問題


GPT 起碼 GPT3.5 目前還是一個(gè)專注于自然領(lǐng)域的模型,對多模態(tài)的信息并沒有很好的支持。同時(shí),GPT 模型對于問題解決和對話輸出的內(nèi)在邏輯并不可解釋,還處于黑盒狀態(tài),這對應(yīng)用者控制 GPT 有一定阻礙。

04結(jié)論

總體來說,GPT 模型在許多任務(wù)中的能力,是可以與人類相媲美的。尤其是自然語言方面,可以說是 unparalleled。但是也存在上述各種實(shí)際問題。但是在現(xiàn)在的水平上,已經(jīng)可以作為部分 AI 應(yīng)用的底層依賴。我們的使命就是通過工程的手段盡可能解決上述各種問題。

二、如何克服GPT現(xiàn)有短板


針對第一章節(jié)所說的問題,我們從工程的角度盡可能地提出解決方案,并結(jié)合 langChain 框架現(xiàn)有的功能,展示作為黑盒模型的封裝,應(yīng)該從哪些方向著手。

01

對prompt要求較高的問題 —— 系統(tǒng)性prompt工程

首先給出一個(gè)錯(cuò)誤的 prompt 示例:

圖片

這樣一句簡單的提示,并沒有對 GPT 的思考和返回做任何約束,具有極大的不確定性,對于落地的應(yīng)用程序是不可接受的。這句話可以作為 chatGPT 的用戶輸入,但是 chatGPT 也已經(jīng)是成熟的產(chǎn)品,用戶的輸入一定不是最終與 OpenAI 交互的 prompt 。

筆者認(rèn)為,系統(tǒng)性的 prompt 工程要注意以下三點(diǎn):

  1. 必須有清晰明確的指令。
    接下來給出在實(shí)驗(yàn)中用到的真實(shí) prompt :
    圖片
    如上圖所示,標(biāo)出了對應(yīng)的注意點(diǎn),主要有以下幾點(diǎn):

  • 要區(qū)分消息角色,system /assistant / user。在 system 中給出整體背景和限定,其他角色可以加入上下文;
  • 對輸入輸出格式進(jìn)行結(jié)構(gòu)化,嚴(yán)格限定,便于 GPT 區(qū)分,也便于前置輸入和后續(xù)提取模型返回值并向用戶展示;
  • 對任務(wù)的具體內(nèi)容進(jìn)行清晰詳細(xì)的表述;
  • 如果必要,給出特殊情況的處理方案;
  • 如果必要,限定模型思考的步驟和范圍;
  • 給出適當(dāng)示例;
  • 盡可能用英文,因?yàn)?nbsp;GPT 對英文的理解能力還是強(qiáng)于中文的。
  1. 要注意 token 的限制,包括最大數(shù)量限制和成本控制。
    token 數(shù)量限制是作為工程必須考慮的問題,甚至是需要優(yōu)先考慮的問題,因?yàn)樯婕暗疆a(chǎn)品的成本。

  2. 不斷調(diào)整 prompt ,并持久化為固定資產(chǎn)。
    實(shí)際開發(fā)工程中,不可能一次就確定完美的 prompt ,或者說沒有完美的 prompt 。只有在不斷試錯(cuò)的過程中不斷調(diào)整,并通過各種測試反饋,形成“極優(yōu)解”而不是“最優(yōu)解”。確定 prompt 后,即成為這個(gè)應(yīng)用的固定資產(chǎn),和應(yīng)用的代碼一樣,是核心價(jià)值與競爭力所在。

下面挑幾個(gè)封裝來看,在系統(tǒng)性 prompt 工程方面, langChain 做了哪些努力。更詳細(xì)的請見:https://python.langchain.com/docs/modules/model_io/prompts/

  1. langChain 封裝了 prompt 的生成方式,封裝為 PromptTemplate。
  1. 實(shí)現(xiàn)了參數(shù)的解析,可以手動指定參數(shù),也可以自動識別 {} 提取參數(shù)
    圖片
    圖片
  2. 區(qū)分了不同的角色,分為 SystemMessagePromptTemplate、 AIMessagePromptTemplate、 HumanMessagePromptTemplate,都屬于 MessagePromptTemplate
    圖片
  3. 多個(gè) MessagePromptTemplate 可以封裝成為 ChatMessagePromptTemplate ,其中包含了多輪 AI 和 Human 的對話歷史,也是我們最常用的 PromptTemplate
  1. langChain 封裝了 prompt 中示例的輸入,封裝為 ExampleSelector。
  2. 可以自定義 ExampleSelector ,并添加多個(gè)示例

  3. 可以根據(jù) token 長度的限制,自適應(yīng)示例個(gè)數(shù)和選擇示例

    如下圖,創(chuàng)建了 LengthBasedExampleSelector ,并規(guī)定最大長度是25。如果輸入很簡短的“big”,則自動附加了很多個(gè)示例。如果輸入一個(gè)長字符串,則只選擇了一個(gè)示例加入 prompt 。

    圖片

    圖片

    圖片

  4. 可以根據(jù)本輪輸入內(nèi)容的相似性匹配,在 prompt 中添加示例

    如下圖所示,在同樣的示例集合中,輸入“worried”一詞 SemanticSimilarityExampleSelector  給出的是 happy 和 sad 作為示例,因?yàn)槎紝儆谝环N情緒。

    具體的實(shí)現(xiàn)方式,是在 SemanticSimilarityExampleSelector 中傳入了用于生成測量語義相似性的文本嵌入,和用于存儲文本嵌入并進(jìn)行相似性搜索的向量數(shù)據(jù)庫。

    向量數(shù)據(jù)庫的原理,簡單來講。文本添加的時(shí)候,通過分詞,再通過特定的神經(jīng)網(wǎng)絡(luò),將文本轉(zhuǎn)化為一個(gè)維數(shù)很高的向量。搜索的時(shí)候經(jīng)過同樣處理,通過比較目標(biāo)詞轉(zhuǎn)換成的向量與已有向量之間的余弦距離等計(jì)算方式,得出最為相近的文本。這是省略了很多細(xì)節(jié)的版本,由于不是本文主題,就不過多介紹。但是向量數(shù)據(jù)庫對 LLM 的助力是極大的。

    圖片

02

缺乏規(guī)劃性和工作記憶的問題 —— 思維鏈模式

思維鏈:Chain of Thought,簡稱CoT。是一種推理模式,就是主動要求 GPT 去思考,把一個(gè)復(fù)雜的問題用推理的方法拆分成多個(gè)。實(shí)踐上就是我們就是要告訴 GPT,把任務(wù)分解。如果模型不能主動分解為正確的步驟,就需要人幫他把步驟顯示地加到 prompt 里去。

比如下圖的示例,提問有多少個(gè)質(zhì)數(shù),他會先把所有質(zhì)數(shù)列出來,再進(jìn)行計(jì)數(shù)。而且整個(gè)過程是顯式地打印出來的,這會比直接給出答案正確率高很多。

圖片

再比如下圖,提問哪種更快,他會先計(jì)算出總數(shù)再進(jìn)行比較。

圖片

思維鏈模式是大語言模型應(yīng)用的一大利器,大大增加了返回的可靠性。

03

沒有短期記憶和長期記憶的問題 —— 外掛記憶

對于沒有記憶能力這個(gè)問題來說,我們可以給它外掛記憶。

  •  短期記憶
    我們可以用內(nèi)存或者數(shù)據(jù)庫,將一段會話中的歷史內(nèi)容放到 prompt 里。這樣回答最新的問題的時(shí)候就知道上下文了。有很多種方式,比如多輪記憶都放進(jìn)去;比如使用 FIFO 避免 token 限制;再比如進(jìn)行摘要提取,提取的方法有很多,讓 GPT 自己提取就不錯(cuò);同樣也可以做基于向量的相似度優(yōu)先記憶。圖示如下:
    圖片
  • 長期記憶
    最好的方式是對模型進(jìn)行微調(diào)訓(xùn)練,讓他真正學(xué)習(xí)到我們想讓他了解的數(shù)據(jù)或知識。是有幾個(gè)問題,首先是數(shù)據(jù)量和數(shù)據(jù)質(zhì)量的要求都很高,其次是價(jià)格太貴,訓(xùn)練和調(diào)用都要根據(jù) token 算錢,還比正常的調(diào)用要貴。而且 OpenAI 現(xiàn)在只開放了下圖這四種模型:
    圖片

其他還有辦法嗎?向量數(shù)據(jù)庫又登場了。可以將專業(yè)的數(shù)據(jù)存儲在向量數(shù)據(jù)庫中,在生成最終的 prompt 之前,先從向量數(shù)據(jù)庫找出與原本問題最相近的數(shù)據(jù),拼接成 prompt 一起投喂給 GPT ,模型會根據(jù) prompt 中包含的信息,給出與私有數(shù)據(jù)或?qū)I(yè)知識更貼近的回答。這是工程角度可以解決的最簡便的方法,類似一個(gè)“乞丐版”的小模型。

在基于 LLM 的應(yīng)用中,向量過于重要,所以最近做向量數(shù)據(jù)庫的項(xiàng)目或公司都有很多資金在投。

04

無法與外界交互的問題 —— 代理擴(kuò)展工具

與外界交互的問題是最容易想到解決方案的。和計(jì)算機(jī)相關(guān)的事情都可以通過代碼和網(wǎng)絡(luò)來完成,只要 GPT 生成命令,我們就可以使用工具幫助它控制??梢赃M(jìn)行谷歌搜索,可以與 MySQL 等各種數(shù)據(jù)庫進(jìn)行操作,可以讀寫文件和操作命令行等。

可以和外界交互之后,GPT 的能力得到了一個(gè)非常大的提升。以前很多解決不了的問題,現(xiàn)在都可以解決了,所以我們又有了新的處理問題的范式:ReAct 。注意,這個(gè)和前端的 react 沒有任何關(guān)系,意思是 Reason + Action。每一次動作要先思考,形成 Thought ,再行動進(jìn)行 Action,最后觀察形成 Observation。上一輪的觀察結(jié)果再去支持下一輪的思考,直至結(jié)束。

ReAct 的優(yōu)勢有兩點(diǎn):

  • ReAct 提示語言模型以交錯(cuò)的方式產(chǎn)生與任務(wù)相關(guān)的語言推理軌跡和動作,這使得模型能夠動作態(tài)推理,以創(chuàng)建、維護(hù)和調(diào)整動作的高級計(jì)劃(推理到動作),同時(shí)也與外部環(huán)境互動,將額外信息納入推理(動作到推理)??偨Y(jié)成一句話就像:“學(xué)而不思則罔,思而不學(xué)則殆”。
  • 除了普遍適用性和性能提升外,推理和動作的結(jié)合也有助于提高模型的可解釋性、可信度和所有領(lǐng)域的可診斷性,因?yàn)槿祟惪梢院苋菀椎貐^(qū)分來自模型內(nèi)部知識和外部環(huán)境的信息,以及檢查推理軌跡以了解模型動作的決策基礎(chǔ)。在過程中也可以對模型的想法進(jìn)行糾偏。

圖片

有研究人員對 ReAct 和 CoT 兩種范式進(jìn)行了對比。總體而言,最好的方法是 ReAct 和 CoT 的結(jié)合,允許在推理過程中使用內(nèi)部知識和外部獲得的信息。通過實(shí)驗(yàn)得出了各種模式下的有效性分析:

圖片

ReAct 和 CoT 的區(qū)別是什么呢?基于以上研究,主要表現(xiàn)為以下幾點(diǎn):

  • 幻覺是 CoT 的一個(gè)嚴(yán)重問題,即錯(cuò)誤步驟和結(jié)論。相比之下, ReAct 的問題解決軌跡更接地氣,以事實(shí)為導(dǎo)向,并且值得信賴,這要?dú)w功于外部知識庫的訪問。
  • 雖然交錯(cuò)推理、動作和觀察步驟提高了 ReAct 的基礎(chǔ)性和可信度,但這樣的結(jié)構(gòu)約束也降低了其制定推理步驟的靈活性,導(dǎo)致推理錯(cuò)誤率高于 CoT 。有一種 ReAct 特有的頻繁錯(cuò)誤模式,即模型重復(fù)生成之前的想法和動作,我們將其歸為 "推理錯(cuò)誤 "的一部分,因?yàn)槟P臀茨芡评淼胶线m的下一步動作并跳出循環(huán)。
  • 對于 ReAct 來說,通過搜索獲得有效信息是至關(guān)重要的。非信息性搜索,占錯(cuò)誤案例的23%,這使得模型推理脫軌,使其很難恢復(fù)和重新表述思想。這也許是事實(shí)性和靈活性之間的預(yù)期權(quán)衡,促使我們使用結(jié)合兩種方法的策略。

05

安全性合規(guī)性問題 —— 各階段校驗(yàn)

對于合規(guī)性問題,我們可以從三個(gè)步驟考慮。

  1. OpenAI 本身提供了用于校驗(yàn)的 moderation 接口,而且此接口是免費(fèi)的,不消耗 token 。如下圖,輸入“I want to kill them”,返回?cái)?shù)據(jù)中 flagged 為 true ,表示這個(gè)輸入觸發(fā)了安全規(guī)則。 category_score 中給出了各個(gè)方面的詳細(xì)打分,violence 最高,表示這個(gè)輸入有很強(qiáng)的暴力傾向。
    圖片
  2. 由于國內(nèi)外規(guī)定不盡相同,對于國內(nèi)的合規(guī)性要求,我們要經(jīng)過嚴(yán)格的國內(nèi)權(quán)威平臺校驗(yàn)。
  3. 同時(shí),我們也可以使用 GPT 本身的文本理解能力進(jìn)行其他方面的判別,如情感傾向等。

06

其他通用工程問題 —— 工程實(shí)踐解決

實(shí)際應(yīng)用落地過程中,還會有很多其他的工程實(shí)踐問題。比如并發(fā)、不同模塊之間連接、各個(gè)環(huán)節(jié)的 mock 、各種測試驗(yàn)證等,像 langChain 這樣的框架都給出了解決方案。

這里提一個(gè)比較有意思的:緩存問題。因?yàn)?nbsp;GPT 響應(yīng)時(shí)間比較長,而且如果相同問題每次都請求, token 消耗也比較貴,所以比如智能客服等場景,建立緩存很有必要。但都是自然語言,比如用戶說“這個(gè)房子怎么樣”和“這個(gè)樓盤怎么樣”,實(shí)際是很相近的問題,但是通過 equals 等判斷是不能命中的。怎么建立自然語言的映射呢?向量!

07

GPT發(fā)展方向及應(yīng)用工程調(diào)整

GPT 等模型是在不斷發(fā)展的,面對他的發(fā)展方向,我們需要不斷調(diào)整。比如, token 數(shù)量一定是會放寬的,而且速度會非???;對于多模態(tài)的支持非常關(guān)鍵,科學(xué)家們正在不斷努力;外部工具使用的支持,模型本身也在做,而且在 GPT4 上已經(jīng)有部分可以應(yīng)用了。還有很多方面,在模型本身做了這些之后,上述的一些策略就會失去作用,也需要針對新的特性去進(jìn)行加強(qiáng)。當(dāng)然不能說因?yàn)闀袁F(xiàn)在就不做了,工程師就是要在現(xiàn)有工具的基礎(chǔ)上爭分奪秒地為應(yīng)用到業(yè)務(wù)落地而服務(wù)。

三、構(gòu)建完整AI應(yīng)用


01

我們應(yīng)該用GPT來做什么

基于剛才的分析和工程優(yōu)化,筆者得出一個(gè)思考:GPT 是“人”,不是機(jī)器。這涉及到一個(gè)很關(guān)鍵的問題——我們應(yīng)該用 GPT 來做什么?

  • 首先,它擅長做自然語言相關(guān)的 AI 應(yīng)用;
  • 其次,它可以做某些人類做的推理的事情;
  • 但是,它難以做人類做的過于復(fù)雜和創(chuàng)造性的事情;
  • 最后,不應(yīng)該讓 GPT 做機(jī)器做的事情。什么叫機(jī)器做的事情?機(jī)器的執(zhí)行是嚴(yán)密的,是不能出錯(cuò)的。如果出錯(cuò),大概率是寫代碼的人的錯(cuò)誤。但是人是可能出錯(cuò)的, AI 也是可能出錯(cuò)的。舉個(gè)例子:一個(gè)公司想做數(shù)據(jù)分析,但是沒有 BI 工程師。如果他想向 GPT 尋求幫助,是要直接把所有數(shù)據(jù)塞給 GPT 然后問他具體的問題嗎。當(dāng)然不是,這樣做 token 數(shù)量會爆炸性增長,且放不下所有數(shù)據(jù)。何況 GPT 的計(jì)算能力本來就很差。正確的做法是將數(shù)據(jù)庫的表結(jié)構(gòu)輸入給 GPT ,用一些清晰明了的示例表達(dá)清楚訴求,然后讓 GPT 寫好 SQL ,在自己的數(shù)據(jù)庫服務(wù)器中運(yùn)行。這里的數(shù)據(jù)庫就是機(jī)器,但寫 SQL 的是 GPT (也就是應(yīng)該人做的工作)。

02

構(gòu)建一個(gè)AI應(yīng)用的全流程

最后整理一下,構(gòu)建一個(gè) AI 應(yīng)用的全流程。其實(shí)整個(gè)過程都圍繞著提高確定性。

  1. UI 層:用戶界面層,接收輸入返回輸出。
  2. 會話處理層:包括對用戶輸入的格式化解析、對話管理等功能。如果要用向量數(shù)據(jù)庫做緩存,就應(yīng)該在這一層。
  3. 數(shù)據(jù)審計(jì)層:負(fù)責(zé)對用戶數(shù)據(jù)進(jìn)行審計(jì)和保護(hù),同時(shí)對出入的自然語言的安全性和合規(guī)性進(jìn)行評估。注意,不僅要評估用戶的輸入,也要評估模型的輸出。
  4. 操作編排層:這個(gè)層級可以管理和協(xié)調(diào)多個(gè)語言模型、工具。比如 langChain 對外部工具的使用等。
  5. LLM 增強(qiáng)層:這個(gè)層級可以對語言模型進(jìn)行額外的優(yōu)化和增強(qiáng),比如長期記憶、短期記憶相關(guān)的各種操作。
  6. LLM 層:最底層是語言模型本身,其實(shí)就是對OpenAI 的接口請求。

最后總結(jié)下來,在一個(gè)完整應(yīng)用中,GPT 這個(gè)黑盒模型就只是右下角的底層依賴,其他全是工程相關(guān)的設(shè)計(jì)和實(shí)現(xiàn)。

圖片

03

現(xiàn)階段的生態(tài)

圖片

如上圖,雖然 GPT3.5 橫空出世并沒有多久,但是已經(jīng)形成了較為完善的生態(tài)體系。最底層模型層,是黑盒模型的 API 調(diào)用。上層框架層,各個(gè)主流語言都有類似 langChain 的封裝。再上層應(yīng)用層,搭建了各個(gè)實(shí)際需求場景下的應(yīng)用程序。我們做 AI 應(yīng)用時(shí),可以直接依賴 OpenAI 的模型接口,也可以在框架的基礎(chǔ)上方便地操作,甚至在類似 autoGPT 這種通用應(yīng)用基礎(chǔ)上搭建。筆者推薦基于 langChain 等框架,既屏蔽了底層通用的工程細(xì)節(jié),相對也有更高的靈活度。

04

對待GPT的正確態(tài)度

最后呢,想明確我們對待 GPT 等大語言模型的態(tài)度:

  • 不夸大 GPT 作為一種 AI 模型的效果
  • 更不輕視 GPT 幫助 AI 工程應(yīng)用的能力

祝作為工程師的大家都能產(chǎn)出優(yōu)秀的 AI 應(yīng)用。


參考資料

  1. Emergent Abilities of Large Language Models(https://arxiv.org/abs/2206.07682)
  2. Sparks of Artificial General Intelligence: Early experiments with GPT-4(https://arxiv.org/abs/2303.12712)
  3. LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例(https://www.phodal.com/blog/llm-reference-architecture/)
  4. ChatGPT 實(shí)用指南(ChatGPT 實(shí)用指南(二))
責(zé)任編輯:武曉燕 來源: 搜狐技術(shù)產(chǎn)品
相關(guān)推薦

2024-08-29 12:56:03

2024-07-26 08:45:54

2021-04-30 08:00:00

數(shù)據(jù)工程師開發(fā)工具

2024-04-23 09:15:09

2024-04-24 09:21:20

2021-07-30 16:34:31

前端Nodejs開發(fā)

2025-01-10 12:56:03

2013-06-07 13:30:20

2021-07-05 10:29:59

AI 工程師人工智能

2025-03-31 09:30:52

2020-09-19 17:40:29

編寫代碼工具技術(shù)

2024-07-31 08:00:00

2019-02-20 09:35:05

爬蟲工程師開發(fā)工具

2019-06-24 09:40:17

前端前端工程師開發(fā)工具

2016-09-22 16:14:45

前端設(shè)計(jì)Photoshop

2024-07-31 08:14:17

2018-03-02 09:10:51

2023-09-20 13:59:44

AI工具

2013-05-24 09:25:27

2024-03-07 09:15:57

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號