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 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。
數據生成工作原理:
- 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,可閲讀更多相關產品信息與教程內容。