This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 9aac05f269fd Add camel-openai to catalog
9aac05f269fd is described below
commit 9aac05f269fd98dad997d00c49f7e53aef7c97d1
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jan 12 07:32:06 2026 +0100
Add camel-openai to catalog
---
.../org/apache/camel/catalog/components.properties | 1 +
.../apache/camel/catalog/components/openai.json | 53 +++
.../org/apache/camel/main/components.properties | 1 +
.../builder/endpoint/EndpointBuilderFactory.java | 1 +
.../camel/builder/endpoint/EndpointBuilders.java | 1 +
.../builder/endpoint/StaticEndpointBuilders.java | 40 ++
.../endpoint/dsl/OpenAIEndpointBuilderFactory.java | 512 +++++++++++++++++++++
.../camel-component-known-dependencies.properties | 1 +
.../apache/camel/maven/packaging/MojoHelper.java | 2 +-
9 files changed, 611 insertions(+), 1 deletion(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index f3c3d61cf8ce..20a7c2ca32d1 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -265,6 +265,7 @@ oaipmh
olingo2
olingo4
once
+openai
opensearch
openshift-build-configs
openshift-builds
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
new file mode 100644
index 000000000000..a091fe5a9b02
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
@@ -0,0 +1,53 @@
+{
+ "component": {
+ "kind": "component",
+ "name": "openai",
+ "title": "OpenAI",
+ "description": "OpenAI endpoint for chat completion.",
+ "deprecated": false,
+ "firstVersion": "4.17.0",
+ "label": "ai",
+ "javaType": "org.apache.camel.component.openai.OpenAIComponent",
+ "supportLevel": "Preview",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-openai",
+ "version": "4.17.0-SNAPSHOT",
+ "scheme": "openai",
+ "extendsScheme": "",
+ "syntax": "openai:operation",
+ "async": false,
+ "api": false,
+ "consumerOnly": false,
+ "producerOnly": true,
+ "lenientProperties": false,
+ "browsable": false,
+ "remote": true
+ },
+ "componentProperties": {
+ "apiKey": { "index": 0, "kind": "property", "displayName": "Api Key",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Default API key for all endpoints" },
+ "baseUrl": { "index": 1, "kind": "property", "displayName": "Base Url",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Default base URL for all endpoints" },
+ "lazyStartProducer": { "index": 2, "kind": "property", "displayName":
"Lazy Start Producer", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false, "description":
"Whether the producer should be started lazy (on the first message). By
starting lazy you can use this to allow CamelContext and routes to startup in
situations where a producer may otherwise fail [...]
+ "model": { "index": 3, "kind": "property", "displayName": "Model",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Default model for all endpoints" },
+ "autowiredEnabled": { "index": 4, "kind": "property", "displayName":
"Autowired Enabled", "group": "advanced", "label": "advanced", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": true, "description":
"Whether autowiring is enabled. This is used for automatic autowiring options
(the option must be marked as autowired) by looking up in the registry to find
if there is a single instance of matching t [...]
+ },
+ "properties": {
+ "operation": { "index": 0, "kind": "path", "displayName": "Operation",
"group": "producer", "label": "", "required": true, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The operation to perform
(currently only chat-completion is supported)" },
+ "additionalBodyProperty": { "index": 1, "kind": "parameter",
"displayName": "Additional Body Property", "group": "producer", "label": "",
"required": false, "type": "object", "javaType":
"java.util.Map<java.lang.String, java.lang.Object>", "prefix":
"additionalBodyProperty.", "multiValue": true, "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configur [...]
+ "apiKey": { "index": 2, "kind": "parameter", "displayName": "Api Key",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": true, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "OpenAI API key. Can also be set via
OPENAI_API_KEY environment variable." },
+ "baseUrl": { "index": 3, "kind": "parameter", "displayName": "Base Url",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Base URL for OpenAI API. Defaults to OpenAI's
official endpoint. Can be used for local or third-p [...]
+ "conversationHistoryProperty": { "index": 4, "kind": "parameter",
"displayName": "Conversation History Property", "group": "producer", "label":
"", "required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "defaultValue": "CamelOpenAIConversationHistory", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Exchan [...]
+ "conversationMemory": { "index": 5, "kind": "parameter", "displayName":
"Conversation Memory", "group": "producer", "label": "", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Enable conversation memory per Exchange" },
+ "developerMessage": { "index": 6, "kind": "parameter", "displayName":
"Developer Message", "group": "producer", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "Developer message to
prepend before user messages" },
+ "jsonSchema": { "index": 7, "kind": "parameter", "displayName": "Json
Schema", "group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "supportFileReference": true,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "JSON schema for
structured output validation" },
+ "maxTokens": { "index": 8, "kind": "parameter", "displayName": "Max
Tokens", "group": "producer", "label": "", "required": false, "type":
"integer", "javaType": "java.lang.Integer", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "Maximum number of tokens
to generate" },
+ "model": { "index": 9, "kind": "parameter", "displayName": "Model",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The model to use for chat completion" },
+ "outputClass": { "index": 10, "kind": "parameter", "displayName": "Output
Class", "group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Fully qualified class name for structured
output using response format" },
+ "storeFullResponse": { "index": 11, "kind": "parameter", "displayName":
"Store Full Response", "group": "producer", "label": "", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Store the full response in the exchange
property 'CamelOpenA [...]
+ "streaming": { "index": 12, "kind": "parameter", "displayName":
"Streaming", "group": "producer", "label": "", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "Enable streaming
responses" },
+ "systemMessage": { "index": 13, "kind": "parameter", "displayName":
"System Message", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "System message to
prepend. When set and conversationMemory is enabled, the conversat [...]
+ "temperature": { "index": 14, "kind": "parameter", "displayName":
"Temperature", "group": "producer", "label": "", "required": false, "type":
"number", "javaType": "java.lang.Double", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "Temperature for response
generation (0.0 to 2.0)" },
+ "topP": { "index": 15, "kind": "parameter", "displayName": "Top P",
"group": "producer", "label": "", "required": false, "type": "number",
"javaType": "java.lang.Double", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "Top P for response generation (0.0 to 1.0)" },
+ "userMessage": { "index": 16, "kind": "parameter", "displayName": "User
Message", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "Default user message
text to use when no prompt is provided" },
+ "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produ [...]
+ }
+}
diff --git
a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index f3c3d61cf8ce..20a7c2ca32d1 100644
---
a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++
b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -265,6 +265,7 @@ oaipmh
olingo2
olingo4
once
+openai
opensearch
openshift-build-configs
openshift-builds
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 14e58b9299f6..9925b65aa6b4 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -275,6 +275,7 @@ public interface EndpointBuilderFactory
org.apache.camel.builder.endpoint.dsl.Olingo2EndpointBuilderFactory.Olingo2Builders,
org.apache.camel.builder.endpoint.dsl.Olingo4EndpointBuilderFactory.Olingo4Builders,
org.apache.camel.builder.endpoint.dsl.OnceEndpointBuilderFactory.OnceBuilders,
+
org.apache.camel.builder.endpoint.dsl.OpenAIEndpointBuilderFactory.OpenAIBuilders,
org.apache.camel.builder.endpoint.dsl.OpenTelemetryEndpointBuilderFactory.OpenTelemetryBuilders,
org.apache.camel.builder.endpoint.dsl.OpensearchEndpointBuilderFactory.OpensearchBuilders,
org.apache.camel.builder.endpoint.dsl.OpenshiftBuildConfigsEndpointBuilderFactory.OpenshiftBuildConfigsBuilders,
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index a7e25370d80a..770ff9b320c4 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -272,6 +272,7 @@ public interface EndpointBuilders
org.apache.camel.builder.endpoint.dsl.Olingo2EndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.Olingo4EndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.OnceEndpointBuilderFactory,
+ org.apache.camel.builder.endpoint.dsl.OpenAIEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.OpenTelemetryEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.OpensearchEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.OpenshiftBuildConfigsEndpointBuilderFactory,
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 85b35ea67839..2f216a521aa0 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -11966,6 +11966,46 @@ public class StaticEndpointBuilders {
public static OnceEndpointBuilderFactory.OnceEndpointBuilder once(String
componentName, String path) {
return OnceEndpointBuilderFactory.endpointBuilder(componentName, path);
}
+ /**
+ * OpenAI (camel-openai)
+ * OpenAI endpoint for chat completion.
+ *
+ * Category: ai
+ * Since: 4.17
+ * Maven coordinates: org.apache.camel:camel-openai
+ *
+ * Syntax: <code>openai:operation</code>
+ *
+ * Path parameter: operation (required)
+ * The operation to perform (currently only chat-completion is supported)
+ *
+ * @param path operation
+ * @return the dsl builder
+ */
+ public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder
openai(String path) {
+ return openai("openai", path);
+ }
+ /**
+ * OpenAI (camel-openai)
+ * OpenAI endpoint for chat completion.
+ *
+ * Category: ai
+ * Since: 4.17
+ * Maven coordinates: org.apache.camel:camel-openai
+ *
+ * Syntax: <code>openai:operation</code>
+ *
+ * Path parameter: operation (required)
+ * The operation to perform (currently only chat-completion is supported)
+ *
+ * @param componentName to use a custom component name for the endpoint
+ * instead of the default name
+ * @param path operation
+ * @return the dsl builder
+ */
+ public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder
openai(String componentName, String path) {
+ return OpenAIEndpointBuilderFactory.endpointBuilder(componentName,
path);
+ }
/**
* OpenSearch (camel-opensearch)
* Send requests to OpenSearch via Java Client API.
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
new file mode 100644
index 000000000000..4b3f5c9ae3d5
--- /dev/null
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
@@ -0,0 +1,512 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder.endpoint.dsl;
+
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
+import javax.annotation.processing.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * OpenAI endpoint for chat completion.
+ *
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface OpenAIEndpointBuilderFactory {
+
+ /**
+ * Builder for endpoint for the OpenAI component.
+ */
+ public interface OpenAIEndpointBuilder
+ extends
+ EndpointProducerBuilder {
+ default AdvancedOpenAIEndpointBuilder advanced() {
+ return (AdvancedOpenAIEndpointBuilder) this;
+ }
+
+ /**
+ * Additional JSON properties to include in the request body (e.g.
+ * additionalBodyProperty.traceId=123). This is a multi-value option
+ * with prefix: additionalBodyProperty.
+ *
+ * The option is a: <code>java.util.Map<java.lang.String,
+ * java.lang.Object></code> type.
+ * The option is multivalued, and you can use the
+ * additionalBodyProperty(String, Object) method to add a value (call
+ * the method multiple times to set more values).
+ *
+ * Group: producer
+ *
+ * @param key the option key
+ * @param value the option value
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder additionalBodyProperty(String key,
Object value) {
+ doSetMultiValueProperty("additionalBodyProperty",
"additionalBodyProperty." + key, value);
+ return this;
+ }
+ /**
+ * Additional JSON properties to include in the request body (e.g.
+ * additionalBodyProperty.traceId=123). This is a multi-value option
+ * with prefix: additionalBodyProperty.
+ *
+ * The option is a: <code>java.util.Map<java.lang.String,
+ * java.lang.Object></code> type.
+ * The option is multivalued, and you can use the
+ * additionalBodyProperty(String, Object) method to add a value (call
+ * the method multiple times to set more values).
+ *
+ * Group: producer
+ *
+ * @param values the values
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder additionalBodyProperty(Map values) {
+ doSetMultiValueProperties("additionalBodyProperty",
"additionalBodyProperty.", values);
+ return this;
+ }
+ /**
+ * OpenAI API key. Can also be set via OPENAI_API_KEY environment
+ * variable.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param apiKey the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder apiKey(String apiKey) {
+ doSetProperty("apiKey", apiKey);
+ return this;
+ }
+ /**
+ * Base URL for OpenAI API. Defaults to OpenAI's official endpoint. Can
+ * be used for local or third-party providers.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param baseUrl the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder baseUrl(String baseUrl) {
+ doSetProperty("baseUrl", baseUrl);
+ return this;
+ }
+ /**
+ * Exchange property name for storing conversation history.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Default: CamelOpenAIConversationHistory
+ * Group: producer
+ *
+ * @param conversationHistoryProperty the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder conversationHistoryProperty(String
conversationHistoryProperty) {
+ doSetProperty("conversationHistoryProperty",
conversationHistoryProperty);
+ return this;
+ }
+ /**
+ * Enable conversation memory per Exchange.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param conversationMemory the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder conversationMemory(boolean
conversationMemory) {
+ doSetProperty("conversationMemory", conversationMemory);
+ return this;
+ }
+ /**
+ * Enable conversation memory per Exchange.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param conversationMemory the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder conversationMemory(String
conversationMemory) {
+ doSetProperty("conversationMemory", conversationMemory);
+ return this;
+ }
+ /**
+ * Developer message to prepend before user messages.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param developerMessage the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder developerMessage(String
developerMessage) {
+ doSetProperty("developerMessage", developerMessage);
+ return this;
+ }
+ /**
+ * JSON schema for structured output validation.
+ *
+ * This option can also be loaded from an existing file, by prefixing
+ * with file: or classpath: followed by the location of the file.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param jsonSchema the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder jsonSchema(String jsonSchema) {
+ doSetProperty("jsonSchema", jsonSchema);
+ return this;
+ }
+ /**
+ * Maximum number of tokens to generate.
+ *
+ * The option is a: <code>java.lang.Integer</code> type.
+ *
+ * Group: producer
+ *
+ * @param maxTokens the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder maxTokens(Integer maxTokens) {
+ doSetProperty("maxTokens", maxTokens);
+ return this;
+ }
+ /**
+ * Maximum number of tokens to generate.
+ *
+ * The option will be converted to a <code>java.lang.Integer</code>
+ * type.
+ *
+ * Group: producer
+ *
+ * @param maxTokens the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder maxTokens(String maxTokens) {
+ doSetProperty("maxTokens", maxTokens);
+ return this;
+ }
+ /**
+ * The model to use for chat completion.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param model the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder model(String model) {
+ doSetProperty("model", model);
+ return this;
+ }
+ /**
+ * Fully qualified class name for structured output using response
+ * format.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param outputClass the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder outputClass(String outputClass) {
+ doSetProperty("outputClass", outputClass);
+ return this;
+ }
+ /**
+ * Store the full response in the exchange property
+ * 'CamelOpenAIResponse' in non-streaming mode.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param storeFullResponse the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder storeFullResponse(boolean
storeFullResponse) {
+ doSetProperty("storeFullResponse", storeFullResponse);
+ return this;
+ }
+ /**
+ * Store the full response in the exchange property
+ * 'CamelOpenAIResponse' in non-streaming mode.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param storeFullResponse the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder storeFullResponse(String
storeFullResponse) {
+ doSetProperty("storeFullResponse", storeFullResponse);
+ return this;
+ }
+ /**
+ * Enable streaming responses.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param streaming the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder streaming(boolean streaming) {
+ doSetProperty("streaming", streaming);
+ return this;
+ }
+ /**
+ * Enable streaming responses.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param streaming the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder streaming(String streaming) {
+ doSetProperty("streaming", streaming);
+ return this;
+ }
+ /**
+ * System message to prepend. When set and conversationMemory is
+ * enabled, the conversation history is reset.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param systemMessage the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder systemMessage(String systemMessage) {
+ doSetProperty("systemMessage", systemMessage);
+ return this;
+ }
+ /**
+ * Temperature for response generation (0.0 to 2.0).
+ *
+ * The option is a: <code>java.lang.Double</code> type.
+ *
+ * Group: producer
+ *
+ * @param temperature the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder temperature(Double temperature) {
+ doSetProperty("temperature", temperature);
+ return this;
+ }
+ /**
+ * Temperature for response generation (0.0 to 2.0).
+ *
+ * The option will be converted to a <code>java.lang.Double</code>
type.
+ *
+ * Group: producer
+ *
+ * @param temperature the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder temperature(String temperature) {
+ doSetProperty("temperature", temperature);
+ return this;
+ }
+ /**
+ * Top P for response generation (0.0 to 1.0).
+ *
+ * The option is a: <code>java.lang.Double</code> type.
+ *
+ * Group: producer
+ *
+ * @param topP the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder topP(Double topP) {
+ doSetProperty("topP", topP);
+ return this;
+ }
+ /**
+ * Top P for response generation (0.0 to 1.0).
+ *
+ * The option will be converted to a <code>java.lang.Double</code>
type.
+ *
+ * Group: producer
+ *
+ * @param topP the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder topP(String topP) {
+ doSetProperty("topP", topP);
+ return this;
+ }
+ /**
+ * Default user message text to use when no prompt is provided.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param userMessage the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder userMessage(String userMessage) {
+ doSetProperty("userMessage", userMessage);
+ return this;
+ }
+ }
+
+ /**
+ * Advanced builder for endpoint for the OpenAI component.
+ */
+ public interface AdvancedOpenAIEndpointBuilder
+ extends
+ EndpointProducerBuilder {
+ default OpenAIEndpointBuilder basic() {
+ return (OpenAIEndpointBuilder) this;
+ }
+
+ /**
+ * Whether the producer should be started lazy (on the first message).
+ * By starting lazy you can use this to allow CamelContext and routes
to
+ * startup in situations where a producer may otherwise fail during
+ * starting and cause the route to fail being started. By deferring
this
+ * startup to be lazy then the startup failure can be handled during
+ * routing messages via Camel's routing error handlers. Beware that
when
+ * the first message is processed then creating and starting the
+ * producer may take a little time and prolong the total processing
time
+ * of the processing.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer (advanced)
+ *
+ * @param lazyStartProducer the value to set
+ * @return the dsl builder
+ */
+ default AdvancedOpenAIEndpointBuilder lazyStartProducer(boolean
lazyStartProducer) {
+ doSetProperty("lazyStartProducer", lazyStartProducer);
+ return this;
+ }
+ /**
+ * Whether the producer should be started lazy (on the first message).
+ * By starting lazy you can use this to allow CamelContext and routes
to
+ * startup in situations where a producer may otherwise fail during
+ * starting and cause the route to fail being started. By deferring
this
+ * startup to be lazy then the startup failure can be handled during
+ * routing messages via Camel's routing error handlers. Beware that
when
+ * the first message is processed then creating and starting the
+ * producer may take a little time and prolong the total processing
time
+ * of the processing.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer (advanced)
+ *
+ * @param lazyStartProducer the value to set
+ * @return the dsl builder
+ */
+ default AdvancedOpenAIEndpointBuilder lazyStartProducer(String
lazyStartProducer) {
+ doSetProperty("lazyStartProducer", lazyStartProducer);
+ return this;
+ }
+ }
+
+ public interface OpenAIBuilders {
+ /**
+ * OpenAI (camel-openai)
+ * OpenAI endpoint for chat completion.
+ *
+ * Category: ai
+ * Since: 4.17
+ * Maven coordinates: org.apache.camel:camel-openai
+ *
+ * Syntax: <code>openai:operation</code>
+ *
+ * Path parameter: operation (required)
+ * The operation to perform (currently only chat-completion is
+ * supported)
+ *
+ * @param path operation
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder openai(String path) {
+ return OpenAIEndpointBuilderFactory.endpointBuilder("openai",
path);
+ }
+ /**
+ * OpenAI (camel-openai)
+ * OpenAI endpoint for chat completion.
+ *
+ * Category: ai
+ * Since: 4.17
+ * Maven coordinates: org.apache.camel:camel-openai
+ *
+ * Syntax: <code>openai:operation</code>
+ *
+ * Path parameter: operation (required)
+ * The operation to perform (currently only chat-completion is
+ * supported)
+ *
+ * @param componentName to use a custom component name for the endpoint
+ * instead of the default name
+ * @param path operation
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder openai(String componentName, String
path) {
+ return OpenAIEndpointBuilderFactory.endpointBuilder(componentName,
path);
+ }
+
+ }
+ static OpenAIEndpointBuilder endpointBuilder(String componentName, String
path) {
+ class OpenAIEndpointBuilderImpl extends AbstractEndpointBuilder
implements OpenAIEndpointBuilder, AdvancedOpenAIEndpointBuilder {
+ public OpenAIEndpointBuilderImpl(String path) {
+ super(componentName, path);
+ }
+ }
+ return new OpenAIEndpointBuilderImpl(path);
+ }
+}
\ No newline at end of file
diff --git
a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index 0ab7dd574405..d7f1e97d338d 100644
---
a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++
b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -276,6 +276,7 @@
org.apache.camel.component.nitrite.NitriteComponent=camel:nitrite
org.apache.camel.component.olingo2.Olingo2Component=camel:olingo2
org.apache.camel.component.olingo4.Olingo4Component=camel:olingo4
org.apache.camel.component.once.OnceComponent=camel:once
+org.apache.camel.component.openai.OpenAIComponent=camel:openai
org.apache.camel.component.opensearch.OpensearchComponent=camel:opensearch
org.apache.camel.component.openshift.build_configs.OpenshiftBuildConfigsComponent=camel:kubernetes
org.apache.camel.component.openshift.builds.OpenshiftBuildsComponent=camel:kubernetes
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
index 786080696d81..f9fb1429f496 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
@@ -43,7 +43,7 @@ public final class MojoHelper {
dir.resolve("camel-langchain4j-embeddings"),
dir.resolve("camel-langchain4j-embeddingstore"),
dir.resolve("camel-langchain4j-tokenizer"),
dir.resolve("camel-langchain4j-tools"),
dir.resolve("camel-langchain4j-web-search"),
- dir.resolve("camel-qdrant"),
dir.resolve("camel-milvus"), dir.resolve("camel-neo4j"),
+ dir.resolve("camel-qdrant"),
dir.resolve("camel-milvus"), dir.resolve("camel-neo4j"),
dir.resolve("camel-openai"),
dir.resolve("camel-pinecone"),
dir.resolve("camel-kserve"), dir.resolve("camel-chroma"),
dir.resolve("camel-torchserve"),
dir.resolve("camel-tensorflow-serving"),
dir.resolve("camel-weaviate"),
dir.resolve("camel-docling"));