目录
提供了ChatClient和ChatModel和大模型进行对话

一、怎么理解大模型?
所谓的大模型通常指基于深度学习的大规模人工智能模型,尤其是像 GPT-4 这样的大语言模型(LLM, Large Language Model)。
相比于传统模型,大模型的“大”主要体现在就是参数规模大。传统深度学习模型的参数规模通常在百万级到千万级,而大模型的参数量达到了百亿级、千亿级,甚至万亿级。以 GPT-4 为例,参数规模可能达万亿级。
如我们通常说的7B模型,指的就是他的参数量达到了70亿。
另外大模型的核心是基于深度学习和神经网络,通常采用 Transformer 架构。
Transformer 通过 “自注意力机制(Self-Attention)” 和 “多头注意力机制(Multi-Head Attention)” 实现高效的信息处理,相比于传统的 RNN(循环神经网络)和 CNN(卷积神经网络)具有更强的并行计算能力和更长的上下文理解能力。(了解即可,不用背)
但是不要简单的认为大模型就只是AI对话,他的应用方向非常广泛,涵盖自然语言处理(NLP)、计算机视觉(CV)、语音识别、科学计算、自动驾驶等领域。
| 应用领域 | 代表应用 | 典型模型 |
|---|---|---|
| 1. NLP 语言 AI | ChatGPT、翻译、代码生成 | GPT-4、LLaMA 3、Claude |
| 2. 计算机视觉(CV) | 图像生成、目标检测 | Stable Diffusion、DALL-E、ViT |
| 3. 语音 AI | 语音识别、语音克隆 | Whisper、VALL-E、Tacotron |
| 4. 自动驾驶 & 机器人 | 无人车、机器人导航 | Tesla FSD、Gato、Perceiver |
| 5. 科学计算 & 医疗 | 药物研发、医学影像 | AlphaFold、Med-PaLM 2 |
| 6. 推荐系统 & 广告 | 电商推荐、精准营销 | DeepFM、DINO、YouTube AI |
目前,大模型遇到的一些关键问题有以下几个:
- 数据和隐私问题:大模型训练涉及大量数据,可能存在隐私泄露风险。
- 幻觉:模型可能生成虚假或不准确的信息。
- 能耗高:训练一次大模型可能消耗数千吨二氧化碳当量的能源。
- 可控性和安全性:如何让模型可靠、透明地运作是一个重要挑战。
二、大模型产生幻觉的原因?怎么解决?
大模型的“幻觉”指的是 AI 生成了看似合理但实际上错误或编造的信息。例如,它可能会编造不存在的事实、错误引用文献、甚至捏造公司或人物的信息。
幻觉产生原因
语言模型的“填空”机制
- Transformer 语言模型本质上是一个“填空预测器”,它是根据概率预测来选择下一个输出的词,而不是在“思考”正确答案。
训练数据存在缺陷
- 训练数据本身可能包含错误信息、不完整数据、偏见信息,导致模型学到不真实的内容。
- 训练数据可能过时,例如,GPT-4 的数据截止到 2023 年初,无法回答最新时事。
缺乏事实验证能力
- 语言模型在生成文本时,并不会主动去查证答案的真实性。
长文本记忆力有限
- 由于上下文窗口有限(如 GPT-4-turbo 约 128k tokens),当文本过长时,AI 可能遗忘前面提到的信息。
解决幻觉的几个方案
-
RAG,通过 RAG 的方式,让大模型在回答问题之前先检索真实数据,再让模型进行回答。
-
Fine-tuning,即微调,通过微调的方式,给模型学习专业领域的知识,让他更好地回答。
-
限制 AI 的回答,比如在提示词中告诉他:如果你不知道,直接就回答“不知道”。
-
通过标注和反馈不断优化模型。并把反馈可以给到模型,让模型调整。
-
让同一个模型多次生成同一个内容的答案,然后选择一个最终版本。
-
在问题回答之后,让 AI 自己检查自己的答案,并标记不确定的部分。
-
联网,在 AI 生成答案之前,先通过网络查询最新数据。
-
让 AI 先写下推理过程,再得出最终结论,而不是直接给出答案。
三、如何看待DeepSeek?它能爆火的原因是什么?
DeepSeek的爆火要从两个方面看,一个是在普通老百姓的视角看,另一个是行业的视角看。
从普通老百姓的视角来看,其实主要给人的感受上有变化是因为他把思考过程展示了出来,在DeepSeek之前,其他的模型也都有会自己的思考过程,包括GPT,但是都没有展示出来,而DeepSeek把他展示了出来,在回答问题之前先把自己的思考过程显示出来,让用户知道这个过程是怎么样的。
还有就是他自身的能力和效果还不错,而且在中文处理能力上甚至还超越GPT等产品。
从专业的视角来看,行业内能引起这么大的波澜,主要还是他的成本更低了,同样的规模的模型,它的成本可以降低到其他模型的1/20,这就能大大的降低对卡(算力)的依赖,而且成本也会更加的低了。在训练费用上只有500多万美元,是GPT-4十分之一都不到。
还有就是他自身的能力和效果还不错,而且在中文处理能力上甚至还超越GPT等产品。
另外有一个不容忽视的原因,那就是DeepSeek并没有诞生在传统大厂,而是诞生在一家来自中国的“小公司”(但是其实幻方做量化也很多年了,也屯了很多卡,只不过不算是互联网大厂),他的崛起,符合“咸鱼翻身,挑战强权”的价值观。
还有就是DeepSeek走了一条开源的路,DS-R1是开源的。
当然,DeepSeek也是有很多技术创新的,比如MoE(混合专家模型)、MLA(多投潜在注意力机制)等。
DeepSeek采用Transformer+MoE(Mixture of Experts)组合架构,通过动态激活专家网络(如DeepSeek-V3仅激活370亿参数中的部分)显著降低计算资源消耗。其MoE架构引入共享专家与路由专家的分工:共享专家处理通用知识,路由专家针对特定任务优化,提升训练效率与稀疏性。此外,通过动态路由机制,模型能根据输入内容自动分配专家资源,实现计算资源的按需分配,综合效率较传统MoE提升30%。
四、DeepSeek为什么训练成本低?
DeepSeek的训练成本显著低于行业平均水平(如GPT-4的1/20),官方自己说V3模型训练成本仅为557.6万美元,那么做了什么呢?
合专家模型(MoE)与动态路由
DeepSeek采用Transformer + MoE架构,在训练和推理时仅激活部分参数(如推理阶段激活10%-37%的参数量),显著减少计算资源消耗。动态路由机制根据输入内容自动分配专家网络,进一步提升效率。
强化学习与训练策略优化
引入GRPO算法(Group Relative Policy Optimization),摒弃传统PPO算法中的价值模型,减少50%训练内存需求,并通过强化学习直接优化策略,降低无效训练60%。
FP8混合精度训练
全球首个全面采用8位浮点(FP8)精度训练的大模型,动态调整训练阶段精度,降低内存占用40%,同时支持消费级显卡运行复杂模型。
PTX编程
直接优化底层硬件指令(如英伟达PTX编程层),绕过CUDA抽象层,最大化GPU算力利用率。例如,在A100显卡上运行原需H100的任务。
五、你平时用过那些AI工具?
初级回答:用过 DeepSeek、文心一言、通义千问等国产对话式 AI 工具。
中级回答:通过梯子用过国外的 AI,如 GPT 等,并且付费过。
使用过通义灵码等免费编程工具。
高级回答:除了文字对话式 AI 以外,还用过其他的多模态类型的 AI 工具,比如 Runway、DALL-E、Midjourney、Stable Diffusion、可灵等。
使用过 Cursor 等付费的编程工具。
牛逼回答:自己部署过 AI 模型,并尝试过做调优。
六、什么是Function Calling?
Function Calling 都是一种让大模型会使用工具的方案。如果一个大模型不会用工具,那就只能是一个简单的对话机器人,并且只能根据以往训练的数据进行对话。
如果你想让大模型能够帮你联网查询、帮你操作本地文件、帮你调用外部服务,都需要让他会用工具,而 Function Call、MCP、A2A 都是可以让大模型更好地使用工具的技术方案。
定义好了工具之后,再向他提问的时候,将我们的 prompts 和上面定义的可用的工具都传给 LLM,那么他就能根据用户的问题,选择工具去使用,更好的做出回答了。
七、对RAG了解吗?谈谈什么是RAG?
RAG 的全称是:Retrieval-Augmented Generation,翻译成中文是:检索增强生成。
说人话就是——让大语言模型(比如 ChatGPT)在“生成答案”之前,先去找资料(检索)来增强它的知识,再用这些资料来生成更准确的回答。
为什么需要RAG
因为对于很多大语言模型来说,他的知识是基于历史数据训练出来的,比如 GPT-4 是截止到 2023 年的数据,而在这之后发生的所有的新的事件、新的数据,他都是不知道的,那么他的回答就会有这部分的局限性。
还有就是,很多大模型是基于公开的资料训练出来的,而很多私域的信息他是没有学习过的,而很多知识是私有的知识,这就需要通过资料的方式增强他原来不熟悉的知识。
所以,有了 RAG 之后,就可以基于自己的知识构建自己的知识库,这样就能做到知识的更新和迭代,也能弥补大模型不知道一些特定领域的专业知识的不足。这样就能让大模型的回答更加准确,减少幻觉的发生。
如何构建一个RAG?
1、前置准备
首先我们需要做数据准备,把你要用的资料收集好,比如:公司内部文档(PDF、Word、Markdown)、FAQ列表、产品手册等,然后清洗这些数据,比如去掉无关信息、切分成合理的小段。
然后把每一小段文本用 Embedding模型 转成向量,把这些向量存到向量数据库里,比如 FAISS、Milvus 等。
2、检索查询
当用户提问时,先用相同的 Embedding 模型把问题也转成向量。然后在向量数据库里用向量相似度搜索,找出最相关的几段资料(比如 Top 5)。这些找到的内容就是上下文增强材料。
3、生成回答
紧接着,就可以把用户的问题 + 检索到的资料一起,作为 Prompt 发给大语言模型(LLM)。这样可以保证模型只在资料范围内生成答案,降低幻觉。
八、什么是MCP?
MCP 和 Function Calling 一样,都是让大模型会用工具的一种手段。全称是 Model Context Protocol,顾名思义,它是一种协议,只要每一个 MCP Server(工具)都遵守这个协议,那么大模型就可以直接使用这些工具了,而不需要像 function calling 一样,要写一大堆的适配代码(提示词)。
就像下面这张图一样,他就像一个 USB 的规范一样,只要大家都遵守,就能一起玩。

