spring-ai

使用最新的Mistral AI API,在 Java 和 Spring AI 中进行函数调用

领先的开源大型语言模型开发商 Mistral AI 宣布,其尖端模型新增了 函数调用 支持。 函数调用 是一种便于 LLM 与外部工具和 API 集成的功能。它使语言模型能够请求执行客户端函数,从而访问必要的运行时信息或动态执行任务。 本文将带你了解如何将 Mistral AI 的新函数调用功能与 Java 特别是 Spring AI 结合使用。 如果你对底层的 Java 客户端的详细细节不感兴趣,不想浪费时间,可以直接看 使用 Spring AI 调用函数 章节。 1、使用 Java 调用函数 如果你想使用 Java 和 Spring AI 测试最新的 Mistral AI 功能,你会发现 Mistral 不支持 Java 客户端,也还没有发布函数调用 API。 因此,我不得不通过探索他们的 JavaScript/Python 客户端来解决这个问题。下面是一个类图,说明了 API 的各个组件及其相互联系。 熟悉 OpenAI API 的人会注意到,Mistral AI 的新 API 几乎与 OpenAI API 相同,只有一些细微差别。不过,还有一个重要的限制: 在撰写本文时,Mistral AI 不支持并行函数调用,这使它与 OpenAI、Azure OpenAI 和 Vertex AI Gemini 提供的最新 LLM 模型有所不同。

Spring AI 简介

1、概览 Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Spring Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动。 2、Spring AI 的主要概念 首先回顾一下一些关键的领域术语和概念。 Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。 接口 AiClient 就是这样一个抽象,它有两个基本实现:OpenAI 和 Azure OpenAI。 public interface AiClient { default String generate(String message); AiResponse generate(Prompt prompt); } AiClient 为生成函数提供了两个选项。简化版生成函数:generate(String message),使用 String 作为输入和输出,可以避免使用 Prompt 和 AiResponse 类的额外复杂性。 2.1、高级的 Prompt 和 AiResponse 在 AI 领域,Prompt(提示)是指提供给 AI 的文本信息。它由上下文和问题组成,该模型用于生成答案。 从 Spring AI 项目的角度来看,Prompt 是一个参数化 Message 列表。 public class Prompt { private final List<Message> messages; // 构造函数和其他方法 } public interface Message { String getContent(); Map<String, Object> getProperties(); MessageType getMessageType(); } Prompt 使开发人员能够对文本输入进行更多控制。Prompt 模板就是一个很好的例子,它使用预定义文本和占位符集构建。然后,可以使用传递给 Message 构造函数的 Map<String, Object> 值填充它们。