Skip to content

Commit e2fa914

Browse files
authored
Merge pull request #1149 from quarkiverse/named-fix
Fix named AiService handling
2 parents dc1d4ae + 75e054f commit e2fa914

File tree

8 files changed

+466
-7
lines changed

8 files changed

+466
-7
lines changed

core/deployment/src/main/java/io/quarkiverse/langchain4j/deployment/AiServicesProcessor.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -718,8 +718,6 @@ public void handleDeclarativeServices(AiServicesRecorder recorder,
718718
allToolProviders.add(toolProvider);
719719
}
720720

721-
bi.getBeanName().ifPresent(beanName -> configurator.named(beanName));
722-
723721
configurator
724722
.addInjectionPoint(ParameterizedType.create(DotNames.CDI_INSTANCE,
725723
new Type[] { ClassType.create(OutputGuardrail.class) }, null))
@@ -1057,12 +1055,16 @@ public void handleAiServices(
10571055
try (ClassCreator classCreator = classCreatorBuilder.build()) {
10581056
if (isRegisteredService) {
10591057
// we need to make this a bean, so we need to add the proper scope annotation
1060-
DotName scopeInfo = declarativeAiServiceItems.stream()
1058+
DeclarativeAiServiceBuildItem matchingBI = declarativeAiServiceItems.stream()
10611059
.filter(bi -> bi.getServiceClassInfo().equals(iface))
10621060
.findFirst().orElseThrow(() -> new IllegalStateException(
1063-
"Unable to determine the CDI scope of " + iface))
1064-
.getCdiScope();
1061+
"Unable to determine the CDI scope of " + iface));
1062+
DotName scopeInfo = matchingBI.getCdiScope();
10651063
classCreator.addAnnotation(scopeInfo.toString());
1064+
if (matchingBI.getBeanName().isPresent()) {
1065+
classCreator.addAnnotation(
1066+
AnnotationInstance.builder(NAMED).add("value", matchingBI.getBeanName().get()).build());
1067+
}
10661068
}
10671069

10681070
FieldDescriptor contextField = classCreator.getFieldCreator("context", QuarkusAiServiceContext.class)

docs/modules/ROOT/pages/includes/quarkus-langchain4j-llama3-java.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Environment variable: `+++QUARKUS_LANGCHAIN4J_LLAMA3_MODELS_PATH+++`
108108
endif::add-copy-button-to-env-var[]
109109
--
110110
|path
111-
|`${user.home}/.langchain4j/models`
111+
|`${user.name}/.llama3java/models`
112112

113113
a| [[quarkus-langchain4j-llama3-java_quarkus-langchain4j-llama3-chat-model-temperature]] [.property-path]##link:#quarkus-langchain4j-llama3-java_quarkus-langchain4j-llama3-chat-model-temperature[`quarkus.langchain4j.llama3.chat-model.temperature`]##
114114

docs/modules/ROOT/pages/includes/quarkus-langchain4j-llama3-java_quarkus.langchain4j.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Environment variable: `+++QUARKUS_LANGCHAIN4J_LLAMA3_MODELS_PATH+++`
108108
endif::add-copy-button-to-env-var[]
109109
--
110110
|path
111-
|`${user.home}/.langchain4j/models`
111+
|`${user.name}/.llama3java/models`
112112

113113
a| [[quarkus-langchain4j-llama3-java_quarkus-langchain4j-llama3-chat-model-temperature]] [.property-path]##link:#quarkus-langchain4j-llama3-java_quarkus-langchain4j-llama3-chat-model-temperature[`quarkus.langchain4j.llama3.chat-model.temperature`]##
114114

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,23 @@ endif::add-copy-button-to-env-var[]
433433
|string
434434
|
435435

436+
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-strict-json-schema]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-strict-json-schema[`quarkus.langchain4j.openai.chat-model.strict-json-schema`]##
437+
438+
[.description]
439+
--
440+
Whether responses follow JSON Schema for Structured Outputs
441+
442+
443+
ifdef::add-copy-button-to-env-var[]
444+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_OPENAI_CHAT_MODEL_STRICT_JSON_SCHEMA+++[]
445+
endif::add-copy-button-to-env-var[]
446+
ifndef::add-copy-button-to-env-var[]
447+
Environment variable: `+++QUARKUS_LANGCHAIN4J_OPENAI_CHAT_MODEL_STRICT_JSON_SCHEMA+++`
448+
endif::add-copy-button-to-env-var[]
449+
--
450+
|boolean
451+
|
452+
436453
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-stop]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-stop[`quarkus.langchain4j.openai.chat-model.stop`]##
437454

438455
[.description]
@@ -1135,6 +1152,23 @@ endif::add-copy-button-to-env-var[]
11351152
|string
11361153
|
11371154

