Skip to content

feat(aws-bedrock/eu.anthropic.claude-fable-5): add new models [bot]#1317

Merged
harshiv-26 merged 5 commits into
mainfrom
bot/add-aws-bedrock-eu.anthropic.claude-fable-5-20260609-182154
Jun 15, 2026
Merged

feat(aws-bedrock/eu.anthropic.claude-fable-5): add new models [bot]#1317
harshiv-26 merged 5 commits into
mainfrom
bot/add-aws-bedrock-eu.anthropic.claude-fable-5-20260609-182154

Conversation

@models-bot

@models-bot models-bot Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Auto-generated by model-addition-agent for aws-bedrock/eu.anthropic.claude-fable-5.


Note

Low Risk
Metadata-only addition with no runtime or auth changes; incorrect pricing would affect cost estimates only.

Overview
Adds a new provider catalog file for eu.anthropic.claude-fable-5 on AWS Bedrock so the EU cross-region inference ID can be discovered and priced separately from the existing global.anthropic.claude-fable-5 entry.

The new definition marks the model active for chat with thinking, function calling, prompt caching, and text/image/pdf inputs. Per-token pricing (including cache read) is listed for eight EU regions (eu-central-1/2, eu-north-1, eu-south-1/2, eu-west-1/2/3). temperature is in removeParams, consistent with other Fable entries.

Reviewed by Cursor Bugbot for commit b0e6ccf. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 12
  • Passed: 0
  • Failed: 12
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 0.0%
Provider Model Scenarios
aws-bedrock eu.anthropic.claude-fable-5 failure: tool-call:stream:boto3, params:boto3, reasoning:boto3, reasoning:stream:boto3, params:stream:boto3, tool-call:boto3, reasoning, tool-call:stream, params:stream, params, tool-call, reasoning:stream
Failures (12)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpgypq9nqy/snippet.py", line 54, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            print(f"Tool: {_start['toolUse'].get('name', '')}", flush=True)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            print(_delta["toolUse"].get("input", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_tool_use_detected = False
for _event in _events:
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            _tool_use_detected = True
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            _tool_use_detected = True

if not _tool_use_detected:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool uses in Bedrock stream")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpyu44hmk_/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
        "temperature": 0.5,
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "text" in _block:
        print(_block["text"])

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp3p0fmnms/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "reasoningContent" in _block:
        print(_block["reasoningContent"]["reasoningText"]["text"])
    if "text" in _block:
        print(_block["text"])
_content = response["output"]["message"]["content"]
_reasoning_detected = False

for _block in _content:
    if "reasoningContent" in _block:
        _reasoning_detected = True

_usage = response.get("usage", {})
if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in Bedrock response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpbq5s2vrx/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            print(_delta["reasoningContent"].get("text", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_reasoning_detected = False
for _event in _events:
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            _reasoning_detected = True
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "reasoningContent" in _start:
            _reasoning_detected = True
    if "metadata" in _event:
        _usage = _event["metadata"].get("usage", {})
        if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in Bedrock stream")
print("\nVALIDATION: reasoning stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpbtpwssw5/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
        "temperature": 0.5,
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpq3lxqwu4/snippet.py", line 54, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]
if _tool_uses:
    for _tu in _tool_uses:
        print(f"Tool: {_tu['toolUse']['name']}")
        print(f"Input: {_tu['toolUse']['input']}")
else:
    _text_blocks = [block["text"] for block in _content if "text" in block]
    print("\n".join(_text_blocks))
_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]

if not _tool_uses:
    raise Exception("VALIDATION FAILED: tool-call - no tool uses in Bedrock response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpdqo59hv8/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=False,
)
_usage = getattr(response, "usage", None)
_reasoning_detected = False

_choices = getattr(response, "choices", None)
if _choices and len(_choices) > 0:
    _message = getattr(_choices[0], "message", None)
else:
    _message = None

if _message and getattr(_message, "content", None) is not None:
    print(_message.content)

if _usage is not None:
    _output_token_details = getattr(_usage, "completion_tokens_details", None)
    if _output_token_details and getattr(_output_token_details, "reasoning_tokens", 0) > 0:
        _reasoning_detected = True
    elif getattr(_usage, "reasoning", None) is not None:
        _reasoning_detected = True

if getattr(_message, "reasoning_content", None) is not None:
    _reasoning_detected = True
elif getattr(_message, "reasoning", None) is not None:
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpyoo1ff1s/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=True,
)
_tool_calls_made = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if delta.tool_calls:
            _tool_calls_made = True
            for _tc in delta.tool_calls:
                if _tc.function:
                    print(_tc.function.arguments or "", end="", flush=True)

if not _tool_calls_made:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool calls received")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpj71oy95c/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    temperature=0.5,
    stream=True,
)

