Skip to content

feat(google-vertex): update model YAMLs [bot] - #1967

Merged
architkumar-truefoundry merged 6 commits into
mainfrom
bot/update-google-vertex-20260731-125947
Aug 1, 2026
Merged

feat(google-vertex): update model YAMLs [bot]#1967
architkumar-truefoundry merged 6 commits into
mainfrom
bot/update-google-vertex-20260731-125947

Conversation

@models-bot

@models-bot models-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Auto-generated by poc-agent for provider google-vertex.


Note

Medium Risk
Wide catalog changes affect cost routing and which models appear deprecated; incorrect dates or pricing could mislead billing and model selection, but changes are metadata-only YAML.

Overview
Bulk refresh of google-vertex model YAMLs: lifecycle, pricing, limits, and capability metadata aligned with current Google docs.

Deprecations: A large set of Vertex MaaS chat models (DeepSeek, Qwen, MiniMax, Kimi, GLM, Meta Llama 3.3, etc.) are now status: deprecated with isDeprecated, deprecationDate 2026-07-21, and retirementDate 2026-10-21. Several Vision AI SKUs (occupancy analytics, people blur, PPE/product/tag recognizers, vehicle detector) follow the same pattern with June/September 2026 dates; occupancy analytics also drops inline pricing comments.

Pricing & regions: Claude Haiku gains us / eu cost rows; Claude Opus adds batch input/output costs per region. multimodalembedding@001 expands regional costs; intfloat/multilingual-e5-large-instruct-maas and openai/gpt-oss-120b-maas add us (and eu for E5). Many entries normalize token rates to scientific notation without changing values.

Active model tweaks: gemini-2.5-flash-lite output limits move 65535 → 65536; gemini-3-pro-image-preview adds batch pricing, temperature/top_p params, and drops structured_output from features; gemini-3.1-pro-preview adds cache_creation_input_token_cost_per_hour; gemini-2.5-pro-tts activepreview; Gemma configs get max_tokens / extra input modalities; google/text-detector mode/supportedModesocr; misc feature flags (thinking, json_output, system_messages) and doc sources updates across Anthropic/Gemini/Qwen entries.

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

@github-actions

Copy link
Copy Markdown
Contributor

/test-models

@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 using default effort and found 3 potential issues.

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 4364a63. Configure here.

Comment thread providers/google-vertex/google/object-detector.yaml Outdated
Comment thread providers/google-vertex/google/language-v1-classify-text-v1.yaml
Comment thread providers/google-vertex/google/gemini-2.5-pro-tts.yaml
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

/test-models

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

/test-models

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 115
  • Passed: 20
  • Failed: 72
  • Validation failed: 0
  • Errored: 0
  • Skipped: 23
  • Success rate: 21.74%
Provider Model Scenarios
google-vertex anthropic/claude-haiku-4-5@20251001 failure: structured-output, params:stream, params, tool-call:stream, tool-call, structured-output:stream
google-vertex anthropic/claude-opus-4-6 failure: params:stream, tool-call:stream, tool-call, structured-output:stream, params, reasoning:stream, structured-output, reasoning
google-vertex anthropic/claude-sonnet-4-5 failure: structured-output, params, params:stream, tool-call, structured-output:stream, tool-call:stream
google-vertex deepseek-ai/deepseek-ocr-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-r1-0528-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-1 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-2 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3.1-maas skipped: skip-check
google-vertex gemini-3-pro-image-preview skipped: skip-check
google-vertex google/gemini-2.5-flash-lite success: params:stream:google-genai, json-output:google-genai, params:google-genai, json-output:stream:google-genai, structured-output:google-genai, tool-call:stream:google-genai, structured-output:stream:google-genai, tool-call:google-genai, reasoning:stream:google-genai, reasoning:google-genai

failure: tool-call, json-output, json-output:stream, structured-output, reasoning, reasoning:stream, structured-output:stream, tool-call:stream, params:stream, params
google-vertex google/gemini-3.1-pro-preview success: tool-call:google-genai, params:google-genai, params:stream:google-genai, structured-output:google-genai, json-output:google-genai, structured-output:stream:google-genai, json-output:stream:google-genai, tool-call:stream:google-genai, reasoning:stream:google-genai, reasoning:google-genai

failure: params, params:stream, tool-call, structured-output:stream, tool-call:stream, json-output, reasoning:stream, reasoning, structured-output, json-output:stream
google-vertex google/gemma4 skipped: skip-check
google-vertex google/object-detector skipped: skip-check
google-vertex google/people-blur skipped: skip-check
google-vertex google/ppe-detector skipped: skip-check
google-vertex google/product-recognizer skipped: skip-check
google-vertex google/tag-recognizer skipped: skip-check
google-vertex google/text-detector skipped: skip-check
google-vertex intfloat/multilingual-e5-large-instruct-maas failure: params
google-vertex meta/llama-3.3-70b-instruct-maas skipped: skip-check
google-vertex meta/llama-4-maverick-17b-128e-instruct-maas failure: params:stream, structured-output, tool-call:stream, structured-output:stream, tool-call, params
google-vertex minimaxai/minimax-m2 skipped: skip-check
google-vertex minimaxai/minimax-m2-maas skipped: skip-check
google-vertex mistralai/codestral-2 failure: json-output, params, structured-output, tool-call, tool-call:stream, params:stream, json-output:stream, structured-output:stream
google-vertex moonshotai/kimi-k2-thinking-maas skipped: skip-check
google-vertex multimodalembedding@001 failure: params
google-vertex openai/gpt-oss-120b-maas failure: params, tool-call:stream, tool-call, structured-output, params:stream, structured-output:stream
google-vertex qwen/qwen3-235b-a22b-instruct-2507-maas skipped: skip-check
google-vertex qwen/qwen3-coder-480b-a35b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-thinking-maas skipped: skip-check
google-vertex zai-org/glm-4.7 skipped: skip-check
google-vertex zai-org/glm-4.7-maas failure: reasoning, tool-call, tool-call:stream, params, params:stream, reasoning:stream, json-output:stream, json-output, structured-output:stream, structured-output
google-vertex zai-org/glm-5-maas skipped: skip-check
Failures (72)

google-vertex/anthropic/claude-opus-4-6 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpayv3ez24/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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=256,
    temperature=0.7,
    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)

google-vertex/anthropic/claude-opus-4-6 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpkhsla6ny/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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")

google-vertex/anthropic/claude-opus-4-6 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp2aml7ppm/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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")

google-vertex/anthropic/claude-opus-4-6 — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp82uabuod/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-opus-4-6",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/anthropic/claude-opus-4-6 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp3f2fi9k7/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/anthropic/claude-opus-4-6 — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpwc0684so/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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")

