十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Swarms 多工具编排实战:让单个 Agent 同时驾驭十个工具的实现指南

Swarms 多工具编排实战:让单个 Agent 同时驾驭十个工具的实现指南 Swarms 多工具编排实战让单个 Agent 同时驾驭十个工具的实现指南【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms本指南围绕swarms仓库中 examples/tools/multi_tool_use/ 目录展开讲解如何让一个 Agent 同时挂载多个工具Tools并借助函数调用Function Calling机制在单个任务中按顺序或并行地编排这些工具完成跨平台、跨数据源组合查询的复杂任务。读完本文你将掌握多工具 Agent 的两种落地写法GPT 系与 Anthropic 系模型、工具函数的编写规范以及从「Python 函数」到「可被模型调用的工具」的底层转换原理。一、目录概览与核心主题该目录下包含两个可运行示例与一个说明文档文件说明README.md目录说明概述多工具使用的核心模式many_tool_use_demo.py面向金融分析的 10 工具组合演示multi_tool_anthropic.py使用 Anthropic 模型的多工具演示按 README 的概述多工具使用示例主要回答三个问题工具编排Tool Orchestration多个工具如何在一个 Agent 内被统一管理、按需调度工具链式调用Tool Chaining模型如何依据任务自动决定工具之间的先后依赖关系例如先查市场情绪再查具体币价多工具调用处理Handling Multiple Tool Calls Efficiently面对一次请求中同时出现的多个工具调用Agent 如何批量解析、执行并汇总结果。两个示例都围绕「加密货币金融分析」这一场景构建但工具集与模型完全不同正好覆盖了 OpenAI 兼容接口与 Anthropic 两条技术路线。二、实战一一次任务自动编排 10 个工具many_tool_use_demo.py 是本目录中最完整的示例它定义了 10 个工具函数覆盖 CoinGecko、JupiterSolana 生态与 HTX 三大数据源然后全部挂载到一个 Agent 上。2.1 十个工具函数一览工具函数均遵循统一约定带完整类型注解与 docstring返回 JSON 字符串。下表汇总了每个工具的作用与关键参数工具函数数据源功能关键参数get_coin_price(coin_id, vs_currency)CoinGecko查询指定币种当前价格、市值、24h 成交量与涨跌幅coin_id如bitcoin、vs_currency如usdget_top_cryptocurrencies(limit, vs_currency)CoinGecko按市值获取前 N 名币种limit取值 1250超出抛ValueErrorlimit、vs_currencysearch_cryptocurrencies(query)CoinGecko按名称或符号搜索币种返回前 10 条结果queryget_token_historical_data(token_id, days, vs_currency)CoinGecko获取历史价格/市值/成交量序列默认 30 天、按日粒度token_id、days、vs_currencyget_defi_stats()CoinGecko获取全局 DeFi 统计TVL、主导占比等无参数get_market_sentiment(coin_ids)CoinGecko逐币查询社区评分与开发者活动数据内置time.sleep(0.6)限速coin_ids: List[str]get_jupiter_quote(input_mint, output_mint, amount, slippage)Jupiter获取 Solana 代币兑换报价金额内部转换为 lamportsamount * 1e9input_mint、output_mint、amount、slippage默认 0.5换算为slippageBpsget_jupiter_tokens()Jupiter获取 Jupiter 支持交易的代币列表无参数get_htx_market_data(symbol)HTX查询交易对行情如btcusdtsymbolget_htx_trading_pairs()HTX获取平台全部现货交易对及状态无参数值得注意的两个实现细节get_top_cryptocurrencies会将原始返回做字段精简只保留id、symbol、name、current_price、market_cap等 10 个字段降低传给模型的上下文体积get_market_sentiment通过time.sleep(0.6)主动限速规避公开 API 的频率限制。所有工具在异常时都会返回 JSON 化的error字段而非直接抛出保证工具调用失败也能被模型感知并继续对话。2.2 Agent 配置逐项拆解agent Agent( agent_nameFinancial-Analysis-Agent, agent_descriptionAdvanced financial advisor agent with comprehensive cryptocurrency market analysis capabilities across multiple platforms including Jupiter Protocol and HTX, system_promptYou are an advanced financial advisor agent with access to real-time cryptocurrency data from multiple sources including CoinGecko, Jupiter Protocol, and HTX. You can help users analyze market trends, check prices, find trading opportunities, perform swaps, and get detailed market insights. Always provide accurate, up-to-date information and explain market data in an easy-to-understand way., max_loops1, max_tokens4096, model_namegpt-5.4-mini, dynamic_temperature_enabledTrue, output_typeall, tools[ get_coin_price, get_top_cryptocurrencies, search_cryptocurrencies, get_jupiter_quote, get_htx_market_data, get_token_historical_data, get_defi_stats, get_jupiter_tokens, get_htx_trading_pairs, get_market_sentiment, ], )各参数作用如下tools核心参数以 Python 函数列表形式传入全部工具。源码注释明确指出——上传多少个、什么组合的工具Agent 就自动执行多少个、什么组合的调用完全无需手写调度逻辑max_loops1控制单次任务内部推理循环次数。从 swarms/structs/agent.py 的实现看max_loops支持整数与auto自动规划-执行-总结两种模式设为1表示任务一次推理即完成适用于「模型自主发起工具调用并直接汇总」的场景max_tokens4096限制单次生成的 Token 上限避免多工具结果回传时输出被截断dynamic_temperature_enabledTrue启用动态温度调节工具调用场景下让模型在稳定与探索之间自适应output_typeall控制最终输出格式Agent支持str、list、json、dict、yaml、xml等多种类型all表示保留完整推理与工具执行过程agent_name/agent_description/system_prompt分别定义 Agent 身份、能力简介与系统提示词。示例中的系统提示词明确告知模型可访问 CoinGecko、Jupiter、HTX 三大数据源并强调「始终提供准确、实时的信息」这能显著提升模型选择正确工具的概率。2.3 运行效果组合调用而非单点查询示例的运行语句是一条需要跨工具协作的复合任务agent.run(Get the market sentiment for bitcoin and fetch the price of ethereum)这条任务要求模型在一轮内规划出「调用get_market_sentiment([bitcoin]) 调用get_coin_price(ethereum, ...)」的执行序列。这正是 README 所述「工具编排 工具链式调用 多工具调用处理」三个模式的集中体现模型自主拆解任务、选定两个工具、按序执行并汇总为一段连贯回答。源码注释也给出了另一个可替换的复合示例agent.run(Use defi stats to find the best defi project to invest in)——模型会先调用get_defi_stats()再结合返回数据做投资分析。三、实战二Anthropic 模型下的多工具使用multi_tool_anthropic.py 展示同一模式的 Anthropic 版本工具集精简为 CoinGecko 的两大查询agent Agent( agent_nameFinancial-Analysis-Agent, agent_descriptionPersonal finance advisor agent with cryptocurrency market analysis capabilities, system_promptYou are a personal finance advisor agent with access to real-time cryptocurrency data from CoinGecko. You can help users analyze market trends, check coin prices, find trending cryptocurrencies, and search for specific coins. Always provide accurate, up-to-date information and explain market data in an easy-to-understand way., max_loops1, max_tokens4096, model_nameanthropic/claude-3-opus-20240229, dynamic_temperature_enabledTrue, output_typeall, tools[ get_coin_price, get_top_cryptocurrencies, ], ) agent.run(what are the top 5 cryptocurrencies by market cap?)与第一个示例的差异点模型标识model_name使用anthropic/claude-3-opus-20240229。swarms底层通过统一封装支持多种模型提供方只需按provider/model-name的格式指定即可Agent 的tools参数无需任何改动工具复用get_coin_price、get_top_cryptocurrencies两个函数与第一个示例中的实现完全一致——说明工具定义与模型解耦同一套 Python 工具可以无缝复用到不同厂商的模型上任务特征what are the top 5 cryptocurrencies by market cap?只需要一次工具调用但模型同样需要依据工具 schema 生成带正确参数limit5、vs_currencyusd的调用请求。两个示例共同说明了本目录的设计意图工具写一次模型任意换。四、源码级原理tools 参数背后的完整调用链多工具能够「自动执行」依靠的是仓库中一套完整的工具管理体系。理解这条链路才能写出与框架契合的工具函数。4.1 从函数到 OpenAI Function Schema当你把函数列表传入Agent(tools[...])时底层会通过 swarms/tools/base_tool.py 的BaseTool完成 schema 化。核心的转换实现在 swarms/tools/py_func_to_openai_func_str.py 的get_openai_function_schema_from_func用inspect.signature提取函数的类型注解与默认值无默认值的参数自动标记为required有默认值的参数写入default字段docstring 作为函数的description提供给模型帮助模型理解该工具何时该用缺少必需参数类型注解时直接抛出TypeError从源头保证 schema 合法性批量转换时convert_multiple_functions_to_openai_function_schema使用ThreadPoolExecutor并发处理工具数量多时也能快速完成。这解释了为什么两个示例中每个工具都必须带类型注解 写 docstring——它们是模型理解与调用工具的「说明书」。4.2 从模型返回值到工具执行模型返回工具调用意图后由 swarms/tools/tool_parse_exec.py 的parse_and_execute_json接手将模型输出的 JSON 解析为函数调用列表兼容functions/function/ 单对象三种结构通过function_dict {func.__name__: func for func in functions}建立函数名到函数的映射表对每个待调用的工具用解析出的parameters以func(**parameters)形式执行每个工具最多重试max_retries默认 3次单次失败不会中断整批执行最终把每个工具的执行结果连同摘要summary以 JSON 形式返回给模型供其生成最终回答。而整个多工具循环的驱动者在 swarms/structs/agent.py 的run()入口根据max_loops决定走单轮_run还是自动模式的_run_autonomous_loop并在内部循环中根据dynamic_temperature_enabled动态调整采样参数最后依据output_type格式化输出。一次agent.run(...)即完成了「模型规划 → 批量工具调用 → 结果回传 → 汇总输出」的完整闭环。五、编写多工具 Agent 的实操规范结合两个示例与底层实现可归纳出可复制的编写规范统一函数签名风格全部参数带类型注解如coin_id: str、全部函数带返回值注解与 docstringdocstring 中写清参数含义、返回结构与示例统一返回类型为 JSON 字符串模型是字符串消费者所有工具返回json.dumps(...)结果可保证下游稳定解析失败时返回带error字段的 JSON而不是抛异常中断流程约束默认值与边界如limit限定 1250 并显式raise ValueError将业务校验写进工具内部主动限速与数据瘦身公开 API 场景参考get_market_sentiment的time.sleep(0.6)返回前参考get_top_cryptocurrencies精简字段控制上下文占用用系统提示词引导工具选择在system_prompt中明确声明数据源与能力边界模型才能在高工具基数下选对工具按场景设定max_loops纯查询类任务用1需要多步推理、研究类任务可设为更大整数或auto让 Agent 自主规划执行。六、运行前提与注意事项两个示例均为真实网络请求脚本运行前需安装swarms与requests依赖many_tool_use_demo.py中model_namegpt-5.4-mini与multi_tool_anthropic.py中anthropic/claude-3-opus-20240229均为示例指定的模型标识实际运行请以你可用的模型名与对应 API Key 为准Agent支持 OpenAI 兼容与 Anthropic 等多类模型CoinGecko、Jupiter、HTX 均为公开接口存在速率限制get_market_sentiment已内置限速其余工具在连续高频调用时可能遇到 429 类错误工具内部的错误捕获会把这类失败转化为 JSONerror返回如需了解swarms中更多工具形态Agent 作为工具、BaseTool 框架、MCP 集成等可继续阅读 examples/tools/README.md。七、小结examples/tools/multi_tool_use/目录用两个可运行的示例完整演示了swarms多工具 Agent 的三种核心能力工具编排10 个工具统一挂载、工具链式调用复合任务自动拆解、多工具调用高效处理批量解析、带重试执行、结果汇总。其背后由 swarms/tools/base_tool.py、swarms/tools/py_func_to_openai_func_str.py、swarms/tools/tool_parse_exec.py 与 swarms/structs/agent.py 构成的工具体系支撑让开发者只需编写规范化的 Python 函数即可让 Agent 自主完成跨数据源的组合查询任务。【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表