[FEATURE]: Custom output parsing for AI services (fixes TODO) #1118
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change gives users the ability to provide custom output parsers to AI services.
-- Context --
Previously, users were constrained to the set of data types that were supported by langchain4j (most primitives, string lists, string sets, enums, and JSON POJOs).
-- Change --
Users can now provide a custom ParserProvider when creating an AI service via the builder, or can provide individual OutputParsers on each service method with the @parser annotation.
This enables users to have full control of the output parsing process, while at the same time they continue to benefit from all the existing output parsers that come bundled with langchain4j.
-- Checklist --
Before submitting this PR, please check the following points:
main modules are green
Issue
Fixes TODO for supporting custom parsing: https://github.com/langchain4j/langchain4j/blob/main/langchain4j/src/main/java/dev/langchain4j/service/DefaultAiServices.java#L100
General checklist
Checklist for adding new model integration
Checklist for adding new embedding store integration
{NameOfIntegration}EmbeddingStoreIT
that extends from eitherEmbeddingStoreIT
orEmbeddingStoreWithFilteringIT
Checklist for changing existing embedding store integration
{NameOfIntegration}EmbeddingStore
works correctly with the data persisted using the latest released version of LangChain4j