Nicozwy / MCQ-generation-Chain

大模型赋能的选择题自动生成,利用langchain工具,加入谷歌搜索和POT辅助

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MCQ-generation-Chain

LLMs-enabled automatic generation of multiple-choice questions in math subjects using langchain tools, incorporating Google search and PoT assistance

How to run

1. Environment Requirement

python version == 3.11.1

pip version== 24.0

2. Create Conda Virtual Env

run the command in root folder:

conda create -n MCQ
conda activate MCQ

3. Install Dependency

pip install -r requirements.txt

4. Replace Your Keys

open main.py and edit line 4 &5

# API-KEY Settings
os.environ["OPENAI_API_KEY"] = "your openai key"
os.environ["SERPAPI_API_KEY"] = "your serpapi key"

Your openai api-key should be available to GPT4 model.

SerpApi key is available if you subscribe at : https://serpapi.com/manage-api-key

5. Modify Question Settings

open main.py and edit line 7-11

# Question settings
cnt = 1 # question quantity
knowledge = '简易方程' # knowledge point
difficulty_level = 0 # difficulty level: 0 easy, 1 middle, 2 hard
isScene = True # Whether or not to set the context
otherRestriction = "" 

6. Run

Run the command in root folder.

python main.py

7. Expected Result

> Entering new AgentExecutor chain...

Invoking: `Search` with `中小学简易方程的典型应用题`


