ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

InternLM 智能体实战指南:基于 Lagent 与 ReAct 框架构建 InternLM2.5-Chat 工具调用智能体

InternLM 智能体实战指南:基于 Lagent 与 ReAct 框架构建 InternLM2.5-Chat 工具调用智能体 大模型人工智能基础模型AI Agent【免费下载链接】InternLMOfficial release of InternLM series (InternLM, InternLM2, InternLM2.5, InternLM3).项目地址https://gitcode.com/gh_mirrors/in/InternLM点击查看免费下载本文是基于官方仓库中 agent/lagent.md 文档展开的实战型技术指南核心聚焦于 InternLM 生态中轻量级智能体框架 Lagent 的安装、ReAct 智能体的构建与使用并结合 agent/README.md 中基于 InternLM2.5-Chat 与代码解释器的 MATH 数学推理案例进行纵深剖析。读完本文你将掌握用两行 pip 命令接入 Lagent、启动 ReAct 网页演示、用 HFTransformer GoogleSearch PythonInterpreter 组装一个能调用外部工具解决数学问题的 Agent并理解其底层调用链与批量化推理评估的工程实践。一、Lagent 是什么为 InternLM 系列模型赋能的轻量级 Agent 框架Lagent 是一个轻量级、开源的基于大语言模型LLM的智能体agent框架其核心目标只有一个让用户能够快速地将一个大语言模型转变成多种类型的智能体同时提供一些典型工具为 LLM 赋能。所谓工具赋能指的是让模型不再只能空想答案而是能够通过调用搜索引擎、Python 解释器等外部工具先检索信息、执行计算再基于结果给出可靠回答。在本仓库中Lagent 的定位十分明确它是 InternLM2.5-Chat 模型构建智能体应用的官方推荐方案。agent/README.md 明确指出InternLM2.5-Chat 在代码解释和通用工具调用方面的能力得到进一步提升——基于更强和更具泛化性的指令理解、工具筛选与结果反思等能力新版模型可以更可靠地支持复杂智能体的搭建支持对工具进行有效的多轮调用完成较复杂的任务而 Lagent 正是承载这些能力的运行时框架。从源码视角看agent/streaming_inference.py 展示了 Lagent 提供给上层应用的完整核心 APIfrom lagent import (INTERNLM2_META, ActionExecutor, HFTransformer, Internlm2Agent, Internlm2Protocol, LMDeployPipeline, IPythonInteractiveManager)这七个符号基本勾勒出了 Lagent 的分层架构组件角色说明HFTransformer/LMDeployPipelineLLM 后端分别封装 HuggingFace Transformers 与 LMDeploy 两种推理引擎Internlm2AgentAgent 主体承载 ReAct 思考-行动循环的高层智能体类Internlm2Protocol/INTERNLM2_META协议与模板定义 InternLM2 系列的对话元模板meta template与提示词协议ActionExecutor动作执行器管理并调度智能体可用的全部工具/动作IPythonInteractiveManager典型工具交互式 Python 解释器管理即代码解释器与其他模块的分工关系Lagent 文档本身是怎么用的入口而仓库中还提供了与之配套的深度实践agent/README.mdInternLM2.5-Chat 代码解释器的 MATH 推理与评估、agent/pal_inference.mdPAL 范式下的代码生成推理以及 chat/README.md纯对话推理。它们的递进关系是先会单轮对话Transformers/ModelScope再会工具调用Lagent最后能做批量评测MATH这正是本文后续要沿用的主线。二、安装 Lagentpip 一键安装与源码编译两种方式2.1 pip 安装推荐pip install lagent这是最快捷的接入方式适合绝大多数场景。2.2 从源码编译安装如果你想修改框架代码例如自定义工具、调试 Agent 内部逻辑建议从源码构建git clone https://github.com/InternLM/lagent.git cd lagent pip install -e .pip install -e .以 editable可编辑模式安装本地对源码的修改会即时生效无需重新安装。2.3 按需安装完整依赖原文档特别强调了一个关键前提如果计划运行 HuggingFace 模型例如使用HFTransformer加载internlm/internlm2_5-7b-chat请先运行pip install -e .[all]安装全部依赖。这一要求与 agent/requirements.txt 中的依赖清单相互印证——该文件固定了lmdeploy0.2.2、sympy1.12、datasets、jsonlines、tqdm等版本并直接以lagent githttps://github.com/InternLM/lagentmain的方式引入 Lagent 主分支说明本项目内的智能体实践对 Lagent 版本有明确要求。此外后续跑网页 demo 前还需安装 streamlitpip install streamlit三、运行 ReAct 网页 Demo一条命令开启可视化对话Lagent 官方仓库自带基于 Streamlit 的 ReAct 交互式网页样例一条命令即可启动# 需要确保已经安装 streamlit 包 # pip install streamlit streamlit run examples/react_web_demo.py启动后浏览器会打开 Web UI你可以直接在网页端与 ReAct 智能体对话观察模型思考 → 调用工具 → 根据工具结果继续推理的完整过程。该 demo 是了解 ReAct 循环行为、调试工具参数最直观的入口也是 Lagent 仓库 examples 目录examples/react_web_demo.py提供的官方示例。四、用 InternLM2.5-Chat 构建一个 ReAct 智能体这是整篇文档的核心实战环节用约 20 行 Python 代码把internlm/internlm2_5-7b-chat变成一个具备搜索 编程双工具能力的智能体。4.1 完整代码与逐行解析# 从 lagent 库中导入所需模块和类 from lagent.agents import ReAct from lagent.actions import ActionExecutor, GoogleSearch, PythonInterpreter from lagent.llms import HFTransformer # 初始化基于 HFTransformer 的语言模型llm并提供模型名称 llm HFTransformer(internlm/internlm2_5-7b-chat) # 初始化 Google 搜索工具并提供你的 API key search_tool GoogleSearch(api_keyYour SERPER_API_KEY) # 初始化 Python 解释器工具 python_interpreter PythonInterpreter() # 通过配置 ReAct 智能体创建 chatbot chatbot ReAct( llmllm, # 提供语言模型实例 action_executorActionExecutor( actions[search_tool, python_interpreter] # 指定 chatbot 可执行的动作 ), ) # 用 LaTeX 格式的数学问题询问智能体 response chatbot.chat(若$z-1\sqrt{3}i$,则$\frac{z}{{z\overline{z}-1}}\left(\ \ \right)$) # 打印智能体生成的回答 print(response.response) $-\frac{1}{3}\frac{\sqrt{3}}{3}i$4.2 三个核心组件的职责拆解① 模型后端HFTransformer它把 InternLM2.5-Chat 封装为可对话的 LLM 实例。internlm/internlm2_5-7b-chat是 HuggingFace 上的模型标识符由于依赖 HuggingFace 生态所以必须预先安装[all]依赖。与之对应的还有LMDeployPipeline后端见下文 MATH 案例两者可在 agent/streaming_inference.py 中按--backend参数切换。② 工具与动作执行器ActionExecutor它是 Lagent 的工具中枢。示例注册了两个典型工具GoogleSearch(api_keyYour SERPER_API_KEY)网页搜索工具需要配置 SERPER 平台的 API Key将占位符替换为你自己的 KeyPythonInterpreter()Python 解释器让模型可以写代码并执行适合数学计算、数据分析等任务。ActionExecutor负责接收模型发出的动作指令找到对应工具执行并把执行结果observation反馈给模型。③ 智能体主体ReAct它把 LLM、工具集组织成完整的 ReAct 循环——模型交替输出 Thought推理与 Action动作工具返回 Observation观察如此往复直到模型认为可以给出 Final Answer。这也是该范式名称 ReActReasoning Acting的由来。4.3 实战效果一次程序化数学解题示例向智能体提出了一个纯符号的复数运算问题若$z-1\sqrt{3}i$求$\frac{z}{z\overline{z}-1}$。这类问题仅靠模型心算容易出错但 ReAct 智能体可以调用PythonInterpreter写出代码精确计算最终给出正确答案$-\frac{1}{3}\frac{\sqrt{3}}{3}i$。这正是 agent/README.md 所强调的 InternLM2.5-Chat 能力的落地形态模型先把数学问题翻译成可执行的 Python 代码借助 Python 解释器执行后得到中间结果再结合反思能力组织最终答案。五、纵深实践基于 Lagent 的 MATH 代码解释器推理与评估在 agent/lagent.md 构建单智能体的基础上仓库进一步提供了规模化实战利用 Lagent 让 InternLM2.5-Chat 在 MATH 测试集上调用代码解释器逐题推理并自动评估。agent/README.md 给出了完整流程且与 lagent.md 形成单 agent 演示 → 批量推理的进阶衔接。5.1 为什么用代码解释器MATH 基准的直观数据agent/README.md 的对比表格数据来源为官方文档表明集成工具Tool-Integrated 标记为 w/能显著提升数学推理能力模型是否集成工具MATHInternLM2-Chat-7Bw/45.1InternLM2-Chat-20Bw/51.2InternLM2.5-7B-Chatw/63.0gpt-4-0125-previeww/o64.2可以看到 InternLM2.5-7B-Chat 配合代码解释器达到 63.0已非常接近未集成工具的 gpt-4-0125-preview64.2。这与 model_cards/internlm2.5_7b.md 中更强的工具使用能力指令理解、工具选择与反思的描述一致也是 Lagent 框架价值的最直接证明。5.2 安装依赖与一键推理评估首先安装 agent/requirements.txt 中列出的额外依赖pip install -r requirements.txt然后运行推理与评估该命令会先推理、后自动发起评估子进程python streaming_inference.py \ --backendlmdeploy \ # 使用 LMDeploy 引擎若用 HuggingFace 模型则改为 hf --model_pathinternlm/internlm2_5-7b-chat \ --tp1 \ --temperature1.0 \ --top_k1 \ --output_pathmath_lmdeploy.jsonl \ --do_eval关键参数说明均以 agent/streaming_inference.py 中的 argparse 定义为依据参数默认值作用--backendlmdeploy推理引擎可选lmdeploy或hf--model_pathinternlm/internlm2-chat-7b模型路径或 HuggingFace 模型标识--tp1张量并行数LMDeploy 的 TurbomindEngineConfig 配置项--temperature0.1采样温度--top_p0.8Top-P 采样阈值--top_k40Top-K 采样参数--max_turn5Agent 与环境的最大交互轮数--batch_size100Agent 推理批大小--max_new_tokens512单次生成的最大 token 数--stop_words[\|action_end\|, \|im_end\|]停止词可多次追加--do_infer/--no-do_infer开启是否启动模型推理阶段--do_eval关闭是否评估推理结果--overwrite关闭是否覆盖已存在的结果文件5.3 推理结果格式与评估复用--output_path指定的 jsonl 文件每行对应一道题的完整推理记录包含题目problem/query、标准答案gt、模型预测pred以及分步轨迹steps。steps 中依次记录了语言推理role: language、工具调用role: tool内含AsyncIPythonInteractiveManager的 Python 代码、环境返回role: environment三个关键环节示例片段如下{ steps: [ {role: language, content: To find the coordinates of the point $(x,y)$, we can use the midpoint formula. ...}, {role: tool, content: {name: AsyncIPythonInteractiveManager, parameters: {command: python\nfrom sympy import symbols, Eq, solve\n...\n}}, name: interpreter}, {role: environment, content: {x: -16, y: -4}, name: interpreter}, {role: language, content: After solving the equations, we find that the coordinates of the point $(x,y)$ are $(-16, -4)$. ...} ], error: null }这正是 ReAct 循环在真实工程中的完整留痕可以直接对照 4.1 节中chatbot.chat()的行为理解其内部机制。如果已经生成过该文件可以跳过推理阶段直接评估python streaming_inference.py \ --output_pathmath_lmdeploy.jsonl \ --no-do_infer \ --do_eval5.4 底层实现Agent 初始化与评估逻辑agent/streaming_inference.py 的init_agent()展示了与单 agent 示例同源的代码结构--backendlmdeploy时用LMDeployPipeline(path..., model_nameinternlm2-chat, meta_templateINTERNLM2_META, pipeline_cfgdict(backend_configTurbomindEngineConfig(tptp)))构造模型--backendhf时退化为HFTransformer(path..., meta_templateINTERNLM2_META)再以Internlm2AgentInternlm2Protocol(meta_promptNone, interpreter_promptDEFAULT_PROMPT)组装 agent并注册IPythonInteractiveManager可并发 200 个 worker作为唯一的代码解释器动作。predict()中通过agent.batch_chat(batch[query])批量驱动多轮 ReAct 交互从最后一步语言输出中提取\boxed{...}结果evaluate()则用math_equal()做数值相等isclose容差 1e-4与 sympy 符号相等simplify(a-b)0双重判定并按题型Algebra 等输出分项得分。整个流程既复用了 lagent.md 中ReAct ActionExecutor的组件哲学也把工具调用智能体从单次演示推向可复现的基准评测。六、常见问题与使用要点小结HuggingFace 模型跑不起来确认执行了pip install -e .[all]或pip install -r requirements.txtHF 后端依赖全套组件。Google 搜索报错GoogleSearch(api_key...)需要真实的 SERPER API Key请替换示例中的占位符没有搜索 Key 时可仅保留PythonInterpreter作为动作。多轮工具调用卡死或超时关注--max_turn默认 5与--time_out等运行期约束在 streaming_inference.py 中还可通过--stop_words追加|action_end|等结束符控制生成边界。复现 MATH 结果时注意命令一致性README 示例中--temperature1.0、--top_k1为解码配置与脚本默认值0.1/40不同复现时请按文档命令原样传入。文件已存在时的行为脚本检测到--output_path已存在且未加--overwrite时会自动跳过推理日志会提示你添加--overwrite。七、总结一条从会对话到会使用工具的清晰路径从 agent/lagent.md 出发本文完整覆盖了 Lagent 的安装、ReAct 网页 demo、以 InternLM2.5-Chat 为基座构建多工具智能体并延伸至 agent/README.md 的 MATH 批量推理与评估。其底层脉络始终一致InternLM2.5-Chat 提供指令理解、工具筛选与反思能力Lagent 提供ReAct智能体主体、ActionExecutor工具调度与HFTransformer/LMDeployPipeline推理后端这些可组合的工程化组件。想继续深入可以阅读 agent/streaming_inference.py 与 agent/pal_inference.py 的完整实现或参考 Lagent 仓库 examples 目录中的更多用例把这一套工具调用能力扩展到数据分析、信息检索等更复杂的任务场景。赞分享大模型人工智能基础模型AI Agent【免费下载链接】InternLMOfficial release of InternLM series (InternLM, InternLM2, InternLM2.5, InternLM3).项目地址https://gitcode.com/gh_mirrors/in/InternLM点击查看免费下载相关推荐用 Lagent 将 InternLM2.5-Chat 打造成 ReAct 智能体安装、网页 Demo 与工具调用实战用 Lagent 将 InternLM2.5 Chat 打造成 ReAct 智能体安装、网页 Demo 与工具调用实战 Lagent 是一个轻量级、开源的基于大模型人工智能基础模型AI AgentOptimism 单一代码仓库Monorepo指南OP Stack 组件架构、Scoped Commits 规范与开发工作流Optimism 单一代码仓库Monorepo指南OP Stack 组件架构、Scoped Commits 规范与开发工作流 Optimism 是一个面向大模型人工智能基础模型AI AgentLagent 智能体框架接入 InternLM-Chat-7B-V1.1基于 ReAct 与 Python 解释器插件的数学问题求解实战Lagent 智能体框架接入 InternLM Chat 7B V1.1基于 ReAct 与 Python 解释器插件的数学问题求解实战 《开源大模型食用指南大模型人工智能教程本地部署微调上一篇Redux Store架构设计与实现原理下一篇Cypress现代Web测试的革命性工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表