国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例

這篇具有很好參考價(jià)值的文章主要介紹了LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

隨著,對(duì)于 LLM 應(yīng)用于架構(gòu)領(lǐng)域探索的進(jìn)一步深入,以及 ArchGuard Co-mate 開發(fā)進(jìn)入深入?yún)^(qū),我們發(fā)現(xiàn)越來(lái)越多的通用模式。

在先前的文章里,我們總結(jié)了一系列的設(shè)計(jì)原則,在這篇文章里,我們將介紹 ArchGuard Co-mate 與參考架構(gòu)的實(shí)踐。

開始之前,可以先看看 ArchGuard Co-mate 的演示視頻:

LLM 應(yīng)用參考架構(gòu)

結(jié)合我們?cè)谝恍?LLM PoC 項(xiàng)目的經(jīng)驗(yàn),以及網(wǎng)上的公開資料,我重新匯制了一個(gè) LLM 應(yīng)用的參考架構(gòu)圖:

LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例

LLM 參考架構(gòu)

由 ChatGPT 解釋如下:

  • UI 層:用戶界面層,提供給用戶與語(yǔ)言模型交互的界面,可以是網(wǎng)頁(yè)、移動(dòng)應(yīng)用、命令行界面等。

  • 會(huì)話處理層:處理用戶與語(yǔ)言模型之間的交互會(huì)話,包括對(duì)用戶輸入的解析、對(duì)話管理、上下文維護(hù)等功能。

  • 數(shù)據(jù)審計(jì)層:負(fù)責(zé)對(duì)用戶數(shù)據(jù)進(jìn)行審計(jì)和保護(hù),防止數(shù)據(jù)泄露、濫用或被攻擊。這個(gè)層次也可以包括對(duì)模型的安全性和可信度進(jìn)行評(píng)估。

  • 操作編排層:這個(gè)層級(jí)可以管理和協(xié)調(diào)多個(gè)語(yǔ)言模型、工具、智能體的運(yùn)行,比如多個(gè)模型之間的調(diào)用、結(jié)果的融合等。它可以作為一個(gè)簡(jiǎn)單的流程引擎,將多個(gè)模型組合成復(fù)雜的工作流程。

  • LLM 增強(qiáng)層:這個(gè)層級(jí)可以對(duì)語(yǔ)言模型進(jìn)行額外的優(yōu)化和增強(qiáng),比如加速推理速度、提供相關(guān)上下文、提高模型的準(zhǔn)確性、支持特定的任務(wù)等。這個(gè)層級(jí)也可以包括對(duì)模型解釋性和可解釋性的增強(qiáng)。

  • LLM 層:最底層是語(yǔ)言模型本身,它是整個(gè)架構(gòu)的核心。它可以是一個(gè)基于深度學(xué)習(xí)的模型,比如 LSTM、Transformer 等,也可以是一個(gè)基于傳統(tǒng) NLP 技術(shù)的模型。在這個(gè)層級(jí),模型會(huì)接收輸入并輸出相應(yīng)的文本結(jié)果。

