学习笔记 · Obsidian

Tools:外部能力与副作用治理

LangChainPython

核心模型

LangChain tool 是“输入由模型生成、输出再交给模型”的可调用能力,toolkit 是一组协同工具。统一包装只统一了调用形状,不会统一权限、事务、幂等、超时、费用或数据保留语义。搜索是只读候选能力;发邮件、建日历、执行 SQL、运行代码、付款和链上交易则是不同风险等级的真实副作用。

/tools 与 /tools/index 当前是同正文别名。索引按搜索、代码解释器、生产力、浏览器、数据库、金融等类别列出大量官方与社区生态项;下载量和出现在索引中都不是安全认证或生产支持承诺。

路由覆盖与能力地图

平台工具、浏览器与代码执行

路由安装/入口能力与边界
tools、tools/index生态索引解释 tool/toolkit,按类别发现集成;不提供跨 provider 的可靠性保证。
azure_ailangchain-azure-ai,AzureAIProjectToolboxFoundry 项目内的图像、转写、代码解释器、Web/File Search、MCP;builtin 工具只对 Foundry 项目中部署的 OpenAI 模型生效。
azure_ai_serviceslangchain-azure-aiContent Understanding、Document Intelligence、图像分析、医疗文本、STT/TTS;使用 Azure 托管服务。
azure_dynamic_sessionslangchain-azure-dynamic-sessionsHyper-V 隔离 Python REPL、文件上传和图像结果;文件进入 session 的 /mnt/data/,页面示例为同步工具调用。
azure_logic_appslangchain-azure-ai[tools]调用预配置 Logic App 工作流,可触发通知、同步和多步骤业务流程。
bedrock_agentcore_browserlangchain-aws,另需 Playwright/BeautifulSoup托管 Chrome 导航、点击、表单、抽取、截图;proxy、S3 extension、持久 profile 会扩大网络和身份边界。
bedrock_agentcore_code_interpreterlangchain-aws托管 Python/JavaScript/TypeScript 沙箱,文件、安装包和异步 task;状态按 thread_id 隔离。
databricksdatabricks-langchain、SDK、LangGraph、MLflow把 Unity Catalog SQL/Python function 暴露为工具;函数和参数注释是模型调用契约,默认执行等待为 120 秒。

AgentCore browser/toolkit 创建是同步的,调用可 ainvoke,cleanup() 必须 await。同一 thread_id 并发访问会抛 RuntimeError,不同 thread 才能并发;结束后必须 cleanup。Code Interpreter 同样需要 thread 隔离和清理。隔离环境降低主机风险,但不自动阻止数据外传、恶意依赖、过量算力、SSRF 或凭证滥用。

外部账户与高风险动作

路由包/认证可见副作用
cdp_agentkitcoinbase-agentkit、coinbase-agentkit-langchain;CDP key ID/private key转账、交易、合约交互、token/NFT 部署等链上操作,具体动作取决于 action providers。
composiocomposio、composio-langchain;COMPOSIO_API_KEY + 用户 OAuth1,000+ toolkit 的发现、认证、执行、trigger/webhook;稳定 user_id 隔离每个用户连接。
discordlangchain-discord-shikenso;bot token读取频道消息和发送消息。
google_calendarlangchain-google-community[calendar];OAuth搜索、创建、更新、移动和删除日历事件;可明确使用 readonly scope。
google_drivelangchain-googledrive;credentials.json/token.json搜索 Drive/Docs;首次认证会在配置目录生成 token 文件。
google_gmaillangchain-google-community[gmail];OAuth读邮件/线程、建草稿、发送等;示例的 mail.google.com scope 很宽,生产应缩到所需 scope。
privylangchain-privy;server-side app secret自动创建/复用钱包、查余额、签名并发送交易。
stripestripe-agent-toolkit;Stripe secret key创建产品、价格、payment link 等真实支付对象。
tableaulangchain-tableau;connected-app JWT查询已发布 datasource;需要 VizqlDataApiAccess 权限。

这些工具必须在服务端把用户身份映射到独立凭证或连接,模型不可提供 tenant、scope、wallet、account 等授权事实。读取和写入工具应拆开注册;付款、发信、删除、交易和外部发布至少要求策略校验与 HITL,执行请求使用业务幂等键并记录审批前后参数。

搜索、抽取与长期任务