这个协议是 Anthropic 2024 年年底推出的,就是那个研发了 Claude 模型的公司,他们制定的这个规范,后来因为大名鼎鼎的 Cursor 开始支持了,慢慢的就火起来了,后来 OpenAI 也不得不支持了。现在还是比较火的。
有了 MCP 之后,大模型就不再需要为每个数据源或工具单独开发接口,开发者只需遵循 MCP 规范,即可快速集成各种工具。
MCP 中有三个核心组件
- MCP Hosts:如 Claude Desktop 或 IDE(比如 Cursor),作为 AI 应用的入口,发起数据请求。
- MCP Servers:轻量级服务,负责对接具体数据源或工具(如 GitHub API、本地文件系统),提供标准化接口。(一般是别人开发好的,你要用的工具)
- MCP Clients:协议客户端,维护与服务器的连接并转发请求。
有了 MCP 之后,当用户提出一个问题时,就是大致下面的流程:
- 客户端(Claude Desktop / Cursor)将你的问题发送给大模型(如 Claude)。
- Claude 分析可用的工具,并决定使用哪一个(或多个)。
- 客户端通过 MCP Server 执行所选的工具。
- 工具的执行结果被送回给 Claude。
- Claude 结合执行结果构造最终的 prompt 并生成自然语言的回应。
- 回应最终展示给用户。
九、什么是大模型的微调,和预训练有什么区别?
大模型是怎么来的?其实就是预训练来的,包括现在的GPT、Deepseek这些大模型。通过海量通用数据来训练模型,让模型具有掌握语法、常识和基础语义。
预训练的成本是巨高的,首先需要有海量数据(TB级),然后还需要极高的算力,进行长时间的模型训练,基本上只有大厂才能玩得起。
而微调,是在预训练模型的基础上,用特定领域或任务的数据调整模型参数,使其适应具体场景(如医疗问答、法律文本分析)。
相比于预训练,他只需要少量的数据(MB~GB级),相对的训练算力也会低很多。可以说预训练的目的是获得一个通用模型,而微调的目的是获得一个专用模型。
其实,我们常用的提示词,也可以算作是微调的一种,只不过他相对简单,并不需要调整模型参数来完成,目的是让模型能够更好的回答我们的问题,所以有一种微调叫做Prompt Tuning。
随着模型规模变大,完整微调(也叫全参)成本也变高,出现了很多轻量级微调方式:
-
LoRA(Low-Rank Adaptation)
-
PEFT(Parameter-Efficient Fine-Tuning)
-
Adapter、Prefix Tuning
-
指令微调(Instruction Tuning)
-
RLHF(人类反馈强化学习)
这些方法通常只更新模型的一部分参数,大大减少资源消耗。
十、了解Spring AI吗,他都能干什么?
Spring AI是Spring官方推出的AI应用开发框架,最近(2025年5月20)刚刚发布1.0版本,他的主要作用就是通过提供各种API的封装来降低用Java开发大模型应用的门槛。
与大型语言模型集成
Spring通过简单的配置快速集成 OpenAI、Azure OpenAI、HuggingFace、Ollama、Mistral、Google Gemini 等主流 LLM 服务。
ChatClient chatClient = ... // 自动注入或配置
ChatResponse response = chatClient.call("帮我写一个天气查询的API");
System.out.println(response.getResult().getOutput());
提供了ChatClient和ChatModel和大模型进行对话
ChatModel API 让应用开发者可以非常方便的与 AI 模型进行文本交互,它抽象了应用与模型交互的过程,包括使用 Prompt 作为输入,使用 ChatResponse 作为输出等。
@RestController
public class ChatModelController {
private final ChatModel chatModel;
public ChatModelController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@RequestMapping("/chat")
public String chat(String input) {
ChatResponse response = chatModel.call(new Prompt(input));
return response.getResult().getOutput().getContent();
}
}
ChatClient 提供了与 AI 模型通信的 Fluent API,它支持同步和反应式(Reactive)编程模型。与 ChatModel、Message、ChatMemory 等原子 API 相比,更加灵活,代码更精简。
@RestController
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(String input) {
return this.chatClient.prompt()
.user(input)
.call()
.content();
}
}
Prompt 模板支持
可以定义 prompt 模板,使用变量动态生成 prompt。使用类似 Spring Boot 配置和注入方式加载模板。
PromptTemplate template = new PromptTemplate("请用Java写一个{task}的例子");
String prompt = template.render(Map.of("task", "文件读取"));
支持RAG
支持将文本向量化后存储到向量数据库(如 Redis, Pinecone, PostgreSQL with pgvector, Milvus 等)。可用于构建 RAG 应用,实现文档问答、知识库问答等。
EmbeddingClient embeddingClient = ...;
VectorStore vectorStore = new PgVectorStore(...);
vectorStore.add(List.of(new Document("Spring 是什么框架?", metadata)));
支持对话记忆
支持基于chat memory的对话记忆,也就是不需要调用显示的记录每一轮的对话历史。
//初始化基于内存的对话记忆
ChatMemory chatMemory = new InMemoryChatMemory();
DashScopeChatModel dashscopeChatModel = ...;
ChatClient chatClient = ChatClient.builder(dashscopeChatModel)
.defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory))
.build();
//对话框记忆的唯一标识
String conversationId = UUID.randomUUID().toString();
ChatResponse response = chatClient
.prompt()
.user("我想去新疆")
.advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, conversationId)
.param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))
.call()
.chatResponse();
String content = response.getResult().getOutput().getContent();
Assertions.assertNotNull(content);
logger.info("content: {}", content);
response = chatClient
.prompt()
.user("可以帮我推荐一些美食吗")
.advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, conversationId)
.param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))
.call()
.chatResponse();
content = response.getResult().getOutput().getContent();
Assertions.assertNotNull(content);
logger.info("content: {}", content);
十一、什么是AI Agent?
大模型大家都知道,比如我们常见的ChatGPT、DeepSeek等,但是,这些大模型都有一个关键的问题,那就是他们没办法用工具,比如我想要让大模型帮我查询一个接口,他是做不到的。
那么,如果给大模型增加工具的调用能力,并且他知道该什么时候调用什么工具,这基本上就是一个Agent了。
Agent翻译成中文是智能体,或者叫做助理更合适,比如说这就是个Agent:你对你的小爱同学说,我想吃肯德基,他就能分析出你可能想吃什么,然后让你确认后,直接就帮你把肯德基点好了。
这个过程需要:
-
小爱同学知道你想吃什么,了解你的口味。
-
小爱同学知道点餐需要打开相关软件,然后搜索,然后付款
-
小爱同学可以帮你自动完成这些操作
该怎么实现这样的功能呢?下面这张图就是非常出名的Agent的图:

可以看到,这里面包括了Tools、Action、Planning以及Memory,Tools就是我们前面说过的工具,而Action就可以理解为是对工具的调用。
剩下的Memory这个好理解,就是需要有记忆的能力,包括了长期记忆和短期记忆,短期记忆可以理解为上下文记忆,就像你打开一个ChatGPT的对话窗口,这个就是个短期记忆,换个窗口记忆就清楚了。长期记忆一般是通过一些其他的方式,比如数据库做存储,在每次对话前先让模型读取这些信息,作为长期记忆。
还有一个Plan的功能,这其实是在Agent有了记忆,会工具之后,还需要他知道什么时候该调用哪些工具,这就是所谓的规划的能力。
那么总结下,Agent = LLM + Memory + Tools(使用 + 规划)
基于以上介绍,差不多就能总结出一个Agent具备的能力。主要包括了:
-
感知(Perception):Agent能够接收来自环境的输入信息,包括用户输入的问题,以及Memory。
-
决策(Decision-making):Agent根据感知到的信息和内部状态,选择合适的行动(包括Tools的规划使用)。
-
行动(Action):Agent执行所选的行为,以实现特定目标。
未完待续........

409

被折叠的 条评论
为什么被折叠?