在 ArchGuard Co-mate 中,每一個(gè)層對(duì)應(yīng)了不同的設(shè)計(jì)理念/設(shè)計(jì)原則,如:

  • UI:用戶意圖導(dǎo)向設(shè)計(jì)

  • 會(huì)話處理層:語(yǔ)言接口

  • 操作編排層:語(yǔ)言接口 + 上下文工程

  • LLM 增強(qiáng)層:語(yǔ)言接口

  • LLM 層:原子能力映射

  • 數(shù)據(jù)審計(jì)層:(由于 ArchGuard 的場(chǎng)景限制,我們并沒(méi)有設(shè)計(jì)這一層。

圍繞于不同層級(jí)需要考慮不同的技術(shù)實(shí)踐。

LLM 應(yīng)用參考架構(gòu)示例:ArchGuard Co-mate

ArchGuard Co-mate 是一個(gè) LLM + 架構(gòu)設(shè)計(jì)與治理的探索性項(xiàng)目,旨在探索 LLM 作為架構(gòu)師助手的可能性,并圍繞 LLM 來(lái)探索架構(gòu)的未來(lái),諸如于本地語(yǔ)義分析、動(dòng)態(tài)上下文收集 API、架構(gòu)規(guī)范檢查等。

詳細(xì)代碼見(jiàn):https://github.com/archguard/co-mate

UI 層:用戶意圖導(dǎo)向設(shè)計(jì)

由于 Co-mate 并不是一個(gè)通用能力的系統(tǒng),所以我們希望限制用戶使用 ChatGPT 的能力。除此,在 UI 層上,我們嘗試去引導(dǎo)客戶來(lái)了解系統(tǒng)的能力。

諸如于,為了構(gòu)建目標(biāo)系統(tǒng)的上下文,我們需要先 clone 代碼、進(jìn)行基本的代碼分析,所以我們需要引導(dǎo)用戶:

LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例

Co-mate 引導(dǎo)用戶

隨后,根據(jù)用戶的輸入分析,以分析適合的系統(tǒng)功能是什么,返回給用戶來(lái)確認(rèn)。我們將其稱為:請(qǐng)求-生成 UI-確認(rèn)模式

LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例

Comate Action

而為了提供及時(shí)的返回給用戶,我們?cè)O(shè)計(jì)的 DSL 改為流式 DSL,即可以實(shí)時(shí)解析這個(gè) DSL,并及時(shí)響應(yīng)給用戶,以顯性的告訴用戶:系統(tǒng)正在處理您的請(qǐng)求。

會(huì)話處理層:本地小模型

在 Co-mate 中,我們?cè)诒镜匾肓?SentenceTransformer?來(lái)處理用戶的輸入,優(yōu)先在本地分析、匹配用戶的輸入,并處理。當(dāng)匹配到結(jié)果后直接調(diào)用本地的函數(shù),當(dāng)匹配不到結(jié)果時(shí)調(diào)用遠(yuǎn)端的處理函數(shù)來(lái)處理。

在原理上主要是參考了 GitHub Copilot、 Bloop 的實(shí)現(xiàn),通過(guò)本地的小模型來(lái)處理用戶的輸入,然后再通過(guò)遠(yuǎn)端的大模型來(lái)處理用戶的輸入。

在這里,需要用到兩個(gè)核心組件:

  • Onnx Runtime,是一個(gè)跨平臺(tái)推理和訓(xùn)練機(jī)器學(xué)習(xí)加速器。

  • HuggingFace Tokenizers,提供當(dāng)今最常用的分詞器的實(shí)現(xiàn),重點(diǎn)關(guān)注性能和多功能性。

從某種程度上來(lái)說(shuō),它們也算是 LLM 增強(qiáng)層的一部分,只是我嘗試用來(lái)在處理會(huì)話請(qǐng)求,以直接調(diào)用系統(tǒng)的功能,并返回給用戶。諸如于:

mapOf(
    ComateCommand.Intro to basicIntroCommand.map { semantic.embed(it) },
    ComateCommand.LayeredStyle to archStyleCommand.map { semantic.embed(it) },
    ComateCommand.ApiGovernance to apiGovernanceCommand.map { semantic.embed(it) },
    ComateCommand.ApiGen to apiGenCommand.map { semantic.embed(it) },
    ComateCommand.FoundationGovernance to foundationGovernanceCommand.map { semantic.embed(it) },
)

針對(duì)所有潛在的、相似的命令在本地進(jìn)行一次簡(jiǎn)單的檢索。

數(shù)據(jù)審計(jì)層:(暫時(shí)沒(méi)有)

由于懶,以及其它原因,我們暫時(shí)沒(méi)有添加這個(gè)功能。

操作編排層:函數(shù)即操作

而為了將上述的用戶指令轉(zhuǎn)換為對(duì)應(yīng)的系統(tǒng)指令,我們需要結(jié)合系統(tǒng)提供的函數(shù)功能,交由 LLM 來(lái)分析潛在的調(diào)用函數(shù)是哪一個(gè)。

于是,我們參考了 LangChain 的實(shí)現(xiàn),構(gòu)建了一個(gè)輕量級(jí)的 API,用來(lái)分析用戶的輸入。當(dāng)用戶輸入上述的 Introduce the system … 指令時(shí),我們將通過(guò)反射生成函數(shù)信息、并生成如下的 prompt,交由 LLM 分析:

