当前位置: 首页 > news >正文

基于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",说明提示词中自定义的编码规范是生效的!

相关文章:

  • 【程序员AI入门:应用】7.LangChain是什么?
  • 第11次:用户注册(完整版)
  • OpenHarmony GPIO应用开发-LED
  • 63.微服务保姆教程 (六) SkyWalking--分布式链路追踪系统/分布式的应用性能管理工具
  • 原生 IP(Native IP)
  • C++23 std::generator:用于范围的同步协程生成器 (P2502R2, P2787R0)
  • FlinkCDC采集MySQL8.4报错
  • 如何监控Kafka的Lag(消费延迟)?
  • RT-Thread中的配置
  • MySQL同步ES的6种方案!
  • [三分钟]性能测试工具JMeter入门: 下载安装JMeter并设置中文;JMeter基本使用流程
  • 解锁科研文献检索密码:多工具协同攻略
  • 给frp设置开机自启
  • 应急响应靶场web1:知攻善防实验室
  • 分布式 ID 的技术解析与实现实践
  • 【Java EE初阶 --- 多线程(初阶)】多线程的基本内容
  • ZYNQ-UART串口中断
  • 【Java篇】内存中的桥梁:Java数组与引用的灵动操作
  • 前端封装框架依赖管理全攻略:构建轻量可维护的私有框架
  • livp文件使用python转换为heic或jpeg格式
  • 央行行长详解降准:将释放长期流动性1万亿,整体存款准备金率平均水平降至6.2%
  • 巴方称印军发动24起袭击,巴境内6处地点遭袭致8人死亡
  • 金价大反攻,国内金饰价格涨回千元,能否重返巅峰?
  • 百亿基金经理调仓路径曝光,张坤、陈皓、胡昕炜又有新动作
  • 马克思主义理论研究教学名师系列访谈|石书臣:思政课是落实立德树人的关键
  • 五一小长假上海“人从众”,全要素旅游交易总额超200亿元