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

  1. 用户输入处理层

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

  1. AI 驱动的请求解析层

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

  1. 合成数据生成引擎

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

  1. 多格式输出层

将生成的数据转换为用户请求的格式(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 示例如下:

步骤 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,可阅读更多相关产品信息与教程内容。

相关推荐
HeteroCat2 小时前
关于No Chatbot的思考
人工智能
咚咚王者2 小时前
人工智能之数据分析 numpy:第一章 学习链路
人工智能·数据分析·numpy
中杯可乐多加冰2 小时前
数据分析案例详解:基于smardaten实现智慧交通运营指标数据分析展示
人工智能·低代码·数据分析·交通物流·智慧交通·无代码·大屏端
智泊AI2 小时前
这是一篇写给AI大模型入门的新手小白手册(附文档)
llm
算家计算2 小时前
对标ChatGPT!千问App正式上线:AI应用终局之战正在打响
人工智能·资讯
山顶夕景2 小时前
【RL-LLM】Self-Rewarding Language Models
llm·强化学习·rl·dpo
EdisonZhou3 小时前
MAF快速入门(1)化繁为简的Agent创建范式
llm·aigc·agent·.net core
赵康3 小时前
使用 LLM + Atlassian MCP 1小时生成年终总结
ai·llm·mcp