for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpska49cpq/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    temperature=0.5,
    stream=False,
)

print(response.choices[0].message.content)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp4wmhxvb6/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=False,
)
_message = response.choices[0].message
if _message.tool_calls:
    for _tc in _message.tool_calls:
        print(f"Function: {_tc.function.name}")
        print(f"Arguments: {_tc.function.arguments}")
else:
    print(_message.content)

if not _message.tool_calls or len(_message.tool_calls) == 0:
    raise Exception("VALIDATION FAILED: tool-call - no tool calls in response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpq_54n3yl/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=True,
)
_reasoning_detected = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if getattr(delta, "reasoning_content", None) is not None:
            _reasoning_detected = True
        if getattr(delta, "reasoning", None) is not None:
            _reasoning_detected = True

    _usage = getattr(chunk, "usage", None)
    if _usage is not None:
        _details = getattr(_usage, "completion_tokens_details", None)
        if _details and getattr(_details, "reasoning_tokens", 0) > 0:
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in stream")
print("\nVALIDATION: reasoning stream SUCCESS")

Comment thread providers/aws-bedrock/eu.anthropic.claude-fable-5.yaml
Comment thread providers/aws-bedrock/eu.anthropic.claude-fable-5.yaml
@github-actions

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 12
  • Passed: 0
  • Failed: 12
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 0.0%
Provider Model Scenarios
aws-bedrock eu.anthropic.claude-fable-5 failure: reasoning:stream:boto3, reasoning:boto3, params:stream:boto3, tool-call:boto3, tool-call:stream:boto3, params:boto3, params:stream, reasoning, tool-call, params, tool-call:stream, reasoning:stream
Failures (12)

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpd55zg8v7/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            print(_delta["reasoningContent"].get("text", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_reasoning_detected = False
for _event in _events:
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            _reasoning_detected = True
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "reasoningContent" in _start:
            _reasoning_detected = True
    if "metadata" in _event:
        _usage = _event["metadata"].get("usage", {})
        if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in Bedrock stream")
print("\nVALIDATION: reasoning stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp5tzm2arj/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "reasoningContent" in _block:
        print(_block["reasoningContent"]["reasoningText"]["text"])
    if "text" in _block:
        print(_block["text"])
_content = response["output"]["message"]["content"]
_reasoning_detected = False

for _block in _content:
    if "reasoningContent" in _block:
        _reasoning_detected = True

_usage = response.get("usage", {})
if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in Bedrock response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpveoml5pa/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
        "temperature": 0.5,
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpikx1y9ue/snippet.py", line 54, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]
if _tool_uses:
    for _tu in _tool_uses:
        print(f"Tool: {_tu['toolUse']['name']}")
        print(f"Input: {_tu['toolUse']['input']}")
else:
    _text_blocks = [block["text"] for block in _content if "text" in block]
    print("\n".join(_text_blocks))
_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]

if not _tool_uses:
    raise Exception("VALIDATION FAILED: tool-call - no tool uses in Bedrock response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp3sm6fnfs/snippet.py", line 54, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            print(f"Tool: {_start['toolUse'].get('name', '')}", flush=True)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            print(_delta["toolUse"].get("input", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_tool_use_detected = False
for _event in _events:
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            _tool_use_detected = True
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            _tool_use_detected = True

if not _tool_use_detected:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool uses in Bedrock stream")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmphk334zq7/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
        "temperature": 0.5,
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "text" in _block:
        print(_block["text"])

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp_5x_1xi8/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    temperature=0.5,
    stream=True,
)

for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp5x3bjaad/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=False,
)
_usage = getattr(response, "usage", None)
_reasoning_detected = False

_choices = getattr(response, "choices", None)
if _choices and len(_choices) > 0:
    _message = getattr(_choices[0], "message", None)
else:
    _message = None

if _message and getattr(_message, "content", None) is not None:
    print(_message.content)

if _usage is not None:
    _output_token_details = getattr(_usage, "completion_tokens_details", None)
    if _output_token_details and getattr(_output_token_details, "reasoning_tokens", 0) > 0:
        _reasoning_detected = True
    elif getattr(_usage, "reasoning", None) is not None:
        _reasoning_detected = True

if getattr(_message, "reasoning_content", None) is not None:
    _reasoning_detected = True
elif getattr(_message, "reasoning", None) is not None:
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpk4fw9dqi/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=False,
)
_message = response.choices[0].message
if _message.tool_calls:
    for _tc in _message.tool_calls:
        print(f"Function: {_tc.function.name}")
        print(f"Arguments: {_tc.function.arguments}")
else:
    print(_message.content)

if not _message.tool_calls or len(_message.tool_calls) == 0:
    raise Exception("VALIDATION FAILED: tool-call - no tool calls in response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpxt89o6_3/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    temperature=0.5,
    stream=False,
)

print(response.choices[0].message.content)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpnmi9_jye/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=True,
)
_tool_calls_made = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if delta.tool_calls:
            _tool_calls_made = True
            for _tc in delta.tool_calls:
                if _tc.function:
                    print(_tc.function.arguments or "", end="", flush=True)

if not _tool_calls_made:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool calls received")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp4jaanfsy/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=True,
)
_reasoning_detected = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if getattr(delta, "reasoning_content", None) is not None:
            _reasoning_detected = True
        if getattr(delta, "reasoning", None) is not None:
            _reasoning_detected = True

    _usage = getattr(chunk, "usage", None)
    if _usage is not None:
        _details = getattr(_usage, "completion_tokens_details", None)
        if _details and getattr(_details, "reasoning_tokens", 0) > 0:
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in stream")
print("\nVALIDATION: reasoning stream SUCCESS")

