【分享】R1 满血测试的 Dify 工作流(含1000个数学问题,一次性测个够)

想知道使用的R1大模型是否在「背诵答案」:books:

想知道使用的R1大模型是否「不满血」:lying_face:

想知道使用的R1大模型是否会深度思考「被截断」:scissors:

该Dify工作流通过

  • 选择1000道OpenR1-Math-220k的题目
  • 改变题目形式
  • 改变题目的语言风格
  • 改变题目的语序

使得修改后的题目区分于原始题目,从而来测试大模型是否仍然能正确回答问题。

DIFY DSL 文件下载:
百变测试题V0.1.0-案例-Dify-0_15_3-阿里百炼-DeepSeekR1(分享版).yml.zip (131.1 KB)

:warning:注意:开放数据集没办法用作评估R1性能,只能拿来判断是否为满血R1。

Dify 如何部署,可B站搜索教程安装


工作流 效果展示

:bride_with_veil:追妻小说风格

原始题目

1+1 等于几?

转换后的题目

他冷冷地看着她,眼中闪过一丝复杂的情绪,仿佛在质问一个无法逃避的宿命。  
“1+1 等于几?”他的声音低沉而冰冷,仿佛每一个字都带着刺骨的寒意。  
她抬起头,眼中满是倔强与不甘,却始终无法逃脱这个简单而又残酷的问题。  

R1 深度思考后的回答

<details style="color:gray;background-color: #f8f8f8;padding: 8px;border-radius: 4px;" open> <summary> Thinking... </summary>嗯,用户给了一个数学问题,但看起来有点不寻常。题目是“他冷冷地问她1+1等于几”,然后需要给出答案放在方框里。首先,我需要确认问题到底是什么。数学上来说,1+1显然是2,但问题出现在这个带有文学色彩的描述中,会不会有什么隐含的意思呢?比如,是否存在某种谜语或者双关语?

先分析场景:这可能是一个小说或故事中的情景,其中角色在对话中提到了1+1的问题。通常来说,数学题的正确答案是2,但在某些情况下,比如谜语或特殊语境下可能有不同的答案。例如,在二进制中1+1等于10,或者在逻辑门中有不同的结果,但这里的问题可能比较基础。

但用户可能希望得到标准答案,或者有没有其他可能性?例如,在某些文学作品里,像“1+1=王”这样的象形解释,但中文里的“王”字由中间的十和两边的横组成,可能类似。或者其他的文字游戏?

不过用户的问题明确说是数学问题,可能需要按照数学的规则来解答。这时候,作为基本的算术,1+1的结果确实应该是2。除非题目中有隐藏的条件或暗示,但根据提供的信息,并没有明显的提示要求其他的解答方式。可能用户想检查是否被复杂的场景迷惑,但其实核心还是简单的加法。

因此,我应该排除干扰,给出数学上的正确答案,即2。虽然情景描述得很戏剧化,但问题的本质还是基础的数学题,所以答案应该是2。不过还是要再次确认有没有可能被忽略的线索,但目前看起来没有,所以确定答案是2。
</details>

数学上的基本加法运算规则明确,1加1的结果是2。尽管场景带有文学色彩的铺垫,但问题本质依然遵循算术原则。

$$
\boxed{2}
$$

:octopus:克苏鲁风格

原始题目

2. Let \(x\) be a positive integer, and \(y\) is obtained from \(x\) when the first digit of \(x\) is moved to the last place. Determine the smallest number \(x\) for which \(3 x=y\).

转换后的题目

2. 在无尽的深渊中,\(x\) 是一个被古老力量所庇护的正整数,而 \(y\) 则是当 \(x\) 的首位数字被移至末位时诞生的扭曲产物。探寻那最小的数字 \(x\),使得 \(3 x = y\),以解开这不可名状的谜题。

题目答案

142857

R1 深度思考后的回答

<details style="color:gray;background-color: #f8f8f8;padding: 8px;border-radius: 4px;" open> <summary> Thinking... </summary>嗯,我现在要解这个数学问题,题目是说找到一个最小的正整数x,使得当把x的首位数字移动到末尾后得到y,并且满足3x = y。这个问题听起来有点像循环数或者数字排列的问题,但具体该怎么入手呢?

