Spring AI(一):玩转AI大模型

1. 认识AI

1.1. 体验AI产品

体验AI产品,体验智能客服、语音助手、图像识别等应用,发现它们功能强大且操作便捷。从对话交流到任务执行,AI产品展现了高度的智能化水平。AI技术在多场景下展现了广泛应用和潜力,为生活和工作带来显著改变。

1.1.1. 文本类产品

文本类的产品有很多,比如:Deepseek通义千问ChatGPT等。这里以Deepseek为例,让它帮我写一个Java的HelloWorld程序。

1.1.2. 文生图产品

这里以通义千问为例。

1.1.3. 文生视频产品

可以通过文字来生成视频,这里以 智谱清言 为例。

文案:

当你的双脚在峭壁颤抖时,请记住:真正的高峰不是用海拔丈量,而是用跌倒的次数刻下的勋章。黑暗最浓时星光最亮,荆棘最深处玫瑰最艳,每个被汗水浸透的脚印都在重塑命运的轨迹。别怕山峦遮住太阳——你站直脊梁的瞬间,就是地平线升起的时刻。向前跑,带着裂缝里透进的光!

1.2. AI是什么

人工智能(AI,Artificial Intelligence)是让机器模拟人类智能的技术,使其能像人一样学习、推理、感知和决策。例如,它能识别语音、推荐视频或汽车的自动驾驶等。

AI之所以智能,是因为它底层是基于Transformer架构实现的,Transformer是AI处理语言的核心架构(比如ChatGPT、Deepseek都是基于它实现)。它的核心突破是“自注意力机制”**,让AI能像人一样,通过上下文理解每个词的含义。例如:

举例: 她吃了一个苹果

  • 传统模型只能逐字分析,可能忽略“吃”和“苹果”之间的关联。
  • Transformer会自动让“吃”关注“苹果”,理解动作和对象的关系。
  • Transformer让AI学会“联系上下文”,像人类一样理解语言逻辑,是当前AI爆发(如ChatGPT)的核心技术。

1.3. 大模型原理

大模型 = 通过海量数据训练出的“超级自动补全工具”,核心能力是根据输入内容预测下一个词

核心原理拆解:

  1. 底层架构:Transformer(积木块结构)
  • 核心组件:自注意力机制(Self-Attention)
  • 作用:让模型像人类一样,自动关注输入内容中哪些词更重要(例如:“她吃了一个苹果”中,“吃”是核心动词)。
  1. 训练过程:
  • 预训练:用全网文本(书籍/网页等)学习语言规律,建立“知识库”。
  • 例:输入“天空是__”,模型学习预测“蓝色”。
  • 微调:用特定任务数据(如对话/问答)调整模型,让它更“听话”。
  1. 运行本质:概率
  • 每次输出一个词时,模型计算所有可能词的概率,选择最高概率的词(或随机选高概率词增加多样性)。
  • 大模型输出时,会选择概率值最高的词,最终会输出:The boy went to the Playground(男孩去了游乐场)
  • 这里的概率,是指条件概率,也就是说,【游乐场】是【男孩去的地方】概率0.4

例:输入“The boy went to the”,模型可能输出“Cafe”(概率0.1)、“Hospital”(0.05)、“Playground”(0.4)、“Park”(0.15)、“School”(0.3)。

‼️大模型正是因为依据概率回答,所以会存在“AI幻觉”,也就是所谓的“胡说八道”。所以,对于大模型生成的数据,需要进行优化数据、加入人工审核、提醒用户自行验证等。

1.4. 大模型应用架构

基于大模型开发应用有多种方式,接下来我们就来了解下常见的大模型开发技术架构。

1.4.1. 技术架构

目前,大模型应用开发的技术架构主要有四种:

1.4.2. 纯Prompt模式

Prompt是指提示词,很多简单的AI应用,仅仅靠一段足够好的提示词就能实现了,这种模式就是纯Prompt模式

由于不同的提示词,能够让大模型给出差异巨大的答案。不断雕琢提示词,使大模型能给出最理想的答案,这个过程就叫做提示词工程Prompt Engineering)。

