Skip to content

Commit 2aa2766

Browse files
committed
feat: JaxRsSdkHttpClient added
- Adjust configurations to make the usage simpler - Add sync and async JaxRsSdkHttpClients
1 parent 302acd4 commit 2aa2766

25 files changed

+7487
-849
lines changed

docs/modules/ROOT/pages/includes/quarkus-langchain4j-bedrock.adoc

Lines changed: 2932 additions & 358 deletions
Large diffs are not rendered by default.

docs/modules/ROOT/pages/includes/quarkus-langchain4j-bedrock_quarkus.langchain4j.adoc

Lines changed: 2932 additions & 358 deletions
Large diffs are not rendered by default.

model-providers/bedrock/deployment/src/main/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockProcessor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.quarkiverse.langchain4j.deployment.items.SelectedChatModelProviderBuildItem;
1919
import io.quarkiverse.langchain4j.deployment.items.SelectedEmbeddingModelCandidateBuildItem;
2020
import io.quarkiverse.langchain4j.runtime.NamedConfigUtil;
21+
import io.quarkiverse.langchain4j.runtime.config.LangChain4jConfig;
2122
import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
2223
import io.quarkus.deployment.Capabilities;
2324
import io.quarkus.deployment.Capability;
@@ -66,6 +67,7 @@ void generateBeans(BedrockRecorder recorder,
6667
List<SelectedChatModelProviderBuildItem> selectedChatItem,
6768
List<SelectedEmbeddingModelCandidateBuildItem> selectedEmbedding,
6869
LangChain4jBedrockConfig config,
70+
LangChain4jConfig rootConfig,
6971
BuildProducer<SyntheticBeanBuildItem> beanProducer) {
7072

7173
for (var selected : selectedChatItem) {
@@ -76,7 +78,7 @@ void generateBeans(BedrockRecorder recorder,
7678
.setRuntimeInit()
7779
.defaultBean()
7880
.scope(ApplicationScoped.class)
79-
.supplier(recorder.chatModel(config, configName));
81+
.supplier(recorder.chatModel(config, configName, rootConfig));
8082

8183
addQualifierIfNecessary(builder, configName);
8284
beanProducer.produce(builder.done());
@@ -86,7 +88,7 @@ void generateBeans(BedrockRecorder recorder,
8688
.setRuntimeInit()
8789
.defaultBean()
8890
.scope(ApplicationScoped.class)
89-
.supplier(recorder.streamingChatModel(config, configName));
91+
.supplier(recorder.streamingChatModel(config, configName, rootConfig));
9092
addQualifierIfNecessary(streamingBuilder, configName);
9193
beanProducer.produce(streamingBuilder.done());
9294
}
@@ -101,7 +103,7 @@ void generateBeans(BedrockRecorder recorder,
101103
.defaultBean()
102104
.unremovable()
103105
.scope(ApplicationScoped.class)
104-
.supplier(recorder.embeddingModel(config, configName));
106+
.supplier(recorder.embeddingModel(config, configName, rootConfig));
105107
addQualifierIfNecessary(builder, configName);
106108
beanProducer.produce(builder.done());
107109
}

model-providers/bedrock/deployment/src/test/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockAntrophicStreamingChatModelTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ class BedrockAntrophicStreamingChatModelTest extends BedrockTestBase {
3333
.addClass(TestCredentialsProvider.class)
3434
.addClass(BedrockStreamHelper.class))
3535
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.model-id", "anthropic.claude-v2")
36-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.region", "eu-central-1")
37-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.endpoint-override",
36+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.region", "eu-central-1")
37+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.endpoint-override",
3838
"http://localhost:%d".formatted(WM_PORT))
39-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.credentials-provider",
39+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.credentials-provider",
4040
"TestCredentialsProvider")
4141
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-requests", "true")
4242
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-responses", "true");

model-providers/bedrock/deployment/src/test/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockChatModelTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ class BedrockChatModelTest extends BedrockTestBase {
2828
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
2929
.addClass(TestCredentialsProvider.class))
3030
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.model-id", "amazon.titan-text-express-v1")
31-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.region", "eu-central-1")
32-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.endpoint-override",
31+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.region", "eu-central-1")
32+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.endpoint-override",
3333
"http://localhost:%d".formatted(WM_PORT))
34-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.credentials-provider",
34+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.credentials-provider",
3535
"TestCredentialsProvider")
3636
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-requests", "true")
3737
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-responses", "true")
38+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-body", "true")
3839
.overrideRuntimeConfigKey("quarkus.log.category.\"io.quarkiverse.langchain4j.bedrock\".level", "DEBUG");
3940

4041
@Inject

model-providers/bedrock/deployment/src/test/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockEmbeddingModelCohereTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ class BedrockEmbeddingModelCohereTest extends BedrockTestBase {
3535
.addClass(TestCredentialsProvider.class))
3636
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.model-id", "cohere.embed-english-v3")
3737
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.cohere.input-type", "search_query")
38-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.region", "eu-central-1")
39-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.endpoint-override",
38+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.region", "eu-central-1")
39+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.endpoint-override",
4040
"http://localhost:%d".formatted(WM_PORT))
41-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.credentials-provider",
41+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.credentials-provider",
4242
"TestCredentialsProvider")
4343
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-requests", "true")
4444
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-responses", "true")

