子曰-o1:网易有道开源国内首个分步式讲解推理模型,支持K12数学教学

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 子曰-o1是网易有道推出的国内首个分步式讲解推理模型,采用14B轻量级架构,专为消费级显卡设计,支持K12数学教学,提供精准的解题思路和答案。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:子曰-o1是国内首个分步式讲解推理模型,支持K12数学教学。
  2. 技术:采用14B轻量级架构,专为消费级显卡设计,能在低显存设备上稳定运行。
  3. 应用:应用于网易有道旗下的AI全科学习助手“有道小P”,支持启发式学习。

正文(附运行示例)

子曰-o1 是什么

autotrain-advanced

子曰-o1是网易有道发布的国内首个输出分步式讲解的推理模型。模型采用14B轻量级架构,专为消费级显卡设计,能在低显存设备上稳定运行。通过思维链技术,模拟人类的思考方式,以“自言自语”和自我纠错的方式输出详细的解题步骤。

这种分步式讲解功能特别适合教育场景,能帮助学生更好地理解和掌握知识。子曰-o1在教育领域的应用表现出色,特别是在K12数学教学中,能提供精准的解析思路和答案。模型已应用于网易有道旗下的AI全科学习助手“有道小P”,支持“先提供解析思路、再提供答案”的答疑过程。

子曰-o1 的主要功能

  • 分步式讲解:采用思维链技术,能以“自言自语”和自我纠错的方式输出详细的解题过程,帮助用户更好地理解和掌握知识。
  • 轻量化设计:作为14B参数规模的轻量级单模型,专为消费级显卡设计,能在低显存设备上稳定运行。
  • 强逻辑推理:具备强大的逻辑推理能力,能提供高准确度的解题思路和答案,尤其在数学推理方面表现出色。
  • 教育场景优化:基于教育领域数据深度优化,使用大量学生试卷习题作为训练样本,提升在教育场景中的应用效果。
  • 启发式学习:支持“先提供解析思路、再提供答案”的答疑过程,引导学生主动思考,提升自主学习能力。

子曰-o1 的技术原理

  • 思维链技术:子曰-o1采用思维链技术,通过模拟人类的思考方式,形成较长的思维链条,实现更接近人类的推理过程。模型在解题时会“自言自语”并自我纠错,最终输出分步解题过程。
  • 轻量化设计:模型采用14B参数规模,专为消费级显卡设计,能在低显存设备上稳定运行。这种轻量化设计降低了硬件门槛,使模型能在普通消费级显卡上高效运行。
  • 分步式讲解功能:作为国内首个输出分步式讲解的推理模型,子曰-o1能将复杂的解题过程分解为多个步骤,帮助用户逐步理解。
  • 自我纠错与多样化思路:模型在推理过程中具备自我纠错能力,能及时修正错误推理,并探索多种解题思路,确保最终答案的准确性。

如何运行 子曰-o1

1. 环境配置

子曰-o1的环境配置与Qwen2.5-14B-Instruct模型相同。你可以使用Transformers或vLLM来加载和运行模型。以下是Python代码示例:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "netease-youdao/Confucius-o1-14B"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

2. 构建消息

根据模型提供的预定义系统消息和用户消息模板,构建请求消息。以下是Python代码示例:

SYSTEM_PROMPT_TEMPLATE = """你叫"小P老师",是一位由网易有道「子曰」教育大模型创建的AI家庭教师。
尽你所能回答数学问题。

!!! 请记住:
- 你应该先通过思考探索正确的解题思路,然后按照你思考过程里正确的解题思路总结出一个包含3-5步解题过程的回答。

思考过程的一些准则:
- 这个思考过程应该呈现出一种原始、自然且意识流的状态,就如同你在解题时内心的独白一样,因此可以包含一些喃喃自语。
- 在思考初期,你应该先按自己的理解重述问题,考虑问题暗含的更广泛的背景信息,并梳理出已知和未知的元素,及其与你所学知识的一些关联点,并发散思维考虑可能有几种潜在的解题思路。
- 当你确定了一个解题思路时,你应该先逐步按预想的思路推进,但是一旦你发现矛盾或者不符合预期的地方,你应该及时停下来,提出你的质疑,认真验证该思路是否还可以继续。
- 当你发现一个思路已经不可行时,你应该灵活切换到其他思路上继续推进你的思考。
- 当你按照一个思路给出答案后,切记要仔细验证你的每一个推理和计算细节,这时候逆向思维可能有助于你发现潜在的问题。
- 你的思考应该是细化的,需要包括详细的计算和推理的细节。
- 包含的喃喃自语应该是一个口语化的表达,需要和上下文语境匹配,并且尽量多样化。

总结的解题过程的格式要求:
- 求解过程应该分为3-5步,每个步骤前面都明确给出步骤序号(比如:“步骤1”)及其小标题
- 每个步骤里只给出核心的求解过程和阶段性答案。
- 在最后一个步骤里,你应该总结一下最终的答案。

请使用以下模板。

<question>待解答的数学问题</question>

<thinking>
这里记录你详细的思考过程
</thinking>
<summary>
根据思考过程里正确的解题路径总结出的,包含3-5步解题过程的回答。
</summary>"""

USER_PROMPT_TEMPLATE = """现在,让我们开始吧!

<question>{question}</question>"""

messages = [
    {
   'role': 'system', 'content': SYSTEM_PROMPT_TEMPLATE},
    {
   'role': 'user', 'content': USER_PROMPT_TEMPLATE.format(question=question)},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

3. 获取结果并解析

获取模型生成的结果并解析出“思考”和“总结”部分。以下是Python代码示例:

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=16384
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

def parse_result_nostep(result):
    thinking_pattern = r"<thinking>(.*?)</thinking>"
    summary_pattern = r"<summary>(.*?)</summary>"

    thinking_list = re.findall(thinking_pattern, result, re.DOTALL)
    summary_list = re.findall(summary_pattern, result, re.DOTALL)

    assert len(thinking_list) == 1 and len(summary_list) == 1, \
        f"The parsing results do not meet the expectations.\n{result}"

    thinking = thinking_list[0].strip()
    summary = summary_list[0].strip()
    return thinking, summary

thinking, summary = parse_result_nostep(response)

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
8月前
|
物联网 机器人 Swift
|
8月前
|
存储 人工智能 自然语言处理
社区供稿 | 开放开源!蚂蚁集团浙江大学联合发布开源大模型知识抽取框架OneKE
OneKE 是由蚂蚁集团和浙江大学联合研发的大模型知识抽取框架,具备中英文双语、多领域多任务的泛化知识抽取能力,并提供了完善的工具链支持。OneKE 以开源形式贡献给 OpenKG 开放知识图谱社区。
|
2天前
|
存储 人工智能 自然语言处理
OmniThink:浙大联合阿里通义开源 AI 写作框架,基于深度思考扩展知识边界,实时展示思考过程
OmniThink 是浙江大学与阿里通义实验室联合开发的机器写作框架,通过模拟人类迭代扩展和反思过程,生成高质量长篇文章,显著提升知识密度和内容深度。
50 12
OmniThink:浙大联合阿里通义开源 AI 写作框架,基于深度思考扩展知识边界,实时展示思考过程
|
1月前
|
自然语言处理 测试技术
社区供稿 | 引入隐式模型融合技术,中山大学团队推出 FuseChat-3.0
在大语言模型(LLM)领域,结合多个模型的优势以提升单个模型的能力已成为一大趋势。然而,以往的模型融合方法例如 FuseLLM[1], FuseChat-1.0/2.0[2] 等存在词表对齐困难、效率低下等问题。
社区供稿 | 引入隐式模型融合技术,中山大学团队推出 FuseChat-3.0
|
1月前
|
人工智能
GenMAC:港大、清华联合微软推出文本到视频生成的多代理协作框架
GenMAC是由香港大学、清华大学和微软研究院联合推出的文本到视频生成的多代理协作框架。该框架通过任务分解、迭代循环和多代理协作,解决了复杂场景生成问题,显著提高了视频生成的准确性和文本对齐度。
44 5
GenMAC:港大、清华联合微软推出文本到视频生成的多代理协作框架
|
2月前
|
人工智能 数据处理 异构计算
LongRAG:智谱联合清华和中科院推出的双视角鲁棒检索框架
LongRAG是由智谱、清华大学和中国科学院联合推出的双视角鲁棒检索增强生成框架,专为长文本问答设计。该框架通过混合检索器、LLM增强信息提取器、CoT引导过滤器和LLM增强生成器等组件,有效解决了长文本问答中的全局上下文理解和事实细节识别难题。LongRAG在多个数据集上表现优异,提供了自动化微调数据构建管道,增强了系统的“指令跟随”能力和领域适应性。
80 1
LongRAG:智谱联合清华和中科院推出的双视角鲁棒检索框架
|
8月前
|
人工智能 异构计算
开源版哆啦A梦任意门:魔搭社区AnyDoor最佳实践
AnyDoor是一种基于扩散模型的图像生成模型,以非常和谐的方式将目标对象传送到用户制定位置的新场景的能力。过程中不需要为每个对象调整参数,只需要训练一次,并在推理阶段适用于各种不同的对象-场景组合。
|
人工智能 自然语言处理 达摩院
社区供稿 | 达摩院自研开放域文本理解大模型登陆魔搭社区
SeqGPT是一个不限领域的文本理解大模型。无需训练,即可完成实体识别、文本分类、阅读理解等多种任务。该模型基于Bloomz在数以百计的任务数据上进行指令微调获得。模型可以在低至16G显存的显卡上免费使用。目前SeqGPT已经在魔搭社区开源,欢迎体验!
社区供稿 | 达摩院自研开放域文本理解大模型登陆魔搭社区
|
存储 SQL Cloud Native
LlamaIndex 联合创始人下场揭秘:如何使用私有数据提升 LLM 的能力?
如何使用私有数据最大化发挥 LLM 的能力?LlamaIndex 可以解决这一问题。LlamaIndex 是一个简单、灵活、集中的接口,可用于连接外部数据和 LLMs。
503 0
|
数据采集 机器学习/深度学习 人工智能
智源「悟道3.0」大模型系列问世,这次不拼参数,开源开放成为主角(1)
智源「悟道3.0」大模型系列问世,这次不拼参数,开源开放成为主角
365 0

热门文章

最新文章