This is an automated email from the ASF dual-hosted git repository.
Croway 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 9c363c18362f Add an option to strip thinking content from response
9c363c18362f is described below
commit 9c363c18362f96ee877082bec666f30d308d0b85
Author: Croway <[email protected]>
AuthorDate: Wed Apr 29 15:24:22 2026 +0200
Add an option to strip thinking content from response
---
.../apache/camel/catalog/components/openai.json | 75 +++++++++++-----------
.../component/openai/OpenAIEndpointConfigurer.java | 6 ++
.../component/openai/OpenAIEndpointUriFactory.java | 3 +-
.../org/apache/camel/component/openai/openai.json | 75 +++++++++++-----------
.../component/openai/OpenAIConfiguration.java | 13 ++++
.../camel/component/openai/OpenAIConstants.java | 5 ++
.../camel/component/openai/OpenAIProducer.java | 22 +++++++
.../endpoint/dsl/OpenAIEndpointBuilderFactory.java | 58 +++++++++++++++++
8 files changed, 184 insertions(+), 73 deletions(-)
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
index ca8547aa7820..51e7541effeb 100644
---
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
@@ -43,24 +43,26 @@
"CamelOpenAIStreaming": { "index": 7, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType": "Boolean",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Whether to stream the response back incrementally",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#STREAMING" },
"CamelOpenAIOutputClass": { "index": 8, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Class",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The Java class to use for structured output parsing",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#OUTPUT_CLASS" },
"CamelOpenAIJsonSchema": { "index": 9, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The JSON schema to use for structured output
validation", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#JSON_SCHEMA" },
- "CamelOpenAIResponseModel": { "index": 10, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model used for the completion
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
- "CamelOpenAIResponseId": { "index": 11, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The unique identifier for the completion response",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID"
},
- "CamelOpenAIFinishReason": { "index": 12, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The reason the completion finished (e.g., stop, length,
content_filter)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
- "CamelOpenAIPromptTokens": { "index": 13, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The number of tokens used in the prompt",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
- "CamelOpenAICompletionTokens": { "index": 14, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The number of tokens used in the
completion", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
- "CamelOpenAITotalTokens": { "index": 15, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The total number of tokens used (prompt completion)",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
- "CamelOpenAIToolIterations": { "index": 16, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of tool call iterations
performed in the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
- "CamelOpenAIMcpToolCalls": { "index": 17, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType":
"java.util.List<String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "List of tool names called
during the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
- "CamelOpenAIMcpReturnDirect": { "index": 18, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response came directly from
a tool with returnDirect=true, rather than from the LLM", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
- "CamelOpenAIResponse": { "index": 19, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType":
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The complete OpenAI
response object", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
- "CamelOpenAIEmbeddingModel": { "index": 20, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model to use for embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
- "CamelOpenAIEmbeddingDimensions": { "index": 21, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of output dimensions",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
- "CamelOpenAIEmbeddingResponseModel": { "index": 22, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The embedding model used in the
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
- "CamelOpenAIEmbeddingCount": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of embeddings returned",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
- "CamelOpenAIEmbeddingVectorSize": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Vector dimensions of the embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
- "CamelOpenAIReferenceEmbedding": { "index": 25, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Reference embedding vector
for similarity comparison", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
- "CamelOpenAISimilarityScore": { "index": 26, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Calculated cosine similarity score (0.0
to 1.0)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
- "CamelOpenAIOriginalText": { "index": 27, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String or
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "Original text content when embeddings
operation is used", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
+ "CamelOpenAIStripThinking": { "index": 10, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether to strip ... blocks from the
response body", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#STRIP_THINKING" },
+ "CamelOpenAIThinkingContent": { "index": 11, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The thinking content extracted from ...
blocks in the model response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#THINKING_CONTENT" },
+ "CamelOpenAIResponseModel": { "index": 12, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model used for the completion
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
+ "CamelOpenAIResponseId": { "index": 13, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The unique identifier for the completion response",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID"
},
+ "CamelOpenAIFinishReason": { "index": 14, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The reason the completion finished (e.g., stop, length,
content_filter)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
+ "CamelOpenAIPromptTokens": { "index": 15, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The number of tokens used in the prompt",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
+ "CamelOpenAICompletionTokens": { "index": 16, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The number of tokens used in the
completion", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
+ "CamelOpenAITotalTokens": { "index": 17, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The total number of tokens used (prompt completion)",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
+ "CamelOpenAIToolIterations": { "index": 18, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of tool call iterations
performed in the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
+ "CamelOpenAIMcpToolCalls": { "index": 19, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType":
"java.util.List<String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "List of tool names called
during the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
+ "CamelOpenAIMcpReturnDirect": { "index": 20, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response came directly from
a tool with returnDirect=true, rather than from the LLM", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
+ "CamelOpenAIResponse": { "index": 21, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType":
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The complete OpenAI
response object", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
+ "CamelOpenAIEmbeddingModel": { "index": 22, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model to use for embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
+ "CamelOpenAIEmbeddingDimensions": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of output dimensions",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
+ "CamelOpenAIEmbeddingResponseModel": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The embedding model used in the
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
+ "CamelOpenAIEmbeddingCount": { "index": 25, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of embeddings returned",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
+ "CamelOpenAIEmbeddingVectorSize": { "index": 26, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Vector dimensions of the embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
+ "CamelOpenAIReferenceEmbedding": { "index": 27, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Reference embedding vector
for similarity comparison", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
+ "CamelOpenAISimilarityScore": { "index": 28, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Calculated cosine similarity score (0.0
to 1.0)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
+ "CamelOpenAIOriginalText": { "index": 29, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String or
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "Original text content when embeddings
operation is used", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
},
"properties": {
"operation": { "index": 0, "kind": "path", "displayName": "Operation",
"group": "producer", "label": "", "required": true, "type": "enum", "javaType":
"org.apache.camel.component.openai.OpenAIOperations", "enum": [
"chat-completion", "embeddings", "tool-execution" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
operation to perform: 'chat-completion', 'embeddings', or 'tool-execution'" },
@@ -85,23 +87,24 @@
"outputClass": { "index": 19, "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": 20, "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": 21, "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": 22, "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": 23, "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": 24, "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": 25, "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": 26, "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 [...]
- "oauthProfile": { "index": 27, "kind": "parameter", "displayName": "Oauth
Profile", "group": "security", "label": "security", "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": "OAuth profile name for
obtaining an access token via the OAuth 2.0 Client Cred [...]
- "sslContextParameters": { "index": 28, "kind": "parameter", "displayName":
"Ssl Context Parameters", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "SSLContextParameters to
use [...]
- "sslEndpointAlgorithm": { "index": 29, "kind": "parameter", "displayName":
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"https", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The endpoint identification algorith [...]
- "sslKeymanagerAlgorithm": { "index": 30, "kind": "parameter",
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "SunX509", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the key [...]
- "sslKeyPassword": { "index": 31, "kind": "parameter", "displayName": "Ssl
Key Password", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password of the private key in the key
store file" },
- "sslKeystoreLocation": { "index": 32, "kind": "parameter", "displayName":
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key
store file. This is optional and can be [...]
- "sslKeystorePassword": { "index": 33, "kind": "parameter", "displayName":
"Ssl Keystore Password", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The store password for the key store file" },
- "sslKeystoreType": { "index": 34, "kind": "parameter", "displayName": "Ssl
Keystore Type", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the key store file" },
- "sslProtocol": { "index": 35, "kind": "parameter", "displayName": "Ssl
Protocol", "group": "security", "label": "security", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"TLSv1.3", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The SSL protocol used to generate the
SSLContext" },
- "sslTrustmanagerAlgorithm": { "index": 36, "kind": "parameter",
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "PKIX", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the tru [...]
- "sslTruststoreLocation": { "index": 37, "kind": "parameter",
"displayName": "Ssl Truststore Location", "group": "security", "label":
"security", "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 location of the trust store file, used to
validate the [...]
- "sslTruststorePassword": { "index": 38, "kind": "parameter",
"displayName": "Ssl Truststore Password", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password for the trust store file. [...]
- "sslTruststoreType": { "index": 39, "kind": "parameter", "displayName":
"Ssl Truststore Type", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the trust store file" }
+ "stripThinking": { "index": 22, "kind": "parameter", "displayName": "Strip
Thinking", "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": "Strip ... blocks from
model responses (used by reasoning models like [...]
+ "systemMessage": { "index": 23, "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": 24, "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": 25, "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": 26, "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": 27, "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 [...]
+ "oauthProfile": { "index": 28, "kind": "parameter", "displayName": "Oauth
Profile", "group": "security", "label": "security", "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": "OAuth profile name for
obtaining an access token via the OAuth 2.0 Client Cred [...]
+ "sslContextParameters": { "index": 29, "kind": "parameter", "displayName":
"Ssl Context Parameters", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "SSLContextParameters to
use [...]
+ "sslEndpointAlgorithm": { "index": 30, "kind": "parameter", "displayName":
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"https", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The endpoint identification algorith [...]
+ "sslKeymanagerAlgorithm": { "index": 31, "kind": "parameter",
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "SunX509", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the key [...]
+ "sslKeyPassword": { "index": 32, "kind": "parameter", "displayName": "Ssl
Key Password", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password of the private key in the key
store file" },
+ "sslKeystoreLocation": { "index": 33, "kind": "parameter", "displayName":
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key
store file. This is optional and can be [...]
+ "sslKeystorePassword": { "index": 34, "kind": "parameter", "displayName":
"Ssl Keystore Password", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The store password for the key store file" },
+ "sslKeystoreType": { "index": 35, "kind": "parameter", "displayName": "Ssl
Keystore Type", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the key store file" },
+ "sslProtocol": { "index": 36, "kind": "parameter", "displayName": "Ssl
Protocol", "group": "security", "label": "security", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"TLSv1.3", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The SSL protocol used to generate the
SSLContext" },
+ "sslTrustmanagerAlgorithm": { "index": 37, "kind": "parameter",
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "PKIX", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the tru [...]
+ "sslTruststoreLocation": { "index": 38, "kind": "parameter",
"displayName": "Ssl Truststore Location", "group": "security", "label":
"security", "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 location of the trust store file, used to
validate the [...]
+ "sslTruststorePassword": { "index": 39, "kind": "parameter",
"displayName": "Ssl Truststore Password", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password for the trust store file. [...]
+ "sslTruststoreType": { "index": 40, "kind": "parameter", "displayName":
"Ssl Truststore Type", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the trust store file" }
}
}
diff --git
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
index 4c90c3b38db2..fd752107df0b 100644
---
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
+++
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
@@ -90,6 +90,8 @@ public class OpenAIEndpointConfigurer extends
PropertyConfigurerSupport implemen
case "storefullresponse":
case "storeFullResponse":
target.getConfiguration().setStoreFullResponse(property(camelContext,
boolean.class, value)); return true;
case "streaming":
target.getConfiguration().setStreaming(property(camelContext, boolean.class,
value)); return true;
+ case "stripthinking":
+ case "stripThinking":
target.getConfiguration().setStripThinking(property(camelContext,
boolean.class, value)); return true;
case "systemmessage":
case "systemMessage":
target.getConfiguration().setSystemMessage(property(camelContext,
java.lang.String.class, value)); return true;
case "temperature":
target.getConfiguration().setTemperature(property(camelContext,
java.lang.Double.class, value)); return true;
@@ -171,6 +173,8 @@ public class OpenAIEndpointConfigurer extends
PropertyConfigurerSupport implemen
case "storefullresponse":
case "storeFullResponse": return boolean.class;
case "streaming": return boolean.class;
+ case "stripthinking":
+ case "stripThinking": return boolean.class;
case "systemmessage":
case "systemMessage": return java.lang.String.class;
case "temperature": return java.lang.Double.class;
@@ -253,6 +257,8 @@ public class OpenAIEndpointConfigurer extends
PropertyConfigurerSupport implemen
case "storefullresponse":
case "storeFullResponse": return
target.getConfiguration().isStoreFullResponse();
case "streaming": return target.getConfiguration().isStreaming();
+ case "stripthinking":
+ case "stripThinking": return
target.getConfiguration().isStripThinking();
case "systemmessage":
case "systemMessage": return
target.getConfiguration().getSystemMessage();
case "temperature": return target.getConfiguration().getTemperature();
diff --git
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
index af7361f1ec69..4f41e0861345 100644
---
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
+++
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
@@ -23,7 +23,7 @@ public class OpenAIEndpointUriFactory extends
org.apache.camel.support.component
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(40);
+ Set<String> props = new HashSet<>(41);
props.add("additionalBodyProperty");
props.add("apiKey");
props.add("autoToolExecution");
@@ -60,6 +60,7 @@ public class OpenAIEndpointUriFactory extends
org.apache.camel.support.component
props.add("sslTruststoreType");
props.add("storeFullResponse");
props.add("streaming");
+ props.add("stripThinking");
props.add("systemMessage");
props.add("temperature");
props.add("topP");
diff --git
a/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
b/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
index ca8547aa7820..51e7541effeb 100644
---
a/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
+++
b/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
@@ -43,24 +43,26 @@
"CamelOpenAIStreaming": { "index": 7, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType": "Boolean",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Whether to stream the response back incrementally",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#STREAMING" },
"CamelOpenAIOutputClass": { "index": 8, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Class",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The Java class to use for structured output parsing",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#OUTPUT_CLASS" },
"CamelOpenAIJsonSchema": { "index": 9, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The JSON schema to use for structured output
validation", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#JSON_SCHEMA" },
- "CamelOpenAIResponseModel": { "index": 10, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model used for the completion
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
- "CamelOpenAIResponseId": { "index": 11, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The unique identifier for the completion response",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID"
},
- "CamelOpenAIFinishReason": { "index": 12, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The reason the completion finished (e.g., stop, length,
content_filter)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
- "CamelOpenAIPromptTokens": { "index": 13, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The number of tokens used in the prompt",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
- "CamelOpenAICompletionTokens": { "index": 14, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The number of tokens used in the
completion", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
- "CamelOpenAITotalTokens": { "index": 15, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The total number of tokens used (prompt completion)",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
- "CamelOpenAIToolIterations": { "index": 16, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of tool call iterations
performed in the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
- "CamelOpenAIMcpToolCalls": { "index": 17, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType":
"java.util.List<String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "List of tool names called
during the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
- "CamelOpenAIMcpReturnDirect": { "index": 18, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response came directly from
a tool with returnDirect=true, rather than from the LLM", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
- "CamelOpenAIResponse": { "index": 19, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType":
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The complete OpenAI
response object", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
- "CamelOpenAIEmbeddingModel": { "index": 20, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model to use for embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
- "CamelOpenAIEmbeddingDimensions": { "index": 21, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of output dimensions",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
- "CamelOpenAIEmbeddingResponseModel": { "index": 22, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The embedding model used in the
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
- "CamelOpenAIEmbeddingCount": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of embeddings returned",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
- "CamelOpenAIEmbeddingVectorSize": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Vector dimensions of the embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
- "CamelOpenAIReferenceEmbedding": { "index": 25, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Reference embedding vector
for similarity comparison", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
- "CamelOpenAISimilarityScore": { "index": 26, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Calculated cosine similarity score (0.0
to 1.0)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
- "CamelOpenAIOriginalText": { "index": 27, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String or
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "Original text content when embeddings
operation is used", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
+ "CamelOpenAIStripThinking": { "index": 10, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether to strip ... blocks from the
response body", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#STRIP_THINKING" },
+ "CamelOpenAIThinkingContent": { "index": 11, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The thinking content extracted from ...
blocks in the model response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#THINKING_CONTENT" },
+ "CamelOpenAIResponseModel": { "index": 12, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model used for the completion
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
+ "CamelOpenAIResponseId": { "index": 13, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The unique identifier for the completion response",
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID"
},
+ "CamelOpenAIFinishReason": { "index": 14, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The reason the completion finished (e.g., stop, length,
content_filter)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
+ "CamelOpenAIPromptTokens": { "index": 15, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The number of tokens used in the prompt",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
+ "CamelOpenAICompletionTokens": { "index": 16, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The number of tokens used in the
completion", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
+ "CamelOpenAITotalTokens": { "index": 17, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "Integer",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The total number of tokens used (prompt completion)",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
+ "CamelOpenAIToolIterations": { "index": 18, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of tool call iterations
performed in the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
+ "CamelOpenAIMcpToolCalls": { "index": 19, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType":
"java.util.List<String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "List of tool names called
during the agentic loop", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
+ "CamelOpenAIMcpReturnDirect": { "index": 20, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response came directly from
a tool with returnDirect=true, rather than from the LLM", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
+ "CamelOpenAIResponse": { "index": 21, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType":
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The complete OpenAI
response object", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
+ "CamelOpenAIEmbeddingModel": { "index": 22, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The model to use for embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
+ "CamelOpenAIEmbeddingDimensions": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of output dimensions",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
+ "CamelOpenAIEmbeddingResponseModel": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The embedding model used in the
response", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
+ "CamelOpenAIEmbeddingCount": { "index": 25, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Number of embeddings returned",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
+ "CamelOpenAIEmbeddingVectorSize": { "index": 26, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Vector dimensions of the embeddings",
"constantName":
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
+ "CamelOpenAIReferenceEmbedding": { "index": 27, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Reference embedding vector
for similarity comparison", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
+ "CamelOpenAISimilarityScore": { "index": 28, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Calculated cosine similarity score (0.0
to 1.0)", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
+ "CamelOpenAIOriginalText": { "index": 29, "kind": "header", "displayName":
"", "group": "producer", "label": "", "required": false, "javaType": "String or
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "Original text content when embeddings
operation is used", "constantName":
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
},
"properties": {
"operation": { "index": 0, "kind": "path", "displayName": "Operation",
"group": "producer", "label": "", "required": true, "type": "enum", "javaType":
"org.apache.camel.component.openai.OpenAIOperations", "enum": [
"chat-completion", "embeddings", "tool-execution" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
operation to perform: 'chat-completion', 'embeddings', or 'tool-execution'" },
@@ -85,23 +87,24 @@
"outputClass": { "index": 19, "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": 20, "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": 21, "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": 22, "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": 23, "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": 24, "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": 25, "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": 26, "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 [...]
- "oauthProfile": { "index": 27, "kind": "parameter", "displayName": "Oauth
Profile", "group": "security", "label": "security", "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": "OAuth profile name for
obtaining an access token via the OAuth 2.0 Client Cred [...]
- "sslContextParameters": { "index": 28, "kind": "parameter", "displayName":
"Ssl Context Parameters", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "SSLContextParameters to
use [...]
- "sslEndpointAlgorithm": { "index": 29, "kind": "parameter", "displayName":
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"https", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The endpoint identification algorith [...]
- "sslKeymanagerAlgorithm": { "index": 30, "kind": "parameter",
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "SunX509", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the key [...]
- "sslKeyPassword": { "index": 31, "kind": "parameter", "displayName": "Ssl
Key Password", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password of the private key in the key
store file" },
- "sslKeystoreLocation": { "index": 32, "kind": "parameter", "displayName":
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key
store file. This is optional and can be [...]
- "sslKeystorePassword": { "index": 33, "kind": "parameter", "displayName":
"Ssl Keystore Password", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The store password for the key store file" },
- "sslKeystoreType": { "index": 34, "kind": "parameter", "displayName": "Ssl
Keystore Type", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the key store file" },
- "sslProtocol": { "index": 35, "kind": "parameter", "displayName": "Ssl
Protocol", "group": "security", "label": "security", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"TLSv1.3", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The SSL protocol used to generate the
SSLContext" },
- "sslTrustmanagerAlgorithm": { "index": 36, "kind": "parameter",
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "PKIX", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the tru [...]
- "sslTruststoreLocation": { "index": 37, "kind": "parameter",
"displayName": "Ssl Truststore Location", "group": "security", "label":
"security", "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 location of the trust store file, used to
validate the [...]
- "sslTruststorePassword": { "index": 38, "kind": "parameter",
"displayName": "Ssl Truststore Password", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password for the trust store file. [...]
- "sslTruststoreType": { "index": 39, "kind": "parameter", "displayName":
"Ssl Truststore Type", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the trust store file" }
+ "stripThinking": { "index": 22, "kind": "parameter", "displayName": "Strip
Thinking", "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": "Strip ... blocks from
model responses (used by reasoning models like [...]
+ "systemMessage": { "index": 23, "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": 24, "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": 25, "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": 26, "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": 27, "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 [...]
+ "oauthProfile": { "index": 28, "kind": "parameter", "displayName": "Oauth
Profile", "group": "security", "label": "security", "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": "OAuth profile name for
obtaining an access token via the OAuth 2.0 Client Cred [...]
+ "sslContextParameters": { "index": 29, "kind": "parameter", "displayName":
"Ssl Context Parameters", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration",
"configurationField": "configuration", "description": "SSLContextParameters to
use [...]
+ "sslEndpointAlgorithm": { "index": 30, "kind": "parameter", "displayName":
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"https", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The endpoint identification algorith [...]
+ "sslKeymanagerAlgorithm": { "index": 31, "kind": "parameter",
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "SunX509", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the key [...]
+ "sslKeyPassword": { "index": 32, "kind": "parameter", "displayName": "Ssl
Key Password", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password of the private key in the key
store file" },
+ "sslKeystoreLocation": { "index": 33, "kind": "parameter", "displayName":
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key
store file. This is optional and can be [...]
+ "sslKeystorePassword": { "index": 34, "kind": "parameter", "displayName":
"Ssl Keystore Password", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true, "security":
"secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The store password for the key store file" },
+ "sslKeystoreType": { "index": 35, "kind": "parameter", "displayName": "Ssl
Keystore Type", "group": "security", "label": "security", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the key store file" },
+ "sslProtocol": { "index": 36, "kind": "parameter", "displayName": "Ssl
Protocol", "group": "security", "label": "security", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"TLSv1.3", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The SSL protocol used to generate the
SSLContext" },
+ "sslTrustmanagerAlgorithm": { "index": 37, "kind": "parameter",
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": "PKIX", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The algorithm used by the tru [...]
+ "sslTruststoreLocation": { "index": 38, "kind": "parameter",
"displayName": "Ssl Truststore Location", "group": "security", "label":
"security", "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 location of the trust store file, used to
validate the [...]
+ "sslTruststorePassword": { "index": 39, "kind": "parameter",
"displayName": "Ssl Truststore Password", "group": "security", "label":
"security", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The password for the trust store file. [...]
+ "sslTruststoreType": { "index": 40, "kind": "parameter", "displayName":
"Ssl Truststore Type", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
"JKS", "configurationClass":
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField":
"configuration", "description": "The file format of the trust store file" }
}
}
diff --git
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
index 8b2072658513..2b3031787897 100644
---
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
+++
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
@@ -101,6 +101,11 @@ public class OpenAIConfiguration implements Cloneable {
@Metadata(description = "Store the full response in the exchange property
'CamelOpenAIResponse' in non-streaming mode")
private boolean storeFullResponse = false;
+ @UriParam(defaultValue = "false")
+ @Metadata(description = "Strip <think>...</think> blocks from model
responses (used by reasoning models like Qwen3, DeepSeek-R1). "
+ + "The thinking content is stored in the
CamelOpenAIThinkingContent header.")
+ private boolean stripThinking = false;
+
@UriParam(prefix = "additionalBodyProperty.", multiValue = true)
@Metadata(description = "Additional JSON properties to include in the
request body (e.g. additionalBodyProperty.traceId=123)")
private Map<String, Object> additionalBodyProperty;
@@ -335,6 +340,14 @@ public class OpenAIConfiguration implements Cloneable {
this.storeFullResponse = storeFullResponse;
}
+ public boolean isStripThinking() {
+ return stripThinking;
+ }
+
+ public void setStripThinking(boolean stripThinking) {
+ this.stripThinking = stripThinking;
+ }
+
public Map<String, Object> getAdditionalBodyProperty() {
return additionalBodyProperty;
}
diff --git
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
index d7db6b365f48..c53a6884521b 100644
---
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
+++
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
@@ -46,8 +46,13 @@ public final class OpenAIConstants {
public static final String OUTPUT_CLASS = "CamelOpenAIOutputClass";
@Metadata(description = "The JSON schema to use for structured output
validation", javaType = "String")
public static final String JSON_SCHEMA = "CamelOpenAIJsonSchema";
+ @Metadata(description = "Whether to strip <think>...</think> blocks from
the response body", javaType = "Boolean")
+ public static final String STRIP_THINKING = "CamelOpenAIStripThinking";
// Output Headers
+ @Metadata(description = "The thinking content extracted from
<think>...</think> blocks in the model response",
+ javaType = "String")
+ public static final String THINKING_CONTENT = "CamelOpenAIThinkingContent";
@Metadata(description = "The model used for the completion response",
javaType = "String")
public static final String RESPONSE_MODEL = "CamelOpenAIResponseModel";
@Metadata(description = "The unique identifier for the completion
response", javaType = "String")
diff --git
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
index b2366ffa5a0f..00abe458cf67 100644
---
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
+++
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
@@ -27,6 +27,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -69,6 +71,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
private static final Logger LOG =
LoggerFactory.getLogger(OpenAIProducer.class);
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+ private static final Pattern THINK_PATTERN =
Pattern.compile("^\\s*<think>(.*?)</think>\\s*", Pattern.DOTALL);
public OpenAIProducer(OpenAIEndpoint endpoint) {
super(endpoint);
@@ -383,6 +386,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
exchange.getMessage().setBody(response.choices().get(0).message().toolCalls());
} else {
String content =
response.choices().get(0).message().content().orElse("");
+ content = processThinkingContent(exchange, content, config);
exchange.getMessage().setBody(content);
}
setResponseHeaders(exchange.getMessage(), response);
@@ -415,6 +419,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
LOG.debug("Agentic loop completed after {} iterations, finish
reason: {}", iteration,
getFinishReasonString(choice));
String content = choice.message().content().orElse("");
+ content = processThinkingContent(exchange, content, config);
exchange.getMessage().setBody(content);
setResponseHeaders(exchange.getMessage(), response);
exchange.getMessage().setHeader(OpenAIConstants.TOOL_ITERATIONS, iteration);
@@ -730,6 +735,23 @@ public class OpenAIProducer extends DefaultAsyncProducer {
}
}
+ private String processThinkingContent(Exchange exchange, String content,
OpenAIConfiguration config) {
+ Boolean strip = resolveParameter(
+ exchange.getIn(), OpenAIConstants.STRIP_THINKING,
config.isStripThinking(), Boolean.class);
+ if (!Boolean.TRUE.equals(strip)) {
+ return content;
+ }
+ Matcher matcher = THINK_PATTERN.matcher(content);
+ if (matcher.find()) {
+ String thinking = matcher.group(1).trim();
+ if (!thinking.isEmpty()) {
+
exchange.getMessage().setHeader(OpenAIConstants.THINKING_CONTENT, thinking);
+ }
+ return matcher.replaceFirst("").trim();
+ }
+ return content;
+ }
+
private <T> T resolveParameter(Message message, String headerName, T
defaultValue, Class<T> type) {
T headerValue = message.getHeader(headerName, type);
return ObjectHelper.isNotEmpty(headerValue) ? headerValue :
defaultValue;
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
index 21a722c59c84..3231c4da3a30 100644
---
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
@@ -571,6 +571,40 @@ public interface OpenAIEndpointBuilderFactory {
doSetProperty("streaming", streaming);
return this;
}
+ /**
+ * Strip ... blocks from model responses (used by reasoning models like
+ * Qwen3, DeepSeek-R1). The thinking content is stored in the
+ * CamelOpenAIThinkingContent header.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param stripThinking the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder stripThinking(boolean stripThinking) {
+ doSetProperty("stripThinking", stripThinking);
+ return this;
+ }
+ /**
+ * Strip ... blocks from model responses (used by reasoning models like
+ * Qwen3, DeepSeek-R1). The thinking content is stored in the
+ * CamelOpenAIThinkingContent header.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param stripThinking the value to set
+ * @return the dsl builder
+ */
+ default OpenAIEndpointBuilder stripThinking(String stripThinking) {
+ doSetProperty("stripThinking", stripThinking);
+ return this;
+ }
/**
* System message to prepend. When set and conversationMemory is
* enabled, the conversation history is reset.
@@ -1132,6 +1166,30 @@ public interface OpenAIEndpointBuilderFactory {
public String openAIJsonSchema() {
return "CamelOpenAIJsonSchema";
}
+ /**
+ * Whether to strip ... blocks from the response body.
+ *
+ * The option is a: {@code Boolean} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code OpenAIStripThinking}.
+ */
+ public String openAIStripThinking() {
+ return "CamelOpenAIStripThinking";
+ }
+ /**
+ * The thinking content extracted from ... blocks in the model
response.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code OpenAIThinkingContent}.
+ */
+ public String openAIThinkingContent() {
+ return "CamelOpenAIThinkingContent";
+ }
/**
* The model used for the completion response.
*