偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

LLM原生開發(fā)路線圖指南 原創(chuàng)

發(fā)布于 2024-6-25 21:36
瀏覽
0收藏

譯者 | 朱先忠

審校 | 重樓

引言

大型語言模型(LLM)正在迅速成為現(xiàn)代人工智能的基石。然而,目前還沒有出現(xiàn)公認(rèn)的最佳實(shí)踐,而且先驅(qū)們往往沒有明確的開發(fā)路線圖。因此,這種狀況急需要有人重新發(fā)明有關(guān)輪子;否則,將會使人陷入困境。

在過去的兩年里,我?guī)椭恍┙M織利用LLM構(gòu)建了創(chuàng)新型應(yīng)用程序。通過這次經(jīng)歷,我開發(fā)了一種經(jīng)得住考驗(yàn)的方法來創(chuàng)建創(chuàng)新型LLM應(yīng)用解決方案(受LLM.org.il社區(qū)的啟發(fā)而形成),我將在本文中與大家共同分享。

具體來說,本文將為讀者朋友在LLM原生開發(fā)的復(fù)雜環(huán)境中導(dǎo)航提供一幅清晰的路線圖。你將學(xué)習(xí)如何從構(gòu)思轉(zhuǎn)變?yōu)閷?shí)驗(yàn)、評估和產(chǎn)品化的全過程,從而有助于釋放出你創(chuàng)建開創(chuàng)性應(yīng)用程序的所有潛力。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)本圖使用Dall-E3創(chuàng)建?

為什么標(biāo)準(zhǔn)化流程至關(guān)重要

當(dāng)今,LLM領(lǐng)域是如此充滿活力,以至于我們幾乎每天都能夠聽到新的突破性創(chuàng)新。這很令人興奮,但也讓人陷于迷?!憧赡軙l(fā)現(xiàn)自己在這個(gè)過程中迷失了方向,不知道該做什么,或者如何將你的新穎的想法付諸實(shí)踐。

長話短說,如果你是一位想要有效地構(gòu)建LLM原生應(yīng)用程序的人工智能創(chuàng)新者(經(jīng)理或從業(yè)者),本文正是你的選擇。

實(shí)施標(biāo)準(zhǔn)化流程有助于啟動新項(xiàng)目,并提供以下幾個(gè)關(guān)鍵好處:

  1. 標(biāo)準(zhǔn)化流程——有助于調(diào)整團(tuán)隊(duì)成員,并確保新成員順利入職(尤其是在這種混亂的情況下)。?
  2. 定義明確的里程碑——這是一種簡單的方法,用于跟蹤和衡量你的工作,并確保你沿著正確的道路前行。?
  3. 確定決策點(diǎn)——LLM原生開發(fā)充滿了未知和“小實(shí)驗(yàn)”(見下文)。清晰的決策點(diǎn)使我們能夠輕松地降低風(fēng)險(xiǎn),并始終使我們的開發(fā)努力保持清晰而高效。?

LLM工程師的基本技能

與軟件研發(fā)中的任何其他既定角色不同,LLM原生開發(fā)絕對需要一個(gè)新角色:LLM工程師或AI工程師。

LLM工程師是一種獨(dú)特的綜合技能成員,涉及不同(既定)角色的技能:

  • 軟件工程技能——像大多數(shù)軟件工程師一樣,大多數(shù)工作都涉及到將工程組件拼合在一起,并將其粘成一體。?
  • 研究技能——正確理解LLM的原生實(shí)驗(yàn)性質(zhì)至關(guān)重要。雖然構(gòu)建一些簡易的酷的演示程序非常容易,但這些酷的演示程序和實(shí)際解決方案之間的距離需要實(shí)驗(yàn)證明并具備一定的靈活性。?
  • 深入的業(yè)務(wù)/產(chǎn)品理解——由于模型的脆弱性,理解業(yè)務(wù)目標(biāo)和過程至關(guān)重要,而不是拘泥于我們定義的架構(gòu)。對LLM工程師來說,建立手動流程模型的能力是一項(xiàng)黃金技能。?

在寫這篇文章的時(shí)候,LLM工程仍然是全新的,相應(yīng)的崗位招聘可能非常具有挑戰(zhàn)性。因此,企業(yè)較早些時(shí)間招聘具有后端/數(shù)據(jù)工程或數(shù)據(jù)科學(xué)背景的候選人可能是個(gè)好主意。

軟件工程師可能會期待一個(gè)更平穩(wěn)的過渡,因?yàn)閷?shí)驗(yàn)過程更“工程師化”,而不是“科學(xué)化”(與傳統(tǒng)的數(shù)據(jù)科學(xué)工作相比)。話雖如此,我看到許多數(shù)據(jù)科學(xué)家也在做這種轉(zhuǎn)變。只要你對自己必須接受新的“軟技能”這一事實(shí)感到滿意,那么你就已經(jīng)走在了正確的道路上!

LLM原生開發(fā)的關(guān)鍵要素

與經(jīng)典的后端應(yīng)用程序(如CRUD)不同,這里沒有循序漸進(jìn)的開發(fā)方案。像“人工智能”中的其他一切一樣,LLM原生應(yīng)用程序需要開發(fā)人員具備研究和實(shí)驗(yàn)的心態(tài)。

要“馴服一頭巨獸”,你必須分而治之,把你的工作劃分成更小的實(shí)驗(yàn)?zāi)K,測試其中的一些,最后再選擇最有希望的實(shí)驗(yàn)組件。

我再怎么強(qiáng)調(diào)研究心態(tài)的重要性也不為過。這意味著,你可能會花時(shí)間探索一項(xiàng)研究內(nèi)容,發(fā)現(xiàn)它“不可能”、“不夠好”或“不值得”。這完全沒關(guān)系——這意味著我們已經(jīng)走在了正確的道路上。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)

使用LLM進(jìn)行實(shí)驗(yàn)是構(gòu)建LLM原生應(yīng)用程序的唯一方法(并避免前進(jìn)中的“陷阱”)(使用Dall-E3創(chuàng)建)

擁抱實(shí)驗(yàn)——過程的核心

有時(shí),你的“實(shí)驗(yàn)”會失敗,然后你稍微調(diào)整一下你的工作,從而使得另一項(xiàng)實(shí)驗(yàn)取得更好的效果。

這正是為什么,在設(shè)計(jì)最終解決方案之前,我們必須從簡單開始,盡可能規(guī)避風(fēng)險(xiǎn)。

  1. 定義“預(yù)算”或時(shí)間表。讓我們看看在X周內(nèi)我們能做什么,然后決定如何做或是否繼續(xù)。通常,2-4周的時(shí)間來了解基本的PoC(Proof of Concept:為觀點(diǎn)提供證據(jù))就足夠了。如果它看起來很有希望——繼續(xù)投入資源來改善它。?
  2. 實(shí)驗(yàn)——無論你在實(shí)驗(yàn)階段選擇自下而上還是自上而下的方法,你的目標(biāo)都是最大限度地提高結(jié)果的連續(xù)性。在第一次實(shí)驗(yàn)迭代結(jié)束時(shí),你應(yīng)該有一些PoC(與你的工作相關(guān)的其他成員可以使用)和你已經(jīng)實(shí)現(xiàn)的基本內(nèi)容。?
  3. 回顧性——在我們的研究階段結(jié)束時(shí),我們可以了解構(gòu)建這樣一個(gè)應(yīng)用程序的可行性、局限性和成本。這有助于我們決定是否將其產(chǎn)品化,以及如何設(shè)計(jì)最終產(chǎn)品及其用戶體驗(yàn)。?
  4. 產(chǎn)品化——通過遵循標(biāo)準(zhǔn)軟件工程師最佳實(shí)踐并實(shí)施反饋和數(shù)據(jù)收集機(jī)制,開發(fā)項(xiàng)目的最終商業(yè)版本,并將其與解決方案的其余部分集成。?

LLM原生開發(fā)路線圖指南-AI.x社區(qū)LLM原生應(yīng)用程序開發(fā)生命周期(圖片由作者提供)?

為了很好地實(shí)施以實(shí)驗(yàn)為導(dǎo)向的過程,我們必須在處理和構(gòu)建這些實(shí)驗(yàn)時(shí)做出明智的決定:

精益起步——自下而上的方法

【譯者注】精益即“l(fā)ean”,起源于日本豐田的創(chuàng)作理念。

雖然許多早期采用者很快就進(jìn)入了具有成熟Langchain或類似功能的“最先進(jìn)”多鏈代理系統(tǒng),但我發(fā)現(xiàn)采用“自下而上的方法”通常會產(chǎn)生更好的結(jié)果。

開始精益,非常精益,信奉“one prompt to rule them all(一個(gè)提示,統(tǒng)治他們所有人)”的哲學(xué)吧。盡管這種策略看起來可能是非常規(guī)的,而且一開始可能會產(chǎn)生糟糕的結(jié)果,但它可以為你的系統(tǒng)打開基礎(chǔ)。