Comment thread providers/aws-bedrock/eu.anthropic.claude-fable-5.yaml
@github-actions

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26 harshiv-26 enabled auto-merge (squash) June 15, 2026 07:12
@github-actions

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26 harshiv-26 merged commit d22a03d into main Jun 15, 2026
8 checks passed
@harshiv-26 harshiv-26 deleted the bot/add-aws-bedrock-eu.anthropic.claude-fable-5-20260609-182154 branch June 15, 2026 07:13
@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 12
  • Passed: 0
  • Failed: 12
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 0.0%
Provider Model Scenarios
aws-bedrock eu.anthropic.claude-fable-5 failure: reasoning:stream:boto3, params:stream:boto3, params:boto3, tool-call:stream:boto3, reasoning:boto3, tool-call:boto3, reasoning:stream, tool-call, reasoning, tool-call:stream, params:stream, params
Failures (12)

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpslcm9mo1/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            print(_delta["reasoningContent"].get("text", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_reasoning_detected = False
for _event in _events:
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            _reasoning_detected = True
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "reasoningContent" in _start:
            _reasoning_detected = True
    if "metadata" in _event:
        _usage = _event["metadata"].get("usage", {})
        if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in Bedrock stream")
print("\nVALIDATION: reasoning stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp2gwofb05/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — params:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp9pl1oo0e/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "text" in _block:
        print(_block["text"])

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpey1qyva6/snippet.py", line 54, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            print(f"Tool: {_start['toolUse'].get('name', '')}", flush=True)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            print(_delta["toolUse"].get("input", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_tool_use_detected = False
for _event in _events:
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            _tool_use_detected = True
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            _tool_use_detected = True

if not _tool_use_detected:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool uses in Bedrock stream")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmplsi1aldg/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "reasoningContent" in _block:
        print(_block["reasoningContent"]["reasoningText"]["text"])
    if "text" in _block:
        print(_block["text"])
_content = response["output"]["message"]["content"]
_reasoning_detected = False

for _block in _content:
    if "reasoningContent" in _block:
        _reasoning_detected = True

_usage = response.get("usage", {})
if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in Bedrock response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpp6cy19m5/snippet.py", line 54, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]
if _tool_uses:
    for _tu in _tool_uses:
        print(f"Tool: {_tu['toolUse']['name']}")
        print(f"Input: {_tu['toolUse']['input']}")
else:
    _text_blocks = [block["text"] for block in _content if "text" in block]
    print("\n".join(_text_blocks))
_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]

if not _tool_uses:
    raise Exception("VALIDATION FAILED: tool-call - no tool uses in Bedrock response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpk6x7rhr1/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=True,
)
_reasoning_detected = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if getattr(delta, "reasoning_content", None) is not None:
            _reasoning_detected = True
        if getattr(delta, "reasoning", None) is not None:
            _reasoning_detected = True

    _usage = getattr(chunk, "usage", None)
    if _usage is not None:
        _details = getattr(_usage, "completion_tokens_details", None)
        if _details and getattr(_details, "reasoning_tokens", 0) > 0:
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in stream")
print("\nVALIDATION: reasoning stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmphaniwvqk/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=False,
)
_message = response.choices[0].message
if _message.tool_calls:
    for _tc in _message.tool_calls:
        print(f"Function: {_tc.function.name}")
        print(f"Arguments: {_tc.function.arguments}")
else:
    print(_message.content)

if not _message.tool_calls or len(_message.tool_calls) == 0:
    raise Exception("VALIDATION FAILED: tool-call - no tool calls in response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzp5nbumo/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=False,
)
_usage = getattr(response, "usage", None)
_reasoning_detected = False

_choices = getattr(response, "choices", None)
if _choices and len(_choices) > 0:
    _message = getattr(_choices[0], "message", None)
else:
    _message = None

if _message and getattr(_message, "content", None) is not None:
    print(_message.content)

if _usage is not None:
    _output_token_details = getattr(_usage, "completion_tokens_details", None)
    if _output_token_details and getattr(_output_token_details, "reasoning_tokens", 0) > 0:
        _reasoning_detected = True
    elif getattr(_usage, "reasoning", None) is not None:
        _reasoning_detected = True

if getattr(_message, "reasoning_content", None) is not None:
    _reasoning_detected = True
elif getattr(_message, "reasoning", None) is not None:
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpz0tzw9i2/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=True,
)
_tool_calls_made = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if delta.tool_calls:
            _tool_calls_made = True
            for _tc in delta.tool_calls:
                if _tc.function:
                    print(_tc.function.arguments or "", end="", flush=True)

if not _tool_calls_made:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool calls received")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpy83sc5l2/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    stream=True,
)

