* Remove inheritance from HashMap
* No more subclasses per model provider
* Builder class for ChatResponse
* Fix the AbstractResponseMetadata#AI_METADATA_STRING parameter order
* ChatResponseMetadata ignore Null values.
- add new spring-ai-vertex-ai-embedding project.
- add VertexAiTextEmbeddingModel and VertexAiMultimodalEmbeddingMode with related options configuration classes.
- add ITs
- add auto-configuraiton and boot starters.
- register to BOM.
- add documentation.
- add multimodal embedding documentation
- extend the Embedding metdata so that it can keep references to the source document's data, Id, mediatype
Resolves#1013
Related to #1009
ChatClient already provides the .chatResponse() method to return the entire ChatResponse instance.
It also provides a set of overloaded .entity(Type) methods to provide Type-converted responses.
The new .responseEntity(Type) method returns a ResponseEntity<ChatResponse, T> instance, encapsulating
both the ChatResponse and the requested Type-converted response entity.
This change allows for more flexibility when handling different response types and facilitates
easier integration with other components that expect ResponseEntity instances.
- Add RequestResponseAdvisor interface with adviseReqeust and adviseResponse methods.
The adviseRequest method takes and returns AdvisedRequest.
The adviseResponse method takes and returns ChatRequest.
- Add ChatClient#ChatClientRequets advisor(...) methods to register advisros.
ChatClient call the registered advisors in order before sealing the ChatClientRequest into a Prompt and call the model
and after the model response.
- Implement PromptChatMemoryAdvisor that uses the ChatMemory and the systemem prompt.
- Implement MessageChatMemoryAdvisor that usees the ChatMemory and the prompt messages.
- Implement VectorStoreChatMemoryAdvisor that uses VecrStore for long term message history.
- Add tests.
- Add shared context to the RequestResponseAdvisor's flow, Context is shared between the request and the response
- Add advisor parameters that are passed through the context
- add support for custom StructuredOutputConverters usng entity(outputConverterInstance)
- add mutate() method that returns ChatClient.Builder to create a new ChatClient whose
settings are replicated from the ChatClient's default settings.
- add prompt().mutate() method that returns ChatClient.Builder to create a new ChatClient
whose settings are replicated from the current default and prompt settings.
* Move ChatClient and related classes into the chat.client package
* Move ChatModel and related class into the chat.model package
* Smaller refactorings to remove DSM cycles
* Update README.md
* Rename the ModelClient class hierarchy into Model:
- Rename ModelClient into Model. Update all code and doc references.
- Rename ChatClient to ChatModel. Update all ChatClient suffixes and chatClient fields and variables in code and doc.
- Rename EmbeddingClient into EmbeddingModel. Update the XxxEmbeddingClient class and variable suffixes and embeddingClient variables and fields in code and docs.
- Rename ImageClient into ImageModel.
- Rename SpeechClient into SpeechModel.
- Rename TranscriptionClient into TranscriptionModel.
- Update all javadocs and antora pages. Update the related diagrams.
* Create fluent API in ChatClient interface that now includes streaming support
* Add OpenAI FunctionCallbackWrapper2IT auto-config tests.
* Add ChatClientTest mockito testing.
* Add ChatModel#getDefaultOptions(), and remove @FunctionalInterface
* ChatModel enums extend the new ModelDescription interface.
* Implement fromOptions copy method in every ChatOptions implementation.
* Extend ChatClient to use the model default options if not provided explicitly.
* Update readme to provide guidance on how to adapt to breaking changes.
Co-authored-by: Christian Tzolov <ctzolov@vmware.com>
Co-authored-by: Mark Pollack <mpollack@vmware.com>
Add ParametrizedTypeReference constructoers along the Clas<T> such.
Convert the Class into ParametrizedTypeReference internally.
Update tests and docs.
* Add ChatBot and basic DefaultChatBot
* Add streaming ChatBot support.
* Add Evaluator interface and RelevancyEvaluator implementation
* Add Content data type abstraction for Document and Message
* Renaming and package refactoring
* update .gitignore to allow node package name
* Add List<Media> to node and move ai.transformer package to ai.prompt.transformer
* Add Short/Long term memory support.
* Add mixing transformers support
Docs TBD
- Old OutputParser, BeanOutputParser, ListOutputParser and MapOutputParser classes are depredated
in favour of the new StructuredOutputConverter, BeanOutputConverter, ListOutputConverter and
MapOutputConverter implementations.
Later are drop-in replacements for the former ones, and provide the same functionality.
- Keep the existing parser package and classes for backward compatibility.
- Adjust the PromptTemplate for backward compatibility
- Update all existing tests to use the new Structured Output API.
- Improve the documentation for structured outputs.
This change addresses and fixes BeanOutputParserTest failures observed
on the Windows platform by ensuring consistent line ending normalization
across different operating systems.
Fixes#279
- Remove the SpringAiFunction annotation in favour of palin Functino Beans, @Description annotation and JacksonClassAnnotation.
- Update the function calling documentation to reflect latest changes.
- Add a new openai option (and related property): spring.ai.openai.chat.options.beanFunctions.<function-name>.<description>
Map of bean names and their descriptions to register as function callbacks.
- Refactor the OpenAiAutoConfiguration to resolve and register the beans in beanFunctions.
- Add dependency on Spring Cloud Function to use the FunctionContextUtils and FunctionTypeUtils
Those utilites help to resolve the function input type signature.
- Add DefaultToolFunctionCallback class for manually wrapping Functions.
- Update the ITs.
- Now you can use an arbitrary ChatOption instance as Prompt options for the OpenAIChatClinet.
- Add Unit tests for OpenAiApi and ModelOptionsUtils.
- Document portable options support.
- Craete new EmbeddingOptions -> ModelOptions, EmbeddigRequest -> ModelRequest, EmbeddingResponseMetadata -> ResponseMetadata and EmbeddignResultMetadata -> ResultMetadata.
- Make the EmbeddigClient interface extend from ModelClient<EmbeddingRequest, EmbeddingResponse>, EmbeddingResponse implements ModelResponise and Embedding implements ModelResult.
- Fix affected tests.
- Steramline the EmbeddingClient interface with default method implementations based on call.
- Merge EmbeddingUtil into AbstractEmbeddingClient
* An abstract API for AI model clients
* Providing portable client request options while still allowing vendor specific options when required. Implemented only for StabilityAI/OpenAI ImageClient
* Support for text->image for openai and stabilityai.
Partial fix for #27 : Text To Image and Fixes#266 and Fixes#261
- fix all class names with AiClient or AiStreamingClient name prefixes.
- fix all variables or method name prefixes.
- fix the javadocs, readmes and refference documentation.