Bytebase 是为开发人员、测试、DBA和运维工程师构建的数据库 DevOps 领域的,类 GitLab/GitHub 平台。
这篇文章主要关注 Bytebase SQL 编辑器中的 AI 增强功能。使用此功能您可以使用自然语言在 Bytebase SQL 编辑器中查询数据库。同时还能给出针对查询的索引建议,但目前只支持 OpenAI 兼容的API,由于国内无法访问 ChatGPT ,另外出于数据安全的考虑,也建议使用本地部署的LLM。您可以找一个与 OpenAI API 完全兼容的LLM, 但目前开源的模型如 llama3 已经非常强大,本篇文章就是详解如何使 Bytebase 对接私有部署 llama3 模型。
思路是在 Bytebase 和 llama3 中间加一个翻译器,将bytatebase 发起的符合OpenAI API规范的请求转换为llama3 API 的请求,当然响应就是这个过程的逆向解释。这里使用开源项目 One-API。
下面进入实操(linux 环境,docker的安装掠过):
运行llama3 模型
# 先运行llama3,我这里使用 ollama 运行llama3
docker run -d -p 11434:11434 --name ollama --restart always ollama/ollama
# ollama 容器启动后,进入到容器内
docker exec -it ollama bash
# 下载 llama3 模型( 如果中文问答建议使用llama3-Chinese:8B-instruct 模型,需要自己下载并导入 )
ollama pull llama3
# 目前 Bytebase 发送 API 请求默认的 model 使用的是 gpt-3.5-turbo 无法修改,所以我们需要将模型改名为 gpt-3.5-turbo。也可以在 One-API 中做映射。
ollama cp llama3 gpt-3.5-turbo
# 运行模型
ollama run gpt-3.5-turbo
至此本地模型就运行起来了。可以测试一下API是否正常。
curl http://localhost:11434/api/generate -d '{
"model": "gpt-3.5-turbo",
"prompt":"Why is the sky blue?"
}'
当然这个模型虽然名称是 gpt-3.5-turbo,但实际上他是llama3 模型。
配置 One-API
GitHub 项目地址
# docker运行
# 使用 SQLite 的部署命令:
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
启动后登陆 One API 管理界面
先配置渠道:
配置令牌
提交后生成令牌,点击复制按钮,会显示令牌。
测试 One-API
curl http://192.168.0.10:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-UUqssfusufisfisifwefjfjmwvwlmi3292923m84E698E548" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "给我讲个笑话吧。"
}
],
"temperature": 0.7
}'
配置 Bytebase
如果 One-API 测试没问题了,就可以将其配置到 Bytebase 中了
在设置–> 工作空间 --> 通用 中有 AI 增强配置页。要求输入 OpenAI API Key 和 OpenAI API Endpoint
OpenAI API Key:即刚才的生成的令牌
OpenAI API Endpoint:即 One-API 的地址端口,如我这里的 http://192.168.0.10:3000
验证
至此我们就可以在Bytebase中选择一个数据库,打开SQL 编辑器,左下角启动ChatSQL。在对话框输入你想查询的数据吧,AI 会为你生成对应的查询SQL,你可以点击立即执行按钮立即执行查询SQL,也可以点击编辑按钮对生成的SQL编辑后保存再执行。