其流程如图:

1.4.3. Function Calling(Tool Calling)

大模型虽然可以理解自然语言,更清晰弄懂用户意图,但是确无法直接操作数据库、执行严格的业务规则。这个时候我们就可以整合传统的应用,来增强大模型的能力。

简单来说,可以分为以下步骤:

  1. 我们可以把传统应用中的部分功能封装成一个个函数(Function 或 Tool)。
  2. 然后在提示词中描述用户的需求,并且描述清楚每个函数的作用,要求AI理解用户意图,判断什么时候需要调用哪个函数,并且将任务拆解为多个步骤(Agent)。
  3. 当AI执行到某一步,需要调用某个函数时,会返回要调用的函数名称、函数需要的参数信息。
  4. 传统应用接收到这些数据以后,就可以调用本地函数。再把函数执行结果封装为提示词,再次发送给AI。
  5. 以此类推,逐步执行,直到达成最终结果。

流程如图:

‼️注意:并不是所有大模型都支持Function Calling。可参阅Spring AI官方文档,点击这里

1.4.4. RAG

RAG(Retrieval**-Augmented Generation)叫做检索增强生成。简单来说就是把信息检索技术大模型**结合的方案。

大模型从知识角度存在很多限制:

  • 时效性差:大模型训练比较耗时,其训练数据都是旧数据,无法实时更新
  • 缺少专业领域知识:大模型训练数据都是采集的通用数据,缺少专业数据

流程如图:

思考:

这里有个问题,为什么不可以把最新的数据或者专业文档都拼接到提示词中,一起发给大模型,这样就不用RAG了?

这是不可以的,现在的大模型都是基于Transformer神经网络,Transformer的强项就是所谓的注意力机制。它可以根据上下文来分析文本含义,所以理解人类意图更加准确。

但是,这里上下文的大小是有限制的,GPT3刚刚出来的时候,仅支持2000个token的上下文。现在领先一点的模型支持的上下文数量也不超过 200K token,所以海量知识库数据是无法直接写入提示词的。

Token是什么?

🚦需要注意的是,大模型的输入和输出都是分别计算token的,也就是双向收费

RAG就是利用信息检索技术来拓展大模型的知识库,解决大模型的知识限制。整体来说RAG分为两个模块:

  • 检索模块(Retrieval):负责存储和检索拓展的知识库
  • 文本拆分:将文本按照某种规则拆分为很多片段,最好每一个片段都是相关信息
  • 文本嵌入(Embedding):使用向量模型将文本片段转为向量,方便根据向量计算文本相似度
  • 向量存储和搜索:将得到的向量存储到向量数据库中,将来根据用户提问来检索文本片段
  • 生成模块(Generation)
  • 组合提示词:将检索到的片段与用户提问组织成提示词,形成更丰富的上下文信息
  • 生成结果:调用生成式模型(例如DeepSeek)根据提示词,生成更准确的回答

由于每次都是从向量库中找出与用户问题相关的数据,而不是整个知识库,所以上下文就不会超过大模型的限制,同时又保证了大模型回答问题是基于知识库中的内容,完美!

1.4.5. Fine-tuning

Fine-tuning就是模型微调,就是在预训练大模型(比如DeepSeek、Qwen)的基础上,通过企业自己的数据做进一步的训练,使大模型的回答更符合自己企业的业务需求。这个过程通常需要在模型的参数上进行细微的修改,以达到最佳的性能表现。

在进行微调时,通常会保留模型的大部分结构和参数,只对其中的一小部分进行调整。这样做的好处是可以利用预训练模型已经学习到的知识,同时减少了训练时间和计算资源的消耗。微调的过程包括以下几个关键步骤:

  • 选择合适的预训练模型:根据任务的需求,选择一个已经在大量数据上进行过预训练的模型,如Qwen-2.5。
  • 准备特定领域的数据集:收集和准备与任务相关的数据集,这些数据将用于微调模型。
  • 设置超参数:调整学习率、批次大小、训练轮次等超参数,以确保模型能够有效学习新任务的特征。
  • 训练和优化:使用特定任务的数据对模型进行训练,通过前向传播、损失计算、反向传播和权重更新等步骤,不断优化模型的性能。

