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

Andrea Cosentino commented on CAMEL-24224:
------------------------------------------

Fixed on main (#24982) and camel-4.18.x (#24990). Not applicable to 
camel-4.14.x (the Bedrock streaming code does not exist on that branch).

_Claude Code on behalf of Andrea Cosentino_

> camel-aws-bedrock: streaming metadata never captured for Claude/Nova, and 
> inference profile ids rejected
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24224
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24224
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-aws
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.18.4, 4.22.0
>
>
> Two defects in the Bedrock runtime producer:
> 1. *Streaming metadata is never captured for Claude and Nova.* 
> BedrockStreamHandler extracts the completion reason and token count only when 
> parser.isFinalChunk(chunk) is true. For Claude (and Nova, which reuses 
> ClaudeStreamParser) isFinalChunk matches the message_stop chunk, but 
> stop_reason and usage are reported on the earlier message_delta chunk. A 
> chunk is never both, so the CamelAwsBedrockStreamingCompletionReason and 
> token-count values are always absent for those model families. 
> Titan/Llama/Mistral/Cohere are unaffected because they report metadata on 
> their final chunk. The parsers themselves are correct (ClaudeStreamParserTest 
> already asserts extraction from a message_delta chunk) - only the handler's 
> gating is wrong.
> 2. *Cross-region inference profile ids and ARNs are rejected.* 
> setResponseText switches on the exact configured modelId with a throwing 
> default. Bedrock also accepts cross-region inference profile ids 
> (us./eu./apac./us-gov. prefixed, e.g. 
> us.anthropic.claude-3-5-sonnet-20241022-v2:0) and inference-profile ARNs, 
> which address the same foundation model. Those, and any model released after 
> the hard-coded list was written, fail with "Unexpected model: ..." even 
> though the response format is determined by the model family.
> Fix: inspect every streaming chunk for metadata instead of gating on the 
> final chunk, resolve the underlying foundation-model id (stripping an 
> inference-profile region prefix or ARN path) before the switch, and fall back 
> to family-prefix dispatch for ids that are not listed explicitly while still 
> rejecting non-text families.
> Code references (main): BedrockStreamHandler.java (both onChunk blocks), 
> BedrockProducer.setResponseText.
> Found during an agent-assisted audit of the AWS components.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to