davsclaus commented on code in PR #27439:
URL: https://github.com/apache/camel/pull/27439#discussion_r4195014238
##########
components/camel-ai/camel-a2a/src/main/docs/a2a-producer.adoc:
##########
@@ -111,10 +113,15 @@ YAML::
steps:
- setHeader:
name: CamelA2AOperation
- constant: MESSAGE_STREAM
- - to: a2a:https://agent.example.com
+ expression:
+ constant:
+ expression: MESSAGE_STREAM
+ - to:
+ uri: a2a:https://agent.example.com
- split:
- simple: "${body}"
+ expression:
+ simple:
+ expression: "${body}"
streaming: true
steps:
- choice:
Review Comment:
Thanks, converted both `when` branches to the canonical `expression: simple:
expression:` form in 4a85ef367b (catalog copy in step).
_Claude Code on behalf of davsclaus_
##########
components/camel-ai/src/main/docs/ai-llm-integration-guide.adoc:
##########
@@ -203,13 +208,17 @@ Load prompts from the classpath or file system and pass
them as the body or via
[source,yaml]
----
-- from:
- uri: file:prompts/extract-resume.txt?noop=true
- steps:
- - setHeader:
- name: CamelOpenAIUserMessage
- simple: "${body}\n\nDocument to
parse:\n${exchangeProperty.documentText}"
- - to:
openai:chat-completion?jsonSchema=resource:classpath:schemas/resume.schema.json
+- route:
+ from:
+ uri: file:prompts/extract-resume.txt?noop=true
Review Comment:
Good catch, and the empty `documentText` was the bigger problem. Rather than
only fixing the URI, I restructured the example in 4a85ef367b. The prompt is
now a Simple template file (`prompts/extract-resume.txt` on the classpath,
shown on the page) with `${body}` where the document goes. The route reads the
resumes with `file:inbox/resumes` and sets `CamelOpenAIUserMessage` with
`simple: resource:classpath:prompts/extract-resume.txt`. Simple loads a static
`resource:` template once and evaluates it per exchange
(`LanguageSupport.loadResource`), so each resume fills in the prompt. No
`pollEnrich` is needed. The `jsonSchema` option is in the canonical
`parameters:` form too.
_Claude Code on behalf of davsclaus_
##########
core/camel-core-engine/src/main/docs/modules/eips/pages/ai-patterns.adoc:
##########
@@ -212,6 +212,44 @@ See also the full
xref:enterprise-integration-patterns.adoc[Enterprise Integrati
|xref:languages:semantic-language.adoc[Semantic], xref:switch-eip.adoc[Switch]
|Evaluate a Semantic choice question once and dispatch its category string
through literal Switch cases.
+|Guardrail / Guard decision
+|xref:languages:semantic-language.adoc[Semantic],
xref:ROOT:typesafe-ai-component.adoc[TypeSafe AI],
+xref:filter-eip.adoc[Filter], xref:validate-eip.adoc[Validate]
+|Ask a yes/no question about the message (is this request actionable, does
this action fit the task) and filter or
+validate on the answer. A System One model such as Jev answers with a fast,
structured decision instead of
+generated text.
+
+|Tool / Function calling
+|xref:ROOT:ai-tool-component.adoc[AI Tool]
+|Expose a route as a tool an AI agent can call. The same route works with the
LangChain4j, Spring AI and OpenAI
+agents.
+
+|MCP server
+|xref:others:mcp-server.adoc[MCP Server],
xref:ROOT:ai-resource-component.adoc[AI Resource]
+|Expose `ai-tool` routes as MCP tools and `ai-resource` routes as MCP
resources to any MCP client.
+
+|MCP client
+|xref:others:langchain4j-agent-mcp.adoc[LangChain4j Agent MCP],
xref:others:openai-mcp.adoc[OpenAI MCP]
+|Let an agent in a route call the tools of remote MCP servers.
+
+|Tool authorization / Agent permissions
+|xref:ROOT:ai-tool-component.adoc#_authorizing_tool_calls[AI Tool
authorization],
+xref:ROOT:opa-component.adoc[OPA], xref:ROOT:openfga-component.adoc[OpenFGA]
+|Authorize every tool call before it runs, on the caller identity and the tool
name, never on model output.
+
+|Agent identity / Workload identity
+|xref:ROOT:spiffe-component.adoc[SPIFFE]
+|Give each workload a cryptographic identity and mutual TLS, so a tool call
can be authorized on who is calling.
+
+|LLM observability
+|xref:others:ai-observability.adoc[AI Observability]
+|Record an OpenTelemetry span and Micrometer metrics (model, tokens, duration)
for every LLM call, inside the route's
Review Comment:
Applied your wording in 4a85ef367b: the row now names the LangChain4j,
OpenAI and Spring AI chat producers instead of every LLM call.
_Claude Code on behalf of davsclaus_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]