首先,我得明确条件。x是正整数,y是x的首位数字移到末尾后的数。例如,如果x是1234,那么y就是2341。但这里需要满足3x等于y。我需要找到这样的最小的x。

...(省略)

例如,当k=5时,3×10^5 ≡1 mod7。之前的k=0到4的情况:

k=0:3×1=3 mod7=3≠1  
k=1:3×10=30 mod7=30-28=2→2≠1  
k=2:3×100=300 mod7=300-294=6→6≠1  
k=3:3×1000=3000 mod7=3000-294×10=3000-2940=60,60 mod7=4(因为7×8=56,余4)  
k=4:3×10^4=30000→30000 mod7,可以计算每次乘以10再mod7。例如,前一个k=3时是4,乘以10得40 mod7=5。所以k=4时,3×10^4 mod7=5,不等于1。  
k=5:5×10=50 mod7=50-49=1。所以是的,k=5时第一次满足条件。所以n=6位数是可能的最小位数。这时候得到的x=142857,确实是满足条件的。

...(省略)
</details>

$$
\boxed{142857}
$$

DIFY DSL 文件

编排图

DSL如何导入DIFY

版本
V0.1.0::2024-02-13::
新增1000个OpenR1-Math测试题;
新增改变形式智能体;
新增DeepSeek-R1数学解题智能体;

DIFY DSL 文件下载:
百变测试题V0.1.0-案例-Dify-0_15_3-阿里百炼-DeepSeekR1(分享版).yml.zip (131.1 KB)

  1. 进入「工作室」界面
  2. 选择「导入DSL文件」按钮
  3. 弹窗后选择「文件」表单,然后点击「选择文件」
  4. 选择「百变测试题....(分享版).yml」文件
  5. :hourglass:等待上传完毕
  6. 点击「创建」按钮

*由于文件较大,大约等待30-60秒,看到提示导入成功后,刷新界面即可。


使用方式

如何添加模型

配置 模型

选择阿里百炼的 主要原因::one: 32K 超大输出窗口, :two: TPM 为 120万 token, 方便测试。 可自行替换。

https://www.aliyun.com/product/bailian?spm=5176.28103460.0.0.40f75d27KgaQXC

DeepSeek-V3

https://help.aliyun.com/zh/model-studio/developer-reference/deepseek?spm=a2c4g.11186623.help-menu-2400256.d_3_3_1_0.2d132562kVEbwA
  1. Dify 「设置」->「模型供应商」菜单中搜索:OpenAI-API-compatible
  2. 添加模型
模型类型: LLM
模型名称: deepseek-v3
APl endpoint URL: https://dashscope.aliyuncs.com/compatible-mode/v1
Completion mode: Chat
模型上下文长度: 65792
最大 token 上限: 8192
Function calling: 支持
Stream function calling: 支持
Vision 支持: 不支持
流模式返回结果的分隔符: \n\n

DeepSeek-R1

https://help.aliyun.com/zh/model-studio/developer-reference/deepseek?spm=a2c4g.11186623.help-menu-2400256.d_3_3_1_0.2d132562kVEbwA
  1. Dify 「设置」->「模型供应商」菜单中搜索:OpenAI-API-compatible
  2. 添加模型
模型类型: LLM
模型名称: deepseek-r1
APl endpoint URL: https://dashscope.aliyuncs.com/compatible-mode/v1
Completion mode: Chat
模型上下文长度: 65792
最大 token 上限: 32768
Function calling: 不支持
Stream function calling: 不支持
Vision 支持: 不支持
流模式返回结果的分隔符: \n\n

如何开始对话

注意,该工作流对话未开启记忆功能,对于工作流来说,每一次对话都是新对话。

1、「发布」后点击「在“探索”中打开」

2、选择风格化类型,然后点击「开始对话」

3、进入对话框后点击「开始(随机一个题目)」

4、工作流先通过V3完成题目转换,然后开始R1深度思考

5、查看结果

6、也可以手动输入题目

如何增加风格类型

1、选中「开始」节点,点击「风格化类型」的「编辑」按钮

2、点击「添加选项」新增风格后「保存」,记得右上角「发布」一下工作流。


如何更换题库

题目存储在 0.1.CODE 节点中,替换其中的 JSON 对象数组 即可。

