0%

翻译自官方文档:https://docs.spring.io/spring-ai/reference/concepts.html

AI 模型(AI Models)

AI 模型是旨在处理和生成信息的算法,通常模仿人类的认知功能。通过学习大规模数据集中的模式和洞察,这些模型可以进行预测、生成文本、图像或其他输出,从而增强各行各业的各种应用。

AI 模型有许多不同的类型,每种都适用于特定的用例。虽然 ChatGPT 及其生成式 AI 能力通过文本输入和输出吸引了大量用户,但许多模型和公司提供了多样化的输入和输出形式。在 ChatGPT 之前,许多人就对 Midjourney 和 Stable Diffusion 等文本生成图像模型着迷。

下表根据输入和输出类型对几种模型进行了分类:

输入 输出 示例
文本 文本 ChatGPT
文本 图像 Midjourney、Stable Diffusion
文本 音频 ElevenLabs
图像 文本 OCR、图像描述
文本 嵌入(数字) Embedding 模型

Spring AI 目前支持处理语言、图像和音频作为输入和输出的模型。上表中最后一行(接受文本作为输入并输出数字)通常被称为文本嵌入(Embedding),代表了 AI 模型内部使用的数据结构。Spring AI 支持嵌入功能,以实现更高级的用例。

GPT 等模型的独特之处在于其预训练特性——正如 GPT 中的 “P” 所表示的那样:Chat Generative Pre-trained Transformer(对话生成式预训练 Transformer)。这种预训练特性使 AI 转变为一种通用的开发者工具,无需深厚的机器学习或模型训练背景即可使用。

Read more »

概述

递归 Advisor(Recursive Advisors) 是一种特殊类型的 Advisor,可以多次循环遍历下游 Advisor 链。这种模式在需要重复调用大语言模型(LLM)直到满足特定条件时非常有用,例如:

  • 循环执行工具调用,直到无需再调用任何工具
  • 验证结构化输出,并在验证失败时重试
  • 通过修改请求来实现评估(Evaluation)逻辑
  • 通过修改请求来实现重试逻辑
Read more »

概述

Spring AI 的 Advisors API 提供了一种灵活而强大的方式,用于在 Spring 应用中拦截、修改和增强 AI 驱动的交互。通过 Advisors API,开发者可以构建更复杂、可复用且易维护的 AI 组件。

主要优势:

  • 封装常见的生成式 AI 模式(如 RAG、对话记忆、内容审查等)
  • 转换发送给和接收自大语言模型(LLM)的数据
  • 在不同模型和用例之间实现可移植性

推荐注册方式:官方建议在构建时使用 ChatClientdefaultAdvisors() 方法注册 Advisor:

1
2
3
ChatClient.builder(chatModel)
.defaultAdvisors(new MyAdvisor())
.build();

同时Advisor 也会加入 Observability(可观测性)栈,你可以查看其执行的指标(Metrics)和链路追踪(Traces)。

Read more »

随着 AI Agent 连接的服务增多(Slack、GitHub、Jira、MCP 服务器等),工具库迅速膨胀。一个典型的多服务器设置很容易拥有 50+ 工具,在对话开始之前就消耗 55,000+ Token。当模型面对 30+ 名称相似的工具时,工具选择准确性也会下降。

工具搜索工具模式通过按需工具发现解决这个问题:

Spring AI 在2.0版本提供了该机制,可用于实现Tool的渐进加载,更好的为agent服务

  1. 模型初始只收到一个搜索工具 — 最小化 Token 使用
  2. 当需要某种能力时,模型用自然语言查询调用搜索工具
  3. 匹配的工具定义被动态展开到上下文中
  4. 模型随后可以正常调用被发现的工具

这实现了显著的 Token 节省,同时保持对大型工具目录的访问。

Read more »

工具调用概述

工具调用(Tool Calling,也称为 函数调用 Function Calling)是 AI 应用中的一种常见模式,允许模型与一组 API 或”工具”交互,从而扩展模型的能力。

工具主要用于以下场景:

  • 信息检索(Information Retrieval):此类工具用于从外部源(如数据库、Web 服务、文件系统或搜索引擎)检索信息,目的是增强模型的知识,使其能回答原本无法回答的问题,比如适用于 检索增强生成(RAG) 场景。工具的使用例子有“获取某地的当前天气”、“检索最新新闻文章”、“查询数据库中的特定记录”等等
  • 执行操作(Taking Action):此类工具可在软件系统中执行操作,如发送邮件、在数据库中创建记录、提交表单或触发工作流,旨在自动化原需人工干预或显式编程的任务。比如“为聊天机器人用户预订航班”、“填写网页表单”、“在代码生成场景中依据自动化测试实现 Java 类(TDD)”

虽然通常称”工具调用”是模型的能力,但实际上由客户端应用程序提供工具调用逻辑。模型只能请求调用工具并提供输入参数,应用程序负责执行工具并返回结果。模型永远不会直接接触被注册为工具的 API。

Read more »

这篇文章我我们来探讨一下分布式ID常用的几种生成策略思想。

UUID

UUID(Universally Unique Identifier)的标准形式包含32个16进制数字,以短划线(-)分为五段,形式为8-4-4-4-12的36个字符,示例:

1
123e4567-e89b-12d3-a456-426655440000
Read more »

一个合适的应用架构不仅能促使项目朝着好的方向发展,易于维护,也能指导团队成员有效协作。

DDD是站在领域的角度来驱动应用架构的落地,接下来将介绍一种落地方案。

Read more »

战略设计

战略设计是将“混沌”解构成“清晰”的过程,在该过程从开始到结束的历程之中,我们会划分出领域、界定通用语言范围、确定出系统限界上下文以及上下文之间的映射方式。

Read more »