自学内容网 自学内容网

SpringAI-基于java大模型的胡言乱语

最近看了一点相关的springAI知识,做个小总结

胡言乱语开始

1.不同的ai调用api一般单独汇总成一个依赖,比如说调用openai的api的依赖是spring-ai-openai-spring-boot-starter。

2.最常用的展示方式是流式对话,AI的数据是一个字一个字生成的,不等AI全部生成才传过来。看上去提高响应速度,给用户一个好体验,主要使用SSE技术。

3.为了让ai有上下文对话能力,需要将历史对答+本次提问组成一个list传输给ai,Message有

  • SystemMessage系统限制信息,该类信息在对话中的权重很大
  • UserMessage用户信息
  • AssistantMessageAI回复信息

等类型,由于ai计费方式按长度计算,所以一般会对这个列表长度进行限制。

4.人设功能,实际上属于提示词Prompt工程的一部分,在openai中人设设定存储在SystemMessage中,该SystemMessage在在对话中的权重很大,ai会优先对这部分反应。一般塞在历史数据list中的第一个。

5.Prompts模板语法,PromptTemplate能够创建结构化提示词,实现了三个接口:

  • PromptTemplateStringActions: 主要用于创建和渲染提示词字符串,返回值类型均是String类型,提示词基本形式。
  • PromptTemplateActions: 主要用于创建Prompt对象,该对象可直接传递给ChatClient以生成响应。
  • PromptTemplateMessageActions:主要用于创建Message对象,这允许我们针对Message对象进行其他的相关操作。

6.OutputParser 生成解析器,可以将AI生成的内容解析为Java对象。实际上是靠Prompt提示词强规范返回输出格式为json

Parser接口用于解析AI生成的内容并将其转换为Java对象返回。 在Spring AI中,OutputParser接口有三个具体的实现类:

  • BeanOutputParser: 通过让AI生成JSON格式的文本,然后通过JSON反序列化为Java对象返回;
  • MapOutputParser: 与BeanOutputParser的功能类似,但会将JSON反序列化为Map对象;
  • ListOutputParser: 让AI生成以逗号分隔的列表;

7.基于数据库的多Key轮询需求,在实际业务场景下,不可能只通过一个Key来保证系统稳定运行,因为一旦超过单key请求上限,就会出现无法请求AI的情况,所以需要实现多Key轮询请求,保证系统不会出现因为单key达到请求限制而无法运行的情况。

8.函数调用功能,在一些大模型中可能集成了函数调用功能,函数调用允许 AI 大模型执行客户端的函数,从而根据需要访问必要的信息或动态地执行任务。

9.不同于对话的ChatClient,绘图使用的ImageClient,需要给出ImageMessage(绘图指令)、ImageOptions(图片数、图片配置、返回的图片格式、绘图模型等)。

10.多模态对话,自行判断对话和图片方式,大概率取决去提示词,为了精准一般使用英文写提示词框架,第一次对话让ai判断使用什么方式,第二次对话调用相应的ChatClient或者ImageClient,当然,也可以要求同时输出文字和图片,通过ChatClient添加同时输出文字和图片的提示词来实现

11.Embeddings技术,将文本或图片等各种之后需要用的信息转换为数值向量。这些向量化后的数值数据对于文本分析和检索有着至关重要的作用。一般需要关注选用的Embedding模型model(比如text-embedding-3)和编码格式encodingFormat(通常float)

12.突破Token限制的取巧方法,上下文太长会超过Token限制导致ai无法根据所有信息进行回复,比如提取一篇几十页的论文的总结或者其中提出的名词的含义,直接提问显得不太显示,这时需要一种能存储大量信息并且能被ai理解的事物,也就是向量数据库,与传统数据库执行的精确性搜索不同,向量数据库执行相似性搜索。相似性搜索的算法有很多,比如计算两个向量之间的距离或者夹角来判断是否相似。

13.RAG技术,向量数据库执行搜索后的结果是一组与用户问题相似的数据,在让AI处理超大文本时,只需将这组数据发送给AI即可,这解决了传入超大文本时突破Token限制,节省大量开销。这就是增强检索生成(RAG),RAG的实现原理:

  • 文本分割成一组文本;
  • 一组文本调用嵌入模型获得一组向量并存储到向量数据库中;
  • 提问时,在向量数据库执行相似性搜索获得与问题相关的一组文本;
  • 将这组文本和问题一并发给AI

如果想使用RAG技术,需要以下几个功能:

  • 文件上传功能和接口
  • 向量数据库的CURD
  • 创建提示词来让AI知道自己要根据查找的内容进行回复
  • 创建对话接口

原文地址:https://blog.csdn.net/qq_42078712/article/details/142368664

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!