[LLM-Agents]淺析Agent工具使用框架:MM-ReAct

上文LLM-Agents]詳解Agent中工具使用Workflow提到MM-ReAct框架,通過結合ChatGPT 與視覺專家模型來解決復雜的視覺理解任務的框架。通過設計文本提示(prompt design),使得語言模型能夠接受、關聯和處理多模態信息,如圖像和視頻。展示了 MM-REACT 在不同場景下處理高級視覺理解任務的有效性,如多圖像推理、多跳文檔理解、視頻摘要和事件定位等。今天我們嘗試安裝使用一下,了解一下在LLM中如何使用工具。

1. 安裝

1.1下載工程

git clone https://github.com/microsoft/MM-REACT

1.2 安裝依賴

MM-ReAct是使用Poetry解決依賴包,所以除了安裝poetry,還需要額外安裝pillow、imagesize 和openai。其中openai需要限制版本為0.28,否則會有兼容性問題。

bash
復制代碼
curl -sSL https://install.python-poetry.org | python3 -
subl ~/.zshrc
export PATH="/Users/xxxx/.local/bin:$PATH"
source ~/.zshrc
pip install pillow imagesize
pip install openai==0.28

1.3 設置環境變量

因為該Repo使用了大量的Microsoft的云端API,需要注冊運行,此處為了了解運行過程,就不注冊了。但為了能夠基本運行,依然需要設置一些無效的環境變量。

bash
復制代碼
BING_SEARCH_URL="https://api.bing.microsoft.com/v7.0/search";
BING_SUBSCRIPTION_KEY=xxxx;
IMUN_CELEB_PARAMS=xxxx;
IMUN_CELEB_URL="https://yourazureendpoint.cognitiveservices.azure.com/vision/v3.2/models/celebrities/analyze";
IMUN_OCR_BC_URL="https://yourazureendpoint.cognitiveservices.azure.com/formrecognizer/documentModels/prebuilt-businessCard:analyze";
IMUN_OCR_INVOICE_URL="https://yourazureendpoint.cognitiveservices.azure.com/formrecognizer/documentModels/prebuilt-invoice:analyze";
IMUN_OCR_LAYOUT_URL="https://yourazureendpoint.cognitiveservices.azure.com/formrecognizer/documentModels/prebuilt-layout:analyze";
IMUN_OCR_PARAMS="api-version=2022-08-31";
IMUN_OCR_READ_URL="https://yourazureendpoint.cognitiveservices.azure.com/formrecognizer/documentModels/prebuilt-read:analyze";
IMUN_OCR_RECEIPT_URL="https://yourazureendpoint.cognitiveservices.azure.com/formrecognizer/documentModels/prebuilt-receipt:analyze";
IMUN_OCR_SUBSCRIPTION_KEY=xxx;
IMUN_PARAMS="visualFeatures=Tags,Objects,Faces";
IMUN_PARAMS2="api-version=2023-02-01-preview&model-version=latest&features=denseCaptions";
IMUN_SUBSCRIPTION_KEY=xxxx;
IMUN_SUBSCRIPTION_KEY2=xxxx;
IMUN_URL="https://yourazureendpoint.cognitiveservices.azure.com/vision/v3.2/analyze";
IMUN_URL2="https://yourazureendpoint.cognitiveservices.azure.com/computervision/imageanalysis:analyze"

2. 運行

為了使用本地安裝的大模型,需要修改兩個文件。

  • langchain/llms/openai.py
  • sample.py

2.1 修改sample.py

替換代碼中的AzureOpenAI為OpenAI,包括import。

python
復制代碼
llm = OpenAI(model_name="gpt-3.5-turbo", chat_completion=True,openai_api_base="http://localhost:11434/v1",openai_api_key="sk", temperature=0, max_tokens=MAX_TOKENS,openai_log="debug")

2.2 修改langchain/llms/openai.py

由于自帶的langchain中,可能版本比較老,不支持設置openai_api_base ,因此需要增加一點配置代碼。

