Dify 是一个开源的大语言模型(LLM)应用开发平台。它拥有直观的界面,集成了智能体 AI 工作流、检索增强生成(RAG)流程、智能体能力、模型管理、可观测性功能等,能让你快速从原型阶段过渡到产品上线阶段。
GitHub Difyhttps://github.com/langgenius/dify
一 .安装
提示:默认端口80,需要配置云服务器的安全策略,80端口的访问权限。
二.配置
1.设置语言
2. 配置模型供应商
这里以Ollama为例,安装参考:
Alibaba Cloud Linux 基于Ollama部署DeepSeek R1:7B版本
基础URL:填写安装的Ollama的,页面可以向下滚动
3. 配置Text Embedding 模型
这里以nomic-embed-text模型为例,安装请参考:
AnythingLLM 结合nomic-embed-text 处理文档建立私有知识库-CSDN博客
三.创建知识库
1.入口
2.选择文件,注意文件大小限制在15M以内
3. 设置参数,处理
4. 知识库创建完成
四. 使用自然语言查询数据库
1.准备工作
在服务端提供一个接口,接收SQL语句,执行查询。
使用如下提示词,让大模型提供一段脚本:
为了实现一个在8306端口启动的服务,用于执行安全的SQL查询并返回结果,以下是详细的Python脚本。该脚本使用Flask框架处理HTTP请求,并连接MySQL数据库,严格限制仅允许SELECT查询。
如得到如下脚本:
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error
app = Flask(__name__)
# 配置数据库连接信息,根据实际情况修改以下参数
db_config = {
'host': 'localhost', # 数据库主机地址
'port': 3306, # 数据库端口,默认3306
'user': 'your_username', # 数据库用户名
'password': 'your_password', # 数据库密码
'database': 'your_database' # 数据库名称
}
@app.route('/query', methods=['POST'])
def execute_query():
# 获取请求中的JSON数据
data = request.get_json()
if not data or 'sql_query' not in data:
return jsonify({'error': 'Missing SQL query in request'}), 400
sql_query = data['sql_query'].strip()
# 验证是否为SELECT查询
if not sql_query.lower().startswith('select'):
return jsonify({'error': 'Only SELECT queries are permitted'}), 400
# 连接数据库并执行查询
try:
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True) # 使用字典游标获取字段名
cursor.execute(sql_query)
results = cursor.fetchall()
cursor.close()
conn.close()
return jsonify({'data': results})
except Error as e:
return jsonify({'error': f'Database error: {str(e)}'}), 500
except Exception as e:
return jsonify({'error': f'Unexpected error: {str(e)}'}), 500
if __name__ == '__main__':
# 启动服务,监听8306端口
app.run(host='0.0.0.0', port=8306)
将脚本保存到服务器上,并修改其中的db_config相关配置。如db_service.py,执行:
python3 db_service.py
确保安装依赖:
pip3 install mysql-connector-python
pip3 install flask
2.创建数据库查询工作流
(1) 给开始节点增加一个输入变量sql
(2)增加一个执行代码节点
并配置输入变量为开始节点的变量sql,输出变量result,并设置执行代码:
执行代码:
import requests
def main(sql: str) -> dict:
# 查询服务
url = "http://192.168.0.79:8306/query"
# 构造请求体
payload = {
"sql_query": sql
}
# 发送POST请求
try:
response = requests.post(url, json=payload)
# 检查状态码
if response.status_code == 200:
# 解析返回数据
result = response.json()
return {
"result": f"{result}"
}
else:
return {
"result": f"请求失败,状态码:{response.status_code},{response.json()}"
}
except requests.exceptions.RequestException as e:
return {
"result": f"请求异常:{e}"
}
(3) 增加结束节点,配置输出变量为代码执行的输出参数result
(4) 运行测试
输入一个查询语句,点击开始运行进行测试。
3.创建Agent
配置上下文,选择包含数据库描述的知识库,如何生成数据库描述,请参考:
配置工具,选择上面创建的数据库查询工作流
输入提示词:
发布后,即可体验:
小结:个人体验通过自然语言生成SQL查询数据库(ChatBI)离实际运用还有一定的距离。