從那里開始,然后不斷迭代和完善提示,采用提示工程技術(shù)來優(yōu)化結(jié)果。當(dāng)你發(fā)現(xiàn)精益解決方案中的弱點(diǎn)時(shí),通過添加分支來解決這些缺點(diǎn),從而對流程進(jìn)行拆分。

在設(shè)計(jì)我的LLM工作流程圖或LLM原生架構(gòu)的每一片“葉子”時(shí),我都會遵循魔幻三角形(The Magic Triangle)原則來確定何時(shí)何地修剪樹枝、拆分樹枝或加厚根部(通過提示工程技術(shù)),并擠出更多的檸檬。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)自下而上方法示意圖(作者圖片)?

例如,要用自下而上的方法實(shí)現(xiàn)“原生語言SQL查詢”,我們可以從以原生方式將模式發(fā)送到LLM并要求它生成查詢開始。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)自下而上的方法示例(圖片由作者提供)?

通常,這與“自上而下的方法”并不矛盾,而是在它之前邁出的又一步。這種方案有利于我們能夠快速獲勝,吸引更多的項(xiàng)目投資。

大局在前:自上而下的戰(zhàn)略

“我們知道LLM工作流并不容易,為了實(shí)現(xiàn)我們的目標(biāo),我們可能最終會采用一些工作流或LLM原生架構(gòu)。”

自上而下的方法認(rèn)識到了這一點(diǎn),并從第一天開始就著手設(shè)計(jì)LLM原生架構(gòu),并探索實(shí)現(xiàn)其不同的步驟/鏈。

通過這種方式,你可以將工作流架構(gòu)作為一個(gè)整體進(jìn)行測試,并擠壓整個(gè)“檸檬”,而不是單獨(dú)精煉每一片“葉子”。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)

自上而下的方法過程:設(shè)計(jì)一次架構(gòu),然后實(shí)現(xiàn)架構(gòu)并進(jìn)行測試和測量(作者圖片)

例如,為了用自上而下的方法實(shí)現(xiàn)“原生語言SQL查詢”,我們將在開始編碼之前就開始設(shè)計(jì)體系結(jié)構(gòu),然后跳到完整的實(shí)現(xiàn):

LLM原生開發(fā)路線圖指南-AI.x社區(qū)自上而下方法的一個(gè)例子(作者圖片)?

找到正確的平衡

當(dāng)你開始試驗(yàn)LLM時(shí),你可能會從其中一個(gè)極端開始(過于復(fù)雜的自上而下或超級簡單的一次性)。事實(shí)上,沒有這樣的贏家。

理想情況下,在對模型進(jìn)行編碼和實(shí)驗(yàn)之前,你將定義一個(gè)好的SoP(標(biāo)準(zhǔn)操作流程),并為專家建模。在現(xiàn)實(shí)中,建模是非常困難的;有時(shí),你可能無法接觸到這樣的專家。

我發(fā)現(xiàn)從一開始就要確定一個(gè)好的架構(gòu)/SoP很有挑戰(zhàn)性,所以在投入使用之前,值得先進(jìn)行一些嘗試。然而,這并不意味著一切都必須過于精簡。如果你已經(jīng)有了一個(gè)預(yù)先的理解,即某些東西必須被分解成更小的部分——那么就這樣做吧。

在任何情況下,在設(shè)計(jì)解決方案時(shí),你都應(yīng)該利用“魔幻三角形”原則,正確地對手動流程進(jìn)行建模。

優(yōu)化你的解決方案——擠壓“檸檬”

在實(shí)驗(yàn)階段,我們不斷擠壓“檸檬”,增加更多的復(fù)雜“層”:

  • 提示工程技術(shù)——比如少樣本、角色分配,甚至動態(tài)少樣本。?
  • 將上下文窗口從簡單的變量信息擴(kuò)展到復(fù)雜的RAG流可以幫助改進(jìn)結(jié)果。?
  • 用不同的模型進(jìn)行實(shí)驗(yàn)——不同的模型在不同的任務(wù)上表現(xiàn)不同。此外,大型LLM通常不是很劃算,值得嘗試更多特定于任務(wù)的模型。?
  • 提示節(jié)約——我了解到,在“節(jié)約”中使用標(biāo)準(zhǔn)操作流程(特別是提示和要求的輸出)通常會提高延遲。通過減少提示詞大小和模型需要經(jīng)歷的步驟,我們可以減少模型需要生成的輸入和輸出。你會感到驚訝,但提示節(jié)約(prompt dieting)有時(shí)甚至可以提高質(zhì)量!?請注意,提示節(jié)約也可能導(dǎo)致質(zhì)量下降。因此,在這樣做之前進(jìn)行理智測試很重要。?
  • 將流程拆分為更小的步驟也非常有益,并使優(yōu)化SOP的子流程變得更容易和可行。?