['同学们在列方程解应用题时,一般只写出四项内容,即设未知数、列方程、解方程、答语。设未知数时要在Χ后面写上单位名称,在方程中已知数和未知数都不 ...', '题目
中有特殊的数量关系,可以用特定的步骤和方法来解答的应用题,叫做典型应用题. 以下主要研究30类典型应用题:. 1、归一问题 2、归总问题 3、和差 ...', '小学数学中 把含有数量关系的实际问题用语言或文字叙述出来,这样所形成的题目叫做应用题。任何一道应用题都由两部分构成。第一部分是已知条件(简称条件) ...', '小学数学30种典型应用题讲解 · 1、审题,明白题目是什么意思,根据条件找数量关系 · 2、列式解答,可以用方程,也可以用算术 · 3、最后做答.', '《小学数学应用题解题方法手册》 是一本小学数学应用题解题宝典,主要包括:应用题的分类,应用题的解题步骤,应用题的基本解法,开放型应用题的解法和典型应用题的解。', 'a 审题理解题意:了解应用题的内容,知道应用题的条件和问题。读题时,不丢字不添字边读边思考,弄明白题中每句话的意思。也可以复述条件和问题,帮助理解 ...', '应用题的解题策略,在小学数学教学中是一个重点,同样也是一个难点。它全面考查了学生的基础知识,也考查了学生综合与分析能力。接下来我为你整理了小学数学解方程应用题 ...', '小学数学应用题大全小学数学中把含有数量关系的实际问题用语言或文字叙述出来,这样所形成的题目叫做应用题。任何一道应用题都由两部分构成。', '《小学数学应用题解题方法手册》是一本小学数学应用题解题宝典,主要包括:应用题的分类,应用题的解题步骤,应用题的基本解法,开放型应用题的解法和典型应用题的解。', '小学五年级数学应用题大汇总(共94道题),让孩子查漏补缺! (电子版)小学五年级数学上册典型奥数题,有答案及解析! 【暑假预习】小学五年级上册数学 ...']中小学简易方程的典型应用题主要涉及生活中的实际问题,通过设立未知数、列方程、解方程、得出答案的步骤来解决。以下是一些典型的应用题类型和例题:

### 典型题型

1. **归一问题**:涉及将不同的事物或数量转化为同一单位或标准进行比较或计算的问题。
2. **归总问题**:涉及将多个部分的数量合并为一个总量的问题。
3. **和差问题**:涉及两个或多个数量的和或差的问题。
4. **比例问题**:涉及两个或多个数量之间比例关系的问题。
5. **工程问题**:涉及工作效率、工作时间与工作量之间关系的问题。

### 例题

1. **归一问题例题**:小明和小红有苹果30个,小明的苹果是小红的2倍,问小明和小红各有多少个苹果?
   - 设小红有x个苹果,则小明有2x个苹果,方程为:x + 2x = 30。

2. **归总问题例题**:一个班级有男生20人,女生比男生多10人,问这个班级共有多少人?
   - 设男生人数为x,则女生人数为x+10,方程为:x + (x+10) = 30。

3. **和差问题例题**:两个数的和为50,差为10,求这两个数。
   - 设这两个数分别为x和y,方程组为:x + y = 50,x - y = 10。

4. **比例问题例题**:一条绳子长120cm,被剪成两段,其中一段是另

> Finished chain.
例题搜索结果:

{'user_input': '请帮我找几道中小学简易方程的典型应用题,并总结一下常见题型', 'output': '中小学简易方程的典型应用题主要涉及生活中的实际问题,通过设立未知数、列方程、解方程、得出答案的步骤来解决。以下是一些典型的应用题类型和例题:\n\n### 典型题型\n\n1. **归一问题**:涉及将不同的事物或数量转化为同一单位或标准 进行比较或计算的问题。\n2. **归总问题**:涉及将多个部分的数量合并为一个总量的问题。\n3. **和差问题**:涉及两个或多个数量的和或差的问题。\n4. **比例问题** :涉及两个或多个数量之间比例关系的问题。\n5. **工程问题**:涉及工作效率、工作时间与工作量之间关系的问题。\n\n### 例题\n\n1. **归一问题例题**:小明和小红有苹果30个,小明的苹果是小红的2倍,问小明和小红各有多少个苹果?\n   - 设小红有x个苹果,则小明有2x个苹果,方程为:x + 2x = 30。\n\n2. **归总问题例题**:一个 班级有男生20人,女生比男生多10人,问这个班级共有多少人?\n   - 设男生人数为x,则女生人数为x+10,方程为:x + (x+10) = 30。\n\n3. **和差问题例题**:两个数的和为50,差为10,求这两个数。\n   - 设这两个数分别为x和y,方程组为:x + y = 50,x - y = 10。\n\n4. **比例问题例题**:一条绳子长120cm,被剪成两段,其中一段 是另'}


> Entering new AgentExecutor chain...
在夏天,小明和小华计划一起去游泳池游泳。游泳池的门票对于成人是每人30元,对于12岁以下的儿童是每人半价。如果小明和小华一共花了45元买了两张门票,并且我们知道小华是12岁以下的儿童,那么小明是成人还是12岁以下的儿童?

> Finished chain.
生成的题目:
 {'user_input': '我需要你为我编写1道关于 简易方程知识的问题, \n                        参考现有的题目中小学简易方程的典型应用题主要涉及生活中的实际问题, 通过设立未知数、列方程、解方程、得出答案的步骤来解决。以下是一些典型的应用题类型和例题:\n\n### 典型题型\n\n1. **归一问题**:涉及将不同的事物或数量转化为 同一单位或标准进行比较或计算的问题。\n2. **归总问题**:涉及将多个部分的数量合并为一个总量的问题。\n3. **和差问题**:涉及两个或多个数量的和或差的问题。\n4. **比例问题**:涉及两个或多个数量之间比例关系的问题。\n5. **工程问题**:涉及工作效率、工作时间与工作量之间关系的问题。\n\n### 例题\n\n1. **归一问题例题** :小明和小红有苹果30个,小明的苹果是小红的2倍,问小明和小红各有多少个苹果?\n   - 设小红有x个苹果,则小明有2x个苹果,方程为:x + 2x = 30。\n\n2. **归总问 题例题**:一个班级有男生20人,女生比男生多10人,问这个班级共有多少人?\n   - 设男生人数为x,则女生人数为x+10,方程为:x + (x+10) = 30。\n\n3. **和差问题例题**:两个数的和为50,差为10,求这两个数。\n   - 设这两个数分别为x和y,方程组为:x + y = 50,x - y = 10。\n\n4. **比例问题例题**:一条绳子长120cm,被剪成 两段,其中一段是另,你可以利用搜索引擎检查问题是否符合生活实际\n                        难度为 初级,你需要为题目编一个适用于教育的情境,创设的题目需要以 生活中真实发生的问题为背景,使用在生活中会真实出现的数字,问题是要解决生活中实际出现的问题,只需要给出问题即可,以问句结尾', 'output': '在夏天,小明和小华 计划一起去游泳池游泳。游泳池的门票对于成人是每人30元,对于12岁以下的儿童是每人半价。如果小明和小华一共花了45元买了两张门票,并且我们知道小华是12岁以下的儿童,那么小明是成人还是12岁以下的儿童?'}


> Entering new AgentExecutor chain...

Invoking: `Calculator` with `30 / 2`


Answer: 15.0
Invoking: `Calculator` with `45 - (30 / 2)`


Answer: 30.0解题过程如下:

1. 首先,我们知道12岁以下的儿童门票是成人门票的半价。成人门票价格为30元,所以儿童门票价格为\(30 / 2 = 15\)元。

2. 小明和小华一共花了45元买了两张门票,其中小华是12岁以下的儿童,所以他的门票价格为15元。因此,剩下的钱是\(45 - 15 = 30\)元。

由于剩下的30元正好是成人门票的价格,这意味着小明买的是成人票。

答案:小明是成人。

> Finished chain.
[{'content': '在夏天,小明和小华计划一起去游泳池游泳。游泳池的门票对于成人是每人30元,对于12岁以下的儿童是每人半价。如果小明和小华一共花了45元买了两张门票,并且我们知道小华是12岁以下的儿童,那么小明是成人还是12岁以下的儿童?', 'description': {'user_input': "在夏天,小明和小华计划一起去游泳池游泳。游泳池的门票对于成人是每人30元,对于12岁以下的儿童是每人半价。如果小明和小华一共花了45元买了两张门票,并且我们知道小华是12岁以下的儿童,那么小明是成人还是12岁以下的儿童?返回解题过程和答案,计算时只能提供单行的python数学表达式,这样的表达式无法被计算'470 // 60, 470 % 60',如果有多个要计算的表达式请你逐步计算,不能出 现未定义的变量", 'output': '解题过程如下:\n\n1. 首先,我们知道12岁以下的儿童门票是成人门票的半价。成人门票价格为30元,所以儿童门票价格为\\(30 / 2 = 15\\)元。\n\n2. 小明和小华一共花了45元买了两张门票,其中小华是12岁以下的儿童,所以他的门票价格为15元。因此,剩下的钱是\\(45 - 15 = 30\\)元。\n\n由于剩下的30元 正好是成人门票的价格,这意味着小明买的是成人票。\n\n答案:小明是成人。'}}]
############################最终生成题目结果##################################
[{'content': '在夏天,小明和小华计划一起去游泳池游泳。游泳池的门票对于成人是每人30元,对于12岁以下的儿童是每人半价。如果小明和小华一共花了45元买了两张门票,并且我们知道小华是12岁以下的儿童,那么小明是成人还是12岁以下的儿童?', 'options': {'A': '小明是成人', 'B': '小明是12岁以下的儿童', 'C': '小明和小华都是12岁以下的儿童', 'D': '小明和小华都是成人'}, 'description': '解题过程如下:\n\n1. 首先,我们知道12岁以下的儿童门票是成人门票的半价。成人门票价格为30元,所 以儿童门票价格为15元。\n\n2. 小明和小华一共花了45元买了两张门票,其中小华是12岁以下的儿童,所以他的门票价格为15元。因此,剩下的钱是45 - 15 = 30元。\n\n由 于剩下的30元正好是成人门票的价格,这意味着小明买的是成人票。', 'correct_answer': 'A'}]

About

大模型赋能的选择题自动生成,利用langchain工具,加入谷歌搜索和POT辅助

License:Apache License 2.0


Languages

Language:Python 100.0%