langchain4j/langchain4j-vertex-ai
Eric Deandrea c7c4ee8eab
Allowing model builders to be extended and to be provided by `ServiceLoader`s (#531)
This is a small prototype based on discussions originating from
https://github.com/ai-for-java/openai4j/pull/13

The approach I took here is to allow for decorating the models/builders
with additional functionality without having to extend model classes or
builders. I did it for a single model in this prototype - the
`OpenAiChatModel`, but this pattern could be applied to all of the other
models across Langchain4J.

That doesn't mean you couldn't extend the model classes if you wanted to
use inheritance. I just try to avoid it and use composition instead.

I also added a test which shows how it would be used. Downstream
libraries (like Spring Boot or Quarkus) could use this mechanism to
extend/enhance with their own capabilities which aren't necessarily part
of the model.

Let me know what you think @geoand / @langchain4j !

Happy to continue conversation and see where we can bring this!
2024-01-25 09:55:02 +01:00
..
src Allowing model builders to be extended and to be provided by `ServiceLoader`s (#531) 2024-01-25 09:55:02 +01:00
pom.xml Fix #444: Added missing GraalVM metadata for Gson and excluded commons-logging (#482) 2024-01-09 19:49:09 +01:00