model-providers/bedrock/deployment/src/test/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockEmbeddingModelTitanTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ class BedrockEmbeddingModelTitanTest extends BedrockTestBase {
3434
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
3535
.addClass(TestCredentialsProvider.class))
3636
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.model-id", "amazon.titan-embed-text-v1")
37-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.region", "eu-central-1")
38-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.endpoint-override",
37+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.region", "eu-central-1")
38+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.endpoint-override",
3939
"http://localhost:%d".formatted(WM_PORT))
40-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.client.credentials-provider",
40+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.embedding-model.aws.credentials-provider",
4141
"TestCredentialsProvider")
4242
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-requests", "true")
4343
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-responses", "true")

model-providers/bedrock/deployment/src/test/java/io/quarkiverse/langchain4j/bedrock/deployment/BedrockStreamingChatModelTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,14 @@ class BedrockStreamingChatModelTest extends BedrockTestBase {
4141
.addClass(TestCredentialsProvider.class)
4242
.addClass(BedrockStreamHelper.class))
4343
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.model-id", "amazon.titan-text-express-v1")
44-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.region", "eu-central-1")
45-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.endpoint-override",
44+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.region", "eu-central-1")
45+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.endpoint-override",
4646
"http://localhost:%d".formatted(WM_PORT))
47-
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.client.credentials-provider",
47+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.chat-model.aws.credentials-provider",
4848
"TestCredentialsProvider")
4949
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-requests", "true")
5050
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-responses", "true")
51+
.overrideRuntimeConfigKey("quarkus.langchain4j.bedrock.log-body", "true")
5152
.overrideRuntimeConfigKey("quarkus.log.category.\"io.quarkiverse.langchain4j.bedrock\".level", "DEBUG");
5253

5354
@Inject

model-providers/bedrock/runtime/pom.xml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,30 @@
5252
<groupId>com.github.spullara.mustache.java</groupId>
5353
<artifactId>compiler</artifactId>
5454
</exclusion>
55+
<exclusion>
56+
<groupId>software.amazon.awssdk</groupId>
57+
<artifactId>netty-nio-client</artifactId>
58+
</exclusion>
59+
<exclusion>
60+
<groupId>software.amazon.awssdk</groupId>
61+
<artifactId>url-connection-client</artifactId>
62+
</exclusion>
63+
<exclusion>
64+
<groupId>software.amazon.awssdk</groupId>
65+
<artifactId>apache-client</artifactId>
66+
</exclusion>
5567
</exclusions>
5668
</dependency>
5769

5870
<dependency>
59-
<groupId>org.graalvm.sdk</groupId>
60-
<artifactId>graal-sdk</artifactId>
61-
<scope>provided</scope>
71+
<groupId>io.quarkus</groupId>
72+
<artifactId>quarkus-rest-client-jaxrs</artifactId>
6273
</dependency>
6374

6475
<dependency>
65-
<groupId>software.amazon.awssdk</groupId>
66-
<artifactId>sts</artifactId>
67-
<scope>test</scope>
76+
<groupId>org.graalvm.sdk</groupId>
77+
<artifactId>graal-sdk</artifactId>
78+
<scope>provided</scope>
6879
</dependency>
6980

7081
<dependency>

model-providers/bedrock/runtime/src/main/java/io/quarkiverse/langchain4j/bedrock/runtime/BedrockConverseStreamingChatModel.java

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.quarkiverse.langchain4j.bedrock.runtime;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import java.util.function.Consumer;
65
import java.util.function.Function;
@@ -11,14 +10,12 @@
1110
import dev.langchain4j.data.message.SystemMessage;
1211
import dev.langchain4j.data.message.ToolExecutionResultMessage;
1312
import dev.langchain4j.data.message.UserMessage;
14-
import dev.langchain4j.model.StreamingResponseHandler;
1513
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
1614
import dev.langchain4j.model.chat.request.ChatRequest;
1715
import dev.langchain4j.model.chat.response.ChatResponse;
1816
import dev.langchain4j.model.chat.response.ChatResponseMetadata;
1917
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
2018
import dev.langchain4j.model.output.FinishReason;
21-
import dev.langchain4j.model.output.Response;
2219
import dev.langchain4j.model.output.TokenUsage;
2320
import io.quarkiverse.langchain4j.bedrock.runtime.config.ChatModelConfig;
2421
import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClient;
@@ -46,33 +43,6 @@ public BedrockConverseStreamingChatModel(final BedrockRuntimeAsyncClient client,
4643
this.config = config;
4744
}
4845

49-
@Override
50-
public void generate(String userMessage, StreamingResponseHandler<AiMessage> handler) {
51-
List<ChatMessage> messages = new ArrayList<>();
52-
messages.add(new UserMessage(userMessage));
53-
generate(messages, handler);
54-
}
55-
56-
@Override
57-
public void generate(final List<ChatMessage> messages, final StreamingResponseHandler<AiMessage> handler) {
58-
chat(messages, new StreamingChatResponseHandler() {
59-
@Override
60-
public void onPartialResponse(final String partialResponse) {
61-
handler.onNext(partialResponse);
62-
}
63-
64-
@Override
65-
public void onCompleteResponse(final ChatResponse completeResponse) {
66-
handler.onComplete(Response.from(completeResponse.aiMessage()));
67-
}
68-
69-
@Override
70-
public void onError(final Throwable error) {
71-
handler.onError(error);
72-
}
73-
});
74-
}
75-
7646
@Override
7747
public void chat(final ChatRequest chatRequest, final StreamingChatResponseHandler handler) {
7848
StreamContext context = new StreamContext(handler);

0 commit comments

Comments
 (0)