SQL 访问 AI 代理 — 灵活性与安全防护
发布: (2025年12月17日 GMT+8 15:38)
3 min read
原文: Dev.to
Source: Dev.to
运营 AI 代理需要边界
AI 代理正越来越多地用于诸如客户支持等运营任务:
“我的订阅状态如何?”
要回答,代理必须:
- 通过电子邮件或电话查找客户
- 检查活跃订阅
- 查看最近的互动记录
挑战: 在不授予无限制访问权限的情况下,让 AI 安全地查询数据库。
为什么常见方案不足
| 方法 | AI 代理面临的挑战 |
|---|---|
| 原始 SQL | 风险高,易受注入攻击和错误影响 |
| 硬编码 API | 缺乏灵活性,每个查询都需要修改代码 |
| GraphQL / OData | 功能强大但通用;缺乏安全防护和声明式接口,无法可靠地进行代理查询 |
关键洞察: AI 代理并不需要完整的数据库灵活性——它们需要 可预测、受限的访问。
我们的两部分解决方案
我们结合了两种模式:
1. 模型上下文协议 (MCP)
- 标准化的 AI → 工具通信接口
- 支持工具发现、结构化参数、可预测的响应
2. 基于模式的查询构建器
- 将 JSON 定义的实体模式转换为安全的 SQL
- 处理关系、字段白名单以及多后端支持
- 支持多个 SQL 后端——演示使用 SQLite,生产环境使用 SQL Server 或 PostgreSQL——使用相同的查询逻辑
结果: 最少的样板代码、安全的边界、对 LLM 友好的查询语法。
安全性: 明确的字段白名单 (allowedFilterFields) 防止 AI 访问未授权的数据。
为什么这很重要
- AI 就绪的 API: 安全地实现运营查询
- 双重接口: 同一引擎同时服务 AI(通过 MCP)和 REST 客户端
- 可扩展: 以最少代码添加新工具
- 安全: 明确的白名单防止未授权访问
关键要点
- 运营 AI 查询 ≠ 临时分析
- 受限接口提升可靠性和可预测性
- 将传输层(MCP)与查询逻辑(查询构建器)分离,最大化灵活性
- 类似 MongoDB 的 JSON 过滤器与 LLM 训练相契合
接下来
在 下一篇文章 中,我们将深入探讨 MCP 细节:AI 如何发现并调用工具,并提供真实示例。
查看 GitHub 仓库获取 完整实现、图表和代码: