通用模型API

为了为所有AI模型提供基础,创建了通用模型API。通过遵循通用模式,这使得向Spring AI贡献新的AI模型支持变得容易。以下部分将逐步介绍此API。

类图

spring ai generic model api

模型

Model接口提供了一个用于调用AI模型的通用API。它旨在通过抽象发送请求和接收响应的过程来处理与各种类型的AI模型的交互。该接口使用Java泛型来适应不同类型的请求和响应,增强了跨不同AI模型实现的灵活性和适应性。

接口定义如下

public interface Model<TReq extends ModelRequest<?>, TRes extends ModelResponse<?>> {

	/**
	 * Executes a method call to the AI model.
	 * @param request the request object to be sent to the AI model
	 * @return the response from the AI model
	 */
	TRes call(TReq request);

}

流模型

StreamingModel接口提供了一个用于调用具有流响应的AI模型的通用API。它抽象了发送请求和接收流响应的过程。该接口使用Java泛型来适应不同类型的请求和响应,增强了跨不同AI模型实现的灵活性和适应性。

public interface StreamingModel<TReq extends ModelRequest<?>, TResChunk extends ModelResponse<?>> {

	/**
	 * Executes a method call to the AI model.
	 * @param request the request object to be sent to the AI model
	 * @return the streaming response from the AI model
	 */
	Flux<TResChunk> stream(TReq request);

}

模型请求

ModelRequest接口表示对AI模型的请求。它封装了与AI模型交互所需的信息,包括指令或输入(泛型类型T)和附加模型选项。它提供了一种标准化的方法来向AI模型发送请求,确保包含所有必要的细节,并且可以轻松管理。

public interface ModelRequest<T> {

	/**
	 * Retrieves the instructions or input required by the AI model.
	 * @return the instructions or input required by the AI model
	 */
	T getInstructions(); // required input

	/**
	 * Retrieves the customizable options for AI model interactions.
	 * @return the customizable options for AI model interactions
	 */
	ModelOptions getOptions();

}

模型选项

ModelOptions接口表示AI模型交互的可自定义选项。此标记接口允许指定各种设置和参数,这些设置和参数可以影响AI模型的行为和输出。它旨在为不同的AI场景提供灵活性和适应性,确保可以根据特定要求微调AI模型。

public interface ModelOptions {

}

模型响应

ModelResponse接口表示从AI模型接收到的响应。此接口提供方法来访问AI模型生成的主要结果或结果列表,以及响应元数据。它作为一种标准化的方法来封装和管理AI模型的输出,确保轻松检索和处理生成的信息。

public interface ModelResponse<T extends ModelResult<?>> {

	/**
	 * Retrieves the result of the AI model.
	 * @return the result generated by the AI model
	 */
	T getResult();

	/**
	 * Retrieves the list of generated outputs by the AI model.
	 * @return the list of generated outputs
	 */
	List<T> getResults();

	/**
	 * Retrieves the response metadata associated with the AI model's response.
	 * @return the response metadata
	 */
	ResponseMetadata getMetadata();

}

模型结果

ModelResult接口提供方法来访问AI模型的主要输出以及与此结果关联的元数据。它旨在提供一种标准化且全面的方法来处理和解释AI模型生成的输出。

public interface ModelResult<T> {

	/**
	 * Retrieves the output generated by the AI model.
	 * @return the output generated by the AI model
	 */
	T getOutput();

	/**
	 * Retrieves the metadata associated with the result of an AI model.
	 * @return the metadata associated with the result
	 */
	ResultMetadata getMetadata();

}