基于AI Agent模板:快速生成 SQL 测试数据
DigitalOcean 云平台一直在不断研发以代码为核心的项目,帮助用户快速构建可投入生产的应用程序,并能根据自己的需求进行扩展。
DigitalOcean 的 Gradient™ AI 平台近期推出了 Agent Templates(智能体模板),为开发者提供了即插即用的 AI 工具。 本文将以 SQL Agent 模板 为例,演示如何扩展它,实现自动生成安全测试数据和 SQL 插入脚本的功能,让数据库测试更快、更智能、更安全。
什么是 Agent Templates(智能体模板)?
Gradient AI 平台是 DigitalOcean 提供的一个一体化 AI 云服务平台,覆盖从生成式模型调用、智能 Agent 构建、GPU 服务器(如 H200、H100、RTX 6000 等按需/裸金属)、到 Serverless 推理服务的完整流程。
Agent Templates 是在 DigitalOcean Gradient AI 平台 上构建的、以代码为核心的即插即用入门套件。
每个模板都是一个 Python 项目,你可以在几分钟内克隆、配置并部署。无论是构建 SQL 查询助手、客服 Bot 还是文档问答系统,只需克隆模板、配置少量参数,就能立即部署到生产环境。
以下是当前可用的模板:
| 模板 | 功能 | 主要技术特性 |
|---|---|---|
| LLM Auditor Agent | 通过 Tavily API 搜索网络,并可选地使用结构化外部知识进行验证,为 LLM 添加验证或事实核查层。 | • 集成 Tavily API• 支持可选的知识库(KB)接地以获得更可靠的回答 |
| Product Documentation Agent | 利用产品文档构建支持型聊天机器人,使用户可以提问并从文档中获取准确答案。 | • 基于嵌入的文档检索• 聊天记录 / 对话上下文支持• 可处理任意产品文档 |
| SQL Agent | 将自然语言提示转换为针对 MySQL 数据库的 SQL 查询(只读),动态检索架构并执行安全查询。 | • 架构自省,识别表和字段结构• 只读查询防护• 自然语言到 SQL 转换并带安全校验 |
| Twilio API Agent | 通过 Twilio 发送短信(营销或事务性),并可实现自动化消息流逻辑。 | • 集成 Twilio SDK/API• 可插拔消息逻辑 |
你可以直接使用这些模板,也可以直接在此基础上扩展功能,无需从零配置环境或重写推理逻辑,从而极大地缩短智能体开发周期。
合成数据生成服务的工作原理
合成数据生成服务用于创建逼真的模拟数据集,用于测试和开发。
它采用一个编排的微服务架构,由以下四个层组成:
当有人点击 “Generate Data(生成数据)” 按钮,或输入类似 “Generate 10 mock users(生成 10 个模拟用户)” 的自然语言请求时,系统会这样工作:

- 用户输入处理层
通过聊天界面或手动配置捕获用户请求,提取诸如数据类型、记录数和输出格式等参数。
- AI 驱动的请求解析层
利用 DigitalOcean Gradient AI 平台 理解自然语言请求,并确定合适的数据生成策略,包括安全验证,确保不会访问生产数据。
- 合成数据生成引擎
接收解析后的请求,使用 Faker 库 创建具有真实字段类型、关系和约束的模拟数据。 该引擎可生成用户、订单、支付、产品及自定义数据结构。
- 多格式输出层
将生成的数据转换为用户请求的格式(SQL INSERT 语句、CSV 或 JSON),并以实时预览和下载选项的形式呈现。
详细数据流示例
当用户请求 “Generate 10 mock users with random names and emails(生成 10 个随机姓名和邮箱的模拟用户)” 时,系统执行以下步骤:
- 用户输入处理 Streamlit 界面捕获请求并提取参数(count=10,data_type=users,fields=[‘name’, ‘email’])。
- AI 请求解析 Gradient AI Agent 处理自然语言请求,确定需要生成用户数据并满足特定字段要求。
- 数据生成引擎 SyntheticDataGenerator 使用 Faker 生成 10 条真实感用户数据:
- 生成真实姓名,如 “John Smith”、“Sarah Johnson”
- 生成有效邮箱地址,如 john.smith@email.com
- 添加电话号码、地址和时间戳
- 保证数据关系与约束条件成立
- 格式转换 系统将生成的数据转换为所需格式:
- SQL:生成可直接执行的 INSERT 语句
- CSV:格式化为可导入表格的数据
- JSON:结构化为可供 API 调用的数据
- 安全验证 所有生成数据均经过验证以确保:
- 未访问任何生产数据
- 防止 SQL 注入
- 遵守记录数量限制
- 保持数据完整性
- 用户展示 最终数据在网页界面展示,包含:
- 实时预览表格
- 各格式的下载按钮
- 复制到剪贴板功能
- 成功生成的确认提示
构建数据生成器
步骤 1:配置 DigitalOcean Gradient AI 凭证
在扩展 SQL Agent 模板前,需要配置你的 DigitalOcean Gradient AI 凭证。
这对实现 AI 驱动的自然语言处理功能至关重要。
- 在 cloud.digitalocean.com 注册 DigitalOcean 账户
- 在控制台进入 “Agent Platform” 部分
- 创建新工作区或使用已有工作区并新建一个 Agent(可参考指南中的步骤)
- 创建后,前往 Gradient AI 工作区设置,获取 API 访问令牌并记录工作区 ID
控制台中 DigitalOcean Gradient AI Agent 示例如下:

