DeepSeek+Dify工作流的使用(二)
公众号:冒泡的肥皂
通过前面的文章,我们基本可以了解到知识库的建立和大模型使用的一些基本流程。接下来会分享下工作流方面的demo
- DeepSeek+Dify工作流的使用(一)插入代码
- DeepSeek+Dify打造数据库查询专家修正(一)
- DeepSeek+Dify打造数据库查询专家
- Dify个人助理本地搭建快速入门
本期分享借助工作流生成sql的demo
整个效果的简答说明
1.整体的流程如下
2.效果如下
查询内容:查询用户名为admin的邮箱
3.大模型的配置内容
可能遇到的问题
- 输出效果不理想生成的sql有问题
- 知识库的处理很重要,我在这里(DeepSeek+Dify打造数据库查询专家、DeepSeek+Dify打造数据库查询专家修正(一))有做过处理说明的。
- 强调下从知识库入手(表的结构说明最好是一段一段的可以单独分割的)
- 知识库没达到预期内容可以从提示词内容可以加强一些信息
- 可以直接用聊天助手测试自己的知识库
- 换个强点的大模型
- 关于生成的内容例如我上面截图多个些Thinking的内容
- 提示词限制
- 提示词也限制不住的话我们只有用上篇文章:DeepSeek+Dify工作流的使用(一)插入代码 添加代码进行处理了
- DeepSeek-R1-70B再网上看了一些内容说的是的think内容是强制输出的禁止的话要改代码。
- 我们这里用2的方式处理下把think内容过滤掉
- 如何过滤掉我们可以直接问大模型让他给python代码(注意整个处理的内容是个字符串
- 最好有个python的ide可以验证大模型给我们的代码,因为dify那里调试不了的。
- 测试的代码我贴再下面
{
"text": "<details style=\"color:gray;background-color: #f8f8f8;padding: 8px;border-radius: 4px;\" open> <summary> Thinking... </summary>嗯,我现在需要帮用户写一个SQL语句来查询用户名为admin的邮箱。首先,我得确定用户的需求是什么。他们有两个表,CHAT_USER和CHAT_MSG。CHAT_USER表里有用户的基本信息,包括邮箱,而CHAT_MSG表主要是聊天信息,应该和邮箱查询关系不大。\n\n首先,我应该直接从CHAT_USER表中获取数据,因为邮箱字段就在那里。用户只需要邮箱,所以不需要连接到其他表。接下来,我需要找到用户名为admin的记录。CHAT_USER表的USER_NAME字段就是用户名,所以条件应该是USER_NAME = 'admin'。\n\n然后,我要确保只返回邮箱这一列,所以SELECT语句后面应该是USER_EMAIL。同时,可能有多个用户有相同的用户名,所以可能会返回多行,但用户可能只需要一条,或者不管有多少,都要返回所有符合条件的邮箱。\n\n另外,是否需要考虑大小写的问题?比如,Admin和admin是否不同,这取决于数据库的配置。如果用户明确是admin,那么直接用='admin'就可以了。\n\n最后,写出SQL语句:SELECT USER_EMAIL FROM CHAT_USER WHERE USER_NAME = 'admin'; 这样就能直接获取到结果了。\n</details>\n\nSELECT USER_EMAIL FROM CHAT_USER WHERE USER_NAME = 'admin';",
}
import re
def main(sql_str) -> dict:
# 使用正则表达式去除<details>标签及其内容
pattern = re.compile(r'<details.*?</details>', re.DOTALL)
sql = pattern.sub('', sql_str)
return {
"result": sql,
}