文件最后提交记录最后更新时间
Merge pull request #331 from SCMRCORE/main 10 个月前
chore: add license and newline 7 个月前
spring-ai-alibaba-nl2sql-example/chat/README.md 10 个月前
bugfix: fixed issues such as mismatch between port numbers in .http files and .yml files, and some formatting problems. (#412) * bugfix:ensure the correct port number and formatting issues * bugfix:ensure the correct port number and formatting issues --------- Co-authored-by: maple <14118288+gao-shengkai525866@user.noreply.gitee.com>5 个月前
Merge pull request #291 from zhangshenghang/fix-no-main-manifest fix not manifest11 个月前
README.md

数据库对话接口模块

📌 项目简介

本模块是一个轻量级的数据库对话接口服务,基于 Spring Boot 构建。它对外暴露一个 /chat 接口,接收自然语言查询输入,并返回结构化的数据库问答结果。同时提供一个简单的可视化页面用于测试和展示对话功能。


🧩 核心功能

  • 自然语言对话接口

    • 提供 /chat 接口,支持通过自然语言查询数据库。
    • 输入为自然语言问题,输出为结构化字符串结果(如 SQL 查询或解释性文本)。
  • 可视化交互页面


🛠 技术栈

类别 技术/框架
后端语言 Java 17+
框架 Spring Boot
接口格式 RESTful API (JSON)
前端界面 HTML + CSS + JS
数据库支持 MySQL / PostgreSQL

🚀 安装与部署

✅ 前置依赖

🔧 配置修改

编辑配置文件 application.yml

spring:
  ai:
    openai:
      base-url: https://dashscope.aliyuncs.com/compatible-mode #类似 OpenAI 接口风格的兼容地址,这里指向的是阿里云 DashScope 的兼容接口。
      api-key: sk
      model: qwen-max #使用的模型名称,推荐使用:qwen-max: 适合复杂任务(如 NL2SQL)qwen-plus: 平衡性能与成本
    dashscope:
      api-key: sk  #DashScope 平台的 API Key,用于调用 Qwen 等模型。获取方式:登录 DashScope 控制台 → 查看或创建 API Key。
    vectorstore:
      analytic:
        enabled: true # 开启 AnalyticDB 向量数据库存储功能
        collectName: chatbi #向量集合名称,即你要写入数据的“collection”名,例如 chatbi
        regionId: cn-hangzhou #实例所在的区域 ID,比如 cn-hangzhou(杭州)、cn-beijing(北京)等。
        dbInstanceId: gp-bp11vjucxhw757v9p #AnalyticDB PostgreSQL 实例 ID,例如 gp-bp11vjucxhw757v9p
        managerAccount: #实例的管理员账号。
        managerAccountPassword: #实例的管理员密码。
        namespace: #命名空间信息,用于隔离不同用户的向量数据
        namespacePassword:
        defaultTopK: 10 #默认返回的相似向量数量。
        defaultSimilarityThreshold: 0.01 #通常设为 0.01 到 0.75 之间,根据实际效果调整。
        accessKeyId: #阿里云主账号或 RAM 用户的 AK 信息
        accessKeySecret:
chatbi:
  dbconfig:
    url: jdbc:mysql://host:port/database #数据库 JDBC 连接地址,示例:MySQL: jdbc:mysql://host:port/databasePostgreSQL: jdbc:postgresql://host:port/database
    username: #数据库用户名
    password: #数据库用户密码
    connectiontype: jdbc
    dialecttype: mysql #数据库类型,可选:postgresql、mysql
    schema: #postgresql类型所需要的schema名称

更多配置说明参考 : Spring AI Alibaba NL2SQL文档

💻 构建项目

使用 Maven 构建:

mvn clean install

或 Gradle:

gradle build

▶️ 启动服务

java -jar target/chat-1.0.0.jar

服务默认运行在 http://localhost:8065


🧪 使用说明

💬 对话接口 /chat

请求方式:

  • POST
  • URL: http://localhost:8065/chat
  • Content-Type: application/json

请求示例:

curl --location 'http://localhost:8065/chat' \
--header 'Content-Type: application/json' \
--data '{"input": "我的菜鸟驿站里冬天收件数最多的是哪个菜鸟驿站"}'

响应示例:

"SELECT * FROM stations ORDER BY winter_package_count DESC LIMIT 1;"

查询每个分类下已成交且销量最高的商品

接口请求

  • 请求方式:POST
  • 请求地址http://localhost:8065/simpleChat
  • 请求头Content-Type: application/json
  • 请求体示例
查询每个分类下已经成交且销量最高的商品及其销售总量,每个分类只返回销量最高的商品。

SQL 查询说明

该查询会返回每个商品分类下,已成交(订单状态为已完成)的商品中销量最高的商品及其销售总量。每个分类只返回销量最高的那一件商品。

具体的表结构和测试数据请参考 sql/schema.sqlsql/insert.sql 文件。

🖼 可视化界面

访问以下地址即可打开可视化对话页面:

http://localhost:8065/index.html

该页面提供一个输入框和发送按钮,可实时查看对话结果。


📄 许可证

本项目采用 Apache License 2.0 开源协议。


📞 联系方式

如有任何问题,请联系: