LLM+Agent技術

💡 Agent可以理解為某種能自主理解、規劃決策、執行復雜任務的智能體Agent 是讓 LLM 具備目標實現的能力,并通過自我激勵循環來實現這個目標。它可以是并行的(同時使用多個提示,試圖解決同一個目標)和單向的(無需人類參與對話)。

Agent = LLM+Planning+Feedback+Tool use

決策流程:感知(Perception)→ 規劃(Planning)→ 行動(Action)

Agent創建一個目標或主任務后,主要分為以下三個步驟:

  1. 獲取第一個未完成的任務
  2. 收集中間結果并儲存到向量數據庫中
  3. 創建新的任務,并重新設置任務列表的優先級

AI Agent主流框架

1. 微軟的Jarvis

step1: 規劃:利用好LLM 的推理規劃能力,對用戶輸入進行任務拆解;

step2: 決策:利用LLM的決策能力,判斷每個拆解的子任務,我們可以用什么方案解決

step3: 行動:通過決策得出的推薦工具(API,model,插件)去解決每個問題

step4: 總結輸出最終解決方案和結果給用戶

缺點:需要頻繁調用LLM,token數量巨大帶來高昂成本

2 微軟的promptFlow

step1: 任務拆分,可以是人工拆分,也可以是LLM拆分,自定義~

反正從輸入到輸出就是一個任務流。我們只需要定義好每個步驟的輸入和輸出是什么。

step2: 每個task使用LLM去決策如何執行,也可以人工實現邏輯,也可以使用成熟插件,自定義~

step3:總結輸出給用戶

整個思路就是每個步驟都可控,輸入,輸出以及f(x)是什么都是我自己定義,我們通過評估使用LLM或者按傳統思路實現邏輯,都很靈活。最好這個任務流可以可視化,方便我們理清思路。

3. Langchain

Langchain也是AI Agenthttps://github.com/langchain-ai/langchain。langchain開發的初衷是讓開發者能夠快速的構建一個LLM原型應用。Langchain主要組件有:

Models:模型,各個類型的LLM模型集成,比如GPT-4

Prompts:提示,在提示詞中引入變量以適應用戶輸入,包括提示模版管理,優化和序列化。

Memory:記憶,用來保存模型交互的上下文

Indexes:索引,用來結構化文檔,外掛知識庫就是索引的一個功能應用

Chains:鏈, 對模型的一系列組件工具的鏈式調用,以上一個輸出為下一個輸入的一部分。

Agents: 代理,決定模型采取哪些行動,應該選哪個工具,執行并觀察流程

Multi-Agent:多個Agent共享一部分記憶,自主分工相互協作。

對于Langchain我們用的最多的就是利用他進行外掛知識庫,但是這其實知識Indexes這個組件的應用,Langchain的功能遠不止此;其中Chains的思路其實就是promptFlow;Agents里面的AgentAction就是Jarvis的思路。

缺點:Langchain才是功能和工具最齊全的框架,但是Langchain功能太多,導致整個框架太重,極其不靈活;大家通常只用他的一個組件功能

相關案例

斯坦福的虛擬小鎮

代碼已開源:https://github.com/joonspk-research/generative_agents
一個agent就是一個虛擬人物,25個agents之間的故事

架構

記憶(Memory)

短期記憶:在上下文中(prompt)學習。它是短暫有限的,因為它受到Transformer的上下文窗口長度的限制。

長期記憶:代理在查詢時可以注意到的外部向量存儲,可以通過快速檢索訪問。

反思(Reflection)

反思是由代理生成的更高級別、更抽象的思考。因為反思也是一種記憶,所以在檢索時,它們會與其他觀察結果一起被包含在內。反思是周期性生成的;當代理感知到的最新事件的重要性評分之和超過一定閾值時,就會生成反思。

  • 讓代理確定要反思什么
  • 生成的問題作為檢索的查詢

計劃(Plan)

計劃是為了做更長時間的規劃。像反思一樣,計劃也被儲存在記憶流中(第三種記憶),并被包含在檢索過程中。這使得代理能夠在決定如何行動時,同時考慮觀察、反思和計劃。如果需要,代理可能在中途改變他們的計劃(即響應,reacting)。

Huggingface:Transformers Agents 發布

它在 Transformers 的基礎上提供了一個自然語言 API,來 “讓 Transformers 可以做任何事情”。

這其中有兩個概念:一個是 Agent (代理),另一個是 Tools (工具),我們定義了一系列默認的工具,讓代理去理解自然語言并使用這些工具。

  • 代理:這里指的是大語言模型 (LLM),你可以選擇使用 OpenAI 的模型 (需要提供密鑰),或者開源的 StarCoder 和 OpenAssistant 的模型,我們會提示讓代理去訪問一組特定的工具。
  • 工具:指的是一個個單一的功能,我們定義了一系列工具,然后使用這些工具的描述來提示代理,并展示它將如何利用工具來執行查詢中請求的內容。

目前在 transformers 中集成的工具 包括:文檔問答、文本問答、圖片配文、圖片問答、圖像分割、語音轉文本、文本轉語音、零樣本文本分類、文本摘要、翻譯等。