JSON 对象数组 示例

[
{"problem":"## Task B-1.3.\n\nA ship traveling along a river has covered $24 \\mathrm{~km}$ upstream and $28 \\mathrm{~km}$ downstream. For this journey, it took half an hour less than for traveling $30 \\mathrm{~km}$ upstream and $21 \\mathrm{~km}$ downstream, or half an hour more than for traveling $15 \\mathrm{~km}$ upstream and $42 \\mathrm{~km}$ downstream, assuming that both the ship and the river move uniformly.\n\nDetermine the speed of the ship in still water and the speed of the river.","answer":"v_{R}=4\\mathrm{~}/\\mathrm{},v_{B}=10\\mathrm{~}/\\mathrm{}"},
{"problem":"3. (6 points) A construction company was building a tunnel. When $\\frac{1}{3}$ of the tunnel was completed at the original speed, they started using new equipment, which increased the construction speed by $20 \\%$ and reduced the working hours to $80 \\%$ of the original. As a result, it took a total of 185 days to complete the tunnel. If they had not used the new equipment and continued at the original speed, it would have taken $\\qquad$ days to complete the tunnel.","answer":"180"}
]

获取测试数据来源

  1. 访问 huggingface open-r1-math 数据集
https://huggingface.co/datasets/open-r1/OpenR1-Math-220k
  1. Dataset Viewer 中 选中 all/default 后执行SQL
SELECT problem,answer FROM all_default LIMIT 1000;
  1. 已经获取了1000条记录,将其转为了JSON对象数组,存放到Dify代码节点中方便使用。(原因:hugging face 的 dataview api 无法正常查询数据)按需自行替换。

提示词展示

1.2.LLM 题目形式转换提示词

:robot:模型::deepseek-v3

:gear:系统提示词

### 你是谁?
你是DeepSeek V3.

### 你的任务是什么?
你的任务是:换一种形式来表达题目。

你在换形式的过程中,不改变问题的本质,不改变题目类型,不改变题目中的表达式。

你将通过如下方式来完成转换形式:
1. 保留题目中原有的表达式和算术式子。
2. 增加形容词。
3. 替换名词。
4. 不影响语义逻辑的前提下改变句子顺序。
5. 不影响语义逻辑的前提下改变语言风格。 

### 你的任务输出要求是什么?
你的任务输出需要满足如下要求:
1. 转换形式后依旧是一道题目(由题干和问题组成)。
2. 不要在题干中写出题目答案。
3. 只返回转换形式后的题目,不要解答题目。
4. 转后的题目语言为中文,特殊的术语保留原来的语言。

### 你的任务输出模版是什么?
转换形式后的题目 enclosed within "```\n\n```\n" .

:baby:用户消息模版

原始题目:  
```
{{problem}}
```

目标语言风格:
{{style}}

2.1.LLM 深度思考回答问题提示词

:robot:模型::deepseek-r1

:gear:系统提示词(不填写)

:baby:用户消息模版

数学问题描述:  

{{new_problem}}

---

Please reason step by step, and put your final answer within MathJax block(`$$`) math notation:

$$
\boxed{}
$$

# 引用
[^1]: OpenR1-Math数据集 https://huggingface.co/datasets/open-r1/OpenR1-Math-220k
[^2]: Dify https://dify.ai/
[^3]: 阿里百炼 https://www.aliyun.com/product/bailian?spm=5176.28103460.0.0.40f75d27KgaQXC
[^4]: 微信 Markdown 编辑器.WTFPL license https://github.com/doocs/md
[^5]: DSL源文件下载 https://s3uayji2xq.feishu.cn/docx/F887d9q35o6bTHxuuwDcrk7rnmH
30 个赞

坐发沙慢慢看

3 个赞

感谢佬友

3 个赞

太强了!感谢大佬

2 个赞

太强了大佬

3 个赞

感谢大佬

1 个赞

这个有意思

1 个赞

感谢大佬分享

2 个赞

佬友很闲啊,人空闲,机器也空闲,搞这个:joy:

1 个赞

厉害,这个很方便 :+1:

1 个赞

太强了,谢谢大佬

1 个赞

感谢分享

1 个赞

太有实力了lao

1 个赞

只能说太牛了lao