bash
復制代碼
加一點配置代碼。
diff --git a/langchain/llms/openai.py b/langchain/llms/openai.py
index 4180165..70711c1 100644
--- a/langchain/llms/openai.py
+++ b/langchain/llms/openai.py
@@ -115,6 +115,8 @@ class BaseOpenAI(BaseLLM, BaseModel):"""Whether to stream the results or not."""chat_completion: bool = False"""Whether to use the chat client"""
+    openai_api_base: str = ""
+    openai_log: str = "debug"class Config:"""Configuration for this pydantic object."""
@@ -146,7 +148,9 @@ class BaseOpenAI(BaseLLM, BaseModel):openai_api_key = get_from_dict_or_env(values, "openai_api_key", "OPENAI_API_KEY")
-        openai_api_version = values.get("openai_api_version") or os.environ.get("OPENAI_API_VERSION") 
+        openai_api_version = values.get("openai_api_version") or os.environ.get("OPENAI_API_VERSION")
+        openai_api_base = values.get("openai_api_base") or os.environ.get("OPENAI_API_BASE")
+        openai_log = values.get("openai_log") or os.environ.get("OPENAI_LOG")chat_completion = values.get("chat_completion") or Falsevalues["chat_completion"] = chat_completiontry:
@@ -155,6 +159,10 @@ class BaseOpenAI(BaseLLM, BaseModel):openai.api_key = openai_api_keyif openai_api_version:openai.api_version = openai_api_version
+            if openai_api_base:
+                openai.api_base = openai_api_base
+            if openai_log:
+                openai.log = openai_logif chat_completion:values["client"] = openai.ChatCompletionelse:

2.3 運行

代碼運行入口為sample.py本身較為簡單,初始化OpenAI,Tool,Agent和開始對話。可以看到除了定義一堆Azure Cloud的工具之外,還自定義了一個edit_photo。

python
復制代碼
def edit_photo(query: str) -> str:....return "Here is the edited image " + endpoint + response.json()["edited_image"]# these tools should not step on each other's toes
tools = [...Tool(name = "Photo Editing",func=edit_photo,description=("A wrapper around photo editing. ""Useful to edit an image with a given instruction.""Input should be an image url, or path to an image file (e.g. .jpg, .png).")),
]

默認輸入圖像為一個表格,我們將圖像改為科比。 開始運行 python sample.py 輸出,為了閱讀體驗,刪除中間的一些輸出。

arduino
復制代碼
> Entering new AgentExecutor chain...
message='Request to OpenAI API' method=post path=http://localhost:11434/v1/chat/completions
...1. There is a new image in the inputAssistant, please detect objects in this image: https://microsoft-cognitive-service-mm-react.hf.space/file=/tmp/b008c4062adec3b7295dc10fc04305813b2dec9e/celebrity.png
python-BaseException
xxx
...無法連接到Microsoft...

由于無法連接Microsoft云端服務,因此沒法繼續運行下去,如果連接上了會輸出

kotlin
復制代碼
AI: 1. There is an image in the input
AI: 1. This is an image of a basketball player in a yellow jersey holding a basketball
2. There are two faces of men detected in this image.
3. Facial recognition can detect celebrity names for these faces
AI: 1. The celebrities detected are Paul Pierce and Kobe Bryant
2. They are likely the basketball players in the image
To summerize, this is an image of basketball players Paul Pierce and Kobe Bryant in a game. Paul Pierce is in a yellow jersey holding a basketball.

總結

總的來說這篇文章中對工具的使用有點過時,收獲不是很大,有點浪費時間,尤其是Prompt設計沒有啥亮點,并且代碼有點繞。要是現在使用Function Calling ,那么就是將函數描述給到LLM,然后設計ReAct的Few Shot ,外加一個For Loop串起整個流程。 后面分析了HuggingGPT,它對于工具使用好多了。

如何系統的去學習大模型LLM ?

作為一名熱心腸的互聯網老兵,我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在人工智能學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。

但苦于知識傳播途徑有限,很多互聯網行業朋友無法獲得正確的資料得到學習提升,故此將并將重要的 AI大模型資料 包括AI大模型入門學習思維導圖、精品AI大模型學習書籍手冊、視頻教程、實戰學習等錄播視頻免費分享出來

😝有需要的小伙伴,可以V掃描下方二維碼免費領取🆓

在這里插入圖片描述

一、全套AGI大模型學習路線

AI大模型時代的學習之旅:從基礎到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型報告合集

這套包含640份報告的合集,涵蓋了AI大模型的理論研究、技術實現、行業應用等多個方面。無論您是科研人員、工程師,還是對AI大模型感興趣的愛好者,這套報告合集都將為您提供寶貴的信息和啟示。

img

三、AI大模型經典PDF籍

隨著人工智能技術的飛速發展,AI大模型已經成為了當今科技領域的一大熱點。這些大型預訓練模型,如GPT-3、BERT、XLNet等,以其強大的語言理解和生成能力,正在改變我們對人工智能的認識。 那以下這些PDF籍就是非常不錯的學習資源。

img

在這里插入圖片描述

四、AI大模型商業化落地方案

img