google-vertex/anthropic/claude-opus-4-6 — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp136buwq_/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-opus-4-6",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/anthropic/claude-opus-4-6 — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp4amfb4d3/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-opus-4-6 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-opus-4-6",
    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")

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp9sdnmb8k/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-haiku-4-5-20251001",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/anthropic/claude-haiku-4-5@20251001 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpoh5o1caw/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-haiku-4-5-20251001",
    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=256,
    temperature=0.7,
    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)

google-vertex/anthropic/claude-haiku-4-5@20251001 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzsnb39of/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-haiku-4-5-20251001",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpdfq8gr_r/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-haiku-4-5-20251001",
    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")

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp320e4gys/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-haiku-4-5-20251001",
    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")

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpyz3fu151/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-haiku-4-5-20251001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-haiku-4-5-20251001",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/anthropic/claude-sonnet-4-5 — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpt9wgz_54/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-sonnet-4-5",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/anthropic/claude-sonnet-4-5 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpy0u8cj15/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-sonnet-4-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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/anthropic/claude-sonnet-4-5 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpeebilfjk/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-sonnet-4-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=256,
    temperature=0.7,
    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)

google-vertex/anthropic/claude-sonnet-4-5 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzv7ze_h9/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-sonnet-4-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")

google-vertex/anthropic/claude-sonnet-4-5 — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp_h3qsxfc/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/anthropic-claude-sonnet-4-5",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/anthropic/claude-sonnet-4-5 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpx6qhgqke/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/anthropic-claude-sonnet-4-5 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/anthropic-claude-sonnet-4-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")

google-vertex/google/gemini-2.5-flash-lite — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp9quvgdqt/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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")

google-vertex/google/gemini-2.5-flash-lite — json-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpa_ipbipk/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

google-vertex/google/gemini-2.5-flash-lite — json-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpm2z38mz2/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

google-vertex/google/gemini-2.5-flash-lite — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmplr7ky_g3/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/google-gemini-2.5-flash-lite",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/google/gemini-2.5-flash-lite — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzjr70nst/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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")

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpvdiv5uz6/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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")

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpbra10lpm/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/google-gemini-2.5-flash-lite",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmplwegzb38/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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")

google-vertex/google/gemini-2.5-flash-lite — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp5a_wq5oo/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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=256,
    temperature=1,
    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)

google-vertex/google/gemini-2.5-flash-lite — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp97_btb1m/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-2.5-flash-lite or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-2.5-flash-lite",
    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=256,
    temperature=1,
    stream=False,
)

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

google-vertex/openai/gpt-oss-120b-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpea5yivtm/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/openai-gpt-oss-120b-maas",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/openai/gpt-oss-120b-maas — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp9s9o820i/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/openai-gpt-oss-120b-maas",
    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")

google-vertex/openai/gpt-oss-120b-maas — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzrwrdjyj/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/openai-gpt-oss-120b-maas",
    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")

google-vertex/openai/gpt-oss-120b-maas — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp82si4t_g/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/openai-gpt-oss-120b-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/openai/gpt-oss-120b-maas — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpl785in_2/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/openai-gpt-oss-120b-maas",
    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=256,
    temperature=0.7,
    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)

google-vertex/openai/gpt-oss-120b-maas — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpxoche7su/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/openai-gpt-oss-120b-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/openai-gpt-oss-120b-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/mistralai/codestral-2 — json-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpwmyupvi2/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

google-vertex/mistralai/codestral-2 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp5z38hxr0/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/mistralai/codestral-2 — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpvq_rwiv7/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/mistralai-codestral-2",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/mistralai/codestral-2 — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpmc3cc05a/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    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")

google-vertex/mistralai/codestral-2 — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpgkw88k_t/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    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")

google-vertex/mistralai/codestral-2 — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp5tm24che/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    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=256,
    temperature=0.7,
    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)

google-vertex/mistralai/codestral-2 — json-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpnopaq9mv/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/mistralai-codestral-2",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

google-vertex/mistralai/codestral-2 — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpxoz80xmf/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/mistralai-codestral-2 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/mistralai-codestral-2",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpjeabtxm9/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    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=256,
    temperature=0.7,
    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)

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmptv16ekdv/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp34h9_um3/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    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")

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp68y58f8m/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpj_9u7bsw/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    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")

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmphnyh21if/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/meta-llama-4-maverick-17b-128e-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/meta-llama-4-maverick-17b-128e-instruct-maas",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/google/gemini-3.1-pro-preview — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp49ykmznx/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/google/gemini-3.1-pro-preview — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpwvzgqouv/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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=256,
    temperature=0.7,
    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)

google-vertex/google/gemini-3.1-pro-preview — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpzlxdks_j/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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")

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpfv5ear0c/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/google-gemini-3.1-pro-preview",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp2l45e7_j/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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")

google-vertex/google/gemini-3.1-pro-preview — json-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpu6zls0ax/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpocfhl_p9/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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")

google-vertex/google/gemini-3.1-pro-preview — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpwmmzz_6q/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    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")

google-vertex/google/gemini-3.1-pro-preview — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpvd949pgp/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/google-gemini-3.1-pro-preview",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/google/gemini-3.1-pro-preview — json-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpwbt9x2nb/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/google-gemini-3.1-pro-preview or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/google-gemini-3.1-pro-preview",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

google-vertex/zai-org/glm-4.7-maas — reasoning (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpvl8gbo1t/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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")

google-vertex/zai-org/glm-4.7-maas — tool-call (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpob_az3vm/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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")

google-vertex/zai-org/glm-4.7-maas — tool-call:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp4zhnnu6f/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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")

google-vertex/zai-org/glm-4.7-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpokevk7v1/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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=256,
    temperature=0.7,
    stream=False,
)

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

google-vertex/zai-org/glm-4.7-maas — params:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpj19s7ksy/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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=256,
    temperature=0.7,
    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)

google-vertex/zai-org/glm-4.7-maas — reasoning:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpr0nspe8l/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    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")

google-vertex/zai-org/glm-4.7-maas — json-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpp9ou0vzg/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

google-vertex/zai-org/glm-4.7-maas — json-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmps76a_4f0/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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
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-vertex/zai-org-glm-4.7-maas",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Respond in JSON format."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

google-vertex/zai-org/glm-4.7-maas — structured-output:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpek8zgi8i/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/zai-org-glm-4.7-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")

google-vertex/zai-org/glm-4.7-maas — structured-output (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp41wayim1/snippet.py", line 21, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/zai-org-glm-4.7-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/zai-org-glm-4.7-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")

google-vertex/intfloat/multilingual-e5-large-instruct-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpc5q05r3k/snippet.py", line 5, in <module>
    response = client.embeddings.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/embeddings.py", line 132, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI

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

response = client.embeddings.create(
    model="test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas",
    input="What is the capital of France?",
    encoding_format="float",
)

output = [embed.embedding for embed in response.data]
print(output)

