网站seo搜索北京网站优化校学费
文章目录
- DeepSeek+dify知识库,查询数据库api 方式
- 本地准备
- 接口开发
- 配置工作流
- 解决deepseek返回think标签处理
DeepSeek+dify知识库,查询数据库api 方式
想干这事之前先梳理下流程
- 用户输入问题,根据用户的问题提出关键词
- 通过http调用外部服务接口,根据关键词查询数据库
- 返回200,调用大模型,将用户问题和知识进行梳理
- 返回其他,直接输出
本地准备
要求:
- 有一个python环境
- 安装pymysq和flask 组件python -m pip install pymysql flask
- 有一个mysql,或其他的数据库,我有mysql直接用了
接口开发
让kimi给我生成一个文章表,并且插入10条数据,我们可以告诉kimi,文章长度多大,这样内容可以丰富些。
直接让kimi生成一个暴露接口查数据库的服务,有简单的优化了下,将下面的内容放入到server.py文件中
from flask import Flask, request, jsonify
import pymysql
app = Flask(__name__)
# 数据库配置
DATABASE_CONFIG = {'host': '', # 自己的数据库地址'user': '', # 自己数据库的账户'password': '', #自己数据库的密码'db': 'demo', # 自己数据库的库名'charset': 'utf8mb4','cursorclass': pymysql.cursors.DictCursor
}
@app.route('/query', methods=['POST'])
def query_database():print("接收到请求")# 获取关键字keyword = request.json.get('keyword')print("keyword为:"+keyword)ifnot keyword:return jsonify({"error": "Keyword is required"}), 400# 参数化查询,避免 SQL 注入,修改成自己的库query = "SELECT * FROM articles WHERE content LIKE %s"params = ('%' + keyword + '%',)try:# 建立数据库连接connection = pymysql.connect(**DATABASE_CONFIG)with connection.cursor() as cursor:# 执行查询cursor.execute(query, params)result = cursor.fetchall()connection.commit()connection.close()ifnot result:return"未查询到有效数据", 400# 生成 Markdown 表格markdown_table = generate_markdown_table(result)return markdown_table, 200except Exception as e:return str(e), 500
def generate_markdown_table(results):""" 生成 Markdown 表格 """ifnot results:return""# 获取列名columns = results[0].keys()# 表头table_md = "| " + " | ".join([col for col in columns]) + " |\n"# 分隔线table_md += "| " + " --- |" * len(columns) + "\n"# 表格内容for row in results:table_md += "| " + " | ".join([str(cell) for cell in row.values()]) + " |\n"return table_md
if __name__ == '__main__':# 注意这里绑定本机的内容ip,省事点,就0.0.0.0即可。不要绑定127.0.0.1,docke内访问不到app.run(host='10.1.0.65', port=8000)
启动服务
python .\server.py
配置工作流
创建一个空白应用。
在开始节点添加一个输入字段context
添加一个LLM,把开始节点设置的context字段作为上下文传入,并设置提示词提取关键词。
添加一个http请求节点,把我们在接口开发里的地址和接口名填写进去2,然后把大模型的输出作为关键词填写到请求body里3,我们关闭重试机制4。
这里要注意下:json的引号是中文的,最好在外面写好校验过了再放进去。
在HTTP请求的输出变量里,我们只关注status_code 响应状态码和响应内容即可。
添加一个条件分支1,然后设置HTTP响应码为200的时候,连接到大模型。其他直接结束。
添加大模型,将HTTP请求的响应体作为上下文给大模型,输入提示词,让大模型根据知识,验证,并进行合理性的验证,最后结构化返回。
在结束节点中,我们把大模型整理的内容输出。
试运行效果。