Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
336 commits
Select commit Hold shift + click to select a range
13e3add
fix: remove unused options from ZhiPu model (#3669)
YunKuiLu Jun 26, 2025
296ab11
fix: Fixed some spelling errors in the documentation and comments. (#…
sunyuhan1998 Jun 26, 2025
115ed6b
Fix link in javadoc to Message source (#3672)
enimiste Jun 26, 2025
ea3c907
fix(anthropic): prevent streaming tool calling responses when interna…
tzolov Jun 26, 2025
a24382a
fix SimpleApiKey Assert Message (#3656)
dev-jonghoonpark Jun 27, 2025
6007671
Add Elasticsearch to the README (#3688)
xeraa Jun 27, 2025
1c06f0c
Convert Qdrant vector store IT use OpenAI embedding model (#3671)
ilayaperumalg Jun 27, 2025
c97dcc6
doc: fix incorrect default embedding model reference in ollama-embedd…
JM-Lab Jun 27, 2025
c3c107c
Validate documents for text/media check when adding to vector store (…
ilayaperumalg Jun 27, 2025
d18492f
fix: Fixed GH-3557, Fixed the issue where the audio filename was lost…
sunyuhan1998 Jun 17, 2025
0485bca
Propagate reactive Context to AsyncMcpToolCallback
Kehrlann Jun 23, 2025
53e1e13
doc: Remove duplicated dependency instructions in opensearch.adoc (#3…
JM-Lab Jul 1, 2025
31b150e
Fix typos (#3695)
ngocnhan-tran1996 Jul 1, 2025
dbdee20
docs: correct property name from is-auto-id to auto-id in milvus.adoc…
dev-jonghoonpark Jul 1, 2025
ff8baf4
fix: GH-3713 Fixed outdated code examples in the documentation. (#3717)
sunyuhan1998 Jul 2, 2025
1b23bea
Fix typo token configuration documentation (#3677)
gaganis Jul 2, 2025
0f7806e
Refactor: Add null check, optimize string joining, and add JavaDocs (…
KoreaNirsa Jul 2, 2025
134822f
improve schema initialization logic and update deprecated code for Mi…
dev-jonghoonpark Jul 2, 2025
3e7542d
Fix annotation package (#3716)
ngocnhan-tran1996 Jul 2, 2025
aee558d
Use diamond operator where possible (#3458)
quaff Jul 2, 2025
45181e2
docs: replace CLA section with DCO (spring-projects#3094) (#3228)
kim-nini Jul 2, 2025
1effbb9
Fix typos in chat client module (#3013)
jamespud Jul 2, 2025
47dd645
Update anthropic-chat.adoc (#2723)
WRCoding Jul 2, 2025
ad8bf8d
Fix parameter ordering in JsonSchemaGenerator
TheEterna Jul 3, 2025
5439752
fix: Fixed GH-3526, Fixed the issue where using the `builder()` in `S…
sunyuhan1998 Jun 13, 2025
13b58ea
Fix NPE in AnthropicApi StreamHelper (#3755)
ilayaperumalg Jul 7, 2025
84a92a4
Improve the MCP document to stop referring to outdated DefaultMcpSess…
quaff Jul 8, 2025
b39f98d
feat(zhipuai): Add Builder pattern for ZhiPuAiApi
YunKuiLu Jul 2, 2025
35659f1
Upgrade io.modelcontextprotocol 0.10.0 -> 0.11.0-SNAPSHOT
Kehrlann Jul 10, 2025
1ee4115
Fix McpServerAutoConfigurationIT (#3792)
Kehrlann Jul 11, 2025
1ba6e2c
feature: Add common TranscriptionModel interface for audio transcription
mudabirhussain Oct 7, 2024
9e5ab1d
remove extraneous file
markpollack Jul 14, 2025
6f65eba
Update the ChatClient Advisor reference documentation
tzolov Jul 16, 2025
0f041d2
Update openai audio test due to changes in openai safety settings
markpollack Jul 16, 2025
7274917
Fix example code for "Streaming Responses" (#3802)
ingbyr Jul 16, 2025
875490f
docs: update mcp specification document link (#3810)
doljae Jul 16, 2025
a3f8ed9
docs(mcp): add dynamic MCP client selection example (#3751)
paoxiaomooo Jul 16, 2025
9889c3d
Extract VectorStoreRetriever interface from VectorStore (#3827)
markpollack Jul 17, 2025
c401224
feat: add streamable-HTTP transport support for MCP client
tzolov Jul 15, 2025
4b4c028
[GH-3723] Vertex AI Gemini logprobs support
rodrigomalara Jul 2, 2025
e6f2cd7
fix method tool call throws same method name (#2774)
finyuq Jul 17, 2025
5446abf
refactor: GH-3620 Add `BedrockChatOptions` to Bedrock
sunyuhan1998 Jul 9, 2025
1177e5c
Refactor MethodToolCallbackProviderTests
ilayaperumalg Jul 17, 2025
d23577e
Fix PropmptTemplate typo in structured-output-api.jpg (#3304)
Skillkiller Jul 17, 2025
a2d2e1e
Fix: Fix CI failures (#3844)
sunyuhan1998 Jul 18, 2025
bd84d17
fix: Optimize the Bedrock documentation to keep it synchronized with …
sunyuhan1998 Jul 18, 2025
176657b
update .gitignore
markpollack Jul 18, 2025
74f8a16
Refactor builder pattern in VertexAiGeminiSafetySetting
mjkhub May 26, 2025
c699fff
Add spring-ai-google-genai module using Google's new GenAI SDK
ddobrin Jul 11, 2025
bf295b9
Apply AsciiDoc style (#3883)
ngocnhan-tran1996 Jul 23, 2025
dead495
chore: correct spelling of frequencyPenalty on google builders
garethjevans Jul 23, 2025
e33f452
chore: made embedding options builder methods consistent
garethjevans Jul 24, 2025
5c83fd1
feat: Add custom template support to KeywordMetadataEnricher
YunKuiLu May 19, 2025
d852bc3
Fixing published to maven central issues
markpollack Jul 30, 2025
92165cd
Adjust mcp server auto-config
tzolov Jul 30, 2025
b7f7fa1
test: Enhanced test coverage for McpClientAutoConfigurationRuntimeHin…
alxkm Aug 5, 2025
8444a69
test: Enhanced test coverage for OpenAiRuntimeHintsTests
alxkm Aug 4, 2025
9e0e6c9
deps: Update Protobuf Java 3.25.2 to 3.25.8 to fix CVE-2024-7254 (#3996)
ThomasVitale Aug 5, 2025
f037335
test: Enhanced test coverage for AzureOpenAiRuntimeHintsTests
alxkm Aug 4, 2025
7c70365
Fix incorrect example code in documentation (#3993)
huidongyin Aug 5, 2025
735b29f
test: Enhanced test coverage for AnthropicRuntimeHintsTests (#3992)
alxkm Aug 5, 2025
9351676
test: Add tests for MistralAiRuntimeHints (#3987)
alxkm Aug 5, 2025
f15edc2
Upgrade io.modelcontextprotocol 0.11.0-SNAPSHOT -> 0.11.0 (#3990)
Kehrlann Aug 5, 2025
96e7b38
test: add comprehensive edge case tests for QdrantVectorStore.Builder…
alxkm Aug 5, 2025
ed917fd
test: Enhance test cases for VectorStoreChatMemoryAdvisor builder (#3…
alxkm Aug 5, 2025
a70ace4
Replace instanceof check and cast with pattern matching (#3979)
remeio Aug 5, 2025
697f051
Lambda can be replaced with method reference (#3978)
remeio Aug 5, 2025
fae8158
Polish empty check. (#3977)
remeio Aug 5, 2025
85ae770
Use `Optional` to check null in DefaultChatClient#doGetObservableFlux…
remeio Aug 5, 2025
9593b83
feat(google-genai): add Google GenAI embedding module and unified SDK…
markpollack Aug 5, 2025
0227478
Use `metadata` instead of `properties` on UserMessage. (#3980)
remeio Aug 5, 2025
339c60a
Enhance AnthropicChatOptions test coverage (#3973)
alxkm Aug 6, 2025
13e7218
Enhance MistralAiChatOptions test coverage with comprehensive edge ca…
alxkm Aug 6, 2025
ba2a7ec
Enhance OpenAiChatOptions test coverage (#3959)
alxkm Aug 6, 2025
4f95deb
Add comprehensive test coverage for Neo4jVectorFilterExpressionConver…
alxkm Aug 6, 2025
aac882e
test: Add comprehensive test coverage for MariaDBFilterExpressionConv…
alxkm Aug 6, 2025
6d89971
test: Add additional test coverage for OpenSearchAiSearchFilterExpres…
alxkm Aug 6, 2025
5fa5ec8
Bump postgresql from 42.7.5 to 42.7.7 (#3934)
dafriz Aug 6, 2025
267fb01
Add comprehensive test coverage for PineconeFilterExpressionConverter…
alxkm Aug 6, 2025
6513804
Add comprehensive test coverage for MilvusFilterExpressionConverter (…
alxkm Aug 6, 2025
3e2ba84
Remove unused import (#3921)
ngocnhan-tran1996 Aug 6, 2025
19dbf19
test: Add comprehensive test coverage for MongoDBAtlasFilterExpressio…
alxkm Aug 6, 2025
f0b1ae0
test: Add comprehensive test coverage for PgVectorFilterExpressionCon…
alxkm Aug 6, 2025
553d333
chat client doc improvements (#3963)
lpy569 Aug 6, 2025
3c20fac
test: Add comprehensive test coverage for PdfReaderRuntimeHints (#4016)
alxkm Aug 6, 2025
3d9e6f7
docs: Update ChromaDB configuration details for Chroma Cloud supp…
philipithomas Aug 6, 2025
77be22f
test: Add comprehensive test coverage for VectorStore runtime hints r…
alxkm Aug 6, 2025
5772eba
test: Add comprehensive test coverage for Ollama runtime hints regist…
alxkm Aug 6, 2025
1fbb735
test: Add edge case tests for VertexAI Gemini runtime hints registrat…
alxkm Aug 6, 2025
8caabc6
Wrap Exception from toolFunction in ToolExecutionException and rethro…
YunKuiLu Aug 6, 2025
2bef6b2
Fix the documentation and comments for the MCP Client section (#4011)
sunyuhan1998 Aug 6, 2025
0bd6da1
test: Add comprehensive test coverage for SpringAI core runtime hints…
alxkm Aug 6, 2025
53a0a27
test: Add ChatClientRequest mutation and context handling tests (#4022)
alxkm Aug 6, 2025
2ac003d
fix: Rethrow ToolExecutionException for non-RuntimeException (#3915)
YunKuiLu Aug 6, 2025
ce4318f
test: Add comprehensive edge case and validation tests for runtime hi…
alxkm Aug 6, 2025
926bcc0
feat: Eliminate one deserialization step in the majority of scenarios…
bourne7 Aug 6, 2025
3e562f2
test: improve coverage `PgVectorEmbeddingDimensionsTests` (#3907)
alxkm Aug 6, 2025
7e93c77
GH-3870: Update outdated document information
CodeCodeAscension Jul 24, 2025
a2537fe
doc: update chat-memory.adoc (#3917)
quachhengtony Aug 6, 2025
3e719b1
Fix typos in comments and improve documentation (#3936)
jbj338033 Aug 6, 2025
398e524
docs: update getting-started.adoc for 1.0.0 release (#3920)
nahyukk Aug 6, 2025
ef2f9b6
test: Add comprehensive edge case and validation tests for core Sprin…
alxkm Aug 6, 2025
87df9b7
test: Add unit tests for Query class validation and equality behavior…
alxkm Aug 6, 2025
b149c5d
Update Ollama API to latest version
ThomasVitale Aug 1, 2025
e6ecc20
feat: Add metadata support to `user` and `system` messages in ChatCli…
YunKuiLu Aug 6, 2025
656cf73
Add docs for metadata support in ChatClient
sobychacko Aug 6, 2025
be15410
test: Add comprehensive tests for `OllamaChatModel` and `OllamaEmbedd…
alxkm Aug 6, 2025
b50fe22
Renaming ChatClientTest to ChatClientTests for consistency
sobychacko Aug 6, 2025
53a3175
One sentence per line in chatclient.adoc
sobychacko Aug 6, 2025
f48bb3d
GH-3896: Similarity searches with the MariaDBVectorStore do not provi…
Til7701 Jul 23, 2025
4be2e02
test: Add comprehensive tests for ListOutputConverter and StreamHelpe…
alxkm Aug 6, 2025
0c702dd
test: Add comprehensive test coverage for chat and embedding options …
alxkm Aug 6, 2025
dd1af33
test: Add comprehensive test coverage for AzureOpenAiChatOptions and …
alxkm Aug 6, 2025
2eab6c4
MariaDBVectorStore similarity score reference docs
sobychacko Aug 6, 2025
7d3450f
Bump Tika, pdfbox and jsoup to latest versions (#3912)
dafriz Aug 6, 2025
c491ea1
Add KotlinModule support and tests for schema generation in BeanOutpu…
dmitrysulman Aug 6, 2025
936365a
fix: add strict option to Azure ChatCompletionsJsonSchemaResponseForm…
FlorainB Aug 6, 2025
5f67435
test: Add edge case tests for tool result conversion and Redis filter…
alxkm Aug 6, 2025
c3aca79
Keep the same pass check behavior for FactCheckingEvaluator and Relev…
remeio Aug 6, 2025
1dfaafd
Use maven wrapper and batch-mode in GitHub Actions (#3841)
filiphr Aug 6, 2025
5868d23
test: Testing improvements in various classes
alxkm Aug 7, 2025
b66cd4a
Enable manual workflow dispatch for CI/CD build
markpollack Aug 7, 2025
9c60789
Upgrade MCP SDK version to 0.11.1 (#4048)
YunKuiLu Aug 7, 2025
8ce4eee
test: Improve test coverage in various classes
alxkm Aug 7, 2025
a322cc6
Revert "Merge remote-tracking branch 'upstream/main'"
markpollack Aug 7, 2025
5d5ce55
test: Improve test coverage in various classes
alxkm Aug 7, 2025
5bd1e4a
Fix CI workflow: Use ../mvnw for assembly generation in spring-ai-doc…
markpollack Aug 7, 2025
36adb4a
feat: add GPT-5 model enum support and update documentation
markpollack Aug 7, 2025
7bd7335
added new model names in doc for anthropic (#4077)
Claudio-code Aug 8, 2025
b812158
Use Map#putAll instead of put. (#4062)
remeio Aug 8, 2025
0cabe9b
test: Enhance Anthropic test coverage with comprehensive validation a…
alxkm Aug 7, 2025
9b6a364
Use `Optional` to check null, and avoid NPE. (#4064)
remeio Aug 8, 2025
0658b26
Use `Optional` to check null, and avoid NPE. (#4063)
remeio Aug 8, 2025
4422c4d
Autoconfigure MCP client with and async HTTP request customizer
Kehrlann Aug 4, 2025
738f712
McpSyncServer: set immediate execution when in a servlet context
Kehrlann Jul 11, 2025
1482c1a
test: Improve unit test coverage for various components
alxkm Aug 8, 2025
7e01751
test: Add additional filter condition tests for `SimpleVectorStore` (…
alxkm Aug 9, 2025
13d3622
GH-4082: Fix ResourceAccessException retry for network connectivity e…
wilocu Aug 9, 2025
ce42bfd
test: Remove debug System.out.println from QuestionAnswerAdvisorTests
seongm1n Aug 10, 2025
c95215a
test: Enhances test coverage for QdrantObjectFactory.toObjectMap
alxkm Aug 9, 2025
011fdb3
feat: add fast CI builds for maintenance branch cherry-picks
markpollack Aug 11, 2025
0bc4508
test: fake commit for github workflow testing
markpollack Aug 11, 2025
eeffe3a
fix: implement fail-fast fallback and single-commit git diff strategy
markpollack Aug 11, 2025
61b28fe
test: add second validation comment for workflow testing
markpollack Aug 11, 2025
cec9ba0
fix: resolve heavy CI triggering on maintenance branches and git hist…
markpollack Aug 11, 2025
0a48a0b
feat: add comprehensive debugging to maintenance workflow
markpollack Aug 11, 2025
79bc02b
test: comprehensive debugging validation for maintenance workflow
markpollack Aug 12, 2025
967b6ea
fix: simplify git strategy to use 'git show HEAD' for maintenance bra…
markpollack Aug 12, 2025
4629924
test: validate simplified git show HEAD approach
markpollack Aug 12, 2025
1dc555a
chore: add __pycache__ to .gitignore
markpollack Aug 12, 2025
e0d9c2e
test: final validation of simplified git show HEAD approach
markpollack Aug 12, 2025
2eb3cab
fix: prioritize maintenance branch detection over explicit base_ref
markpollack Aug 12, 2025
a2b3125
fix: resolve git state issues causing full project builds
markpollack Aug 12, 2025
2bcd63f
sync: update workflow to match streamlined 1.0.x version
markpollack Aug 12, 2025
a59afe0
test: validate fast maintenance workflow with qdrant test change
markpollack Aug 12, 2025
3a5d5a0
test: second validation of fast maintenance workflow
markpollack Aug 12, 2025
b1fd64b
test: third validation of fast maintenance workflow
markpollack Aug 12, 2025
068f2a5
fix: add smart path-based triggering to reduce CI/CD redundancy
markpollack Aug 12, 2025
6d542d5
improve: add clear naming for deploy docs dispatcher chain
markpollack Aug 12, 2025
8d16772
Fix OpenAI streaming finish_reason handling for empty string values (…
markpollack Aug 13, 2025
931abb2
Fix intermittent streaming response aggregation test failure (#4135)
markpollack Aug 13, 2025
9a378f6
test: Add test coverage for ChatClientObservationContext (#4124)
alxkm Aug 13, 2025
e717c5c
Fix: Make metadata mutable in AzureVectorStore (Azure AI Search) (#4131)
jinlee1703 Aug 14, 2025
171e21c
Fix NPE when metadata is null in MilvusVectorStore (#4116)
little-huang Aug 14, 2025
08a03a6
test: Enhance test coverage for SyncMcpToolCallback edge cases (#4154)
alxkm Aug 14, 2025
6d3f276
fix: correctly handle merges when 'current' is null (#4153)
garethjevans Aug 15, 2025
d6eeae9
test: Enhance test coverage for `EmbeddingModelObservationContext` (#…
alxkm Aug 15, 2025
58b9b4f
feat: add gpt-5 models (#4086)
apappascs Aug 15, 2025
c9d6d6c
chore(google genai): return the actual model version used for chat (#…
garethjevans Aug 15, 2025
410b51f
Fix StackOverflowError introduced by `MongoDbAtlasLocalContainerConne…
quaff Aug 15, 2025
f858e00
Polish bean name in streamableHttpWebFluxClientTransports (#4146)
quaff Aug 15, 2025
02a196b
Fix artifactory build and release action
markpollack Aug 15, 2025
e9e5ae7
test: Enhance test coverage for MistralAiBindingsPropertiesProcessor …
alxkm Aug 16, 2025
f709784
Optimize CI/CD for faster PR merge feedback
markpollack Aug 19, 2025
fff30c0
Fix main-push-fast workflow module detection and prevent recursive tr…
markpollack Aug 19, 2025
37f60a2
refactor: restructure MCP server auto-configuraitons, adding streamab…
tzolov Aug 13, 2025
418d101
Improve fast workflow performance and logging
markpollack Aug 19, 2025
bacce32
Add workflow_dispatch to test specific commits in fast workflow
markpollack Aug 19, 2025
af616c6
Optimize fast workflow for true no-op builds
markpollack Aug 19, 2025
a08e8a2
Fix commit SHA checkout and add enhanced run context
markpollack Aug 19, 2025
975cf73
Simplify commit SHA checkout to avoid git fetch issues
markpollack Aug 19, 2025
ba5bdc9
Always exclude root pom.xml from fast workflow module detection
markpollack Aug 19, 2025
0857304
fix: prevent root module from appearing in affected modules list
markpollack Aug 19, 2025
72a5468
ignore all .github changes in main push fast workflow
markpollack Aug 19, 2025
0dad105
fix: correctly exclude root module by handling empty string case
markpollack Aug 19, 2025
1980504
debug: enable verbose output to trace root module issue
markpollack Aug 19, 2025
2af7002
feat: use latest CI scripts when testing old commits
markpollack Aug 19, 2025
8d87451
fix: exclude Python cache files from CI script copying
markpollack Aug 19, 2025
1f5a3cc
fix: add -am flag to build required dependencies
markpollack Aug 19, 2025
74e0f06
fix: only run tests for affected modules, not dependencies
markpollack Aug 19, 2025
44c9385
add progress indicators for build phases
markpollack Aug 19, 2025
7212b3b
fix: skip tests during deploy phase
markpollack Aug 19, 2025
4c0a911
fix: remove duplicate cron schedules in CI/CD workflow
markpollack Aug 19, 2025
050736e
Fix MCP client auto-configuration tests with comprehensive documentation
markpollack Aug 19, 2025
c30840a
feat: show commit message in fast workflow run name
markpollack Aug 19, 2025
fdf3002
Improve continuous-integration.yml workflow controls
markpollack Aug 19, 2025
3f38853
Fix continuous-integration.yml concurrency control
markpollack Aug 19, 2025
87978e3
Bump io.swagger.core.v3:swagger-annotations to 2.2.30 from 2.2.25 (#4…
dafriz Aug 19, 2025
7cb6796
test: Add comprehensive Document class validation and functionality t…
alxkm Aug 17, 2025
2fb51ec
Fix main-push-fast.yml to test only affected modules
markpollack Aug 20, 2025
64e4948
Fix run-name to show only first line of commit message
markpollack Aug 20, 2025
0fad301
Fix run-name to show commit hash instead of invalid split() function
markpollack Aug 20, 2025
b3ab061
Add missing run-name to maintenance-fast.yml on main branch
markpollack Aug 20, 2025
6c0df71
Optimize CI/CD builds by skipping when no new commits exist
markpollack Aug 20, 2025
b0952fd
Enable manual triggering for maintenance-fast.yml workflow
markpollack Aug 20, 2025
edb41e7
feat(google genai): add in the missing starters
garethjevans Aug 15, 2025
fddbe22
GH-3300 | Add max_completion_tokens to Azure OpenAI configuration opt…
Hiosdra Aug 18, 2025
c26da81
Add mutual exclusivity validation for maxTokens and maxCompletionToke…
markpollack Aug 20, 2025
b1b4bf4
Use thread safe DateTimeFormatter instead of SimpleDateFormat
dafriz Aug 17, 2025
b0dc22b
refactor: Restructure MCP server auto-configuration modules for bette…
markpollack Aug 21, 2025
6fd1322
Remove duplicated lines in AzureOpenAiChatOptions
asw12 Aug 20, 2025
5ef7681
Improve Chinese character support with robust Unicode property union
markpollack Aug 21, 2025
98b39db
Enhance test coverage across Spring AI modules with comprehensive edg…
alxkm Aug 20, 2025
1e53719
refactor(mcp): consolidate MCP server auto-configuration modules and …
tzolov Aug 21, 2025
fcb9390
minor docs improvements
tzolov Aug 21, 2025
87288de
Minor test formating improvements
tzolov Aug 22, 2025
f4566b9
Fix stateless MCP tools calling (#4215)
Kehrlann Aug 21, 2025
eede325
Restore settings.xml file for CI builds
markpollack Aug 23, 2025
03d9835
Fix NullPointerException in McpToolUtils.toAsyncToolSpecification
markpollack Aug 24, 2025
f3139f2
Remove deprecated Mistral AI Codestral Mamba model (#4225)
nicolaskrier Aug 26, 2025
5bc3c74
docs: Add more explanation in observability documentation about metrics
HeeChanN Aug 24, 2025
7df7f30
docs: correct typo from 'are' to 'and' in advisors.adoc (#4219)
Yornii Aug 27, 2025
654a8f7
test: enhance test coverage for ChatClient response handling and buil…
alxkm Aug 27, 2025
126a493
GH-4213: Re-enable Groq API integration tests
Hyeri1ee Aug 21, 2025
c1d03a4
doc:Update README.md (#4161)
YunKuiLu Aug 27, 2025
6a8f875
Fix formatting errors
sobychacko Aug 27, 2025
cce9000
GH-4235: Add support for OpenAI service_tier in OpenAiChatOptions
rafaelrddc Aug 25, 2025
bb9862d
Checkstyle fixes
sobychacko Jun 27, 2025
15b03d7
change mcp sdk version to 0.11.3
markpollack Aug 28, 2025
8877c80
test: Add comprehensive test coverage for tool calling observation co…
alxkm Aug 28, 2025
6bfae78
Only log class name on ToolCallingAutoConfiguration#ClassNotFoundExce…
sunyuhan1998 Aug 28, 2025
a7eefaf
Update docker services documentation (#4253)
l-trotta Aug 28, 2025
53498ff
Fix reordering issue in AzureOpenAiChatModel (#4156)
robinmayerhofer Aug 28, 2025
21a9349
chore: remove unnecessary null checks in template variable validation…
csbiy Aug 28, 2025
c142abc
feat: Add annotation-based configuration support for MCP clients and …
tzolov Aug 25, 2025
d266f3e
minor vs code fomatting configs
tzolov Aug 29, 2025
fc6f8cc
chore: add spring-ai-mcp-annotations dependency to MCP auto-configura…
tzolov Aug 29, 2025
8b32d6f
refactor: rename MCP auto-configuration classes with Mcp prefix
tzolov Aug 29, 2025
001402d
feat(google genai): support sending labels with chat request
garethjevans Aug 14, 2025
7e1d655
docs: Update tools.adoc (#4278)
Yornii Sep 2, 2025
c992406
test: Enhance test coverage for tool execution components (#4268)
alxkm Sep 2, 2025
3f76854
docs : corrected git log command (#4272)
shahbazaamir Sep 2, 2025
09b0e7f
Fix AnthropicApiIT's chatCompletionStreamError
ilayaperumalg Sep 3, 2025
aed37fc
Fix AzureOpenAiChatModelFunctionCallIT#streamFunctionCallUsageTest
ilayaperumalg Sep 3, 2025
0abaf82
Fix Anthropic FunctionCallWithPromptFunctionIT
ilayaperumalg Sep 3, 2025
e2863ce
GH-4289: Optimized `JdbcChatMemoryRepositoryDialect#from`
sunyuhan1998 Sep 2, 2025
89fd0a0
Remove redundant try-catch in JdbcChatMemoryRepository (#4288)
eeaters Sep 3, 2025
c02230e
Allow Retry on choosen status codes (#495)
tzolov Mar 25, 2024
3379290
Fix typos in assert notNull (#1363)
dafriz Sep 17, 2024
1d927df
fix: fix stdio typos in variable names (#2778)
yangtuooc Apr 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
*/
public final class VectorStoreChatMemoryAdvisor implements BaseChatMemoryAdvisor {

public static final String SIMILARITY_THRESHOLD = "chat_memory_vector_store_similarity_threshold";

public static final String TOP_K = "chat_memory_vector_store_top_k";

private static final String DOCUMENT_METADATA_CONVERSATION_ID = "conversationId";
Expand All @@ -64,6 +66,8 @@ public final class VectorStoreChatMemoryAdvisor implements BaseChatMemoryAdvisor

private static final int DEFAULT_TOP_K = 20;

private static final double DEFAULT_SIMILARITY_THRESHOLD = 0;

private static final PromptTemplate DEFAULT_SYSTEM_PROMPT_TEMPLATE = new PromptTemplate("""
{instructions}

Expand All @@ -79,6 +83,8 @@ public final class VectorStoreChatMemoryAdvisor implements BaseChatMemoryAdvisor

private final int defaultTopK;

private final double defaultSimilarityThreshold;

private final String defaultConversationId;

private final int order;
Expand All @@ -88,14 +94,17 @@ public final class VectorStoreChatMemoryAdvisor implements BaseChatMemoryAdvisor
private final VectorStore vectorStore;

private VectorStoreChatMemoryAdvisor(PromptTemplate systemPromptTemplate, int defaultTopK,
String defaultConversationId, int order, Scheduler scheduler, VectorStore vectorStore) {
double defaultSimilarityThreshold, String defaultConversationId, int order, Scheduler scheduler,
VectorStore vectorStore) {
Assert.notNull(systemPromptTemplate, "systemPromptTemplate cannot be null");
Assert.isTrue(defaultTopK > 0, "topK must be greater than 0");
Assert.isTrue(defaultSimilarityThreshold >= 0, "similarityThreshold must be equal to or greater than 0");
Assert.hasText(defaultConversationId, "defaultConversationId cannot be null or empty");
Assert.notNull(scheduler, "scheduler cannot be null");
Assert.notNull(vectorStore, "vectorStore cannot be null");
this.systemPromptTemplate = systemPromptTemplate;
this.defaultTopK = defaultTopK;
this.defaultSimilarityThreshold = defaultSimilarityThreshold;
this.defaultConversationId = defaultConversationId;
this.order = order;
this.scheduler = scheduler;
Expand All @@ -121,10 +130,12 @@ public ChatClientRequest before(ChatClientRequest request, AdvisorChain advisorC
String conversationId = getConversationId(request.context(), this.defaultConversationId);
String query = request.prompt().getUserMessage() != null ? request.prompt().getUserMessage().getText() : "";
int topK = getChatMemoryTopK(request.context());
double similarityThreshold = getChatMemorySimilarityThreshold(request.context());
String filter = DOCUMENT_METADATA_CONVERSATION_ID + "=='" + conversationId + "'";
var searchRequest = org.springframework.ai.vectorstore.SearchRequest.builder()
.query(query)
.topK(topK)
.similarityThreshold(similarityThreshold)
.filterExpression(filter)
.build();
java.util.List<org.springframework.ai.document.Document> documents = this.vectorStore
Expand Down Expand Up @@ -156,6 +167,11 @@ private int getChatMemoryTopK(Map<String, Object> context) {
return context.containsKey(TOP_K) ? Integer.parseInt(context.get(TOP_K).toString()) : this.defaultTopK;
}

private double getChatMemorySimilarityThreshold(Map<String, Object> context) {
return context.containsKey(SIMILARITY_THRESHOLD)
? Double.parseDouble(context.get(SIMILARITY_THRESHOLD).toString()) : this.defaultSimilarityThreshold;
}

@Override
public ChatClientResponse after(ChatClientResponse chatClientResponse, AdvisorChain advisorChain) {
List<Message> assistantMessages = new ArrayList<>();
Expand Down Expand Up @@ -221,6 +237,8 @@ public static class Builder {

private Integer defaultTopK = DEFAULT_TOP_K;

private Double defaultSimilarityThreshold = DEFAULT_SIMILARITY_THRESHOLD;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as above.


private String conversationId = ChatMemory.DEFAULT_CONVERSATION_ID;

private Scheduler scheduler = BaseAdvisor.DEFAULT_SCHEDULER;
Expand Down Expand Up @@ -257,6 +275,17 @@ public Builder defaultTopK(int defaultTopK) {
return this;
}

/**
* Set the similarity threshold for retrieving relevant documents.
* @param defaultSimilarityThreshold the required similarity for documents to
* retrieve
* @return this builder
*/
public Builder defaultSimilarityThreshold(Double defaultSimilarityThreshold) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we don't need to use the Double wrapper class here?

this.defaultSimilarityThreshold = defaultSimilarityThreshold;
return this;
}

/**
* Set the conversation id.
* @param conversationId the conversation id
Expand Down Expand Up @@ -287,8 +316,8 @@ public Builder order(int order) {
* @return the advisor
*/
public VectorStoreChatMemoryAdvisor build() {
return new VectorStoreChatMemoryAdvisor(this.systemPromptTemplate, this.defaultTopK, this.conversationId,
this.order, this.scheduler, this.vectorStore);
return new VectorStoreChatMemoryAdvisor(this.systemPromptTemplate, this.defaultTopK,
this.defaultSimilarityThreshold, this.conversationId, this.order, this.scheduler, this.vectorStore);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,14 @@ void whenDefaultTopKIsNegativeThenThrow() {
.hasMessageContaining("topK must be greater than 0");
}

@Test
void whenDefaultSimilarityThresholdIsLessThanZeroThenThrow() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

assertThatThrownBy(
() -> VectorStoreChatMemoryAdvisor.builder(vectorStore).defaultSimilarityThreshold(-0.1).build())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("similarityThreshold must be equal to or greater than 0");
}

}