asp网上书店网站开发,网站主页作品欣赏,做内衣的网站好,英文网站营销ReAct#xff1a;结合推理和行动的大语言模型推理架构
GitHub Code: 人人都能看懂的最小实现
引言
在人工智能领域#xff0c;大语言模型#xff08;LLM#xff09;的应用日益广泛#xff0c;但如何让模型能够像人类一样#xff0c;在思考的基础上采取行动#xff0c…ReAct结合推理和行动的大语言模型推理架构
GitHub Code: 人人都能看懂的最小实现
引言
在人工智能领域大语言模型LLM的应用日益广泛但如何让模型能够像人类一样在思考的基础上采取行动并根据行动结果继续推理这是一个重要的研究方向。ReActReasoning Acting推理架构就是为解决这一问题而生的。本文将深入剖析 ReAct 推理架构的实现原理和具体应用。
ReAct 架构概述
ReAct 是一种结合了推理Reasoning和行动Acting的语言模型推理架构。它允许模型在回答问题时通过不断的思考、采取行动、观察结果最终得出答案。这种方式模拟了人类解决问题的过程使得模型的推理过程更加透明和可控。
核心组件
思考Thought模型对当前情况进行分析和推理行动Action根据推理结果选择并执行特定工具观察Observation获取行动的结果最终答案Final Answer综合所有信息得出的结论
技术实现解析
1. 工具定义
class WebSearch:def __init__(self, name:strweb_search, threshold:int8000):self.system_prompt
你是一位洞察研究员。
1. 为用户查询寻找详细信息并尽可能简单地将内容总结为一句话
2. 如果用户的问题是关于具体数值的只返回数值结果不需要任何额外解释。
self.name nameself.description 用于网络搜索的工具这个实现展示了如何定义一个工具类每个工具都包含
名称name描述description系统提示system_prompt执行逻辑__call__方法
2. 推理流程实现
ReAct 的核心推理流程通过 react 函数实现
def react(question: str, tools: List[Callable]) - str:# 构建提示模板# 循环执行推理过程# 解析响应并执行工具# 返回最终答案关键步骤解析 提示词构建 将可用工具信息注入到提示模板中设定标准化的输出格式引导模型按照 Thought-Action-Observation 循环进行推理 循环推理过程 获取模型响应解析响应中的行动指令执行相应工具将观察结果反馈给模型 结果处理 使用正则表达式提取最终答案格式化输出结果
实现细节深度解析
1. 消息格式化
def format_message(messages: List[Dict], last_content_length: int 0) - int:格式化打印新增的消息内容这个函数巧妙地实现了增量式的消息打印通过记录上次打印的内容长度只打印新增的内容提高了交互体验。
2. 工具执行机制
工具执行采用了装饰器模式通过 __call__ 方法实现了统一的调用接口
def __call__(self, query:str):results serpapi_search(query)msg [{role:system,content:self.system_prompt},{role:user, content: f查询内容是{query}搜索结果是{results}}]answer get_model_response_sync(model_namedeepseek-chat, messagesmsg)return answer3. 正则表达式解析
使用正则表达式精确提取模型响应中的关键信息
regex rAction: \[(.*?)\][\s]*Action Input: (.*?)(?:\n|$)
action_match re.search(regex, response, re.DOTALL)应用示例
以下是一个实际的应用示例
def main():query 2024年欧洲杯和2024年美洲杯冠军print(\n Starting new query:, query)search_tool WebSearch()tools [search_tool]result react(query, tools)print(最终答案)print(result)这个例子展示了如何使用 ReAct 架构来回答一个需要实时信息的问题。系统会
初始化搜索工具提交查询通过反复推理和搜索最终得出答案
总结
ReAct 推理架构为大语言模型提供了一个强大的推理框架使其能够像人类一样思考和行动。通过将推理过程分解为思考、行动和观察三个步骤不仅提高了模型的推理能力还增强了推理过程的可解释性。
这种架构特别适合需要多步推理和外部工具调用的复杂任务例如信息搜索、数据分析等。通过合理的工具设计和灵活的扩展机制ReAct 架构可以适应各种不同的应用场景。