路由包返回/执行模式
exa_searchlangchain-exa搜索、相似页面和 Retriever;TextContentsOptions.max_length 已弃用,改用 max_characters。
google_searchlangchain-google-communityProgrammable Search 的文本或带 metadata 结果。
parallel_searchlangchain-parallel一次返回结构化网页 excerpts;旧名 ParallelWebSearchTool 只是别名。
parallel_extractlangchain-parallelURL 内容/聚焦 excerpts;逐 URL 返回错误,call-level full-content 配置覆盖 tool default。
parallel_findalllangchain-parallel按目标和全部布尔条件发现实体,可排除已见候选、取消任务。
parallel_monitorlangchain-parallel1 小时到 30 天周期监控,支持 polling 或 webhook,CRUD/event 有 a* 异步版本。
parallel_tasklangchain-parallelresearch-grade 长任务、deep research、group、enrichment、BYO MCP;run/arun,高阶 tier 可能数分钟以上。
perplexity_searchlangchain-perplexity排序且带来源的 Search API 结果。
tavily_searchlangchain-tavily搜索结果、内容、图片和可选 answer。
tavily_maplangchain-tavily只发现站点 URL,不抽正文。
tavily_crawllangchain-tavily从起始 URL 结构化遍历并抽取。
tavily_extractlangchain-tavily对一个或多个 URL 抽取内容。
unstructured_transformlangchain-unstructured-transform通过托管 MCP 请求上传 URL、转换、轮询、取结果;每文件 ≤50 MB、每请求 ≤10 文件、最多 5 个并发请求。
upstage_groundedness_checklangchain-upstage对 response/context 做 groundedness 检查;是质量信号,不是事实证明。

Parallel Search/Extract/FindAll 提供 ainvoke;Monitor 的异步方法以 a 前缀;Task Group 有 arun。长任务应用 webhook 时必须验证 PARALLEL_WEBHOOK_SECRET,事件去重并能恢复漏投。Parallel 文档明确建议分钟级 research 使用 webhook,而不是阻塞 invoke。Unstructured 的 MCP tool 装载本身是异步的,使用 aget_tools()/aget_transform_tools();它返回完成后的 job 结果,不是 token 级流式解析。

Web 搜索和网页内容都属于不可信输入:必须保留 URL/发布日期等 provenance,过滤 prompt injection,不允许页面文字扩大工具权限,也不能把 provider 摘要直接当已核验事实。

数据、媒体与企业服务

路由包主要能力
google_cloud_texttospeechlangchain-google-communityTextToSpeechTool 生成音频;旧 GoogleCloudTextToSpeechTool 位于不再维护的 langchain-community。
google_imagenlangchain-google-vertexai图像生成、编辑、caption、VQA;VQA 当前仅单轮。
ibm_watsonxlangchain-ibm按 watsonx Cloud/Software 环境发现并执行 toolkit;可用工具集合会变化。
ibm_watsonx_sqllangchain-ibm[sql-toolkit]通过 Flight 服务执行模型生成 SQL;官方明确要求最小数据库权限。
mcp_toolboxtoolbox-langchain从 MCP Toolbox 装载数据库工具并交给 agent;索引标注可执行任意 SQL。
oracleailangchain-oracledb用 OracleSummary 在 Oracle AI Database 侧生成文档摘要。

SQL 工具默认使用只读账号、限定 schema/view、语句类型和行数,设置 statement timeout,并在执行层解析/拒绝 DDL、DML、跨库访问与注释绕过。示例中的 allow 或自然语言提示不是安全控制。生成摘要、语音和图像时还要处理原始内容出境、区域、保留周期、版权与内容政策。

认证边界

  • Azure 页面优先 DefaultAzureCredential,生产用 Managed Identity 或显式最小权限 credential;不要让本地 CLI 身份意外进入服务环境。
  • AWS 使用标准 credential chain 和 IAM;Browser proxy 凭证放 Secrets Manager,S3 extension/profile 资源分别授权。
  • Google Workspace 使用 OAuth scope;GCP 服务使用 ADC/项目 IAM。credentials.json 和自动生成的 token.json 都是敏感资产。
  • API key 只通过 secret manager/环境注入,日志、trace、tool result 和错误中不得回显。
  • Composio 的 user_id、Google/Discord channel、Stripe account、钱包 ID 都必须由服务端绑定,不接受模型自由指定跨租户目标。

生产执行协议

建议在工具适配层统一实现:

  1. 注册前分级:read、reversible-write、irreversible/external;按用户、租户和会话动态给模型最小工具集。
  2. 调用前验证:结构化 schema、长度/枚举/URL/SQL 检查、服务端注入身份、费用与速率预算。
  3. 副作用门禁:高风险动作先生成可审阅计划,HITL 后再执行;重复提交使用 provider 或业务幂等键。
  4. 执行控制:connect/read/total timeout、有限重试、指数退避、circuit breaker、并发 semaphore;非幂等动作不盲重试。
  5. 结果收敛:大响应保存为受控 artifact,只把摘要和引用交给模型;区分 success、partial、rejected、unknown。
  6. 审计与恢复:记录 tool 名、授权主体、目标、审批、provider request ID、状态和耗时,但不记录秘密或不必要正文;异步 job/webhook 可对账与补偿。

验证边界

已逐页核对这 38 个路由的官方 Markdown、包名、示例接口和页面警告。未使用真实 Azure/AWS/Google/Stripe/区块链/搜索 provider 凭证运行,因此配额、区域、费用、side-effect 幂等和供应商当前 SLA 仍需在目标环境单独验证。