卓普云
首页/教程/基于AI Agent模板:快速生成 SQL 测试数据

基于AI Agent模板:快速生成 SQL 测试数据

本文介绍如何基于 DigitalOcean Gradient AI 的 SQL Agent 模板,快速生成安全、真实感强的模拟测试数据,用于开发与测试环境。

2025年11月13日
基于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 个模拟用户)” 的自然语言请求时,系统会这样工作:

Architecture Overview - visual selection.png

1、用户输入处理层

通过聊天界面或手动配置捕获用户请求,提取诸如数据类型、记录数和输出格式等参数。

2、AI 驱动的请求解析层

利用 DigitalOcean Gradient ​AI​ 平台 理解自然语言请求,并确定合适的数据生成策略,包括安全验证,确保不会访问生产数据。

3、合成数据生成引擎

接收解析后的请求,使用 Faker 库 创建具有真实字段类型、关系和约束的模拟数据。 该引擎可生成用户、订单、支付、产品及自定义数据结构。

4、多格式输出层

将生成的数据转换为用户请求的格式(SQL INSERT 语句、CSV 或 JSON),并以实时预览和下载选项的形式呈现。

详细数据流示例

当用户请求 “Generate 10 mock users with random names and emails(生成 10 个随机姓名和邮箱的模拟用户)” 时,系统执行以下步骤:

  1. 用户输入处理 Streamlit 界面捕获请求并提取参数(count=10,data_type=users,fields=[‘name’, ‘email’])。
  2. AI​ 请求解析 Gradient AI Agent 处理自然语言请求,确定需要生成用户数据并满足特定字段要求。
  3. 数据生成引擎 SyntheticDataGenerator 使用 Faker 生成 10 条真实感用户数据:
    1. 生成真实姓名,如 “John Smith”、“Sarah Johnson”
    2. 生成有效邮箱地址,如 john.smith @ email.com
    3. 添加电话号码、地址和时间戳
    4. 保证数据关系与约束条件成立
  4. 格式转换 系统将生成的数据转换为所需格式:
    1. SQL:生成可直接执行的 INSERT 语句
    2. CSV:格式化为可导入表格的数据
    3. JSON:结构化为可供 API 调用的数据
  5. 安全验证 所有生成数据均经过验证以确保:
    1. 未访问任何生产数据
    2. 防止 SQL 注入
    3. 遵守记录数量限制
    4. 保持数据完整性
  6. 用户展示 最终数据在网页界面展示,包含:
    1. 实时预览表格
    2. 各格式的下载按钮
    3. 复制到剪贴板功能
    4. 成功生成的确认提示

构建数据生成器

步骤 1:配置 DigitalOcean Gradient AI 凭证

在扩展 SQL Agent 模板前,需要配置你的 DigitalOcean Gradient AI 凭证。

这对实现 AI 驱动的自然语言处理功能至关重要。

  1. 在 cloud.digitalocean.com 注册 DigitalOcean 账户
  2. 在控制台进入 “Agent Platform” 部分
  3. 创建新工作区或使用已有工作区并新建一个 Agent(可参考指南中的步骤)
  4. 创建后,前往 Gradient AI 工作区设置,获取 API 访问令牌并记录工作区 ID

控制台中 DigitalOcean Gradient AI Agent 示例如下:

Screenshot 2025-09-12 at 11.21.18 PM.png

步骤 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 users
    
    def 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

数据生成工作原理:

  1. Faker 库集成: 使用 Faker 提供的 200+ 数据生成器,生成姓名、地址、邮箱、电话号码、日期等真实感数据。
  2. 可配置字段生成: 每种数据类型(用户、订单、支付、产品)都有特定字段生成逻辑,以保持真实关系与约束。
  3. 区域支持: 支持多种区域(如 en_US、en_GB)生成对应地区风格的数据。
  4. 参数化生成: 可通过参数(数量、日期范围、金额范围、字段选择)定制生成结果。

步骤 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)

输出生成原理:

  1. SQL​ INSERT 生成: 将每条记录转换为格式化的 SQL INSERT 语句,并处理转义与数据类型。
  2. CSV​ 导出: 使用 pandas DataFrame 将数据转换为 CSV,确保编码和格式正确。
  3. JSON​ 导出: 将数据转换为 JSON,正确序列化日期时间和复杂类型。
  4. 安全校验: 所有输出格式都包含安全检查,防止 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,可阅读更多相关产品信息与教程内容。