for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpst4ouv0n/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    stream=False,
)

print(response.choices[0].message.content)

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 12
  • Passed: 0
  • Failed: 12
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 0.0%
Provider Model Scenarios
aws-bedrock eu.anthropic.claude-fable-5 failure: tool-call:stream:boto3, reasoning:boto3, tool-call:boto3, reasoning:stream:boto3, params:boto3, params:stream:boto3, tool-call, reasoning, tool-call:stream, params, params:stream, reasoning:stream
Failures (12)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp4ie1040m/snippet.py", line 54, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            print(f"Tool: {_start['toolUse'].get('name', '')}", flush=True)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            print(_delta["toolUse"].get("input", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_tool_use_detected = False
for _event in _events:
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "toolUse" in _start:
            _tool_use_detected = True
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "toolUse" in _delta:
            _tool_use_detected = True

if not _tool_use_detected:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool uses in Bedrock stream")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpovzi0z9v/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "reasoningContent" in _block:
        print(_block["reasoningContent"]["reasoningText"]["text"])
    if "text" in _block:
        print(_block["text"])
_content = response["output"]["message"]["content"]
_reasoning_detected = False

for _block in _content:
    if "reasoningContent" in _block:
        _reasoning_detected = True

_usage = response.get("usage", {})
if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in Bedrock response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpc_k1ayzi/snippet.py", line 54, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "get_weather",
                "description": "Get the current weather for a location.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city name, e.g. London",
                            },
                        },
                        "required": ["location"],
                    }
                },
            }
        }
    ],
    "toolChoice": {"auto": {}},
}

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."}]},
]

