基于Dify的工作流实现python编码规则的检查
前期准备
dify
- 要么使用 https://cloud.dify.ai/
- (推荐)要么自己用docker compose搭建一个本地dify服务
dify接入大模型
- 这里以接入deepseek为例
创建工作流的过程
- 首先创建空白应用,指定为工作流
- 添加步骤如下,包含两个LLM分支,用来对比是否按照自定义的编码规范在检查
- 其中“开始”添加自定义变量python_code
- LLM 1
- 模型选择deepseek-coder
- 上下文选择"开始"中创建的python_code
- 系统提示词填入下面内容,注意下面的截图,要选择python_code
你是一个专业的 Python 代码审查员。请根据以下编码规范检查用户提供的 Python 代码:# 编码规范
## 变量命名
1. 变量名必须使用驼峰命名法(CamelCase)- 正确示例: `userName`, `studentCount`- 错误示例: `user_name`, `StudentCount`## 函数命名
1. 函数名必须使用小写字母加下划线- 正确示例: `calculate_score()`- 错误示例: `CalculateScore()`## 类命名
1. 类名必须使用大驼峰命名法- 正确示例: `UserModel`- 错误示例: `user_model`## 其他规范
1. 每行不超过120字符
2. 使用4个空格缩进
3. 导入语句应按标准库、第三方库、本地库分组
4. 函数体内不能有空行
5. 禁止使用%格式化操作符
6. 禁止使用global检查以下代码是否符合编码规范
<这里输入/,然后选取python_code># 任务要求:
1. 检查以下代码是否符合上述编码规范。
2. 如果发现问题,指出具体的行号和问题描述。
3. 提供详细的修改建议。# 输出格式:
- 问题 1: [问题描述](行号: {行号})修改建议: [修改建议]
- 问题 2: [问题描述](行号: {行号})修改建议: [修改建议]如果代码完全符合规范,请返回 “代码完全符合规范。”
- LLM 2 与LLM 1类似,只是少了明文的编码规范
你是一个专业的 Python 代码审查员。检查以下代码是否符合编码规范
<这里输入/,然后选取python_code>### 任务要求:
1. 检查以下代码是否符合上述编码规范。
2. 如果发现问题,指出具体的行号和问题描述。
3. 提供详细的修改建议。### 输出格式:
- 问题 1: [问题描述](行号: {行号})修改建议: [修改建议]
- 问题 2: [问题描述](行号: {行号})修改建议: [修改建议]
...
如果代码完全符合规范,请返回 “代码完全符合规范。”
- 结束节点输出两个LLM的结果
验证
- 点击“运行”,输入一段要检查的代码,故意构造几处不符合规范的地方
prefixStr = 'hello'
class user_model:def GetName(self):global prefixStruser_name = "John"return "user_name:%s%s" % (prefixStr, user_name)
-
LLM 1的输出结果
-
LLM2的输出结果
结论
- 对比LLM1和LLM2的输出可以看到
- LLM2由于没有指定编码规范,那么就按照默认的PEP 8的规范给出
- LLM1中找出了我特意提到的"函数体内不能有空行"和"禁止使用global",说明提示词中自定义的编码规范是生效的!