当前位置: 首页 > news >正文

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知道自己要根据查找的内容进行回复
  • 创建对话接口
http://www.lryc.cn/news/441530.html

相关文章:

  • python提问及解析
  • 从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来
  • 智能AC管理系统HTTPD-AC 1.0服务存在未授权访问漏洞
  • Sidewalk介绍
  • Java数据结构 (泛型第二节) 泛型擦除机制/泛型的限制/上界下界
  • 数据安全标准在非结构化数据中台的遵守
  • 探索Go语言中的Goroutine并发机制
  • 实现实时Web应用,使用AJAX轮询、WebSocket、还是SSE呢??
  • 3GPP协议入门——物理层基础(一)
  • 关于Java数据结构中集合的一个小知识
  • leetcode41. 缺失的第一个正数,原地哈希表
  • 如何准备教师资格证科目三“学科知识与教学能力”的考试与面试?(理科导向:数学/物理)
  • 3.数据类型
  • Xcode报错:No exact matches in reference to static method ‘buildExpression‘
  • 校园安全无小事,EasyCVR视频综合管理平台助力智慧校园视频监控系统全面升级
  • 通过Python代码发送量化交易信号邮件通知
  • 计算机毕业设计 乡村生活垃圾管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • Qwen 2.5:阿里巴巴集团的新一代大型语言模型
  • Element UI入门笔记(个人向)
  • 网络通信失败-关闭网络防火墙
  • 基于kolla-ansible在openEuler 22.03 SP4上部署OpenStack-2023.2
  • 深拷贝|浅拷贝
  • 图像处理-掩码
  • [2025]基于微信小程序慢性呼吸系统疾病的健康管理(源码+文档+解答)
  • react之jsx基础(1)概念和本质
  • sqli-labs靶场自动化利用工具——第13关
  • 大舍传媒:尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展
  • ISSTA 2024盛大开幕:中国学者的录取数和投稿量均位列第一
  • HttpMediaTypeNotAcceptableException: No acceptable representation问题解决方法
  • Scrapy爬虫框架 Pipeline 数据传输管道