人工智能RAG大模型【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址https://gitcode.com/GitHub_Trending/ll/llama_index点击查看免费下载Valyu 是面向 LLM 应用的内容检索平台通过其 deep search API 让 Agent 既能检索互联网公开网页也能访问经过商业授权的专有内容库。本文围绕 LlamaIndex 仓库中的ValyuToolSpec与ValyuRetriever展开完整讲解如何安装、配置、调用搜索与内容抽取能力并深入源码与测试验证每个参数的取值与行为。读完本文你将能够把 Valyu 作为 Function Tool 接入FunctionAgent/OpenAIAgent或作为检索器接入 LlamaIndex 的 RAG 检索管线。Valyu 工具定位与仓库结构在 LlamaIndex 的集成生态中Valyu 工具属于llama-index-integrations/tools/下的独立包llama-index-tools-valyu版本 0.7.0见 pyproject.toml。它的职责是让 Agent 通过 Valyu 的深度搜索与内容抽取 API获得来自「程序化授权的专有内容」和「互联网公开内容」两大类来源的检索结果并统一转换为 LlamaIndex 的Document数据对象从而无缝衔接下游的索引、检索与问答流程。整个模块的文件布局非常清晰文件职责llama_index/tools/valyu/base.py定义ValyuToolSpec封装search与get_contents两个工具函数llama_index/tools/valyu/retriever.py定义ValyuRetriever实现BaseRetriever接口供检索管线直接使用llama_index/tools/valyu/init.py导出ValyuToolSpec、ValyuRetrieverREADME.md官方用法示例examples/context.py接入OpenAIAgent的完整示例examples/retriever_example.py使用ValyuRetriever的完整示例tests/test_tools_valyu.py覆盖初始化、搜索、内容抽取、检索器四类行为的测试docs/api_reference/api_reference/tools/valyu.mdAPI 参考文档入口mkdocstrings 自动生成ValyuToolSpec文档依赖方面包要求valyu2.0.3作为底层 SDK、llama-index-core0.13.0,0.15提供Document、BaseToolSpec等核心抽象Python 版本要求3.10,4.0。安装与凭据准备安装工具包及其运行时依赖pip install llama-index llama-index-core llama-index-tools-valyu使用前需要获取 Valyu API Key两种提供方式任选其一在 Valyu 开发者平台申请 API Key 后显式传入构造函数设置环境变量VALYU_API_KEY这样即使不显式传参底层 SDK 也能读取。import os from llama_index.tools.valyu import ValyuToolSpec # 方式一显式传入 valyu_tool ValyuToolSpec(api_keyos.environ[VALYU_API_KEY]) # 方式二依赖环境变量构造函数仍要求 api_key 参数非空需要说明的是ValyuToolSpec.__init__对api_key有严格的校验逻辑base.py必须是「非空字符串」否则立即抛出ValueError(api_key must be a non-empty string)避免带着空凭据发起无意义的网络请求。核心类 ValyuToolSpec 与工具化机制ValyuToolSpec继承自llama_index.core.tools.tool_spec.base.BaseToolSpec通过声明spec_functions [search, get_contents]base.py告诉框架哪些方法可以被转换为 Agent 可调用的 Function Tool。转换动作由BaseToolSpec.to_tool_list()完成tool_spec/base.py框架遍历spec_functions用getattr取到对应方法读取其 docstring 与函数签名生成ToolMetadata最终包装成FunctionTool。这也解释了为什么search与get_contents的方法 docstring 写得非常详细——它们会直接作为工具描述暴露给 LLM成为模型理解工具用途与参数语义的唯一依据。最简单的接入方式如下示例来自 README.mdfrom llama_index.tools.valyu import ValyuToolSpec from llama_index.core.agent.workflow import FunctionAgent from llama_index.llms.openai import OpenAI import os valyu_tool ValyuToolSpec( api_keyos.environ[VALYU_API_KEY], max_price100, # 默认是 100 美元 ) agent FunctionAgent( toolsvalyu_tool.to_tool_list(), llmOpenAI(modelgpt-4.1), ) print( await agent.run( What are the implications of using different volatility calculation methods (EWMA vs. GARCH) in Value at Risk (VaR) modeling for fixed income portfolios? ) )search深度搜索参数详解search是 Valyu 工具的核心能力用于「从专有与公开来源中搜索并检索相关内容」。它的参数分为初始化时固定与调用时灵活指定两类二者界限在源码注释中明确给出。初始化时固定的参数在构造ValyuToolSpec时设置、随后不可在单次search调用中覆盖的参数如下来自 base.py参数类型默认值说明api_keystr必填Valyu API KeyverboseboolFalse开启后打印搜索响应/抽取响应日志max_priceOptional[float]100单次搜索操作的最大成本上限美元None表示不限制relevance_thresholdfloat0.5结果相关性得分的最低阈值取值0.0–1.0fast_modeOptional[bool]False快速模式返回更快但更短的结果传None时交由模型在每次搜索中自行决定included_sourcesOptional[List[str]]None仅在这些 URL / 域名 / 数据集范围内搜索并返回结果excluded_sourcesOptional[List[str]]None从搜索结果中排除的 URL / 域名 / 数据集列表response_lengthOptional[Union[int, str]]None每个结果返回的字符数预设值short(25k)、medium(50k)、large(100k)、max(完整内容)或直接传正整数表示自定义字符数country_codeOptional[str]None两位字母 ISO 国家码如GB、US用于将搜索结果偏向特定国家contents_summaryOptional[Union[bool, str, Dict]]None内容抽取的 AI 摘要配置详见下文contents_extract_effortOptional[str]normal抽取彻底程度normal快速、high更彻底但更慢、auto自动判断但最慢contents_response_lengthOptional[Union[str, int]]short内容抽取时每个 URL 返回的字符数同response_length的预设值语义默认 25k调用时可指定的参数def search( self, query: str, # 查询语句 search_type: str all, # all 专有网页、proprietary 仅专有索引、web 仅网页 max_num_results: int 5, # 最大结果数取值范围 1–20 start_date: Optional[str] None, # 时间过滤起始日期YYYY-MM-DD end_date: Optional[str] None, # 时间过滤结束日期YYYY-MM-DD fast_mode: Optional[bool] None, # 本次搜索是否启用快速模式 ) - List[Document]调用示例来自 README.mdresults valyu_tool.search( queryartificial intelligence trends 2024, included_sources[ arxiv.org, nature.com, ], # 仅搜索学术来源 response_lengthmedium, # 每个结果 50k 字符 max_num_results3, relevance_threshold0.5, )fast_mode 的优先级逻辑fast_mode是少数「初始化与调用两个层面都有」的参数源码base.py中的合并规则为若初始化时用户显式设置了fast_mode非None则无论模型传入什么都使用用户的值若用户设置为None允许模型决定则采用模型本次调用传入的值若两者都未指定回退到 SDK 默认值False。返回结果与元数据search会把 SDK 返回的每个结果封装成 LlamaIndex 的Document并透传以下元数据字段base.pytitle、url、source、price该条结果的价格、length、data_type、relevance_score。get_contents网页内容抽取get_contents调用 Valyu 的内容抽取 API从给定 URL 中提取干净、结构化的正文内容。与搜索不同它的所有抽取参数summary、extract_effort、response_length都在初始化时固定模型调用时只能指定 URL 列表def get_contents(self, urls: List[str]) - List[Document]单次请求最多支持 10 个 URL。contents_summary参数提供了从「原始内容」到「结构化抽取」的四个档位base.py取值行为False/None不做任何 AI 处理返回原始内容True基础自动摘要str自定义摘要指令最多 500 字符dictJSON Schema用于结构化抽取get_contents返回的Document元数据更丰富base.pyurl、title、source、length、data_type、citation以及可选字段summary、summary_success、image_url。citation字段为每条抽取内容提供可追溯的引用来源适合需要输出引用格式的问答场景。将 Valyu 接入 Agent 的两种方式方式一FunctionAgentWorkflow 风格即上文 README 示例使用llama_index.core.agent.workflow.FunctionAgentto_tool_list()返回的两个工具会被自动注册给模型模型按需调用search或get_contents。方式二OpenAIAgent仓库自带的 examples/context.py 展示了基于OpenAIAgent的接入并且同时配置了搜索与内容抽取两组参数import os from llama_index.agent.openai import OpenAIAgent from llama_index.tools.valyu import ValyuToolSpec valyu_tool ValyuToolSpec( api_keyos.environ[VALYU_API_KEY], max_price100, # 默认是 100 fast_modeTrue, # 快速模式更快但结果更短 # Contents API 配置 contents_summaryTrue, # 内容抽取开启 AI 摘要 contents_extract_effortnormal, contents_response_lengthmedium, ) agent OpenAIAgent.from_tools( valyu_tool.to_tool_list(), verboseTrue, ) # 搜索示例 search_response agent.chat( What are the key considerations and empirical evidence for implementing statistical arbitrage strategies using cointegrated pairs trading... ) print(search_response) # URL 内容抽取示例 content_response agent.chat( Please extract and summarize the content from these URLs: https://arxiv.org/abs/1706.03762 and https://en.wikipedia.org/wiki/Transformer_(machine_learning_model) ) print(content_response)ValyuRetrieverURL 内容检索器ValyuRetriever继承llama_index.core.base.base_retriever.BaseRetrieverretriever.py把「网页内容抽取」包装成标准的检索器接口可直接用于 LlamaIndex 的检索增强管线如与RetrieverQueryEngine、后处理器组合使用。它的构造参数只包含内容抽取相关配置api_key、verbose、contents_summary、contents_extract_effort、contents_response_length以及可选的callback_manager用于追踪操作。从查询串解析 URL_retrieve的输入是QueryBundle其query_str中应包含 URL用空格或逗号分隔。_parse_urls_from_queryretriever.py的实现细节很有价值用正则[,\s]按空格/逗号切分查询串仅保留以http://或https://开头的片段自然语言中的非 URL 词会被自动过滤最多截取前 10 个 URL对齐 API 约束。因此用户可以用自然语言下达「请抽取这几个网页」的指令检索器会自动定位其中的 URL这在该模块的测试test_valyu_retriever_url_parsingtests/test_tools_valyu.py中有完整验证。检索行为每个抽取结果被包装为TextNode并放入NodeWithScore相关性得分统一为1.0retriever.py元数据与get_contents保持一致。如果查询串中没有 URL_retrieve直接返回空列表且不发起任何 API 调用有专门的测试覆盖。examples/retriever_example.py 演示了单 URL、多 URL、以及自然语言夹杂 URL 三种用法import os from llama_index.tools.valyu import ValyuRetriever from llama_index.core import QueryBundle valyu_retriever ValyuRetriever( api_keyos.environ.get(VALYU_API_KEY, your-api-key-here), verboseTrue, contents_summaryTrue, # 开启 AI 摘要 contents_extract_effortnormal, contents_response_lengthmedium, ) # 单 URL 检索 query_bundle QueryBundle( query_strhttps://en.wikipedia.org/wiki/Transformer_(machine_learning_model) ) nodes valyu_retriever.retrieve(query_bundle) for node in nodes: print(node.node.metadata.get(title), len(node.node.text), node.score) # 自然语言夹杂 URL natural_query QueryBundle( query_strPlease extract content from these research papers: https://arxiv.org/abs/1706.03762 and also from https://en.wikipedia.org/wiki/Large_language_model ) nodes valyu_retriever.retrieve(natural_query)参数校验规则速查ValyuToolSpec.__init__内置了一整套参数校验base.pyValyuRetriever对内容抽取相关参数也有相同的校验。理解这些规则可以避免运行时异常参数校验规则api_key非空字符串否则抛ValueErrormax_priceNone或非负数值relevance_threshold必须为0.0–1.0之间的数值verbose必须为boolfast_mode必须为bool或Noneincluded_sources/excluded_sourcesNone或字符串列表response_length/contents_response_length预设值字符串之一short/medium/large/max或正整数自定义字符数country_code恰好 2 位字母的 ISO 国家码contents_summarybool、dict或不超过 500 字符的字符串contents_extract_effort必须是normal/high/auto之一测试覆盖与质量保障test_tools_valyu.py 通过 mockvalyu.Valyu客户端对三类行为做了系统性验证可以作为理解工具语义的补充证据初始化验证类继承关系、构造参数是否正确传递到内部状态test_init、test_init_with_user_controlled_params搜索验证用户配置的默认参数阈值、价格上限、来源过滤、国家码会被原样透传给 SDK且模型无法覆盖这些「初始化级」参数test_search_uses_user_defaults、test_search_model_can_control_allowed_params同时验证fast_mode的用户/模型优先级test_search_fast_mode_user_controls、verbose 打印、多结果转多Document内容抽取验证默认参数、summary 配置、多 URL、空响应/None 响应的空列表处理test_get_contents_*系列检索器验证 URL 解析边界单 URL、逗号/空格分隔、自然语言混排、无 URL、超过 10 个 URL 截断、空查询不调 API、NodeWithScore的得分与元数据test_valyu_retriever_*系列。使用限制与注意事项get_contents单次最多 10 个 URL检索器解析查询串时同样截断到 10 个search的max_num_results取值范围为 1–20max_price是美元计价的操作成本上限搜索结果中每个结果的price字段可用于核算单条成本start_date/end_date必须为YYYY-MM-DD格式初始化时固定的搜索参数max_price、relevance_threshold、included_sources、excluded_sources、response_length、country_code无法在单次调用中修改需要不同策略时应构造多个ValyuToolSpec实例contents_summary自定义指令上限 500 字符超出会直接抛ValueErrorsearch_type仅支持all/proprietary/web三个取值proprietary只检索 Valyu 自有索引web只做网页搜索。总体而言Valyu 工具为 LlamaIndex Agent 补上了「付费专有内容 公开网页」双源检索的能力且凭借BaseToolSpec与BaseRetriever两个标准抽象可以零成本嵌入已有的 Agent 工作流或 RAG 管线是面向金融研报、学术文献等高价值场景的实用集成组件。赞分享人工智能RAG大模型【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址https://gitcode.com/GitHub_Trending/ll/llama_index点击查看免费下载相关推荐在电脑上玩Switch游戏Ryujinx模拟器免费安装使用教程在电脑上玩Switch游戏Ryujinx模拟器免费安装使用教程 Ryujinx 是一款免费开源的任天堂 Switch 模拟器用 C 写成让你在电脑白屏大屏硬件仿真图形学Activepieces 集成 Sofya为 AI Agent 打造的一体化 Web 搜索与网页内容提取工具Activepieces 集成 Sofya为 AI Agent 打造的一体化 Web 搜索与网页内容提取工具 导读 在构建 AI Agent 和自动化工作流时工作流自动化低代码AI 应用人工智能AI AgentMCP 服务后端前端OpenClaw Tavily 插件实战为 Agent 接入结构化网页搜索与 URL 内容提取OpenClaw Tavily 插件实战为 Agent 接入结构化网页搜索与 URL 内容提取 导读 Tavily 是专为 AI 应用设计的搜索 API返回AI 应用AI Agent交互助手后端即时通讯网关创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考