[ 
https://issues.apache.org/jira/browse/CAMEL-26071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136524#comment-18136524
 ] 

Claus Ibsen commented on CAMEL-26071:
-------------------------------------

PR: https://github.com/apache/camel/pull/28894

All three bugs are fixed: invokeFlow converts the body to text as invokeAgent 
does, the async client is created on first use when the operation header picks 
invokeFlow, invokeAgent or invokeInlineAgent, and no operation fails with an 
IllegalArgumentException. The code-read items are fixed too: modelId and 
knowledgeBaseId are no longer required, the citations header is List<Citation>, 
and the doc names bedrockAgentRuntimeClient.

_Claude Code on behalf of Claus Ibsen (davsclaus)_

> camel-aws-bedrock - aws-bedrock-agent-runtime: invokeFlow does not convert 
> the body, and an operation picked by the header fails on an endpoint of 
> another operation
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26071
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26071
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-aws2
>    Affects Versions: 4.18.0, 4.22.0, 4.23.0
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> Found while adding the catalog body types of aws-bedrock-agent-runtime 
> (CAMEL-24961).
> h4. 1. invokeFlow does not convert the body
> invokeFlow takes a String, a FlowInput or a List of FlowInput, and fails for 
> anything else ({{BedrockAgentRuntimeProducer}}, main ed3d719b379c, lines 
> 375-400), while invokeAgent converts the body to a String (line 641). So 
> bytes, a stream or a file from a file consumer fail. Checked on 
> 4.24.0-SNAPSHOT with {{camel run}} against a fake of the AWS API that logs 
> the requests it gets: a byte[] body gives {{IllegalArgumentException: 
> invokeFlow expects the body to be a List<FlowInput>, a single FlowInput or a 
> String when pojoRequest=false. Got: [B}}.
> *Proposed change*: convert the other bodies to a String, as invokeAgent does.
> h4. 2. An operation picked by the header fails on an endpoint of another 
> operation
> The asynchronous client that invokeAgent, invokeInlineAgent and invokeFlow 
> need is only created when the operation option of the endpoint is one of them 
> ({{BedrockAgentRuntimeEndpoint}}, lines 76-83). The 
> {{CamelAwsBedrockAgentRuntimeOperation}} header can pick them on an endpoint 
> of retrieve or retrieveAndGenerate, and then every exchange fails. Checked on 
> 4.24.0-SNAPSHOT with {{camel run}} against a fake of the AWS API that logs 
> the requests it gets: {{IllegalStateException: BedrockAgentRuntimeAsyncClient 
> is not available}}.
> *Proposed change*: create the asynchronous client when an exchange first 
> needs it.
> h4. 3. No operation fails with a NullPointerException
> The operation option has no default, and with no header, {{switch 
> (determineOperation(exchange))}} (line 84) fails with a NullPointerException. 
> Checked on 4.24.0-SNAPSHOT with {{camel run}} against a fake of the AWS API 
> that logs the requests it gets.
> *Proposed change*: fail with a message that says to set the operation option 
> or header.
> h4. Also read in the code, not run
> * modelId and knowledgeBaseId are marked required for every operation 
> ({{BedrockAgentRuntimeConfiguration}}, lines 47-52), but only retrieve and 
> retrieveAndGenerate use them, so tooling flags endpoints of invokeAgent and 
> invokeFlow.
> * The catalog says {{CamelAwsBedrockAgentRuntimeCitations}} is a String; it 
> is a {{List<Citation>}}. The page names a {{bedrockRuntimeClient}} (line 47).
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to