模型微调虽然更加灵活、强大,但是也存在一些问题:

  • 需要大量的计算资源
  • 调参复杂性高
  • 过拟合风险(指模型在训练数据上表现过于完美,但在新数据上表现明显变差的风险)

总之,Fine-tuning成本较高,难度较大,并不适合大多数企业。而且前面三种技术方案已经能够解决常见问题了。

1.4.6. 技术选型

从开发成本由低到高来看,四种方案排序如下:

Prompt < Function Calling < RAG < Fine-tuning

所以我们在选择技术时通常也应该遵循"在达成目标效果的前提下,尽量降低开发成本"这一首要原则。可以参考以下流程来思考:

2. 对接AI大模型

AI大模型一般分为两类,一种是公共大模型,另一种是私有大模型。我先学习公共大模型。

2.1. 公共大模型

常用的公共大模型平台有:

平台公司链接
OpenAIOpenAI(美国)https://openai.com/
阿里云百炼阿里巴巴https://bailian.aliyun.com/
Deepseek深度求索https://www.deepseek.com/
腾讯混元腾讯https://hunyuan.tencent.com/
千帆平台百度https://cloud.baidu.com/product-s/qianfan_home
智谱AI智谱华章科技https://bigmodel.cn/
火山方舟字节跳动https://www.volcengine.com/product/ark

太多了,就不一一列举了。😀

🚀 需要说明的是,这些平台一般都不是免费的,会按照token进行收费,并且是双向收费(请求和回答),这些平台一般对于新用户新用户都会赠送免费token额度,例如:阿里云百炼平台会赠送100w的token额度。

2.2. 阿里云百炼

以阿里云百炼平台为例介绍如何使用这些公共平台。

2.2.1. 注册账号

如果没有阿里云账号,您需要先注册阿里云账号

2.2.2. 开通百炼服务

使用阿里云主账号前往百炼控制台,开通百炼的模型服务,新用户开通即享每个模型100万免费tokens。

🔔说明:如果开通服务时提示“您尚未进行实名认证”,请先进行实名认证
如果开通成功,可以看到百炼的模型广场页面:

在这里插入图片描述


可以看到,有非常多的模型可供选择,点击模型的【查看详情】链接可以查看模型名称、价格、免费额度等信息。

在这里插入图片描述

2.2.3. 申请API KEY

对接大模型,需要申请API KEY,步骤如下:

在这里插入图片描述


⛔ 这个key一定不能泄露出去…

2.2.4. 体验文本调试

在这里插入图片描述


🚀 参数说明:

  • temperature
    • 采样温度,控制模型生成文本的多样性。
    • temperature 越高,生成的文本更多样,反之,生成的文本更确定。
    • 取值范围: [0, 2)
  • top_p
    • 核采样的概率阈值,控制模型生成文本的多样性。
    • top_p越高,生成的文本更多样。反之,生成的文本更确定。
    • 取值范围:(0,1.0]
  • ⚡由于temperaturetop_p均可以控制生成文本的多样性,因此建议只设置其中一个值。推荐设置 temperature,因为这是大部分模型的通用参数。
  • 更多内容,可以参见阿里云文档。👉

Read more

WIN11必备!QTTabBar中文优化版保姆级安装教程(含常见问题解决)

