Chat Model API

Chat Model API 使开发人员能够将人工智能支持的聊天完成功能集成到他们的应用程序中。它利用预先训练的语言模型,例如 GPT(生成式预训练变压器),以自然语言对用户输入生成类似人类的响应。

API 通常通过向 AI 模型发送提示或部分对话来工作,然后 AI 模型根据其训练数据和对自然语言模式的理解生成对话的完成或延续。然后,完成的响应将返回到应用程序,应用程序可以将其呈现给用户或将其用于进一步处理。

Spring AI Chat Model API 被设计为一个简单且可移植的接口,用于与各种人工智能模型进行交互,允许开发人员以最少的代码更改在不同模型之间切换。这种设计符合 Spring 的模块化和可互换性理念。

Prompt此外,在输入封装和输出处理等配套类的帮助下ChatResponse,聊天完成 API 统一了与 AI 模型的通信。它管理请求准备和响应解析的复杂性,提供直接且简化的 API 交互。

API 概述

本节提供 Spring AI Chat Completion API 接口和关联类的指南。

ChatModel

这是 ChatModel 接口定义:

public interface ChatClient extends ModelClient<Prompt, ChatResponse> {

    default String call(String message) {// implementation omitted
    }

    @Override
    ChatResponse call(Prompt prompt);
}
  • call 带参数的方法简化了初始使用,避免了更复杂的类String的复杂性。在实际应用程序中,更常见的是使用接受实例并返回 .Prompt ChatResponse call Prompt ChatResponse

StreamingChatModel

以下是 StreamingChatClient 接口定义:

public interface StreamingChatClient extends StreamingModelClient<Prompt, ChatResponse> {
    @Override
    Flux<ChatResponse> stream(Prompt prompt);
}

该stream方法接受Prompt类似于的请求,ChatClient但它使用反应式 Flux API 流式传输响应。

Prompt

Prompt 封装了 Message 对象和可选模型请求选项 ModelRequest 的列表。以下清单显示了 Prompt 类的截断版本,不包括构造函数和其他实用方法:

public class Prompt implements ModelRequest<List<Message>> {

    private final List<Message> messages;

    private ChatOptions modelOptions;

    @Override
    public ChatOptions getOptions() {..}

    @Override
    public List<Message> getInstructions() {...}

    // constructors and utility methods omitted
}

Message

该Message接口封装了 文本消息属性集合(称为)Map和分类(称为)MessageType。接口定义如下:

public interface Message {

   String getContent();

   Map<String, Object> getProperties();

   MessageType getMessageType();
}

该Message接口具有与 AI 模型可以处理的消息类别相对应的各种实现。一些模型,例如 OpenAI 的聊天完成端点,根据对话角色区分消息类别,并由MessageType.

例如,OpenAI 可以识别不同对话角色的消息类别,例如system、或。userfunctionassistant

虽然该术语MessageType可能暗示特定的消息格式,但在这种情况下,它有效地指定了消息在对话中扮演的角色。

对于不使用特定角色的人工智能模型,UserMessage实现充当标准类别,通常代表用户生成的查询或指令。要了解实际应用以及Prompt和之间的关系Message,特别是在这些角色或消息类别的上下文中,请参阅提示部分中的详细说明。

ChatOptions

表示可以传递给 AI 模型的选项。该类ChatOptions是 ModelOptions 的子类,用于定义一些可以传递给 AI 模型的可移植选项。该类ChatOptions定义如下:

public interface ChatOptions extends ModelOptions {

    Float getTemperature();
    void setTemperature(Float temperature);
    Float getTopP();
    void setTopP(Float topP);
    Integer getTopK();
    void setTopK(Integer topK);
}

此外,每个模型特定的 ChatClient/StreamingChatClient 实现都可以有自己的选项,可以传递给 AI 模型。例如,OpenAI Chat Completion 模型有自己的选项,如:presencePenaltyfrequencyPenaltybestOf 等。

这是一个强大的功能,允许开发人员在启动应用程序时使用特定于模型的选项,然后在运行时使用提示请求覆盖它们:

ChatResponse

类的结构ChatResponse如下:

public class ChatResponse implements ModelResponse<Generation> {

    private final ChatResponseMetadata chatResponseMetadata;
    private final List<Generation> generations;

    @Override
    public ChatResponseMetadata getMetadata() {...}

    @Override
    public List<Generation> getResults() {...}

    // other methods omitted
}

ChatResponse 类保存 AI 模型的输出,每个 Generation 实例 都包含单个提示可能产生的多个输出之一。

该类ChatResponse还包含ChatResponseMetadata有关 AI 模型响应的元数据。

Generation

最后,基于 ModelResult 类的扩展类型 Generation 表示输出助手消息响应以及有关此结果的相关元数据:

public class Generation implements ModelResult<AssistantMessage> {

    private AssistantMessage assistantMessage;
    private ChatGenerationMetadata chatGenerationMetadata;

    @Override
    public AssistantMessage getOutput() {...}

    @Override
    public ChatGenerationMetadata getMetadata() {...}

    // other methods omitted
}

可用的实现

Chat Model API

Spring AI Chat Completion API 构建在 Spring AI 之上,Generic Model API 提供聊天特定的抽象和实现。下面的类图说明了 Spring AI Chat Completion API 的主要类和接口。

作者:Jeebiz  创建时间:2024-04-05 21:29
最后编辑:Jeebiz  更新时间:2024-07-06 19:00