diff --git a/.github/workflows/perform-release.yaml b/.github/workflows/perform-release.yaml index b4a7891e7..eb3401706 100644 --- a/.github/workflows/perform-release.yaml +++ b/.github/workflows/perform-release.yaml @@ -38,7 +38,7 @@ jobs: id: determine-branch-names run: | CODE_BRANCH_NAME=$(gh pr view ${{github.event.inputs.release_pr_number}} --repo ${{github.repository}} --json headRefName --jq '.headRefName') - RELEASE_VERSION=$(echo $CODE_BRANCH_NAME | cut -d '-' -f2) + RELEASE_VERSION=$(echo $CODE_BRANCH_NAME | cut -d '-' -f2-) RELEASE_TAG=rel/$RELEASE_VERSION RELEASE_COMMIT=$(gh release view $RELEASE_TAG --repo ${{github.repository}} --json targetCommitish --jq '.targetCommitish') RELEASE_NOTES_BRANCH_NAME=java/release-notes-$RELEASE_VERSION @@ -112,7 +112,7 @@ jobs: release: name: 'Release' - needs: [prerequisites] + needs: [ prerequisites ] runs-on: ubuntu-latest environment: release permissions: diff --git a/docs/release_notes.md b/docs/release_notes.md index 11fee6cf2..5745d6681 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -8,162 +8,11 @@ ### 🔧 Compatibility Notes -- [RPT] SAP-RPT was updated to the newer 1.6.0 API -- [Orchestration] Spring AI support was upgraded to version `2.0.1` -- [Prompt Registry] `OrchestrationConfigClient` and `PromptClient` were reworked into unified `PromptRegistryClient`, - see migration guide below for additional information -- [Orchestration] `OrchestrationClient.executeRequestFromJsonModuleConfig` method was removed from SDK without a replacement -- [OpenAi] `OpenAi.withApiVersion` was removed from public API and deprecated -- [Orchestration] Internal AI SDK methods `createInputFilterConfig` and `createOutputFilterConfig` were removed - from public API -- [Orchestration] Internal AI SDK methods `createConfig` were removed from `GroundingProvider` and `MaskingProvider` -- [Orchestration] Internal AI SDK method `createMessage` was removed from `Message` class. -- [Orchestration] Removed internal `AssistantMessage(List toolCalls)` please use `AssistantMessage.withToolCalls(List)` instead. -- [Orchestration] Removed deprecated models: - - `OrchestrationAiModel.IBM_GRANITE_13B_CHAT` - - `OrchestrationAiModel.MISTRAL_LARGE_INSTRUCT` - - `OrchestrationAiModel.MISTRAL_SMALL_INSTRUCT` - - `OrchestrationAiModel.MIXTRAL_8X7B_INSTRUCT_V01` - - `OrchestrationAiModel.LLAMA3_70B_INSTRUCT` - - `OrchestrationAiModel.LLAMA3_1_70B_INSTRUCT` - - `OrchestrationAiModel.CLAUDE_3_SONNET` - - `OrchestrationAiModel.CLAUDE_3_HAIKU` - - `OrchestrationAiModel.CLAUDE_3_OPUS` - - `OrchestrationAiModel.CLAUDE_3_5_SONNET` - - `OrchestrationAiModel.CLAUDE_3_7_SONNET` - - `OrchestrationAiModel.CLAUDE_4_SONNET` - - `OrchestrationAiModel.TITAN_TEXT_LITE` - - `OrchestrationAiModel.TITAN_TEXT_EXPRESS` - - `OrchestrationAiModel.GPT_35_TURBO` - - `OrchestrationAiModel.GPT_35_TURBO_16K` - - `OrchestrationAiModel.GPT_35_TURBO_0125` - - `OrchestrationAiModel.GPT_4` - - `OrchestrationAiModel.GPT_4_32K` - - `OrchestrationAiModel.GPT_4_0613` - - `OrchestrationAiModel.GPT_4O_MINI` - - `OrchestrationAiModel.OPENAI_O1` - - `OrchestrationAiModel.OPENAI_O3_MINI` - - `OrchestrationAiModel.GEMINI_1_0_PRO` - - `OrchestrationAiModel.GEMINI_1_5_PRO` - - `OrchestrationAiModel.GEMINI_1_5_FLASH` - - `OrchestrationAiModel.GEMINI_2_0_FLASH` - - `OrchestrationAiModel.GEMINI_2_0_FLASH_LITE` - - `OrchestrationAiModel.ALEPHALPHA_PHARIA_1_7B_CONTROL` - - `OrchestrationAiModel.DEEPSEEK_R1` -- [OpenAi] Removed deprecated models: - - `OpenAiModel.DALL_E_3` - - `OpenAiModel.GPT_35_TURBO` - - `OpenAiModel.GPT_35_TURBO_1025` - - `OpenAiModel.GPT_35_TURBO_16K` - - `OpenAiModel.GPT_4` - - `OpenAiModel.GPT_4_32K` - - `OpenAiModel.GPT_4O_MINI` - - `OpenAiModel.O3_MINI` - - `OpenAiModel.O1` - - `OpenAiModel.TEXT_EMBEDDING_ADA_002` - -#### Prompt registry client Migration Guide - -`OrchestrationConfigClient` and `PromptClient` were replaced with unified `PromptRegistryClient`, - -OrchestrationConfigClient: -```diff --var orchestrationConfigsClient = new OrchestrationConfigClient(); --var configs = orchestrationConfigsClient.listOrchestrationConfigs(); - -+var orchestractionConfigsClient = new PromptRegistryClient().orchestrationConfig(); -+var configs = orchestractionConfigsClient.listOrchestrationConfigs(); -``` - -PromptRegistryClient: -```diff --var promptClient = new PromptClient(); --var templates = promptClient.listPromptTemplates(); - -+var promptClient = new PromptRegistryClient().prompt(); -+var templates = promptClient.listPromptTemplates(); -``` - -#### Spring AI 2.0.1 Migration Guide - -If you use the Spring AI integration (`OrchestrationChatModel`, `OpenAiChatModel`) together with tool calling, the following changes are required: - -**Tool execution — use `ChatClient` instead of `isInternalToolExecutionEnabled`** - -The `isInternalToolExecutionEnabled` flag has been removed in Spring AI 2.0.1. -To execute tools automatically, route the call through `ChatClient` (which wires in `ToolCallingAdvisor`): - -```diff --options.setInternalToolExecutionEnabled(true); --chatModel.call(prompt); - -+ChatClient.builder(chatModel).build().prompt(prompt).call().chatResponse(); -``` - -To receive raw tool calls without execution (e.g. to forward them to a client), call the model directly as before — no change needed there. - -**Immutable options — use `.mutate().build()` to configure per-request options** - -`OrchestrationChatOptions` and `DefaultToolCallingChatOptions` are now immutable. -Use the builder to set per-request options such as tool callbacks: - -```diff --OrchestrationChatOptions options = new OrchestrationChatOptions(config); --options.setToolCallbacks(...); // no longer available - -+OrchestrationChatOptions options = new OrchestrationChatOptions(config) -+ .mutate() -+ .toolCallbacks(ToolCallbacks.from(new MyTool())) -+ .build(); -``` - -**Dependency updates** - -***New required minimum versions*** - -`com.github.victools:jsonschema-generator 5.0.0` - -`com.githib.victools:jsonschema-module-jackson 5.0.0` - -`com.github.victools:jsonschema-module-swagger-2 5.0.0` - -`com.networknt:json-schema-validator 3.0.1` - - -*Optional*: If your project uses Spring AI MCP autoconfiguration (i.e. you had `spring-ai-autoconfigure-mcp-client` in your `pom.xml` to register MCP clients from `application.yml`), that artifact was split in Spring AI 2.0.1 — replace it: - -```xml - - - org.springframework.ai - spring-ai-autoconfigure-mcp-client - - - - - org.springframework.ai - spring-ai-autoconfigure-mcp-client-common - 2.0.1 - -``` - -If you use MCP clients manually in code (instantiating `SyncMcpToolCallbackProvider` directly), no change is needed — `spring-ai-mcp` already provides those classes. - -### Orchestration - -- The model name is now required when creating a new `OrchestrationModuleConfig` - -```diff --new OrchestrationModuleConfig().withLlmConfig(GPT_5); - -+new OrchestrationModuleConfig(GPT_5); -``` +- ### ✨ New Functionality -- [Orchestration] Added `GEMINI_3_8_FLASH` and `GPT_51` to model list in `OrchestrationAiModel`. -- [OpenAI] Added `GPT_51` to model list in `OpenAiModel`. -- [Spring AI] Chat completion calls via the Spring AI integration now can have multiple module configs to support fallback modules as well. +- ### 📈 Improvements