AI大模型教程
一起来学习

山东大学项目实训——基于DeepSeek的智能写作与训练平台(九)

学生端个人画像以及学习跟踪与针对性建议的补充与完善
一、 新增及升级功能:

在原有六维评分评价的基础上,将系统功能进行了全方位的细化和升级,主要体现在以下几个方面:

  1. 多维度作文分析升级
    • 将原有的六维评分(语法、立意、结构、修辞、情感、创新)扩展为更全面的分析体系。
    • 通过设计多级分析提示词,实现了从DeepSeek API获取更深层次的评估结果。
def get_comprehensive_prompt(essay_text, include_history=False, student_history=None):
    """获取全面分析的提示词模板"""
    base_prompt = """
    请对以下作文进行全面分析,返回详细的JSON格式结果,包含以下几个部分:
    
    1. 基础评分(scores):
       - grammar: 语法准确性评分(0-100)
       - idea: 立意深度评分(0-100)
       # ... (其他评分维度)
    
    2. 基础建议(suggestions):
       - grammar: 语法方面的具体建议
       # ... (其他建议维度)
    
    3. 写作风格特征(style_features):
       # ... (风格特征维度)
    
    4. 错误模式识别(error_patterns):
       # ... (错误模式维度)
    """
    
    if include_history and student_history:
        history_prompt = """
        5. 连续学习分析(continuous_analysis):
           - progress_areas: 相比历史作文有进步的方面
           ...
        """
        base_prompt += history_prompt
    
    return base_prompt
  1. 写作风格特征分析
    • 新增了对学生独特写作风格特征的识别功能,包括词汇多样性、句式复杂度、段落连贯性等。
    • 为此,我扩展了数据库设计,增加了writing_style_features表,并增强了API提示词以引导AI分析风格特点。
def save_writing_style_features(self, student_id: int, essay_id: int, style_data: Dict):
    """保存作文风格特征分析结果"""
    cursor = self.db.connection.cursor()
    cursor.execute('''
        INSERT INTO writing_style_features 
        (essay_id, student_id, vocabulary_diversity, sentence_complexity, 
         paragraph_coherence, argument_patterns, word_choice_features, style_keywords)
        VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
    ''', (
        essay_id, 
        student_id,
        style_data.get('vocabulary_diversity'),
        style_data.get('sentence_complexity'),
        # ... (其他风格数据)
    ))
    self.db.connection.commit()
    cursor.close()
  1. 错误模式识别
    • 实现了自动识别学生写作中常见错误模式和弱点的功能,并能进行问题分类统计。
    • 数据库中新增了writing_error_patterns表,使用JSON字段存储复杂的错误统计数据,并通过DeepSeek API实现错误模式的识别。
def save_error_patterns(self, student_id: int, essay_id: int, error_data: Dict):
    """保存写作错误模式分析结果"""
    cursor = self.db.connection.cursor()
    cursor.execute('''
        INSERT INTO writing_error_patterns 
        (student_id, essay_id, grammar_errors, structure_weaknesses, 
         expression_issues, recurring_problems)
        VALUES (%s, %s, %s, %s, %s, %s)
    ''', (
        student_id,
        essay_id,
        json.dumps(error_data.get('grammar_errors', {})),
        json.dumps(error_data.get('structure_weaknesses', {})),
        # ... (其他错误数据)
    ))
    self.db.connection.commit()
    cursor.close()
  1. 学习路径规划
    • 系统现在可以根据学生的写作特点和弱点,生成个性化的学习路径和优先级建议。
    • 通过分析评分结果自动确定优先级,并将建议存入学习路径表,提供可操作的改进步骤。
# 更新学习路径建议
for dimension, suggestion in analysis_result.get('suggestions', {}).items():
    score = analysis_result['scores'].get(dimension, 0)
    priority = 3  # 默认中等优先级
    if score  70:
        priority = 1  # 高优先级
    elif score  85:
        priority = 2  # 中高优先级
    
    user_model.create_learning_path(student_id, dimension, suggestion, priority)
  1. 连续学习分析
    • 新增了通过分析学生历史写作数据,识别长期学习趋势和模式的功能,从而提供个性化的长期学习建议。
    • 设计了continuous_learning_analysis表用于存储分析结果,并通过DeepSeek API分析长期趋势,识别持续性问题和明显进步。
def analyze_continuous_learning(student_id):
    """进行连续学习分析"""
    # ... (获取学生数据)
    # 构建提示词
    prompt = """
    请对以下学生的写作历史数据进行全面的连续学习分析,返回JSON格式:
    
    1. 长期趋势分析(trend_analysis):分析学生各维度评分的长期变化趋势
    2. 学习模式识别(learning_patterns):识别学生的学习模式和特点
    # ... (其他分析维度)
    """
    # ... (API调用和结果处理)
    return analysis_result
  1. API接口设计完善
    • 设计并实现了较完整的API接口,支持作文提交、画像获取、连续学习分析、综合画像查询等核心功能。主要接口包括:
      • /api/update-profile:用于作文分析与画像更新。
      @profile_bp.route('/api/update-profile', methods=['POST'])
      def update_profile():
          # 1. 创建作文记录
          # 2. 分析作文 (使用增强版分析)
          # 3. 更新学生画像 (基础得分)
          # ... (其他步骤)
      
      • /api/get-profile/:用于获取个人画像。
      • /api/continuous-learning/:用于连续学习分析。
      • /api/comprehensive-profile/:用于获取综合个人画像。

二、 问题修复与功能完善:

在上一阶段的基础上,重点解决了测试中发现的问题,并进一步完善了学生端功能,确保后端接口能够为前端提供所需的数据支持:

  1. 写作进步追踪优化(模拟数据)

    • 问题:修复了因模拟评分数据相同导致进步变化值恒为0的问题。
    • 解决:修改了profile_routes.py中模拟数据生成逻辑,引入变化机制,使模拟分数、风格特征评分、错误计数等有轻微差异,更真实地模拟学生写作能力的波动。
    • 效果writing_progress表中记录的变化字段能显示非零值。
  2. 学生进步报告API修复与完善 (/api/student/progress-report/)

    • 问题:解决了该接口返回404错误的问题,并调整了其逻辑。
    • 解决
      • profile_routes.py中正确实现了get_student_progress_report函数。
      • 明确了接口职责为整合学生历史评分、进步记录及最新的长期连续学习分析结果。
      • models.py中添加了get_writing_progress_history方法,用于从writing_progress表获取格式化的进步记录。
    • 效果:接口能返回200状态码,并获取包含历史评分、进步记录和连续学习分析的完整数据。
  3. 综合个人画像API验证 (/api/comprehensive-profile/)

    • 问题:完善了对该接口返回内容完整性的验证。
    • 解决:增强了test_profile.py中的测试逻辑,增加了对返回JSON结构和关键字段类型的验证。
    • 效果:确认接口能成功返回包含所有预期部分(如writing_profile, writing_history, continuous_analysis等)的数据。
  4. 连续学习分析数据保存优化

    • 问题:解决了连续学习分析结果未插入continuous_learning_analysis表以及可能重复插入的问题。
    • 解决
      • 调整代码结构,将保存分析结果的操作移至API路由函数中。
      • 确保无论是首次生成还是强制刷新,分析结果都会在生成后被尝试保存一次。
    • 效果:成功保存连续学习分析的日志,/api/comprehensive-profile/能正确包含continuous_analysis部分,数据库不再出现重复记录。

三、 学生端核心功能实现确认:

经过上述修复和完善,支撑学生端以下功能需求的后端接口已经完整实现并通过测试(基于模拟数据):

  • 个人画像绘制:通过/api/get-profile//api/comprehensive-profile/提供不同详略程度的画像。
  • 写作成长记录生成与追踪:提交作文后,系统自动记录各项分析数据,并计算对比进步。
  • 写作进步跟踪writing_progress表详细记录了每次提交相比上一次的各维度具体变化。
  • 成长报告提供/api/student/progress-report/提供生成结构化成长报告所需的后端数据。

四、 continuous_analysis 的关键作用:

continuous_analysis 功能在系统中扮演着至关重要的战略性评估角色。它不同于基于相邻两篇作文的战术性进步反馈,其核心价值在于:

  • 识别长期趋势:分析学生在较长时间内的整体发展轨迹。
  • 发现深层模式:识别反复出现的问题、固有学习习惯及写作风格演变。
  • 提供战略性建议:给出更宏观、更具前瞻性的学习规划。
  • 实现真正个性化:基于对学生长期发展模式的理解,提供真正符合其特点的指导。

文章来源于互联网:山东大学项目实训——基于DeepSeek的智能写作与训练平台(九)

相关推荐: Stable Diffusion 五大模型深度解析,模型保姆级安装指南

关注我的微信公众号:了然知识库,发送关键字“sd”可免费获取资料“AI绘画stable diffusion秋叶版启动器和基础教程” 已经是第三篇文章了,今天先来给大家介绍一下stable diffusion webui的参数含义。 模型介绍 在stable d…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 山东大学项目实训——基于DeepSeek的智能写作与训练平台(九)

山东大学项目实训——基于DeepSeek的智能写作与训练平台(十二)

LangChain开发阶段总结:从模型接入到全文连续检索生成

一、为什么选择langchain

在项目实训前期,我们构建了用于作文智能生成与优化的部分系统。为了提升AI生成作文的质量、连贯性与素材利用效率。为实现这一目标,我们引入了LangChain这一面向大模型应用开发的高级框架。

LangChain不仅提供了统一的模型调用、数据链构建和运行管理能力,还通过其表达式语言LCEL支持复杂流程的异步、流式与模块化编排,极大地提升了我们的开发效率与系统可维护性。

二、阶段一:DeepSeek模型接入LangChain

LangChain内置了OpenAI等主流模型接口,但我们的项目采用学院提供的DeepSeek API,因此必须通过自定义LLM类方式完成接入。

1. 自定义模型类结构

我们继承了BaseChatModel与LangChain的LLM接口,构造了如下类:

此类实现了 _call() 方法,将 DeepSeek 的 API 请求与 LangChain 的运行机制集成,核心包括:

消息格式转换(LangChain消息类 ↔ DeepSeek格式)

请求构造与响应解析与推理中冗余内容清理(如 标签)

2. 实现效果

完成后,系统即可将 LangChain 中任意 PromptTemplate 输出传入 DeepSeek 模型,作为后续检索-生成流程的基础。

三、阶段二:基于LCEL构建检索问答链(RAG

模型接入后,我们进入系统的主体功能开发阶段:构建基于语料库的检索问答链。这一阶段的核心是使用LangChain的LCEL(LangChain Expression Language),实现作文素材的智能检索与结合式生成。

1. 向量数据库构建

前期,我们完成了向量数据库模块,支持:

本地文档的embedding向量化

向量检索器retriever生成

素材持久化与初始化逻辑判断

以及大模型的封装,deepseek 模型接入LangChain 继承 BaseChatModel

2. LCEL链式编排逻辑

LCEL以数据流的形式构造链条,其中每个组件均需实现Runnable接口。我们的检索问答链由如下部分构成:

retrieval_chain = retriever | combiner

qa_chain = (

    RunnableParallel({

        “context”: retrieval_chain,

        “input”: RunnablePassthrough()

    })

    | prompt

    | llm

    | StrOutputParser()

)

这段代码完成了:

retriever:从向量数据库中获取与当前段落主旨最相似的素材

combiner:合并素材内容,构造上下文context

RunnableParallel:并行输入用于检索的context与大模型输入

PromptTemplate:构造问答Prompt

llm & Parser:调用模型并解析结构化输出

通过这种方式,我们构建了基于高效的基于素材库的动态问答能力,使生成结果与已有内容更加契合。

四、阶段三:使用ChatPromptTemplate实现全文连续生成

尽管检索问答链显著提升了局部语句生成质量,但我们很快意识到一个更深层次的问题——生成结果缺乏结构连贯性与全文主旨一致性。为此,我们引入了LangChain的ChatPromptTemplate,结合上下文状态设计,构建出真正支持“全文连贯写作”的流水线。

1. 写作上下文状态管理

我们设定了三大关键上下文变量:

full_topic:整篇文章主旨,决定全文语境

paragraph_topic:当前段落主旨,控制局部生成方向

paragraph_text:当前段落内容,驱动检索内容和Prompt构建

这些变量在每次写作迭代中更新,并作为Prompt输入,持续强化全文一致性。

2. ChatPromptTemplate驱动的RAG链构建

结合状态变量和LCEL,我们构造如下生成链:

self.rag_prompt 是一个 ChatPromptTemplate 实例,具备如下优势:

结构模板化:保证每次生成都遵循统一结构

语义嵌入式提示:动态注入主旨与段落信息

可持续扩展:支持多轮上下文生成链整合

部分调试结果截取:

3. 写作流程控制入口

最终我们构建了主控方法 generate_with_rag(),实现从输入语句到输出推荐句的完整流程:

1.状态刷新:判断输入是否为新段落,更新当前段落文本;

2.素材检索:根据段落主旨(字段非空时)或内容,向量检索相关语料;

3.生成提示构建:使用 ChatPromptTemplate 填充全文主旨、段落主旨、段落文本;

4.大模型调用:输入构造好的 Prompt,返回结构化 JSON 含:生成句子、推荐理由、段落,全文主旨修改建议;

  1. 主旨更新:若段落结束,自动更新全文主旨,重置段落内容,提升连贯性;

流程图

这让系统不仅可以“写一段好句子”,更能写一整篇结构合理、主旨连贯的文章。

文章来源于互联网:山东大学项目实训——基于DeepSeek的智能写作与训练平台(十二)

相关推荐: Stable Diffusion插件:提示词

很多同学使用StableDiffusion生成图片时,之所以做不出高质量的图片,很大程度上是由于不知道怎么写提示词,常常陷入词穷的窘境,要么不知道该写点啥,要么翻译出来的英文不是很贴切。今天我就给大家分享几个StableDiffusion WebUI的提示词插…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 山东大学项目实训——基于DeepSeek的智能写作与训练平台(十二)
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们