Answer the following questions as best you can. You have access to the following tools:
introduce_system: introduce_system is a function to introduce a system.
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [introduce_system]
Action Input: the input to the action (parse from the user input, don't add other additional information)
// end in here. the tool will handle the rest
Begin!
Question: Introduce the following system: https://github.com/archguard/ddd-monolithic-code-sample

是的,這就是一個(gè)手動(dòng)版的 LangChain 實(shí)現(xiàn)。而每一個(gè) “函數(shù)” 在實(shí)現(xiàn)上其實(shí)是一個(gè)類 —— 為了能通過(guò)反射來(lái)創(chuàng)建出這個(gè)函數(shù),并實(shí)現(xiàn)對(duì)應(yīng)的接口調(diào)用。然后,將類名轉(zhuǎn)換為 snake_case 方式,如下代碼所示:

val defaultConstructor = clazz.declaredConstructors[0]
val dyFunction = defaultConstructor.newInstance(context) as DyFunction
clazz.name.toSnakeCase() to dyFunction

隨后,返回對(duì)應(yīng)的函數(shù)和輸入信息給用戶,由用戶決定是否調(diào)用這個(gè)函數(shù)。

另外一方面,在 ArchGuard Co-mate 里,我們通過(guò) DSL 來(lái)編排功能,而這個(gè) DSL 是由 Kotlin 編寫的,并且可以由 ChatGPT 生成的。所以,我們構(gòu)建了一個(gè)基于 DSL 的編排運(yùn)行時(shí):

// 初始化運(yùn)行時(shí)
val repl = KotlinInterpreter()
val mvcDslSpec = repl.evalCast<FoundationSpec>(InterpreterRequest(code = mvcFoundation))
// 從選擇的輸入中獲取 action
val action = ComateToolingAction.from(action.lowercase())
// 添加默認(rèn)的 DSL 規(guī)范,如 MVC 分層規(guī)范
if (action == ComateToolingAction.FOUNDATION_SPEC_GOVERNANCE) {
    comateContext.spec = mvcDslSpec
}

當(dāng)用戶沒(méi)有提供一個(gè)架構(gòu)規(guī)范相關(guān)的函數(shù)時(shí),我們將會(huì)生成一個(gè) foundation spec,諸如于默認(rèn)的 MVC 分層架構(gòu)的規(guī)范。隨后,從系統(tǒng)中構(gòu)建更多的上下文,再交由 LLM 去分析。

LLM 增強(qiáng)層:借助 LLM 構(gòu)建精準(zhǔn)、簡(jiǎn)潔的上下文

從意圖上來(lái)說(shuō),LLM 增強(qiáng)層所做的是,根據(jù)用戶的輸入匹配相關(guān)的信息,以構(gòu)建完整的上下文。對(duì)于知識(shí)型系統(tǒng)來(lái)說(shuō),通常會(huì)借助矢量數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。而在一些上下文確定的系統(tǒng)來(lái)說(shuō),也可以借助本地小模型在本地進(jìn)行計(jì)算。

諸如于 GitHub Copilot 會(huì)在本地,根據(jù)打開的 tab,來(lái)計(jì)算相關(guān)的代碼文件,而不需要提前的 index。畢竟,全局的代碼 index 會(huì)出現(xiàn)一個(gè)問(wèn)題,與當(dāng)前用戶關(guān)注的文件上下文出現(xiàn)不匹配性。所以,用戶打開的 tab,就是用戶潛在的上下文,以些進(jìn)行分析結(jié)果會(huì)比較準(zhǔn)確。

另外一個(gè)場(chǎng)景是 Bloop 會(huì)提前對(duì)代碼的信息(如類名、函數(shù)名)進(jìn)行 index,以在用戶輸入問(wèn)題時(shí),尋找與問(wèn)題匹配的代碼,再交由 LLM 進(jìn)行分析。

而在 Co-mate 中,我們是在本地預(yù)存一些潛在的用戶輸入指令,以降低對(duì)服務(wù)端的請(qǐng)求。

在另外一個(gè)層面上,我們還可以借助 LLM 來(lái)進(jìn)行對(duì)應(yīng)的上下文簡(jiǎn)化,特別是當(dāng)我們的上下文超長(zhǎng)時(shí),就可以以類似的方式來(lái)進(jìn)行精簡(jiǎn)。諸如于,在 Co-mate 中我們會(huì)借助 GPT 來(lái)拆解用戶的文檔,變?yōu)?DSL 的方式。

