AI赋能项目集成:我的实战经验与洞见

news2024/11/23 7:02:50

背景

在传统的教学模式中,教师往往难以兼顾每位学生的个性化需求,学习信息的收集与分析也受限于时间和精力的限制,难以做到全面而深入。然而,每位学生都是独一无二的个体,他们拥有不同的学习风格、兴趣偏好以及理解能力,这些因素直接影响到他们的学习效果和成长速度。

为了打破这一瓶颈项目应运而生。该项目旨在通过构建一套高效的学习信息收集与AI反馈系统,实现对学生学习状态的精准洞察与个性化指导。具体而言,项目首先通过多样化的渠道(如在线平台、智能设备等)广泛收集学生的学习信息,包括但不限于学习进度、作业完成情况、课堂参与度、测试成绩以及自我评估等。

随后,这些海量且复杂的学习数据被传输至先进的AI分析系统。该系统运用机器学习、深度学习等前沿技术,对学生的学习行为、能力水平及潜在需求进行深度挖掘与分析。基于这些分析结果,AI能够生成个性化的学习建议、资源推荐及反馈报告,帮助每位学生量身定制最适合自己的学习计划和方法。

步骤

源码地址:

gitee源码

1、搭建项目引入pom文件

jdk17 springboot3.3.0

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.XXXXj</groupId>
    <artifactId>ai</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>metaverse-ai</name>
    <description>metaverse-ai</description>
    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M1</spring-ai.version>
        <spring-cloud.version>2023.0.0</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework.ai</groupId>-->
<!--            <artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--nacos注册与发现-->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2023.0.1.0</version>-->
<!--        </dependency>-->
        <!--nacos配置中心来做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2023.0.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

</project>


2、配置文件


server:
  port: 8180



spring:
  ai:
    openai:
      # 全局配置
      api-key: sk-this-is-key # 申请的api-key
      base-url: https://api.smnet1.asia/ #代理地址,可以通过我的推荐链接注册:https://api.smnet1.asia/register?aff=xg61,会赠送¥1000 token
      # 嵌入API配置
      embedding:
        options:
          model: kimi  #我使用的代理支持多种模型,所以这里填写自己想用的模型就可以
      # 聊天API配置
      chat:
        #指定某一个API配置(覆盖全局配置)
        api-key: sk-this-is-key # 申请的api-key
        base-url: https://api.smnet1.asia/ #openAi访问地址(不写默认)
        options:
          model: kimi #我使用的代理支持多种模型,所以这里填写自己想用的模型就可以
    zhipuai:
      api-key: this-is-zhipu-key # 申请的api-key
      base-url: https://open.bigmodel.cn/api/paas/ #填写zhipu的访问地址
      chat:
        enabled: true

以智普举例来说,想要获得api-key ,需要登陆智普官网,进行注册即可获得key,但是时效是一个月,公司使用的话交钱即可。

https://open.bigmodel.cn/usercenter/apikeys
在这里插入图片描述

真正使用方式:我们项目会根据学生的颗粒回复生成词云,然后可以根据词云中的信息给到AI,AI结合这些关键字给老师反馈。帮助老师更好地了解学生的学习情况。

Controller

package com.tfjybj.metaverseai.controller;

import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.model.Generation;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.zhipuai.ZhiPuAiChatModel;
import org.springframework.ai.zhipuai.ZhiPuAiChatOptions;
import org.springframework.ai.zhipuai.api.ZhiPuAiApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.codec.ServerSentEvent;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.util.Objects;

@RestController
@RequestMapping("/ai")
public class ChatController {

    @Autowired
    private OpenAiChatModel chatClient;

    @Autowired
    private ZhiPuAiChatModel zhipuChatModel;

 

    @GetMapping(value = "/easyAnswer", params = "studentAnswer", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public String easyAnswer(@RequestParam String textQuestion,@RequestParam String studentAnswer) {
        String systemPrompt = "你是一个优秀的全科老师,\n" +
                "学生在上课的时候对问题进行了回答,我们根据学生的回答生成了词云,\n" +
                "我会告诉你问题和学生回答的词频统计,\n" +
                "请你根据问题和学生回答的词频统计,通过分析同学们的回答,生成一篇文章,来给同学们阅读。\n";

        String message = systemPrompt+"问题: '''" + textQuestion + "'''\n\n" +
                "学生回答的词频统计:''' " + studentAnswer + "'''\n";

//        System.out.println(message);
        Prompt prompt = new Prompt(message, OpenAiChatOptions.builder()
                .withModel("kimi") //大模型用哪个
                .withTemperature(0.5f) //温度高,更发散,准确性降低,温度低,更保守,准确性高
                .build());
        Prompt zhipuPrompt = new Prompt(message, ZhiPuAiChatOptions.builder()
                .withModel(ZhiPuAiApi.ChatModel.GLM_3_Turbo.getValue())
                .withTemperature(0.5f)
                .build());
//        ChatResponse response= chatClient.call(prompt);
        ChatResponse response= zhipuChatModel.call(zhipuPrompt);
        System.out.println(response.getResult().getOutput().getContent());
        return response.getResult().getOutput().getContent();
    }
}


访问

http://localhost:8180/ai/easyAnswer?textQuestion=你能不能说说你知道的植物呢&studentAnswer=玫瑰花

得到如下反馈:

在这里插入图片描述

总结

这里只是举了一个小例子,实际在项目中使用的时候万变不离其宗。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【IC前端虚拟项目】sanity_case的编写与通包测试

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 在花了大力气完成reference model之后,整个验证环境的搭建就完成了,再多看一下这个结构然后就可以进行sanity_case和通包测试: 关于sanity_case和通包测试我在很多篇文章中说过好多次了在这里就不赘述…

如何安装Visual Studio Code

Visual Studio Code&#xff08;简称 VS Code&#xff09; Visual Studio Code 是一款由微软开发的免费、开源的现代化轻量级代码编辑器。 主要特点包括&#xff1a; 跨平台&#xff1a;支持 Windows、Mac 和 Linux 等主流操作系统&#xff0c;方便开发者在不同平台上保持一…

ETL电商项目总结

ETL电商项目总结 ETL电商业务简介及各数据表关系 业务背景 ​ 本案例围绕某个互联网小型电商的订单业务来开发。某电商公司&#xff0c;每天都有一些的用户会在线上采购商品&#xff0c;该电商公司想通过数据分析&#xff0c;查看每一天的电商经营情况。例如&#xff1a;电商…

科普文:字节码class文件和字节码增强技术

1. 引言 1.1. 什么是字节码 Java字节码是指Java语言编译后生成的一种二进制文件格式&#xff0c;它包含了Java程序的所有信息&#xff0c;包括类信息、方法信息、变量信息等。字节码是Java程序执行的基础&#xff0c;它被用于实现Java虚拟机&#xff08;JVM&#xff09;的加载…

随手记:vsCode修改主题色为自定义颜色

因为工作需要长时间面对vscode&#xff0c;视力不好&#xff0c;想要把工具改成护眼色&#xff0c;于是就把vscode改成了自定义的护眼色 效果图&#xff1a; 操作步骤&#xff1a; 快捷键打开设置页面&#xff1a; 按住ctrlshiftp 选择Open setting 按回车键 打开setting页面编…

【STM32CubeMX】一 TIME定时器Mode and Configuration的详解

使用STM32CubeMX软件学习配置定时器&#xff0c;对Mode and Configuration进行分析各部分选项的功能。本次以TIM2为例进行分析。 一、 Slave Mode 可以配置的选项有&#xff1a; Disable External Clock Mode 1 外部时钟源模式1 Reset Mode 复位模式 Gated Mode 门控模式 Tri…

采用T网络反馈电路的运算放大器(运放)反相放大器

运算放大器(运放)反相放大器电路 设计目标 输入电压ViMin输入电压ViMax输出电压VoMin输出电压VoMaxBW fp电源电压Vcc电源电压Vee-2.5mV2.5mV–2.5V2.5V5kHz5V–5V 设计说明1 该设计将输入信号 Vin 反相并应用 1000V/V 或 60dB 的信号增益。具有 T 反馈网络的反相放大器可用…

scanf` 和 `printf` 通常比 `cin` 和 `cout` 在处理数据时的分析

#include<bits/stdc.h> using namespace std; int x[5000005],k; int main() {int n;scanf("%d%d",&n,&k);for(int i0;i<n;i)scanf("%d",&x[i]);sort(x,xn);//快排printf("%d",x[k]); }和#include<vector> #include&…

redis数据库(下)

集合键值对 集合的每一个元素也是字符串格式数据,是无序集合,并且元素不可重复(自动去重) 1.集合的创建和添加命令 sadd命令:无责创建有责添加 sadd 键名 元素1 元素2......... 注意:再次添加元素时,如果触发了集合的唯一性,那么命令执行结果就为0,表示执行失败…

JMeter使用小功能-(持续更新)

1、jmeter在同一个线程组内&#xff0c;uuid的复用 方式一&#xff1a; 方式二&#xff1a; 2、获得jMeter使用的线程总数 ctx.getThreadGroup().getNumberOfThreads()来表示活动线程总数 int threadNumctx.getThreadGroup().getNumThreads(); String threads Integer…

折叠屏遇上Galaxy AI,三星新一代Galaxy Z系列开启移动终端新篇章

作者 | 曾响铃 文 | 响铃说 随着换机周期的普遍延长以及智能手机行业内竞争态势的日益激烈&#xff0c;传统的硬件升级与参数比拼已难以全面满足消费者日益多元化的需求。面对这一挑战&#xff0c;行业迫切需要探索新的增长路径与发展方向。 折叠屏技术的兴起&#xff0c;无…

护航信创落地!YashanDB与航天壹进制完成兼容性互认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与航天壹进制黑方容灾备份与恢复系统顺利完成兼容性互认证。测试结果表明&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;为用户提供全方位、安全可靠的数据安全保护方案&#xff0c;护航央国企、金融…

【AMD/Xilinx】FPGA远程烧录调试工具安装及使用

问题描述 在学习工作中&#xff0c;本人遇到了连接FPGA的服务器电脑没有Vivado或Vivado版本较低&#xff0c;导致没办法查看ila的情况。在这种情况下一方面重新安装Vivado需要占用大量存储空间&#xff0c;另一方面使用远程桌面软件连接服务器电脑的画质较为模糊&#xff0c;影…

自学第十九天----深入探究数组下

3. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的&#xff0c;如果数组有n个元素&#xff0c;最后一个元素的下标就是n-1。 所以数组的下标如果小于0&#xff0c;或者大于n-1&#xff0c;就是数组越界访问了&#xff0c;超出了数组合法空间的访问。 C语言本身…

即将被淘汰 这几门编程语言!

又到了周五了&#xff0c;忙碌了一周&#xff0c;可以放松放松一下了&#xff01; 在科技迅速发展的今天&#xff0c;编程语言的更新迭代速度令人惊叹。从经典的C语言到现代的Python&#xff0c;编程语言不断进化&#xff0c;满足着不同领域的需求。然而&#xff0c;有些编程语…

AI语音机器人是否可以设计开放式问题

什么叫开放式提问&#xff1f; 是指提出比较概括、广泛、范围较大的问题&#xff0c;对回答的内容限制不严格&#xff0c;给对方充分自由发挥的余地。 试想一下&#xff0c;就算不是语音机器人&#xff0c;是一个真人销售&#xff0c;和客户沟通时提的问题是开放式的&#xf…

【Linux信号】信号检测处理与捕捉

目录 进程什么时候检测处理信号&#xff1f;以及内核如何实现信号的捕捉&#xff1f; sigaction volatile 信号由操作系统发送给相应的进程&#xff0c;进程保存信号&#xff0c;最后再捕捉处理信号。 进程什么时候检测处理信号&#xff1f;以及内核如何实现信号的捕捉&…

java学习--object类方法--equals方法介绍

为真是因为改写了equals方法&#xff0c;判断值是否相等了 package com.equals.test01;public class equals {public static void main(String[] args) {Person person new Person("xaiomi", 19, "nv");Person person1 new Person("xaiomi", …

千万罚单,稠州商业银行屡教不改?

撰稿|芋圆 来源|贝多财经 今年&#xff0c;浙江稠州商业银行&#xff08;以下简称“稠州商行”&#xff09;似乎进入了多事之秋&#xff0c;刚刚兼并两家经营不善的村镇银行就紧接着收到大额罚单。 该行在2023年的经营业绩不算难看。据2023年年报&#xff0c;稠州商行的业绩从…

矩阵形式的bezier曲线

本文分享一段矩阵形式的bezier代码&#xff1a; clc clear% 控制点 P [25;10;5;13]; %% 获得M矩阵 n length(P) - 1; M zeros(n1,n1); for i 1:n1for j 1:n1if(ij<n3)M(i,j) (-1)^(n -i-j2)*nchoosek(n,n-i1)*nchoosek(n-i1,j-1);elseM(i,j) 0;endend end t_temp l…