system = [{"text": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    toolConfig=tool_config,
)

_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]
if _tool_uses:
    for _tu in _tool_uses:
        print(f"Tool: {_tu['toolUse']['name']}")
        print(f"Input: {_tu['toolUse']['input']}")
else:
    _text_blocks = [block["text"] for block in _content if "text" in block]
    print("\n".join(_text_blocks))
_content = response["output"]["message"]["content"]
_tool_uses = [block for block in _content if "toolUse" in block]

if not _tool_uses:
    raise Exception("VALIDATION FAILED: tool-call - no tool uses in Bedrock response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmphkslojv3/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "How to calculate 3^3^3^3? Think step by step and show all reasoning."}]},
]

system = [{"text": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    additionalModelRequestFields={
        "thinking": {"type":"adaptive"},
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            print(_delta["reasoningContent"].get("text", ""), end="", flush=True)
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)
_reasoning_detected = False
for _event in _events:
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "reasoningContent" in _delta:
            _reasoning_detected = True
    if "contentBlockStart" in _event:
        _start = _event["contentBlockStart"].get("start", {})
        if "reasoningContent" in _start:
            _reasoning_detected = True
    if "metadata" in _event:
        _usage = _event["metadata"].get("usage", {})
        if _usage.get("reasoning_tokens") or _usage.get("reasoningTokens"):
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in Bedrock stream")
print("\nVALIDATION: reasoning stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpnpfpbk4f/snippet.py", line 30, in <module>
    response = client.converse(
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the Converse operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
    },
)

_content = response["output"]["message"]["content"]
for _block in _content:
    if "text" in _block:
        print(_block["text"])

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream:boto3 (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmplzceo9ht/snippet.py", line 30, in <module>
    response = client.converse_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 606, in _api_call
    return self._make_api_call(operation_name, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1094, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (400) when calling the ConverseStream operation: The model returned the following errors: data retention mode 'default' is not available for this model
Code snippet
import boto3
from botocore.config import Config

_endpoint = "https://internal.devtest.truefoundry.tech/api/llm"
_api_key = "***"
_model = "test-v2-aws-bedrock/eu.anthropic.claude-fable-5"

client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    endpoint_url=_endpoint,
    aws_access_key_id="dummy",
    aws_secret_access_key="dummy",
    config=Config(inject_host_prefix=False),
)

def _add_auth_header(request, **kwargs):
    request.headers["x-tfy-api-key"] = _api_key

client.meta.events.register("before-sign.bedrock-runtime.*", _add_auth_header)

messages = [
    {"role": "user", "content": [{"text": "Hi"}]},
    {"role": "assistant", "content": [{"text": "Hi, how can I help you"}]},
    {"role": "user", "content": [{"text": "What is the capital of France?"}]},
]

system = [{"text": "You are a helpful assistant."}]

response = client.converse_stream(
    modelId=_model,
    system=system,
    messages=messages,
    inferenceConfig={
        "maxTokens": 512,
    },
)

_events = []
for _event in response["stream"]:
    _events.append(_event)
    if "contentBlockDelta" in _event:
        _delta = _event["contentBlockDelta"].get("delta", {})
        if "text" in _delta:
            print(_delta["text"], end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpith92lx_/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=False,
)
_message = response.choices[0].message
if _message.tool_calls:
    for _tc in _message.tool_calls:
        print(f"Function: {_tc.function.name}")
        print(f"Arguments: {_tc.function.arguments}")
else:
    print(_message.content)

if not _message.tool_calls or len(_message.tool_calls) == 0:
    raise Exception("VALIDATION FAILED: tool-call - no tool calls in response")
print("VALIDATION: tool-call SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpsyykx19s/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=False,
)
_usage = getattr(response, "usage", None)
_reasoning_detected = False

_choices = getattr(response, "choices", None)
if _choices and len(_choices) > 0:
    _message = getattr(_choices[0], "message", None)
else:
    _message = None

if _message and getattr(_message, "content", None) is not None:
    print(_message.content)

if _usage is not None:
    _output_token_details = getattr(_usage, "completion_tokens_details", None)
    if _output_token_details and getattr(_output_token_details, "reasoning_tokens", 0) > 0:
        _reasoning_detected = True
    elif getattr(_usage, "reasoning", None) is not None:
        _reasoning_detected = True

if getattr(_message, "reasoning_content", None) is not None:
    _reasoning_detected = True
elif getattr(_message, "reasoning", None) is not None:
    _reasoning_detected = True

if not _reasoning_detected:
    print("Response: ", response)
    raise Exception("VALIDATION FAILED: reasoning - no reasoning information in response")
print("VALIDATION: reasoning SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpituiwne9/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant with access to tools. You MUST strictly use the provided tools to answer. Never respond with plain text when a tool is available."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=True,
)
_tool_calls_made = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if delta.tool_calls:
            _tool_calls_made = True
            for _tc in delta.tool_calls:
                if _tc.function:
                    print(_tc.function.arguments or "", end="", flush=True)

if not _tool_calls_made:
    raise Exception("VALIDATION FAILED: tool-call stream - no tool calls received")
print("\nVALIDATION: tool-call stream SUCCESS")

aws-bedrock/eu.anthropic.claude-fable-5 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpvg29bfax/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    stream=False,
)

print(response.choices[0].message.content)

aws-bedrock/eu.anthropic.claude-fable-5 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp6imqet6v/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "What is the capital of France?"},
    ],
    max_tokens=512,
    stream=True,
)