LLM 層:流式代理接口

在 LLM 層,除了關(guān)注于歷史數(shù)據(jù)之外,我們還需要關(guān)注于響應(yīng)反處理,并提供諸如于流式接口的代理等等。

小結(jié)

最后由 Notion AI 幫我們做一個(gè)小結(jié):

本文介紹了一個(gè) LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例。架構(gòu)包括 UI 層、會(huì)話處理層、操作編排層、LLM 增強(qiáng)層和 LLM 層。文章詳細(xì)介紹了每個(gè)層級(jí)的設(shè)計(jì)理念和技術(shù)實(shí)踐,并提供了示例代碼。其中,會(huì)話處理層使用本地小模型處理用戶輸入,操作編排層使用反射生成函數(shù)信息,LLM 增強(qiáng)層借助 LLM 構(gòu)建精準(zhǔn)、簡(jiǎn)潔的上下文,LLM 層提供流式代理接口等等。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504318.html

到了這里,關(guān)于LLM 應(yīng)用參考架構(gòu):ArchGuard Co-mate 實(shí)踐示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 華為mate60麒麟9000s的架構(gòu)體系
  • 大模型LLM在 Text2SQL 上的應(yīng)用實(shí)踐

    大模型LLM在 Text2SQL 上的應(yīng)用實(shí)踐

    一、前言 目前,大模型的一個(gè)熱門應(yīng)用方向Text2SQL,它可以幫助用戶快速生成想要查詢的SQL語(yǔ)句,再結(jié)合可視化技術(shù)可以降低使用數(shù)據(jù)的門檻,更便捷的支持決策。本文將從以下四個(gè)方面介紹LLM在Text2SQL應(yīng)用上的基礎(chǔ)實(shí)踐。 · Text2SQL概述 · LangChain基礎(chǔ)知識(shí) · 基于SQLDatabaseCha

    2024年01月16日
    瀏覽(23)
  • OpenAI LLM 應(yīng)用最佳實(shí)踐:提示詞工程、Fine-Tune、RAG

    OpenAI LLM 應(yīng)用最佳實(shí)踐:提示詞工程、Fine-Tune、RAG

    一、背景 本文介紹了 2023 年 11 月 OpenAI DevDay 中的一個(gè)演講,演講者為 John Allard 和 Colin Jarvis。演講中,作者對(duì) LLM 應(yīng)用落地過(guò)程中遇到的問(wèn)題和相關(guān)改進(jìn)方案進(jìn)行了總結(jié)。雖然其中用到的都是已知的技術(shù),但是進(jìn)行了很好的總結(jié)和串聯(lián),并探索了一條改進(jìn) LLM 應(yīng)用的切實(shí)可行

    2024年03月11日
    瀏覽(29)
  • 【架構(gòu)實(shí)戰(zhàn)】如何通過(guò) langchain 把LLM大模型能力集成到企業(yè)應(yīng)用中?

    本文為您提供關(guān)于如何通過(guò) langchain 把 LLM 大模型能力集成到企業(yè)應(yīng)用中的詳細(xì)實(shí)踐指南。在本文中,我將簡(jiǎn)要介紹 LLM 模型及其能力,并提供一種基于 langchain 的解決方案,以便企業(yè)可以將 LLM 模型集成到其應(yīng)用程序中。 LLM(Language Model)是一種基于深度學(xué)習(xí)的語(yǔ)言模型,它可

    2024年02月07日
    瀏覽(32)
  • Time-LLM:為時(shí)間序列預(yù)測(cè)重新編程LLM 探索Time-LLM的架構(gòu),并在Python中將其應(yīng)用于預(yù)測(cè)項(xiàng)目

    Time-LLM:為時(shí)間序列預(yù)測(cè)重新編程LLM 探索Time-LLM的架構(gòu),并在Python中將其應(yīng)用于預(yù)測(cè)項(xiàng)目

    參考資料:Time-LLM/ Reprogram an LLM for Time Series Forecasting.md 研究人員嘗試將自然語(yǔ)言處理(NLP)技術(shù)應(yīng)用于時(shí)間序列領(lǐng)域并非首次。 例如,Transformer架構(gòu)在NLP領(lǐng)域是一個(gè)重要的里程碑,但其在時(shí)間序列預(yù)測(cè)方面的表現(xiàn)一直平平,直到PatchTST的提出。 正如您所知,大型語(yǔ)言模型(

    2024年04月25日
    瀏覽(30)
  • 【AI 大模型】a16z:LLM 應(yīng)用程序的新興架構(gòu):Emerging Architectures for LLM Applications

    目錄 LLM 應(yīng)用程序的新興架構(gòu):Emerging Architectures for LLM Applications The stack 技術(shù)堆棧?

    2024年02月09日
    瀏覽(17)
  • 大模型 LLM RAG在 Text2SQL 上的應(yīng)用實(shí)踐

    大模型 LLM RAG在 Text2SQL 上的應(yīng)用實(shí)踐

    1. 前言 在上篇文章中「LLM Agent在Text2SQL應(yīng)用上的實(shí)踐」介紹了基于AI Agent來(lái)優(yōu)化LLM的Text2SQL轉(zhuǎn)換效果的實(shí)踐,除此之外我們還可以使用RAG(Retrieval-Augmented Generation)來(lái)優(yōu)化大模型應(yīng)用的效果。 本文將從以下4個(gè)方面探討通過(guò)RAG來(lái)優(yōu)化LLM的Text2SQL轉(zhuǎn)換效果。 1. RAG概述 2. 基于LangC

    2024年02月02日
    瀏覽(23)
  • AI大模型開發(fā)架構(gòu)設(shè)計(jì)(2)——AI繪畫技術(shù)架構(gòu)&應(yīng)用實(shí)踐

    AI大模型開發(fā)架構(gòu)設(shè)計(jì)(2)——AI繪畫技術(shù)架構(gòu)&應(yīng)用實(shí)踐

    1 AI繪畫整體流程 第一步:輸入 Prompt 提示詞: /mj 提示詞 第二步:文生圖(Text-to-Image)構(gòu)圖 第三步:圖片渲染 第四步:圖片展示 2 AI繪畫技術(shù)架構(gòu) 文生圖核心算法原理 把人類創(chuàng)造的內(nèi)容用一個(gè)高維的數(shù)學(xué)向量進(jìn)行表示 如果內(nèi)容到向量的“翻譯” 足夠合理 且能 代表內(nèi)容的特

    2024年01月25日
    瀏覽(71)
  • 整潔架構(gòu)在前端的設(shè)計(jì)思想與應(yīng)用實(shí)踐

    整潔架構(gòu)在前端的設(shè)計(jì)思想與應(yīng)用實(shí)踐

    對(duì)于每個(gè)軟件系統(tǒng),我們都可以通過(guò)行為和架構(gòu)兩個(gè)維度來(lái)體現(xiàn)它的實(shí)際價(jià)值。 行為是指系統(tǒng)實(shí)現(xiàn)的功能特性,一般是比較緊急的,需要按時(shí)上線。架構(gòu)就是指系統(tǒng)架構(gòu),是重要的,但是并不總是特別緊急。因此導(dǎo)致我們常常忽視系統(tǒng)的架構(gòu)價(jià)值,使得系統(tǒng)越來(lái)越難于理解、

    2024年02月08日
    瀏覽(17)
  • 緩存解析:從架構(gòu)設(shè)計(jì)到Redis應(yīng)用及最佳實(shí)踐

    在現(xiàn)代軟件架構(gòu)中,緩存是優(yōu)化數(shù)據(jù)檢索、提高應(yīng)用性能的關(guān)鍵組件。緩存的存儲(chǔ)位置多種多樣,每個(gè)位置針對(duì)特定的優(yōu)化目標(biāo)和需求。理解這些層級(jí)對(duì)于設(shè)計(jì)高效的系統(tǒng)至關(guān)重要。 瀏覽器緩存 :這是最接近用戶端的緩存層。瀏覽器緩存存儲(chǔ)了用戶經(jīng)常訪問(wèn)的靜態(tài)資源,如

    2024年01月22日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包