[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.mzph.cn/web/14693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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…

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…

思科模拟器--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;顾名…

分布式事务——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;当然精确的客户自己也可以使…

Oracle递归查询笔记

目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询指定节点的递归路径 六、递归子类 七、递归父类 一、创建表结构和插入数据 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…

GPT提示词技巧,使用教程,国内版官网直达,非套壳

GPT提示词技巧&#xff0c;使用教程&#xff0c;国内版官网直达&#xff0c;非套壳 主站点&#xff1a;https://chatgpt-plus.top&#xff08;江苏福建地区打不开&#xff0c;需要魔法&#xff09; 店铺地址&#xff1a;https://buy.chatgpt-plus.top/ 选择plus账号进入&…

鸿蒙开发ArkUI-X基础知识:【ArkUI代码工程及构建介绍】

代码工程及构建介绍 背景 ArkUI作为OpenHarmony的默认开发框架&#xff0c;在本项目&#xff08;ArkUI-X&#xff09;中需要做到一套代码同时支持多平台构建&#xff0c;所以会采取共仓开发的方式&#xff0c;部分仓直接指向OpenHarmony相关开源仓。 代码结构及仓库结构 代…

【机器学习300问】94、什么是多任务学习?

一、多任务学习的定义 多任务学习&#xff08;Multi-Task Learning, MTL&#xff09;是一种机器学习范式&#xff0c;它允许一个模型同时学习执行多个相关但不完全相同的任务。这种方法的核心是&#xff1a;通过共享表示或权重&#xff0c;不同的任务可以在学习过程中相互促进&…

Python中文件操作和异常处理

文章目录 一、文件操作1.概念2.文件3.二进制 二、基本文件操作三、乱码产生四、with open() as f五、代码实现文件复制粘贴六、try ... except ...七、代码比较 一、文件操作 1.概念 帮助我们把爬虫抓下来的数据&#xff0c;进行保存。 2.文件 在计算机中&#xff0c;没有p…

力扣226. 翻转二叉树(DFS的两种思路)

Problem: 226. 翻转二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 涉及二叉树的递归解法时往往需要考虑两种思路&#xff1a; 1.在递归遍历时执行题目需要的具体要求&#xff1b; 2.将一个大问题分解为多个小子问题 具体到本体&#xff1a; 思路1&#xff1a;遍历 先…

【源码分享】简单的404 HTML页面示例,该页面在加载时会等待2秒钟,然后自动重定向到首页

展示效果 源码 html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>404 页面未找到</title><meta http-equiv"refresh" content"2;url/"> <!-- 设置2秒后跳转到首…

机器学习云环境测试

等待创建完成后&#xff0c;点击 PyTorch 打开&#xff0c;创建一个全新的 notebook 在 Cell 中输入如下代码&#xff0c;并点击 Run 完成后点击 New Cell &#xff0c;在 New Cell 中输入如下代码 输入完成后点击 Run &#xff0c;运行 New Cell 。&#xff08;每个 Cell 代…