步骤 2:扩展 SQL Agent 模板
接下来,我们将为 DigitalOcean 的 SQL Agent 模板增加合成数据生成功能。
基础模板已提供安全 SQL 查询执行与架构自省功能,我们在此基础上增强数据生成能力。
核心扩展架构:
增强版 SQL Agent 通过集成合成数据生成器并更新系统提示来处理数据生成请求。 它保留了原有 SQL 功能,同时新增了数据生成的自然语言处理能力。 完整代码位于 src/agent.py。
步骤 3:构建合成数据生成引擎
扩展的核心是 SyntheticDataGenerator 类,利用 Faker 库 生成逼真的模拟数据。 它支持多种数据类型(用户、订单、支付、产品),可通过参数配置生成逻辑。
class SyntheticDataGenerator:def __init__(self, locale='en_US'):self.fake = Faker(locale)def generate_users(self, count=10, fields=None):users = []for i in range(count):user = {'id': i + 1,'name': self.fake.name(),'email': self.fake.email(),'phone': self.fake.phone_number(),'address': self.fake.address(),'created_at': self.fake.date_time_between(start_date='-2y', end_date='now')}users.append(user)return usersdef generate_orders(self, count=10, amount_range=(10, 1000), year=2024):orders = []for i in range(count):order = {'id': i + 1,'user_id': self.fake.random_int(min=1, max=count),'amount': self.fake.random_int(min=amount_range[0], max=amount_range[1]),'status': self.fake.random_element(elements=('pending', 'completed', 'cancelled', 'shipped')),'order_date': self.fake.date_between(start_date=f'{year}-01-01', end_date=f'{year}-12-31'),'product_name': self.fake.catch_phrase(),'quantity': self.fake.random_int(min=1, max=10)}orders.append(order)return orders
完整代码位于 src/synthetic_data_generator.py。
数据生成工作原理:
- Faker 库集成: 使用 Faker 提供的 200+ 数据生成器,生成姓名、地址、邮箱、电话号码、日期等真实感数据。
- 可配置字段生成: 每种数据类型(用户、订单、支付、产品)都有特定字段生成逻辑,以保持真实关系与约束。
- 区域支持: 支持多种区域(如 en_US、en_GB)生成对应地区风格的数据。
- 参数化生成: 可通过参数(数量、日期范围、金额范围、字段选择)定制生成结果。
步骤 4:实现多格式输出支持
系统将生成的数据转换为多种格式,以适应不同场景。
以下为 SQL 转换示例:
def to_sql_inserts(self, data, table_name):if not data:return []columns = list(data[0].keys())column_str = ', '.join(columns)insert_statements = []for record in data:values = []for col in columns:value = record[col]if value is None:values.append('NULL')elif isinstance(value, str):escaped_value = value.replace("'", "''")values.append(f"'{escaped_value}'")elif isinstance(value, datetime):values.append(f"'{value.strftime('%Y-%m-%d %H:%M:%S')}'")else:values.append(str(value))values_str = ', '.join(values)insert_stmt = f"INSERT INTO {table_name} ({column_str}) VALUES ({values_str});"insert_statements.append(insert_stmt)return insert_statements
def to_csv(self, data):df = pd.DataFrame(data)return df.to_csv(index=False)
def to_json(self, data):return json.dumps(data, indent=2, default=str)
输出生成原理:
- SQL INSERT 生成: 将每条记录转换为格式化的 SQL INSERT 语句,并处理转义与数据类型。
- CSV 导出: 使用 pandas DataFrame 将数据转换为 CSV,确保编码和格式正确。
- JSON 导出: 将数据转换为 JSON,正确序列化日期时间和复杂类型。
- 安全校验: 所有输出格式都包含安全检查,防止 SQL 注入并保持数据完整性。
示例输出:
INSERT INTO users (id, name, email, phone, address, created_at) VALUES (1, 'John Smith', 'john.smith@email.com', '+1-555-123-4567', '123 Main St, Anytown, ST 12345', '2023-06-15 14:30:22');
INSERT INTO users (id, name, email, phone, address, created_at) VALUES (2, 'Jane Doe', 'jane.doe@email.com', '+1-555-987-6543', '456 Oak Ave, Somewhere, ST 67890', '2023-07-22 09:15:45');
步骤 5:创建增强版 Agent 界面
增强版 Agent 将基础 SQL Agent 的功能与合成数据生成结合,能解析自然语言请求、提取参数并路由到相应的数据生成函数。
相关代码位于 src/agent.py 文件。
最后,将整个应用整合进一个简单的 Streamlit UI,其完整代码可在 GitHub 仓库中找到。
这是一个简单的示例,展示了如何扩展 SQL Agent 模板。
你可以直接使用这种集成方式,或进一步扩展以构建自己的版本。
写在最后
本教程展示了如何使用这些现成模板来满足你公司或项目的需求。
这些模板的魅力在于,它们为你提供了坚实的基础,你只需确定自己要解决的问题,并在其上添加相应功能即可。
以下是一些可在其他模板基础上扩展的思路:
- LLM Auditor Agent: 为你的内容添加事实核查功能,或与公司知识库集成
- Product Documentation Agent: 扩展以支持多种文档类型(PDF、视频、内部 Wiki),或增加多语言支持
- Twilio API Agent: 构建自动化客户支持流程或营销活动自动化
如果你还需要了解更多关于 DigitalOcean GPU 服务器及 AI 相关产品服务,可咨询 DigitalOcean 中国区独家战略合作伙伴卓普云。访问卓普云官网 aidroplet.com,可相关产品信息与教程内容。
