聊天模型API為開發人員提供了將人工智能聊天完成功能集成到應用程序中的能力。它利用預訓練的語言模型,如GPT(生成預訓練轉換器),以自然語言對用戶輸入生成類似人類的響應。
API通常通過向人工智能模型發送提示或部分對話來工作,然后人工智能模型根據其訓練數據和對自然語言模式的理解生成對話的完成或繼續。然后將完成的響應返回給應用程序,應用程序可以將其呈現給用戶或用于進一步處理。
Spring人工智能聊天模型API設計為一個簡單便攜的界面,用于與各種人工智能模型交互,使開發人員能夠在不同的模型之間切換,只需最少的代碼更改。這種設計符合Spring的模塊化和互換性理念。
此外,在Prompt用于輸入封裝和ChatResponse用于輸出處理等配套類的幫助下,Chat Model API將與AI Model的通信統一起來。它管理請求準備和響應解析的復雜性,提供了一個直接和簡化的API交互。
您可以在“可用實現”部分找到有關可用實現的更多信息,也可以在“聊天模型比較”部分找到詳細的比較。
API Overview
本節提供了Spring AI Chat Model API接口和相關類的指南。
ChatModel
以下是ChatModel接口定義:
public interface ChatModel extends Model<Prompt, ChatResponse> {default String call(String message) {...}@OverrideChatResponse call(Prompt prompt);
}
帶有String參數的call()方法簡化了初始使用,避免了更復雜的Prompt和ChatResponse類的復雜性。在實際應用中,更常見的是使用call()方法,該方法接受Prompt實例并返回ChatResponse。
StreamingChatModel
以下是StreamingChatModel接口定義:
public interface StreamingChatModel extends StreamingModel<Prompt, ChatResponse> {default Flux<String> stream(String message) {...}@OverrideFlux<ChatResponse> stream(Prompt prompt);
}
stream()方法采用類似于ChatModel的String或Prompt參數,但它使用reactive Flux API來流式傳輸響應。
Prompt
Prompt是一個ModelRequest,它封裝了Message對象和可選模型請求選項的列表。以下列表顯示了Prompt類的截斷版本,不包括構造函數和其他實用方法:
public class Prompt implements ModelRequest<List<Message>> {private final List<Message> messages;private ChatOptions modelOptions;@Overridepublic ChatOptions getOptions() {...}@Overridepublic List<Message> getInstructions() {...}// constructors and utility methods omitted
}
Message
Message接口封裝了Prompt文本內容、元數據屬性集合和稱為MessageType的分類。
接口定義如下:
public interface Content {String getText();Map<String, Object> getMetadata();
}public interface Message extends Content {MessageType getMessageType();
}
多模式消息類型還實現了提供媒體內容對象列表的MediaContent接口。
public interface MediaContent extends Content {Collection<Media> getMedia();}
Message接口有各種實現,對應于AI模型可以處理的消息類別:
聊天完成端點,根據會話角色區分消息類別,由MessageType有效映射。
例如,OpenAI識別不同會話角色的消息類別,如系統、用戶、功能或助手。
雖然術語MessageType可能意味著特定的消息格式,但在這種情況下,它有效地指定了消息在對話中扮演的角色。
對于不使用特定角色的AI模型,UserMessage實現充當標準類別,通常表示用戶生成的查詢或指令。要了解Prompt和Message之間的實際應用和關系,特別是在這些角色或消息類別的背景下,請參閱Prompts部分中的詳細說明。
Chat Options
表示可以傳遞給AI模型的選項。ChatOptions類是ModelOptions的一個子類,用于定義可以傳遞給AI模型的幾個可移植選項。ChatOptions類定義如下:
public interface ChatOptions extends ModelOptions {String getModel();Float getFrequencyPenalty();Integer getMaxTokens();Float getPresencePenalty();List<String> getStopSequences();Float getTemperature();Integer getTopK();Float getTopP();ChatOptions copy();}
此外,每個特定于模型的ChatModel/StreamingChatModel實現都可以有自己的選項,可以傳遞給AI模型。例如,OpenAI聊天完成模型有自己的選項,如logitBias、seed和user。
這是一個強大的功能,允許開發人員在啟動應用程序時使用特定于模型的選項,然后在運行時使用Prompt請求覆蓋它們。
Spring AI提供了一個復雜的系統來配置和使用聊天模型。它允許在啟動時設置默認配置,同時還提供了根據每個請求覆蓋這些設置的靈活性。這種方法使開發人員能夠輕松地使用不同的AI模型并根據需要調整參數,所有這些都在Spring AI框架提供的一致界面內完成。
以下流程圖說明了Spring AI如何處理聊天模型的配置和執行,結合啟動和運行時選項:
啟動和運行時選項的分離允許進行全局配置和特定于請求的調整。
ChatResponse
ChatResponse類的結構如下:
public class ChatResponse implements ModelResponse<Generation> {private final ChatResponseMetadata chatResponseMetadata;private final List<Generation> generations;@Overridepublic ChatResponseMetadata getMetadata() {...}@Overridepublic List<Generation> getResults() {...}// other methods omitted
}
ChatResponse類保存AI模型的輸出,每個Generation實例包含單個提示產生的潛在多個輸出之一。
ChatResponse類還攜帶有關AI模型響應的ChatResponseMetadata元數據。
Generation
最后,Generation類從ModelResult擴展來表示模型輸出(輔助消息)和相關元數據:
public class Generation implements ModelResult<AssistantMessage> {private final AssistantMessage assistantMessage;private ChatGenerationMetadata chatGenerationMetadata;@Overridepublic AssistantMessage getOutput() {...}@Overridepublic ChatGenerationMetadata getMetadata() {...}// other methods omitted
}
Available Implementations
該圖顯示了統一的界面ChatModel和StreamingChatModel,用于與來自不同提供商的各種人工智能聊天模型交互,允許在不同的人工智能服務之間輕松集成和切換,同時為客戶端應用程序維護一致的API。
OpenAI聊天完成(流媒體、多模態和功能調用支持)
Microsoft Azure開放式AI聊天完成(流媒體和函數調用支持)
Ollama聊天完成(流媒體、多模式和功能調用支持)
擁抱面部聊天完成(不支持流媒體)
Google Vertex AI Gemini聊天完成(流媒體、多模態和功能調用支持)
亞馬遜基巖
Mistral AI聊天完成(流媒體和功能調用支持)
人工聊天完成(流媒體和功能調用支持)
Find a detailed comparison of the available Chat Models in th |
Chat Model API
Spring AI Chat Model API構建在Spring AI Generic Model API之上,提供特定于Chat的抽象和實現。這允許在不同的人工智能服務之間輕松集成和切換,同時為客戶端應用程序維護一致的API。下面的類圖說明了Spring AI聊天模型API的主要類和接口。