google-vertex/multimodalembedding@001 — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpjae7o9q0/snippet.py", line 5, in <module>
    response = client.embeddings.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/embeddings.py", line 132, 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.PermissionDeniedError: Error code: 403 - {'status': 'failure', 'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/multimodalembedding-001 or model does not exist', 'error': {'message': 'User gateway-tester-v2-8737c47a-4 is not authorized to access model test-v2-vertex/multimodalembedding-001 or model does not exist', 'type': 'AuthorizationError', 'code': '403'}, 'error_origin_level': 'authorization'}
Code snippet
from openai import OpenAI

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

response = client.embeddings.create(
    model="test-v2-vertex/multimodalembedding-001",
    input="What is the capital of France?",
    encoding_format="float",
)

output = [embed.embedding for embed in response.data]
print(output)
Successes (20)

google-vertex/google/gemini-2.5-flash-lite — params:stream:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-2.5-flash-lite — json-output:google-genai (success)

Output
[
  {
    "color": "red",
    "hex_code": "#FF0000"
  },
  {
    "color": "blue",
    "hex_code": "#0000FF"
  },
  {
    "color": "green",
    "hex_co
... (truncated, 53 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — params:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — json-output:stream:google-genai (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#00FF00"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 24 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — structured-output:google-genai (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream:google-genai (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating Power Tower**

I'm focusing on the core challenge of a power tower, specifically understanding its top-down evaluation. The n
... (truncated, 6563 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:google-genai (success)

Output
[Thinking] Alright, let's break down this calculation of $3^{3^{3^3}}$. As an expert in this area, I know immediately that this is a power tower, and 
... (truncated, 5075 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-3.1-pro-preview — params:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params:stream:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — structured-output:google-genai (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream:google-genai (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating the Iterated Exponent**

I'm breaking down the calculation of $3^{3^{3^3}}$. The focus is on understanding the order of opera
... (truncated, 2476 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:google-genai (success)

Output
[Thinking] **My Thought Process for Calculating $3^{3^{3^{3}}}$**

Here's how my mind processed the request to calculate the expression $3^{3^{3^{3}}}
... (truncated, 6129 chars omitted)
Skipped (23)

google-vertex/deepseek-ai/deepseek-ocr-maas — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/deepseek-ai/deepseek-r1-0528-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-1 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3.1-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/gemini-3-pro-image-preview — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/gemma4 — skip-check (skipped)

Skip reason
Provisioned model

google-vertex/google/object-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/people-blur — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/ppe-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/product-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/tag-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/text-detector — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/meta/llama-3.3-70b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/moonshotai/kimi-k2-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-coder-480b-a35b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-4.7 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-5-maas — skip-check (skipped)

Skip reason
deprecated or retired model

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 115
  • Passed: 90
  • Failed: 1
  • Validation failed: 1
  • Errored: 0
  • Skipped: 23
  • Success rate: 97.83%
Provider Model Scenarios
google-vertex anthropic/claude-haiku-4-5@20251001 success: tool-call, structured-output, params, structured-output:stream, params:stream, tool-call:stream
google-vertex anthropic/claude-opus-4-6 success: params:stream, tool-call, structured-output:stream, tool-call:stream, params, structured-output, reasoning:stream, reasoning
google-vertex anthropic/claude-sonnet-4-5 success: structured-output, params:stream, params, tool-call:stream, tool-call, structured-output:stream
google-vertex deepseek-ai/deepseek-ocr-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-r1-0528-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-1 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-2 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3.1-maas skipped: skip-check
google-vertex gemini-3-pro-image-preview skipped: skip-check
google-vertex google/gemini-2.5-flash-lite success: tool-call:stream, params, structured-output:stream, json-output, structured-output, params:stream, tool-call, json-output:stream, structured-output:google-genai, params:google-genai, tool-call:google-genai, tool-call:stream:google-genai, structured-output:stream:google-genai, params:stream:google-genai, json-output:stream:google-genai, json-output:google-genai, reasoning:stream, reasoning, reasoning:stream:google-genai, reasoning:google-genai
google-vertex google/gemini-3.1-pro-preview success: tool-call, params, params:stream, json-output, structured-output:stream, structured-output, params:google-genai, tool-call:stream:google-genai, params:stream:google-genai, json-output:stream, structured-output:stream:google-genai, tool-call:stream, json-output:google-genai, structured-output:google-genai, json-output:stream:google-genai, reasoning:stream:google-genai, reasoning:stream, reasoning, reasoning:google-genai, tool-call:google-genai
google-vertex google/gemma4 skipped: skip-check
google-vertex google/object-detector skipped: skip-check
google-vertex google/people-blur skipped: skip-check
google-vertex google/ppe-detector skipped: skip-check
google-vertex google/product-recognizer skipped: skip-check
google-vertex google/tag-recognizer skipped: skip-check
google-vertex google/text-detector skipped: skip-check
google-vertex intfloat/multilingual-e5-large-instruct-maas failure: params
google-vertex meta/llama-3.3-70b-instruct-maas skipped: skip-check
google-vertex meta/llama-4-maverick-17b-128e-instruct-maas success: tool-call:stream, params, structured-output, tool-call, structured-output:stream, params:stream
google-vertex minimaxai/minimax-m2 skipped: skip-check
google-vertex minimaxai/minimax-m2-maas skipped: skip-check
google-vertex mistralai/codestral-2 success: params, structured-output:stream, json-output, json-output:stream, tool-call:stream, params:stream, tool-call, structured-output
google-vertex moonshotai/kimi-k2-thinking-maas skipped: skip-check
google-vertex multimodalembedding@001 success: params
google-vertex openai/gpt-oss-120b-maas success: params:stream, tool-call, tool-call:stream, params, structured-output:stream

validation_failure: structured-output
google-vertex qwen/qwen3-235b-a22b-instruct-2507-maas skipped: skip-check
google-vertex qwen/qwen3-coder-480b-a35b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-thinking-maas skipped: skip-check
google-vertex zai-org/glm-4.7 skipped: skip-check
google-vertex zai-org/glm-4.7-maas success: tool-call:stream, params:stream, tool-call, params, json-output, json-output:stream, structured-output:stream, structured-output, reasoning, reasoning:stream
google-vertex zai-org/glm-5-maas skipped: skip-check
Failures (2)

google-vertex/openai/gpt-oss-120b-maas — structured-output (validation_failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp1o5k1kv4/snippet.py", line 43, in <module>
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")
Exception: VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/openai-gpt-oss-120b-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")
Output
{
  "participants": ["Alice", "Bob"],
  "event": "Science Fair",
  "date": "2026-08-07"
}

google-vertex/intfloat/multilingual-e5-large-instruct-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpik9c0ibh/snippet.py", line 5, in <module>
    response = client.embeddings.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/embeddings.py", line 132, 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': 'Request translation failed: embed is not supported by google-vertex', 'error': {'message': 'Request translation failed: embed is not supported by google-vertex', 'type': 'ReqTranslationError', 'code': '400'}, 'error_origin_level': 'request_translation'}
Code snippet
from openai import OpenAI

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

response = client.embeddings.create(
    model="test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas",
    input="What is the capital of France?",
    encoding_format="float",
)

output = [embed.embedding for embed in response.data]
print(output)
Successes (90)

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — params (success)

Output
The capital of France is **Paris**. 

Paris is located in the north-central part of the country along the Seine River and is the largest city in Franc
... (truncated, 103 chars omitted)

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — params:stream (success)

Output
The capital of France is **Paris**.

Paris is located in the north-central part of France along the Seine River and is the country's largest city. It'
... (truncated, 96 chars omitted)

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output (success)

Output
[
  {
    "color": "Red",
    "hex_code": "#FF0000"
  },
  {
    "color": "Green",
    "hex_code": "#00FF00"
  },
  {
    "color": "Blue",
    "hex_co
... (truncated, 53 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — structured-output (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params:stream (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output:stream (success)

Output
[
  {
    "color": "Red",
    "hex_code": "#FF0000"
  },
  {
    "color": "Green",
    "hex_code": "#00FF00"
  },
  {
    "color": "Blue",
    "hex_co
... (truncated, 60 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — structured-output:google-genai (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream:google-genai (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params:stream:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — json-output:stream:google-genai (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#00FF00"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 24 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — json-output:google-genai (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#00FF00"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 17 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream (success)

Output
Let's break down the calculation of $3^{3^{3^3}}$ step by step.

This expression is a power tower, and these are evaluated from the top exponent downw
... (truncated, 1855 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning (success)

Output
To calculate $3^{3^{3^3}}$, we need to evaluate the exponents from top to bottom. This is known as a power tower or tetration.

Here's the step-by-ste
... (truncated, 1996 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream:google-genai (success)

Output
[Thinking] **Evaluating the Power Tower**

I'm focusing on solving this complex exponentiation. My current thought process involves breaking it down f
... (truncated, 4720 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:google-genai (success)

Output
[Thinking] Okay, I need to compute the value of $3^{3^{3^3}}$. This is a "tower of exponents," and the crucial first step is understanding the order o
... (truncated, 6310 chars omitted)

google-vertex/anthropic/claude-sonnet-4-5 — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-sonnet-4-5 — params (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-sonnet-4-5 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — structured-output:stream (success)

Output
{"name": "science fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/mistralai/codestral-2 — params (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/mistralai/codestral-2 — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 92 chars omitted)

google-vertex/mistralai/codestral-2 — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 99 chars omitted)

google-vertex/mistralai/codestral-2 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/mistralai/codestral-2 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/mistralai/codestral-2 — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params:stream (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country along the Seine River and is known for iconic landmarks like
... (truncated, 106 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-opus-4-6 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country along the Seine River and is known for iconic landmarks like
... (truncated, 107 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-opus-4-6 — reasoning:stream (success)

Output
# Calculating 3^3^3^3

## Step 0: Understand the Order of Operations

Exponentiation is **right-associative**, meaning we evaluate from the **top down
... (truncated, 1053 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — reasoning (success)

Output
# Calculating 3^3^3^3

## Step 0: Understand the Order of Operations

Exponentiation is **right-associative**, meaning we evaluate from the **top down
... (truncated, 1169 chars omitted)

google-vertex/zai-org/glm-4.7-maas — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — params:stream (success)

Output
The capital of France is **Paris**.

google-vertex/zai-org/glm-4.7-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/zai-org/glm-4.7-maas — params (success)

Output
The capital of France is Paris.

google-vertex/zai-org/glm-4.7-maas — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 77 chars omitted)

google-vertex/zai-org/glm-4.7-maas — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 84 chars omitted)

google-vertex/zai-org/glm-4.7-maas — structured-output:stream (success)

Output
{
  "date": "Friday",
  "name": "science fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — structured-output (success)

Output
{
  "date": "Friday",
  "name": "Science Fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output SUCCESS

google-vertex/zai-org/glm-4.7-maas — reasoning (success)

Output
To calculate the value of $3^{3^{3^3}}$, we must carefully follow the order of operations. In mathematics, exponentiation towers are evaluated from th
... (truncated, 1240 chars omitted)

google-vertex/zai-org/glm-4.7-maas — reasoning:stream (success)

Output
To calculate the value of $3^{3^{3^{3}}}$, we must follow the standard order of operations for exponents (also known as the "order of precedence"). Ex
... (truncated, 1943 chars omitted)

google-vertex/openai/gpt-oss-120b-maas — params:stream (success)

Output
The capital of France is **

google-vertex/openai/gpt-oss-120b-maas — tool-call (success)

Output
Function: get_weather
Arguments: {
  "location": "London"
}

VALIDATION: tool-call SUCCESS

google-vertex/openai/gpt-oss-120b-maas — tool-call:stream (success)

Output
{
  "location": "London"

VALIDATION: tool-call stream SUCCESS

google-vertex/openai/gpt-oss-120b-maas — params (success)

Output
The capital of France is **Paris**.

google-vertex/openai/gpt-oss-120b-maas — structured-output:stream (success)

Output
{"date":"Friday","name":"science fair","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params (success)

Output
The capital of France is Paris.

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output:stream (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params:stream (success)

Output
The capital of France is Paris.

google-vertex/multimodalembedding@001 — params (success)

Output
[[-0.0194163825, -0.0279629342, 0.00421190402, 0.00331213395, -0.00399194937, 0.0140609918, 0.0111711444, -0.000444487901, 0.00144916482, 0.0226600189
... (truncated, 20545 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-3.1-pro-preview — params (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params:stream (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — json-output (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — params:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — params:stream:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — json-output:stream (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream:google-genai (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:google-genai (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating the Exponent Tower**

I'm working through the calculation of $3^{3^{3^3}}$. My current focus is on understanding the order of
... (truncated, 2187 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream (success)

Output
To calculate \( 3^{3^{3^{3}}} \), we must first understand a fundamental rule of mathematics regarding exponents: **exponentiation is right-associativ
... (truncated, 2441 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning (success)

Output
To calculate the expression **$3^{3^{3^3}}$** (which is also known as tetration, written as ${}^{4}3$), we need to follow the mathematical rules for e
... (truncated, 1982 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:google-genai (success)

Output
[Thinking] **Understanding the Calculation of $3^{3^{3^3}}$**

My primary objective here is to break down how one would go about calculating the value
... (truncated, 4085 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS
Skipped (23)

google-vertex/deepseek-ai/deepseek-ocr-maas — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/deepseek-ai/deepseek-r1-0528-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-1 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3.1-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/gemini-3-pro-image-preview — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/gemma4 — skip-check (skipped)

Skip reason
Provisioned model

google-vertex/google/object-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/people-blur — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/ppe-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/product-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/tag-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/text-detector — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/meta/llama-3.3-70b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/moonshotai/kimi-k2-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-coder-480b-a35b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-4.7 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-5-maas — skip-check (skipped)

Skip reason
deprecated or retired model

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 115
  • Passed: 89
  • Failed: 1
  • Validation failed: 1
  • Errored: 0
  • Skipped: 24
  • Success rate: 97.8%
Provider Model Scenarios
google-vertex anthropic/claude-haiku-4-5@20251001 success: params, tool-call:stream, structured-output:stream, structured-output, tool-call, params:stream
google-vertex anthropic/claude-opus-4-6 success: structured-output, tool-call:stream, params:stream, tool-call, structured-output:stream, params, reasoning:stream, reasoning
google-vertex anthropic/claude-sonnet-4-5 success: structured-output:stream, tool-call, structured-output, params:stream, tool-call:stream, params
google-vertex deepseek-ai/deepseek-ocr-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-r1-0528-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-1 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-2 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3.1-maas skipped: skip-check
google-vertex gemini-3-pro-image-preview skipped: skip-check
google-vertex google/gemini-2.5-flash-lite success: tool-call:stream, params:stream, json-output:stream, structured-output, structured-output:stream, json-output, tool-call, params, params:google-genai, params:stream:google-genai, tool-call:google-genai, json-output:stream:google-genai, json-output:google-genai, tool-call:stream:google-genai, structured-output:stream:google-genai, structured-output:google-genai, reasoning:stream, reasoning, reasoning:stream:google-genai, reasoning:google-genai
google-vertex google/gemini-3.1-pro-preview success: params:stream, params, tool-call, tool-call:stream, json-output, structured-output:stream, structured-output, json-output:stream, params:stream:google-genai, params:google-genai, tool-call:stream:google-genai, structured-output:google-genai, json-output:google-genai, structured-output:stream:google-genai, json-output:stream:google-genai, reasoning:stream, reasoning:stream:google-genai, reasoning, reasoning:google-genai

skipped: tool-call:google-genai
google-vertex google/gemma4 skipped: skip-check
google-vertex google/object-detector skipped: skip-check
google-vertex google/people-blur skipped: skip-check
google-vertex google/ppe-detector skipped: skip-check
google-vertex google/product-recognizer skipped: skip-check
google-vertex google/tag-recognizer skipped: skip-check
google-vertex google/text-detector skipped: skip-check
google-vertex intfloat/multilingual-e5-large-instruct-maas failure: params
google-vertex meta/llama-3.3-70b-instruct-maas skipped: skip-check
google-vertex meta/llama-4-maverick-17b-128e-instruct-maas success: params:stream, tool-call:stream, tool-call, structured-output, structured-output:stream, params
google-vertex minimaxai/minimax-m2 skipped: skip-check
google-vertex minimaxai/minimax-m2-maas skipped: skip-check
google-vertex mistralai/codestral-2 success: tool-call:stream, params:stream, json-output:stream, structured-output, params, structured-output:stream, json-output, tool-call
google-vertex moonshotai/kimi-k2-thinking-maas skipped: skip-check
google-vertex multimodalembedding@001 success: params
google-vertex openai/gpt-oss-120b-maas success: tool-call, params:stream, tool-call:stream, params, structured-output:stream

validation_failure: structured-output
google-vertex qwen/qwen3-235b-a22b-instruct-2507-maas skipped: skip-check
google-vertex qwen/qwen3-coder-480b-a35b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-thinking-maas skipped: skip-check
google-vertex zai-org/glm-4.7 skipped: skip-check
google-vertex zai-org/glm-4.7-maas success: params, tool-call, params:stream, json-output:stream, tool-call:stream, structured-output, structured-output:stream, json-output, reasoning:stream, reasoning
google-vertex zai-org/glm-5-maas skipped: skip-check
Failures (2)

google-vertex/openai/gpt-oss-120b-maas — structured-output (validation_failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpstlqe1_k/snippet.py", line 43, in <module>
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")
Exception: VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/openai-gpt-oss-120b-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

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

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")
Output
{
  "participants": [
    "Alice",
    "Bob"
  ],
  "event": "science fair",
  "day_of_week": "Friday"
}

google-vertex/intfloat/multilingual-e5-large-instruct-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmp_v09r9lc/snippet.py", line 5, in <module>
    response = client.embeddings.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/embeddings.py", line 132, 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': 'Request translation failed: embed is not supported by google-vertex', 'error': {'message': 'Request translation failed: embed is not supported by google-vertex', 'type': 'ReqTranslationError', 'code': '400'}, 'error_origin_level': 'request_translation'}
Code snippet
from openai import OpenAI

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

response = client.embeddings.create(
    model="test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas",
    input="What is the capital of France?",
    encoding_format="float",
)

output = [embed.embedding for embed in response.data]
print(output)
Successes (89)

google-vertex/anthropic/claude-haiku-4-5@20251001 — params (success)

Output
The capital of France is **Paris**. It's the largest city in France and has been the capital since the 12th century. Paris is known for iconic landmar
... (truncated, 71 chars omitted)

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — params:stream (success)

Output
The capital of France is **Paris**. It's also the largest city in France and is located in the north-central part of the country along the Seine River
... (truncated, 109 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params:stream (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — json-output:stream (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#00FF00"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 24 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — structured-output (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#008000"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 17 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — params:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — params:stream:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex_code": "#FF0000"
  },
  {
    "color": "Green",
    "hex_code": "#008000"
  },
  {
    "color": "Blue",
    "hex_co
... (truncated, 60 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — json-output:google-genai (success)

Output
[
  {"color": "Red", "hex_code": "#FF0000"},
  {"color": "Green", "hex_code": "#00FF00"},
  {"color": "Blue", "hex_code": "#0000FF"}
]
VALIDATION: jso
... (truncated, 17 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream:google-genai (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:google-genai (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream (success)

Output
Okay, let's break down the calculation of $3^{3^{3^3}}$ step by step. This is a tower of exponents, and it's crucial to remember that we evaluate thes
... (truncated, 2298 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning (success)

Output
Okay, let's break down the calculation of $3^{3^{3^3}}$ step by step.

The key to understanding expressions like this is to remember that exponents ar
... (truncated, 2161 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream:google-genai (success)

Output
[Thinking] **Evaluating the Power Tower**

I'm currently working through the topmost exponent of the power tower, which is $3^3$. This initial calcula
... (truncated, 3986 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:google-genai (success)

Output
[Thinking] I understand that I need to calculate the value of $3^{3^{3^3}}$. This expression represents a tower of exponents, and it's crucial to reme
... (truncated, 5547 chars omitted)

google-vertex/anthropic/claude-sonnet-4-5 — structured-output:stream (success)

Output
{"name": "science fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-sonnet-4-5 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — params (success)

Output
The capital of France is **Paris**. It's the largest city in France and has been the country's capital since the 12th century. Paris is known for its 
... (truncated, 85 chars omitted)

google-vertex/zai-org/glm-4.7-maas — params (success)

Output
The capital of France is **Paris**.

google-vertex/zai-org/glm-4.7-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/zai-org/glm-4.7-maas — params:stream (success)

Output
The capital of France is Paris.

google-vertex/zai-org/glm-4.7-maas — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 84 chars omitted)

google-vertex/zai-org/glm-4.7-maas — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — structured-output (success)

Output
{
  "date": "Friday",
  "name": "science fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output SUCCESS

google-vertex/zai-org/glm-4.7-maas — structured-output:stream (success)

Output
{
  "date": "Friday",
  "name": "science fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 77 chars omitted)

google-vertex/zai-org/glm-4.7-maas — reasoning:stream (success)

Output
To calculate $3^{3^{3^3}}$, we must follow the standard mathematical convention for exponentiation, which is that exponentiation is right-associative.
... (truncated, 1463 chars omitted)

google-vertex/zai-org/glm-4.7-maas — reasoning (success)

Output
To calculate the value of $3^{3^{3^3}}$, we must follow the standard order of operations for stacked exponents, which is to evaluate from the top down
... (truncated, 1342 chars omitted)

google-vertex/openai/gpt-oss-120b-maas — tool-call (success)

Output
Function: get_weather
Arguments: {
  "location": "London"
}

VALIDATION: tool-call SUCCESS

google-vertex/openai/gpt-oss-120b-maas — params:stream (success)

Output
The capital of France is **Paris

google-vertex/openai/gpt-oss-120b-maas — tool-call:stream (success)

Output
{
  "location": "London
VALIDATION: tool-call stream SUCCESS

google-vertex/openai/gpt-oss-120b-maas — params (success)

Output
The capital of France is **Paris**. It’s not only the political center but also a major cultural, artistic, and economic hub, known for landmarks like
... (truncated, 170 chars omitted)

google-vertex/openai/gpt-oss-120b-maas — structured-output:stream (success)

Output
{"date":"Friday","name":"science fair","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/mistralai/codestral-2 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/mistralai/codestral-2 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 99 chars omitted)

google-vertex/mistralai/codestral-2 — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/mistralai/codestral-2 — params (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/mistralai/codestral-2 — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 92 chars omitted)

google-vertex/mistralai/codestral-2 — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params:stream (success)

Output
The capital of France is Paris.

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output:stream (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-opus-4-6 — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-opus-4-6 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params:stream (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country along the Seine River and is known for iconic landmarks like
... (truncated, 106 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-opus-4-6 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country along the Seine River and is known for iconic landmarks like
... (truncated, 107 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — reasoning:stream (success)

Output
# How to Calculate 3^3^3^3

## Key Rule: Exponentiation is **right-associative**

This means we evaluate from the **top down** (right to left):

$$3^{
... (truncated, 1024 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — reasoning (success)

Output
# Calculating 3^3^3^3

## Key Rule: Exponentiation is **right-associative**

This means we evaluate from the **top down** (right to left):

$$3^{3^{3^
... (truncated, 948 chars omitted)

google-vertex/multimodalembedding@001 — params (success)

Output
[[-0.0194163714, -0.0279629305, 0.00421190029, 0.00331215956, -0.00399191072, 0.0140610067, 0.0111711537, -0.000444489764, 0.00144913211, 0.022660045,
... (truncated, 20538 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — params:stream (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — params:stream:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — structured-output:google-genai (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream:google-genai (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream (success)

Output
To calculate $3^{3^{3^{3}}}$, we have to use the standard mathematical rules for "power towers" (iterated exponentiation). 

**Reasoning Step 1: Under
... (truncated, 2311 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating Nested Exponents**

I'm focusing on the right-associative nature of stacked exponents. My current thought is that $a^{b^c}$ s
... (truncated, 2679 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning (success)

Output
To calculate the power tower $3^{3^{3^{3}}}$, we must first understand a very important rule in mathematics regarding exponentiation: **right-associat
... (truncated, 1894 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:google-genai (success)

Output
[Thinking] **My Thought Process for Calculating $3^{3^{3^3}}$**

Alright, let's break down this expression, $3^{3^{3^3}}$. My immediate thought is to 
... (truncated, 4623 chars omitted)
Skipped (24)

google-vertex/deepseek-ai/deepseek-ocr-maas — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/deepseek-ai/deepseek-r1-0528-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-1 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3.1-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/gemini-3-pro-image-preview — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/gemma4 — skip-check (skipped)

Skip reason
Provisioned model

google-vertex/google/object-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/people-blur — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/ppe-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/product-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/tag-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/text-detector — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/meta/llama-3.3-70b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/moonshotai/kimi-k2-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-coder-480b-a35b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-4.7 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-5-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/google/gemini-3.1-pro-preview — tool-call:google-genai (skipped)

Skip reason
Snippet runner exceeded its timeout

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 115
  • Passed: 90
  • Failed: 1
  • Validation failed: 1
  • Errored: 0
  • Skipped: 23
  • Success rate: 97.83%
Provider Model Scenarios
google-vertex anthropic/claude-haiku-4-5@20251001 success: tool-call, structured-output, tool-call:stream, structured-output:stream, params:stream, params
google-vertex anthropic/claude-opus-4-6 success: tool-call:stream, tool-call, params, structured-output, structured-output:stream, params:stream, reasoning:stream, reasoning
google-vertex anthropic/claude-sonnet-4-5 success: tool-call:stream, params:stream, params, structured-output:stream, structured-output, tool-call
google-vertex deepseek-ai/deepseek-ocr-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-r1-0528-maas skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-1 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3-2 skipped: skip-check
google-vertex deepseek-ai/deepseek-v3.1-maas skipped: skip-check
google-vertex gemini-3-pro-image-preview skipped: skip-check
google-vertex google/gemini-2.5-flash-lite success: json-output:stream, tool-call:stream, structured-output, json-output, params, params:stream, structured-output:stream, tool-call, structured-output:stream:google-genai, json-output:google-genai, params:stream:google-genai, tool-call:stream:google-genai, tool-call:google-genai, structured-output:google-genai, params:google-genai, json-output:stream:google-genai, reasoning:stream, reasoning, reasoning:stream:google-genai, reasoning:google-genai
google-vertex google/gemini-3.1-pro-preview success: params:stream, params, tool-call, json-output:stream, structured-output, structured-output:stream, params:stream:google-genai, params:google-genai, tool-call:google-genai, tool-call:stream:google-genai, json-output, structured-output:google-genai, structured-output:stream:google-genai, json-output:google-genai, tool-call:stream, json-output:stream:google-genai, reasoning:stream, reasoning, reasoning:google-genai, reasoning:stream:google-genai
google-vertex google/gemma4 skipped: skip-check
google-vertex google/object-detector skipped: skip-check
google-vertex google/people-blur skipped: skip-check
google-vertex google/ppe-detector skipped: skip-check
google-vertex google/product-recognizer skipped: skip-check
google-vertex google/tag-recognizer skipped: skip-check
google-vertex google/text-detector skipped: skip-check
google-vertex intfloat/multilingual-e5-large-instruct-maas failure: params
google-vertex meta/llama-3.3-70b-instruct-maas skipped: skip-check
google-vertex meta/llama-4-maverick-17b-128e-instruct-maas success: params, tool-call:stream, params:stream, tool-call, structured-output:stream, structured-output
google-vertex minimaxai/minimax-m2 skipped: skip-check
google-vertex minimaxai/minimax-m2-maas skipped: skip-check
google-vertex mistralai/codestral-2 success: structured-output:stream, params, tool-call, params:stream, structured-output, json-output, tool-call:stream, json-output:stream
google-vertex moonshotai/kimi-k2-thinking-maas skipped: skip-check
google-vertex multimodalembedding@001 success: params
google-vertex openai/gpt-oss-120b-maas success: params, params:stream, tool-call, tool-call:stream, structured-output

validation_failure: structured-output:stream
google-vertex qwen/qwen3-235b-a22b-instruct-2507-maas skipped: skip-check
google-vertex qwen/qwen3-coder-480b-a35b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-instruct-maas skipped: skip-check
google-vertex qwen/qwen3-next-80b-a3b-thinking-maas skipped: skip-check
google-vertex zai-org/glm-4.7 skipped: skip-check
google-vertex zai-org/glm-4.7-maas success: tool-call:stream, tool-call, params:stream, params, json-output, structured-output:stream, json-output:stream, reasoning:stream, structured-output, reasoning
google-vertex zai-org/glm-5-maas skipped: skip-check
Failures (2)

google-vertex/openai/gpt-oss-120b-maas — structured-output:stream (validation_failure)

Error
Traceback (most recent call last):
  File "/tmp/tmphngyses7/snippet.py", line 48, in <module>
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")
Exception: VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)
Code snippet
from openai import OpenAI
import json

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

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-vertex/openai-gpt-oss-120b-maas",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

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

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")
Output
{
  "event": "Science Fair",
  "participants": [
    "Alice",
    "Bob"
  ],
  "day_of_week": "Friday",
  "date": "2026-08-05"
}

google-vertex/intfloat/multilingual-e5-large-instruct-maas — params (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpq8f2upma/snippet.py", line 5, in <module>
    response = client.embeddings.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/embeddings.py", line 132, 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': 'Request translation failed: embed is not supported by google-vertex', 'error': {'message': 'Request translation failed: embed is not supported by google-vertex', 'type': 'ReqTranslationError', 'code': '400'}, 'error_origin_level': 'request_translation'}
Code snippet
from openai import OpenAI

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

response = client.embeddings.create(
    model="test-v2-vertex/intfloat-multilingual-e5-large-instruct-maas",
    input="What is the capital of France?",
    encoding_format="float",
)

output = [embed.embedding for embed in response.data]
print(output)
Successes (90)

google-vertex/google/gemini-2.5-flash-lite — json-output:stream (success)

Output
[
  {
    "color": "Red",
    "hex_code": "#FF0000"
  },
  {
    "color": "Green",
    "hex_code": "#00FF00"
  },
  {
    "color": "Blue",
    "hex_co
... (truncated, 60 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output (success)

Output
[
  {
    "color": "red",
    "hex": "#FF0000"
  },
  {
    "color": "blue",
    "hex": "#0000FF"
  },
  {
    "color": "green",
    "hex": "#00FF00"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — params (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — params:stream (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:stream:google-genai (success)

Output
{
  "name": "science fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — json-output:google-genai (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#00FF00"
    },
    {
      "name"
... (truncated, 77 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — params:stream:google-genai (success)

Output
The capital of France is **Paris**.

google-vertex/google/gemini-2.5-flash-lite — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-2.5-flash-lite — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-2.5-flash-lite — structured-output:google-genai (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-2.5-flash-lite — params:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-2.5-flash-lite — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex_code": "#FF0000"
  },
  {
    "color": "Green",
    "hex_code": "#00FF00"
  },
  {
    "color": "Blue",
    "hex_co
... (truncated, 60 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream (success)

Output
Let's calculate the expression $3^{3^{3^3}}$ step by step.

This type of expression is a "power tower" or "tetration," and it is evaluated from top to
... (truncated, 2127 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning (success)

Output
To calculate $3^{3^{3^3}}$, we need to evaluate the expression step by step, starting from the topmost exponent and working our way down. This is beca
... (truncated, 2486 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating the Power Tower**

I'm currently focused on evaluating $3^{3^{3^3}}$ by working from the top exponent downwards, as per the s
... (truncated, 14036 chars omitted)

google-vertex/google/gemini-2.5-flash-lite — reasoning:google-genai (success)

Output
[Thinking] Here's how I'm thinking through the calculation of $3^{3^{3^3}}$:

The request is to calculate the value of $3^{3^{3^3}}$. I immediately re
... (truncated, 5407 chars omitted)

google-vertex/openai/gpt-oss-120b-maas — params (success)

Output
The capital of France is **Paris**.

google-vertex/openai/gpt-oss-120b-maas — params:stream (success)

Output
The capital of France is **Paris

google-vertex/openai/gpt-oss-120b-maas — tool-call (success)

Output
Function: get_weather
Arguments: {
  "location": "London"
}

VALIDATION: tool-call SUCCESS

google-vertex/openai/gpt-oss-120b-maas — tool-call:stream (success)

Output
{
  "location": "London"
}

VALIDATION: tool-call stream SUCCESS

google-vertex/openai/gpt-oss-120b-maas — structured-output (success)

Output
{"date":"2026-08-07","name":"Science Fair","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — structured-output:stream (success)

Output
{"name": "science fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-haiku-4-5@20251001 — params:stream (success)

Output
The capital of France is **Paris**. 

Paris is located in the north-central part of France and is the country's largest city. It's known for iconic la
... (truncated, 116 chars omitted)

google-vertex/anthropic/claude-haiku-4-5@20251001 — params (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country and is the largest city in France. Paris is known for its ic
... (truncated, 83 chars omitted)

google-vertex/anthropic/claude-sonnet-4-5 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-sonnet-4-5 — params (success)

Output
The capital of France is Paris.

google-vertex/anthropic/claude-sonnet-4-5 — structured-output:stream (success)

Output
{"name": "science fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — structured-output (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-sonnet-4-5 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/mistralai/codestral-2 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/mistralai/codestral-2 — params (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/mistralai/codestral-2 — params:stream (success)

Output
The capital of France is Paris.

google-vertex/mistralai/codestral-2 — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/mistralai/codestral-2 — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 92 chars omitted)

google-vertex/mistralai/codestral-2 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/mistralai/codestral-2 — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Green",
      "hex_code": "#00FF00"
    },
    {
  
... (truncated, 99 chars omitted)

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params (success)

Output
The capital of France is Paris.

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — params:stream (success)

Output
The capital of France is Paris.

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output:stream (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas — structured-output (success)

Output
{
  "name": "Science Fair",
  "date": "Friday",
  "participants": ["Alice", "Bob"]
}
VALIDATION: structured-output SUCCESS

google-vertex/zai-org/glm-4.7-maas — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

google-vertex/zai-org/glm-4.7-maas — params:stream (success)

Output
The capital of France is Paris.

google-vertex/zai-org/glm-4.7-maas — params (success)

Output
The capital of France is **Paris**.

google-vertex/zai-org/glm-4.7-maas — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 77 chars omitted)

google-vertex/zai-org/glm-4.7-maas — structured-output:stream (success)

Output
{
  "date": "Friday",
  "name": "science fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output stream SUCCESS

google-vertex/zai-org/glm-4.7-maas — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#008000"
    },
    {
      "name"
... (truncated, 84 chars omitted)

google-vertex/zai-org/glm-4.7-maas — reasoning:stream (success)

Output
To calculate the expression $3^{3^{3^3}}$, we need to understand the order of operations for exponents. In mathematics, exponentiation towers (tetrati
... (truncated, 981 chars omitted)

google-vertex/zai-org/glm-4.7-maas — structured-output (success)

Output
{
  "date": "Friday",
  "name": "Science Fair",
  "participants": [
    "Alice",
    "Bob"
  ]
}
VALIDATION: structured-output SUCCESS

google-vertex/zai-org/glm-4.7-maas — reasoning (success)

Output
To calculate \( 3^{3^{3^3}} \), we must evaluate the expression from the top down (right to left) because exponentiation is "right-associative." This 
... (truncated, 1506 chars omitted)

google-vertex/multimodalembedding@001 — params (success)

Output
[[-0.0194163434, -0.0279629249, 0.00421189284, 0.003312174, -0.00399192283, 0.0140610365, 0.0111711556, -0.000444463512, 0.00144919229, 0.0226599984, 
... (truncated, 20509 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params (success)

Output
The capital of France is **Paris**. It's the largest city in France and serves as the country's political, economic, and cultural center. Is there any
... (truncated, 31 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/anthropic/claude-opus-4-6 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/anthropic/claude-opus-4-6 — params:stream (success)

Output
The capital of France is **Paris**. It's located in the north-central part of the country along the Seine River and is known for landmarks like the Ei
... (truncated, 99 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — reasoning:stream (success)

Output
# How to Calculate 3^3^3^3

## Key Rule: Exponentiation is **right-associative**

This means we evaluate from the **top down** (right to left):

$$3^{
... (truncated, 956 chars omitted)

google-vertex/anthropic/claude-opus-4-6 — reasoning (success)

Output
# Calculating 3^3^3^3

## Step 0: Understand the Order of Operations

Exponentiation is **right-associative**, meaning we evaluate from the **top down
... (truncated, 1001 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — params:stream (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — tool-call (success)

Output
Function: get_weather
Arguments: {"location":"London"}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — params:stream:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — params:google-genai (success)

Output
The capital of France is Paris.

google-vertex/google/gemini-3.1-pro-preview — tool-call:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}
VALIDATION: tool-call SUCCESS

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream:google-genai (success)

Output
Tool: get_weather
Args: {'location': 'London'}

VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — structured-output:google-genai (success)

Output
{"name":"Science Fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output SUCCESS

google-vertex/google/gemini-3.1-pro-preview — structured-output:stream:google-genai (success)

Output
{"name":"science fair","date":"Friday","participants":["Alice","Bob"]}
VALIDATION: structured-output stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 38 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — tool-call:stream (success)

Output
{"location":"London"}
VALIDATION: tool-call stream SUCCESS

google-vertex/google/gemini-3.1-pro-preview — json-output:stream:google-genai (success)

Output
[
  {
    "color": "Red",
    "hex": "#FF0000"
  },
  {
    "color": "Green",
    "hex": "#00FF00"
  },
  {
    "color": "Blue",
    "hex": "#0000FF"

... (truncated, 45 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream (success)

Output
To calculate a "power tower" like **3^3^3^3**, we must follow the standard mathematical order of operations for stacked exponents. 

Here is the step-
... (truncated, 1790 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning (success)

Output
To calculate a "power tower" like $3^{3^{3^3}}$, the most important rule to remember is the **order of operations for exponents**. 

Unlike normal rea
... (truncated, 1964 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:google-genai (success)

Output
[Thinking] **Deconstructing the Calculation of $3^{3^{3^3}}$: A Detailed Thought Process**

Alright, the task at hand is to calculate $3^{3^{3^3}}$. A
... (truncated, 5626 chars omitted)

google-vertex/google/gemini-3.1-pro-preview — reasoning:stream:google-genai (success)

Output
[Thinking] **Calculating the Large Exponent**

I'm currently breaking down the enormous exponent in $3^{3^{3^{3}}}$. My focus is on meticulously calcu
... (truncated, 3145 chars omitted)
Skipped (23)

google-vertex/deepseek-ai/deepseek-ocr-maas — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/deepseek-ai/deepseek-r1-0528-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-1 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3-2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/deepseek-ai/deepseek-v3.1-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/gemini-3-pro-image-preview — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/gemma4 — skip-check (skipped)

Skip reason
Provisioned model

google-vertex/google/object-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/people-blur — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/ppe-detector — skip-check (skipped)

Skip reason
unsupported mode 'video'

google-vertex/google/product-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/tag-recognizer — skip-check (skipped)

Skip reason
unsupported mode 'image'

google-vertex/google/text-detector — skip-check (skipped)

Skip reason
unsupported mode 'ocr'

google-vertex/meta/llama-3.3-70b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/minimaxai/minimax-m2-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/moonshotai/kimi-k2-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-coder-480b-a35b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-instruct-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/qwen/qwen3-next-80b-a3b-thinking-maas — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-4.7 — skip-check (skipped)

Skip reason
deprecated or retired model

google-vertex/zai-org/glm-5-maas — skip-check (skipped)

Skip reason
deprecated or retired model

@architkumar-truefoundry
architkumar-truefoundry merged commit 66c3fb3 into main Aug 1, 2026
8 checks passed
@architkumar-truefoundry
architkumar-truefoundry deleted the bot/update-google-vertex-20260731-125947 branch August 1, 2026 11:40
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.

2 participants