SQL查询转换服务

一个通过FastAPI暴露的服务,使用Gemini模型将自然语言请求转换为安全的SQL查询,并针对绑定的SQLite CRM数据库执行查询。

  • by Krit03W
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Krit03W/Thesis-Agentic-Tools-MCP

使用说明

Gemini+SQLite代理API

该项目公开了一个小型FastAPI服务,该服务允许Gemini模型将自然语言请求转换为针对捆绑的SQLite CRM数据库的安全SQL查询(database/crmarena_data.db).

设置

  1. 安装依赖项
    pip install -r requirements.txt
    
  2. 设置环境变量(支持从 .env)
    • 创建文件 .env 例如
      GEMINI_API_KEY=your_key_here
      CRM_DB_PATH=database/crmarena_data.db
      GEMINI_MODEL=gemini-2.5-flash
      AGENT_MAX_ROWS=50
      
    • 或通过外壳导出: $env:GEMINI_API_KEY="<your_api_key>"
  3. 运行API
    uvicorn agent_api:app --reload --port 8000
    

用法

  • 探索架构: GET /schema
  • 问一个问题: POST /query 身体:
    { "question": "แสดง 5 order ล่าสุดของ account ที่ชื่อ John Doe" }
    

代理提示Gemini返回一个带有SELECT语句的JSON有效负载(LIMIT强制),在SQLite上执行它,并返回 sql, columns, rows,以及可选 reasoning 现场。

流线型UI

  • 启动: streamlit run streamlit_app.py
  • UI页面将填写泰语/英语问题,并显示模型生成的SQL及其结果。 database/crmarena_data.db.

MCP服务器

  • 运行MCP服务器(stdin/stdout传输):
    python mcp_server.py
    
  • 工具:
    • ask(question: str) →将自然语言查询发送回JSON字符串 {sql, reasoning, columns, rows}
    • schema() →发送地面地图表/列 注:负载环境变量来自 .env 例如 GEMINI_API_KEY, CRM_DB_PATH, GEMINI_MODEL, AGENT_MAX_ROWS.