01、概述
在过去的两三年中,人工智能畛域教训了令人注目标开展,尤其是在大言语模型、分散模型和多模态技术等方面。其中,我对智能代理上班流发生了浓重的兴味。往年终,Coursera 的开创人、深度学习先锋 Andrew Ng 发了一条推特:“智能上班流将推进往年的 AI 渺小开展”。自那时起,智能代理畛域的停顿令人惊叹,许多人开局构建自主代理和多代理架构。
02、什么是 REAcT 揭示?
REAcT 代表 Reasoning(推理)、Acting(执行) 和 Thinking(思索),它是一种揭示技术,使大言语模型(LLMs)能够将复杂义务合成为一系列思索环节、执行和观察。
REAcT 揭示的环节便捷明了,关键包括以下三个步骤:
这个环节会循环启动,直到取得令人满意的结果或到达最大迭代次数。
REAcT 揭示的示例
让咱们看一个典型的 REAcT 揭示结构:
实时示例
假定用户查问:“最近的印度与英格兰测试系列赛的最佳球员是谁,他们的关键体现如何?”
输入(经常使用 crewAI 生成):
经过始终的思索、执行和观察,代理最终得出了答案:Yashasvi Jaiswal 被评比为最佳球员,并列出了他的关键体现。
REAcT 揭示在构建代理中的价值
传统上,从 LLM 中失掉结果的模式是编写结构良好的揭示。但是,须要留意的是,LLMs 自身并不具有推理才干。只管多种方法试图使 LLMs 能够推理和方案,但许多方法未能取得成功。REAcT 的出现,在必定水平上成功地设计了比以往更契合逻辑的钻研方案。
REAcT 经过将复杂义务合成为一系列思索、执行和观察,使代理能够以之前难以成功的透明度和顺应性处置复杂疑问。这种方法使开发者更容易了解代理的决策环节,从而启动调试、优化和改良。
此外,REAcT 揭示的迭代特性使代理能够处置不确定性。随着代理在多个思索、执行和观察周期中的停顿,它可以依据新消息调整其方法,相似于人类在面对复杂义务时的应答模式。
03、REAcT 代理的关键运行与案例
接上去,咱们将探求 REAcT 代理的多种运行和实践案例,突显其在各个畛域优化推理、决策和顺应才干的后劲。
实时体育剖析与预测
REAcT 代理可以应用互联网上少量消息提供体育行业的剖析和预测。例如,在 IPL 较量中,代理可以:
智能化客户支持
客户支持须要提供有效反应的技艺。REAcT 代理十分适宜在 LLM 或代理须要提供智能反应时经常使用,协助:
共性化在校生学习
教育畛域也是 REAcT 代理或者发生渺小影响的畛域。构想一个共性化的 AI 辅导员,它可以:
04、经常使用 LlamaIndex 成功 REAcT 代理
如今,咱们进入成功 REAcT 代理的激动人心的局部。实践上,经常使用 LlamaIndex 成功起来相当便捷,只有几行代码。
装置和设置
在启动代码成功之前,咱们须要装置一些必要的库,包括 LlamaIndex。LlamaIndex 是一个有效衔接大言语模型与数据的框架。咱们将经常使用 DuckDuckGo 搜查作为咱们的举措工具,并将 Gemini 作为集成的 LLM。
!pip install llama-index!pip install duckduckgo-search!pip install llama-index-llms-gemini
导入必要组件
咱们首先须要导入必要的组件。REAcT 代理须要与外部工具交互以失掉数据,这可以经过 LlamaIndex **工具中的 Function Tool 成功。逻辑很便捷:每当代理须要访问实在数据时,它会触发一个 Python 函数来检索所需消息。
from llama_index.core.tools import FunctionToolfrom duckduckgo_search import DDGSfrom llama_index.llms.gemini import Gemini
定义 Gemini LLM
在 LlamaIndex 中,OpenAI 是自动的 LLM。为了笼罩 Gemini,咱们须要在设置中初始化它。您可以在 Google AI Studio 失掉 API 密钥。
from llama_index.core import Settingsimport osGOOGLE_API_KEY = "" # 在这里增加您的 API 密钥os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEYllm = Gemini()Settings.llm = llm
创立 REAcT 代理的举措工具
接上去,咱们定义搜查工具 DuckDuckGo 搜查。须要记住的一个关键细节是,在定义用于执行操作的 FunctionTool 时,须要指定输入参数的数据类型。例如,search(query: str) -> str 确保查问参数是字符串。因为 DuckDuckGo 前往的搜查结果蕴含附加元数据,咱们将提取结果的主体内容以简化照应。
def search(query:str) -> str:"""Args:query: 用户揭示return:context (str): 用户查问的搜查结果"""req = DDGS()response = req.text(query, max_results=4)context = ""for result in response:context += result['body']return contextsearch_tool = FunctionTool.from_defaults(fn=search)
编写 LlamaIndex 的 REAcT 代理
随着代理的关键组件已设置终了,咱们如今可以定义 REAcT 代理。咱们可以间接经常使用 LlamaIndex **中的 ReAct Agent。此外,咱们设置 verbose=True 以了解幕后出现的事情,设置 allow_parallel_tool_calls=True 准许代理在适当状况下做出决策而无需总是依赖外部操作。
from llama_index.core.agent import ReActAgentagent = ReActAgent.from_tools([search_tool],llm=llm,verbose=True,allow_parallel_tool_calls=True)
这样,咱们就创立了 REAcT 代理。如今可以经常使用它来回答查问,经过运转 agent.chat 方法。
template = """你是一位专业的体育剖析记者。剖析 Virat Kohli 在 2024 年 IPL 的体现趋向,并提供他的优缺陷。还需提供 Virat Kohli 在 IPL 2024 的总得分。我还须要他在同一赛季的最高分。"""response = agent.chat(template)print(response)
输入
最终,咱们失掉了 REAcT 代理的照应。经过这样的成功,代理能够有效地回答实时用户查问。
05、结语
REAcT 代理代表了人工智能和智能上班流畛域的一大提高。经过经常使用 LlamaIndex 成功 REAcT 代理,咱们创立了一个弱小的工具,能够在实时用户查问中启动推理、执行和思索。
参考:
基咯咯
原文链接: