0%

许多 LLM 和 LLM 提供商支持以结构化格式(通常是 JSON)生成输出。这些输出可以轻松映射到 Java 对象,并在应用程序的其他部分使用。

例如,假设我们有一个 Person 类:

1
2
record Person(String name, int age, double height, boolean married) {
}

我们的目标是像下面这样的非结构化文本中提取 Person 对象:

John is 42 years old and lives an independent life.
He stands 1.75 meters tall and carries himself with confidence.
Currently unmarried, he enjoys the freedom to focus on his personal goals and interests.

目前,根据 LLM 和 LLM 提供商的不同,有三种方式可以实现这一目标(从最可靠到最不可靠):

  1. JSON Schema
  2. Prompting + JSON Mode
  3. Prompting
Read more »

因为ChatModelChatMessageChatMemory 等底层组件工作非常灵活,但也正式由于给予的这些自由,迫使开发者需要编写大量的样板代码。而由于 LLM 驱动的应用程序通常需要多个组件协同工作(例如提示模板、聊天记忆、LLM、输出解析器、RAG 组件:嵌入模型和存储),并且通常涉及多次交互,协调所有这些组件变得更加繁琐。故LangChain4j 目前提供了两个高级概念来解决这个问题:AI 服务(AI Services)链(Chains),以便于开发者能专注于业务逻辑而不是底层细节。

链(Chains)

链的概念源于 Python 版的 LangChain,其理念是为每个常见用例提供一个 Chain,例如聊天机器人、RAG 等。链将多个底层组件组合起来,并协调它们之间的交互。链的主要问题在于,如果你需要自定义某些内容,它们过于僵化,所以LangChain4j 目前只实现了两个链(ConversationalChainConversationalRetrievalChain),并不计划添加更多。

Read more »

为了维护和管理 ChatMessage ,LangChain4j 提供了 ChatMemory 抽象以及多种开箱即用的实现,。ChatMemory 既可以作为独立底层组件使用,也可以作为高级组件(如 AI Services)的一部分。

ChatMemory 充当 ChatMessage 的容器(底层由 List 支持),并附带以下功能:

  • 淘汰策略(Eviction Policy)
  • 持久化(Persistence)
  • 对 SystemMessage 的特殊处理
  • 对工具消息的特殊处理
Read more »

翻译自官方文档:https://modelcontextprotocol.io/docs/learn/architecture

本模型上下文协议 (MCP) 概述讨论了其范围和核心概念,并提供了一个示例来演示每个核心概念。由于 MCP SDK 抽象掉了许多细节,大多数开发者可能会发现数据层协议部分最有用。它讨论了 MCP 服务器如何向 AI 应用程序提供上下文。有关具体的实现细节,请参考您所用编程语言的 SDK的文档。

范围

模型上下文协议包括以下方面:

  • MCP 规范:概述客户端和服务器实现要求的 MCP 规范。
  • MCP SDK:用于实现 MCP 的不同编程语言的 SDK。
  • MCP 开发工具:用于开发 MCP 服务器和客户端的工具,包括 MCP Inspector。
  • MCP 参考服务器实现:MCP 服务器的参考实现。

MCP 仅关注上下文交换的协议——它并不规定 AI 应用程序如何使用 LLM 或管理所提供的上下文。

Read more »

翻译自官方文档:https://modelcontextprotocol.io/docs/getting-started/intro

什么是模型上下文协议 (MCP)?

模型上下文协议 (MCP) 是一个用于将 AI 应用连接到外部系统的开放协议标准

通过 MCP,像 Claude 或 ChatGPT 这样的 AI 应用可以连接到数据源(例如本地文件、数据库)、工具(例如搜索引擎、计算器)和工作流(例如专用提示)——使它们能够访问关键信息并执行任务。

可以把 MCP 想象成 AI 应用的 USB-C 接口。正如 USB-C 为电子设备提供标准化的连接方式一样,MCP 为 AI 应用与外部系统的连接提供了标准化方式。

Read more »

目录结构

一个 skill 是一个至少包含一个 SKILL.md文件的目录:

1
2
3
4
5
6
技能名称/
├── SKILL.md # 必需:元数据 + 使用说明
├── scripts/ # 可选:可执行代码脚本
├── references/ # 可选:参考文档
├── assets/ # 可选:模板、资源
└── ... # 任何其他文件或目录
Read more »

官方文档:https://agentskills.io/what-are-skills

什么是skills

智能体技能是一种轻量级的开放式格式,旨在通过专业知识和工作流来扩展人工智能智能体的能力。
其核心是一个包含SKILL.md文件的文件夹。此文件至少包含元数据(至少包括namedescription)和指导智能体如何执行特定任务的指令。技能还可以捆绑脚本(scripts)、模板(templates)和参考资料(references)。

Read more »

空间创建

创建工程文件夹(如 dev_langchain),并激活虚拟依赖

1
2
3
4
5
6
7
8
# 创建工程文件夹
mkdir dev_langchain

# 处理虚拟依赖
cd dev_langchain
python -m venv langchain_env
# 激活依赖,以windows PowerShell为例
.\langchain_env\Scripts\Activate.ps1
Read more »

什么是模型上下文协议 (MCP)?

模型上下文协议(Model Context Protocol,MCP) 是一种标准化协议,使 AI 模型能够以结构化的方式与外部工具和资源进行交互。可以将其视为 AI 模型与现实世界之间的桥梁——允许模型通过一致的接口访问数据库、API、文件系统和其他外部服务。它支持多种传输机制,以适应不同环境下的灵活性需求。

MCP Java SDK 提供了模型上下文协议的 Java 实现,支持通过同步和异步通信模式与 AI 模型及工具进行标准化交互。

Spring AI 通过专用的 Boot Starters 和 MCP Java 注解,全面拥抱 MCP,使得构建能够无缝连接外部系统的复杂 AI 驱动应用程序变得前所未有的简单。这意味着 Spring 开发者可以参与 MCP 生态系统的两端——构建消费 MCP 服务器的 AI 应用程序,以及创建向更广泛的 AI 社区暴露基于 Spring 的服务的 MCP 服务器。使用 Spring Initializer 快速启动带有 MCP 支持的 AI 应用程序。

Read more »

概述

大型语言模型(LLM)是无状态的,这意味着它们不会保留之前交互的信息。当你希望在多次交互中保持上下文或状态时,这可能是一个限制。为了解决这个问题,Spring AI 提供了聊天记忆(Chat Memory)功能,允许你在与 LLM 的多次交互中存储和检索信息。

ChatMemory 抽象允许你实现各种类型的记忆,以支持不同的使用场景。消息的底层存储由 ChatMemoryRepository 处理,其唯一职责是存储和检索消息。ChatMemory 的实现负责决定保留哪些消息以及何时删除它们。策略示例包括:保留最近 N 条消息、保留一段时间内的消息,或将消息限制在一定的 token 数量以内。

Read more »