階段1:AI大模型時代的基礎理解

  • 目標:了解AI大模型的基本概念、發展歷程和核心原理。
  • 內容
    • L1.1 人工智能簡述與大模型起源
    • L1.2 大模型與通用人工智能
    • L1.3 GPT模型的發展歷程
    • L1.4 模型工程
      - L1.4.1 知識大模型
      - L1.4.2 生產大模型
      - L1.4.3 模型工程方法論
      - L1.4.4 模型工程實踐
    • L1.5 GPT應用案例

階段2:AI大模型API應用開發工程

  • 目標:掌握AI大模型API的使用和開發,以及相關的編程技能。
  • 內容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具類框架
      - L2.1.4 代碼示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架應用現狀
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架與Thought
      - L2.2.5 Prompt框架與提示詞
    • L2.3 流水線工程
      - L2.3.1 流水線工程的概念
      - L2.3.2 流水線工程的優點
      - L2.3.3 流水線工程的應用
    • L2.4 總結與展望

階段3:AI大模型應用架構實踐

  • 目標:深入理解AI大模型的應用架構,并能夠進行私有化部署。
  • 內容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的設計理念
      - L3.1.2 Agent模型框架的核心組件
      - L3.1.3 Agent模型框架的實現細節
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的應用場景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特點
      - L3.3.2 ChatGLM的開發環境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特點
      - L3.4.2 LLAMA的開發環境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介紹

階段4:AI大模型私有化部署

  • 目標:掌握多種AI大模型的私有化部署,包括多模態和特定領域模型。
  • 內容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的關鍵技術
    • L4.3 模型私有化部署的實施步驟
    • L4.4 模型私有化部署的應用場景

學習計劃:

  • 階段1:1-2個月,建立AI大模型的基礎知識體系。
  • 階段2:2-3個月,專注于API應用開發能力的提升。
  • 階段3:3-4個月,深入實踐AI大模型的應用架構和私有化部署。
  • 階段4:4-5個月,專注于高級模型的應用和部署。
這份完整版的大模型 LLM 學習資料已經上傳CSDN,朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費

😝有需要的小伙伴,可以Vx掃描下方二維碼免費領取🆓

在這里插入圖片描述

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

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

相關文章

winform在一個類中調用窗體的控件和方法的兩個方式

第一: 在類中創建窗體對象的方式,通過對象調用控件或方法 eg: Form1 form1 new Form1(); form1.Button; //調用控件 form1.Method(); //調用方法 要注意,對應控件的Modifiers屬性要設置成public . 第二: 在窗體Form類下定義靜態變量(例如:form1)&…

Multi-Attention Transformer for Naturalistic Driving Action Recognition

標題:用于自然駕駛行為識別的多注意力Transformer 源文鏈接:https://openaccess.thecvf.com/content/CVPR2023W/AICity/papers/Dong_Multi-Attention_Transformer_for_Naturalistic_Driving_Action_Recognition_CVPRW_2023_paper.pdfhttps://openaccess…

linux創建私有docker倉庫以及推拉

