2025-07-10
工具调用AI的工具能力AI的短板
AI模型通过训练具备了逻辑推理、数据处理、内容生成等能力,但也存在一些短板。比如以下这些场景
向AI询问今天的天气如何。
让AI制定了旅游计划,让其帮忙预订机票。
因为缺少天气数据的支撑,AI无法给出准确的天气信息。
同样因为缺少预订机票可执行的系统支撑,也无法完成预定。
工具的作用
针对上述两个场景,AI提供梨工具调...
阅读全文
2025-07-10
函数工具调用函数即工具
在方法即工具中有一项限制是参数和返回类型不得是函数式类型(如 Function、Supplier、Consumer)。
SpringAI为函数式类型单独提供了构建工具的方式。
使用 FunctionToolCallback
可以通过FunctionToolCallback将Java中的函数式类型(Function、Supplier、...
阅读全文
2025-07-10
SpringAI-工具的特性工具的生命周期生命周期
SpringAI默认会自动执行AI模型对工具调用的请求,并将工具执行结果返回给AI模型。
整个过程由ChatModel(SpringAI与AI模型交互的核心实现)及ToolCallingManager(工具调用的核心管理器)共同完成。(ChatModel后续会深入学习和记录)
下图是官方的工具执行的生命...
阅读全文
2025-07-06
多模态AI模型的多模态
在前面的学习中我们只使用到了文本内容的输入与AI进行交互,那文本输入就算是一种模态。
那如果某个AI不仅仅能理解文本,还能理解图像、音频、视频等输入,那这个AI模型就支持了多模态。
现在能支持多模态的AI模型,在SpringA的文档上看到如下:
例如 OpenAI 的GPT-4o、Google 的Vertex AI Gemini...
阅读全文
2025-07-01
结构化输出如何引导AI结构化输出
AI模型输出响应并非像传统程序那样默认按某种结构化响应来输出,而是按照自然语言进行输出。
AI模型是可以按照输入的指令、需求来进行特定的处理和输出。那么可以利用这一点,要求AI按照指定的格式结构输出。
所以在调用AI之前,需要在提示词中加入明确、精准的格式指令,且最好是给出格式的例子来进行引导。如果输入的指令不够明确,也会存...
阅读全文
2025-06-29
MessageAI提示词
提示词是引导AI进行特定的处理及生成的输入,高效的提示词可以显著提升AI的处理及响应。
这里要记录的并不是提示词深入的概念,也不是如何设计高效的提示词,最起码首要目标不是这些。
而是学习和记录如何使用SpringAI提供的API快速的、灵活的将提示词编入程序与AI进行交互。
其实早在入门篇中就已经记录到了,且在过去的案例里面也基本都...
阅读全文
2025-06-29
PromptPrompt什么是Prompt
在上一篇已经记录了提示词主要是通过Message来实现结构化,且Message会存在多个。
如果需要执行过程中操作这些Message,一个一个来就会变得繁琐。
所以SpringAI将Message按顺序聚合在Prompt内,再提供处操作Message的能力。
Prompt除了Message还组合了ChatOptio...
阅读全文
2025-06-26
什么是Advisor官方定义
下面是官方文档对Advisor定义描述。
Spring AI Advisor API 为拦截、修改和增强 Spring 应用中的 AI 交互提供了灵活强大的方式。通过该 API,开发者能构建更复杂、可复用且易维护的 AI 组件。
核心优势包括:封装可复用的生成式 AI 模式、转换与大语言模型(LLM)交互的数据、实现跨模型与用...
阅读全文
2025-06-26
Advisor的核心实现Advisor家族核心族谱
下图是官方给出的Advisor类图
官方的图因为版本的原因,类名上有些出入。下面是在IDEA生成的类图,一起结合看一下。
可以看到最上层接口是Ordered,前面也说到过是排序。排序规则是,数值越小优先级越高。它具备两个常量,相当于最高和最低优先级。
12int HIGHEST_PRECEDENCE...
阅读全文
2025-06-26
更多案例最佳实践
官方推荐的最佳实践
保持 Advisor 功能单一化以提升模块性。
必要时通过 adviseContext 在 Advisor 间共享状态。
同时实现流式与非流式版本以获得最佳灵活性。
谨慎规划 Advisor 链顺序以确保数据流正确。
按照上面几点,写了三个案例记录在下面。
案例1:LogExampleAdvisor需求
编...
阅读全文
1 2 下一页