mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-04 07:27:51 +00:00
* test(integration): add rich anthropic claude haiku 5.5, opus 5.5 and fable 5.1 translation cases Capture-backed basic cases on /v1/chat/completions, /v1/messages and /v1/responses for claude-haiku-5-5, claude-opus-5-5 and claude-fable-5-1, reusing the shared client templates and ANTHROPIC_MESSAGES_REQUEST/RESPONSE with model-specific id, content and usage overrides. The minimal Opus 5.5 hello cases are replaced by the rich conversation. Sonnet 5.5 and legacy models are unchanged * test(translation): rich OpenAI captures for gpt-6.1-sol, gpt-6-luna, gpt-6-astra and gpt-5.6-terra Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(translation): rich Azure gpt-6.1-sol, gpt-6-luna, gpt-6-astra and gpt-5.6-terra cases * test(translation): rich azure_ai Claude cases for haiku-5-5 and fable-5-1 Bind the shared chat_completions, messages and responses client templates and the anthropic provider templates to azure_ai/claude-haiku-5-5 and azure_ai/claude-fable-5-1 from real Azure AI Foundry captures, keeping the Azure dialect exact (/anthropic/v1/messages, x-api-key plus api-key on chat_completions and responses, system as a text block list on /v1/messages). Add prompt_cache_hit variants for both models from the second call inside the cache window. The two deployments need rows in tests/integration/proxy_config.yaml Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(translation): rich Gemini bases for gemini-3.8-flash, gemini-3.1-pro-preview and gemini-4-argon Add the shared generateContent provider templates in templates/gemini.py from real captures and bind the three target models on chat completions, messages and responses with explicit per-model response overrides. gemini-4-argon is registered in the three basic lists. gemini-3.5-flash is unchanged * test(translation): enrich vertex_ai claude and gemini cases from live captures Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): rich Bedrock converse, invoke and mantle translation cases from real captures * test(integration): register the rich translation deployments and follow the rich Gemini 3.8 Flash cases Add the synthetic deployments the rich provider cases bind (anthropic, openai, azure, azure_ai, gemini, vertex_ai, bedrock converse, invoke and mantle) to tests/integration/proxy_config.yaml, all pointed at the fake provider on 127.0.0.1:8191 with synthetic keys. The Gemini omitted-temperature contract now takes its expected generationConfig and reply text from the rich GEMINI_3_8_FLASH_TEST_CASE literals instead of the retired minimal hello cases * test(translation): reuse bridged and native response templates --------- Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: kerry <kerry@berri.ai>
1160 lines
60 KiB
Python
1160 lines
60 KiB
Python
from typing import Final
|
||
from unittest.mock import ANY
|
||
|
||
from integration.translation.case import TranslationTestCase
|
||
from integration.translation.responses.templates import RESPONSES_NATIVE_RESPONSE, RESPONSES_REQUEST
|
||
from integration.translation.templates.openai import OPENAI_RESPONSES_REQUEST, OPENAI_RESPONSES_RESPONSE
|
||
|
||
GPT_5_4_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={
|
||
"model": "openai/gpt-5.4",
|
||
"max_output_tokens": 64,
|
||
"instructions": "You are a terse assistant.",
|
||
"input": "Say hello.",
|
||
"cache": {"no-cache": True},
|
||
},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={"content-type": "application/json", "authorization": "Bearer synthetic-openai-key"},
|
||
expected_provider_request={
|
||
"model": "gpt-5.4",
|
||
"input": "Say hello.",
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
},
|
||
mock_provider_response={
|
||
"id": "resp_09266ad9f58a7706006ac3f0106a2c87d09155b2c4aed60612",
|
||
"object": "response",
|
||
"created_at": 1791225872,
|
||
"status": "completed",
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225873,
|
||
"error": None,
|
||
"frequency_penalty": 0.0,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
"max_tool_calls": None,
|
||
"model": "gpt-5.4-2026-03-05",
|
||
"moderation": None,
|
||
"output": [
|
||
{
|
||
"id": "msg_09266ad9f58a7706006ac3f0111c0487d0834c20939578eaca",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [{"type": "output_text", "annotations": [], "logprobs": [], "text": "Hello."}],
|
||
"phase": "final_answer",
|
||
"role": "assistant",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"presence_penalty": 0.0,
|
||
"previous_response_id": None,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"reasoning": {"context": "current_turn", "effort": "none", "mode": "standard", "summary": None},
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"store": True,
|
||
"temperature": 1.0,
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"tool_choice": "auto",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"tools": [],
|
||
"top_logprobs": 0,
|
||
"top_p": 0.98,
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"reasoning_tokens": 0},
|
||
"total_tokens": 25,
|
||
},
|
||
"user": None,
|
||
"metadata": {},
|
||
},
|
||
expected_litellm_response={
|
||
"id": ANY,
|
||
"created_at": 1791225872,
|
||
"error": None,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"metadata": {},
|
||
"model": "openai/gpt-5.4",
|
||
"object": "response",
|
||
"output": [
|
||
{
|
||
"id": "msg_09266ad9f58a7706006ac3f0111c0487d0834c20939578eaca",
|
||
"content": [{"annotations": [], "text": "Hello.", "type": "output_text", "logprobs": []}],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "final_answer",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tool_choice": "auto",
|
||
"tools": [],
|
||
"top_p": 0.98,
|
||
"max_output_tokens": 64,
|
||
"previous_response_id": None,
|
||
"reasoning": {"context": "current_turn", "effort": "none", "mode": "standard", "summary": None},
|
||
"status": "completed",
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 0, "text_tokens": None},
|
||
"total_tokens": 25,
|
||
"cost": None,
|
||
},
|
||
"user": None,
|
||
"store": True,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225873,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
|
||
GPT_5_6_SOL_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={
|
||
"model": "openai/gpt-5.6-sol",
|
||
"max_output_tokens": 64,
|
||
"instructions": "You are a terse assistant.",
|
||
"input": "Say hello.",
|
||
"cache": {"no-cache": True},
|
||
},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={"content-type": "application/json", "authorization": "Bearer synthetic-openai-key"},
|
||
expected_provider_request={
|
||
"model": "gpt-5.6-sol",
|
||
"input": "Say hello.",
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
},
|
||
mock_provider_response={
|
||
"id": "resp_0c9879957c1ae38c006ac3f013f1d487d0addcbd528bf79ce8",
|
||
"object": "response",
|
||
"created_at": 1791225875,
|
||
"status": "completed",
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225876,
|
||
"error": None,
|
||
"frequency_penalty": 0.0,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
"max_tool_calls": None,
|
||
"model": "gpt-5.6-sol",
|
||
"moderation": None,
|
||
"output": [
|
||
{
|
||
"id": "msg_0c9879957c1ae38c006ac3f0146a0087d0a02d07eeff59b3c6",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [{"type": "output_text", "annotations": [], "logprobs": [], "text": "Hello."}],
|
||
"phase": "final_answer",
|
||
"role": "assistant",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"presence_penalty": 0.0,
|
||
"previous_response_id": None,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"reasoning": {"context": "all_turns", "effort": "medium", "mode": "standard", "summary": None},
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"store": True,
|
||
"temperature": 1.0,
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"tool_choice": "auto",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"tools": [],
|
||
"top_logprobs": 0,
|
||
"top_p": 0.98,
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"reasoning_tokens": 0},
|
||
"total_tokens": 25,
|
||
},
|
||
"user": None,
|
||
"metadata": {},
|
||
},
|
||
expected_litellm_response={
|
||
"id": ANY,
|
||
"created_at": 1791225875,
|
||
"error": None,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"metadata": {},
|
||
"model": "openai/gpt-5.6-sol",
|
||
"object": "response",
|
||
"output": [
|
||
{
|
||
"id": "msg_0c9879957c1ae38c006ac3f0146a0087d0a02d07eeff59b3c6",
|
||
"content": [{"annotations": [], "text": "Hello.", "type": "output_text", "logprobs": []}],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "final_answer",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tool_choice": "auto",
|
||
"tools": [],
|
||
"top_p": 0.98,
|
||
"max_output_tokens": 64,
|
||
"previous_response_id": None,
|
||
"reasoning": {"context": "all_turns", "effort": "medium", "mode": "standard", "summary": None},
|
||
"status": "completed",
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 0, "text_tokens": None},
|
||
"total_tokens": 25,
|
||
"cost": None,
|
||
},
|
||
"user": None,
|
||
"store": True,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225876,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
|
||
GPT_5_6_LUNA_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={
|
||
"model": "openai/gpt-5.6-luna",
|
||
"max_output_tokens": 64,
|
||
"instructions": "You are a terse assistant.",
|
||
"input": "Say hello.",
|
||
"cache": {"no-cache": True},
|
||
},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={"content-type": "application/json", "authorization": "Bearer synthetic-openai-key"},
|
||
expected_provider_request={
|
||
"model": "gpt-5.6-luna",
|
||
"input": "Say hello.",
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
},
|
||
mock_provider_response={
|
||
"id": "resp_06fba2eaed98666c006ac3f0181d8c87d09e79c4255c5a24c4",
|
||
"object": "response",
|
||
"created_at": 1791225880,
|
||
"status": "completed",
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225880,
|
||
"error": None,
|
||
"frequency_penalty": 0.0,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"max_output_tokens": 64,
|
||
"max_tool_calls": None,
|
||
"model": "gpt-5.6-luna",
|
||
"moderation": None,
|
||
"output": [
|
||
{
|
||
"id": "msg_06fba2eaed98666c006ac3f018dd9487d08c7e921025100a6d",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [{"type": "output_text", "annotations": [], "logprobs": [], "text": "Hello!"}],
|
||
"phase": "final_answer",
|
||
"role": "assistant",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"presence_penalty": 0.0,
|
||
"previous_response_id": None,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"reasoning": {"context": "all_turns", "effort": "medium", "mode": "standard", "summary": None},
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"store": True,
|
||
"temperature": 1.0,
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"tool_choice": "auto",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"tools": [],
|
||
"top_logprobs": 0,
|
||
"top_p": 0.98,
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"reasoning_tokens": 0},
|
||
"total_tokens": 25,
|
||
},
|
||
"user": None,
|
||
"metadata": {},
|
||
},
|
||
expected_litellm_response={
|
||
"id": ANY,
|
||
"created_at": 1791225880,
|
||
"error": None,
|
||
"incomplete_details": None,
|
||
"instructions": "You are a terse assistant.",
|
||
"metadata": {},
|
||
"model": "openai/gpt-5.6-luna",
|
||
"object": "response",
|
||
"output": [
|
||
{
|
||
"id": "msg_06fba2eaed98666c006ac3f018dd9487d08c7e921025100a6d",
|
||
"content": [{"annotations": [], "text": "Hello!", "type": "output_text", "logprobs": []}],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "final_answer",
|
||
}
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tool_choice": "auto",
|
||
"tools": [],
|
||
"top_p": 0.98,
|
||
"max_output_tokens": 64,
|
||
"previous_response_id": None,
|
||
"reasoning": {"context": "all_turns", "effort": "medium", "mode": "standard", "summary": None},
|
||
"status": "completed",
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 19,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 6,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 0, "text_tokens": None},
|
||
"total_tokens": 25,
|
||
"cost": None,
|
||
},
|
||
"user": None,
|
||
"store": True,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1791225880,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
GPT_6_LUNA_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={**RESPONSES_REQUEST, "model": "openai/gpt-6-luna"},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={
|
||
"content-type": "application/json",
|
||
"authorization": "Bearer synthetic-openai-key",
|
||
},
|
||
expected_provider_request={**OPENAI_RESPONSES_REQUEST, "model": "gpt-6-luna"},
|
||
mock_provider_response={
|
||
**OPENAI_RESPONSES_RESPONSE,
|
||
"model": "gpt-6-luna",
|
||
"id": "resp_042cbd1ba73eb559006ad0239f6dc087d08fd7ff5fff84b06a",
|
||
"created_at": 1792025503,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"completed_at": 1792025506,
|
||
"output": [
|
||
{
|
||
"id": "rs_042cbd1ba73eb559006ad023a0481487d0aea8635e4b717121",
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COiaJAwBRbzsaBwqI_w56uTvcixfz0ImWwpaGwIbCDMXDOodeG_MedwCPLjagtmdVPeq1GAF21VbUncSo2oasMY26z31MMbmZQPKUXWfts9Dajf6g-11D0hZMUupKeeUOT_rcE_GBj6smH3d1PUf-FBMEsY1VQy0gr0am-GUa0dZjw3ukAX0K10gkPCrrqRgp7mlfEi9kAwXhlQ1WEVm7IdHdZnGBbWzKaIRDVkULZQlh9NHIFYCP-2OQbnmqK9vyUxLj3vYXIXGv9B0V3-9TPe8AfDg2tm3AH-tJ-XXJ8D6xDG4E-1avSe4vUrYggFM7_6ztYSrimWqtJ_PfvRQF4cZfcCDf3vxxzLreg3y0jtuZnEOejZYybCa72ZDBbI9OSgNvAZBkU6k9DLT_tQf9uCvN1vtoiGXu0Sk4yr1fw-hAnuEVJK_Tb_FfQBNEk7ILVK7UJaX1rZWTFe2GLhsp6ctz3Kp-c2w2JD5ZHvV22EDQ5DmP8ng9l_5COYQGSsS9ZLiyd06agQ3PvQvBTg5XnDL46DtZ1yfVkB1cuwwlUiWkKD6MQ-VifToT3s4aG0q1Bnl9b_AvtOM0lG-TblA-mdOaRDz3c9s4QfbQjt6Z75oQcNr5QkUujZoV4YiynIBpec5i2gr6Uv0SMJZZbzjY5PLiogj_gvUDxwVbWJkuMXjEPJ3WHWMjceJE4sHwuM95zWV80Ul-MSXknlBj-AZJGQ44_wl0765P--vLyq18jfKDCdorP3Lvq6lYxnXooYMnZ-lFgnWo92OHfX97d6FCyQ46ygzQaRjrhQwUyAioAZiFtugMnHUm7t-EfNb_C7TjLeyXLiJ9iVlGHIt17VJMJIIq_xrQeMCOHAxUKgUE21XkSwsVPdJ0I-4_OP5l3IwkiV0pctG1x-oYX7kCaIYDus-dJUehQNJWNEa_r6QPfn7txUoxMrNCCIyzRUfH3hgwCHudDJ26dj15RPGfiP3wQmX8oZKdy5VkQcNPWb4Gv6b-cjyI7U-8VmwlodUN5FlCj-LJbeL8C8Wxuf1LRzDW-kxNadEhxlQaDSq4nQfTnGARMcmlH8-XqZfXK-3hJD84xHuyjTHq7aBr85gM6vISoYOHf6d-5GIr3-z9cTXvE7tCuxoJ7DdZYWzRK0Bws6tCerRuuvlVzQhlS_CsPwoel-eQ4SJucxvFBI_RaA3LYi3GtLqUPSKTAW6QqnQvyK-GvGvfDFxlgHgByGB0sf3dBAYLFKwHYspVsA4JqX8LDXNLJzMl5_9OkEsOkOcnTdPQSwImve3XZeM8mZwcHWRXOq6viGM9kGcVBrGZoqg--bUJZshNp2EdQivXJ4APh0E17Ro0gUSvvPTrwwI4m3MS0YHACkf1MbidrTxeyI7fiuADGpLKuC2n83Xbs7xjln0p-IwylsHOKs5cd6Jlrjf1RjyECm9jLMexUpSx5iBxcoIRG5TvyJA3SicZU-_psosM-7ABr7sWWy3F8_e1Q9cIze10_6U7XwqZjIUls007qiE97TFUX7YTlP0zTUwy4xmaSHW94LjhjaJnle49iDdqyRQJCdJbGNHPAhFSHGT6Iyy5vPADzIqPYmASOWxJ_7-IX9LRZQxa2NCRdXou0yAvbSbuq9LL3xFhJQ9S0pvJkY02np0GpMRlWXQpzHlww1i8ptRTsyELKGlrVJdPsdKc2d9ZgHGPvGVxG-e7ESPnA9m1aLP7vVH8NP2qnPSOGQk4SDEw6rxlv5Kjkv56kAXzdKj2PvxuclfWTxG5Peo84gaMNwP_Mi6S4XSuNJt7RhNdTEdQPFIQ0bNcc3O5jnz_xDw76mF3YvRMm_kXxdaOsFP9GSfzaEY56CQ9VGOkziwqrPwWu6fDT7VpkVvi58UDDWJdnk3G-nvcxGHLERU1es-Qy6Pe2qWOdY-nU70YSqgVIj5MMyx6XMJcYMeJDi5831kzr3VgOAggT8K-yYibn4_K2M0OHO0oQW-sUKsljU08Eu60C4MLrSJB40qJGCgwuiFwfXZfKckRmGE-oE6X8uS1ZIgd3S7OSCpYXfNSW7PlRAobBB2ArFFtacVEeH4pjmgcbrjkXHCV_ddCHvo26aBXh_AiBgJkjQ-oqrOS3pgC9J9U-coE-yfNbTl_UcdfFfusG6tvMNV8rl9Pkao6-pG9PTM9E25XZj0rEHOW_Vj9JMqX_kTEP7AKTJr8VZH_fKPbYR-EKlf12hStW--S5P4ng1hDFRcXcYAxmb9panxXRD2mxBBkEUGd3TdG4lxR02K0f9DaDJH2_-u3l4WKQdcGh1ma7m5RYl94o794hvNm2moOazjhIUWseixhZRM0AtS50RHzxaBl3t-vp4QA657xwts-Ng2ERKH2gDR1IIpA9rCvYjRo4Xwif9mTB7hYggs6YqrUZiIHrfNth9Am5e3B5z11hnxgGHPC0Rq1DodR1oV-rmyXM_L8-UpwUrM3Xbg31E_k0p7vIjn635OjUZt9aSe-yXEexGaDpxP5rUHQW3A-X4lZ3a_cL_786Dyzr9Sgma1bM2rpi3j5XfhpQe-DZk4KMP0C_d9rEcSoC46DTNjksrQkb421C5xpRoyJQ2-iSZBplpXRWX3GKwuiGvdtxCdSRcqZ0JHEf3ScOvOVs4gLpLRi5NcTuofbQYAsOATXtDzSPGd07h42Mk65qttYHLwVkt--4WPAIdsgU4SX_P",
|
||
"summary": [],
|
||
},
|
||
{
|
||
"id": "msg_042cbd1ba73eb559006ad023a198dc87d0a13500a8fdffc2d3",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [
|
||
{
|
||
"type": "output_text",
|
||
"annotations": [],
|
||
"logprobs": [],
|
||
"text": "I’ll read `shop/validation.py` first to see how it handles zero, negative, "
|
||
"and non-integer quantities.",
|
||
}
|
||
],
|
||
"phase": "commentary",
|
||
"role": "assistant",
|
||
},
|
||
{
|
||
"id": "fc_042cbd1ba73eb559006ad023a20c5487d09f05bf43be3ac720",
|
||
"type": "function_call",
|
||
"status": "completed",
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":160}',
|
||
"call_id": "call_YeruxIVkbMog0O7xEjBn8luk",
|
||
"name": "read_file",
|
||
},
|
||
],
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 159,
|
||
"output_tokens_details": {"reasoning_tokens": 94},
|
||
"total_tokens": 468,
|
||
},
|
||
},
|
||
expected_litellm_response={
|
||
**RESPONSES_NATIVE_RESPONSE,
|
||
"id": ANY,
|
||
"created_at": 1792025503,
|
||
"model": "openai/gpt-6-luna",
|
||
"output": [
|
||
{
|
||
"id": "rs_042cbd1ba73eb559006ad023a0481487d0aea8635e4b717121",
|
||
"summary": [],
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COiaJAwBRbzsaBwqI_w56uTvcixfz0ImWwpaGwIbCDMXDOodeG_MedwCPLjagtmdVPeq1GAF21VbUncSo2oasMY26z31MMbmZQPKUXWfts9Dajf6g-11D0hZMUupKeeUOT_rcE_GBj6smH3d1PUf-FBMEsY1VQy0gr0am-GUa0dZjw3ukAX0K10gkPCrrqRgp7mlfEi9kAwXhlQ1WEVm7IdHdZnGBbWzKaIRDVkULZQlh9NHIFYCP-2OQbnmqK9vyUxLj3vYXIXGv9B0V3-9TPe8AfDg2tm3AH-tJ-XXJ8D6xDG4E-1avSe4vUrYggFM7_6ztYSrimWqtJ_PfvRQF4cZfcCDf3vxxzLreg3y0jtuZnEOejZYybCa72ZDBbI9OSgNvAZBkU6k9DLT_tQf9uCvN1vtoiGXu0Sk4yr1fw-hAnuEVJK_Tb_FfQBNEk7ILVK7UJaX1rZWTFe2GLhsp6ctz3Kp-c2w2JD5ZHvV22EDQ5DmP8ng9l_5COYQGSsS9ZLiyd06agQ3PvQvBTg5XnDL46DtZ1yfVkB1cuwwlUiWkKD6MQ-VifToT3s4aG0q1Bnl9b_AvtOM0lG-TblA-mdOaRDz3c9s4QfbQjt6Z75oQcNr5QkUujZoV4YiynIBpec5i2gr6Uv0SMJZZbzjY5PLiogj_gvUDxwVbWJkuMXjEPJ3WHWMjceJE4sHwuM95zWV80Ul-MSXknlBj-AZJGQ44_wl0765P--vLyq18jfKDCdorP3Lvq6lYxnXooYMnZ-lFgnWo92OHfX97d6FCyQ46ygzQaRjrhQwUyAioAZiFtugMnHUm7t-EfNb_C7TjLeyXLiJ9iVlGHIt17VJMJIIq_xrQeMCOHAxUKgUE21XkSwsVPdJ0I-4_OP5l3IwkiV0pctG1x-oYX7kCaIYDus-dJUehQNJWNEa_r6QPfn7txUoxMrNCCIyzRUfH3hgwCHudDJ26dj15RPGfiP3wQmX8oZKdy5VkQcNPWb4Gv6b-cjyI7U-8VmwlodUN5FlCj-LJbeL8C8Wxuf1LRzDW-kxNadEhxlQaDSq4nQfTnGARMcmlH8-XqZfXK-3hJD84xHuyjTHq7aBr85gM6vISoYOHf6d-5GIr3-z9cTXvE7tCuxoJ7DdZYWzRK0Bws6tCerRuuvlVzQhlS_CsPwoel-eQ4SJucxvFBI_RaA3LYi3GtLqUPSKTAW6QqnQvyK-GvGvfDFxlgHgByGB0sf3dBAYLFKwHYspVsA4JqX8LDXNLJzMl5_9OkEsOkOcnTdPQSwImve3XZeM8mZwcHWRXOq6viGM9kGcVBrGZoqg--bUJZshNp2EdQivXJ4APh0E17Ro0gUSvvPTrwwI4m3MS0YHACkf1MbidrTxeyI7fiuADGpLKuC2n83Xbs7xjln0p-IwylsHOKs5cd6Jlrjf1RjyECm9jLMexUpSx5iBxcoIRG5TvyJA3SicZU-_psosM-7ABr7sWWy3F8_e1Q9cIze10_6U7XwqZjIUls007qiE97TFUX7YTlP0zTUwy4xmaSHW94LjhjaJnle49iDdqyRQJCdJbGNHPAhFSHGT6Iyy5vPADzIqPYmASOWxJ_7-IX9LRZQxa2NCRdXou0yAvbSbuq9LL3xFhJQ9S0pvJkY02np0GpMRlWXQpzHlww1i8ptRTsyELKGlrVJdPsdKc2d9ZgHGPvGVxG-e7ESPnA9m1aLP7vVH8NP2qnPSOGQk4SDEw6rxlv5Kjkv56kAXzdKj2PvxuclfWTxG5Peo84gaMNwP_Mi6S4XSuNJt7RhNdTEdQPFIQ0bNcc3O5jnz_xDw76mF3YvRMm_kXxdaOsFP9GSfzaEY56CQ9VGOkziwqrPwWu6fDT7VpkVvi58UDDWJdnk3G-nvcxGHLERU1es-Qy6Pe2qWOdY-nU70YSqgVIj5MMyx6XMJcYMeJDi5831kzr3VgOAggT8K-yYibn4_K2M0OHO0oQW-sUKsljU08Eu60C4MLrSJB40qJGCgwuiFwfXZfKckRmGE-oE6X8uS1ZIgd3S7OSCpYXfNSW7PlRAobBB2ArFFtacVEeH4pjmgcbrjkXHCV_ddCHvo26aBXh_AiBgJkjQ-oqrOS3pgC9J9U-coE-yfNbTl_UcdfFfusG6tvMNV8rl9Pkao6-pG9PTM9E25XZj0rEHOW_Vj9JMqX_kTEP7AKTJr8VZH_fKPbYR-EKlf12hStW--S5P4ng1hDFRcXcYAxmb9panxXRD2mxBBkEUGd3TdG4lxR02K0f9DaDJH2_-u3l4WKQdcGh1ma7m5RYl94o794hvNm2moOazjhIUWseixhZRM0AtS50RHzxaBl3t-vp4QA657xwts-Ng2ERKH2gDR1IIpA9rCvYjRo4Xwif9mTB7hYggs6YqrUZiIHrfNth9Am5e3B5z11hnxgGHPC0Rq1DodR1oV-rmyXM_L8-UpwUrM3Xbg31E_k0p7vIjn635OjUZt9aSe-yXEexGaDpxP5rUHQW3A-X4lZ3a_cL_786Dyzr9Sgma1bM2rpi3j5XfhpQe-DZk4KMP0C_d9rEcSoC46DTNjksrQkb421C5xpRoyJQ2-iSZBplpXRWX3GKwuiGvdtxCdSRcqZ0JHEf3ScOvOVs4gLpLRi5NcTuofbQYAsOATXtDzSPGd07h42Mk65qttYHLwVkt--4WPAIdsgU4SX_P",
|
||
},
|
||
{
|
||
"id": "msg_042cbd1ba73eb559006ad023a198dc87d0a13500a8fdffc2d3",
|
||
"content": [
|
||
{
|
||
"annotations": [],
|
||
"text": "I’ll read `shop/validation.py` first to see how it handles "
|
||
"zero, negative, and non-integer quantities.",
|
||
"type": "output_text",
|
||
"logprobs": [],
|
||
}
|
||
],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "commentary",
|
||
},
|
||
{
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":160}',
|
||
"call_id": "call_YeruxIVkbMog0O7xEjBn8luk",
|
||
"name": "read_file",
|
||
"type": "function_call",
|
||
"id": "fc_042cbd1ba73eb559006ad023a20c5487d09f05bf43be3ac720",
|
||
"namespace": None,
|
||
"status": "completed",
|
||
},
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tools": [
|
||
{
|
||
"name": "search_files",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": {"type": "string"},
|
||
"paths": {"type": "array", "items": {"type": "string"}},
|
||
},
|
||
"required": ["query", "paths"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Search source and test files for a literal term.",
|
||
"output_schema": None,
|
||
},
|
||
{
|
||
"name": "read_file",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"path": {"type": "string"},
|
||
"start_line": {"type": "integer", "minimum": 1},
|
||
"end_line": {"type": "integer", "minimum": 1},
|
||
},
|
||
"required": ["path", "start_line", "end_line"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Read a range of lines from a project file.",
|
||
"output_schema": None,
|
||
},
|
||
],
|
||
"top_p": 0.98,
|
||
"reasoning": {"context": "all_turns", "effort": "high", "mode": "standard", "summary": None},
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 159,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 94, "text_tokens": None},
|
||
"total_tokens": 468,
|
||
"cost": None,
|
||
},
|
||
"store": True,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1792025506,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
GPT_6_1_SOL_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={**RESPONSES_REQUEST, "model": "openai/gpt-6.1-sol"},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={
|
||
"content-type": "application/json",
|
||
"authorization": "Bearer synthetic-openai-key",
|
||
},
|
||
expected_provider_request={**OPENAI_RESPONSES_REQUEST, "model": "gpt-6.1-sol"},
|
||
mock_provider_response={
|
||
**OPENAI_RESPONSES_RESPONSE,
|
||
"model": "gpt-6.1-sol",
|
||
},
|
||
expected_litellm_response={
|
||
**RESPONSES_NATIVE_RESPONSE,
|
||
"id": ANY,
|
||
"created_at": 1792025514,
|
||
"model": "openai/gpt-6.1-sol",
|
||
"output": [
|
||
{
|
||
"id": "rs_0207c20ae125feee006ad023abed4087d09d32a32ad2d3182c",
|
||
"summary": [],
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COvx3R_lOOaYJijiIokUKBq9tt_p3mhoPHnm4KR0Pj_t0wf1sP7WEDHfYSzylhHilYoKjU4guIz-TAqBV6HNUpIx5ggp3aukKEW6zks2ERT3a40sCFFdUdKHk6py5trFuwYn6lHLwifwDkd7rI7MKIP7C7pZSHnXh8cmfk0t96p4nBplQ93C4m917Kyx6PqvWSxPP78h5s_RMEdhkWRU20xMhminpIBNArOkPYT4xsmBEuONlndM5-DHG7ZeLk2yMZw8b_hxk2LZ4mC66b5RHfJKVKfw4egn4K8tkr8mQSR4bnjpY56DsIRj4fjSH5GpoDZyolFFBh1BNkGMoVsicye_4gZn0eELuOWxCw7lVVsMpIzTLw8CHJkCo_8vKtNCFSZcKjOPKDDfX1bsFJ7LMonmqijHPV_kZi_YXjVNNJBhJLiGjYrVUFZzjS0OKQx-RnZf5luO3UM2Ff3Ilvx1eQtuWlsvJjPBRwObzk5zlPEdYwoh5OjUREbgGb4H71Q7A9YYjUIms2h5e13Z5s8X0onRVr9SUcSbbMA0FXWn6QGQ5qgiQV56xec7xk62SrxKBXeILgBttBf68YfLAbdINCPL89G5Z1X2toQLlFM7e0jKYUOvSmpWyPLZ3q1040oDf2Q92v6NjOwk4WlLtZF_4xrZ7bEIWmea7zcDEnsvNBRdKaUbeUOm0SfRuIH4gQfbbueSqM3i12eK4TQhTbJ9VivUUovUv7pCKvizdQuunf2MMXWhq79wLYQYXIleQ06E9hbx6QT-Ue5ELQVC3NSLhXiwucOSqd-NZFDQA5wgW2Uaq_-bFYzNOPwtArfaqnHOILmr5mDvWCrlnLs-DUPHU-DtzYH7Eu1VSlcEZLaZX4vC9ui3x2aOpTtmVCILZpw7MkouVxSR4rFE48doVoCamJHhey-TZ7OMl0A5JdacTt6oUE8Z2HEcuVh9yGAZe_Q-YB3p4egLbxO8ICWUkwSSNgrPq3WRbT9sbT-Ko7N7KDAfgyvzzdEYMKDmci6GBrVsAiscc97-gxbhVhlrMyIXmgTluW07o591YjlOkvERXeJobEfby-VUJCu0cHd0nMudzrhCpHIhU3aUMkk9GMlSNDPFnKeV-gylycLhYRb0xo1kXMRom82fKmvUgO5Wh_BhsCdeGaVQ2bm5wyLT4x9VhEe-uOwaYG02XxoSiIFqqSrf0J8auFHIRpUTKzNWMK_GcIaU6o3ON0wOLKaga3wcyrGkG6wtvGkNLCrvmDIXg0bmvFGZrmybQvys_u636NXVS-Y9irqUv2ghu5tyKI_F8uwibi9JkKa5XcotQGbAToTE8qaHfowZOdTyjIKrU3BjL_Hs5M41KXwrNkk_X5ttJxEPW1qCjyusFb9yeGa9wzHMsp_VO0ysdO8L2KSRAY4LHpGI175VxUmnSg66PtCPln0OYxWsX2FWE1A7B_la662tO4VoS3bcslVZreRWFDJ_7X8qKx2fStxd77B7JkG1ZElxlZYlBRN5_Lo_w1yM9SvqHzzewQYEprSA1gltjxAbIzy7xXReaT86PNI8ojSLfXOkXa6Cybu3hIxsIomkZwTtAEx85BoIDn2B8oTp744Lwkwn4ualAfV9TebiqOWCUYp47fX9rimte71X6Hnvf7tWEBZMMwSb0pTqY0boMOS0w3XKKyEVRNyCoGWMgyvhAxk9E5iao5N6i5W3aSel27QwsUaE4YDGKKMKSryH3BqP6X7d0kdUcAx-nd5yudVbePQyc-UC7EbISj5QXY8g6cTOy-IkwpBe68DvfcNGIhuaH6UscqrewXQjKZFJC_BJSl-ICOfMw-FCTumzCDXPqTeLBPHf1g5kd5lBd6HLPUldHtJfD48V12KCRtaoksZ4g2NibuClnmZRpnDMPDUr7r_D8-RfoLEiJeh8SbOSnLvMPVAJIB95F73B-UX5u0e0aWeyfG5QjBq-kB7vVGsRiMyHEVQW810xo2qULVIyVO03s7rAWwTxFY-EHmKkaAIbKU2b-qAasytni7f1Aq61OSIYqSCRdFhpUX6HpnQeCFC_s6_Q9P3CFx120ZaTB_HPeRJO6dhVSJ3nL3PiNi8sCnhRiNIXkJfm9l1TxRS8ok9s1NY8oi4Y98J4Ay52EkX6f9F9FtWHNu4GX_Z50jDNnVTVqQo3L3slpwxECsTAEU-0MsmIa-1RqJ00VqBLKtIDVbbnQ==",
|
||
},
|
||
{
|
||
"id": "msg_0207c20ae125feee006ad023ade23487d093e272f84cb35723",
|
||
"content": [
|
||
{
|
||
"annotations": [],
|
||
"text": "I’ll read `shop/validation.py` first to check how it handles "
|
||
"zero, negative, and non-integer quantities.",
|
||
"type": "output_text",
|
||
"logprobs": [],
|
||
}
|
||
],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "commentary",
|
||
},
|
||
{
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":200}',
|
||
"call_id": "call_S4WtfrQwa6ZLEUZf1BVtA8ON",
|
||
"name": "read_file",
|
||
"type": "function_call",
|
||
"id": "fc_0207c20ae125feee006ad023ae893c87d08068561e36e665ad",
|
||
"namespace": None,
|
||
"status": "completed",
|
||
},
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tools": [
|
||
{
|
||
"name": "search_files",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": {"type": "string"},
|
||
"paths": {"type": "array", "items": {"type": "string"}},
|
||
},
|
||
"required": ["query", "paths"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Search source and test files for a literal term.",
|
||
"output_schema": None,
|
||
},
|
||
{
|
||
"name": "read_file",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"path": {"type": "string"},
|
||
"start_line": {"type": "integer", "minimum": 1},
|
||
"end_line": {"type": "integer", "minimum": 1},
|
||
},
|
||
"required": ["path", "start_line", "end_line"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Read a range of lines from a project file.",
|
||
"output_schema": None,
|
||
},
|
||
],
|
||
"top_p": 0.98,
|
||
"reasoning": {"context": "all_turns", "effort": "high", "mode": "standard", "summary": None},
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 118,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 53, "text_tokens": None},
|
||
"total_tokens": 427,
|
||
"cost": None,
|
||
},
|
||
"store": True,
|
||
"access_programs": None,
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1792025519,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
GPT_6_ASTRA_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={**RESPONSES_REQUEST, "model": "openai/gpt-6-astra"},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={
|
||
"content-type": "application/json",
|
||
"authorization": "Bearer synthetic-openai-key",
|
||
},
|
||
expected_provider_request={**OPENAI_RESPONSES_REQUEST, "model": "gpt-6-astra"},
|
||
mock_provider_response={
|
||
**OPENAI_RESPONSES_RESPONSE,
|
||
"model": "gpt-6-astra",
|
||
"id": "resp_0552d3d37f56f8e8006ad02393df1487d08cd567c9669c6b15",
|
||
"created_at": 1792025491,
|
||
"completed_at": 1792025495,
|
||
"output": [
|
||
{
|
||
"id": "rs_0552d3d37f56f8e8006ad02395050087d0954cb16260eceabd",
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COXbYvBd4No2o1mKicIiH9j9eRzT8OGbkVyS-7zuUXSU6YKYudPsLUl2WsonyL61adFZSVoTsnF028sqP7sbKTb4PJS8w6eMYLETqeIxL20JUkHB93j798SzS50qm_X4_cSDnH7mh5rcnTNOcdk9BAlrjFTKuK_ARzCswFDmqH2mk4zZiD767r4iXv0QyxKxsEWq-exnoaJOw39XRFQQA_1ATo1J6dP6AmQkpmhQKlIY8NPKwNiR34X2jpN9yskz9PeJs_a1jA4R1m2Xh7ISAS2gmKX3vaBJL4sM8K7sV7KgAuSboorGK9N-L0737_zPJSKvnqI0-2uovkBaYzKwpfpUGs5zFK6zE6_eQJ5JLCCFUfarz_iIyQXMExN5jKoqD7rfP8eMjEAuW2OqWVrL6i-cnBp96G8erGV7y2uD0_iIbEJ6dj2dWE9u81jrpMilRDo4VRDeff7kpWCNYdvn_LRzgKwhDSLHunrZKp-yi3056kNaNDiw8ra9_BwrfEAduOnMvbdLNSCRKJ8WbkL4JNZU3KOfsDCeoqXRWHsJOgUXMjruTgDBKJccKjYF5kzhNRxeb4dAKZqKgEqvCV3QX9wQhXVEnqVct3KHU0QDQLYTs4EwfBTf_ReVWYtIowJrRZrtjW6Qdq9z7v6HY3-wiRkwnDoXJriySRuZviX3y3m4cwCe63gc3DqFvS22UWXk4cIw3XCdsJ5l-uJNWs_-FXUvGv4H2l2iunVPMWBVlorL-SdkGa9ftdpb7gPtZD8gxjryYO7vJO7Sjk1K7A0gqAZHvIwJMdFJxED0yxpPv7hEqw_3DFQDJr3elnjmOwHVBueWYggjN-6oyYJwQOo0o2_M3pyUsOuS8eGIm2TEL8LKXl-QeHbUbISQm_ZZYcUqwnhvTRlslx2Z9dTwgN5u2HwL1CArcAQ_j1pyAJIKoHCgIp7EWgS0zsgaiU1wJRs3aw1wzUQJ5EGKKkle3EIDJnhLA9l_UOQ1xAchhIExf76-eGuAiEQi7v0Gz6SMiLSlUH2xh7fyve3_mLuOYGidn73xCr91y8TjuAxRYiC0oJP6jYgUtVZ0MpWHYFwhdgtuVM-t4c3XNrNLpBqyWZl7ubi4Jy513NTqr4m4ExktN-5HkKkjb5P-35WccTeXVu8o_NN42ysHO3_mPwPe6-Jr3k-7CrwCPiEhR4rStyuitp_PeGBDPCVgW6vj7urfDe11zAZ84shO4yBVtG26c_CqtLq7MWxKQVrTLx1911InHrIDf7BJjFceVzfYiGEplBNT3OzBDJsbjmZYB_ppdiZeyaDSML93ysldny_6KYKx7cGcdHPyU4hVii-nlr0FdH_v9hngcWj4RUO6k9N9W3XHcmxoNLbX6calO2UMD4O94IiS-pLd-zpMdm-Bo5ncucxfMMc3WuCpVLDIpgzrfF_5F_9BYfO1PdYhCGclFfVij6znXR9CuKOXHhcUAG0kmUb_u_lyTpixNv-B4AJLgI1eONjazeSbGHxRwmVOFF11fIY28T3E0kHO940CxteM3eQKCxEUJmpOc6o1iPuy5jr8NOUrW_Bvp-QF1yS4SZHrSqvPUkUjpjzTy41KrbBgHqtoJ_8GwUrTLvUSPsec1nrErNMJE1oZB_6PDP477aer4gbZOil6N73kGVl2-2HeWMgOFh3qiosi71SsJJ9XmGV3bU7zPjLhtKsyoSOTlhmep-7Rs81V8MSvzhBqWBRA-EI2a07Cc24wsIRDgf366sg9tbbsOK3OdgXG3a3vyQNbflzbMnkRyqzzDCDmkWzRz_BBXydi19tKPPFuLpwEZ12oZE7bfy9uPaAfHMPNFPuZhcV3vVNaCgOX-hNht5RqRQTO8esmOemEtN0hpOEnc7cgS8xGNjMQBzvDnvXEU1eJSnwSkdWwUvlDz_OTwgorvzLcr20cHsZTCL9nP4F_-12eWJvn37at6uSJN3aNrDyWoUe9sSee0NiI3ne2seWkqi6wF8_mOxheeQBQcZtLL0agyGXg_YrcnvqjcUrOyjLNBEutMLMVCjVehyhKmYPh-WHzajm9d8hMD91juCft6ufCe52APO1TmNxqUuphA-gFT4Xo1crf7lx6QJVp8em2NmfNMFDVvx-xzi84epgkulTk95GLqH1ZtsXNt-WBinvx737nLtsA06iA9c946KfNTZxARfe9cb1VVjNo0cnFpTkO6GBVwZC83g540pmAdi57yjjFmTk7uf8sVF-ZQ2LheqVDs2VTl1Z74NJIFPH1tapSawFDL6jhFgekEWOAsUlTshMrhsBVfqY1rBw5JFQKOXfz7H33_KlmBBHl0EkRrqy75mHxuVRW9nxisCXg85lvEOAiOIizLu9HMEJvpmzDdkcZSrc3PvaYVRup5y6w2Pwr4Dj37t1y_ls3YPnnoVkyiXdCoP_wHxgFeUbfNAfKisQxbRy2d-VG_5hRul3F0AqGhr86rT0X1eTb752Up2eFoL6CfAtc5h-oIck8JdJbE34ELHCXg36hx1o1I-WnnHemhIJZGDDfyvGx-KQdoz55SkP4FMxsc-4SnQeOa7nn0-KruRaNTiq6NDhjCILlEZ6M6kIN7nDWYgZgsuWJCKqEoHbi4yodzpUpH9jr0kVlaP4R74WibiSmS-fdQIKnbh9tUcrF_rzbc1VIxI34ODmStok02kmDeao33n8CSb4WA_RW-glw3D138j-HGprBOHR1l0DdcOX0PPk1cvMzsz87b-RgnVVGmv-DqWKL1GgoUItHUp22wpOpPWLb6W71xPHmc2e0CuiqSsAd2Qz1lOYXImJk90BRX-09V4FOB7G9MIGZ5EJ-J4lirYTM5DZrNuU9RFGvi0Gv1EJa_9ejTm6kArC1D_SAXJqoLL8q647FxfyGzJPyhgQn3BbXfclnJRmMFeoZA==",
|
||
"summary": [],
|
||
},
|
||
{
|
||
"id": "msg_0552d3d37f56f8e8006ad02396d75087d0a2c8b7137ba77a35",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [
|
||
{
|
||
"type": "output_text",
|
||
"annotations": [],
|
||
"logprobs": [],
|
||
"text": "I’ll read `shop/validation.py` first to check how it handles zero, "
|
||
"negative, and non-integer quantities.",
|
||
}
|
||
],
|
||
"phase": "commentary",
|
||
"role": "assistant",
|
||
},
|
||
{
|
||
"id": "fc_0552d3d37f56f8e8006ad02397444087d09ede3b901e93cb70",
|
||
"type": "function_call",
|
||
"status": "completed",
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":200}',
|
||
"call_id": "call_wVrKXoGNLx7ClNV8cmG0E8pP",
|
||
"name": "read_file",
|
||
},
|
||
],
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 177,
|
||
"output_tokens_details": {"reasoning_tokens": 112},
|
||
"total_tokens": 486,
|
||
},
|
||
},
|
||
expected_litellm_response={
|
||
**RESPONSES_NATIVE_RESPONSE,
|
||
"id": ANY,
|
||
"created_at": 1792025491,
|
||
"model": "openai/gpt-6-astra",
|
||
"output": [
|
||
{
|
||
"id": "rs_0552d3d37f56f8e8006ad02395050087d0954cb16260eceabd",
|
||
"summary": [],
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COXbYvBd4No2o1mKicIiH9j9eRzT8OGbkVyS-7zuUXSU6YKYudPsLUl2WsonyL61adFZSVoTsnF028sqP7sbKTb4PJS8w6eMYLETqeIxL20JUkHB93j798SzS50qm_X4_cSDnH7mh5rcnTNOcdk9BAlrjFTKuK_ARzCswFDmqH2mk4zZiD767r4iXv0QyxKxsEWq-exnoaJOw39XRFQQA_1ATo1J6dP6AmQkpmhQKlIY8NPKwNiR34X2jpN9yskz9PeJs_a1jA4R1m2Xh7ISAS2gmKX3vaBJL4sM8K7sV7KgAuSboorGK9N-L0737_zPJSKvnqI0-2uovkBaYzKwpfpUGs5zFK6zE6_eQJ5JLCCFUfarz_iIyQXMExN5jKoqD7rfP8eMjEAuW2OqWVrL6i-cnBp96G8erGV7y2uD0_iIbEJ6dj2dWE9u81jrpMilRDo4VRDeff7kpWCNYdvn_LRzgKwhDSLHunrZKp-yi3056kNaNDiw8ra9_BwrfEAduOnMvbdLNSCRKJ8WbkL4JNZU3KOfsDCeoqXRWHsJOgUXMjruTgDBKJccKjYF5kzhNRxeb4dAKZqKgEqvCV3QX9wQhXVEnqVct3KHU0QDQLYTs4EwfBTf_ReVWYtIowJrRZrtjW6Qdq9z7v6HY3-wiRkwnDoXJriySRuZviX3y3m4cwCe63gc3DqFvS22UWXk4cIw3XCdsJ5l-uJNWs_-FXUvGv4H2l2iunVPMWBVlorL-SdkGa9ftdpb7gPtZD8gxjryYO7vJO7Sjk1K7A0gqAZHvIwJMdFJxED0yxpPv7hEqw_3DFQDJr3elnjmOwHVBueWYggjN-6oyYJwQOo0o2_M3pyUsOuS8eGIm2TEL8LKXl-QeHbUbISQm_ZZYcUqwnhvTRlslx2Z9dTwgN5u2HwL1CArcAQ_j1pyAJIKoHCgIp7EWgS0zsgaiU1wJRs3aw1wzUQJ5EGKKkle3EIDJnhLA9l_UOQ1xAchhIExf76-eGuAiEQi7v0Gz6SMiLSlUH2xh7fyve3_mLuOYGidn73xCr91y8TjuAxRYiC0oJP6jYgUtVZ0MpWHYFwhdgtuVM-t4c3XNrNLpBqyWZl7ubi4Jy513NTqr4m4ExktN-5HkKkjb5P-35WccTeXVu8o_NN42ysHO3_mPwPe6-Jr3k-7CrwCPiEhR4rStyuitp_PeGBDPCVgW6vj7urfDe11zAZ84shO4yBVtG26c_CqtLq7MWxKQVrTLx1911InHrIDf7BJjFceVzfYiGEplBNT3OzBDJsbjmZYB_ppdiZeyaDSML93ysldny_6KYKx7cGcdHPyU4hVii-nlr0FdH_v9hngcWj4RUO6k9N9W3XHcmxoNLbX6calO2UMD4O94IiS-pLd-zpMdm-Bo5ncucxfMMc3WuCpVLDIpgzrfF_5F_9BYfO1PdYhCGclFfVij6znXR9CuKOXHhcUAG0kmUb_u_lyTpixNv-B4AJLgI1eONjazeSbGHxRwmVOFF11fIY28T3E0kHO940CxteM3eQKCxEUJmpOc6o1iPuy5jr8NOUrW_Bvp-QF1yS4SZHrSqvPUkUjpjzTy41KrbBgHqtoJ_8GwUrTLvUSPsec1nrErNMJE1oZB_6PDP477aer4gbZOil6N73kGVl2-2HeWMgOFh3qiosi71SsJJ9XmGV3bU7zPjLhtKsyoSOTlhmep-7Rs81V8MSvzhBqWBRA-EI2a07Cc24wsIRDgf366sg9tbbsOK3OdgXG3a3vyQNbflzbMnkRyqzzDCDmkWzRz_BBXydi19tKPPFuLpwEZ12oZE7bfy9uPaAfHMPNFPuZhcV3vVNaCgOX-hNht5RqRQTO8esmOemEtN0hpOEnc7cgS8xGNjMQBzvDnvXEU1eJSnwSkdWwUvlDz_OTwgorvzLcr20cHsZTCL9nP4F_-12eWJvn37at6uSJN3aNrDyWoUe9sSee0NiI3ne2seWkqi6wF8_mOxheeQBQcZtLL0agyGXg_YrcnvqjcUrOyjLNBEutMLMVCjVehyhKmYPh-WHzajm9d8hMD91juCft6ufCe52APO1TmNxqUuphA-gFT4Xo1crf7lx6QJVp8em2NmfNMFDVvx-xzi84epgkulTk95GLqH1ZtsXNt-WBinvx737nLtsA06iA9c946KfNTZxARfe9cb1VVjNo0cnFpTkO6GBVwZC83g540pmAdi57yjjFmTk7uf8sVF-ZQ2LheqVDs2VTl1Z74NJIFPH1tapSawFDL6jhFgekEWOAsUlTshMrhsBVfqY1rBw5JFQKOXfz7H33_KlmBBHl0EkRrqy75mHxuVRW9nxisCXg85lvEOAiOIizLu9HMEJvpmzDdkcZSrc3PvaYVRup5y6w2Pwr4Dj37t1y_ls3YPnnoVkyiXdCoP_wHxgFeUbfNAfKisQxbRy2d-VG_5hRul3F0AqGhr86rT0X1eTb752Up2eFoL6CfAtc5h-oIck8JdJbE34ELHCXg36hx1o1I-WnnHemhIJZGDDfyvGx-KQdoz55SkP4FMxsc-4SnQeOa7nn0-KruRaNTiq6NDhjCILlEZ6M6kIN7nDWYgZgsuWJCKqEoHbi4yodzpUpH9jr0kVlaP4R74WibiSmS-fdQIKnbh9tUcrF_rzbc1VIxI34ODmStok02kmDeao33n8CSb4WA_RW-glw3D138j-HGprBOHR1l0DdcOX0PPk1cvMzsz87b-RgnVVGmv-DqWKL1GgoUItHUp22wpOpPWLb6W71xPHmc2e0CuiqSsAd2Qz1lOYXImJk90BRX-09V4FOB7G9MIGZ5EJ-J4lirYTM5DZrNuU9RFGvi0Gv1EJa_9ejTm6kArC1D_SAXJqoLL8q647FxfyGzJPyhgQn3BbXfclnJRmMFeoZA==",
|
||
},
|
||
{
|
||
"id": "msg_0552d3d37f56f8e8006ad02396d75087d0a2c8b7137ba77a35",
|
||
"content": [
|
||
{
|
||
"annotations": [],
|
||
"text": "I’ll read `shop/validation.py` first to check how it handles "
|
||
"zero, negative, and non-integer quantities.",
|
||
"type": "output_text",
|
||
"logprobs": [],
|
||
}
|
||
],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "commentary",
|
||
},
|
||
{
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":200}',
|
||
"call_id": "call_wVrKXoGNLx7ClNV8cmG0E8pP",
|
||
"name": "read_file",
|
||
"type": "function_call",
|
||
"id": "fc_0552d3d37f56f8e8006ad02397444087d09ede3b901e93cb70",
|
||
"namespace": None,
|
||
"status": "completed",
|
||
},
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tools": [
|
||
{
|
||
"name": "search_files",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": {"type": "string"},
|
||
"paths": {"type": "array", "items": {"type": "string"}},
|
||
},
|
||
"required": ["query", "paths"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Search source and test files for a literal term.",
|
||
"output_schema": None,
|
||
},
|
||
{
|
||
"name": "read_file",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"path": {"type": "string"},
|
||
"start_line": {"type": "integer", "minimum": 1},
|
||
"end_line": {"type": "integer", "minimum": 1},
|
||
},
|
||
"required": ["path", "start_line", "end_line"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Read a range of lines from a project file.",
|
||
"output_schema": None,
|
||
},
|
||
],
|
||
"top_p": 0.98,
|
||
"reasoning": {"context": "all_turns", "effort": "high", "mode": "standard", "summary": None},
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 177,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 112, "text_tokens": None},
|
||
"total_tokens": 486,
|
||
"cost": None,
|
||
},
|
||
"store": True,
|
||
"access_programs": None,
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1792025495,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|
||
|
||
GPT_5_6_TERRA_TEST_CASE: Final = TranslationTestCase(
|
||
scenario="basic",
|
||
litellm_endpoint="/v1/responses",
|
||
litellm_request={**RESPONSES_REQUEST, "model": "openai/gpt-5.6-terra"},
|
||
expected_provider_endpoint="/responses",
|
||
expected_provider_headers={
|
||
"content-type": "application/json",
|
||
"authorization": "Bearer synthetic-openai-key",
|
||
},
|
||
expected_provider_request={**OPENAI_RESPONSES_REQUEST, "model": "gpt-5.6-terra"},
|
||
mock_provider_response={
|
||
**OPENAI_RESPONSES_RESPONSE,
|
||
"model": "gpt-5.6-terra",
|
||
"id": "resp_01818bf6930dd01f006ad0238a1f4087d0a5a47aea04e9cd47",
|
||
"created_at": 1792025482,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"completed_at": 1792025483,
|
||
"output": [
|
||
{
|
||
"id": "rs_01818bf6930dd01f006ad0238abb8c87d0be1dc53bb1de580f",
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COL8ir7ZwXbPOmVEOgRTL-aqfraf_1ghm0mkA8sdY9ksq7Sk_hwTMNcBH1zIfS7hFMRLuTRtwXIntfzRjxwisfCfN1fr76Fy_Nx9M0lEUQjPrTL0hgfAjCYoiOptHRO-v5EKTApgnrKVxPxuwDMYQ3GdGAFmN15SNSaWaqpYRbP96XmcvnnMZHLE-BtfbVxtdxSXpVuGLgfCC-11NKJSIG7kZHKi0iSsQBs4tG_Ga3iy1ZDHvrmgduDHR357yfT-Zdufjgm_cQ_KgmSXzcIvzS4Fv3wwTiUzH1SpFfW58Bbbr7gf6fYeLyszpMAMAQePBntjXdNSFV3-DmtKz8HPcZ2UjeAkwQkBWLsJfJoS7XTKP4U2xriGSvVpoCV4vx-GSAGEZGyOt3TyY8jAqOPMViSPGOLWiId0upWOolJUV_nDqRGjKlk8K-k4b_B2k0RiGD6AbUi3_8Ru2i1V0rkA451uOideERDk4LPCVJlgIwtGXOy-jySI17HeYNBjrNtH1mFojojsjt6KIaj3a38r6Xh0fvUfQZAKJJXVqmSIgMebFOI4iiesJxDuVK2qlBTS3mE_FNAfw3AkmKqRUyvEARYNJU_0Yt31EEFAED3xJ-KpSzx-WAfJec-kIT-PiRxvod_PKXObT2u5kJwy9Z8FLj37K1mWYKHHpY9dYwnm0z9o49S4K_f-fIgoGzDtRybAPrglZlDFmf_RSSrVCGo-h_F4Z07wme4zUpnwbGq5I0KmNZVa3d_JlTXpjEPsyDHhK6VHGOvKvOpESgH-7zekvV2_NLheXsAKqpCe3eZ_yI5FkYma5Uiw5lE30GuCT7Dm__eoHllH1AajuIJMvUQ4kF9d1RPXCSk9l9WE34IesApxU--bT1wd1rqedZSsgOW9AkKAq1NC9QEhXG-83_7R0wuUcDeCSdWs4vWqJ0YDjIWEg9LliHm5fypEOW-qftdlBoDWzdqwqMu0XEJvTT1IXtZTNFhekrTgTLpaFJtGw6T8bsaY4csZnb-0jQ9IZyHaRRwPX8JKb3ajvdq_33v_8kLGrVRYjZmd2MwFf2ysaNu_Ob7mNd2UdopntQ98XCbPAkzvvsTPfRYVs4Nf8fg5vAd6QvPy7xoRYxrvQGkppeOVbcPI-EuJSqN_WhTmbXKOpl69MDDyR7xLfuIYLuAbiSO1lS74JuhIgyGkVvO-hUUxL2utZhZdjr_N8AAg0CTKxuMlURkfXRVWrSpm7pm_u-0Xmi4XkrMDb1he5vZmgebI7KiQGkX_jKISBrK0fLwNYWJwY_6cF0QjiIvUt2gucGr7GBUEKeIo3r7oPPEZ3IzBWbiVWHPpjDDJdtliwDAxtzhd-FQwq6N3Rnmj1_4HiUFT3Akj61CYaKXj4IUyamTUdUc3cLcXge2Drv3Kno0ysPf-EHTm0syMRk8URfO9WnFPnjJGH0hIsffSkApE0WJ0Hk8wdzZGvP0QnRZ5lLlEtOBftxW8_-9D457g9kUDiBbnYqOekuQKotQfWfrOKNcEuQeyV1wV1HNrbS4T9Ul6gKFgkDk-wWaciavm2eElMM13OjXJpPsnZpat3pCXxKqrmFLiB4G4NFASz0RzowbnaPoc6OEv2j-c8QzpXX0ftVM0jVsTnl_izTcEobOjU7ipFLBBalJN3aq9K8OYNPKE0fegSQ5ywtERUqk4-X83ggwpDBBZe8tfkPf0KxwRyVmExW4kcepm8zZUzLxeZbipirXd3awzxaD5q-NiN1tvZC7bqb3-cy5du0H_7OScR2QGy7Wt3u2m3zixab8j1foXw6vvBQgV31sTL5RSdZlFtbyI1yu2T9SeOLzfknx14nUCWGyZsLpP3MSCmAOTlHFF6HMa-hnkoWrCtJBuWdq2BuQ9Q==",
|
||
"summary": [],
|
||
},
|
||
{
|
||
"id": "msg_01818bf6930dd01f006ad0238b00a487d0aaa092bcd2431bed",
|
||
"type": "message",
|
||
"status": "completed",
|
||
"content": [
|
||
{
|
||
"type": "output_text",
|
||
"annotations": [],
|
||
"logprobs": [],
|
||
"text": "I need `shop/validation.py` next to inspect the validation branches for "
|
||
"zero, negative, and non-integer inputs.",
|
||
}
|
||
],
|
||
"phase": "commentary",
|
||
"role": "assistant",
|
||
},
|
||
{
|
||
"id": "fc_01818bf6930dd01f006ad0238b33dc87d0866bf763c4861a74",
|
||
"type": "function_call",
|
||
"status": "completed",
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":200}',
|
||
"call_id": "call_FI1PXRT2XNjueqLOd8GliYTF",
|
||
"name": "read_file",
|
||
},
|
||
],
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {"cache_write_tokens": 0, "cached_tokens": 0},
|
||
"output_tokens": 100,
|
||
"output_tokens_details": {"reasoning_tokens": 35},
|
||
"total_tokens": 409,
|
||
},
|
||
},
|
||
expected_litellm_response={
|
||
**RESPONSES_NATIVE_RESPONSE,
|
||
"id": ANY,
|
||
"created_at": 1792025482,
|
||
"model": "openai/gpt-5.6-terra",
|
||
"output": [
|
||
{
|
||
"id": "rs_01818bf6930dd01f006ad0238abb8c87d0be1dc53bb1de580f",
|
||
"summary": [],
|
||
"type": "reasoning",
|
||
"content": [],
|
||
"encrypted_content": "gAAAAABq0COL8ir7ZwXbPOmVEOgRTL-aqfraf_1ghm0mkA8sdY9ksq7Sk_hwTMNcBH1zIfS7hFMRLuTRtwXIntfzRjxwisfCfN1fr76Fy_Nx9M0lEUQjPrTL0hgfAjCYoiOptHRO-v5EKTApgnrKVxPxuwDMYQ3GdGAFmN15SNSaWaqpYRbP96XmcvnnMZHLE-BtfbVxtdxSXpVuGLgfCC-11NKJSIG7kZHKi0iSsQBs4tG_Ga3iy1ZDHvrmgduDHR357yfT-Zdufjgm_cQ_KgmSXzcIvzS4Fv3wwTiUzH1SpFfW58Bbbr7gf6fYeLyszpMAMAQePBntjXdNSFV3-DmtKz8HPcZ2UjeAkwQkBWLsJfJoS7XTKP4U2xriGSvVpoCV4vx-GSAGEZGyOt3TyY8jAqOPMViSPGOLWiId0upWOolJUV_nDqRGjKlk8K-k4b_B2k0RiGD6AbUi3_8Ru2i1V0rkA451uOideERDk4LPCVJlgIwtGXOy-jySI17HeYNBjrNtH1mFojojsjt6KIaj3a38r6Xh0fvUfQZAKJJXVqmSIgMebFOI4iiesJxDuVK2qlBTS3mE_FNAfw3AkmKqRUyvEARYNJU_0Yt31EEFAED3xJ-KpSzx-WAfJec-kIT-PiRxvod_PKXObT2u5kJwy9Z8FLj37K1mWYKHHpY9dYwnm0z9o49S4K_f-fIgoGzDtRybAPrglZlDFmf_RSSrVCGo-h_F4Z07wme4zUpnwbGq5I0KmNZVa3d_JlTXpjEPsyDHhK6VHGOvKvOpESgH-7zekvV2_NLheXsAKqpCe3eZ_yI5FkYma5Uiw5lE30GuCT7Dm__eoHllH1AajuIJMvUQ4kF9d1RPXCSk9l9WE34IesApxU--bT1wd1rqedZSsgOW9AkKAq1NC9QEhXG-83_7R0wuUcDeCSdWs4vWqJ0YDjIWEg9LliHm5fypEOW-qftdlBoDWzdqwqMu0XEJvTT1IXtZTNFhekrTgTLpaFJtGw6T8bsaY4csZnb-0jQ9IZyHaRRwPX8JKb3ajvdq_33v_8kLGrVRYjZmd2MwFf2ysaNu_Ob7mNd2UdopntQ98XCbPAkzvvsTPfRYVs4Nf8fg5vAd6QvPy7xoRYxrvQGkppeOVbcPI-EuJSqN_WhTmbXKOpl69MDDyR7xLfuIYLuAbiSO1lS74JuhIgyGkVvO-hUUxL2utZhZdjr_N8AAg0CTKxuMlURkfXRVWrSpm7pm_u-0Xmi4XkrMDb1he5vZmgebI7KiQGkX_jKISBrK0fLwNYWJwY_6cF0QjiIvUt2gucGr7GBUEKeIo3r7oPPEZ3IzBWbiVWHPpjDDJdtliwDAxtzhd-FQwq6N3Rnmj1_4HiUFT3Akj61CYaKXj4IUyamTUdUc3cLcXge2Drv3Kno0ysPf-EHTm0syMRk8URfO9WnFPnjJGH0hIsffSkApE0WJ0Hk8wdzZGvP0QnRZ5lLlEtOBftxW8_-9D457g9kUDiBbnYqOekuQKotQfWfrOKNcEuQeyV1wV1HNrbS4T9Ul6gKFgkDk-wWaciavm2eElMM13OjXJpPsnZpat3pCXxKqrmFLiB4G4NFASz0RzowbnaPoc6OEv2j-c8QzpXX0ftVM0jVsTnl_izTcEobOjU7ipFLBBalJN3aq9K8OYNPKE0fegSQ5ywtERUqk4-X83ggwpDBBZe8tfkPf0KxwRyVmExW4kcepm8zZUzLxeZbipirXd3awzxaD5q-NiN1tvZC7bqb3-cy5du0H_7OScR2QGy7Wt3u2m3zixab8j1foXw6vvBQgV31sTL5RSdZlFtbyI1yu2T9SeOLzfknx14nUCWGyZsLpP3MSCmAOTlHFF6HMa-hnkoWrCtJBuWdq2BuQ9Q==",
|
||
},
|
||
{
|
||
"id": "msg_01818bf6930dd01f006ad0238b00a487d0aaa092bcd2431bed",
|
||
"content": [
|
||
{
|
||
"annotations": [],
|
||
"text": "I need `shop/validation.py` next to inspect the validation "
|
||
"branches for zero, negative, and non-integer inputs.",
|
||
"type": "output_text",
|
||
"logprobs": [],
|
||
}
|
||
],
|
||
"role": "assistant",
|
||
"status": "completed",
|
||
"type": "message",
|
||
"phase": "commentary",
|
||
},
|
||
{
|
||
"arguments": '{"path":"shop/validation.py","start_line":1,"end_line":200}',
|
||
"call_id": "call_FI1PXRT2XNjueqLOd8GliYTF",
|
||
"name": "read_file",
|
||
"type": "function_call",
|
||
"id": "fc_01818bf6930dd01f006ad0238b33dc87d0866bf763c4861a74",
|
||
"namespace": None,
|
||
"status": "completed",
|
||
},
|
||
],
|
||
"parallel_tool_calls": True,
|
||
"temperature": 1.0,
|
||
"tools": [
|
||
{
|
||
"name": "search_files",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": {"type": "string"},
|
||
"paths": {"type": "array", "items": {"type": "string"}},
|
||
},
|
||
"required": ["query", "paths"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Search source and test files for a literal term.",
|
||
"output_schema": None,
|
||
},
|
||
{
|
||
"name": "read_file",
|
||
"parameters": {
|
||
"type": "object",
|
||
"properties": {
|
||
"path": {"type": "string"},
|
||
"start_line": {"type": "integer", "minimum": 1},
|
||
"end_line": {"type": "integer", "minimum": 1},
|
||
},
|
||
"required": ["path", "start_line", "end_line"],
|
||
"additionalProperties": False,
|
||
},
|
||
"strict": True,
|
||
"type": "function",
|
||
"defer_loading": None,
|
||
"description": "Read a range of lines from a project file.",
|
||
"output_schema": None,
|
||
},
|
||
],
|
||
"top_p": 0.98,
|
||
"reasoning": {"context": "all_turns", "effort": "high", "mode": "standard", "summary": None},
|
||
"text": {"format": {"type": "text"}, "verbosity": "medium"},
|
||
"truncation": "disabled",
|
||
"usage": {
|
||
"input_tokens": 309,
|
||
"input_tokens_details": {
|
||
"audio_tokens": None,
|
||
"cached_tokens": 0,
|
||
"cached_tokens_details": None,
|
||
"image_tokens": None,
|
||
"text_tokens": None,
|
||
"video_tokens": None,
|
||
"cache_write_tokens": 0,
|
||
},
|
||
"output_tokens": 100,
|
||
"output_tokens_details": {"audio_tokens": None, "reasoning_tokens": 35, "text_tokens": None},
|
||
"total_tokens": 409,
|
||
"cost": None,
|
||
},
|
||
"store": True,
|
||
"access_programs": {"cyber": "daybreak_blue"},
|
||
"background": False,
|
||
"billing": {"payer": "developer"},
|
||
"completed_at": 1792025483,
|
||
"frequency_penalty": 0.0,
|
||
"max_tool_calls": None,
|
||
"moderation": None,
|
||
"presence_penalty": 0.0,
|
||
"prompt_cache_key": None,
|
||
"prompt_cache_retention": "24h",
|
||
"safety_identifier": None,
|
||
"service_tier": "default",
|
||
"tool_usage": {
|
||
"image_gen": {
|
||
"input_tokens": 0,
|
||
"input_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"output_tokens": 0,
|
||
"output_tokens_details": {"image_tokens": 0, "text_tokens": 0},
|
||
"total_tokens": 0,
|
||
},
|
||
"web_search": {"num_requests": 0},
|
||
},
|
||
"top_logprobs": 0,
|
||
},
|
||
)
|