請注意,這可能會增加解決方案的復(fù)雜性或損害性能(例如,增加處理的符號數(shù)量)。為了緩解這種情況,請使用簡潔的提示和較小的模型。

根據(jù)經(jīng)驗(yàn),當(dāng)系統(tǒng)提示的顯著變化為SOP的這一部分產(chǎn)生更好的結(jié)果時(shí),通常最好進(jìn)行拆分。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)擠壓AI檸檬(使用Dall-E3創(chuàng)建)?

LLM實(shí)驗(yàn)的剖析

就我個(gè)人而言,我更喜歡從一個(gè)簡單的Jupyter筆記本開始,使用Python、Pydantic和Jinja2:

  1. 使用Pydantic從模型中定義我的輸出模式。?
  2. 使用Jinja2編寫提示模板。?
  3. 定義結(jié)構(gòu)化輸出格式(在YAML文件中)。這將確保模型遵循“思維步驟”,并以我的SOP為指導(dǎo)。?
  4. 通過Pydantic驗(yàn)證確保此輸出;如果需要,請重試。?
  5. 穩(wěn)定你的工作——使用Python文件和包將代碼組織成工作單元。?

在更廣泛的范圍內(nèi),你可以使用不同的工具,如??OpenAI流媒體???來輕松利用流媒體(和工具),??LiteLLM???在不同的提供商之間擁有標(biāo)準(zhǔn)化的LLM SDK,或??vLLM??來服務(wù)開源LLM。

通過健全測試和評估確保質(zhì)量

健全性測試評估項(xiàng)目的質(zhì)量,并確保項(xiàng)目質(zhì)量不會低于你預(yù)先定義的成功率基準(zhǔn)線。

把你的解決方案/提示詞庫想象成一條毯子——如果你把它拉得太長,它可能會突然無法覆蓋它曾經(jīng)覆蓋的一些使用場景。

要做到這一點(diǎn),可以先定義一組你已經(jīng)成功覆蓋的案例,并確保你保持這種狀態(tài)(或者至少值得這樣做)。將其視為表驅(qū)動的??測試??可能會更易于操作。

請注意,評估“生成”解決方案(例如,編寫文本)的成功與否比使用LLM執(zhí)行其他任務(wù)(例如分類、實(shí)體提取等)要復(fù)雜得多。對于這類任務(wù),你可能希望使用更智能的模型(如GPT4、Claude Opus或LLAMA3-70B)來進(jìn)行評價(jià)。

嘗試使輸出在“生成”輸出之前包含“確定性部分”可能也是一個(gè)好主意,因?yàn)檫@些類型的輸出更容易測試:

cities:
  - New York
  - Tel Aviv
vibes:
  - vibrant
  - energetic
  - youthful
target_audience:
  age_min: 18
  age_max: 30
  gender: both
  attributes:
    - adventurous
    - outgoing
    - culturally curious
# ignore the above, only show the user the `text` attr.
text: Both New York and Tel Aviv buzz with energy, offering endless activities, nightlife, and cultural experiences perfect for young, adventurous tourists.

當(dāng)前,已經(jīng)存在一些尖端的比較有前景的解決方案值得研究。我發(fā)現(xiàn)它們在評估基于RAG的解決方案時(shí)特別有用:你可以進(jìn)一步了解??DeepChecks???、??Ragas???或??ArizeAI??。

做出明智的決策:復(fù)盤的重要性

在每個(gè)主要的/時(shí)間框架的實(shí)驗(yàn)或里程碑之后,我們應(yīng)該停下來,就如何以及是否繼續(xù)采用這種方法做出明智的決策。

在這一點(diǎn)上,你的實(shí)驗(yàn)將有一個(gè)明確的成功率基準(zhǔn)線,你將知道需要改進(jìn)什么。

這也是開始討論該解決方案的產(chǎn)品化含義并從“產(chǎn)品工作”開始的一個(gè)好觀點(diǎn):

  1. 在產(chǎn)品中會是什么樣子??
  2. 限制/挑戰(zhàn)是什么?你將如何緩解這些問題??
  3. 你當(dāng)前的延遲是多少?它足夠好嗎??
  4. 用戶體驗(yàn)應(yīng)該是什么?你可以使用哪些UI技巧?流媒體有幫助嗎??
  5. 代幣的預(yù)計(jì)支出是多少?我們能用更小的模型來減少開支嗎??
  6. 優(yōu)先級事項(xiàng)是什么?這些挑戰(zhàn)中的任何一項(xiàng)都是引人注目的嗎??

