[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 False
         values["chat_completion"] = chat_completion
         try:
@@ -155,6 +159,10 @@ class BaseOpenAI(BaseLLM, BaseModel):
             openai.api_key = openai_api_key
             if 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_log
             if chat_completion:
                 values["client"] = openai.ChatCompletion
             else:

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 input
 Assistant, 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.mfbz.cn/a/638482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QQ技术导航源码附带交易系统

网站功能 QQ登录 友联自助交换 友情链接交易功能 多功能搜索 ico小图标本地化 网站图片本地化 蜘蛛日志 文章评论 网站评论 自助链接匿名提交站点,添加友链访问网站自动审核通过 VIP 会员等级 VIP 付费升级 单个文章或者站点付费快审 多背景图片可自定义背景图片…

【数据结构】第七节:堆

个人主页: 深情秋刀鱼-CSDN博客 数据结构专栏:数据结构与算法 源码获取:数据结构: 上传我写的关于数据结构的代码 (gitee.com) ​ 目录 一、堆 1.堆的概念 2.堆的定义 二、堆的实现 1.初始化和销毁 2.插入 向上调整算法 3.删除 向下调整算法…

9.STL中list的常见操作(图文并茂)

目录 1.list的介绍及使用 1.1.list的构造 1.2 list iterator的使用 1.3. list capacity 1.4.list modifiers 1.5.list的迭代器失效 1.list的介绍及使用 list介绍 ,可以通过以下图直观的感受到 vector 和 list 的区别 Vector 插入代价高,但便于排…

LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题

这些问题可能与硬件、软件或通信协议有关。以下是详细的原因分析和可能的解决方案: 一、硬件原因 串口线缆或接口问题: 由于长时间使用,串口线缆可能出现接触不良或损坏。接口松动也可能导致通讯中断。 解决方案:检查并更换串口…

【区块链】智能合约漏洞测试

打开Ganache vscode打开智能合约漏洞工程 合约内容 pragma solidity >0.8.3;contract EtherStore {mapping(address > uint) public balances;function deposit() public payable {balances[msg.sender] msg.value;emit Balance(balances[msg.sender]);}function with…

完成商品属性分组和商品属性关联维护

文章目录 1.前端页面搭建1.复制attrgroup-attr-relation.vue到src/views/modules/commodity下2.加入超链接和引入组件 src/views/modules/commodity/attrgroup.vue1.加入超链接2.引入组件 3.数据池加入变量4.使用组件1.引用组件2.添加方法3.测试,点击关联&#xff0…

【笔记】Qt 按钮控件介绍(QPushButton,QCheckBox,QToolButton)

文章目录 QAbstractButton 抽象类(父类)QAbstractButton 类中的属性QAbstractButton 类中的函数QAbstractButton 类中的信号QAbstractButton 类中的槽 QPushButton 类(标准按钮)QPushButton 类中的属性QPushButton 类中的函数、槽 QCheckBox 类(复选按钮)QCheckBox 类的属性QCh…

【全部更新完毕】2024电工杯A题数学建模详细思路代码文章分享

A 题:园区微电网风光储协调优化配置 摘要 在全球范围内,气候变化和环境污染问题日益严重,减少碳排放和实现可持续发展成为各国的共同目标。新能源,尤其是风能和光伏发电,因其清洁、可再生的特性,正在全球范…

国产化服务器设计 原理图:905-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSIC V)为主板,扩展6-8路PCIe3.0X4计算卡; 计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI&#x…

C++语言学习(五)—— 类与对象(一)

目录 一、类类型的定义 二、类成员的访问控制 2.1 什么是"类内"和"类外" 2.2 对于访问控制属性的说明 三、类类型的使用 3.1 进行抽象 3.2 声明类 3.3 实现类 3.4 使用类 四、构造函数的引入 五、析构函数的引入 六、重载构造函数的引入 6.1 …

权限维持--windows

隐藏文件 ①文件属性隐藏 如何排查: 使用dir命令无法看到有特殊属性的文件需使用/a ②真隐藏 相当于给原本的文件增加系统文件属性、存档文件属性、只读文集属性、隐藏文件属性 如何排查: 取消受保护的操作系统文件 ③利用ADS隐藏 使用数据流 echo &…

我把PostgreSQL最核心的插件撸干净了!!!

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

USB抓包工具:bushound安装及使用

一、环境搭建 下载busbound6.01安装包,安装完成,重启电脑。 二、工具配置 按照下图配置工具: 使能自动识别新设备 2. 设置抓取数据的容量 三、抓包 回到capture选项卡,在页面的右下角有个run的按钮,点击使能&…

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…

快速幂算法6

eg: n10&#xff0c;10%20, 10/25, 5%21,4* 5/22, 2%20,4*256 0/20, 1024 递归算法 #include<iostream> using namespace std; long long quick_pow(int b,int e) {if(b0)return 0;if(e0)return 1;if(e%20){int tempquick_pow(b,e/2);return temp*temp;}if(e%2!0)…

MATLAB modem.qammod和randint函数

实在是受不了MATLAB改函数了 试图找到如何修改代码&#xff0c;诶嘿&#xff0c;失败了&#xff0c;那我就自己写一下吧 randint函数 %% P pre-MMSE clear all;clc % 参数设置 N_frame 100; %帧数 N_packet 1000; % 分组数 b 2; % 每符号比特数 M 2 ^ b; % 调制阶数 mod…

Flutter笔记:Widgets Easier组件库-使用隐私守卫

Flutter笔记 Widgets Easier组件库&#xff1a;使用隐私守卫 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

local dimming(局部调光)介绍

文章目录 1. 什么是local dimming2. 工作原理3. 类型4. 优点5. 缺点和局限7. 技术发展趋势 1. 什么是local dimming local dimming&#xff08;局部调光&#xff09;是电视和显示器中用于提升画面对比度和画质的背光技术。其基本原理是将背光源&#xff08;通常是LED&#xff…

【3dmax笔记】001:3dmax2020下载及安装教程

一、3dmax2020安装教程 1、双击运行exe文件&#xff0c;提取安装程序到指定文件夹&#xff1b; 2、提取完成&#xff0c;安装程序启动&#xff0c;点击安装 3、点击接受许可协议&#xff1b; 4、设置安装位置&#xff0c;点击安装&#xff1b; 5、等待产品安装&#xff1b; 6、…

C++:vector基础讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;vector基础讲解》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#…