for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)

aws-bedrock/eu.anthropic.claude-fable-5 — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpglq2kmbq/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'status': 'failure', 'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'error': {'message': "aws-bedrock error: The model returned the following errors: data retention mode 'default' is not available for this model", 'type': 'APIError', 'code': '400'}, 'error_origin_level': 'api_error', 'provider': 'aws-bedrock'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-aws-bedrock/eu.anthropic.claude-fable-5",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. You MUST think step by step and show your reasoning. Never skip reasoning steps."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "How to calculate 3^3^3^3? Think step by step and show all reasoning."},
    ],
    reasoning_effort="medium",
    stream=True,
)
_reasoning_detected = False
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            print(delta.content, end="", flush=True)
        if getattr(delta, "reasoning_content", None) is not None:
            _reasoning_detected = True
        if getattr(delta, "reasoning", None) is not None:
            _reasoning_detected = True

    _usage = getattr(chunk, "usage", None)
    if _usage is not None:
        _details = getattr(_usage, "completion_tokens_details", None)
        if _details and getattr(_details, "reasoning_tokens", 0) > 0:
            _reasoning_detected = True

if not _reasoning_detected:
    raise Exception("VALIDATION FAILED: reasoning stream - no reasoning information in stream")
print("\nVALIDATION: reasoning stream SUCCESS")

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b0e6ccf. Configure here.

- function_calling
- prompt_caching
- system_messages
- tool_choice

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incomplete advertised model features

Medium Severity

The features list only includes basic chat and tools flags, while the Bedrock global Fable 5 profile for the same model also lists parallel_function_calling, cache_control, structured_output, and assistant_prefill. Under-reporting capabilities can cause gateway feature gating and tool-call scenarios to behave incorrectly for this model id.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b0e6ccf. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant