SpringAI

news2025/5/15 13:16:01

机器学习:

  • 定义:人工智能的子领域,通过数据驱动的方法让计算机学习规律,进行预测或决策。

  • 核心方法

    • 监督学习(如线性回归、SVM)。

    • 无监督学习(如聚类、降维)。

    • 强化学习(如Q-learning)。

  • 特点:依赖特征工程,模型复杂度较低,适用于中小型数据。

深度学习:

  • 定义:基于深层神经网络的机器学习方法,可自动提取特征。

  • 关键技术

    • 神经网络架构:CNN(图像)、RNN/LSTM(序列数据)、Transformer。

    • 优化算法:反向传播、梯度下降(如Adam优化器)。

  • 优势:处理高维数据(如图像、文本),减少人工特征工程。

自然语言处理:

  • 目标:使计算机理解、生成人类语言。

  • 技术演进

    • 传统方法:词袋模型、TF-IDF、隐马尔可夫模型。

    • 深度学习方法:词嵌入(Word2Vec)、预训练模型(BERT、GPT)。

  • 任务:机器翻译、情感分析、文本生成等。

大语言模型:

  • 定义:参数量巨大(数亿至万亿)的深度学习模型,专注于语言任务。

  • 代表模型:GPT系列、BERT、T5。

  • 核心技术

    • Transformer架构:自注意力机制(捕捉长距离依赖)。

    • 预训练与微调:在大规模语料上预训练(如掩码语言建模),再针对下游任务微调。

大模型底层原理:

T:基于Transformer的神经网络

P:通过大量数据预训练,掌握自然语言规律

G:基于上文计算概率,生成下一个token

模型部署:

云部署:

优点:前期成本低、部署维护简单、弹性扩展、全球访问

缺点:数据隐私、网络依赖、长期成本高

本地部署:

优点:数据安全、不依赖外部网络、长期成本低、高度定制

缺点:初始成本高、维护复杂、部署周期长

开放API:

优点:前期成本极低、无需部署、无需维护、全球访问

缺点:数据隐私、网络依赖、长期成本高、定制限制


调用大模型:

传统应用和大模型应用:

大模型应用是基于大模型的推理、分析、生成能力,结合传统编程能力,开发出的各种应用

AI应用开发技术架构:

Fine-tuning(模型微调)

针对特有业务场景对基础大模型做数据训练与微调,以满足特定场景的需求。

SpringAI:

是一个大模型应用框架。其目标是将Spring生态系统的设计原则(如可移植性的模块化设计)应用于人工智能邻域。可以无缝接入Spring生态体系,快速改造传统项目。

对话机器人-入门

引入依赖:

配置模型:

配置客户端:

创建项目:

引入依赖自动完成

配置:

创建包config,包下创建相应类

创建controller包,包下创建相应的类:

手动加入

阻塞式,响应时间较长

流式默认采用event事件流,默认情况没有编码

需要在@RequestMapping注解后自己设置响应的类型

system设定:

这里是controller和前端的对话

对话机器人-会话日志

对chatclinet做修改加入环绕增强

修改配置文件,新增日志相关:

在application.yaml加入

日志功能通过环绕通知来去实现的

对话机器人-前端对接

解决跨域问题

对话机器人-会话记忆

步骤:

定义会话存储方式:

存储在内部的会话记忆

配置会话记忆:

添加会话id:

第三排:匿名环绕增强器

配置类中

添加

对话机器人-会话历史

新增接口:

public interface ChatHistoryRepository {
 
    /**
     * 保存会话记录
     * @param type
     * @param charId
     */
    void save(String type,String charId);
 
 
    /**
     * 获取会话记录
     * @param type
     * @return
     */
    List<String> getChatIds(String type);
}

接口实现:


 
/**
 * @author TonySong
 * @date 2025/4/12 0012
 * @time 10:35
 */
@Component
public class InMemoryChatRepository implements ChatHistoryRepository{
 
    private final Map<String,List<String>> chatHistory= new HashMap<>();
 
    @Override
    public void save(String type, String charId) {
//        if(!chatHistory.containsKey(type)){
//            chatHistory.put(charId,new ArrayList<>());
//        }
//        List<String> charIds = chatHistory.get(type);
        List<String> charIds = chatHistory.computeIfAbsent(type, k -> new ArrayList<>());
        if(charIds.contains(charId)){
            return;
        }
        charIds.add(charId);
    }
 
    @Override
    public List<String> getChatIds(String type) {
//        List<String> list = chatHistory.get(type);
//        return list==null? List.of():list;
        return chatHistory.getOrDefault(type,List.of());
    }
}

修改会话实现:


 
/**
 * @author TonySong
 * @date 2025/4/11 0011
 * @time 17:39
 */
@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor//启用带参构造完成创建
public class ChatController {
 
    private final ChatClient chatClient;
 
    private final ChatHistoryRepository  chatHistoryRepository;
 
 
    @RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")
    public Flux<String> chat(@RequestParam(value = "message",defaultValue = "你是谁") String message) {
        //1、保存会话
        chatHistoryRepository.save("chat",message);
        //2、获取会话
        return chatClient
                .prompt()
                .user(message)
                .stream()
                .content();
    }
}

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

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

相关文章

lua 作为嵌入式设备的配置语言

从lua的脚本中获取数据 lua中栈的索引 3 | -1 2 | -2 1 | -3 可以在lua的解释器中加入自己自定的一些功能,其实没啥必要,就是为了可以练习下lua

ERP系统源码,小型工厂ERP系统源码,CRM+OA+进销存+财务

ERP系统源码&#xff0c;小型工厂ERP系统源码&#xff0c;ERP计划管理系统源码&#xff0c;CRMOA进销存财务 对于ERP来说&#xff0c;最为主要的作用就是能够强调企业的计划性&#xff0c;通过以业务订单以及客户的相关需求来作为企业计划的基础&#xff0c;并且还能够对企业现…

基于EFISH-SCB-RK3576/SAIL-RK3576的矿用本安型手持终端技术方案‌

&#xff08;国产化替代J1900的矿山智能化解决方案&#xff09; 一、硬件架构设计‌ ‌本安型结构设计‌ ‌防爆防护体系‌&#xff1a; 采用铸镁合金外壳复合防爆玻璃&#xff08;抗冲击能量>20J&#xff09;&#xff0c;通过GB 3836.1-2021 Ex ib I Mb认证 全密闭IP68接口…

配置文件介绍xml、json

#灵感# 常用xml&#xff0c; 但有点模棱两可&#xff0c;记录下AI助理给我总结的。 .xml XML&#xff08;eXtensible Markup Language&#xff0c;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它与 HTML 类似&#xff0c;但有以下主要特点和用途&#xf…

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-D. 扩展插件列表(PostGIS/PostgREST等)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 附录D. PostgreSQL扩展插件速查表一、插件分类速查表二、核心插件详解三、安装与配置指南四、应用场景模板五、版本兼容性说明六、维护与优化建议七、官方资源与工具八、附录…

Qt笔记---》.pro中配置

文章目录 1、概要1.1、修改qt项目的中间文件输出路径和部署路径1.2、Qt 项目模块配置1.3、外部库文件引用配置 1、概要 1.1、修改qt项目的中间文件输出路径和部署路径 &#xff08;1&#xff09;、为解决 “ 输出文件 ” 和 “ 中间输出文件 ”全部在同一个文件夹下的问题&am…

【Liblib】基于LiblibAI自定义模型,总结一下Python开发步骤

一、前言 Liblib AI&#xff08;哩布哩布 AI&#xff09;是一个集成了先进人工智能技术和用户友好设计的 AI 图像创作绘画平台和模型分享社区。 强大的图像生成能力 &#xff1a;以 Stable Diffusion 技术为核心&#xff0c;提供文生图、图生图、图像后期处理等功能&#xff…

CCF第七届AIOps国际挑战赛季军分享(RAG)

分享CCF 第七届AIOps国际挑战赛的季军方案&#xff0c;从我们的比赛经历来看&#xff0c;并不会&#xff0c;相反&#xff0c;私域领域问答的优秀效果说明RAG真的很重要 历经4个月的时间&#xff0c;从初赛赛道第1&#xff0c;复赛赛道第2&#xff0c;到最后决赛获得季军&…

【Cesium入门教程】第七课:Primitive图元

Cesium丰富的空间数据可视化API分为两部分&#xff1a;primitive API面向三维图形开发者&#xff0c;更底层一些。 Entity API是数据驱动更高级一些。 // entity // 调用方便&#xff0c;封装完美 // 是基于primitive的封装// primitive // 更接近底层 // 可以绘制高级图形 /…

【5分钟学Docker】Docker快速使用

目录 1. 概述 2. 基本操作 2.1. 镜像操作 2.2. 容器操作 2.3. 运行操作 2.4. 镜像保存 2.5. 镜像分享 3. 高级操作 4. 挂载 4.1. 目录挂载 4.2. 卷映射 1. 概述 Docker 镜像有镜像名称和TAG 2. 基本操作 2.1. 镜像操作 查看镜像 docker images docker image ls …

opencv 一些简单的设置

输出当前程序启动的路径 可能会出现 &#x1f527; 设置 C17 标准&#xff08;解决 std::filesystem 报错&#xff09; 在 VS 中&#xff0c;右键项目 → 属性。 选择左边的 “C/C” → “语言” 找到 C语言标准&#xff08;C Language Standard&#xff09;选项。 设置为&…

监控易运维管理软件:架构稳健,组件强大

在当今的信息化时代&#xff0c;运维管理对于企业的稳定运营至关重要。一款好的运维管理软件&#xff0c;不仅能够帮助企业高效管理IT基础设施&#xff0c;还能提升运维效率&#xff0c;降低运维成本。今天&#xff0c;我要给大家介绍的&#xff0c;就是我们公司自主研发的监控…

数字IC后端零基础入门基础理论(Day2)

数字IC后端零基础入门基础理论&#xff08;Day1&#xff09; Placement Blockage: cell摆放阻挡层。它是用来引导工具做placement的一种物理约束或手段&#xff0c;目的是希望工具按照我们的要求来做标准单元的摆放。 它主要有三种类型&#xff0c;分别是hard placement bloc…

零成本打造专属AI图像处理平台:IOPaint本地部署与远程访问指南

文章目录 前言1.什么是IOPaint&#xff1f;2.本地部署IOPaint3.IOPaint简单实用4.公网远程访问本地IOPaint5.内网穿透工具安装6.配置公网地址7.使用固定公网地址远程访问总结 前言 移动摄影的普及使得记录生活变得轻而易举&#xff0c;然而获得一张高质量的照片往往需要付出不…

操作系统-物理结构

操作系统使用read系统调用&#xff0c;将逻辑地址转&#xff08;对于用户来说逻辑地址容易计算&#xff0c;因为各个逻辑块都相邻&#xff09;成了逻辑块号和块内偏移量&#xff0c;并根据分配存储方式&#xff0c;将逻辑块号转成物理块号和块内偏移量 对于用户来说的文件的一…

《AI大模型应知应会100篇》第64篇:构建你的第一个大模型 Chatbot

第64篇&#xff1a;构建你的第一个大模型 Chatbot 手把手教你从零开始搭建一个基于大模型的聊天机器人 摘要 你是否想过&#xff0c;自己也能构建一个像 ChatGPT 一样能对话、能思考的聊天机器人&#xff08;Chatbot&#xff09;&#xff1f;别担心&#xff0c;这并不需要你是…

STM32 片上资源之串口

STM32 片上资源之串口 1 串口介绍1.1 初步介绍1.2 主要特性1.2.1 USART特性1.2.2 UART特性 1.3 主要寄存器1.4 波特率计算1.5 常用工作模式1.5.1 轮询模式&#xff1a;1.5.2 中断模式&#xff1a;1.5.3 DMA模式&#xff1a; 1.6 常见应用1.7 注意事项 2 软件层面协议2.1 基本概…

职坐标IT培训:互联网行业核心技能精讲

在互联网行业高速迭代的今天&#xff0c;掌握全链路核心技能已成为职业发展的关键突破口。职坐标IT培训聚焦行业需求&#xff0c;系统拆解从需求分析到系统部署的完整能力模型&#xff0c;助力从业者构建多维竞争力。无论是产品岗的用户调研与原型设计&#xff0c;还是技术岗的…

FlashInfer - 介绍 LLM服务加速库 地基的一块石头

FlashInfer - 介绍 LLM服务加速库 地基的一块石头 flyfish 大型语言模型服务中的注意力机制 大型语言模型服务&#xff08;LLM Serving&#xff09;迅速成为重要的工作负载。Transformer中的算子效率——尤其是矩阵乘法&#xff08;GEMM&#xff09;、自注意力&#xff08;S…

MySQL 学习(七)undo log、redo log、bin log 的作用以及持久化机制

目录 一、前言二、三大日志的概念、作用、存储位置2.1 bin log 二进制执行日志2.2 undo log 事务回滚日志2.3 redo log 快速恢复日志 三、补充说明3.1 补充&#xff1a;为什么使用 buffer pool 而不直接修改磁盘中的数据&#xff1f;3.2 补充&#xff1a;同为操作数据变更的日志…