1155+
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-strict-json-schema]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-strict-json-schema[`quarkus.langchain4j.openai."model-name".chat-model.strict-json-schema`]##
1156+
1157+
[.description]
1158+
--
1159+
Whether responses follow JSON Schema for Structured Outputs
1160+
1161+
1162+
ifdef::add-copy-button-to-env-var[]
1163+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_OPENAI__MODEL_NAME__CHAT_MODEL_STRICT_JSON_SCHEMA+++[]
1164+
endif::add-copy-button-to-env-var[]
1165+
ifndef::add-copy-button-to-env-var[]
1166+
Environment variable: `+++QUARKUS_LANGCHAIN4J_OPENAI__MODEL_NAME__CHAT_MODEL_STRICT_JSON_SCHEMA+++`
1167+
endif::add-copy-button-to-env-var[]
1168+
--
1169+
|boolean
1170+
|
1171+
11381172
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-stop]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-stop[`quarkus.langchain4j.openai."model-name".chat-model.stop`]##
11391173

11401174
[.description]

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,23 @@ endif::add-copy-button-to-env-var[]
433433
|string
434434
|
435435

436+
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-strict-json-schema]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-strict-json-schema[`quarkus.langchain4j.openai.chat-model.strict-json-schema`]##
437+
438+
[.description]
439+
--
440+
Whether responses follow JSON Schema for Structured Outputs
441+
442+
443+
ifdef::add-copy-button-to-env-var[]
444+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_OPENAI_CHAT_MODEL_STRICT_JSON_SCHEMA+++[]
445+
endif::add-copy-button-to-env-var[]
446+
ifndef::add-copy-button-to-env-var[]
447+
Environment variable: `+++QUARKUS_LANGCHAIN4J_OPENAI_CHAT_MODEL_STRICT_JSON_SCHEMA+++`
448+
endif::add-copy-button-to-env-var[]
449+
--
450+
|boolean
451+
|
452+
436453
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-stop]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-chat-model-stop[`quarkus.langchain4j.openai.chat-model.stop`]##
437454

438455
[.description]
@@ -1135,6 +1152,23 @@ endif::add-copy-button-to-env-var[]
11351152
|string
11361153
|
11371154

1155+
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-strict-json-schema]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-strict-json-schema[`quarkus.langchain4j.openai."model-name".chat-model.strict-json-schema`]##
1156+
1157+
[.description]
1158+
--
1159+
Whether responses follow JSON Schema for Structured Outputs
1160+
1161+
1162+
ifdef::add-copy-button-to-env-var[]
1163+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_OPENAI__MODEL_NAME__CHAT_MODEL_STRICT_JSON_SCHEMA+++[]
1164+
endif::add-copy-button-to-env-var[]
1165+
ifndef::add-copy-button-to-env-var[]
1166+
Environment variable: `+++QUARKUS_LANGCHAIN4J_OPENAI__MODEL_NAME__CHAT_MODEL_STRICT_JSON_SCHEMA+++`
1167+
endif::add-copy-button-to-env-var[]
1168+
--
1169+
|boolean
1170+
|
1171+
11381172
a| [[quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-stop]] [.property-path]##link:#quarkus-langchain4j-openai_quarkus-langchain4j-openai-model-name-chat-model-stop[`quarkus.langchain4j.openai."model-name".chat-model.stop`]##
11391173

