博客 / 詳情

返回

基於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,可閲讀更多相關產品信息與教程內容。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.