ARTICLE DETAIL

资讯详情

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

LlamaIndex 系列【6】智能体开发:函数调用型智能体(FunctionAgent)

LlamaIndex 系列【6】智能体开发:函数调用型智能体(FunctionAgent) 文章目录1. 概述2. 快速上手阿里云百炼2.1 安装依赖2.2 API Key 配置2.3 引入依赖库2.4 创建基础工具2.5 初始化大模型2.6 初始化智能体2.7 发起提问2.8 完整代码3. 使用已有工具3.1 使用 LlamaHub 中的现成工具3.2 开发并贡献自定义工具1. 概述LlamaIndex以数据/检索起家除了核心的RAG能力近两年又集成智能体应用开发定位是一个【上下文增强驱动的LLM应用开发框架】本系列重点是RAG所以智能体相关的有涉及才会介绍。在LlamaIndex中智能体Agent是由大语言模型LLM驱动的半自治软件模块接收任务后它会执行一系列步骤来完成该任务。智能体配备一组工具工具可以是任意自定义函数也可以是完整的LlamaIndex查询引擎智能体会挑选最合适的工具完成每一步操作。每一步执行完毕后智能体会判断任务是否完成若已完成则向用户返回结果若未完成则回到流程起点继续执行下一步。在LlamaIndex中有两种实现方式从零搭建自定义智能体工作流详见「构建工作流」章节使用框架预置好的智能体工作流例如FunctionAgent简单的函数/工具调用智能体、AgentWorkflow可管理多个子智能体的智能体。本教程将演示如何使用FunctionAgent搭建函数调用型智能体。想要了解搭建多智能体系统的各类方案请查阅「多智能体系统」章节。标准执行循环流程用户 → 接收任务 →【步骤生成】LLM拆解任务 →【工具选择】LLM挑选工具 → 调用工具执行 ↑ ↓ └── 未完成←【进度评估】LLM评估工具结果 ← 工具返回结果 ↓ 是否完成→是→返回最终结果给用户2. 快速上手阿里云百炼2.1 安装依赖安装LlamaIndex核心库与所需依赖pipinstallllama-index-core llama-index-llms-openai-like python-dotenv2.2 API Key 配置在阿里云百炼控制台获取API Key拿到密钥后在项目根目录新建.env文件填入DASHSCOPE_API_KEYsk-proj-xxxx2.3 引入依赖库首先导入所需的LlamaIndex组件并加载.env环境变量fromdotenvimportload_dotenv load_dotenv()fromllama_index.core.agent.workflowimportFunctionAgentfromllama_index.llms.openai_likeimportOpenAILike2.4 创建基础工具这个简单示例中我们定义两个工具乘法函数与加法函数。defmultiply(a:float,b:float)-float:将两个数字相乘返回乘积returna*bdefadd(a:float,b:float)-float:将两个数字相加返回和returnab这些就是普通Python函数。智能体在选择工具时会依据函数名、参数、文档字符串docstring判断工具能力决定是否适用于当前任务因此文档字符串需要描述清晰、表意完整。同时它也会读取类型注解识别入参和返回值的类型。2.5 初始化大模型本例使用OpenAI兼容模式接入阿里云百炼api_keyos.environ[DASHSCOPE_API_KEY]# 接入阿里云百炼OpenAI 兼容模式llmOpenAILike(modelqwen3.8-max,# 支持 function calling 的通义千问模型api_keyapi_key,api_basehttps://ws-jfb8j8mx0n7e2k6a.cn-beijing.maas.aliyuncs.com/compatible-mode/v1,is_chat_modelTrue,# qwen 系列均为 chat 模型务必设为 Trueis_function_calling_modelTrue,# ← 加这一行)也可以选用其他可通过API访问的主流模型。2.6 初始化智能体接下来创建智能体需要传入工具列表、大模型实例以及系统提示词用来定义智能体的角色。实际业务中系统提示词通常会写得更加详尽。# 构建智能体agentFunctionAgent(tools[multiply],llmllm,system_prompt你是助手可以完成两个数字相乘计算。,)除了FunctionAgentLlamaIndex还提供其他智能体实现例如ReActAgent、CodeActAgent它们采用不同的提示策略来调用工具。2.7 发起提问现在让智能体执行数学计算任务asyncdefmain():responseawaitagent.run(1234 * 4567 等于多少)print(str(response))if__name____main__:asyncio.run(main())控制台输出1234×4567**5,635,678**2.8 完整代码importasyncioimportosfromdotenvimportload_dotenv load_dotenv()fromllama_index.core.agent.workflowimportFunctionAgentfromllama_index.llms.openai_likeimportOpenAILike# 2.4 创建基础工具# 智能体依据函数名、参数、文档字符串判断工具能力因此 docstring 需描述清晰defmultiply(a:float,b:float)-float:将两个数字相乘返回乘积returna*bdefadd(a:float,b:float)-float:将两个数字相加返回和returnab# 2.5 初始化大模型接入阿里云百炼 OpenAI 兼容模式api_keyos.environ[DASHSCOPE_API_KEY]llmOpenAILike(modelqwen3.8-max,# 支持 function calling 的通义千问模型api_keyapi_key,api_basehttps://ws-jfb8j8mx0n7e2k6a.cn-beijing.maas.aliyuncs.com/compatible-mode/v1,is_chat_modelTrue,# qwen 系列均为 chat 模型务必设为 Trueis_function_calling_modelTrue,# 声明该模型支持 function calling)# 2.6 初始化智能体agentFunctionAgent(tools[multiply],llmllm,system_prompt你是助手可以完成两个数字相乘计算。,)# 2.7 发起提问asyncdefmain():responseawaitagent.run(1234 * 4567 等于多少)print(str(response))if__name____main__:asyncio.run(main())3. 使用已有工具拓展智能体能力的核心就是可用工具集LlamaIndex提供的 LlamaHub 拥有数百项集成组件其中包含数十个开箱即用的智能体工具。3.1 使用 LlamaHub 中的现成工具本例我们使用LlamaHub上的雅虎财经工具。它提供一共6个智能体工具可查询各类股票代码相关信息。可用工具如下balance_sheet获取企业资产负债表的工具income_statement获取企业利润表损益表的工具cash_flow获取企业现金流量表的工具stock_news获取企业最新相关新闻的工具stock_basic_info获取企业基础信息包含股价的工具stock_analyst_recommendations获取券商分析师对企业的评级建议的工具首先安装该工具包pipinstallllama-index-tools-yahoo-finance依赖和上一个示例保持不变只需要导入雅虎财经工具fromllama_index.tools.yahoo_financeimportYahooFinanceToolSpec加载工具finance_toolsYahooFinanceToolSpec().to_tool_list()工具列表本质就是Python列表因此可以用extend方法把自定义工具合并进去finance_tools.extend([multiply,add])接下来更换查询问题触发新的财经工具调用# 构建智能体agentFunctionAgent(nameAgent,description用于执行金融相关操作。,toolsfinance_tools,llmllm,system_prompt你是一名乐于助人的助手。,)asyncdefmain():responseawaitagent.run(user_msgWhats the current stock price of NVIDIA?)print(str(response))if__name____main__:asyncio.run(main())得到返回结果The current stock price of NVIDIA Corporation (NVDA) is $128.41.小说明这里有一点取巧模型本身已经知道英伟达的股票代码。如果是知名度较低的公司则需要额外接入Tavily这类搜索工具用来先查找对应的股票代码。至此完成你可以在智能体中使用LlamaHub里的任意工具。3.2 开发并贡献自定义工具可以参考雅虎财经工具源码示例它主要包含继承BaseToolSpec的工具类若干普通Python业务函数spec_functions列表用于把函数映射为工具对外接口工具开发调试完成后请参考贡献指南按要求配置元信息并提交Pull Request。
返回列表