
AI Agent自主智能体后端RAG【免费下载链接】SuperAGI⚡️ SuperAGI - A dev-first open source autonomous AI agent framework. Enabling developers to build, manage run useful autonomous agents quickly and reliably.项目地址https://gitcode.com/gh_mirrors/su/SuperAGI点击查看免费下载SuperAGI 的 DuckDuckGo 搜索工具DuckDuckGo Search Tool为自主 AI Agent 提供了一条无需申请任何搜索引擎 API Key 即可联网检索的通道Agent 只需给出一个查询语句工具便会执行 DuckDuckGo 搜索、抓取网页正文、并经 LLM 汇总后返回带出处的结构化答案。本文将以 工具目录 README 为骨架结合仓库源码与单元测试完整讲解该工具的安装、使用方式、内部执行流水线、关键参数调优要点与可验证的源码依据帮助你理解并复用这一「零成本联网」能力。工具概览一条纯查询驱动的网络信息链路官方文档对这款工具的功能定位非常明确帮助用户执行 DuckDuckGo 搜索并提取搜索结果中的摘要snippets与网页正文webpages。它解决的是自主 Agent 最常见的痛点——模型知识存在截止时间而世界上的信息在持续更新。有了它你只需向 Agent 提出关于当前世界上任何事物最新信息的查询Agent 就能自行「浏览互联网」并给出回答全程不需要人类手动输入结果。在 SuperAGI 的源码中该能力被组织为标准的「Toolkit Tool」两级结构DuckDuckGoToolkit名为DuckDuckGo Search Toolkit的工具包负责向 Agent 暴露工具列表DuckDuckGoSearchTool名为DuckDuckGoSearch的具体工具实现「搜索 → 抓取 → 汇总」的完整链路。从测试代码 test_duckduckgo_toolkit.py 可以看到get_tools()返回的列表中恰好包含一个DuckDuckGoSearchTool实例而get_env_keys()返回空列表——这一点非常重要该工具不需要配置任何环境密钥如 API Key开箱即用是 Agent 工具集中部署成本最低的联网搜索方案之一。安装与启用工具的安装分为两步先完成 SuperAGI 平台本身的部署再在 Agent 配置中选择启用该工具。第一步部署 SuperAGI按照仓库根目录的 README.MD 中的指引完成 SuperAGI 的安装与启动Docker Compose 一键启动或本地源码运行均可具体步骤以该文档为准。部署完成后即可在 SuperAGI 的 GUI 界面gui 目录中创建 Agent。第二步在 Agent 中挂载 DuckDuckGo 搜索工具在创建或编辑 Agent 时从工具列表中选择DuckDuckGo Search Toolkit对应 DuckDuckGoToolkit。由于get_env_keys()返回空列表此处无需填写任何密钥或额外配置勾选即可使用。依赖层面该工具依赖的 DuckDuckGo 搜索 Python 包已在根目录 requirements.txt第 156 行中固定版本声明duckduckgo-search3.8.3。安装 SuperAGI 依赖时即会一并装好无需单独处理。使用方法向 Agent 直接提问按照官方文档使用方式极为简洁——直接向你的 Agent 提问关于世界上任何事物的最新信息即可。例如「帮我查一下本周全球 AI 领域的重要新闻」「OpenAI 最新发布的模型有哪些新特性」「今天比特币的价格走势」Agent 会判定该任务需要联网检索自动调用DuckDuckGoSearch工具将你的问题作为query传入工具描述明确写着Input should be a search query随后把检索并汇总后的结果组织进回复中。源码架构工具类的字段与 SchemaDuckDuckGoSearchTool 继承自 BaseTool其核心字段如下字段值说明nameDuckDuckGoSearch工具标识供 Agent 与前端识别descriptionA tool for performing a DuckDuckGo search and extracting snippets and webpages. Input should be a search query.工具能力描述Agent 依据它决定何时调用args_schemaDuckDuckGoSearchSchema参数模型唯一入参为query字符串必填llmOptional[BaseLlm]用于结果汇总的 LLM 实例由 Agent 运行时注入agent_id/agent_execution_idint用于错误上报时定位具体的 Agent 与执行会话其中DuckDuckGoSearchSchema使用 Pydantic 定义了唯一入参class DuckDuckGoSearchSchema(BaseModel): query: str Field( ..., descriptionThe search query for duckduckgo search., )query为必填字符串含义即搜索查询词。BaseTool的execute()方法会先通过_parse_input()将 Agent 传来的输入字符串或字典按此 Schema 校验再调用_execute()因此非法入参会在进入网络请求前被拦截。关键常量与默认参数源码在模块顶部集中定义了影响检索行为的关键常量理解它们是调优该工具的基础常量默认值作用DUCKDUCKGO_MAX_ATTEMPTS3搜索无结果时的最大重试次数NUM_RESULTS_TO_USE10保留的搜索结果条数取前 10 条MAX_LINKS_TO_SCRAPE3实际抓取网页正文的链接数量取前 3 条WEBPAGE_EXTRACTOR_MAX_ATTEMPTS2网页正文抓取为空时的最大重试次数正文截取上限500 词每个网页正文只保留前 500 个词汇总输入上限3000 tokens结构化结果 JSON 超过 3000 tokens 即停止追加max_token_limit默认 600LLM 汇总输出的最大 token 数来源见 base_tool.pyMAX_TOOL_TOKEN_LIMIT配置项默认 600这些常量共同决定了「检索多少 → 抓取多少 → 喂给 LLM 多少」的带宽控制目的是在信息完整度与 token 成本之间取得平衡。执行流水线一次搜索的完整旅程工具的核心逻辑位于_execute(query)整体分为五个阶段下面结合源码逐段拆解文件duck_duck_go_search.py。阶段一发起搜索并取前 10 条结果get_raw_duckduckgo_results(query)使用duckduckgo-search包的DDGS().text(query)发起文本搜索再通过islice截取前 10 条NUM_RESULTS_TO_USEresults DDGS().text(query) search_results list(islice(results, NUM_RESULTS_TO_USE))此处有两处健壮性处理若query为空直接返回[]JSON 空数组若结果为空则在DUCKDUCKGO_MAX_ATTEMPTS3 次内重试直到拿到非空结果为止。对应的单元测试见 test_duckduckgo_results.py空查询返回[]有效查询返回长度为 10 的结果列表。阶段二从结果中提取链接_execute遍历搜索结果把每条结果的href字段收集为链接数组for result in search_results: links.append(result[href])这些链接将作为下一步网页抓取的输入。阶段三抓取前 3 条网页正文get_content_from_url(links)只处理前MAX_LINKS_TO_SCRAPE3条链接。对每条链接time.sleep(3)——每次抓取前休眠 3 秒降低对目标站点的请求频率调用WebpageExtractor().extract_with_bs4(links[i])提取正文只保留前 500 个词 .join(content.split( )[:500])若提取结果为空在WEBPAGE_EXTRACTOR_MAX_ATTEMPTS2 次内重试。当links为空数组时该函数直接返回空列表对应测试用例test_get_content_from_url_with_empty_links。阶段四组装结构化结果并控制 token 上限get_formatted_webpages(search_results, webpages)将搜索结果的标题、抓取的正文和原文链接组装为统一结构results.append({title: search_results[i][title], body: webpage, links: search_results[i][href]})每追加一条就用TokenCounter.count_text_tokens(json.dumps(results))统计已累计的 token 数一旦超过3000立即停止追加防止后续汇总时上下文超限。组装完成后_execute会从中过滤出包含非空链接的结果供最终输出引用。阶段五LLM 汇总生成答案summarise_result(query, snippets)将上述结构化结果与用户查询一起灌入一个固定的汇总提示词模板Summarize the following text {snippets} Write a concise or as descriptive as necessary and attempt to answer the query: {query} as best as possible. Use markdown formatting for longer responses.随后通过self.llm.chat_completion(messages, max_tokensself.max_token_limit)调用 LLM 生成最终答案其中max_tokens取自BaseTool.max_token_limit即配置项MAX_TOOL_TOKEN_LIMIT默认 600。若 LLM 返回错误且携带错误消息则交由ErrorHandler.handle_openai_errors()进行统一处理错误定位所需的信息即来自工具类上的agent_id与agent_execution_id字段。最终返回_execute的返回值由「汇总摘要」与「参考链接」两部分组成若有非空链接则在摘要末尾追加Links:段落最多列出前 3 条links[:3]格式为 Markdown 列表否则仅返回摘要。这样 Agent 既拿到了答案也拿到了可追溯的出处。网页正文提取的底层实现工具调用的WebpageExtractor定义在 webpage_extractor.py。extract_with_bs4()的实现要点每次请求随机选择一个USER_AGENTS列表中的浏览器 User-Agent模拟 Chrome、Firefox、Safari、Edge 等降低被目标站点反爬拒绝的概率请求超时设为 10 秒仅接受200响应404时返回明确的错误提示字符串抓取后先剔除script、style、nav、footer、head、link、meta、noscript等噪音标签在main、article、section、div区域中挑选文本量最大的容器作为主内容区再抽取其中的p、h1~h6标签文本最后用正则把连续空白压缩为单空格得到干净的正文。该提取器同时提供extract_with_3knewspaper3k requests-html 渲染与extract_with_lxmllxml CSS 选择器两种备选实现工具当前选用 bs4 方案兼顾解析成功率与依赖轻量。单元测试行为契约的验证依据仓库在 tests/unit_tests/tools/duck_duck_go 目录下为本工具提供了两组测试是理解工具行为契约的直接依据test_duckduckgo_toolkit.py验证DuckDuckGoToolkit.get_tools()恰好返回 1 个工具且类型为DuckDuckGoSearchToolget_env_keys()返回空列表再次印证「无需环境密钥」。test_duckduckgo_results.py验证空查询返回[]、有效查询返回 10 条结果、get_formatted_webpages的字段映射title/body/links正确、空链接输入返回空网页列表、空网页输入返回空结果数组。这些用例覆盖了工具在「无输入、正常输入、空结果」三类边界情况下的行为可作为你在集成或二次开发时的回归保障参考。使用限制与调优建议基于源码结构以下几点需要在实际使用中注意以下均为从代码推断的实现事实请结合部署环境验证依赖公开搜索接口工具通过duckduckgo-search包调用 DuckDuckGo 的公开搜索服务不依赖自有 API Key因此可用性受第三方服务稳定性与网络可达性影响代码中通过最多 3 次重试、抓取间隔 3 秒等机制做了初步容错。信息覆盖范围有限一次调用最多抓取前 3 条链接的正文各取前 500 词汇总输入被限制在 3000 tokens 以内因此对于需要海量资料支撑的深度调研类任务可能需要 Agent 分多次调用该工具。可调参数上述常量集中在 duck_duck_go_search.py 顶部可结合检索质量与 token 成本调整汇总输出长度则由全局配置MAX_TOOL_TOKEN_LIMIT默认 600见 base_tool.py控制。抓取速度get_content_from_url中每次抓取前固定time.sleep(3)一次完整调用在抓取阶段至少耗时约 9 秒属于有意的限速设计可在实际运行时据此估算任务耗时。小结SuperAGI DuckDuckGo 搜索工具以极低的接入成本无需密钥、单一query入参为自主 Agent 补齐了实时信息获取能力其「搜索 → 抓取 → 限流 → 汇总 → 附链接」的五段式流水线在源码中清晰可循并配有完整的单元测试作为行为契约。对希望让 Agent 回答「世界上正在发生什么」类问题的开发者而言它是值得优先启用的基础工具之一理解其常量与 token 上限则能帮助你更好地平衡检索深度与推理成本。赞分享AI Agent自主智能体后端RAG【免费下载链接】SuperAGI⚡️ SuperAGI - A dev-first open source autonomous AI agent framework. Enabling developers to build, manage run useful autonomous agents quickly and reliably.项目地址https://gitcode.com/gh_mirrors/su/SuperAGI点击查看免费下载相关推荐Mastra 集成 Perplexity Search为 Agent 打造实时联网搜索工具的完整指南Mastra 集成 Perplexity Search为 Agent 打造实时联网搜索工具的完整指南 mastra/perplexity 是 Mastra音视频后端OpenClaw DuckDuckGo 搜索集成指南免 API Key 的 web_search 实验性提供方OpenClaw DuckDuckGo 搜索集成指南免 API Key 的 web_search 实验性提供方 DuckDuckGo 是 OpenClaw 中AI 应用AI Agent交互助手后端即时通讯网关hive 项目 Aden Tools 中 DuckDuckGo 搜索工具实战指南无需 API Key 的 Web / News / Images 三合一检索方案hive 项目 Aden Tools 中 DuckDuckGo 搜索工具实战指南无需 API Key 的 Web / News / Images 三合一检索方人工智能AI Agent多智能体MCP 服务工具调用浏览器控制上一篇从概念到产品Tauri商业应用开发全流程解析下一篇风扇不转就喊热用FanControl接管你的电脑散热创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考