text2sql 自然语言转sql
github.com/wangle201210/text2sql
基于eino实现的text2sql ai agent
记得给个小星星⭐️哦~
Text2SQL
一个基于自然语言处理的工具,可以将自然语言转换为对应的SQL查询语句。
功能特点
- 支持将中文自然语言转换为SQL查询语句
- 自动验证生成的SQL语句的正确性
- 支持多次重试以提高成功率
- 可选择是否执行生成的SQL语句
安装
go get github.com/wangle201210/text2sql
使用方法
基本用法
export OPENAI_API_KEY="sk-******"
export OPENAI_MODEL_NAME="gpt-4o-mini"
export OPENAI_BASE_URL="https://api.openai.com/v1"
package main
import (
"github.com/wangle201210/text2sql"
"fmt"
)
func main() {
client := &text2sql.Text2sql{
DbLink: "root:password@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local",
Try: 5, // 失败时的重试次数
ShouldRun: true, // 是否执行生成的SQL
}
// 将中文问题转换为SQL并执行
sql, result, err := client.Do("王五的openid")
if err != nil {
panic(err)
}
fmt.Printf("生成的SQL: %s\n", sql)
fmt.Printf("执行结果: %v\n", result)
}
配置说明
DbLink
: MySQL数据库连接信息Try
: SQL生成失败时的重试次数ShouldRun
: 是否执行生成的SQL语句- 设置为
true
时会执行SQL并返回结果 - 设置为
false
时只返回生成的SQL语句
- 设置为
命令行工具
注意事项
1. 确保数据库连接字符串中包含正确的用户名、密码和数据库名
2. 建议在生产环境中适当设置重试次数,避免过多重试
3. 如果只需要生成SQL而不执行,请将ShouldRun
设置为false
4. 用例的数据在note20250226.sql.zip
依赖
- gorm.io/gorm
- github.com/cloudwego/eino
本作品采用《CC 协议》,转载必须注明作者和本文链接