總結

觀點1:Agent特點

  • Agent本身是類似于DM的升級版,能夠充分利用對環境的感知,進行決策規劃,充分調用LLM的能力。
  • 私有化部署時,集成到企業工作流中,面臨的邊際成本很難降低,且沒有通用性。
  • Agent需要調用外部工具,調用工具最好的方式就是輸出類Makedown代碼

由LLM大腦輸出一種可執行的代碼,像是一個語義分析器,由它理解每句話的含義,然后將其轉換成一種機器指令,再去調用外部的工具來執行或生成答案。盡管現在的 Function Call 形式還有待改進,但是這種調用工具的方式是非常必要的,是解決幻覺問題的最徹底的手段。

觀點2:Agent落地的瓶頸

Agent本身用到兩部分能力,一部分是由LLM作為其“智商”或“大腦”的部分,另一部分是基于LLM,其外部需要有一個控制器,由它去完成各種Prompt,如通過檢索增強Memory,從環境獲得Feedback,怎樣做Reflection等。

Agent既需要大腦,也要外部支撐

  • LLM本身的問題:自身的“智商”不夠,可進行LLM升級為GPT-5;Prompt的方式不對,問題要無歧義。
  • 外部工具:系統化程度不夠,需要調用外部的工具系統,這是一個長期待解決的問題。

通用AGI:現階段Agent的落地,除了LLM本身足夠通用之外,也需要實現一個通用的外部邏輯框架。不只是“智商”問題,還需要如何借助外部工具,從專用抵達通用——而這是更重要的問題。

解決特定場景的特定問題:將LLM作為一個通用大腦,通過Prompt設計為不同的角色,以完成專用的任務,而非普適性的應用。但是面臨的關鍵問題,即Feedback將成為Agent落地實現的一大制約因素,對于復雜的Tools應用,成功概率會很低。

觀點3:多模態在Agent的發展

多模態只能解決Agent感知上的問題,而無法解決認知的問題。

多模態是必然趨勢,未來的大模型必然是多模態的大模型,未來的Agent也一定是多模態世界中的Agent。

觀點4:Agent從專用到通用的實現路徑

假設Agent最終將落地于100種不同的環境,在目前連最簡單的外部應用都難以實現的前提下,最終能否抽象出一個框架模型來解決所有外部通用性問題?

先將某一場景下的Agent做到極致——足夠穩定且魯棒,再逐步將它變成通用框架,也許這是實現通用Agent的路徑之一。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44647.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

14-63 劍和詩人37 - 分布式系統中的數據訪問設計

?? 在分布式系統中,跨服務和數據庫提供統一、可靠的數據訪問至關重要,但又極具挑戰性。微服務和數據庫的拓撲結構為分布、緩存、復制和同步帶來了復雜性。 讓我們探索有助于解決這些復雜性并簡化構建強大、高性能分布式系統的常見數據訪問模式。 概述 我們將通過示例介紹…

探索AI數字人的開源解決方案

引言 隨著人工智能(AI)技術的迅猛發展,AI數字人(或虛擬人)正逐漸走進我們的生活,從虛擬助手到虛擬主播,再到虛擬客服,AI數字人在各個領域展現出巨大的潛力。開源解決方案的出現&…

解碼生命語言:Transformer模型在基因序列分析的突破性應用

解碼生命語言:Transformer模型在基因序列分析的突破性應用 基因序列分析是現代生物學和醫學研究的基石,它涉及對DNA或RNA序列的識別、比較和解釋。隨著深度學習技術的興起,特別是Transformer模型的出現,基因序列分析領域迎來了新…

[vite] Pre-transform error: Cannot find package pnpm路徑過長導致運行報錯

下了套vue3的代碼,執行pnpm install初始化,使用vite啟動,啟動后訪問就會報錯 報錯信息 ERROR 16:40:53 [vite] Pre-transform error: Cannot find package E:\work\VSCodeProjectWork\jeecg\xxxxxxxxx-next\xxxxxxxxx-next-jeecgBoot-vue3\…

AC修煉計劃(AtCoder Regular Contest 180) A~C

A - ABA and BAB A - ABA and BAB (atcoder.jp) 這道題我一開始想復雜了,一直在想怎么dp,沒注意到其實是個很簡單的規律題。 我們可以發現我們住需要統計一下類似ABABA這樣不同字母相互交替的所有子段的長度,而每個字段的的情況有&#xff…

Postman中的API安全堡壘:全面安全性測試指南

🛡? Postman中的API安全堡壘:全面安全性測試指南 在當今的數字化世界中,API安全性是保護數據和系統不可或缺的一環。Postman作為API開發和測試的領先工具,提供了多種功能來幫助開發者進行API安全性測試。本文將深入探討如何在Po…

交互式AI的新紀元:Transformer模型的革新應用

交互式AI的新紀元:Transformer模型的革新應用 隨著人工智能技術的不斷進步,交互式人工智能(AI)逐漸成為提升用戶體驗的關鍵技術。Transformer模型,以其卓越的處理序列數據的能力,已成為推動交互式AI發展的…

利用 AI 解放雙手:把“賈維斯”帶進現實 | 開源專題 No.64

Significant-Gravitas/AutoGPT Stars: 160k License: MIT AutoGPT 是開源 AI 代理生態系統的核心工具包。 提供構建、測試和委托 AI 代理的工具。AutoGPT 處于 AI 創新前沿,提供文檔、貢獻指南以及快速開始創建自己的代理。包含強大的組件如 Forge 和 Benchmark&…

【教程】Hexo 部署到 Github Page 后,自定義域名失效的問題

目錄 前言&問題描述解決方案細節 前言&問題描述 近期給 Github Page 上托管的靜態網站映射了自定義域名(aiproducthome.top),之后發現每次更新并部署 hexo 到 Github Page (hexo d)后就會出現自定義域名失效的…

探索SQL Server查詢優化的奧秘:數據庫查詢優化器深度解析

探索SQL Server查詢優化的奧秘:數據庫查詢優化器深度解析 在數據庫管理的世界里,查詢優化器是確保查詢效率的關鍵組件。SQL Server的查詢優化器采用先進的算法,將用戶的SQL查詢轉換成高效的執行計劃。本文將深入探討SQL Server查詢優化器的工…

高效利用iCloud:全面指南與技術深度解析

引言 在數字化時代,數據的同步、備份和跨設備協作變得尤為重要。蘋果公司的iCloud服務憑借其強大的云存儲和同步功能,為用戶提供了一個無縫的數據管理解決方案。本文將全面介紹如何高效利用iCloud,幫助用戶更好地管理數據、提升工作效率&…

Python如何進行游戲開發?

使用Python進行游戲開發可以通過以下幾個步驟來實現。Python有多個游戲開發框架和庫,最常用的是Pygame。下面是一個簡要的指南,介紹如何使用Pygame進行游戲開發。 安裝Pygame 首先,你需要安裝Pygame庫。你可以使用pip進行安裝: …

前端如何去看藍湖

首先加入團隊,在內容中我們可以看到點擊圖片,右邊出現的圖 包含了像素甚至有代碼,我們可以參考這個代碼。 那么在使用之前我們需要調整好像素,例如我們的像素寬為375,不用去管高,然后這個寬度我們可以去自…

QT——Excel實現自繪區域選擇邊框

文章目錄 一、自繪區域邊框1.1、效果展示2.2、問題整理2.2.1、重繪單元格選擇區2.2.2、選擇區域的大小 一、自繪區域邊框 1.1、效果展示 單選 多選 2.2、問題整理 2.2.1、重繪單元格選擇區 誤區: 繼承QStyledItemDelegate重寫paint,測試發現只能在單元格內繪制。 通過繼…

圖鳥UI框架在uni-app多端應用開發中的實踐與應用

摘要: 隨著移動互聯網的蓬勃發展,跨平臺應用開發已成為行業趨勢。本文將探討圖鳥UI框架如何在uni-app開發環境下助力開發者高效構建多端應用,并通過具體案例展示其在實際項目中的應用效果。 一、引言 在移動應用開發領域,跨平臺…

Java | Leetcode Java題解之第228題匯總區間

題目&#xff1a; 題解&#xff1a; class Solution {public List<String> summaryRanges(int[] nums) {List<String> ans new ArrayList<>();for (int i 0, j, n nums.length; i < n; i j 1) {j i;while (j 1 < n && nums[j 1] num…

性能飆升的藝術:SQL Server數據庫優化的最佳實踐

性能飆升的藝術&#xff1a;SQL Server數據庫優化的最佳實踐 在企業級應用中&#xff0c;數據庫性能往往是決定應用響應速度和用戶體驗的關鍵因素。SQL Server作為業界領先的關系型數據庫管理系統&#xff0c;提供了一系列的工具和策略來分析和優化數據庫性能。本文將詳細介紹…

Android 通用視頻組件開發

背景 目前車機的多媒體App都是各自維護自己的UI視圖及基礎邏輯&#xff0c;會有不少重復代碼。并且大多數媒體App都會和本地多媒體有交互&#xff0c;所有媒體App都會接入到MediaCenter&#xff0c;沒有統一的接口會導致接入適配成本和維護成本比較高。所以希望能夠抽出公共基…

分享一個項目模板electron+vue+ts+vite

分享一個項目模板electronvuetsvite GitHub - xiugou798/electron-vue-ts-vite-template: electron-vue-ts-vite-templateelectron-vue-ts-vite-template. Contribute to xiugou798/electron-vue-ts-vite-template development by creating an account on GitHub.https://gith…

linux之內存泄漏分析

內存泄漏通常是指程序中動態分配的內存沒有被適時釋放&#xff0c;導致這部分內存在程序的生命周期內一直無法被再次利用。內存泄漏不會直接導致程序崩潰&#xff0c;所以通常不會生成core dump文件。然而&#xff0c;如果程序因為其他原因崩潰&#xff0c;那么core dump文件可…