假設(shè)我們達(dá)到的基準(zhǔn)線“足夠好”,并且我們相信我們可以緩解我們提出的問題。在這種情況下,我們將繼續(xù)投資和改進(jìn)該項(xiàng)目,同時(shí)確保它永遠(yuǎn)不會降級并使用健全性測試。

LLM原生開發(fā)路線圖指南-AI.x社區(qū)本圖使用Dall-E3創(chuàng)建?

從實(shí)驗(yàn)到產(chǎn)品:將你的解決方案變?yōu)楝F(xiàn)實(shí)

最后,但同樣重要的是,我們必須將我們的工作產(chǎn)品化。與任何其他生產(chǎn)級解決方案一樣,我們必須實(shí)現(xiàn)生產(chǎn)工程概念,如日志記錄、監(jiān)控、依賴關(guān)系管理、容器化、緩存等。

這是一個(gè)龐大的世界,但幸運(yùn)的是,我們可以借鑒經(jīng)典的生產(chǎn)工程中的許多機(jī)制,甚至可以采用許多現(xiàn)有的工具。

話雖如此,還需要格外注意LLM原生應(yīng)用程序的細(xì)微差別:

  • 反饋循環(huán)——我們?nèi)绾魏饬砍晒Γ克皇且粋€(gè)“同意/反對”的機(jī)制,還是考慮采用我們的解決方案的更復(fù)雜的機(jī)制??收集這些數(shù)據(jù)也很重要;今后,這可以幫助我們重新定義我們的理智“基線”,或者通過動態(tài)少樣本微調(diào)我們的結(jié)果,或者微調(diào)模型。?
  • 緩存——與傳統(tǒng)的軟件工程不同,當(dāng)我們在解決方案中涉及生成方面時(shí),緩存可能非常具有挑戰(zhàn)性。為了緩解這種情況,探索緩存類似結(jié)果的選項(xiàng)(例如,使用RAG技術(shù))和/或減少生成輸出(通過具有嚴(yán)格的輸出模式)。?
  • 成本跟蹤——許多公司發(fā)現(xiàn)從“強(qiáng)大的模型”(如GPT-4或Opus)開始非常誘人;然而,在生產(chǎn)中,成本可能會迅速上升。避免對最終賬單感到驚訝,并確保始終計(jì)算輸入/輸出符號,并跟蹤你的工作流程影響。?
  • 可調(diào)試性和跟蹤——確保你已經(jīng)設(shè)置了正確的工具來跟蹤“帶有錯(cuò)誤”的輸入并在整個(gè)過程中跟蹤它。這通常包括保留用戶輸入以備日后調(diào)查和建立跟蹤系統(tǒng)。記?。骸芭c過渡性軟件不同,人工智能會悄無聲息地失??!”?

結(jié)語:你在推進(jìn)LLM原生技術(shù)方面的作用

這可能是本文的結(jié)束,但肯定不是我們工作的結(jié)束。LLM原生開發(fā)是一個(gè)迭代過程,它涵蓋了更多的用例、挑戰(zhàn)和功能,并不斷改進(jìn)我們的LLM產(chǎn)品。

當(dāng)你繼續(xù)你的人工智能開發(fā)之旅時(shí),保持敏捷,大膽地進(jìn)行實(shí)驗(yàn),并牢記最終用戶。與社區(qū)分享你的經(jīng)驗(yàn)和見解,我們可以一起推動LLM原生應(yīng)用程序的發(fā)展。不斷探索、學(xué)習(xí)和建設(shè)——可能性是無窮的。

我希望本文能夠成為你LLM原生開發(fā)之旅中的寶貴伴侶!

本文使用縮略語

【1】SoP/SOP:標(biāo)準(zhǔn)操作流程,這是從魔幻三角形文章借鑒的概念。

【2】YAML:我發(fā)現(xiàn)使用YAML來構(gòu)建輸出在LLM中效果更好。為什么?我的理論是,它去掉了不相關(guān)的標(biāo)記,表現(xiàn)得很像原生語言。

【3】魔幻三角形(The Magic Triangle):LLM原生開發(fā)藍(lán)圖;請繼續(xù)關(guān)注,并在它的藍(lán)圖發(fā)布時(shí)關(guān)注我已進(jìn)行閱讀。

附:

原文標(biāo)題:Building LLM Apps: A Clear Step-By-Step Guide,作者:Almog Baku

鏈接:https://towardsdatascience.com/building-llm-apps-a-clear-step-by-step-guide-1fe1e6ef60fd

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