WIN11效率革命:深度定制你的资源管理器,不止于多标签 如果你和我一样,每天要在Windows的资源管理器里花费大量时间,那你一定对那种反复在层层文件夹中穿梭、找不到上一个窗口的体验深恶痛绝。系统自带的文件管理工具,就像一个功能简陋的毛坯房,勉强能用,但毫无效率与舒适度可言。尤其是升级到WIN11后,虽然界面更现代,但核心的文件管理逻辑依然停留在上个时代,对于追求效率的用户来说,这无疑是一种巨大的生产力损耗。 这篇文章,就是为那些不愿忍受现状,但又不想投入过多精力去学习复杂新软件的WIN10/WIN11用户准备的。我们不讨论那些需要彻底改变操作习惯的“重型”第三方管理器,而是聚焦于一种更优雅、更无感的解决方案:增强你正在使用的资源管理器本身。今天的主角,是一个经过国内开发者精心“魔改”的经典工具——QTTabBar的中文优化版。它就像给你的文件管理器做了一次精装修,保留了熟悉的格局,却赋予了它全新的、高效的能力。接下来,我将带你从零开始,完成这次效率升级,并深入探讨如何根据你的习惯,将它调校成最趁手的工具。 1. 为什么选择增强,而非替换? 在深入安装细节之前,我们有必要先

Java Web HTML问卷调查系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web HTML问卷调查系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着互联网技术的快速发展,在线问卷调查系统已成为企业、教育机构和政府部门收集数据的重要工具。传统的纸质问卷调查方式效率低下,数据统计和分析过程繁琐,而基于Web的问卷调查系统能够实现问卷的快速创建、分发和数据分析,显著提升工作效率。此外,现代用户对系统的交互体验和响应速度提出了更高要求,因此开发一个高效、稳定且用户友好的在线问卷调查系统具有重要的现实意义。关键词:问卷调查系统、Web应用、数据收集、效率提升、用户交互。 本系统采用前后端分离架构,后端基于SpringBoot2框架搭建,结合MyBatis-Plus实现高效数据库操作,MySQL8.0作为数据存储方案,确保系统的高性能和可扩展性。前端使用Vue3框架开发,利用其响应式特性和组件化设计提升用户体验。系统核心功能包括问卷创建、问题管理、用户权限控制、数据统计与可视化分析等,同时支持多终端适配,满足不同场景下的使用需求。关键词:SpringBoot2、Vue3、MyBatis-Plus、MySQL8.0、前后端分离、数据可视化。 数据表设计 问卷信息数据表 问卷信息数据表用于存储用户创建的问卷基本信息,包括标题、

Python爬虫实战:高效解析Web of Science文献数据并导出CSV

1. 从零开始:为什么科研人员需要掌握Python爬虫 如果你是一名研究生、博士生,或者正在从事学术研究,我猜你一定有过这样的经历:为了写一篇综述或者做文献计量分析,你需要手动从Web of Science(WoS)上,一篇一篇地复制粘贴文献的标题、作者、摘要、关键词、发表年份、期刊信息……这个过程不仅枯燥乏味,而且极其容易出错,复制到第50篇的时候,你可能已经头晕眼花,甚至怀疑人生了。我当年读博的时候,为了分析一个领域近十年的研究趋势,需要收集上千篇文献数据,手动操作几乎是不可能完成的任务。正是这种“痛点”,让我下定决心研究如何用技术解放双手。 Python爬虫,听起来像是程序员专属的高深技术,但其实它离我们科研人员并不遥远。简单来说,爬虫就是一个能自动访问网页、抓取并整理信息的程序。对于Web of Science这样的学术数据库,虽然它提供了强大的检索功能,但批量导出详细数据(尤其是摘要、作者机构等)到本地进行深度分析,往往需要付费或者功能受限。自己写一个爬虫,就成了最高效、最灵活的解决方案。它能让你在喝杯咖啡的功夫,

LangChain 实战:大模型对话记忆模块(附完整代码 + Web 案例)

目录 前言:为什么需要对话记忆? 一、核心认知:原始 API vs LangChain 封装 1.1 原生 API 调用的痛点(无记忆) 1.2 LangChain 的价值:封装记忆与简化调用 二、LangChain 记忆模块核心组件 2.1 基础款:ConversationBufferMemory(完整记忆) 2.2 进阶款:窗口记忆与总结记忆 (1)ConversationBufferWindowMemory(窗口记忆) (2)ConversationSummaryMemory(总结记忆) 三、实战 1:LangChain 记忆链(ConversationChain) 四、实战 2:Streamlit 搭建带记忆的聊天