アップグレードノート
1.0.0-SNAPSHOT へのアップグレード
概要
1.0.0-SNAPSHOT バージョンでは、アーティファクト ID、パッケージ名、モジュール構造に大幅な変更が加えられています。このセクションでは、SNAPSHOT バージョンの使用に関する具体的なガイダンスを提供します。
スナップショットリポジトリの追加
1.0.0-SNAPSHOT バージョンを使用するには、スナップショットリポジトリをビルドファイルに追加する必要があります。詳細な手順については、「入門」ガイドのスナップショット - スナップショットリポジトリの追加セクションを参照してください。
アップデート依存関係管理
ビルド構成で、Spring AI BOM バージョンを 1.0.0-SNAPSHOT
に更新します。依存関係管理を構成する詳細な手順については、「入門ガイド」の依存関係管理セクションを参照してください。
アーティファクト ID、パッケージ、モジュールの変更
1.0.0-SNAPSHOT には、アーティファクト ID、パッケージ名、モジュール構造の変更が含まれています。
詳細について: - 一般的なアーティファクト ID の変更 - 一般的なパッケージの変更 - 共通モジュール構造
1.0.0-RC1 へのアップグレード
OpenRewrite レシピを使えば、1.0.0-RC1 へのアップグレードプロセスを自動化できます。このレシピは、このバージョンに必要な多くのコード変更を適用できます。レシピと使用方法は Arconia Spring AI 移行 [GitHub] (英語) を参照してください。
重大な変更
チャットクライアントとアドバイザー
エンドユーザーコードに影響を与える主な変更は次のとおりです。
VectorStoreChatMemoryAdvisor
の場合:定数
CHAT_MEMORY_RETRIEVE_SIZE_KEY
の名前がTOP_K
に変更されました。定数
DEFAULT_CHAT_MEMORY_RESPONSE_SIZE
(値: 100) の名前がDEFAULT_TOP_K
に変更され、新しいデフォルト値は 20 になりました。
定数
CHAT_MEMORY_CONVERSATION_ID_KEY
はCONVERSATION_ID
に名前が変更され、AbstractChatMemoryAdvisor
からChatMemory
インターフェースに移動されました。インポート時にorg.springframework.ai.chat.memory.ChatMemory.CONVERSATION_ID
を使用するように更新してください。
アドバイザーの自己完結型テンプレート
プロンプト拡張を実行する組み込みアドバイザーが、自己完結型のテンプレートを使用するように更新されました。これにより、各アドバイザーは、他のアドバイザーのテンプレート化やプロンプト決定に影響を与えず、また影響を受けずにテンプレート化操作を実行できるようになります。
次のアドバイザーにカスタムテンプレートを提供していた場合は、必要なプレースホルダーがすべて含まれるようにテンプレートを更新する必要があります。
QuestionAnswerAdvisor
では、次のプレースホルダーを含むテンプレートが必要です ( 詳細については、こちらを参照してください)。ユーザーの質問を受け取るための
query
プレースホルダー。取得したコンテキストを受け取るための
question_answer_context
プレースホルダー。
PromptChatMemoryAdvisor
では、次のプレースホルダーを含むテンプレートが必要です ( 詳細については、こちらを参照してください)。元のシステムメッセージを受信するための
instructions
プレースホルダー。取得した会話メモリを受け取るための
memory
プレースホルダー。
VectorStoreChatMemoryAdvisor
では、次のプレースホルダーを含むテンプレートが必要です ( 詳細については、こちらを参照してください)。元のシステムメッセージを受信するための
instructions
プレースホルダー。取得した会話メモリを受け取るための
long_term_memory
プレースホルダー。
可観測性
トレースの代わりにログを使用するようにコンテンツ監視をリファクタリングしました (ca843e8 [GitHub] (英語) )
コンテンツ監視フィルターをログハンドラーに置き換えました
目的をより適切に反映するために、構成プロパティの名前を変更しました。
include-prompt
→log-prompt
include-completion
→log-completion
include-query-response
→log-query-response
トレース認識ログ用の
TracingAwareLoggingObservationHandler
を追加micrometer-tracing-bridge-otel
をmicrometer-tracing
に置き換えましたイベントベースのトレースを削除し、直接ログ記録を導入しました
OTel SDK への直接的な依存関係を削除しました
観測プロパティで
includePrompt
をlogPrompt
に名前変更しました (ChatClientBuilderProperties
、ChatObservationProperties
、ImageObservationProperties
)
チャットメモリリポジトリモジュールと自動構成の名前変更
コードベース全体にリポジトリサフィックスを追加することで、チャットメモリコンポーネントの命名パターンを標準化しました。この変更は Cassandra、JDBC、Neo4j の実装に影響し、アーティファクト ID、Java パッケージ名、クラス名の明確化に役立ちます。
アーティファクト Id
すべてのメモリ関連のアーティファクトは、一貫したパターンに従うようになりました。
spring-ai-model-chat-memory-
→spring-ai-model-chat-memory-repository-
spring-ai-autoconfigure-model-chat-memory-
→spring-ai-autoconfigure-model-chat-memory-repository-
spring-ai-starter-model-chat-memory-
→spring-ai-starter-model-chat-memory-repository-
Java パッケージ
パッケージパスに
.repository.
セグメントが含まれるようになりましたサンプル:
org.springframework.ai.chat.memory.jdbc
→org.springframework.ai.chat.memory.repository.jdbc
構成クラス
メイン自動構成クラスは
Repository
サフィックスを使用するようになりましたサンプル:
JdbcChatMemoryAutoConfiguration
→JdbcChatMemoryRepositoryAutoConfiguration
プロパティ
構成プロパティの名前が
spring.ai.chat.memory.<storage>…
からspring.ai.chat.memory.repository.<storage>…
に変更されました
メッセージアグリゲーターリファクタリング
変更
MessageAggregator
クラスは、spring-ai-client-chat
モジュールのorg.springframework.ai.chat.model
パッケージからspring-ai-model
モジュールに移動されました。(同じパッケージ名)aggregateChatClientResponse
メソッドはMessageAggregator
から削除され、org.springframework.ai.chat.client
パッケージの新しいクラスChatClientMessageAggregator
に移動されました。
移行ガイド
MessageAggregator
の aggregateChatClientResponse
メソッドを直接使用していた場合は、代わりに新しい ChatClientMessageAggregator
クラスを使用する必要があります。
// Before
new MessageAggregator().aggregateChatClientResponse(chatClientResponses, aggregationHandler);
// After
new ChatClientMessageAggregator().aggregateChatClientResponse(chatClientResponses, aggregationHandler);
適切なインポートを追加することを忘れないでください。
import org.springframework.ai.chat.client.ChatClientMessageAggregator;
ワトソン
Watson AI モデルは、新しいチャット生成モデルが利用可能になったため、時代遅れとみなされる古いテキスト生成に基づいていたため削除されました。Watson が Spring AI の将来のバージョンで再び登場することを期待しています。
ベクトルストアを削除しました
HanaDB ベクトルストアの自動構成を削除しました (f3b4624 [GitHub] (英語) )
メモリ管理
CassandraChatMemory 実装を削除しました (11e3c8f [GitHub] (英語) )
チャットメモリアドバイザー階層を簡素化し、非推奨の API を削除しました (848a3fd [GitHub] (英語) )
JdbcChatMemory の非推奨を削除 (356a68f [GitHub] (英語) )
チャットメモリリポジトリの成果物をわかりやすくリファクタリングしました (2d517ee [GitHub] (英語) )
チャットメモリリポジトリの自動構成と Spring Boot スターターをわかりやすくリファクタリングしました (f6dba1b [GitHub] (英語) )
メッセージとテンプレート API
非推奨の UserMessage コンストラクターを削除しました (06edee4 [GitHub] (英語) )
非推奨の PromptTemplate コンストラクターを削除しました (722c77e [GitHub] (英語) )
メディアから非推奨のメソッドを削除しました (228ef10 [GitHub] (英語) )
リファクタリングされた StTemplateRenderer: supportStFunctions を validateStFunctions に名前変更しました ( 0e15197 [GitHub] (英語) )
移動後に残った TemplateRender インターフェースを削除しました ( 52675d8 [GitHub] (英語) )
追加のクライアント API の変更
ChatClient とアドバイザーの非推奨を削除 (4fe74d8 [GitHub] (英語) )
OllamaApi と AnthropicApi から非推奨を削除しました (46be898 [GitHub] (英語) )
パッケージ構造の変更
spring-ai-model のパッケージ間の依存関係の循環を削除しました (ebfa5b9 [GitHub] (英語) )
MessageAggregator を spring-ai-model モジュールに移動しました (54e5c07 [GitHub] (英語) )
依存関係
spring-ai-openai で使用されていない json-path 依存関係を削除しました (9de13d1 [GitHub] (英語) )
動作の変更
Azure OpenAI
クリーンな自動構成を備えた Azure OpenAI 用の Entra ID アイデンティティ管理を追加しました (3dc86d3 [GitHub] (英語) )
一般的なクリーンアップ
すべてのコードの非推奨を削除しました(76bee8c [GitHub] (英語) )および (b6ce7f3 [GitHub] (英語) )
1.0.0-M8 へのアップグレード
OpenRewrite レシピを使えば、1.0.0-M8 へのアップグレードプロセスを自動化できます。このレシピは、このバージョンに必要な多くのコード変更を適用できます。レシピと使用方法は Arconia Spring AI 移行 [GitHub] (英語) を参照してください。
重大な変更
Spring AI 1.0 M7 から 1.0 M8 へのアップグレード時に、ツールコールバックを登録していたユーザーは、ツール呼び出し機能がサイレントエラーとなる重大な変更に遭遇しています。これは特に、非推奨の tools()
メソッドを使用していたコードに影響を及ぼしています。
サンプル
以下は、M7 では動作していたが、M8 では期待どおりに動作しなくなったコードの例です。
// This worked in M7 but silently fails in M8
ChatClient chatClient = new OpenAiChatClient(api)
.tools(List.of(
new Tool("get_current_weather", "Get the current weather in a given location",
new ToolSpecification.ToolParameter("location", "The city and state, e.g. San Francisco, CA", true))
))
.toolCallbacks(List.of(
new ToolCallback("get_current_weather", (toolName, params) -> {
// Weather retrieval logic
return Map.of("temperature", 72, "unit", "fahrenheit", "description", "Sunny");
})
));
ソリューション
解決策としては、非推奨の tools()
メソッドの代わりに toolSpecifications()
メソッドを使用することです。
// This works in M8
ChatClient chatClient = new OpenAiChatClient(api)
.toolSpecifications(List.of(
new Tool("get_current_weather", "Get the current weather in a given location",
new ToolSpecification.ToolParameter("location", "The city and state, e.g. San Francisco, CA", true))
))
.toolCallbacks(List.of(
new ToolCallback("get_current_weather", (toolName, params) -> {
// Weather retrieval logic
return Map.of("temperature", 72, "unit", "fahrenheit", "description", "Sunny");
})
));
削除された実装と API
メモリ管理
CassandraChatMemory 実装を削除しました (11e3c8f [GitHub] (英語) )
チャットメモリアドバイザー階層を簡素化し、非推奨の API を削除しました (848a3fd [GitHub] (英語) )
JdbcChatMemory の非推奨を削除 (356a68f [GitHub] (英語) )
チャットメモリリポジトリの成果物をわかりやすくリファクタリングしました (2d517ee [GitHub] (英語) )
チャットメモリリポジトリの自動構成と Spring Boot スターターをわかりやすくリファクタリングしました (f6dba1b [GitHub] (英語) )
クライアント API
ChatClient とアドバイザーの非推奨を削除 (4fe74d8 [GitHub] (英語) )
チャットクライアントツールの呼び出しに関する重大な変更 (5b7849d [GitHub] (英語) )
OllamaApi と AnthropicApi から非推奨を削除しました (46be898 [GitHub] (英語) )
メッセージとテンプレート API
非推奨の UserMessage コンストラクターを削除しました (06edee4 [GitHub] (英語) )
非推奨の PromptTemplate コンストラクターを削除しました (722c77e [GitHub] (英語) )
メディアから非推奨のメソッドを削除しました (228ef10 [GitHub] (英語) )
リファクタリングされた StTemplateRenderer: supportStFunctions を validateStFunctions に名前変更しました ( 0e15197 [GitHub] (英語) )
移動後に残った TemplateRender インターフェースを削除しました ( 52675d8 [GitHub] (英語) )
モデルの実装
Watson テキスト生成モデルを削除 (9e71b16 [GitHub] (英語) )
Qianfan コードを削除しました (bfcaad7 [GitHub] (英語) )
HanaDB ベクトルストアの自動構成を削除しました (f3b4624 [GitHub] (英語) )
OpenAiApi からディープシークオプションを削除しました (59b36d1 [GitHub] (英語) )
パッケージ構造の変更
spring-ai-model のパッケージ間の依存関係の循環を削除しました (ebfa5b9 [GitHub] (英語) )
MessageAggregator を spring-ai-model モジュールに移動しました (54e5c07 [GitHub] (英語) )
依存関係
spring-ai-openai で使用されていない json-path 依存関係を削除しました (9de13d1 [GitHub] (英語) )
動作の変更
可観測性
トレースの代わりにログを使用するようにコンテンツ監視をリファクタリングしました (ca843e8 [GitHub] (英語) )
コンテンツ監視フィルターをログハンドラーに置き換えました
目的をより適切に反映するために、構成プロパティの名前を変更しました。
include-prompt
→log-prompt
include-completion
→log-completion
include-query-response
→log-query-response
トレース認識ログ用の
TracingAwareLoggingObservationHandler
を追加micrometer-tracing-bridge-otel
をmicrometer-tracing
に置き換えましたイベントベースのトレースを削除し、直接ログ記録を導入しました
OTel SDK への直接的な依存関係を削除しました
観測プロパティで
includePrompt
をlogPrompt
に名前変更しました (ChatClientBuilderProperties
、ChatObservationProperties
、ImageObservationProperties
)
Azure OpenAI
クリーンな自動構成を備えた Azure OpenAI 用の Entra ID アイデンティティ管理を追加しました (3dc86d3 [GitHub] (英語) )
一般的なクリーンアップ
1.0.0-M8 からすべての非推奨を削除しました (76bee8c [GitHub] (英語) )
一般的な廃止予定のクリーンアップ (b6ce7f3 [GitHub] (英語) )
1.0.0-M7 へのアップグレード
変更の概要
Spring AI 1.0.0-M7 は、RC1 および GA リリース前の最後のマイルストーンリリースです。アーティファクト ID、パッケージ名、モジュール構造にいくつかの重要な変更が導入されており、最終リリースでも維持されます。
アーティファクト ID、パッケージ、モジュールの変更
1.0.0-M7 には 1.0.0-SNAPSHOT と同じ構造変更が含まれています。
詳細について: - 一般的なアーティファクト ID の変更 - 一般的なパッケージの変更 - 共通モジュール構造
MCP Java SDK の 0.9.0 へのアップグレード
Spring AI 1.0.0-M7 は現在、MCP Java SDK バージョン 0.9.0 を使用しています。このバージョンには、以前のバージョンからの大幅な変更が含まれています。アプリケーションで MCP を使用している場合は、これらの変更に対応するためにコードを更新する必要があります。
主な変更点は次のとおりです。
インターフェース名の変更
ClientMcpTransport
→McpClientTransport
ServerMcpTransport
→McpServerTransport
DefaultMcpSession
→McpClientSession
またはMcpServerSession
すべての
*Registration
クラス→*Specification
クラス
サーバー作成の変更
ServerMcpTransport
の代わりにMcpServerTransportProvider
を使用する
// Before
ServerMcpTransport transport = new WebFluxSseServerTransport(objectMapper, "/mcp/message");
var server = McpServer.sync(transport)
.serverInfo("my-server", "1.0.0")
.build();
// After
McpServerTransportProvider transportProvider = new WebFluxSseServerTransportProvider(objectMapper, "/mcp/message");
var server = McpServer.sync(transportProvider)
.serverInfo("my-server", "1.0.0")
.build();
ハンドラーシグネチャーの変更
すべてのハンドラーは、最初の引数として exchange
パラメーターを受け取るようになりました。
// Before
.tool(calculatorTool, args -> new CallToolResult("Result: " + calculate(args)))
// After
.tool(calculatorTool, (exchange, args) -> new CallToolResult("Result: " + calculate(args)))
Exchange 経由のクライアントインタラクション
以前はサーバー上で使用可能だったメソッドは、交換オブジェクトを介してアクセスされるようになりました。
// Before
ClientCapabilities capabilities = server.getClientCapabilities();
CreateMessageResult result = server.createMessage(new CreateMessageRequest(...));
// After
ClientCapabilities capabilities = exchange.getClientCapabilities();
CreateMessageResult result = exchange.createMessage(new CreateMessageRequest(...));
ルート変更ハンドラー
// Before
.rootsChangeConsumers(List.of(
roots -> System.out.println("Roots changed: " + roots)
))
// After
.rootsChangeHandlers(List.of(
(exchange, roots) -> System.out.println("Roots changed: " + roots)
))
MCP コードの移行に関する完全なガイドについては、MCP 移行ガイド [GitHub] (英語) を参照してください。
モデルの自動構成の有効化 / 無効化
モデルの自動構成を有効 / 無効にするための以前の構成プロパティは削除されました。
spring.ai.<provider>.chat.enabled
spring.ai.<provider>.embedding.enabled
spring.ai.<provider>.image.enabled
spring.ai.<provider>.moderation.enabled
デフォルトでは、モデルプロバイダ(例: OpenAI、Ollama)がクラスパス上に見つかった場合、関連するモデル型(チャット、埋め込みなど)の自動構成が有効になります。同じモデル型に複数のプロバイダが存在する場合(例: spring-ai-openai-spring-boot-starter
と spring-ai-ollama-spring-boot-starter
の両方)、以下のプロパティを使用して、どのプロバイダの自動構成を有効にするかを選択できます。これにより、特定のモデル型に対して他のプロバイダの自動構成が実質的に無効になります。
特定のモデル型に対する自動構成を完全に無効にするには、プロバイダーが 1 つしか存在しない場合でも、対応するプロパティをクラスパス上のどのプロバイダーとも一致しない値 (例: none
または disabled
) に設定します。
既知のプロバイダー値のリストについては、SpringAIModels
[GitHub] (英語) 列挙を参照できます。
spring.ai.model.audio.speech=<model-provider|none>
spring.ai.model.audio.transcription=<model-provider|none>
spring.ai.model.chat=<model-provider|none>
spring.ai.model.embedding=<model-provider|none>
spring.ai.model.embedding.multimodal=<model-provider|none>
spring.ai.model.embedding.text=<model-provider|none>
spring.ai.model.image=<model-provider|none>
spring.ai.model.moderation=<model-provider|none>
AI を使ったアップグレードの自動化
提供されたプロンプトを使用して、Claude コード CLI ツールを使用して 1.0.0-M7 へのアップグレードプロセスを自動化できます。
Claude コード CLI ツール (英語) をダウンロード
update-to-m7.txt [GitHub] (英語) ファイルからプロンプトをコピーします
プロンプトを Claude コード CLI に貼り付けます
AI がプロジェクトを分析し、必要な変更を加えます
自動アップグレードプロンプトは現在、アーティファクト ID の変更、パッケージの再配置、モジュール構造の変更に対応していますが、MCP 0.9.0 へのアップグレードに関する自動変更はまだ含まれていません。MCP をご利用の場合は、MCP Java SDK アップグレードセクションのガイダンスに従ってコードを手動で更新する必要があります。 |
バージョン間での共通の変更点
アーティファクト ID の変更
Spring AI スターターアーティファクトの命名パターンが変更されました。以下のパターンに従って依存関係を更新する必要があります。
モデルスターター:
spring-ai-{model}-spring-boot-starter
→spring-ai-starter-model-{model}
ベクトルストアスターター:
spring-ai-{store}-store-spring-boot-starter
→spring-ai-starter-vector-store-{store}
MCP スターター:
spring-ai-mcp-{type}-spring-boot-starter
→spring-ai-starter-mcp-{type}
サンプル
Maven
Gradle
<!-- BEFORE -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- AFTER -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
// BEFORE
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
implementation 'org.springframework.ai:spring-ai-redis-store-spring-boot-starter'
// AFTER
implementation 'org.springframework.ai:spring-ai-starter-model-openai'
implementation 'org.springframework.ai:spring-ai-starter-vector-store-redis'
Spring AI 自動構成アーティファクトの変更
Spring AI 自動構成は、単一のモノリシックアーティファクトから、モデル、ベクトルストア、その他のコンポーネントごとに個別の自動構成アーティファクトに変更されました。この変更は、Google プロトコルバッファー、Google RPC などの異なるバージョンの依存ライブラリが競合することによる影響を最小限に抑えるために行われました。自動構成をコンポーネント固有のアーティファクトに分離することで、不要な依存関係が取り込まれるのを防ぎ、アプリケーションでのバージョン競合のリスクを軽減できます。
オリジナルのモノリシックアーティファクトは利用できなくなりました。
<!-- NO LONGER AVAILABLE -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-autoconfigure</artifactId>
<version>${project.version}</version>
</dependency>
代わりに、各コンポーネントには次のパターンに従う独自の自動構成アーティファクトが含まれるようになりました。
モデルの自動構成:
spring-ai-autoconfigure-model-{model}
ベクトルストアの自動構成:
spring-ai-autoconfigure-vector-store-{store}
MCP 自動構成:
spring-ai-autoconfigure-mcp-{type}
新しい自動構成アーティファクトの例
モデル
ベクトルストア
MCP
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-openai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-anthropic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-vertex-ai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-pgvector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-chroma</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-mcp-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-mcp-server</artifactId>
</dependency>
ほとんどの場合、これらの自動構成依存関係を明示的に追加する必要はありません。対応するスターター依存関係を使用すると、それらは推移的に含まれます。 |
パッケージ名の変更
IDE は、新しいパッケージの場所へのリファクタリングを支援する必要があります。
KeywordMetadataEnricher
およびSummaryMetadataEnricher
はorg.springframework.ai.transformer
からorg.springframework.ai.chat.transformer
に移動しました。Content
、MediaContent
、Media
はorg.springframework.ai.model
からorg.springframework.ai.content
に移動しました。
モジュール構造
このプロジェクトでは、モジュールとアーティファクトの構造に大幅な変更が行われました。以前は spring-ai-core
にすべての中心的なインターフェースが含まれていましたが、現在はアプリケーションにおける不要な依存関係を削減するため、専用のドメインモジュールに分割されています。
spring-ai-commons
他の Spring AI モジュールに依存しないベースモジュール。以下が含まれます: - コアドメインモデル(Document
、TextSplitter
) - JSON ユーティリティとリソース処理 - 構造化ログと可観測性のサポート
spring-ai-model
AI 機能の抽象化を提供する: - ChatModel
、EmbeddingModel
、ImageModel
のようなインターフェース - メッセージ型とプロンプトテンプレート - 関数呼び出しフレームワーク(ToolDefinition
、ToolCallback
) - コンテンツフィルタリングと監視のサポート
spring-ai-vector-store
統一されたベクトルデータベース抽象化: - 類似検索のための VectorStore
インターフェース - SQL のような表現による高度なフィルタリング - メモリ内使用のための SimpleVectorStore
- 埋め込みのバッチ処理サポート
spring-ai-client-chat
高レベルの会話型 AI API: - ChatClient
インターフェース - ChatMemory
による会話の持続 - OutputConverter
によるレスポンス変換 - アドバイザーベースのインターセプト - 同期およびリアクティブストリーミングのサポート
spring-ai-advisors-vector-store
RAG のベクトルストアとチャットを橋渡しします: - QuestionAnswerAdvisor
: プロンプトにコンテキストを挿入します - VectorStoreChatMemoryAdvisor
: 会話履歴を保存 / 取得します
spring-ai-model-chat-memory-cassandra
ChatMemory
の Apache Cassandra 永続性: - CassandraChatMemory
実装 - Cassandra の QueryBuilder を使用した型安全な CQL ==== spring-ai-model-chat-memory-neo4j
チャット会話のための Neo4j グラフデータベースの永続性。
spring-ai-rag
検索拡張生成のための包括的なフレームワーク: - RAG パイプラインのモジュラーアーキテクチャ - メインエントリポイントとしての RetrievalAugmentationAdvisor
- 構成可能なコンポーネントを備えた関数型プログラミングの原則
依存関係の構造
依存関係の階層は次のように要約できます。
spring-ai-commons
(財団)spring-ai-model
(コモンズに依存する)spring-ai-vector-store
およびspring-ai-client-chat
(どちらもモデルによって異なります)spring-ai-advisors-vector-store
およびspring-ai-rag
(クライアントチャットとベクトルストアの両方に依存する)spring-ai-model-chat-memory-*
モジュール (クライアントチャットに依存する)
ToolContext の変更
ToolContext
クラスは、明示的および暗黙的なツール解決をサポートするように拡張されました。ツールは以下の方法で指定できます。
明示的に含まれる : プロンプトで明示的にリクエストされ、モデルの呼び出しに含まれるツール。
暗黙的に利用可能 : 実行時の動的解決に使用できるツールですが、明示的にリクエストされない限り、モデルへの呼び出しには含まれません。
1.0.0-M7 以降、ツールは、プロンプトで明示的にリクエストされた場合、または呼び出しに明示的に含まれている場合にのみ、モデルの呼び出しに含まれます。
さらに、ToolContext
クラスは final クラスとしてマークされ、拡張できなくなりました。このクラスは元々サブクラス化されることを想定していませんでした。ToolContext
をインスタンス化する際に必要なコンテキストデータはすべて、Map<String, Object>
の形式で追加できます。詳細については、[ ドキュメント ]( docs.spring.io/spring-ai/reference/api/tools.html#_tool_context ) を参照してください。
1.0.0-M6 へのアップグレード
使用インターフェースと DefaultUsage 実装の変更
Usage
インターフェースとそのデフォルト実装 DefaultUsage
には、次の変更が加えられました。
メソッド名の変更:
getGenerationTokens()
はgetCompletionTokens()
になりました
型の変更:
DefaultUsage
のすべてのトークンカウントフィールドがLong
からInteger
に変更されました。promptTokens
completionTokens
(旧generationTokens
)totalTokens
必要なアクション
getGenerationTokens()
へのすべての呼び出しをgetCompletionTokens()
に置き換えますDefaultUsage
コンストラクター呼び出しを更新します。
// Old (M5) new DefaultUsage(Long promptTokens, Long generationTokens, Long totalTokens) // New (M6) new DefaultUsage(Integer promptTokens, Integer completionTokens, Integer totalTokens)
使用方法の詳細については、こちらを参照してください。 |
ツール呼び出しにおける FunctionCallingOptions の使用箇所の変更
各 ChatModel
インスタンスは、構築時に、モデルの呼び出しに使用されるデフォルトのツールを構成するために使用できるオプションの ChatOptions
または FunctionCallingOptions
インスタンスを受け入れます。
1.0.0-M6 以前:
デフォルトの
FunctionCallingOptions
インスタンスのfunctions()
メソッドを介して渡されたツールは、そのChatModel
インスタンスからのモデルへの各呼び出しに含まれており、ランタイムオプションによって上書きされている可能性があります。デフォルトの
FunctionCallingOptions
インスタンスのfunctionCallbacks()
メソッドを介して渡されるツールは、実行時の動的解決 ( ツール解決を参照) でのみ使用可能になり、明示的にリクエストされない限り、モデルへの呼び出しには含まれません。
1.0.0-M6 の開始:
functions()
メソッドまたはデフォルトのFunctionCallingOptions
インスタンスのfunctionCallbacks()
を介して渡されるすべてのツールは、同じ方法で処理されるようになりました。つまり、そのChatModel
インスタンスからのモデルへの各呼び出しに含まれ、ランタイムオプションによって上書きされる可能性があります。これにより、モデルへの呼び出しにツールが含まれる方法に一貫性が保たれ、functionCallbacks()
と他のすべてのオプションの動作の違いによる混乱が回避されます。
ツールを実行時の動的解決に利用できるようにし、明示的にリクエストされた場合にのみモデルへのチャットリクエストに含める場合は、ツール解決で説明されているいずれかの戦略を使用できます。
1.0.0-M6 では、ツール呼び出しを処理するための新しい API が導入されました。上記のシナリオを除き、すべてのシナリオにおいて古い API との後方互換性が維持されています。古い API は引き続き利用可能ですが、非推奨となり、1.0.0-M7 で削除されます。 |
廃止された Amazon Bedrock チャットモデルの削除
1.0.0-M6 以降、Spring AI は Spring AI のすべてのチャット会話実装に Amazon、Bedrock の Converse API を使用するようになりました。Amazon、Bedrock のすべてのチャットモデルは、Cohere と Titan の埋め込みモデルを除き、削除されました。
チャットモデルの使用については、Bedrock コンバースのドキュメントを参照してください。 |
依存関係管理に Spring Boot 3.4.2 を使用するように変更
Spring AI は、依存関係管理に Spring Boot 3.4.2 を使用するようにアップデートされました。Spring Boot 3.4.2 で管理されている依存関係については、こちら [GitHub] (英語) を参照してください。
必要なアクション
Spring Boot 3.4.2 にアップグレードする場合は、REST クライアントの設定に必要な変更について、このドキュメントを必ず参照してください。特に、クラスパスに HTTP クライアントライブラリがない場合、以前は
SimpleClientHttpRequestFactory
が使用されていた場所がJdkClientHttpRequestFactory
に置き換えられる可能性があります。SimpleClientHttpRequestFactory
を使用するように切り替えるには、spring.http.client.factory=simple
を設定する必要があります。異なるバージョンの Spring Boot (たとえば Spring Boot 3.3.x) を使用しており、依存関係の特定のバージョンが必要な場合は、ビルド構成でそれをオーバーライドできます。
ベクトルストア API の変更
バージョン 1.0.0-M6 では、VectorStore
インターフェースの delete
メソッドが、Optional<Boolean>
を返すのではなく、void 操作になるように変更されました。以前のコードで削除操作の戻り値をチェックしていた場合は、このチェックを削除する必要があります。削除が失敗した場合、この操作は例外をスローするようになり、より直接的なエラー処理が可能になります。
1.0.0.M5 へのアップグレード
ベクトルビルダーは一貫性を保つためにリファクタリングされました。
現在の VectorStore 実装コンストラクターは非推奨になっています。ビルダーパターンを使用してください。
VectorStore 実装パッケージは、アーティファクト間での競合を回避するために、一意のパッケージ名に移動されました。たとえば、
org.springframework.ai.vectorstore
からorg.springframework.ai.pgvector.vectorstore
へ。
1.0.0.RC3 へのアップグレード
ポータブルチャットオプション(
frequencyPenalty
、presencePenalty
、temperature
、topP
)の型がFloat
からDouble
に変更されました。
1.0.0.M2 へのアップグレード
Chroma ベクトルストアの構成プレフィックスは、他のベクトルストアの命名規則に合わせるために、
spring.ai.vectorstore.chroma.store
からspring.ai.vectorstore.chroma
に変更されました。スキーマを初期化できるベクトルストアの
initialize-schema
プロパティのデフォルト値が、false
に設定されました。つまり、アプリケーションの起動時にスキーマが作成される場合、アプリケーションは、サポートされているベクトルストアでスキーマの初期化を明示的にオプトインする必要があります。すべてのベクトルストアがこのプロパティをサポートしているわけではありません。詳細については、対応するベクトルストアのドキュメントを参照してください。現在initialize-schema
プロパティをサポートしていないベクトルストアは次のとおりです。Hana
Pinecone
Weaviate
Bedrock Jurassic 2 では、チャットオプション
countPenalty
、frequencyPenalty
、presencePenalty
の名前がcountPenaltyOptions
、frequencyPenaltyOptions
、presencePenaltyOptions
に変更されました。さらに、チャットオプションstopSequences
の型がString[]
からList<String>
に変更されました。Azure、OpenAI では、チャットオプション
frequencyPenalty
およびpresencePenalty
の型が、他のすべての実装と一致するように、Double
からFloat
に変更されました。
1.0.0.M1 へのアップグレード
1.0.0 M1 のリリースに向けて、いくつかの重大な変更を加えました。申し訳ありませんが、これは最善の策です。
ChatClient の変更点
大きな変更が行われ、旧 ChatClient
の機能が ChatModel
に移行しました。新 ChatClient
は ChatModel
のインスタンスを使用するようになりました。これは、Spring エコシステム内の他のクライアントクラス(RestClient
、WebClient
、JdbcClient
など)と同様のスタイルでプロンプトを作成・実行するための Fluent API をサポートするためです。Fluent API の詳細については、[JavaDoc] ( ドキュメント ) を参照してください。正式なリファレンスドキュメントは近日公開予定です。
旧 ModelClient
を Model
に改名し、実装クラスの名前も変更しました。たとえば、ImageClient
は ImageModel
に変更されました。Model
実装は、Spring AI API と基盤となる AI モデル API 間の変換を行う移植性レイヤーを表しています。
新しいパッケージ model
には、あらゆる入出力データ型の組み合わせに対応した AI モデルクライアントの作成をサポートするインターフェースと基本クラスが含まれています。現在、チャットモデルとイメージモデルのパッケージで実装されています。埋め込みパッケージも近日中にこの新しいモデルにアップデートする予定です。
新しい「ポータブルオプション」設計パターン。ModelCall
は、様々なチャットベースの AI モデル間で可能な限り高い移植性を提供することを目的としています。共通の生成オプションセットと、モデルプロバイダー固有のオプションがあります。一種の「ダックタイピング」アプローチが採用されています。モデルパッケージ内の ModelOptions
は、このクラスの実装がモデルのオプションを提供することを示すマーカーインターフェースです。すべての text → image ImageModel
実装に共通するポータブルオプションを定義するサブインターフェースである ImageOptions
を参照してください。そして、StabilityAiImageOptions
と OpenAiImageOptions
は、各モデルプロバイダー固有のオプションを提供します。すべてのオプションクラスは、Fluent API ビルダーによって作成され、すべてポータブルな ImageModel
API に渡すことができます。これらのオプションデータ型は、ImageModel
実装の自動構成 / 構成プロパティで使用されます。
アーティファクト名の変更
POM アーティファクト名を変更しました: - spring-ai-qdrant → spring-ai-qdrant-store - spring-ai-cassandra → spring-ai-cassandra-store - spring-ai-pinecone → spring-ai-pinecone-store - spring-ai-redis → spring-ai-redis-store - spring-ai-qdrant → spring-ai-qdrant-store - spring-ai-gemfire → spring-ai-gemfire-store - spring-ai-azure-vector-store-spring-boot-starter → spring-ai-azure-store-spring-boot-starter - spring-ai-redis-spring-boot-starter → spring-ai-starter-vector-store-redis
0.8.1 へのアップグレード
以前の spring-ai-vertex-ai
は spring-ai-vertex-ai-palm2
に、spring-ai-vertex-ai-spring-boot-starter
は spring-ai-vertex-ai-palm2-spring-boot-starter
に名前が変更されました。
依存関係を次から変更する必要があります
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai</artifactId>
</dependency>
To
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2</artifactId>
</dependency>
Palm2 モデルに関連する Boot スターター
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-spring-boot-starter</artifactId>
</dependency>
to
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2-spring-boot-starter</artifactId>
</dependency>
名前変更されたクラス (01.03.2024)
VertexAiApi → VertexAiPalm2Api
VertexAiClientChat → VertexAiPalm2ChatClient
VertexAiEmbeddingClient → VertexAiPalm2EmbeddingClient
VertexAiChatOptions → VertexAiPalm2ChatOptions
0.8.0 へのアップグレード
2024 年 1 月 24 日更新
prompt
、messages
、metadata
パッケージをorg.springframework.ai.chat
のサブパッケージに移動する新しい機能は、テキストからイメージへのクライアントです。クラスは
OpenAiImageModel
およびStabilityAiImageModel
です。使用箇所については統合テストを参照してください。ドキュメントは近日公開予定です。新しいパッケージ
model
には、あらゆる入出力データ型の組み合わせに対応した AI モデルクライアントの作成をサポートするインターフェースと基本クラスが含まれています。現在、チャットモデルとイメージモデルのパッケージで実装されています。埋め込みパッケージも近日中にこの新しいモデルにアップデートする予定です。新しい「ポータブルオプション」設計パターン。
ModelCall
は、様々なチャットベースの AI モデル間で可能な限り高い移植性を提供することを目的としています。共通の生成オプションセットと、モデルプロバイダー固有のオプションがあります。一種の「ダックタイピング」アプローチが採用されています。モデルパッケージ内のModelOptions
は、このクラスの実装がモデルのオプションを提供することを示すマーカーインターフェースです。すべての text → imageImageModel
実装に共通するポータブルオプションを定義するサブインターフェースであるImageOptions
を参照してください。そして、StabilityAiImageOptions
とOpenAiImageOptions
は、各モデルプロバイダー固有のオプションを提供します。すべてのオプションクラスは、Fluent API ビルダーによって作成され、すべてポータブルなImageModel
API に渡すことができます。これらのオプションデータ型は、ImageModel
実装の自動構成 / 構成プロパティで使用されます。
2024 年 1 月 13 日更新
以下の OpenAi 自動構成チャットプロパティが変更されました
spring.ai.openai.model
からspring.ai.openai.chat.options.model
まで。spring.ai.openai.temperature
からspring.ai.openai.chat.options.temperature
まで。
OpenAi プロパティに関する更新されたドキュメントを検索します: 参照: openai-chat.html
2023 年 12 月 27 日更新
SimplePersistentVectorStore と InMemoryVectorStore を SimpleVectorStore にマージします * InMemoryVectorStore を SimpleVectorStore に置き換えます
2023 年 12 月 20 日更新
Ollama クライアントと関連クラスおよびパッケージ名のリファクタリング
org.springframework.ai.ollama.client.OllamaClient を org.springframework.ai.ollama.OllamaModelCall に置き換えます。
OllamaChatClient メソッドのシグネチャーが変更されました。
org.springframework.ai.autoconfigure.ollama.OllamaProperties の名前を org.springframework.ai.model.ollama.autoconfigure.OllamaChatProperties に変更し、サフィックスを
spring.ai.ollama.chat
に変更します。一部のプロパティも変更されました。
2023 年 12 月 19 日更新
AiClient および関連クラスおよびパッケージ名の変更
AiClient の名前を ChatClient に変更します
AiResponse の名前を ChatResponse に変更します
AiStreamClient の名前を StreamingChatClient に変更します
パッケージの名前を org.sf.ai.client から org.sf.ai.chat に変更します
アーティファクト ID の名前を変更します
transformers-embedding
からspring-ai-transformers
Maven モジュールを最上位ディレクトリと embedding-clients
サブディレクトリからすべて 1 つの models
ディレクトリに移動しました。
2023 年 12 月 1 日
プロジェクトのグループ ID を移行しています。
FROM:
org.springframework.experimental.ai
TO:
org.springframework.ai
以下に示すように、アーティファクトは引き続きスナップショットリポジトリでホストされます。
メインの ブランチはバージョン 0.8.0-SNAPSHOT
に移行します。1 ~ 2 週間は不安定になります。最新の状態を望まない場合は、0.7.1-SNAPSHOT を使用してください。
以前と同様に 0.7.1-SNAPSHOT
アーティファクトにアクセスでき、引き続き 0.7.1-SNAPSHOT ドキュメント (英語) にアクセスできます。
0.7.1-SNAPSHOT の依存関係
Azure OpenAI
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>
OpenAI
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>