11401174
[.description]

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

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,193 @@ a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-exclude-domains]] [.p
185185
A list of domains to specifically exclude from the search results. Default is ++[]++, which doesn't exclude any domains.
186186

187187

188+
ifdef::add-copy-button-to-env-var[]
189+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_EXCLUDE_DOMAINS+++[]
190+
endif::add-copy-button-to-env-var[]
191+
ifndef::add-copy-button-to-env-var[]
192+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_EXCLUDE_DOMAINS+++`
193+
endif::add-copy-button-to-env-var[]
194+
--
195+
|list of string
196+
|`[]`
197+
198+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-base-url]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-base-url[`quarkus.langchain4j.tavily.base-url`]##
199+
200+
[.description]
201+
--
202+
Base URL of the Tavily API
203+
204+
205+
ifdef::add-copy-button-to-env-var[]
206+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_BASE_URL+++[]
207+
endif::add-copy-button-to-env-var[]
208+
ifndef::add-copy-button-to-env-var[]
209+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_BASE_URL+++`
210+
endif::add-copy-button-to-env-var[]
211+
--
212+
|string
213+
|`https://api.tavily.com`
214+
215+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-api-key]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-api-key[`quarkus.langchain4j.tavily.api-key`]##
216+
217+
[.description]
218+
--
219+
API key for the Tavily API
220+
221+
222+
ifdef::add-copy-button-to-env-var[]
223+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_API_KEY+++[]
224+
endif::add-copy-button-to-env-var[]
225+
ifndef::add-copy-button-to-env-var[]
226+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_API_KEY+++`
227+
endif::add-copy-button-to-env-var[]
228+
--
229+
|string
230+
|required icon:exclamation-circle[title=Configuration property is required]
231+
232+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-max-results]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-max-results[`quarkus.langchain4j.tavily.max-results`]##
233+
234+
[.description]
235+
--
236+
Maximum number of results to return
237+
238+
239+
ifdef::add-copy-button-to-env-var[]
240+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_MAX_RESULTS+++[]
241+
endif::add-copy-button-to-env-var[]
242+
ifndef::add-copy-button-to-env-var[]
243+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_MAX_RESULTS+++`
244+
endif::add-copy-button-to-env-var[]
245+
--
246+
|int
247+
|`5`
248+
249+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-timeout]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-timeout[`quarkus.langchain4j.tavily.timeout`]##
250+
251+
[.description]
252+
--
253+
The timeout duration for Tavily requests.
254+
255+
256+
ifdef::add-copy-button-to-env-var[]
257+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_TIMEOUT+++[]
258+
endif::add-copy-button-to-env-var[]
259+
ifndef::add-copy-button-to-env-var[]
260+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_TIMEOUT+++`
261+
endif::add-copy-button-to-env-var[]
262+
--
263+
|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-{summaryTableId}[icon:question-circle[title=More information about the Duration format]]
264+
|`60S`
265+
266+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-log-requests]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-log-requests[`quarkus.langchain4j.tavily.log-requests`]##
267+
268+
[.description]
269+
--
270+
Whether requests to Tavily should be logged
271+
272+
273+
ifdef::add-copy-button-to-env-var[]
274+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_LOG_REQUESTS+++[]
275+
endif::add-copy-button-to-env-var[]
276+
ifndef::add-copy-button-to-env-var[]
277+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_LOG_REQUESTS+++`
278+
endif::add-copy-button-to-env-var[]
279+
--
280+
|boolean
281+
|`false`
282+
283+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-log-responses]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-log-responses[`quarkus.langchain4j.tavily.log-responses`]##
284+
285+
[.description]
286+
--
287+
Whether responses from Tavily should be logged
288+
289+
290+
ifdef::add-copy-button-to-env-var[]
291+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_LOG_RESPONSES+++[]
292+
endif::add-copy-button-to-env-var[]
293+
ifndef::add-copy-button-to-env-var[]
294+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_LOG_RESPONSES+++`
295+
endif::add-copy-button-to-env-var[]
296+
--
297+
|boolean
298+
|`false`
299+
300+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-search-depth]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-search-depth[`quarkus.langchain4j.tavily.search-depth`]##
301+
302+
[.description]
303+
--
304+
The search depth to use. This can be "basic" or "advanced". Basic is the default.
305+
306+
307+
ifdef::add-copy-button-to-env-var[]
308+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_SEARCH_DEPTH+++[]
309+
endif::add-copy-button-to-env-var[]
310+
ifndef::add-copy-button-to-env-var[]
311+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_SEARCH_DEPTH+++`
312+
endif::add-copy-button-to-env-var[]
313+
--
314+
a|`basic`, `advanced`
315+
|`basic`
316+
317+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-answer]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-answer[`quarkus.langchain4j.tavily.include-answer`]##
318+
319+
[.description]
320+
--
321+
Include a short answer to original query. Default is false.
322+
323+
324+
ifdef::add-copy-button-to-env-var[]
325+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_ANSWER+++[]
326+
endif::add-copy-button-to-env-var[]
327+
ifndef::add-copy-button-to-env-var[]
328+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_ANSWER+++`
329+
endif::add-copy-button-to-env-var[]
330+
--
331+
|boolean
332+
|`false`
333+
334+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-raw-content]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-raw-content[`quarkus.langchain4j.tavily.include-raw-content`]##
335+
336+
[.description]
337+
--
338+
Include the cleaned and parsed HTML content of each search result. Default is false.
339+
340+
341+
ifdef::add-copy-button-to-env-var[]
342+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_RAW_CONTENT+++[]
343+
endif::add-copy-button-to-env-var[]
344+
ifndef::add-copy-button-to-env-var[]
345+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_RAW_CONTENT+++`
346+
endif::add-copy-button-to-env-var[]
347+
--
348+
|boolean
349+
|`false`
350+
351+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-domains]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-include-domains[`quarkus.langchain4j.tavily.include-domains`]##
352+
353+
[.description]
354+
--
355+
A list of domains to specifically include in the search results. Default is ++[]++, which includes all domains.
356+
357+
358+
ifdef::add-copy-button-to-env-var[]
359+
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_DOMAINS+++[]
360+
endif::add-copy-button-to-env-var[]
361+
ifndef::add-copy-button-to-env-var[]
362+
Environment variable: `+++QUARKUS_LANGCHAIN4J_TAVILY_INCLUDE_DOMAINS+++`
363+
endif::add-copy-button-to-env-var[]
364+
--
365+
|list of string
366+
|`[]`
367+
368+
a| [[quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-exclude-domains]] [.property-path]##link:#quarkus-langchain4j-tavily_quarkus-langchain4j-tavily-exclude-domains[`quarkus.langchain4j.tavily.exclude-domains`]##
369+
370+
[.description]
371+
--
372+
A list of domains to specifically exclude from the search results. Default is ++[]++, which doesn't exclude any domains.
373+
374+
188375
ifdef::add-copy-button-to-env-var[]
189376
Environment variable: env_var_with_copy_button:+++QUARKUS_LANGCHAIN4J_TAVILY_EXCLUDE_DOMAINS+++[]
190377
endif::add-copy-button-to-env-var[]

0 commit comments

Comments
 (0)