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 还是文档问答系统,只需克隆模板、配置少量参数,就能立即部署到生产环境。
以下是当前可用的模板:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你可以直接使用这些模板,也可以直接在此基础上扩展功能,无需从零配置环境或重写推理逻辑,从而极大地缩短智能体开发周期。
合成数据生成服务的工作原理
合成数据生成服务用于创建逼真的模拟数据集,用于测试和开发。
它采用一个编排的微服务架构,由以下四个层组成:
当有人点击 “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个随机姓名和邮箱的模拟用户)” 时,系统执行以下步骤:
生成真实姓名,如 “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:
https://github.com/Haimantika/Gradient-SQL-template/blob/main/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_statementsdef 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 文件:
https://github.com/Haimantika/Gradient-SQL-template/blob/main/src/agent.py
最后,将整个应用整合进一个简单的 Streamlit UI,其完整代码可在 GitHub 仓库中找到。
这是一个简单的示例,展示了如何扩展 SQL Agent 模板。
你可以直接使用这种集成方式,或进一步扩展以构建自己的版本。
写在最后
本教程展示了如何使用这些现成模板来满足你公司或项目的需求。
这些模板的魅力在于,它们为你提供了坚实的基础,你只需确定自己要解决的问题,并在其上添加相应功能即可。
以下是一些可在其他模板基础上扩展的思路:
- LLM Auditor Agent:为你的内容添加事实核查功能,或与公司知识库集成
- Product Documentation Agent:扩展以支持多种文档类型(PDF、视频、内部 Wiki),或增加多语言支持
- Twilio API Agent:构建自动化客户支持流程或营销活动自动化