創建私有倉庫: 1.下載 registry鏡像。 2.執行 registry 鏡像(#為注釋內容,\為換行): docker run -d \# --restartalways每次都是開機自動啟動--restartalways \# --name registry 表示容器名--name registry \# 表示…

java讀取shp文件,獲取點位

Testvoid contextLoads() {System.out.println(System.currentTimeMillis());//1716516228057 1716516228798String zipFilePath "C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\新中心范圍SHP導入模板.zip";String destDir &quo…

【Muduo】TcpServer類

TcpServer統領之前所有的類,是用戶直接使用的類。它通過ThreadPool管理所有的loopthread,保存所有的TcpConnection,保存用戶提供的各種回調函數并向TcpConnection的Channel中注冊回調。它負責監聽指定的端口,并接受來自客戶端的連…

ZeRO-3、模型并行、流水線并行適用情況

ZeRO-3 適用場景:參數量大但計算量相對均衡的情況。 主要特點: 參數分片:將模型參數、優化器狀態和梯度在多個 GPU 上進行分片。顯存優化:顯著減少每個 GPU 上的顯存占用,使得可以在較小的 GPU 上訓練更大的模型。 …

思科模擬器--06.單臂路由升級版--多端路由互連實驗--24.5.20

實驗圖紙如下: 第0步: 先放置六臺個人電腦,一臺交換機和一臺2911路由器(千兆路由器(G0開頭的)) 接著,用直通線將 PC0的F0,PC1的F0分別和交換機的F0/0, F0/1連接 交換機的F0/3和路由器的G0/0連接 PC2的F0,PC3的F0分別和交換機的F0/4, F0/5連接 交換機的F0/6和路由器的G0/1…

電腦連接愛快iKuai軟路由之后,網卡沒有正常獲取到IP,無法訪問愛快路由管理頁?

前言 上一次咱們說到在愛快控制臺上設置/辨認lan口,設置完成之后,其他的一些設置就需要在愛快iKuai軟路由的管理頁面上設置。 有些小伙伴會發現,當電腦連接上愛快軟路由的lan口之后,電腦并沒有正常獲取到ip,導致無法訪…

JavaScript表達式和運算符

表達式 表達式一般由常量、變量、運算符、子表達式構成。最簡單的表達式可以是一個簡單的值。常量或變量。例:var a10 運算符 運算符一般用符號來表示,也有些使用關鍵字表示。運算符由3中類型 1.一元運算符:一個運算符能夠結合一個操作數&…

【Arthas】阿里的線上jvm監控診斷工具的基本使用

關于對運行中的項目做java監測的需求下,Arthas則是一個很好的解決方案。 我們可以用來 1.監控cpu 現成、內存、堆棧 2.排查cpu飚高 造成原因 3.接口沒反應 是否死鎖 4.接口慢優化 5.代碼未按預期執行 是分支不對 還是沒提交? 6.線上低級錯誤 能不能不重啟…

STL--set和multiset集合

set和multiset會根據特定的排序準則&#xff0c;自動將元素排序。兩者不同之處在于multiset 允許元素重復而 set 不允許。如下圖: 使用set或multiset&#xff0c;必須先包含頭文件: #include <set>上述兩個類型都被定義為命名空間std內的class template: namespace std…

亞馬遜自養號測評:深入解析與搭建要求

在亞馬遜這電商平臺上&#xff0c;商品的評價對于賣家來說至關重要。為了提升商品的曝光率、排名、權重和銷量&#xff0c;賣家們紛紛采用各種推廣方式&#xff0c;其中&#xff0c;亞馬遜自養號測評成為了越來越多賣家選擇的一種有效方式。 亞馬遜自養號測評&#xff0c;顧名…

Android Retrofit 封裝模版

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、加上網絡訪問的權限二、引入依賴三、由API生成JavaBean四、封裝Retrofit五、調用 一、加上網絡訪問的權限 <uses-permission android:name"android.p…

分布式事務——9種解決方案的原理與分類

目錄 一、概要1. 分布式事務的概念2. 分布式事務解決方案分類 二、常見的分布式事務解決方案1. 基礎的 2PC&#xff08;二階段提交&#xff09;1.1 核心思想1.2 簡介1.3 主要特點1.3.1 優點1.3.2 缺點 2. 基礎的 3PC&#xff08;三階段提交&#xff09;2.1 核心思想2.2 簡介2.3…

C語言/數據結構——每日一題(有效的括號)

一.前言 如果想要使用C語言來解決這道題——有效的括號&#xff1a;https://leetcode.cn/problems/valid-parentheses/description/我們必須要借用上一篇我們所講的內容——棧的實現&#xff1a;https://blog.csdn.net/yiqingaa/article/details/138923750?spm1001.2014.3001.…

go routing 之 gorilla/mux

1. 背景 繼續學習 go 2. 關于 routing 的學習 上一篇 go 用的庫是&#xff1a;net/http &#xff0c;這次我們使用官方的庫 github.com/gorilla/mux 來實現 routing。 3. demo示例 package mainimport ("fmt""net/http""github.com/gorilla/mux&…

react實現把pc網站快捷添加到桌面快捷方式

文章目錄 1. 需求2. 實現效果3. 核心邏輯4. 完整react代碼 1. 需求 這種需求其實在國外一些游戲網站和推廣網站中經常會用到&#xff0c;目的是為了讓客戶 快捷方便的保存網站到桌面 &#xff0c;網站主動盡量避免下次找不到網站地址了&#xff0c;當然精確的客戶自己也可以使…

Python 字符串中運算符號可運行

使用eval() re {\n "path": "/sms/sendMsg",\n "data": {\n "mobile": "12345678901",\n "signCode": "短信簽名",\n "templateCode": "SMS_yyyy…

Oracle遞歸查詢筆記

目錄 一、創建表結構和插入數據 二、查詢所有子節點 三、查詢所有父節點 四、查詢指定節點的根節點 五、查詢指定節點的遞歸路徑 六、遞歸子類 七、遞歸父類 一、創建表結構和插入數據 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…

解析Oracle文件頭內容

保存在Oracle數據文件頭中的信息很豐富&#xff0c;通常只要查詢DATAFILE_HEADER視圖就可以獲得數據文件頭中的信息。但其在數據文件頭中的具體位置&#xff0c;Oracle一直未公開過。所幸的是DBA們對數據文件頭的研究孜孜不倦&#xff0c;其研究成果在網上也是隨處可見。雖然這…