趋近智
随着你的LLM智能体变得更精巧,它常常需要使用多个工具来达成一个复杂目的。这些工具的执行方式——是依次进行还是同时运行——大大影响智能体的效率和功用。实现顺序与并行工具使用,能让你的智能体处理更复杂的任务。
顺序工具执行是最直接的方法:工具每次运行一个,并按特定次序。当一个工具的输出作为下一个工具的输入,从而形成依赖链时,这种方法是必需的。可以把它想象成一个食谱,每一步都必须在前一步完成后才能开始。
举例来说,一个智能体若要执行“找到今天热门科技新闻,总结并邮件给我”的任务,很可能会按顺序执行这些步骤:
每个工具的成功完成和输出都是后续工具的前提。智能体,或者你为其定义的逻辑,需要管理这个流程,确保数据从一个工具正确传递给下一个。
典型的顺序工具执行流程,一个工具的输出作为下一个工具的输入。
何时使用顺序执行:
顺序流程中的错误处理相对直接。如果一个工具失败,智能体可以停止序列,若有备选工具则尝试使用,或报告失败。
并行工具执行指同时运行多个工具。当智能体需要执行多个独立任务,且这些任务的完成顺序不重要,或需要在继续前收集来自多个源的结果时,这种方法非常有效。
考虑一个智能体被要求“获取旧金山、伦敦和东京的当前天气”。这是三个独立查询。智能体可以:
这三个调用可以并发进行。智能体无需等待旧金山天气报告,就可以请求伦敦的天气。一旦所有结果返回,智能体就可以汇总它们。
并行工具执行的示例,独立任务并发执行,其结果被组合。
何时使用并行执行:
实现并行执行需要更精巧的管理。在Python中,asyncio非常适合智能体工具中常见的I/O密集型任务(如API调用)。你需要将工具函数定义为异步的(使用async def),并对可能阻塞的操作使用await。然后,可以使用asyncio.gather()来并发运行多个可等待任务。
import asyncio
# 假设这些在其他地方已定义且是可等待的
# async def call_weather_api(city: str) -> dict: ...
# async def call_news_api(topic: str) -> list: ...
async def fetch_data_in_parallel():
# 示例:获取两个城市的天气和某个主题的新闻
weather_sf_task = call_weather_api("San Francisco")
weather_london_task = call_weather_api("London")
news_tech_task = call_news_api("technology")
# asyncio.gather 并发运行所有任务
results = await asyncio.gather(
weather_sf_task,
weather_london_task,
news_tech_task,
return_exceptions=True # 对于处理单个任务失败很重要
)
# 处理结果:
# results[0] 将是旧金山天气或异常
# results[1] 将是伦敦天气或异常
# results[2] 将是科技新闻或异常
# 进一步的逻辑来处理和组合结果...
# 例如,检查 results 中每个项是否为 isinstance(res, Exception)
sf_weather = results[0] if not isinstance(results[0], Exception) else "Error fetching SF weather"
london_weather = results[1] if not isinstance(results[1], Exception) else "Error fetching London weather"
tech_news = results[2] if not isinstance(results[2], Exception) else "Error fetching tech news"
print(f"旧金山天气: {sf_weather}")
print(f"伦敦天气: {london_weather}")
print(f"科技新闻: {tech_news}")
# 在脚本中运行此代码:
# if __name__ == "__main__":
# asyncio.run(fetch_data_in_parallel())
处理并行执行中的错误需要小心。如果一个工具失败,智能体需要决定其他并行任务是否应继续,或者整体操作是否受到影响。使用asyncio.gather的return_exceptions=True参数,可以使智能体获取所有结果或异常,并单独处理它们。
许多复杂任务都受益于混合方法,即结合顺序和并行执行。智能体可能会并行执行多个数据收集步骤,然后顺序处理并整合收集到的信息。
例如,一个规划旅行的智能体可能:
这种结构允许智能体在可能的情况下优化速度(并行数据获取),同时在必要时保持逻辑顺序(分析和总结)。
结合并行数据收集与顺序处理的混合工作流。
LLM智能体如何决定是顺序还是并行使用工具?这通常涉及多种方式的结合:
顺序、并行或混合执行的选择是工具编排的一个基础方面。通过理解这些模式及其实现影响,你可以设计出不仅有能力,而且在如何运用工具解决问题和完成任务上表现高效的智能体。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造