0%

一些大语言模型(LLM)除了生成文本之外,还可以触发动作。这个被称为”工具”或”函数调用”的概念,它允许 LLM 在必要时调用一个或多个通常由开发者定义的可用工具。工具可以是任何东西:网络搜索、调用外部 API,或执行特定的代码片段等。LLM 实际上不能自己调用工具,相反,它们在响应中表达调用特定工具的意图(而不是以纯文本形式响应)。

所有支持工具的 LLM 可以在此处找到(参见”Tools”列)。
并非所有 LLM 对工具的支持程度都一样,理解、选择并正确使用工具的能力在很大程度上取决于具体的模型和它的能力。有些模型可能完全不支持工具,而另一些则可能需要精心设计的提示词或额外的系统指令。


LangChain4j 工具抽象层级

LangChain4j 为使用工具提供了两个抽象层级:ChatModel级别和AI—Services级别。

Read more »

许多 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 »