拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Haystack 集成指南:使用 YouComWebSearch 组件接入 You.com 搜索 API

Haystack 集成指南使用 YouComWebSearch 组件接入 You.com 搜索 API【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack本文基于 Haystack 仓库中youcom-haystack集成组件参考文档位于 docs-website/reference_versioned_docs/version-2.22/integrations-api/youcom.md配套教程见 docs-website/docs/pipeline-components/websearch/youcomwebsearch.mdx编写。文章聚焦 You.com 搜索集成的完整 API 面、零配置 keyless 免密钥模式、全部可配置参数、同步/异步调用方式以及在 RAG Pipeline 中的落地用法并补充仓库源码侧的实现佐证帮助读者直接在 Haystack 项目中把实时联网搜索接进自己的 LLM 应用。组件定位给 Haystack Pipeline 加一个实时联网检索能力YouComWebSearch是 Haystack 生态中的 WebSearch 类组件之一同类组件还有BraveWebSearch、SearchApiWebSearch、SerperDevWebSearch等可参考 docs-website/docs/pipeline-components/websearch.mdx 的组件总览。它的职责非常单一接收一条查询字符串调用 You.com Search API 联网搜索再把搜索结果包装成 Haystack 的Document对象返回给 Pipeline 下游使用同时额外返回一份来源 URL 列表。在 Pipeline 中它最常见的摆放位置是ChatPromptBuilder或PromptBuilder之前作为 RAG检索增强生成的外部实时知识来源也可以放在索引型 Pipeline 的起点先把网页内容抓取回来再进入后续清洗、切分、写入 Document Store 的流程。与本地向量检索不同的是它检索的是当下最新的互联网内容因此特别适合回答时效性强的提问、补充模型知识截止日期之后的信息或者作为 Agent 工作流里的联网工具。该组件属于haystack-core-integrations扩展包包名为youcom-haystack在参考文档中以haystack_integrations.components.websearch.youcom.youcom_websearch模块形式提供模块内暴露两个公开 API异常类YouComError和组件类YouComWebSearch。零配置起步Keyless 免费层与 API Key 模式YouComWebSearch与大多数 WebSearch 组件最大的不同在于零配置可用当没有配置任何 API Key 时组件会自动降级到 You.com 的 keyless 免费层该层按 IP 限流这意味着快速上手的示例 Pipeline 无需任何注册、申请、环境变量配置就能直接运行当通过环境变量YOUDOTCOM_API_KEY或__init__的api_key参数传入密钥后组件会改用正式的有 Key 版 You.com Search API获得更高的调用额度通过keyless_fallbackFalse可以强制要求必须有 Key一旦密钥解析失败组件会直接抛出YouComError快速失败而不是静默降级到免费层——这对生产环境 Pipeline 非常重要密钥缺失应当以显式错误暴露出来而不是让流量偷偷走了低配额通道。参考文档 docs-website/reference_versioned_docs/version-2.22/integrations-api/youcom.md 给出了最精简的用法示例from haystack_integrations.components.websearch.youcom import YouComWebSearch websearch YouComWebSearch(top_k5) # no API key needed to get started result websearch.run(queryWhat is Haystack by deepset?) documents result[documents] links result[links]从仓库中的配套教程 docs-website/docs/pipeline-components/websearch/youcomwebsearch.mdx 可以看到安装方式同样简单pip install youcom-haystack安装完成后即可在任意 Python 环境中导入使用。类与异常YouComWebSearch 与 YouComErrorYouComErrorBases: ComponentErrorYouComError继承自 Haystack 的组件错误基类ComponentError语义是查询 You.com Search API 时发生了错误。它是组件在两类场景下抛出的统一异常类型keyless_fallbackFalse但未能解析出有效的 API Key 时密钥缺失导致的快速失败实际的 API 请求失败时网络错误、服务端错误、参数非法等。在 Pipeline 中捕获该异常即可对搜索失败做统一的降级或重试处理。YouComWebSearchclass YouComWebSearch组件类。核心能力一句话概括使用 You.com Search API 搜索网页并把结果作为 Haystack Documents 返回。除了上述 Keyless/Keyed 双模式之外它支持通过初始化参数精细化控制搜索行为结果数量、时间窗、地域、语言、内容过滤、额外参数、超时与重试并且同时提供同步run()与异步run_async()两种调用入口可以无缝接入 Haystack 的同步/异步 Pipeline 执行体系。init参数详解从 top_k 到 extra_paramsYouComWebSearch的构造函数签名来自参考文档如下__init__( api_key: Secret Secret.from_env_var(API_KEY_ENV_VAR, strictFalse), keyless_fallback: bool True, top_k: int | None 10, freshness: str | None None, country: str | None None, search_lang: str | None None, safesearch: str | None None, extra_params: dict[str, Any] | None None, timeout: int 10, max_retries: int 3, ) - None下表对每个参数的作用、取值范围和默认值做了完整梳理参数类型默认值说明api_keySecretSecret.from_env_var(YOUDOTCOM_API_KEY, strictFalse)You.com API Key。默认从YOUDOTCOM_API_KEY环境变量解析且采用宽松解析strictFalseKey 未设置不视为错误具体行为由keyless_fallback决定keyless_fallbackboolTrue无 Key 时的处理策略。为True时使用 Keyless 免费层按 IP 限流组件会记录日志说明选择了哪个端点为False时抛出YouComError快速失败top_kint \| None10每个区块web、news最多返回的结果数。映射为 You.com API 的count参数取值范围 1–100freshnessstr \| NoneNone只返回指定时间窗内的结果day、week、month、year或形如YYYY-MM-DDtoYYYY-MM-DD的日期区间countrystr \| NoneNone两位国家代码决定 web 结果的地区侧重例如US、DEsearch_langstr \| NoneNone返回结果的语言使用 BCP 47 格式例如EN、PT-BR。映射为 You.com API 的language参数safesearchstr \| NoneNone内容安全过滤级别off、moderate或strictextra_paramsdict[str, Any] \| NoneNone直接透传给 You.com Search API 的额外查询参数例如{include_domains: nytimes.com,bbc.com}用于访问组件未显式暴露的高级能力timeoutint10HTTP 请求超时时间秒max_retriesint3遇到瞬时故障时的最大重试次数几个值得注意的设计细节api_key用Secret类型承载与 Haystack 生态中其它涉及密钥的组件保持一致。Secret.from_env_var(API_KEY_ENV_VAR, strictFalse)表示从环境变量读取读不到也不报错这正是零配置模式能成立的前提——Key 是可选的。keyless_fallback是生产与开发场景的分水岭开发调试时保持默认True即可免配置跑通部署到生产时建议显式置为False让忘记配置密钥这类问题在启动/首次调用时立刻暴露。extra_params提供逃生舱You.com API 的演进速度快于组件迭代凡是组件尚未显式封装的查询参数都可以通过该 dict 直接透传例如限定来源域名include_domains或未来新增的其它过滤项。run 与 run_async同步/异步两种调用方式runrun(query: str, top_k: int | None None) - dict[str, Any]同步执行搜索。参数说明querystr必填搜索查询字符串top_kint | None可选单次运行的覆盖值指定后优先于初始化时的top_k不传则使用__init__阶段的配置。返回值是一个字典包含两个键documentsList[Document]每个Document承载一条搜索结果的内容linksList[str]搜索结果对应的来源 URL 列表。若 API 请求失败抛出YouComError。run_asyncrun_async(query: str, top_k: int | None None) - dict[str, Any]异步版本签名、参数、返回值与run()完全一致仅执行方式不同。它让组件可以无缝嵌入 Haystack 的异步执行链路例如AsyncPipeline在高并发检索场景下避免阻塞事件循环。参考文档明确指出所有配置项都可以通过向run()传入top_k在单次搜索中覆盖——也就是说top_k是一个初始化 运行时双通道参数其余参数freshness、country等则以初始化时为准。这种设计在组件化实践中很常见把稳定不变的偏好留在构造阶段把每次请求变化的量如结果数量暴露给运行阶段既灵活又不至于让每次调用都背上全量参数。完整实战独立使用与 RAG Pipeline 集成场景一独立使用直接取回检索结果配套教程 docs-website/docs/pipeline-components/websearch/youcomwebsearch.mdx 给出了无需 Key 即可运行的独立示例from haystack_integrations.components.websearch.youcom import YouComWebSearch web_search YouComWebSearch(top_k5) query What is Haystack by deepset? response web_search.run(queryquery) for doc in response[documents]: print(doc.content)response[documents]中的每个Document都携带网页正文内容response[links]则是对应的来源 URL可直接用于标注引用出处。场景二使用有 Key 的高配额 API 并快速失败当需要更高调用配额、且希望密钥缺失时立刻报错而不是悄悄降级到按 IP 限流的免费层时from haystack_integrations.components.websearch.youcom import YouComWebSearch from haystack.utils import Secret web_search YouComWebSearch( api_keySecret.from_env_var(YOUDOTCOM_API_KEY), keyless_fallbackFalse, top_k5, )这里Secret.from_env_var(YOUDOTCOM_API_KEY)默认是严格解析未设置会抛错配合keyless_fallbackFalse双重保证了必须显式提供有效密钥这一生产约束。场景三RAG Pipeline —— 检索 提示词构建 生成以下是一个完整的联网 RAG PipelineYouComWebSearch负责实时检索ChatPromptBuilder把检索结果与用户问题组装成提示词OpenAIChatGenerator负责最终生成回答。对应组件在仓库中的源码实现可参考 haystack/components/builders/chat_prompt_builder.py 与 haystack/components/generators/chat/openai.py。from haystack import Pipeline from haystack.utils import Secret from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder from haystack.components.generators.chat import OpenAIChatGenerator from haystack_integrations.components.websearch.youcom import YouComWebSearch from haystack.dataclasses import ChatMessage web_search YouComWebSearch(top_k3) prompt_template [ ChatMessage.from_system(You are a helpful assistant.), ChatMessage.from_user( Given the information below:\n {% for document in documents %}{{ document.content }}\n{% endfor %}\n Answer the following question: {{ query }}.\nAnswer:, ), ] prompt_builder ChatPromptBuilder( templateprompt_template, required_variables{query, documents}, ) llm OpenAIChatGenerator( api_keySecret.from_env_var(OPENAI_API_KEY), ) pipe Pipeline() pipe.add_component(search, web_search) pipe.add_component(prompt_builder, prompt_builder) pipe.add_component(llm, llm) pipe.connect(search.documents, prompt_builder.documents) pipe.connect(prompt_builder.prompt, llm.messages) query What is Haystack by deepset? result pipe.run(data{search: {query: query}, prompt_builder: {query: query}}) print(result[llm][replies][0].text)这段代码的要点组件注册web_search、prompt_builder、llm三个组件依次通过add_component注册进同一个Pipeline数据流连接search.documents→prompt_builder.documents把实时检索到的Document列表喂给提示词构建器prompt_builder.prompt→llm.messages把拼好的聊天消息序列送入大模型模板语言ChatPromptBuilder的模板使用 Jinja 风格语法{% for document in documents %}循环把每条检索结果的content展开进提示词required_variables{query, documents}声明了模板依赖的两个变量一次运行pipe.run()同时传入search和prompt_builder两个组件的输入Haystack 会根据连接关系自动完成搜索 → 拼提示词 → 生成的完整链路。运行结果中result[llm][replies][0].text即大模型基于实时联网信息生成的最终回答。整个 Pipeline 无需预置本地知识库适合新闻问答、实时资讯总结、模型知识截止日期后的信息查询等场景。与其它 WebSearch 组件对比选型从 docs-website/docs/pipeline-components/websearch.mdx 的组件总览可以看出Haystack 生态提供了多个 WebSearch 组件各有侧重组件特点YouComWebSearch基于 You.com Search API可选 Keyless 免费层零配置即可起步支持freshness/country/search_lang/safesearch等丰富过滤参数SerperDevWebSearch基于 SerperDevGoogle 结果代理API需配置 API KeySearchApiWebSearch基于 Search API 服务需配置 API KeyBraveWebSearch基于 Brave Search API需配置 API KeyDDGSWebSearch基于 ddgs 多引擎聚合无需 API Key但稳定性与合规性取决于上游选择建议若追求开箱即用 免密钥快速验证YouComWebSearch的 Keyless 模式在开发阶段几乎零摩擦若需要稳定的生产级配额与可预期的计费则配置YOUDOTCOM_API_KEY并开启keyless_fallbackFalse把密钥管理纳入既有 Secret 体系。源码阅读指引如果希望深入理解该组件的实现细节可以沿着以下路径在仓库中继续探索docs-website/reference/integrations-api/youcom.md当前版本非版本化快照对应的 API 参考结构与本文所依据的 2.22 版本一致docs-website/docs/pipeline-components/websearch/youcomwebsearch.mdx组件的用户指南Overview、配置项、三个实战示例的完整来源docs-website/docs/pipeline-components/websearch.mdxWebSearch 组件家族总览便于横向对比选型haystack/components/builders/chat_prompt_builder.pyRAG 示例中的ChatPromptBuilder提示词构建器实现haystack/components/generators/chat/openai.pyRAG 示例中的OpenAIChatGenerator生成器实现haystack/dataclasses/chat_message.py示例中使用的ChatMessage数据结构定义。组件本体位于独立的haystack-core-integrations仓库包名youcom-haystack通过pip install youcom-haystack安装后即与当前 Haystack 主仓库无缝协作。小结YouComWebSearch以极低的接入成本可选零配置为 Haystack Pipeline 补齐了实时联网检索这一环top_k控制结果数量、freshness/country/search_lang/safesearch精细化过滤、extra_params透传高级参数、timeout/max_retries保障请求稳健性run()与run_async()双入口适配同步/异步执行keyless_fallback在开发体验与生产严谨性之间提供了明确开关。无论是快速验证的独立脚本还是生产级的联网 RAG / Agent 工作流它都是一个值得优先评估的 WebSearch 组件选型。【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门