学习笔记 · Obsidian

数据库、API、沙箱与知识访问工具包

LangChainTypeScript

结论

  • SQL、OpenAPI、Lambda、图数据库工具都能把自然语言转成真实外部操作;最小权限、只读默认、查询/URL 校验和人工确认比 prompt 约束更可靠。
  • JSON/VectorStore/WebBrowser 是“读取与解释”工具包,仍可能把不可信内容送进模型;要限制数据体积、来源和递归调用。
  • Azure Dynamic Sessions 是远程隔离 Python 运行时;FalkorDB、Oracle 和数据库 MCP 则把计算靠近数据。两类方案都需要明确网络、身份和资源生命周期。

数据库工具

SQLToolkit

SqlToolkit 组合四个工具:列出表、读取 schema/sample、检查查询、执行查询。官方策略要求在 query-sql 前先用 query-checker,但生产还应增加:

  • 使用只读数据库用户,并限制 schema、行级访问和 statement timeout;
  • 拒绝多语句、DDL/DML、注释逃逸和危险函数;
  • 对返回行数、列数和总字节设上限;
  • 将查询检查与执行放在服务端策略层,不能依赖模型自觉调用 checker。

MCP Toolbox for Databases

Google 的开源 Toolbox server 负责连接池、认证和数据库工具定义,LangChain 通过 @toolbox-sdk/core 获取工具再包装。生产优势在于 authenticated parameters 可从 OIDC token 绑定值、authorized invocation 可在服务端拒绝未授权主体,并能输出 OpenTelemetry。Toolbox 需要自行部署和运维;MCP 边界不是“默认可信”。

FalkorDB 与 Oracle

  • FalkorDBGraph 支持初始化、Cypher query、schema refresh/read 与 close,可配合 GraphCypherQAChain 把自然语言转 Cypher。示例依赖失养的 @langchain/community chain,且数据库凭据应尽量只读。
  • OracleSummary 可在 Oracle AI Database 内运行 ONNX summarization,也能转发 OCI Generative AI / Hugging Face;远端 provider 凭据预先登记在数据库中。第三方调用和可选 HTTP proxy 会改变数据驻留边界。
  • OracleSummary 可以包装成标准 tool(),但调用仍需限制输入长度、模型/provider、费用和数据库连接池。

API 与 serverless 工具

OpenAPIToolkit

OpenApiToolkit 已位于 @langchain/classic,包含 json_explorer、requests_get、requests_post。官方警告它理论上可能携带凭据请求恶意 URL。生产必须:

  1. 预解析并固定 OpenAPI spec 版本;
  2. 只允许明确的 server、path、method 和 header;
  3. 凭据由服务端按目标注入,模型不可查看或覆盖;
  4. GET/POST 前做 SSRF、重定向和响应大小检查;
  5. 写操作进入审批与幂等流程。

当前页面明确没有专门的 OpenApiToolkit API reference,应以 v1 migration guide 和 langchainjs 源码核对实现。

AWS Lambda

AWSLambda 把模型给出的字符串作为 Lambda event 参数。调用身份必须有 lambda:InvokeFunction,函数名、region 和 qualifier 应由应用固定;模型不应选择任意函数。示例展示发送邮件,真实系统还需 SES 权限、收件人白名单、幂等和审计。

受控计算与多媒体

  • SessionsPythonREPLTool 连接 Azure Container Apps Dynamic Sessions 的 code interpreter pool,使用 Entra 身份和 management endpoint。它提供强隔离的 Python 执行,仍需限制 session 数、执行时间、文件、网络出口和成本。
  • DALL·E wrapper 接受提示并返回图像 URL。生产需控制尺寸/质量、内容策略、URL 有效期、下载与对象存储流程。
  • WatsonxToolkit 汇集 GoogleSearch、WebCrawler、SDXLTurbo、Weather、RAGQuery。WebCrawler 用于页面摘要而非搜索;RAGQuery 需要预先配置索引。按任务挑选最小工具集。

只读知识访问工具

  • JSON agent 通过 JsonSpec/JsonToolkit 探索 JSON 或 YAML,例如 OpenAPI 文件。大文档应先裁剪或建索引,避免整个规范进入上下文。
  • VectorStoreToolkit 把一个 vector store 与名称/描述包装为检索工具。描述决定模型何时调用,应写清语料范围、时效和不适用问题。
  • WebBrowser 有两种模式:仅 URL 时摘要整页;URL 加目标描述时先用内存向量库找片段再总结。需要 cheerio/axios,且旧 agent 示例含失养的 @langchain/community 组件。

生命周期与运维

  1. 数据库、图、HTTP、session pool 客户端统一用连接池并在结束时 close();记录超时与资源耗尽指标。
  2. 工具错误分类为参数错误、权限拒绝、限流、远端失败和不可重试副作用;只对幂等读操作有界重试。
  3. 对 SQL/Cypher/API/代码执行记录经过脱敏的动作摘要与目标,不记录连接串、令牌或完整数据行。
  4. 示例使用 @langchain/classic 或 @langchain/community 的地方要做依赖版本审计;后者页面已明确“no longer maintained”。