ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Agno × Parallel 集成实战:用四类 Agent API 从单个研究 Agent 构建到可部署应用

Agno × Parallel 集成实战:用四类 Agent API 从单个研究 Agent 构建到可部署应用 Agno × Parallel 集成实战用四类 Agent API 从单个研究 Agent 构建到可部署应用【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agnoAgno 官方仓库在 cookbook/integrations/parallel 目录下提供了一套完整的 Parallel 集成示例集从最小的网络研究 AgentSearch API起步逐步覆盖 URL 内容提取Extract、带引用的深度研究Task、持久化会话与记忆、知识库混合检索、多 Agent 团队、确定性研究流水线、周期性监控Monitor最终以 AgentOS 应用的形式部署上线。读完本文你将掌握 ParallelTools 的全部开关与参数理解九条示例各自解决的问题并能参照配套的静态校验与运行时清单把这些示例改造为自己的可运行研究系统。Parallel 面向 Agent 的四类 API在动手写代码之前先明确 Parallel 为 Agent 场景提供的四类 API 定位。根据 README.md 中的速查表API速度适用场景Search1–5s快速查证为回答收集来源Extract1–5s从指定 URL 提取干净文本含 JS 页面与 PDFTask10s–25min深度研究输出结构化结果并附引用Monitor定时调度长期跟踪话题、检测变化这套 API 设计决定了 Agent 的分工方式日常快速问答走 Search手里已有确切 URL 时走 Extract需要严谨、可核验的长篇报告时走 Task需要持续知情而非一次性调研时走 Monitor。在 Agno 中这四类能力被统一封装进ParallelTools工具箱Toolkit按需开关即可。环境准备与设置运行该目录下任何示例都需要两个前置条件见 README.mdpip install parallel-web export PARALLEL_API_KEYyour-api-keyparallel-web是 Parallel 官方 Python 客户端。如果缺失ParallelTools会在导入时直接抛出ImportError提示安装见 libs/agno/agno/tools/parallel.py。API Key 既可以写在环境变量PARALLEL_API_KEY中也可以显式传入ParallelTools(api_key...)源码中的读取顺序是显式参数优先否则读环境变量见 parallel.py。部分示例需要额外依赖05_web_plus_knowledge.py使用本地向量库chromadbpip install parallel-web chromadb由于 Agent 的推理模型OpenAIResponses与 Embedding 模型OpenAIEmbedder均来自 OpenAI运行时还需export OPENAI_API_KEYyour-api-key。运行示例的统一方式仓库推荐使用项目自带虚拟环境.venvs/demo/bin/python cookbook/integrations/parallel/file.py快速开始最小的 Parallel 研究 AgentREADME.md 给出的最小可运行示例核心只有几行from agno.agent import Agent from agno.models.openai import OpenAIResponses from agno.tools.parallel import ParallelTools agent Agent( modelOpenAIResponses(idgpt-5.4), tools[ParallelTools()], # Search Extract by default ) agent.print_response(What did Parallel launch most recently?, streamTrue)对应完整实现见 01_quickstart.pyParallelTools()默认同时启用Search 和 Extract两个 APIenable_searchTrue、enable_extractTrue。Parallel 的 Search API 是为 Agent 而设计的——它接收自然语言目标objective返回可供模型直接推理的排序摘录ranked excerpts通常一次工具调用就足以让回答获得事实支撑。默认情况下 Task 与 Monitor 是关闭的需要显式开启见 README.mdParallelTools(enable_taskTrue) # deep research with citations ParallelTools(enable_monitorTrue) # track topics over time九个示例从单个 Agent 到可部署研究应用的进阶路径README.md 明确把这九个文件定位为一条递进式学习路径下面逐一展开。01_quickstart.py最小研究 AgentSearch上一节的快速开始即是本文件。它验证的是给 Agent 一个 Search 工具再问一个需要新鲜网络信息的问题这一最小闭环。由于 Search 摘录本身面向 LLM 优化问题设计上应倾向需要当前事实的提问如Parallel 最近发布了什么、何时发布。02_extract_content.py把已知 URL 变成干净文本Extract适用场景是你已确定目标 URL文档、财报、竞品定价页、PDF不再需要搜索。该示例的关键是显式关掉 Search强制 Agent 只读用户给的链接extract_tools ParallelTools( enable_searchFalse, enable_extractTrue, )Extract API 能处理 JavaScript 重度渲染的页面和 PDF返回干净的结构化文本。摘录excerpts默认返回最相关的段落当 Agent 需要整页内容时可在单次调用中请求full_content见 02_extract_content.py 的注释说明。同时通过instructions约束输出格式提取用户提供的 URL 内容、总结要点、并标注每个结论对应的 URL。03_deep_research.py带引用的深度研究报告TaskTask API 的运行方式与 Search/Extract 有本质区别Agent 先调用create_task()启动多步研究再调用get_task_result()取回报告及其来源basis——即结论背后的引用与置信度。这正是可回答与可核验的区别。Processor处理器在深度与耗时之间做权衡见 03_deep_research.pybase快速适合大多数问题数秒到几分钟pro更深且是auto输出模式所必需的ultra最大深度可能运行数十分钟。示例的典型配置为research_tools ParallelTools( enable_searchFalse, enable_extractFalse, enable_taskTrue, default_processorbase, default_output_schema{type: text}, )这里{type: text}输出模式对应一篇带内联引用的长文 Markdown 报告。整体流程上Agent 的指令明确要求用create_task()启动深度研究、用get_task_result()取结果、展示发现并为每条结论列出来源。04_research_assistant.py可回访的持久化研究助手该示例将 Parallel 的三个 Agent APISearch、Extract、Task与 Agno 的持久化能力组合SQLite 存储的会话、对话历史与用户记忆。实现要点见 04_research_assistant.pydb SqliteDb(db_filetmp/parallel_assistant.db) research_tools ParallelTools( enable_searchTrue, enable_extractTrue, enable_taskTrue, default_processorbase, ) assistant Agent( nameResearch Assistant, modelOpenAIResponses(idgpt-5.4), tools[research_tools], dbdb, add_history_to_contextTrue, num_history_runs5, update_memory_on_runTrue, markdownTrue, instructions[...], )运行时通过user_id与session_id固定会话身份第一轮建立调研主题后第二轮追问时助手能记住上下文见 04_research_assistant.pyassistant.print_response(Im evaluating web-research APIs ..., streamTrue, user_idresearcherexample.com, session_idparallel-research-session) assistant.print_response(Of those, which support deep research with citations?, streamTrue, user_iduser_id, session_idsession_id)会话与记忆数据写入tmp/parallel_assistant.db。关于 Agno 侧持久化机制的更多示例可参考 cookbook/06_storage/01_persistent_session_storage.py。05_web_plus_knowledge.py实时网络搜索 自有文档知识库真实 Agent 需要两类信息自有文档里的静态事实以及此刻正在发生的网络动态。该示例让一个 Agent 同时拥有两者并自行判断用哪个见 05_web_plus_knowledge.py本地知识库Agno Knowledge Chroma 向量库ChromaDb本地持久化、无需服务端使用OpenAIEmbedder(idtext-embedding-3-small)做嵌入检索类型为SearchType.hybrid混合检索实时网络ParallelTools()提供的 Search通过search_knowledgeTrue给 Agent 注入知识库搜索工具。运行时的验证方式是先用knowledge.insert(url...)把一份 PDF 文档灌入知识库再依次问内部文档问题走知识库与本周 AI Agent 框架最新动态走实时网络Agent 会按指令说明自己用的是哪个来源见 05_web_plus_knowledge.py。06_research_team.py分工协作的研究团队当单一 Agent 力有不逮时用Team分而治之网页研究员负责广度与时效Search Extract深度研究员负责带引用的深度结论Task由团队lead综合出单一答案。成员按 Parallel API 的不同切片各自装配工具见 06_research_team.pyweb_researcher Agent( nameWeb Researcher, roleFind recent, relevant sources on the web using Parallel Search., modelOpenAIResponses(idgpt-5.4), tools[ParallelTools(enable_searchTrue, enable_extractTrue)], ) deep_researcher Agent( nameDeep Researcher, roleRun deep research with citations using the Parallel Task API., modelOpenAIResponses(idgpt-5.4), tools[ParallelTools(enable_searchFalse, enable_extractFalse, enable_taskTrue, default_processorbase, default_output_schema{type: text})], ) research_team Team( nameResearch Team, modelOpenAIResponses(idgpt-5.4), members[web_researcher, deep_researcher], instructions[Coordinate the two researchers ...], markdownTrue, show_members_responsesTrue, )show_members_responsesTrue会在最终答案中呈现各成员响应便于核对每位研究员的产出。07_research_workflow.py确定性的先收集、后综合流水线Team 的协调方式由模型自主决定Workflow则保证每次执行相同的有序步骤。该流水线永远先做1用 Search Extract 收集来源再做2把素材综合成一份带引用的简报见 07_research_workflow.pyresearch_pipeline Workflow( nameResearch Pipeline, descriptionGather sources, then synthesize a cited research brief., dbSqliteDb(db_filetmp/parallel_workflow.db), steps[ Step(nameGather Sources, agentsource_gatherer), Step(nameWrite Brief, agentreport_writer), ], )source_gatherer装配 Search Extract 并输出带来源 URL 的事实要点report_writer不带工具只负责把素材写成每条结论都挂接来源 URL 的简报。工作流运行记录同样落入 SQLitetmp/parallel_workflow.db。需要可重复、可审计的研究流程时优先选择 Workflow。08_competitive_intel_monitor.py定时监控的常设情报台Monitor API 让调研一次升级为持续知情它在服务端按计划表监控话题检测到变化时记录事件。示例 Agent 装配了完整的监控工具集并设置默认监控频率monitor_tools ParallelTools( enable_searchFalse, enable_extractFalse, enable_monitorTrue, default_monitor_frequency1d, )Agent 指令定义了情报台的日常工作流create_monitor创建监控、list_monitors查看在跑的监控项、get_monitor_events汇报检测到的变化并给每处变化标注来源见 08_competitive_intel_monitor.py。需要特别说明的一点代码注释与原文档均强调监控在服务端按自己的计划运行新建的 monitor 首轮不会有事件需要稍后重跑才能看到检测到的变化。09_agent_os_app.py把研究 Agent 部署为 AgentOS 应用最后一站是交付形态用 AgentOS 包装研究 Agent几行代码即可获得生产级 API 与 AgentOS 控制面。启动后打开 http://localhost:7777 即可与 Agent 对话或调用其 REST APIAPI 文档在/docs配置在/configdb SqliteDb(db_filetmp/parallel_os.db) research_agent Agent( nameParallel Research Agent, modelOpenAIResponses(idgpt-5.4), tools[ParallelTools(enable_searchTrue, enable_extractTrue, enable_taskTrue)], dbdb, add_history_to_contextTrue, markdownTrue, instructions[...], ) agent_os AgentOS(descriptionParallel-powered research app, agents[research_agent]) app agent_os.get_app() if __name__ __main__: agent_os.serve(appapp) # http://localhost:7777实现细节上因为该文件名以数字开头不能用于module:app字符串式的热重载所以直接把 FastAPI 的app对象传给serve()见 09_agent_os_app.py 的注释。运行后应启动即终止boot then terminate完成冒烟验证。ParallelTools 参数全景从源码看默认值与取值范围ParallelTools的完整参数定义位于 libs/agno/agno/tools/parallel.py。综合其 docstring 与构造器可整理出下表参数默认值说明api_keyPARALLEL_API_KEY环境变量未显式传入时读取环境变量缺失会记录错误日志enable_searchTrue启用 Search APIparallel_searchenable_extractTrue启用 Extract APIparallel_extractenable_taskFalse启用 Task API注册create_task/get_task_status/get_task_resultenable_monitorFalse启用 Monitor API注册create_monitor/get_monitor/update_monitor/list_monitors/get_monitor_events/cancel_monitorallFalse为True时覆盖单项开关启用全部工具max_results10搜索默认最大结果数max_chars_per_result10000单条结果默认最大字符数modeNone使用advanced搜索模式turbo/basic/advancedinclude_domains/exclude_domainsNone搜索限定/排除的域名列表max_age_secondsNone缓存结果的最大年龄阈值最小 600 秒disable_cache_fallbackNone是否禁用缓存回退default_processorbaseTask API 默认处理器default_monitor_processorliteMonitor API 处理器可选lite/basedefault_monitor_frequency1d监控频率可选1h/1d/1w/30ddefault_timeout1800Task 结果等待超时秒默认 30 分钟适配pro档ultra档深度研究可上调至 3600default_output_schemaNone结构化输出模式裸字符串描述、{type: auto}、{type: json, json_schema: {...}}或{type: text}从源码可以看到工具注册的映射关系见 parallel.pyenable_task一次性注册研究任务的三段式调用链创建→查状态→取结果enable_monitor一次性注册监控的完整生命周期方法。Task 调用时default_processor与default_output_schema会被组装进请求参数task_params/task_spec.output_schemaMonitor 的frequency与output_schema同理见 parallel.py 与 parallel.py。质量验证流程静态校验 运行时清单本目录的验证状态记录在 TEST_LOG.md这是该集成是否可交付的验收依据分为两个层面。静态验证模式检查与代码风格check_cookbook_pattern.py — PASS以递归方式对 cookbook 目录做静态模式检查.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py --base-dir cookbook/integrations/parallel --recursive检查对象为 9 个文件覆盖docstring、section banner、Create/Run 顺序、main 门控、emoji 规则等结果为 0 违规。ruff format check — PASS对cookbook/integrations/parallel执行ruff format与ruff check9 个文件格式无改动、检查无告警。若你的环境未安装 ruff可参考仓库根目录 scripts/format.sh 与 scripts/validate.sh 了解格式化与校验入口。运行时清单PENDING 状态与注意事项运行时验证依赖外部密钥当前为 PENDING 状态——需要PARALLEL_API_KEY以及模型/Embedding 用的OPENAI_API_KEY才能执行。九个文件的逐项运行状态与要点如下继承自 TEST_LOG.md文件状态说明01_quickstart.pyPENDING搜索最快的冒烟测试02_extract_content.pyPENDING从给定 URL 提取内容03_deep_research.pyPENDINGTask APIbase 处理器可能耗时数分钟04_research_assistant.pyPENDING写入tmp/parallel_assistant.db05_web_plus_knowledge.pyPENDING需要chromadb下载示例 PDF写入tmp/chromadb06_research_team.pyPENDING团队运行深度研究员使用 Task API07_research_workflow.pyPENDING写入tmp/parallel_workflow.db08_competitive_intel_monitor.pyPENDING创建服务端 monitor首轮无事件09_agent_os_app.pyPENDING在 http://localhost:7777 启动 AgentOS启动后终止有密钥后建议按表格自上而下的顺序逐个运行01最快用于验证 API Key 与链路连通03、06因 Task API 可能耗时较久05需额外安装chromadb并会下载示例 PDF08首次运行看不到事件属正常现象monitor 服务端按调度运行09属于部署形态验证确认服务能启动并响应即可终止进程。从示例到自己的研究系统九条示例共同覆盖了构建研究型应用的完整决策面可按需组合以01/02做能力冒烟以04的 SqliteDb 会话/记忆模式沉淀用户上下文以05打通自有知识 实时网络双通道以06/07在自主协调与确定性流水线之间做选择以08建立长期情报监控最后以09交付为 AgentOS 应用。若你需要每种 API 一个示例的工具级速查参考仓库还提供了 cookbook/91_tools/parallel 目录Parallel 相关的完整工具实现与参数定义可继续深入阅读 libs/agno/agno/tools/parallel.py。【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进