一 知识篇
1.1 常见大模型

三者之间的比较:

1.2 spirng ai baba版本对比

1.3 大模型的3要素
1.秘钥;2.模型名;3.调用地址
其中秘钥需要配置到环境变量中,防止明文显示

2.程序中引用

1.4 chatclient于chatmodel的区别联系
1.4.1 chatmodel
chat model 对话模型:接收一系列消息作为输入,与模型LLM服务进行交互,并接受返回的聊天消息作为输出,相比与普通的程序输入,模型的输入与输出消息不仅支持纯字符文本,还支持包括语音,图片,视频等作为输入输出。同时,在spring ai ailbaba中,消息中还支持包含不同的角色,帮助底层模型区分来自模型、用户和系统指令等的不同消息。
对话模型chatmodel是底层接口,直接与具体大语言模型交互,提供call()和stream()方法,适合简单大模型交互场景。

1.4.2 chatclient*
chatclient是高级封装,基于chatmodel构建,适合快速构建标准化复杂AI服务,支持同步和流式交互。集成多种高级功能。
1.4.3 chatclient和chatmodel区别

1.4.4 chatclient的使用
chatclient 不支持自动注入

解决方法:
方法1:使用构造器注入

方法2:作为bean放到spring容器中

使用@autowired引用

1.5 资料参考

二 流式处理
2.1 简介与作用
Server-Sent Events (SSE) 是一种允许服务端可以持续推送数据片段(如逐词或逐句)到前端的 Web 技术。通过单向的HTTP长连接,使用一个长期存在的连接,让服务器可以主动将数据"推"给客户端,SSE是轻量级的单向通信协议,适合AI对话这类服务端主导的场景
SSE 的核心思想是:客户端发起一个请求,服务器保持这个连接打开并在有新数据时,通过这个连接将数据发送给客户端。这与传统的请求-响应模式(客户端请求一次,服务器响应一次,连接关闭)有本质区别。SSE下一代(Stream able Http)。

2.2 适用场景
概述:sse :一种让服务器能够主动、持续地向客户端(比如你的网页浏览器)推送数据的技术。
sse非常适合需要服务器向客户端实时推送更新的场景。
1.实时通知:股票更新,新闻推送,聊天应用,系统告警
2.状态更新:长时间运行的任务进度
3.实时数据流:传感器数据,监控仪表盘
4.协作应用:显示其他用户在线状态或操作。
2.3 使用flux编程式响应案例
1.配置

2.Flux是SpringWebFlux中的一个核心组件,属于响应式编程模型的一部分。它主要用于处理异步、非阻塞的流式数据,能够高效地处理高并发场景。Flux可以生成和处理一系列的事件或数据如流式输出等。看类注释和类所在的jar包我们就明白:
SAA中的流式输出是通过ReactorStreams技术实现的和SpringWebFlux的底层实现是一样的技术。
具体执行流程:ReactorStreams会订阅数据源,当有数据时,ReactorStreams以分块流的方式发送给客户端用户。

三 提示词prompt
3.1 提示词作用
prompt提示词:引导AI模型生成特定输出的输入格式,提示词的设计和措辞会显著影响模型的响应。
通常使用chatModel的call()方法,该方法接受prompt实例并返回chatResponse。
3.2 提示词的四种角色*
1.系统角色:system role:设置AI行为边界/角色/定位, 指导AI的行为和响应的方式,设置AI如何解释和回复输入的参数或规则,这类似于在发起对话之前向AI提供说明。
2.用户橘色:user role;代表用户的输入,他们向AI提出问题,命令或陈述;这个角色至关重要,因为他构成了AI响应的基础。
3.助手橘色:AI对用户输入的响应。
4.工具/功能角色:工具/功能角色专注于响应工具调用助手消息返回附加信息。
3.3 提示词的2种用法

3.4 提示词模板
promptTemplate类旨在促进结构化提示的创建,然后将其发送到AI模型进行处理。
案例:

1万+

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



