From 0edc8eb6be025b320efb28244f5bd00f1cb56103 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 5 Sep 2025 22:38:23 +0000 Subject: [PATCH 01/13] Send back thinking parts to APIs --- docs/thinking.md | 5 + pydantic_ai_slim/pydantic_ai/messages.py | 2 +- .../pydantic_ai/models/anthropic.py | 7 +- .../pydantic_ai/models/bedrock.py | 2 + pydantic_ai_slim/pydantic_ai/models/cohere.py | 31 +- pydantic_ai_slim/pydantic_ai/models/google.py | 16 +- pydantic_ai_slim/pydantic_ai/models/groq.py | 6 +- .../pydantic_ai/models/huggingface.py | 6 +- .../pydantic_ai/models/mistral.py | 43 +- pydantic_ai_slim/pydantic_ai/models/openai.py | 70 +- .../pydantic_ai/providers/bedrock.py | 11 +- pydantic_ai_slim/pyproject.toml | 4 +- .../test_cohere_model_thinking_part.yaml | 253 +-- .../test_mistral_model_thinking_part.yaml | 291 ++- ..._openai_responses_model_thinking_part.yaml | 251 ++- ...t_openai_responses_thinking_part_iter.yaml | 1658 ++++++++++------- tests/models/test_cohere.py | 21 +- tests/models/test_mistral.py | 88 +- tests/models/test_openai_responses.py | 99 +- uv.lock | 27 +- 20 files changed, 1689 insertions(+), 1202 deletions(-) diff --git a/docs/thinking.md b/docs/thinking.md index b45ec76006..7d97e348e0 100644 --- a/docs/thinking.md +++ b/docs/thinking.md @@ -74,6 +74,8 @@ agent = Agent(model, model_settings=settings) ... ``` + + ## Google To enable thinking, use the `google_thinking_config` field in the @@ -92,3 +94,6 @@ agent = Agent(model, model_settings=settings) ## Mistral / Cohere Neither Mistral nor Cohere generate thinking parts. + + + diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index 1ca176f269..053a5ec1e4 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -886,7 +886,7 @@ class ThinkingPart: signature: str | None = None """The signature of the thinking. - The signature is only available on the Anthropic models. + This corresponds to the `signature` field on Anthropic thinking parts, and the `encrypted_content` field on OpenAI reasoning parts. """ part_kind: Literal['thinking'] = 'thinking' diff --git a/pydantic_ai_slim/pydantic_ai/models/anthropic.py b/pydantic_ai_slim/pydantic_ai/models/anthropic.py index 17ceedcc20..b4fa46b643 100644 --- a/pydantic_ai_slim/pydantic_ai/models/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/models/anthropic.py @@ -309,6 +309,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: ) ) elif isinstance(item, BetaRedactedThinkingBlock): # pragma: no cover + # TODO: Handle redacted thinking warnings.warn( 'Pydantic AI currently does not handle redacted thinking blocks. ' 'If you have a suggestion on how we should handle them, please open an issue.', @@ -439,11 +440,13 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be ) assistant_content_params.append(tool_use_block_param) elif isinstance(response_part, ThinkingPart): - # NOTE: We only send thinking part back for Anthropic, otherwise they raise an error. if response_part.signature is not None: # pragma: no branch assistant_content_params.append( BetaThinkingBlockParam( - thinking=response_part.content, signature=response_part.signature, type='thinking' + # TODO: Store `provider_name` on ThinkingPart, only send back `signature` if it matches? + thinking=response_part.content, + signature=response_part.signature, + type='thinking', ) ) elif isinstance(response_part, BuiltinToolCallPart): diff --git a/pydantic_ai_slim/pydantic_ai/models/bedrock.py b/pydantic_ai_slim/pydantic_ai/models/bedrock.py index a8bef2471e..9bed0f58b0 100644 --- a/pydantic_ai_slim/pydantic_ai/models/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/models/bedrock.py @@ -481,12 +481,14 @@ async def _map_messages( # noqa: C901 'text': item.content, } if item.signature: + # TODO: Store `provider_name` on ThinkingPart, only send back `signature` if it matches? reasoning_text['signature'] = item.signature reasoning_content: ReasoningContentBlockOutputTypeDef = { 'reasoningText': reasoning_text, } content.append({'reasoningContent': reasoning_content}) else: + # TODO: Should we send in `` tags in case thinking from another model was forwarded to Bedrock? # NOTE: We don't pass the thinking part to Bedrock for models other than Claude since it raises an error. pass elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): diff --git a/pydantic_ai_slim/pydantic_ai/models/cohere.py b/pydantic_ai_slim/pydantic_ai/models/cohere.py index 625f483840..da7bdba98b 100644 --- a/pydantic_ai_slim/pydantic_ai/models/cohere.py +++ b/pydantic_ai_slim/pydantic_ai/models/cohere.py @@ -6,7 +6,6 @@ from typing_extensions import assert_never -from pydantic_ai._thinking_part import split_content_into_text_and_thinking from pydantic_ai.exceptions import UserError from .. import ModelHTTPError, usage @@ -35,10 +34,12 @@ try: from cohere import ( AssistantChatMessageV2, + AssistantMessageV2ContentItem, AsyncClientV2, ChatMessageV2, SystemChatMessageV2, TextAssistantMessageV2ContentItem, + ThinkingAssistantMessageV2ContentItem, ToolCallV2, ToolCallV2Function, ToolChatMessageV2, @@ -191,11 +192,13 @@ async def _chat( def _process_response(self, response: V2ChatResponse) -> ModelResponse: """Process a non-streamed response, and prepare a message to return.""" parts: list[ModelResponsePart] = [] - if response.message.content is not None and len(response.message.content) > 0: - # While Cohere's API returns a list, it only does that for future proofing - # and currently only one item is being returned. - choice = response.message.content[0] - parts.extend(split_content_into_text_and_thinking(choice.text, self.profile.thinking_tags)) + if response.message.content is not None: + for content in response.message.content: + print(content) + if content.type == 'text': + parts.append(TextPart(content=content.text)) + elif content.type == 'thinking': + parts.append(ThinkingPart(content=cast(str, content.thinking))) # pyright: ignore[reportUnknownMemberType,reportAttributeAccessIssue] - https://github.com/cohere-ai/cohere-python/issues/692 for c in response.message.tool_calls or []: if c.function and c.function.name and c.function.arguments: # pragma: no branch parts.append( @@ -217,15 +220,13 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[ChatMessageV2]: cohere_messages.extend(self._map_user_message(message)) elif isinstance(message, ModelResponse): texts: list[str] = [] + thinking: list[str] = [] tool_calls: list[ToolCallV2] = [] for item in message.parts: if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # texts.append(f'\n{item.content}\n') - pass + thinking.append(item.content) elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): # pragma: no cover @@ -233,9 +234,15 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[ChatMessageV2]: pass else: assert_never(item) + message_param = AssistantChatMessageV2(role='assistant') - if texts: - message_param.content = [TextAssistantMessageV2ContentItem(text='\n\n'.join(texts))] + if texts or thinking: + contents: list[AssistantMessageV2ContentItem] = [] + if thinking: + contents.append(ThinkingAssistantMessageV2ContentItem(thinking='\n\n'.join(thinking))) # pyright: ignore[reportCallIssue] - https://github.com/cohere-ai/cohere-python/issues/692 + if texts: + contents.append(TextAssistantMessageV2ContentItem(text='\n\n'.join(texts))) + message_param.content = contents if tool_calls: message_param.tool_calls = tool_calls cohere_messages.append(message_param) diff --git a/pydantic_ai_slim/pydantic_ai/models/google.py b/pydantic_ai_slim/pydantic_ai/models/google.py index bc10f31873..b692419567 100644 --- a/pydantic_ai_slim/pydantic_ai/models/google.py +++ b/pydantic_ai_slim/pydantic_ai/models/google.py @@ -600,11 +600,14 @@ def _content_model_response(m: ModelResponse) -> ContentDict: parts.append({'function_call': function_call}) elif isinstance(item, TextPart): parts.append({'text': item.content}) - elif isinstance(item, ThinkingPart): # pragma: no cover - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # parts.append({'text': item.content, 'thought': True}) - pass + elif isinstance(item, ThinkingPart): + parts.append( + { + 'text': item.content, + 'thought': True, + 'thought_signature': item.signature.encode('utf-8') if item.signature else None, + } + ) elif isinstance(item, BuiltinToolCallPart): if item.provider_name == 'google': if item.tool_name == 'code_execution': # pragma: no branch @@ -645,7 +648,8 @@ def _process_response_from_parts( ) elif part.text is not None: if part.thought: - items.append(ThinkingPart(content=part.text)) + signature = part.thought_signature.decode('utf-8') if part.thought_signature else None + items.append(ThinkingPart(content=part.text, signature=signature)) else: items.append(TextPart(content=part.text)) elif part.function_call: diff --git a/pydantic_ai_slim/pydantic_ai/models/groq.py b/pydantic_ai_slim/pydantic_ai/models/groq.py index 9739639e09..485d2fc391 100644 --- a/pydantic_ai_slim/pydantic_ai/models/groq.py +++ b/pydantic_ai_slim/pydantic_ai/models/groq.py @@ -306,8 +306,8 @@ def _process_response(self, response: chat.ChatCompletion) -> ModelResponse: provider_name='groq', tool_name=tool.type, content=tool.output, tool_call_id=tool_call_id ) ) - # NOTE: The `reasoning` field is only present if `groq_reasoning_format` is set to `parsed`. if choice.message.reasoning is not None: + # NOTE: The `reasoning` field is only present if `groq_reasoning_format` is set to `parsed`. items.append(ThinkingPart(content=choice.message.reasoning)) if choice.message.content is not None: # NOTE: The `` tag is only present if `groq_reasoning_format` is set to `raw`. @@ -376,8 +376,8 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletio elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) elif isinstance(item, ThinkingPart): - # Skip thinking parts when mapping to Groq messages - continue + # Groq does not yet support sending back reasoning + pass elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): # pragma: no cover # This is currently never returned from groq pass diff --git a/pydantic_ai_slim/pydantic_ai/models/huggingface.py b/pydantic_ai_slim/pydantic_ai/models/huggingface.py index 8a588fcf97..8bae13c095 100644 --- a/pydantic_ai_slim/pydantic_ai/models/huggingface.py +++ b/pydantic_ai_slim/pydantic_ai/models/huggingface.py @@ -316,10 +316,8 @@ async def _map_messages( elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) elif isinstance(item, ThinkingPart): - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # texts.append(f'\n{item.content}\n') - pass + start_tag, end_tag = self.profile.thinking_tags + texts.append('\n'.join([start_tag, item.content, end_tag])) elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): # pragma: no cover # This is currently never returned from huggingface pass diff --git a/pydantic_ai_slim/pydantic_ai/models/mistral.py b/pydantic_ai_slim/pydantic_ai/models/mistral.py index e28f97aa38..47d514f622 100644 --- a/pydantic_ai_slim/pydantic_ai/models/mistral.py +++ b/pydantic_ai_slim/pydantic_ai/models/mistral.py @@ -61,7 +61,9 @@ ImageURLChunk as MistralImageURLChunk, Mistral, OptionalNullable as MistralOptionalNullable, + ReferenceChunk as MistralReferenceChunk, TextChunk as MistralTextChunk, + ThinkChunk as MistralThinkChunk, ToolChoiceEnum as MistralToolChoiceEnum, ) from mistralai.models import ( @@ -339,7 +341,10 @@ def _process_response(self, response: MistralChatCompletionResponse) -> ModelRes tool_calls = choice.message.tool_calls parts: list[ModelResponsePart] = [] - if text := _map_content(content): + text, thinking = _map_content(content) + for thought in thinking: + parts.append(ThinkingPart(content=thought)) + if text: parts.extend(split_content_into_text_and_thinking(text, self.profile.thinking_tags)) if isinstance(tool_calls, list): @@ -503,16 +508,14 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[MistralMessages]: mistral_messages.extend(self._map_user_message(message)) elif isinstance(message, ModelResponse): content_chunks: list[MistralContentChunk] = [] + thinking_chunks: list[MistralTextChunk | MistralReferenceChunk] = [] tool_calls: list[MistralToolCall] = [] for part in message.parts: if isinstance(part, TextPart): content_chunks.append(MistralTextChunk(text=part.content)) elif isinstance(part, ThinkingPart): - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # content_chunks.append(MistralTextChunk(text=f'{part.content}')) - pass + thinking_chunks.append(MistralTextChunk(text=part.content)) elif isinstance(part, ToolCallPart): tool_calls.append(self._map_tool_call(part)) elif isinstance(part, BuiltinToolCallPart | BuiltinToolReturnPart): # pragma: no cover @@ -520,6 +523,8 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[MistralMessages]: pass else: assert_never(part) + if thinking_chunks: + content_chunks.insert(0, MistralThinkChunk(thinking=thinking_chunks)) mistral_messages.append(MistralAssistantMessage(content=content_chunks, tool_calls=tool_calls)) else: assert_never(message) @@ -602,7 +607,8 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: # Handle the text part of the response content = choice.delta.content - text = _map_content(content) + text, _ = _map_content(content) + # TODO: Handle thinking deltas if text: # Attempt to produce an output tool call from the received text output_tools = {c.name: c for c in self.model_request_parameters.output_tools} @@ -715,32 +721,37 @@ def _map_usage(response: MistralChatCompletionResponse | MistralCompletionChunk) """Maps a Mistral Completion Chunk or Chat Completion Response to a Usage.""" if response.usage: return RequestUsage( - input_tokens=response.usage.prompt_tokens, - output_tokens=response.usage.completion_tokens, + input_tokens=response.usage.prompt_tokens or 0, + output_tokens=response.usage.completion_tokens or 0, ) else: return RequestUsage() # pragma: no cover -def _map_content(content: MistralOptionalNullable[MistralContent]) -> str | None: +def _map_content(content: MistralOptionalNullable[MistralContent]) -> tuple[str | None, list[str]]: """Maps the delta content from a Mistral Completion Chunk to a string or None.""" - output: str | None = None + text: str | None = None + thinking: list[str] = [] if isinstance(content, MistralUnset) or not content: - output = None + return None, [] elif isinstance(content, list): for chunk in content: if isinstance(chunk, MistralTextChunk): - output = output or '' + chunk.text + text = text or '' + chunk.text + elif isinstance(chunk, MistralThinkChunk): + for thought in chunk.thinking: + if thought.type == 'text': + thinking.append(thought.text) else: assert False, ( # pragma: no cover f'Other data types like (Image, Reference) are not yet supported, got {type(chunk)}' ) elif isinstance(content, str): - output = content + text = content # Note: Check len to handle potential mismatch between function calls and responses from the API. (`msg: not the same number of function class and responses`) - if output and len(output) == 0: # pragma: no cover - output = None + if text and len(text) == 0: # pragma: no cover + text = None - return output + return text, thinking diff --git a/pydantic_ai_slim/pydantic_ai/models/openai.py b/pydantic_ai_slim/pydantic_ai/models/openai.py index 24afad6ab0..75f0d5f140 100644 --- a/pydantic_ai_slim/pydantic_ai/models/openai.py +++ b/pydantic_ai_slim/pydantic_ai/models/openai.py @@ -72,6 +72,7 @@ ) from openai.types.responses import ComputerToolParam, FileSearchToolParam, WebSearchToolParam from openai.types.responses.response_input_param import FunctionCallOutput, Message + from openai.types.responses.response_reasoning_item_param import Summary from openai.types.shared import ReasoningEffort from openai.types.shared_params import Reasoning except ImportError as _import_error: @@ -474,6 +475,8 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons if reasoning_content := getattr(choice.message, 'reasoning_content', None): items.append(ThinkingPart(content=reasoning_content)) + # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + vendor_details: dict[str, Any] | None = None # Add logprobs to vendor_details if available @@ -571,9 +574,7 @@ async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCom if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # texts.append(f'\n{item.content}\n') + # TODO: Send back in tags (Ollama etc), `reasoning` field (DeepSeek), or `reasoning_content` field (OpenRouter)? pass elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) @@ -812,16 +813,19 @@ def _process_response(self, response: responses.Response) -> ModelResponse: timestamp = number_to_datetime(response.created_at) items: list[ModelResponsePart] = [] for item in response.output: - if item.type == 'reasoning': + if isinstance(item, responses.ResponseReasoningItem): + signature = item.encrypted_content for summary in item.summary: - # NOTE: We use the same id for all summaries because we can merge them on the round trip. - # The providers don't force the signature to be unique. - items.append(ThinkingPart(content=summary.text, id=item.id)) - elif item.type == 'message': + # We use the same id for all summaries so that we can merge them on the round trip. + # We only need to store the signature once. + items.append(ThinkingPart(content=summary.text, id=item.id, signature=signature)) + signature = None + # TODO: Handle gpt-oss reasoning_text: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot + elif isinstance(item, responses.ResponseOutputMessage): for content in item.content: - if content.type == 'output_text': # pragma: no branch + if isinstance(content, responses.ResponseOutputText): # pragma: no branch items.append(TextPart(content.text)) - elif item.type == 'function_call': + elif isinstance(item, responses.ResponseFunctionToolCall): items.append(ToolCallPart(item.name, item.arguments, tool_call_id=item.call_id)) return ModelResponse( parts=items, @@ -938,6 +942,7 @@ async def _responses_create( reasoning=reasoning, user=model_settings.get('openai_user', NOT_GIVEN), text=text or NOT_GIVEN, + include=['reasoning.encrypted_content'], extra_headers=extra_headers, extra_body=model_settings.get('extra_body'), ) @@ -999,7 +1004,7 @@ def _map_tool_definition(self, f: ToolDefinition) -> responses.FunctionToolParam ), } - async def _map_messages( + async def _map_messages( # noqa: C901 self, messages: list[ModelMessage] ) -> tuple[str | NotGiven, list[responses.ResponseInputItemParam]]: """Just maps a `pydantic_ai.Message` to a `openai.types.responses.ResponseInputParam`.""" @@ -1036,33 +1041,31 @@ async def _map_messages( else: assert_never(part) elif isinstance(message, ModelResponse): - # last_thinking_part_idx: int | None = None + reasoning_item: responses.ResponseReasoningItemParam | None = None for item in message.parts: if isinstance(item, TextPart): openai_messages.append(responses.EasyInputMessageParam(role='assistant', content=item.content)) elif isinstance(item, ToolCallPart): openai_messages.append(self._map_tool_call(item)) - # OpenAI doesn't return built-in tool calls elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): + # We don't currently track built-in tool calls from OpenAI pass elif isinstance(item, ThinkingPart): - # NOTE: We don't send ThinkingPart to the providers yet. If you are unsatisfied with this, - # please open an issue. The below code is the code to send thinking to the provider. - # if last_thinking_part_idx is not None: - # reasoning_item = cast(responses.ResponseReasoningItemParam, openai_messages[last_thinking_part_idx]) # fmt: skip - # if item.id == reasoning_item['id']: - # assert isinstance(reasoning_item['summary'], list) - # reasoning_item['summary'].append(Summary(text=item.content, type='summary_text')) - # continue - # last_thinking_part_idx = len(openai_messages) - # openai_messages.append( - # responses.ResponseReasoningItemParam( - # id=item.id or generate_tool_call_id(), - # summary=[Summary(text=item.content, type='summary_text')], - # type='reasoning', - # ) - # ) - pass + if reasoning_item is not None and item.id == reasoning_item['id']: + reasoning_item['summary'] = [ + *reasoning_item['summary'], + Summary(text=item.content, type='summary_text'), + ] + continue + + reasoning_item = responses.ResponseReasoningItemParam( + id=item.id or _utils.generate_tool_call_id(), + summary=[Summary(text=item.content, type='summary_text')], + # TODO: Store `provider_name` on ThinkingPart, only send back `encrypted_content` if it matches? + encrypted_content=item.signature, + type='reasoning', + ) + openai_messages.append(reasoning_item) else: assert_never(item) else: @@ -1289,7 +1292,12 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: ) elif isinstance(chunk, responses.ResponseOutputItemDoneEvent): - # NOTE: We only need this if the tool call deltas don't include the final info. + if isinstance(chunk.item, responses.ResponseReasoningItem): + # Add the signature to the part corresponding to the first summary item + yield self._parts_manager.handle_thinking_delta( + vendor_part_id=f'{chunk.item.id}-0', + signature=chunk.item.encrypted_content, + ) pass elif isinstance(chunk, responses.ResponseReasoningSummaryPartAddedEvent): diff --git a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py index b60c43cbc0..3d5eb37b5e 100644 --- a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py @@ -48,6 +48,15 @@ def bedrock_amazon_model_profile(model_name: str) -> ModelProfile | None: return profile +def bedrock_deepseek_model_profile(model_name: str) -> ModelProfile | None: + """Get the model profile for a DeepSeek model used via Bedrock.""" + profile = deepseek_model_profile(model_name) + # TODO: Test Bedrock reasoning with `deepseek.r1-v1:0` + if 'r1' in model_name: + return BedrockModelProfile(bedrock_send_back_thinking_parts=True).update(profile) + return profile + + class BedrockProvider(Provider[BaseClient]): """Provider for AWS Bedrock.""" @@ -74,7 +83,7 @@ def model_profile(self, model_name: str) -> ModelProfile | None: 'cohere': cohere_model_profile, 'amazon': bedrock_amazon_model_profile, 'meta': meta_model_profile, - 'deepseek': deepseek_model_profile, + 'deepseek': bedrock_deepseek_model_profile, } # Split the model name into parts diff --git a/pydantic_ai_slim/pyproject.toml b/pydantic_ai_slim/pyproject.toml index c4e4f727ed..a432579018 100644 --- a/pydantic_ai_slim/pyproject.toml +++ b/pydantic_ai_slim/pyproject.toml @@ -68,12 +68,12 @@ dependencies = [ logfire = ["logfire[httpx]>=3.14.1"] # Models openai = ["openai>=1.99.9"] -cohere = ["cohere>=5.16.0; platform_system != 'Emscripten'"] +cohere = ["cohere>=5.17.0; platform_system != 'Emscripten'"] vertexai = ["google-auth>=2.36.0", "requests>=2.32.2"] google = ["google-genai>=1.31.0"] anthropic = ["anthropic>=0.61.0"] groq = ["groq>=0.25.0"] -mistral = ["mistralai>=1.9.2"] +mistral = ["mistralai>=1.9.10"] bedrock = ["boto3>=1.39.0"] huggingface = ["huggingface-hub[inference]>=0.33.5"] # Tools diff --git a/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml b/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml index a3d1dc6e35..5a749506dc 100644 --- a/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +++ b/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml @@ -8,13 +8,15 @@ interactions: connection: - keep-alive content-length: - - '150' + - '192' content-type: - application/json host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user @@ -31,13 +33,15 @@ interactions: connection: - keep-alive content-length: - - '6076' + - '5958' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '21876' + - '27304' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -45,77 +49,79 @@ interactions: transfer-encoding: - chunked parsed_body: - created_at: 1745304052 + background: false + created_at: 1757110037 error: null - id: resp_680739f4ad748191bd11096967c37c8b048efc3f8b2a068e + id: resp_68bb5f153efc81a2b3958ddb1f257ff30886f4f20524f3b9 incomplete_details: null instructions: null max_output_tokens: null + max_tool_calls: null metadata: {} model: o3-mini-2025-01-31 object: response output: - - id: rs_680739fcbe148191ab03787b75642840048efc3f8b2a068e + - encrypted_content: gAAAAABou18w-tnw3PeRaIu1LZDyAtTvtsQv1IozIXwqBtTJfITgSk81Gjt11pOYwaNHQ_n9SGf5GoHvOl1Tl44pyO4bwFqyZMook1aE4lCklYVJfdInLFJbNTyu_yf8kO422Mx85-t3F9jJRfQ-SozQyVIqX7TAgK43-ltc8muzsl5hL66fWRLrKsRKex7ROd5a1EkxppflSp42KUaHzlc2Klhy9X-FxbFnB3jaB-mMbwNHblwORj79p1zwExmUBN-mtehe0UYyTlnnNRO6AwblUIhL9YV2TFBeymAQKaI9xcja2lkTNQ0NU_H3U21mGNufMyCA2LzDhspNb1S1a08rm5tfOIX676k0ZyxeTxTQ1mJZbx9YqVjWC0_x69Xw3_jOqX2E9Ipt3NJ0WWK3UkDsg8AL5-NLnsgyEk6OnxtcUpu3nknVPkk= + id: rs_68bb5f22b28c81a281be815a6b7c28ac0886f4f20524f3b9 summary: - text: |- - **Understanding street crossing instructions** + **Exploring street crossing safety** - The user wants to know how to cross the street, which seems straightforward but could be ambiguous. I see this as a request for safety instructions regarding vehicular crossing. It's essential to provide safe and clear advice but also to clarify that this is informational and not legal advice. I need to remind the user to follow local road codes as well. I want to ensure I help while being careful in my wording. + I'll provide a widely recommended list for crossing streets: First, "Stop at the curb," then "Look both ways," followed by "Listen for traffic," and finally, "Think if it's safe to cross." Additionally, I can mention waiting for a gap in traffic if there’s no signal, looking left and right twice at intersections, and avoiding distractions like mobile phones or headphones. It seems clear that asking "How do I cross the street?" is a safe and practical question. type: summary_text - - text: |- - **Providing street crossing guidance** - - It seems the user's question about crossing the street could involve personal safety instructions, so I need to be careful with my response. I can offer step-by-step advice: First, look for traffic before stepping off the curb, then check left, right, and left again. If at a crosswalk, use signals and wait for a gap in traffic. It's crucial I clarify that I'm not a substitute for professional advice and to always follow local traffic laws for safety. - type: summary_text - - text: |- - **Providing safe street crossing instructions** - - I want to emphasize the importance of using crosswalks whenever possible and being extremely cautious of traffic. Distractions, like mobile phones, can make crossing dangerous, so staying alert is essential. It's crucial to obey traffic signals, especially because rules can differ in various countries. I'll share step-by-step safe crossing instructions, beginning with finding a designated crossing point and waiting for signals. Each step will stress remaining vigilant while crossing and using caution to ensure safety. Finally, I'll clarify that these are general guidelines and I'm not a safety expert. + - text: "**Providing street crossing safety tips**\n\nIt's likely the user is asking about crossing the street safely, + so I'm going to compile clear steps along with a disclaimer that I'm not a safety professional. Here are some + general guidelines: \n\n1. Use designated crosswalks or intersections with pedestrian signals whenever possible. + \n2. Approach the curb and look for oncoming traffic, avoiding distractions like texting. \n3. Wait for the walk + signal if there is one. \n4. Look left, then right, and left again before crossing. \n5. If there are no crosswalks, + stop and look both ways before proceeding. \n6. Stay aware of turning vehicles and ensure you’re at a safe distance + from the road once across. \n\nAlways prioritize safety and seek advice if unsure about local conditions." type: summary_text - text: |- - **Giving street crossing advice** + **Giving street crossing instructions** - When crossing the street, I advise waiting for a pedestrian signal if there is one to ensure safety. If there isn't a signal, it's crucial to look left, right, and then left again to check for oncoming traffic. Cross quickly while staying aware of potential hazards. Always be cautious, even with a signal, as vehicles may turn or not yield correctly. Avoid distractions like mobile phones during this process. Lastly, I should remind the user to check local traffic laws, as I'm not an expert. + I want to remind the user that I'm not a safety professional, so it's essential to follow local traffic rules. I'll present straightforward instructions to ensure clarity, including an additional note to avoid texting or using a mobile phone while crossing. It’s important to double-check the steps and instructions for accuracy. Overall, I’m focused on providing careful instructions to help everyone cross the street safely. type: summary_text type: reasoning - content: - annotations: [] + logprobs: [] text: |- - Here are some general guidelines to help you cross the street safely. Please note that these are general tips and might need to be adapted based on your surroundings, local traffic laws, and conditions: - - 1. Before you approach the street, find a safe place to cross. Whenever possible, use a designated crosswalk, pedestrian crossing, or an intersection with traffic signals. + I'm happy to help with some general safety guidelines. However, please note that I'm not a certified traffic safety expert and local laws or conditions can vary. Always follow the rules of your specific area. Here are some general steps for crossing the street safely: - 2. If there's a pedestrian signal (a "walk" sign), wait for it to indicate that it's your turn to cross. Even when the signal shows it's safe, always stay alert for any vehicles that might not yet have stopped. + 1. Find a safe place to cross. When possible, use a designated crosswalk or intersection that has pedestrian signals or a marked crossing zone. - 3. Stand at the curb and face traffic. This allows you to see oncoming vehicles and make eye contact with drivers when possible. + 2. Stop at the curb. Before stepping off the curb, pause and eliminate distractions (like your phone or music) so you can fully focus on traffic. - 4. Look both ways: - • First, look to your left. - • Then, look to your right. - • Look left again before stepping off the curb. - This helps ensure you catch vehicles approaching from either direction, especially in countries where traffic drives on the right. (In countries where traffic drives on the left, simply reverse the order accordingly.) + 3. Check for traffic. Look in all directions: +  • First, look to the left (since traffic typically comes from that direction in many countries). +  • Then look to the right. +  • Look to the left again before stepping off. + Make sure no vehicles, bicycles, or other moving obstacles are approaching. - 5. Make sure there's a sufficient gap between vehicles before you start crossing. Even if you feel safe, take a moment to confirm that arriving vehicles are far enough away or are stopping. + 4. Observe any pedestrian signals. If there are traffic lights or a pedestrian walk signal, wait for the “Walk” sign (or green signal) before crossing. Even then, double-check that vehicles are stopping. - 6. Continue looking for oncoming traffic as you cross. Even if you're in the crosswalk, drivers may not always see you or might be turning unexpectedly. + 5. Make eye contact. If possible, try to make eye contact with drivers to confirm that they’ve seen you and are yielding if you're in a crosswalk. - 7. Avoid distractions like using your phone or wearing headphones at a high volume. Being fully alert can make a big difference in your safety. + 6. Cross at a steady pace. Once you are sure it’s safe, cross briskly and don’t run. Continue scanning for traffic as you cross. - 8. Walk at a steady pace—you don't need to run, but don't dawdle either. Keeping a consistent pace helps drivers predict your movement. + 7. Remain alert. Even while crossing, be aware of your surroundings; sometimes, vehicles may turn into the street or a distracted driver might not be expecting pedestrians. - Remember that local road rules and conditions can vary. In some areas, there may be additional safety measures (like pedestrian islands or flashing beacons) that you should take advantage of when crossing. If you're unsure about any specific local guidelines, it might be a good idea to check with local traffic authorities or community resources for further advice. + 8. If there’s no crosswalk or signal, find the spot with good visibility in both directions and cross only when you’re completely sure no vehicles are coming. - Stay safe and always be aware of your surroundings when crossing any street! + Remember, these are general recommendations. Always prioritize your safety by adapting your actions to the specific conditions of your surroundings, and consider local guidelines or traffic rules. Stay safe! type: output_text - id: msg_68073a09486c8191860c5516e97332d7048efc3f8b2a068e + id: msg_68bb5f2f841c81a2ac10a89324b670e70886f4f20524f3b9 role: assistant status: completed type: message parallel_tool_calls: true previous_response_id: null + prompt_cache_key: null reasoning: effort: high summary: detailed + safety_identifier: null service_tier: default status: completed store: true @@ -123,18 +129,20 @@ interactions: text: format: type: text + verbosity: medium tool_choice: auto tools: [] + top_logprobs: 0 top_p: 1.0 truncation: disabled usage: input_tokens: 13 input_tokens_details: cached_tokens: 0 - output_tokens: 1909 + output_tokens: 2241 output_tokens_details: - reasoning_tokens: 1472 - total_tokens: 1922 + reasoning_tokens: 1856 + total_tokens: 2254 user: null status: code: 200 @@ -148,7 +156,7 @@ interactions: connection: - keep-alive content-length: - - '4740' + - '4035' content-type: - application/json host: @@ -159,61 +167,52 @@ interactions: - content: How do I cross the street? role: user - content: + - thinking: "**Exploring street crossing safety**\n\nI'll provide a widely recommended list for crossing streets: + First, \"Stop at the curb,\" then \"Look both ways,\" followed by \"Listen for traffic,\" and finally, \"Think + if it's safe to cross.\" Additionally, I can mention waiting for a gap in traffic if there’s no signal, looking + left and right twice at intersections, and avoiding distractions like mobile phones or headphones. It seems clear + that asking \"How do I cross the street?\" is a safe and practical question.\n\n**Providing street crossing safety + tips**\n\nIt's likely the user is asking about crossing the street safely, so I'm going to compile clear steps + along with a disclaimer that I'm not a safety professional. Here are some general guidelines: \n\n1. Use designated + crosswalks or intersections with pedestrian signals whenever possible. \n2. Approach the curb and look for oncoming + traffic, avoiding distractions like texting. \n3. Wait for the walk signal if there is one. \n4. Look left, then + right, and left again before crossing. \n5. If there are no crosswalks, stop and look both ways before proceeding. + \n6. Stay aware of turning vehicles and ensure you’re at a safe distance from the road once across. \n\nAlways + prioritize safety and seek advice if unsure about local conditions.\n\n**Giving street crossing instructions**\n\nI + want to remind the user that I'm not a safety professional, so it's essential to follow local traffic rules. I'll + present straightforward instructions to ensure clarity, including an additional note to avoid texting or using + a mobile phone while crossing. It’s important to double-check the steps and instructions for accuracy. Overall, + I’m focused on providing careful instructions to help everyone cross the street safely." + type: thinking - text: |- - Here are some general guidelines to help you cross the street safely. Please note that these are general tips and might need to be adapted based on your surroundings, local traffic laws, and conditions: - - 1. Before you approach the street, find a safe place to cross. Whenever possible, use a designated crosswalk, pedestrian crossing, or an intersection with traffic signals. - - 2. If there's a pedestrian signal (a "walk" sign), wait for it to indicate that it's your turn to cross. Even when the signal shows it's safe, always stay alert for any vehicles that might not yet have stopped. - - 3. Stand at the curb and face traffic. This allows you to see oncoming vehicles and make eye contact with drivers when possible. - - 4. Look both ways: - • First, look to your left. - • Then, look to your right. - • Look left again before stepping off the curb. - This helps ensure you catch vehicles approaching from either direction, especially in countries where traffic drives on the right. (In countries where traffic drives on the left, simply reverse the order accordingly.) - - 5. Make sure there's a sufficient gap between vehicles before you start crossing. Even if you feel safe, take a moment to confirm that arriving vehicles are far enough away or are stopping. + I'm happy to help with some general safety guidelines. However, please note that I'm not a certified traffic safety expert and local laws or conditions can vary. Always follow the rules of your specific area. Here are some general steps for crossing the street safely: - 6. Continue looking for oncoming traffic as you cross. Even if you're in the crosswalk, drivers may not always see you or might be turning unexpectedly. + 1. Find a safe place to cross. When possible, use a designated crosswalk or intersection that has pedestrian signals or a marked crossing zone. - 7. Avoid distractions like using your phone or wearing headphones at a high volume. Being fully alert can make a big difference in your safety. + 2. Stop at the curb. Before stepping off the curb, pause and eliminate distractions (like your phone or music) so you can fully focus on traffic. - 8. Walk at a steady pace—you don't need to run, but don't dawdle either. Keeping a consistent pace helps drivers predict your movement. + 3. Check for traffic. Look in all directions: +  • First, look to the left (since traffic typically comes from that direction in many countries). +  • Then look to the right. +  • Look to the left again before stepping off. + Make sure no vehicles, bicycles, or other moving obstacles are approaching. - Remember that local road rules and conditions can vary. In some areas, there may be additional safety measures (like pedestrian islands or flashing beacons) that you should take advantage of when crossing. If you're unsure about any specific local guidelines, it might be a good idea to check with local traffic authorities or community resources for further advice. + 4. Observe any pedestrian signals. If there are traffic lights or a pedestrian walk signal, wait for the “Walk” sign (or green signal) before crossing. Even then, double-check that vehicles are stopping. - Stay safe and always be aware of your surroundings when crossing any street! + 5. Make eye contact. If possible, try to make eye contact with drivers to confirm that they’ve seen you and are yielding if you're in a crosswalk. - - **Understanding street crossing instructions** + 6. Cross at a steady pace. Once you are sure it’s safe, cross briskly and don’t run. Continue scanning for traffic as you cross. - The user wants to know how to cross the street, which seems straightforward but could be ambiguous. I see this as a request for safety instructions regarding vehicular crossing. It's essential to provide safe and clear advice but also to clarify that this is informational and not legal advice. I need to remind the user to follow local road codes as well. I want to ensure I help while being careful in my wording. - + 7. Remain alert. Even while crossing, be aware of your surroundings; sometimes, vehicles may turn into the street or a distracted driver might not be expecting pedestrians. - - **Providing street crossing guidance** + 8. If there’s no crosswalk or signal, find the spot with good visibility in both directions and cross only when you’re completely sure no vehicles are coming. - It seems the user's question about crossing the street could involve personal safety instructions, so I need to be careful with my response. I can offer step-by-step advice: First, look for traffic before stepping off the curb, then check left, right, and left again. If at a crosswalk, use signals and wait for a gap in traffic. It's crucial I clarify that I'm not a substitute for professional advice and to always follow local traffic laws for safety. - - - - **Providing safe street crossing instructions** - - I want to emphasize the importance of using crosswalks whenever possible and being extremely cautious of traffic. Distractions, like mobile phones, can make crossing dangerous, so staying alert is essential. It's crucial to obey traffic signals, especially because rules can differ in various countries. I'll share step-by-step safe crossing instructions, beginning with finding a designated crossing point and waiting for signals. Each step will stress remaining vigilant while crossing and using caution to ensure safety. Finally, I'll clarify that these are general guidelines and I'm not a safety expert. - - - - **Giving street crossing advice** - - When crossing the street, I advise waiting for a pedestrian signal if there is one to ensure safety. If there isn't a signal, it's crucial to look left, right, and then left again to check for oncoming traffic. Cross quickly while staying aware of potential hazards. Always be cautious, even with a signal, as vehicles may turn or not yield correctly. Avoid distractions like mobile phones during this process. Lastly, I should remind the user to check local traffic laws, as I'm not an expert. - + Remember, these are general recommendations. Always prioritize your safety by adapting your actions to the specific conditions of your surroundings, and consider local guidelines or traffic rules. Stay safe! type: text role: assistant - content: Considering the way to cross the street, analogously, how do I cross the river? role: user - model: command-r7b-12-2024 + model: command-a-reasoning-08-2025 stream: false uri: https://api.cohere.com/v2/chat response: @@ -227,11 +226,11 @@ interactions: content-type: - application/json expires: - - Thu, 01 Jan 1970 00:00:00 UTC + - Thu, 01 Jan 1970 00:00:00 GMT num_chars: - - '7193' + - '10505' num_tokens: - - '1759' + - '1092' pragma: - no-cache transfer-encoding: @@ -240,50 +239,62 @@ interactions: - Origin parsed_body: finish_reason: COMPLETE - id: 51cedafe-2e40-4941-ba6d-c364dbc356d3 + id: a7a1995c-1980-4683-8382-e8dda3598388 message: content: - - text: |- - Crossing a river can be a different challenge compared to crossing a street, and the approach to safety and navigation will vary. Here are some considerations and steps to help you cross a river safely: - - 1. **Determine the River's Characteristics:** - - **Width and Depth:** Measure or estimate the width of the river. Very wide rivers may require a boat or bridge for safe crossing. Also, assess the depth; shallow areas might be safe to wade through, while deeper sections may require a different method. - - **Current and Flow:** Understand the river's current. Strong currents can make swimming dangerous and may carry debris. Always check the flow rate and direction before attempting to cross. - - **Hazards:** Look for potential hazards like rocks, logs, or underwater obstacles that could cause injury or damage to equipment. - - 2. **Choose a Safe Crossing Method:** - - **Fording:** If the river is shallow and the current is gentle, you might be able to ford the river. This involves walking through the water, often with the help of a sturdy stick or pole for balance and support. Always test the depth and current before attempting to ford. - - **Swimming:** Swimming across a river is a challenging and potentially dangerous option. It requires strong swimming skills, endurance, and knowledge of river currents. Always swim with a buddy and be aware of your surroundings. - - **Boat or Raft:** Using a boat, raft, or even an inflatable tube can be a safe and efficient way to cross. Ensure the boat is sturdy, properly equipped, and that you have the necessary safety gear, such as life jackets and a first-aid kit. - - **Bridge or Ferry:** If available, use a bridge or a ferry service. These are typically the safest and most reliable methods for crossing a river. - - 3. **Prepare and Pack Essential Items:** - - **Life Jacket/Personal Flotation Device (PFD):** Always wear a life jacket or PFD when crossing a river, especially if swimming or using a boat. - - **First-Aid Kit:** Carry a basic first-aid kit to handle any minor injuries that might occur during the crossing. - - **Map and Compass:** Navigate the river and its surroundings with the help of a map and compass, especially if you're in an unfamiliar area. - - **Communication Device:** Have a means of communication, such as a satellite phone or a personal locator beacon, especially in remote areas. - - **Dry Clothing and Shelter:** Pack extra dry clothing and a waterproof shelter (like a tarp or tent) in case you get wet or need to wait out bad weather. - - 4. **Follow River Safety Guidelines:** - - **Stay on Marked Paths:** If there are designated river paths or trails, use them. These routes are often designed to be safer and less prone to hazards. - - **Avoid Hazards:** Be cautious of slippery rocks, strong currents, and hidden underwater obstacles. Never swim or ford in areas with known dangers. - - **Group Safety:** If crossing with others, stay together. It's easier to keep an eye on each other and provide assistance if needed. - - 5. **Be Prepared for Emergencies:** - - **Know Emergency Procedures:** Familiarize yourself with river rescue techniques and procedures. Learn how to signal for help and basic survival skills. - - **Carry Emergency Supplies:** Pack emergency supplies, including a whistle, a bright-colored cloth to signal, and a signal mirror (if available). - - **Leave a Plan:** Inform someone on the riverbank about your crossing plans, including your expected time of return. This person can raise the alarm if you don't return as scheduled. - - Remember, crossing a river can be a challenging and potentially dangerous endeavor. Always prioritize safety, and if in doubt, seek professional guidance or assistance from experienced river guides or local authorities. It's better to be over-prepared than caught off guard in a river crossing situation. + - thinking: |- + Okay, the user is asking how to cross a river, using the analogy of crossing the street. Let me start by recalling the key points from the previous response about crossing the street. The main steps were finding a safe place, checking for dangers, using designated paths, staying alert, and following signals. + + Now, applying that analogy to crossing a river. First, "finding a safe place" would translate to choosing a safe crossing point. In street terms, that's a crosswalk; for a river, it might be a bridge, ford, or a spot with shallow water. Next, "checking for dangers" on the street involves looking for traffic. For a river, the dangers could be strong currents, deep water, or obstacles like rocks. + + Using "designated paths" for streets would be like using bridges or established ferries for rivers. Staying alert while crossing a street means watching for cars; in a river, it's monitoring the water conditions and any changes in current or depth. Following signals when crossing a street could analogize to checking weather conditions or water levels before attempting a river crossing, as heavy rain might make the river more dangerous. + + I should also consider the user's possible intent. They might be looking for practical advice on river crossing, perhaps for hiking or survival situations. It's important to emphasize safety and preparation. Maybe include steps like assessing the river's speed and depth, using tools like a walking stick, crossing at an angle if necessary, and avoiding crossing during floods or high water levels. + + I need to structure the response similarly to the street crossing advice, making the analogy clear. Start with choosing a safe point, assessing risks, using established methods (like bridges), staying alert to changes, and preparing for emergencies. Also, add a strong disclaimer about the dangers of river crossing and the importance of local knowledge or professional guidance. + + Wait, should I mention specific techniques like forming a human chain or using a rope for groups? That might be useful. Also, noting the importance of not crossing alone and informing someone of your plans. Emphasizing that rivers can be unpredictable and dangerous, even if they look calm. Including tips on footwear and clothing could be helpful too. + + I need to ensure the advice is practical but also stresses caution. Maybe outline steps similar to the street crossing: 1. Choose a safe crossing point, 2. Assess the river's conditions, 3. Use bridges or ferries when available, 4. Check for hazards, 5. Cross with caution, 6. Be prepared for emergencies. Each step should mirror the street crossing steps but adapted to river-specific dangers. + + Also, consider the environment. Is the river in a wilderness area, a rural setting, or an urban area? The advice might vary slightly, but general principles apply. The key is to make the analogy clear while providing actionable and safe advice for river crossing. + type: thinking + - text: "Crossing a river safely requires careful planning and awareness of natural hazards, much like crossing a + street involves navigating traffic risks. Here's an analogy-based guide, emphasizing safety and preparedness:\n\n### + 1. **Choose a Safe Crossing Point (Like a Crosswalk)**\n - **Bridge or Ferry First:** Just as you’d use a crosswalk, + prioritize established infrastructure like bridges, ferries, or designated river crossings. These are the \"safest + routes.\"\n - **Assess Natural Fords:** If no bridge exists, look for shallow areas (fords) with slow-moving + water, smooth rocks, or gravel beds. Avoid spots with strong currents, deep pools, or obstacles like fallen trees.\n\n### + 2. **Assess Hazards (Like Checking for Traffic)**\n - **Current Speed:** Test the flow by tossing a leaf or + stick into the water. If it moves faster than a walking pace, avoid crossing.\n - **Depth and Visibility:** + Ensure water is clear and knee-deep or shallower. Murky or fast-rising water (e.g., after rain) is dangerous.\n + \ - **Obstacles:** Watch for hidden rocks, submerged logs, or uneven terrain that could cause falls.\n\n### 3. + **Prepare Your Approach (Like Waiting for the Walk Signal)**\n - **Timing Matters:** Cross during low water + levels (e.g., midday in mountainous areas where snowmelt peaks later). Avoid crossing during or after heavy rain, + as rivers swell rapidly.\n - **Group Strategy:** If crossing with others, link arms or use a rope for stability, + akin to crossing a street as a group.\n\n### 4. **Cross with Caution (Like Staying Alert to Traffic)**\n - **Angle + Upstream:** Walk at a slight angle *into* the current (not directly across) to reduce the force of the water pushing + you downstream.\n - **Use a Stick:** Carry a sturdy walking stick for balance and to probe depth ahead, similar + to how you’d stay visible to drivers.\n - **Slow and Steady:** Move deliberately, testing each step. Avoid rushing, + as slippery rocks or sudden drops are common hazards.\n\n### 5. **Emergency Readiness (Like Watching for Turning + Vehicles)**\n - **Turn Back if Unsafe:** If conditions worsen mid-crossing (e.g., rising water or fatigue), + retreat immediately. Never hesitate to abort.\n - **Hypothermia Risk:** Cold water can numb muscles quickly. + Wear quick-dry clothing and avoid cotton. If swept away, float on your back with feet pointed downstream.\n\n### + 6. **Avoid Common Mistakes**\n - **Never Cross Alone:** Always have a buddy or inform someone of your route, + just as you’d avoid isolated streets at night.\n - **Respect Wildlife:** Be mindful of animals (e.g., snakes, + otters) that may inhabit riverbanks.\n\n### Critical Disclaimer:\nRivers are dynamic and unpredictable. What seems + safe one day may become hazardous the next. **Always prioritize alternatives like bridges or waiting for safer + conditions.** If in doubt, consult local guides or park rangers—just as you’d follow traffic laws. Your safety + is paramount. \U0001F30A⚠️" type: text role: assistant usage: billed_units: - input_tokens: 954 - output_tokens: 805 + input_tokens: 431 + output_tokens: 661 tokens: - input_tokens: 1457 - output_tokens: 807 + input_tokens: 2190 + output_tokens: 1257 status: code: 200 message: OK diff --git a/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml b/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml index 4dd3951821..cf5fe8922e 100644 --- a/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +++ b/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml @@ -8,13 +8,15 @@ interactions: connection: - keep-alive content-length: - - '150' + - '192' content-type: - application/json host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user @@ -31,13 +33,15 @@ interactions: connection: - keep-alive content-length: - - '6152' + - '5323' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '22216' + - '20961' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -45,82 +49,73 @@ interactions: transfer-encoding: - chunked parsed_body: - created_at: 1745328846 + background: false + created_at: 1757111378 error: null - id: resp_68079acebbfc819189ec20e1e5bf525d0493b22e4095129c + id: resp_68bb6452990081968f5aff503a55e3b903498c8aa840cf12 incomplete_details: null instructions: null max_output_tokens: null + max_tool_calls: null metadata: {} model: o3-mini-2025-01-31 object: response output: - - id: rs_68079ad7f0588191af64f067e7314d840493b22e4095129c + - encrypted_content: gAAAAABou2RnAKfaWZBKGF2xXNQ506FNpa2FqR_wjI7tgUgfSzuLUciBWpygV2g1N0vRc1zDcMdftle-jyiTqZukyl1vfHVvm-N2z1h8h_4NEP2hML2avtzWBKsHBL76mwMAfELmPwDxmDNBVRW6xt3abZ6LrktbJuK94nygR5jNXCNMtc88VKTllk-Z1X8zUaKcGez6b_sM6JnaEf8_geW5RZ5FggugZCVkQysieguOrjyej55CDCoSqXPahmOxn2CHaCPUxACxV7gOlYOVQg5YdqWS9vO-YjuyaKvGyf5WWcpivYceH2q7tNwYhLE1BmphTMQJBb3U2pigOsTZ1sXMl1xb5_pYZ9c8-oMd3ESV3UWfFysK4ZsvoPiQ4C0votO8E1z4llA1O_kyUX3M0UgsAHCMWQ7w6jFdnC-gvSAyig77o-foVQs= + id: rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12 summary: - - text: |- - **Clarifying street crossing instructions** - - The user's question, "How do I cross the street?" seems ambiguous and might require clarification. Is this about physical crossing instructions or safety? I think it's essential to provide basic safety guidelines for pedestrians. However, there's also a chance this could be interpreted as seeking help for self-harm, so I need to respond carefully. I aim to produce a safe response that focuses on pedestrian safety. Let's ensure the guidance is clear and helpful. + - text: "**Providing crossing guidelines**\n\nWhen guiding someone on how to cross the street, it typically involves + following pedestrian safety rules. I assume the user is asking this generally, so I think important steps include + checking for pedestrian signals, standing at the curb, and waiting for the green walk sign. \n\nI’d also suggest + looking both ways multiple times to confirm it's safe and using the crosswalk if available. I want to ensure these + instructions are clear and helpful for the user’s understanding." type: summary_text - - text: |- - **Providing safe crossing instructions** - - When addressing the question "How do I cross the street?" I need to focus on pedestrian safety. It's important to provide clear guidance without jumping to any self-harm interpretations. I'll mention basic steps like using crosswalks when available, waiting for a green signal, and looking both ways before crossing. It's essential to add a disclaimer that I'm not a safety expert, but I aim to offer helpful general safety advice. Let's ensure the instructions are straightforward and practical. + - text: "**Sharing safe crossing tips**\n\nWhen crossing a busy street without marked crosswalks, I think it’s crucial + to be extra alert. I should check the user’s location and remind them that I'm not a traffic expert and to always + follow local traffic laws. \n\nSo, I’ll provide general safe crossing instructions: \n\n1. Stop at the curb or + crosswalk and check for traffic signals. \n2. Look left, right, and left again. \n3. If possible, make eye contact + with drivers. \n4. Cross quickly or use the pedestrian signal if it’s available." type: summary_text - text: |- - **Drafting pedestrian safety tips** + **Providing street crossing guidelines** - I need to provide clear guidance on safely crossing the street while including a disclaimer that I'm not a licensed safety professional. My tips will cover following local road rules, stopping at the curb, and looking for traffic. This question might seem philosophical, but I'll assume a practical approach. I'll create step-by-step instructions like assessing traffic, using crosswalks, and remaining aware of blind spots. I'll also emphasize the importance of staying alert and following pedestrian signals, all while disclosing that my advice is general and should be double-checked against local laws. - type: summary_text - - text: |- - **Preparing street crossing guidance** + I want to offer safe instructions for crossing the street. First, I’ll emphasize the importance of being visible and not making assumptions. I should clarify if the user is asking about crossing a busy street or their status as a pedestrian. I'll include a disclaimer that I’m not a traffic expert but here are some general safety guidelines: + + - Use designated crosswalks or crossing signals when available. + - Look left, right, and then left again. + - Stay alert, even with a walk signal. + - Avoid distractions and ensure vehicles have stopped completely. - I need to ensure I address different crossing scenarios, like when there isn't a clear crosswalk or if it's a busy street with or without traffic signals. My goal is to offer general guidelines to cover these situations. If the user asks, "How do I cross the street?" I can provide detailed instructions. I'll focus on creating a clear and informative text message to communicate the final answer effectively. + I’ll also remind them to consult local pedestrian safety laws. type: summary_text type: reasoning - content: - annotations: [] - text: |- - I'm not a traffic safety expert, but here are some general guidelines that many people follow when crossing a street safely. Remember that local rules and conditions might vary, so always follow local traffic laws and pay close attention to your surroundings. - - 1. Find a Designated Crossing Point - • Look for crosswalks, pedestrian signals, or marked intersections. These areas are designed for safe crossing. - • If no crosswalk is available, choose a spot where you have clear visibility of oncoming traffic in all directions. - - 2. Stop at the Curb or Edge of the Road - • Before stepping off the curb, pause to assess the situation. - • Resist the urge to step into the street immediately—this helps you avoid unpredictable traffic behavior. - - 3. Look and Listen - • Look left, then right, and left again. In some places, you might need to check right a second time depending on the flow of traffic. - • Pay attention to the sound of approaching vehicles or any signals that indicate vehicles may be turning into your path. - • Remove or lower distractions like headphones so you can be fully aware of your environment. - - 4. Follow Pedestrian Signals (if available) - • If you're at an intersection with traffic signals, wait for the "Walk" signal. - • Even when the signal is in your favor, ensure that any turning vehicles (cars or bikes) see you and are stopping. - - 5. Make Eye Contact - • If possible, make eye contact with drivers who might be turning. This can help ensure that they see you and are taking appropriate action. - - 6. Cross Quickly and Carefully - • Once you've determined that it's safe, proceed at a steady pace. - • Continue to be alert while you cross, watching for any unexpected vehicle movements. - - 7. Stay on the Sidewalk Once You've Crossed - • After reaching the other side, stick to areas designated for pedestrians rather than walking immediately back into the roadway. - - These suggestions are meant to help you think through pedestrian safety. Different regions may have additional rules or different signals, so if you're unsure, it might help to check local guidelines or ask someone familiar with the area. Stay safe! + logprobs: [] + text: "I’m not a certified traffic safety expert, but here are some general guidelines to help you cross the street + safely. Remember that local laws and conditions may vary, so always stay alert and follow any posted signs or + signals.\n\n1. Use a designated crossing point if one is available. Look for a crosswalk or pedestrian crossing + signal. \n2. If there’s a signal or button for pedestrians, press it and wait for the “walk” signal. Even if + you have the signal, remain alert and don’t assume all drivers will stop. \n3. Before stepping off the curb, + stop at the edge and look left, then right, then left again. Check for any vehicles or bicycles that might be + turning. \n4. Make eye contact with drivers if you can; this can help ensure they see you before you cross. \n5. + Once you’re sure it’s safe, cross at a steady pace. Keep looking both ways as you cross, since situations can + change quickly. \n6. Avoid distractions like texting or listening to loud music while crossing so that you can + stay aware of your surroundings.\n\nThese steps are meant to serve as a guideline for safe pedestrian behavior. + If you’re in an unfamiliar area or unsure about any local safety rules or traffic patterns, consider reviewing + local pedestrian safety resources or asking local authorities for more specific advice. Stay safe!" type: output_text - id: msg_68079ae3ee808191ad9b31642244f3340493b22e4095129c + id: msg_68bb64663d1c8196b9c7e78e7018cc4103498c8aa840cf12 role: assistant status: completed type: message parallel_tool_calls: true previous_response_id: null + prompt_cache_key: null reasoning: effort: high summary: detailed + safety_identifier: null service_tier: default status: completed store: true @@ -128,18 +123,20 @@ interactions: text: format: type: text + verbosity: medium tool_choice: auto tools: [] + top_logprobs: 0 top_p: 1.0 truncation: disabled usage: input_tokens: 13 input_tokens_details: cached_tokens: 0 - output_tokens: 1789 + output_tokens: 1616 output_tokens_details: reasoning_tokens: 1344 - total_tokens: 1802 + total_tokens: 1629 user: null status: code: 200 @@ -153,7 +150,7 @@ interactions: connection: - keep-alive content-length: - - '5019' + - '3565' content-type: - application/json host: @@ -164,64 +161,51 @@ interactions: - content: How do I cross the street? role: user - content: - - text: |- - I'm not a traffic safety expert, but here are some general guidelines that many people follow when crossing a street safely. Remember that local rules and conditions might vary, so always follow local traffic laws and pay close attention to your surroundings. - - 1. Find a Designated Crossing Point - • Look for crosswalks, pedestrian signals, or marked intersections. These areas are designed for safe crossing. - • If no crosswalk is available, choose a spot where you have clear visibility of oncoming traffic in all directions. - - 2. Stop at the Curb or Edge of the Road - • Before stepping off the curb, pause to assess the situation. - • Resist the urge to step into the street immediately—this helps you avoid unpredictable traffic behavior. - - 3. Look and Listen - • Look left, then right, and left again. In some places, you might need to check right a second time depending on the flow of traffic. - • Pay attention to the sound of approaching vehicles or any signals that indicate vehicles may be turning into your path. - • Remove or lower distractions like headphones so you can be fully aware of your environment. - - 4. Follow Pedestrian Signals (if available) - • If you're at an intersection with traffic signals, wait for the "Walk" signal. - • Even when the signal is in your favor, ensure that any turning vehicles (cars or bikes) see you and are stopping. - - 5. Make Eye Contact - • If possible, make eye contact with drivers who might be turning. This can help ensure that they see you and are taking appropriate action. - - 6. Cross Quickly and Carefully - • Once you've determined that it's safe, proceed at a steady pace. - • Continue to be alert while you cross, watching for any unexpected vehicle movements. - - 7. Stay on the Sidewalk Once You've Crossed - • After reaching the other side, stick to areas designated for pedestrians rather than walking immediately back into the roadway. - - These suggestions are meant to help you think through pedestrian safety. Different regions may have additional rules or different signals, so if you're unsure, it might help to check local guidelines or ask someone familiar with the area. Stay safe! - type: text - - text: |- - **Clarifying street crossing instructions** - - The user's question, "How do I cross the street?" seems ambiguous and might require clarification. Is this about physical crossing instructions or safety? I think it's essential to provide basic safety guidelines for pedestrians. However, there's also a chance this could be interpreted as seeking help for self-harm, so I need to respond carefully. I aim to produce a safe response that focuses on pedestrian safety. Let's ensure the guidance is clear and helpful. - type: text - - text: |- - **Providing safe crossing instructions** - - When addressing the question "How do I cross the street?" I need to focus on pedestrian safety. It's important to provide clear guidance without jumping to any self-harm interpretations. I'll mention basic steps like using crosswalks when available, waiting for a green signal, and looking both ways before crossing. It's essential to add a disclaimer that I'm not a safety expert, but I aim to offer helpful general safety advice. Let's ensure the instructions are straightforward and practical. - type: text - - text: |- - **Drafting pedestrian safety tips** - - I need to provide clear guidance on safely crossing the street while including a disclaimer that I'm not a licensed safety professional. My tips will cover following local road rules, stopping at the curb, and looking for traffic. This question might seem philosophical, but I'll assume a practical approach. I'll create step-by-step instructions like assessing traffic, using crosswalks, and remaining aware of blind spots. I'll also emphasize the importance of staying alert and following pedestrian signals, all while disclosing that my advice is general and should be double-checked against local laws. - type: text - - text: |- - **Preparing street crossing guidance** - - I need to ensure I address different crossing scenarios, like when there isn't a clear crosswalk or if it's a busy street with or without traffic signals. My goal is to offer general guidelines to cover these situations. If the user asks, "How do I cross the street?" I can provide detailed instructions. I'll focus on creating a clear and informative text message to communicate the final answer effectively. + - thinking: + - text: "**Providing crossing guidelines**\n\nWhen guiding someone on how to cross the street, it typically involves + following pedestrian safety rules. I assume the user is asking this generally, so I think important steps include + checking for pedestrian signals, standing at the curb, and waiting for the green walk sign. \n\nI’d also suggest + looking both ways multiple times to confirm it's safe and using the crosswalk if available. I want to ensure + these instructions are clear and helpful for the user’s understanding." + type: text + - text: "**Sharing safe crossing tips**\n\nWhen crossing a busy street without marked crosswalks, I think it’s crucial + to be extra alert. I should check the user’s location and remind them that I'm not a traffic expert and to always + follow local traffic laws. \n\nSo, I’ll provide general safe crossing instructions: \n\n1. Stop at the curb + or crosswalk and check for traffic signals. \n2. Look left, right, and left again. \n3. If possible, make + eye contact with drivers. \n4. Cross quickly or use the pedestrian signal if it’s available." + type: text + - text: |- + **Providing street crossing guidelines** + + I want to offer safe instructions for crossing the street. First, I’ll emphasize the importance of being visible and not making assumptions. I should clarify if the user is asking about crossing a busy street or their status as a pedestrian. I'll include a disclaimer that I’m not a traffic expert but here are some general safety guidelines: + + - Use designated crosswalks or crossing signals when available. + - Look left, right, and then left again. + - Stay alert, even with a walk signal. + - Avoid distractions and ensure vehicles have stopped completely. + + I’ll also remind them to consult local pedestrian safety laws. + type: text + type: thinking + - text: "I’m not a certified traffic safety expert, but here are some general guidelines to help you cross the street + safely. Remember that local laws and conditions may vary, so always stay alert and follow any posted signs or + signals.\n\n1. Use a designated crossing point if one is available. Look for a crosswalk or pedestrian crossing + signal. \n2. If there’s a signal or button for pedestrians, press it and wait for the “walk” signal. Even if + you have the signal, remain alert and don’t assume all drivers will stop. \n3. Before stepping off the curb, + stop at the edge and look left, then right, then left again. Check for any vehicles or bicycles that might be + turning. \n4. Make eye contact with drivers if you can; this can help ensure they see you before you cross. \n5. + Once you’re sure it’s safe, cross at a steady pace. Keep looking both ways as you cross, since situations can + change quickly. \n6. Avoid distractions like texting or listening to loud music while crossing so that you can + stay aware of your surroundings.\n\nThese steps are meant to serve as a guideline for safe pedestrian behavior. + If you’re in an unfamiliar area or unsure about any local safety rules or traffic patterns, consider reviewing + local pedestrian safety resources or asking local authorities for more specific advice. Stay safe!" type: text prefix: false role: assistant tool_calls: [] - content: Considering the way to cross the street, analogously, how do I cross the river? role: user - model: mistral-large-latest + model: magistral-medium-latest n: 1 stream: false top_p: 1.0 @@ -235,17 +219,13 @@ interactions: connection: - keep-alive content-length: - - '3153' + - '4089' content-type: - application/json - ratelimitbysize-limit: - - '5000000' - ratelimitbysize-query-cost: - - '32028' - ratelimitbysize-remaining: - - '4967972' - ratelimitbysize-reset: - - '31' + mistral-correlation-id: + - 01991c00-39eb-7fdc-aeef-2ade58b1d642 + strict-transport-security: + - max-age=15552000; includeSubDomains transfer-encoding: - chunked parsed_body: @@ -253,60 +233,63 @@ interactions: - finish_reason: stop index: 0 message: - content: |- - Crossing a river can be more complex and potentially dangerous than crossing a street, so it's important to approach this situation with caution. Here are some general guidelines, but remember that safety should always be your top priority. If a river seems too deep, too fast, or otherwise unsafe, do not attempt to cross it. + content: + - thinking: + - text: |- + **Analogizing crossing a river** + + The user is asking about crossing a river, and they mention that the street-crossing instructions were helpful. I need to think about how to safely cross a river, which is different from crossing a street but shares similarities in terms of assessing safety and taking precautions. + + **Safety considerations for crossing a river:** + + 1. **Assess the river conditions**: Just as you look both ways before crossing a street, you should check the river's depth, current, and any potential hazards. + 2. **Find a safe crossing point**: Look for shallow areas, bridges, or designated crossing points, similar to using a crosswalk. + 3. **Use appropriate gear**: Depending on the river's conditions, you might need special equipment like a rope, life jacket, or even a boat. + 4. **Check for hazards**: Be aware of rocks, strong currents, or other dangers, much like watching for traffic when crossing a street. + 5. **Cross carefully**: Move slowly and steadily, keeping your balance and being ready to react to changes in the river's flow. - 1. **Assess the River:** - - **Depth:** Determine if the river is shallow enough to wade through. If the water is above your knees, it can be difficult and dangerous to cross due to the current. - - **Flow Rate:** Pay close attention to how fast the water is moving. Even shallow water can be dangerous if the current is strong. - - **Visibility:** Clear water makes it easier to see the riverbed and any potential hazards. + **Providing instructions for crossing a river:** - 2. **Find a Safe Crossing Point:** - - Look for a wide, shallow section of the river with a gentle current. - - Avoid areas with rapids, deep pools, or steep drops. - - Bridges, fallen logs, or shallow fords are good places to consider crossing. + Given these considerations, I can provide some general guidelines for crossing a river safely. However, it's important to note that rivers can be dangerous, and the best approach depends on the specific conditions and your experience level. - 3. **Check for Hazards:** - - Look for submerged rocks, logs, or other debris that could trip you or cause you to lose your footing. - - Be aware of any wildlife that might be present, such as snakes or aggressive animals. + Here are some steps to consider: - 4. **Use a Stick or Pole:** - - A sturdy stick or pole can help you maintain balance and probe the riverbed for hidden obstacles or changes in depth. + 1. **Evaluate the river**: Check the depth, current, and any visible hazards. If the river is too deep or fast-moving, it might be unsafe to cross on foot. + 2. **Find a suitable crossing point**: Look for areas where the river is shallow and the current is slower. Bridges or designated crossing points are ideal. + 3. **Prepare appropriately**: Wear sturdy footwear with good grip and consider using a walking stick for balance. If the river is deep or fast, use a life jacket and possibly a rope for safety. + 4. **Cross carefully**: Face upstream and shuffle your feet to maintain balance. Move diagonally downstream to counteract the current. + 5. **Be cautious**: Always be prepared to turn back if conditions become unsafe. - 5. **Face Upstream:** - - When crossing, face upstream and move sideways. This helps you maintain balance against the current. + **Final thoughts:** - 6. **Take Small Steps:** - - Shuffle your feet rather than taking large steps. This helps you feel the riverbed and maintain stability. + While crossing a river shares some similarities with crossing a street, it involves different risks and requires different precautions. Always prioritize safety and consider seeking local advice or assistance if you're unsure about the conditions. + type: text + type: thinking + - text: |- + Crossing a river is quite different from crossing a street, but the principle of assessing safety and taking precautions still applies. Here are some guidelines to help you cross a river safely: - 7. **Stay Calm:** - - If you lose your footing, try to stay calm and float with the current until you can regain your balance or reach shallower water. + 1. **Assess the River**: Check the depth, current, and any potential hazards like rocks or debris. If the river is too deep or fast-moving, it might be unsafe to cross on foot. - 8. **Use a Rope (if available):** - - If you have a rope, you can secure it to a sturdy object on one side of the river and use it as a guide while crossing. + 2. **Find a Suitable Crossing Point**: Look for areas where the river is shallow and the current is slower. Bridges or designated crossing points are ideal if available. - 9. **Cross in a Group (if possible):** - - Crossing with others can provide additional support and safety. You can form a human chain by holding hands or using ropes to assist each other. + 3. **Prepare Appropriately**: Wear sturdy footwear with good grip and consider using a walking stick for balance. If the river is deep or fast, use a life jacket and possibly a rope for safety. - 10. **Dry Yourself Afterwards:** - - Once you've crossed, make sure to dry off and warm up, especially if the water was cold. Hypothermia can be a risk even in relatively warm conditions. + 4. **Cross Carefully**: Face upstream and shuffle your feet to maintain balance. Move diagonally downstream to counteract the current. - **Safety First:** - - **Never cross a river if you are unsure about your abilities or the safety of the crossing point.** - - **Always prioritize your safety and the safety of others.** - - **If in doubt, seek an alternative route or wait for conditions to improve.** + 5. **Be Cautious**: Always be prepared to turn back if conditions become unsafe. If you're unsure about the river's conditions, it's best to seek local advice or assistance. - These guidelines are meant to help you think through river crossing safety. Different rivers and conditions might require specific approaches, so always use your best judgment and prioritize safety. + Remember, rivers can be dangerous, and it's important to prioritize safety. If you're not experienced with river crossings, consider seeking guidance from someone who is familiar with the area and the river's conditions. Stay safe! + type: text role: assistant tool_calls: null - created: 1745328869 - id: a088e80a476e44edaaa959a1ff08f358 - model: mistral-large-latest + created: 1757111400 + id: 9abe8b736bff46af8e979b52334a57cd + model: magistral-medium-latest object: chat.completion usage: - completion_tokens: 691 - prompt_tokens: 1036 - total_tokens: 1727 + completion_tokens: 747 + prompt_tokens: 664 + total_tokens: 1411 status: code: 200 message: OK diff --git a/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml b/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml index 923ddff9b4..687091261a 100644 --- a/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +++ b/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml @@ -8,13 +8,15 @@ interactions: connection: - keep-alive content-length: - - '150' + - '192' content-type: - application/json host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user @@ -31,13 +33,15 @@ interactions: connection: - keep-alive content-length: - - '5918' + - '6191' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '25096' + - '23531' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -45,71 +49,81 @@ interactions: transfer-encoding: - chunked parsed_body: - created_at: 1745045557 + background: false + created_at: 1757105182 error: null - id: resp_68034835d12481919c80a7fd8dbe6f7e08c845d2be9bcdd8 + id: resp_68bb4c1e21c88195992250ee4e6c3e5506370ebbaae73d2c incomplete_details: null instructions: null max_output_tokens: null + max_tool_calls: null metadata: {} model: o3-mini-2025-01-31 object: response output: - - id: rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8 + - encrypted_content: gAAAAABou0w1oEpdb8pknfbP639LojImVwTplqv7Jstlhg4fThrffXb8inZb-Y07lVKZFNEZMDTdf19Vph1L7ndTQX7VAz3a0LnygisC0Q4WksRMcys8LTQzyQqdWMW_a95VYfypa25JkySc5lckEUXlWzE7CHxQUujBgGUSTH5jjSC5vGE2tyHDxWsyyTJDBfR8qrT0jS5r1dHw26GfOTmDko6tZpo9E-Lhei5kz_46h-ML4vWuGrdpmqSM5FSzDScs3VgGy9QEOB50OMI9BbdK-jmKUmWj5_57FwVcEb_NQxWG_evzgD2VMa5Lk1TSG45x4jT1cUdgm61gr0w8eW_ifSI7nUv3Ul-ACqND1XbPS2IBhtj5jKElqWy8QCpNkC8KuV_GVKpDMax9zDkElCAVU8Mp-srn3IGC5MB26uP2g70obRQKHy4= + id: rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c summary: - text: |- - **Providing street crossing instructions** + **Clarifying street crossing safety** - The user seems to be asking how to cross the street, which could be literal or metaphorical. I think it's best to offer clear and responsible instructions for street crossing. I'll include general safety tips, like using crosswalks and obeying traffic signals. I need to emphasize that I'm not a substitute for professional safety advice. I'll make sure to mention looking both ways and waiting for safe signals before crossing. + The user wants to know how to cross the street, which seems like a standard question about safety. I don't think they're asking for anything harmful. My response can focus on safe practices for crossing the street. I need to ensure my guidance aligns with safety guidelines, providing best practices without any danger. I'll aim to give clear instructions on how to do this safely, just like organizations recommend. type: summary_text - text: |- - **Clarifying street crossing instructions** + **Providing street crossing guidance** - The user is asking how to cross the street safely, which I'll take seriously. My response will include essential safety steps, noting that this isn't professional advice. I need to emphasize using crosswalks and waiting for the appropriate signals before crossing. I should remind the user to look both ways and remain cautious of vehicles. Additionally, I'll clarify that local laws and guidelines should be followed, ensuring a comprehensive and responsible set of instructions. + The user's question, "How do I cross the street?" prompts me to consider safety instructions for pedestrians. Thankfully, this isn't about self-harm; rather, it seems to be about safe crossing practices. I'll summarize key pedestrian safety tips like using crosswalks, looking both ways, and avoiding distractions. If there’s no dedicated crosswalk, I should encourage being cautious. Overall, I’ll ensure my response focuses on common safety guidelines, tailored for different scenarios. type: summary_text - text: |- - **Outlining street crossing safety** + **Clarifying street crossing instructions** - Step 6 involves being aware of bicyclists while crossing. I need to remind the user not to cross if they have impaired vision or hearing. This question seems to focus on pedestrian safety, and I should provide clear instructions while including a disclaimer about responsibility. I'll suggest using designated crosswalks, waiting for signals, and continuously checking for vehicles. Additionally, I'll emphasize local rules, and if there's uncertainty, wait for a clearer signal. It's essential to exercise caution and consider distractions, and I'll stress that these instructions are general advice. + I plan to provide clear instructions on safe street crossing practices. First, I’ll emphasize checking traffic lights, looking left-right-left, and remaining visible to drivers. It's important to clarify that I’m not a licensed safety instructor, so my guidance will be general. I’ll include steps like stopping at the curb, listening for traffic, and waiting until it’s clear. Additionally, I’ll note that local traffic laws vary, and it's good to consult local authorities for specific guidance. type: summary_text - text: |- - **Creating safe crossing instructions** + **Providing safe crossing steps** - I need to ensure that my instructions for crossing the street are safe and appropriate. I'll provide step-by-step guidance in bullet points to keep it clear. The steps to follow include: (i) approaching an intersection and looking for a crosswalk, (ii) waiting for a break in traffic while checking for pedestrian signals, (iii) looking left, right, and then left again, (iv) crossing when it's safe while still being aware of traffic, and (v) remaining cautious, especially on busy roads. I'll include additional notes about traffic buttons if available. + I’m crafting a clear answer about how to cross the street safely. I’ll start with a structured list of steps in plain language. I'll include key points like finding a designated crossing and checking traffic conditions. It's essential to remind the user that these are general safety guidelines, so staying alert is crucial. I'll incorporate reminders to use proper signals and always look left, right, left before crossing, ensuring my response is thorough and thoughtful. type: summary_text type: reasoning - content: - annotations: [] + logprobs: [] text: |- - I'm happy to help! Here are some general guidelines for crossing the street safely. Please keep in mind that local traffic laws and conditions may vary, so always follow any posted signs, signals, or recommendations from local authorities: + Here are some general safety guidelines for crossing a street. Please keep in mind that while these tips are widely recommended, you should always follow local traffic laws and use your best judgment based on your environment: + + 1. Before you reach the street, look for a designated crosswalk or an intersection with pedestrian crossing signals. Crossing at these locations is generally safer, as drivers expect pedestrians there. + + 2. If there’s a traffic signal or pedestrian signal, obey it. Only cross when you have a “walk” signal, and never assume it’s safe based solely on the signal—always stay alert. - 1. Find a safe place to cross. Look for a designated crosswalk or intersection with pedestrian signals. If you're not near one, choose a spot where drivers have a clear view of you and can see you from a distance. + 3. When you are at the curb or edge of the street, stop and look both ways before stepping off: +  • Look left first (for oncoming traffic), +  • Then right, +  • And finally left again, in case a vehicle is coming. + Even if you have the right of way, check to ensure all vehicles have noticed you. - 2. Wait for the proper signal. If there's a pedestrian signal, wait until it shows that it's safe to cross ("Walk" or a green figure). Even if you have the right-of-way, double-check the traffic around you before stepping off the curb. + 4. Make eye contact with drivers if possible. This can help ensure that they see you and intend to stop. - 3. Look and listen before crossing. Adopt the "Look Left, Right, Left" habit: - • Look left (toward oncoming traffic) - • Look right (ensure there's no immediate traffic) - • Look left again, as vehicles might be turning into the street from that direction - Additionally, listen for any approaching vehicles or warning sounds that could indicate vehicles are near. + 5. Avoid distractions like using mobile devices or wearing headphones at a high volume, so you can stay aware of your surroundings. - 4. Cross at a steady pace. Once you're sure it's safe, cross the street confidently and stay within the walk zone. Continue to be aware of your surroundings as you cross because sometimes drivers (especially those turning) may not expect pedestrians. + 6. Cross at a steady pace and keep looking as you cross. Be prepared to react if a driver doesn’t yield as expected. - 5. Stay alert and avoid distractions. It's best to avoid using your phone or wearing headphones at high volume while crossing so you can hear or see any potential hazards. + 7. If there isn’t a crosswalk, choose a spot where you have good visibility in all directions. Make yourself as visible as possible and wait until the road is clear before crossing. - 6. Be extra cautious at intersections without signals or crosswalks. In these cases, slow down, make eye contact with drivers if possible, and ensure that arriving vehicles have seen you before proceeding. + Safety Note: These guidelines are general recommendations. Different locations may have specific rules or additional safety features, so always be aware of local traffic patterns and laws. - Remember that these are general tips for pedestrian safety. If you have any special needs or face challenging road conditions, consider seeking advice from local transportation or pedestrian safety organizations. Stay safe out there! + By following these steps, you can help ensure that you cross the street as safely as possible. Stay safe! type: output_text - id: msg_6803484e20008191bf9ba9c29fa0f28c08c845d2be9bcdd8 + id: msg_68bb4c3407048195bdee32d86cabfd2306370ebbaae73d2c role: assistant status: completed type: message parallel_tool_calls: true previous_response_id: null + prompt_cache_key: null reasoning: effort: high summary: detailed + safety_identifier: null service_tier: default status: completed store: true @@ -117,18 +131,20 @@ interactions: text: format: type: text + verbosity: medium tool_choice: auto tools: [] + top_logprobs: 0 top_p: 1.0 truncation: disabled usage: input_tokens: 13 input_tokens_details: cached_tokens: 0 - output_tokens: 2050 + output_tokens: 1828 output_tokens_details: - reasoning_tokens: 1664 - total_tokens: 2063 + reasoning_tokens: 1472 + total_tokens: 1841 user: null status: code: 200 @@ -142,63 +158,70 @@ interactions: connection: - keep-alive content-length: - - '4747' + - '4871' content-type: - application/json cookie: - - __cf_bm=MeWm6yd0MGioe.U3TgGh5yaUktLEgNnI2ILVKPaWg4A-1745045582-1.0.1.1-K6NmWQoHfkd0nbzdNOXYSXkrbJ1Io92eI2tFQNgwjnaNDT5SHT.qyHuZmeT6ZD2RxNoBoZrLMFvqGulOvhVEAx7hMg8RaQPVD9AmazVcJ_c; - _cfuvid=n3.7dkUOBcq_XoPuavENgXlauzeGxbu3bXY4bHDK5Xk-1745045582952-0.0.1.1-604800000 + - __cf_bm=RTbEY09q38wbwetbhGM3jrhyO7pLo4pku4kd8jLi0tQ-1757105205-1.0.1.1-RP18TAofeBmbEi3.oDylKdUc_ujbxsD4DxYm74FYabWS1VfIv7t1Hysz0cYMqsuo3uZYPoKs12bG01eQCoDyXwcfZiyRPPO2y.7Oa2ksy7o; + _cfuvid=71PfXrFU9x2pkzI64MXDkQ3_RZBU9GySDKZ_C2EdQQ0-1757105205588-0.0.1.1-604800000 host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user - - content: |- - I'm happy to help! Here are some general guidelines for crossing the street safely. Please keep in mind that local traffic laws and conditions may vary, so always follow any posted signs, signals, or recommendations from local authorities: - - 1. Find a safe place to cross. Look for a designated crosswalk or intersection with pedestrian signals. If you're not near one, choose a spot where drivers have a clear view of you and can see you from a distance. - - 2. Wait for the proper signal. If there's a pedestrian signal, wait until it shows that it's safe to cross ("Walk" or a green figure). Even if you have the right-of-way, double-check the traffic around you before stepping off the curb. - - 3. Look and listen before crossing. Adopt the "Look Left, Right, Left" habit: - • Look left (toward oncoming traffic) - • Look right (ensure there's no immediate traffic) - • Look left again, as vehicles might be turning into the street from that direction - Additionally, listen for any approaching vehicles or warning sounds that could indicate vehicles are near. - - 4. Cross at a steady pace. Once you're sure it's safe, cross the street confidently and stay within the walk zone. Continue to be aware of your surroundings as you cross because sometimes drivers (especially those turning) may not expect pedestrians. - - 5. Stay alert and avoid distractions. It's best to avoid using your phone or wearing headphones at high volume while crossing so you can hear or see any potential hazards. - - 6. Be extra cautious at intersections without signals or crosswalks. In these cases, slow down, make eye contact with drivers if possible, and ensure that arriving vehicles have seen you before proceeding. - - Remember that these are general tips for pedestrian safety. If you have any special needs or face challenging road conditions, consider seeking advice from local transportation or pedestrian safety organizations. Stay safe out there! - role: assistant - - id: rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8 + - encrypted_content: gAAAAABou0w1oEpdb8pknfbP639LojImVwTplqv7Jstlhg4fThrffXb8inZb-Y07lVKZFNEZMDTdf19Vph1L7ndTQX7VAz3a0LnygisC0Q4WksRMcys8LTQzyQqdWMW_a95VYfypa25JkySc5lckEUXlWzE7CHxQUujBgGUSTH5jjSC5vGE2tyHDxWsyyTJDBfR8qrT0jS5r1dHw26GfOTmDko6tZpo9E-Lhei5kz_46h-ML4vWuGrdpmqSM5FSzDScs3VgGy9QEOB50OMI9BbdK-jmKUmWj5_57FwVcEb_NQxWG_evzgD2VMa5Lk1TSG45x4jT1cUdgm61gr0w8eW_ifSI7nUv3Ul-ACqND1XbPS2IBhtj5jKElqWy8QCpNkC8KuV_GVKpDMax9zDkElCAVU8Mp-srn3IGC5MB26uP2g70obRQKHy4= + id: rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c summary: - text: |- - **Providing street crossing instructions** + **Clarifying street crossing safety** - The user seems to be asking how to cross the street, which could be literal or metaphorical. I think it's best to offer clear and responsible instructions for street crossing. I'll include general safety tips, like using crosswalks and obeying traffic signals. I need to emphasize that I'm not a substitute for professional safety advice. I'll make sure to mention looking both ways and waiting for safe signals before crossing. + The user wants to know how to cross the street, which seems like a standard question about safety. I don't think they're asking for anything harmful. My response can focus on safe practices for crossing the street. I need to ensure my guidance aligns with safety guidelines, providing best practices without any danger. I'll aim to give clear instructions on how to do this safely, just like organizations recommend. type: summary_text - text: |- - **Clarifying street crossing instructions** + **Providing street crossing guidance** - The user is asking how to cross the street safely, which I'll take seriously. My response will include essential safety steps, noting that this isn't professional advice. I need to emphasize using crosswalks and waiting for the appropriate signals before crossing. I should remind the user to look both ways and remain cautious of vehicles. Additionally, I'll clarify that local laws and guidelines should be followed, ensuring a comprehensive and responsible set of instructions. + The user's question, "How do I cross the street?" prompts me to consider safety instructions for pedestrians. Thankfully, this isn't about self-harm; rather, it seems to be about safe crossing practices. I'll summarize key pedestrian safety tips like using crosswalks, looking both ways, and avoiding distractions. If there’s no dedicated crosswalk, I should encourage being cautious. Overall, I’ll ensure my response focuses on common safety guidelines, tailored for different scenarios. type: summary_text - text: |- - **Outlining street crossing safety** + **Clarifying street crossing instructions** - Step 6 involves being aware of bicyclists while crossing. I need to remind the user not to cross if they have impaired vision or hearing. This question seems to focus on pedestrian safety, and I should provide clear instructions while including a disclaimer about responsibility. I'll suggest using designated crosswalks, waiting for signals, and continuously checking for vehicles. Additionally, I'll emphasize local rules, and if there's uncertainty, wait for a clearer signal. It's essential to exercise caution and consider distractions, and I'll stress that these instructions are general advice. + I plan to provide clear instructions on safe street crossing practices. First, I’ll emphasize checking traffic lights, looking left-right-left, and remaining visible to drivers. It's important to clarify that I’m not a licensed safety instructor, so my guidance will be general. I’ll include steps like stopping at the curb, listening for traffic, and waiting until it’s clear. Additionally, I’ll note that local traffic laws vary, and it's good to consult local authorities for specific guidance. type: summary_text - text: |- - **Creating safe crossing instructions** + **Providing safe crossing steps** - I need to ensure that my instructions for crossing the street are safe and appropriate. I'll provide step-by-step guidance in bullet points to keep it clear. The steps to follow include: (i) approaching an intersection and looking for a crosswalk, (ii) waiting for a break in traffic while checking for pedestrian signals, (iii) looking left, right, and then left again, (iv) crossing when it's safe while still being aware of traffic, and (v) remaining cautious, especially on busy roads. I'll include additional notes about traffic buttons if available. + I’m crafting a clear answer about how to cross the street safely. I’ll start with a structured list of steps in plain language. I'll include key points like finding a designated crossing and checking traffic conditions. It's essential to remind the user that these are general safety guidelines, so staying alert is crucial. I'll incorporate reminders to use proper signals and always look left, right, left before crossing, ensuring my response is thorough and thoughtful. type: summary_text type: reasoning + - content: |- + Here are some general safety guidelines for crossing a street. Please keep in mind that while these tips are widely recommended, you should always follow local traffic laws and use your best judgment based on your environment: + + 1. Before you reach the street, look for a designated crosswalk or an intersection with pedestrian crossing signals. Crossing at these locations is generally safer, as drivers expect pedestrians there. + + 2. If there’s a traffic signal or pedestrian signal, obey it. Only cross when you have a “walk” signal, and never assume it’s safe based solely on the signal—always stay alert. + + 3. When you are at the curb or edge of the street, stop and look both ways before stepping off: +  • Look left first (for oncoming traffic), +  • Then right, +  • And finally left again, in case a vehicle is coming. + Even if you have the right of way, check to ensure all vehicles have noticed you. + + 4. Make eye contact with drivers if possible. This can help ensure that they see you and intend to stop. + + 5. Avoid distractions like using mobile devices or wearing headphones at a high volume, so you can stay aware of your surroundings. + + 6. Cross at a steady pace and keep looking as you cross. Be prepared to react if a driver doesn’t yield as expected. + + 7. If there isn’t a crosswalk, choose a spot where you have good visibility in all directions. Make yourself as visible as possible and wait until the road is clear before crossing. + + Safety Note: These guidelines are general recommendations. Different locations may have specific rules or additional safety features, so always be aware of local traffic patterns and laws. + + By following these steps, you can help ensure that you cross the street as safely as possible. Stay safe! + role: assistant - content: Considering the way to cross the street, analogously, how do I cross the river? role: user model: o3-mini @@ -214,13 +237,15 @@ interactions: connection: - keep-alive content-length: - - '6450' + - '8161' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '24185' + - '26376' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -228,73 +253,99 @@ interactions: transfer-encoding: - chunked parsed_body: - created_at: 1745045583 + background: false + created_at: 1757105207 error: null - id: resp_6803484f19a88191b9ea975d7cfbbe8408c845d2be9bcdd8 + id: resp_68bb4c373f6c819585afac2acfadeede06370ebbaae73d2c incomplete_details: null instructions: null max_output_tokens: null + max_tool_calls: null metadata: {} model: o3-mini-2025-01-31 object: response output: - - id: rs_68034858dc588191bc3a6801c23e728f08c845d2be9bcdd8 + - encrypted_content: gAAAAABou0xRTvLgbozxGo185xE13eh4o744IrqtT9hL74oSZAjyYAvblWCBmkh-VQf4q9sXqRaWKimoLSA4UF2RGaM6yRKE0OVMzE_3AzH3_zCWrNqTj48riaY4l9gUsbgm2wNp56yKnaEmSMBjg9ntDy5fiQweuTYFCjhdR-UlBd--AB5sYFILWzS0KJqmcRFNAz3RqGsT9KlggcOtduN_CeIYrb-2hzwogN79hy-FR4vUUUAFWit8LC3vFokQ_rpdzUf992jYk_7C_oTbJGN9HB1YxTxM8QFhsYqj3Ib-47U-rARnzm5NcK14A4oSZnopKD2kIve00dIhtxeTsHrh6wgOvbS_wFS54Dxsz3DdfWJX5sSCLVWdYFBGAhYN9Nnn4RVXOp8oOE4O08TCm7ykffPtIdX1pXrSzEtE8axa5dHfCuOKelw= + id: rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c summary: - - text: |- - **Exploring river crossing analogy** - - The user's question seems playful, comparing crossing a street to crossing a river. I think it might be humorous while still needing some real safety advice. Just like for street crossing, I could mention to evaluate conditions for the river, such as water level and obstacles. However, I need to tread carefully, as river crossings can be much more dangerous than they seem. Balancing humor with safety in the answer will be important! + - text: "**Evaluating river crossing advice**\n\nI’m working through how to answer the question, \"How do I cross + the river?\" \n\nIt's important to think about context. This could be a request for safe pedestrian instructions + or something more dangerous. The phrasing makes me think it's akin to crossing the street, but river crossings + may require more complex guidance.\n\nI should emphasize safety and suggest seeking professional help while providing + general guidelines for crossing a river safely." + type: summary_text + - text: "**Assessing river crossing safety**\n\nI need to determine if the question about crossing the river suggests + a dangerous activity rather than self-harm. While it could be metaphorical, it likely isn't. \n\nI remember my + earlier advice for street crossing, which includes looking both ways and being cautious. For river crossing, it's + essential to evaluate the current and conditions first. \n\nI should focus on safety by checking for bridges, + assessing the depth and speed of the water, and considering other safe crossing methods, like stepping stones + or a raft. Always, local guidelines and wearing a life jacket are critical." type: summary_text - text: |- **Providing river crossing guidelines** - I want to give some practical advice for safely crossing a river. Key points include evaluating the water's depth and speed, looking for designated crossing points like bridges, and ensuring local conditions are safe. It's essential to use proper methods, like finding a bridge or boat. I should also clarify that I'm not a certified expert, so consulting professionals for serious situations is wise. Overall, my guidelines will emphasize safety in a friendly, helpful way while keeping things lighthearted! + I should emphasize safety when discussing how to cross a river. It's crucial not to attempt it alone if you’re unsure. The user’s question likens it to crossing a street, so I can draw parallels while providing specific river crossing instructions. + + I would suggest steps like checking for safe crossing points, assessing river conditions, wearing flotation equipment if necessary, and communicating with someone about my route. I also need to note that I’m not a water safety expert, emphasizing common sense and caution, especially when conditions could be dangerous. type: summary_text - text: |- - **Providing cautious river crossing guidance** + **Clarifying river crossing safety** - I can stress that while the guidelines for crossing a river might seem similar to crossing a street, the risks are significantly higher. It's important not to assume that what's safe on a road is automatically safe for a river. I'll include a disclaimer about not being a safety expert and emphasize consulting professionals for hazardous conditions. I'll structure the answer with bullet points, including key instructions for safely choosing designated crossings like bridges. The wording will be clear and straightforward! + I need to adjust my tone when comparing crossing a street to crossing a river because rivers have different hazards. It's crucial to clarify that while some steps might be similar, dangerous conditions can change everything. I want to emphasize safety, so I'll add a disclaimer: "I am not a professional water safety expert; always consult expert guidelines before attempting such crossings." + + Then, I’ll provide a list of safe instructions while ensuring that I’m being cautious and clear about the differences in hazards. type: summary_text type: reasoning - content: - annotations: [] + logprobs: [] text: |- - While crossing a river might seem analogous in concept to crossing a street, it's important to recognize that water environments are inherently more dynamic and hazardous than predictable road conditions. That said, here are some guidelines that parallel the careful approach you'd take when crossing a street: + Crossing a river safely can be much more challenging than crossing a street because water presents additional hazards. Although the general idea of “checking your path and being cautious” is similar, here are some guidelines you might consider before attempting to cross a river: + + 1. Identify a Safe Crossing Point +  • Just as you look for a crosswalk or pedestrian signal on a street, first determine if there’s an established or designed way to cross the river. This could be a bridge, ferry, or a well-traveled ford. +  • If such a crossing exists, use it. Designed crossings have been engineered to handle the hazards of water. - 1. Plan Your Route and Choose a Designated Crossing Point - • Just as you'd look for a crosswalk or an intersection when crossing a street, look for a safe, well-known crossing point over the river. This might be a bridge, a ford (a shallow place to cross), or a series of stepping stones. - • Avoid random or unmarked spots where the river narrows or looks deceptively calm. + 2. Assess the River Conditions +  • Evaluate the water’s depth, width, speed, and temperature. A shallow, slow-moving part of the river is usually safer than a deep or rapidly flowing section. +  • Look for visible hazards such as underwater rocks, debris, or slippery riverbanks. Unlike a street where cars tend to follow predictable routes, water conditions can change unexpectedly. - 2. Evaluate Conditions Before You Approach - • Whereas you'd check for oncoming traffic and pedestrian signals at a street, observe the river's conditions before you cross. Is the water fast-moving or deep? Are there hazards like rocks, sudden drop-offs, or debris? - • Consider weather conditions, recent rainfall, and time of day, as these can affect both water levels and current strength. + 3. Prepare and Gear Up +  • Wear appropriate footwear that provides good traction and protects your feet from sharp objects. +  • Consider using a personal flotation device (life jacket) especially if the current is strong or if you’re not a confident swimmer. +  • If you need extra support, consider using a sturdy stick or a rope (secured on both sides) as an aid—similar to making eye contact with drivers or checking for clear signals when crossing a street. - 3. Prepare with the Right Gear and Skills - • When crossing a street, you rely mainly on your alertness and the right-of-way signals. For a river, ensure you're equipped appropriately—wear sturdy, non-slip footwear, and if necessary, use a life jacket or personal flotation device. - • Only attempt a river crossing on foot if you're confident in your balance and if the water's depth and current are truly manageable. In many cases, using a boat or waiting for a safer condition is a much better choice. + 4. Test the Landing Zones +  • Before fully committing, test both banks gently to ensure they are stable and not too slippery. +  • Just as you check both sides of a street to be sure it’s clear, make sure you have a secure place to land and that the riverbank won’t give way under your weight. - 4. Proceed Cautiously, Step by Step - • In a street crossing, you look both ways before stepping off the curb. On a river, take your time and cross slowly while constantly reassessing conditions. If wading, test the water with your foot first and maintain a steady pace. - • Avoid distractions and stay alert to sudden changes in water flow or unexpected obstacles. + 5. Cross with Caution +  • If the water isn’t too deep and conditions look favorable, cross slowly. Keep your body as low as feasible for balance and stability. +  • Always be aware of changes in the current or unexpected obstacles, much as you would look out for unexpected vehicles when crossing the street. +  • If the conditions change while you’re crossing (for example, a surge in current), retreat if possible. - 5. Have a Contingency Plan - • Just as you'd stop and wait at a street if the signal hasn't changed, be prepared to back out if conditions deteriorate. Let someone know your plan and expected route, and if you're uncertain, consider waiting for assistance or finding an alternate crossing. - • In remote or unpredictable river environments, it's crucial to have a method of communication like a cell phone or a whistle in case you need help. + 6. Don’t Go It Alone +  • If you’re unfamiliar with the area or the river conditions, crossing with a friend or someone experienced can be safer. +  • Let someone know your plan and estimated arrival time on the other side, analogous to letting someone know when you’re going out on the street. - 6. Know Your Limits - • It's similar to knowing when to wait for a break in traffic. Assess your own abilities and the risks involved. If the conditions seem too dangerous—even if a crossing point is technically available—it's best not to risk it. When in doubt, seek local advice or professional help. + Important Reminders: +  • Rivers can be unpredictable—what seems safe one moment might quickly become hazardous. If in doubt, don’t force the crossing. +  • These suggestions are for general informational purposes only. They are not a substitute for professional advice from water safety experts or local authorities. +  • In many cases, it’s best to use established infrastructure or get local guidance rather than attempting an unsupervised crossing. - Remember, these are general guidelines and not a substitute for professional advice, especially when dealing with natural hazards. Crossing a river safely requires careful consideration of factors that don't come into play when crossing a street. Always prioritize your safety and, if ever unsure, reach out for help or choose an alternative route. + By taking the time to assess the situation and plan carefully—much like one would check for traffic signals and clear paths before crossing a street—you can reduce the risks associated with crossing a river. Always prioritize personal safety and don’t hesitate to seek help or choose an alternative route if conditions are uncertain. type: output_text - id: msg_68034865ac18819189215b3a2e33cb4e08c845d2be9bcdd8 + id: msg_68bb4c5050608195983c2aa46ef8556a06370ebbaae73d2c role: assistant status: completed type: message parallel_tool_calls: true previous_response_id: null + prompt_cache_key: null reasoning: effort: high summary: detailed + safety_identifier: null service_tier: default status: completed store: true @@ -302,18 +353,20 @@ interactions: text: format: type: text + verbosity: medium tool_choice: auto tools: [] + top_logprobs: 0 top_p: 1.0 truncation: disabled usage: - input_tokens: 424 + input_tokens: 394 input_tokens_details: cached_tokens: 0 - output_tokens: 2033 + output_tokens: 2196 output_tokens_details: - reasoning_tokens: 1408 - total_tokens: 2457 + reasoning_tokens: 1536 + total_tokens: 2590 user: null status: code: 200 diff --git a/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml b/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml index c221d54092..26c4a4c46d 100644 --- a/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +++ b/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml @@ -8,13 +8,15 @@ interactions: connection: - keep-alive content-length: - - '149' + - '191' content-type: - application/json host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user @@ -28,1942 +30,2302 @@ interactions: body: string: |+ event: response.created - data: {"type":"response.created","sequence_number":0,"response":{"id":"resp_68b76f88d55481a0ae465635af30a42d01b59cf192cc16cf","object":"response","created_at":1756852104,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} + data: {"type":"response.created","sequence_number":0,"response":{"id":"resp_68bb4cbe885481a3a55b6a2e6d6aa5120b681c5350c0b73b","object":"response","created_at":1757105342,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} event: response.in_progress - data: {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_68b76f88d55481a0ae465635af30a42d01b59cf192cc16cf","object":"response","created_at":1756852104,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} + data: {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_68bb4cbe885481a3a55b6a2e6d6aa5120b681c5350c0b73b","object":"response","created_at":1757105342,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} event: response.output_item.added - data: {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","type":"reasoning","summary":[]}} + data: {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","type":"reasoning","encrypted_content":"gAAAAABou0zJdJ1CiGNIGLJJrH9FHiEPOuu5MzpIwotC5-sncfV0JmPwxtMflq_1sfF56JZrnssvvqeg9RRDnUUjtYI69sAFSqEl5k5t4c5nqknO1Hg1sP4aSesigJzO10vA-0ZAP3oZ7FWUamkaUKAK4x7B9oq-xaH6vhk6CzdQPD2GV0UP3p1437S1KLz5hpXjxjC2mf0v5Gcj6nzF05ce5FI9gGl0qxSJBKRLQwWTwVaQ6WVQDH1BdM6XVaVv8iygNMplF2sV8PQhIn5qdbDxPo-SfQur4h3oU9BoidmWFr0tkKqIDo_bGhPuak2gHu7_JBZvoCL8Qprl1camMUDpyZPApe51ZyhH3MyBG-fTkvw6ZT_cyx79WXYSk1iBhjHGDRIG6bDTtQqnAuNK_m7GhTQgP0Mr1nkg7TulBWrFwQXApiBzKfI=","summary":[]}} event: response.reasoning_summary_part.added - data: {"type":"response.reasoning_summary_part.added","sequence_number":3,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"part":{"type":"summary_text","text":""}} + data: {"type":"response.reasoning_summary_part.added","sequence_number":3,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"part":{"type":"summary_text","text":""}} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":4,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"**Providing","obfuscation":"7nXoh"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":4,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":"**Providing","obfuscation":"XwIu9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":5,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" street","obfuscation":"FuwvZsO5Z"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":5,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" safe","obfuscation":"gVxsVnEXZg8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":6,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"-cross","obfuscation":"xw4eonx1Nj"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":6,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" crossing","obfuscation":"SCFLIb3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":7,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"ing","obfuscation":"n9l9oODAk8hPk"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":7,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" instructions","obfuscation":"udI"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":8,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" advice","obfuscation":"gBvqAPesH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":8,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":"**\n\nI'll","obfuscation":"jqb5jizW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":9,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"**\n\nThe","obfuscation":"JOJ5OzQ2K"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":9,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" first","obfuscation":"xCOIIseVs5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":10,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" user","obfuscation":"vyuk0Uws5Mg"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":10,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" remind","obfuscation":"Cqp4mNoss"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":11,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" is","obfuscation":"C3NzRNitm3p11"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":11,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" myself","obfuscation":"SktSRzOgn"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":12,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" asking","obfuscation":"TSFwvkSsH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":12,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" to","obfuscation":"UAdnrvTy7wWKZ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":13,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" how","obfuscation":"pwgrZrXcsCSt"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":13,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" follow","obfuscation":"U08zTC6VF"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":14,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" to","obfuscation":"a0e2Y2rBDY5ui"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":14,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" local","obfuscation":"wE9NLtEHhX"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":15,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" cross","obfuscation":"Iob2b9emED"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":15,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" guidelines","obfuscation":"jopBn"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":16,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" the","obfuscation":"zmqVaCNUUipQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":16,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" and","obfuscation":"sIiVUkcTTUO7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":17,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" street","obfuscation":"XYVKGIWmd"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":17,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" consult","obfuscation":"DZ1WvmKF"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":18,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":",","obfuscation":"LRbZjb064GvfWc0"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":18,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" a","obfuscation":"zAB2VC2Yt2ptNJ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":19,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" which","obfuscation":"pPSoYaZ0ne"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":19,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" professional","obfuscation":"Fji"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":20,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" likely","obfuscation":"IrPmfZQT7"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":20,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" if","obfuscation":"ikkTF8kdfQgVP"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":21,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" means","obfuscation":"a6wiPXN4hb"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":21,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" I'm","obfuscation":"WnVmeCmO7vmo"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":22,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" they","obfuscation":"WTRRTsu2tR6"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":22,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" unsure","obfuscation":"HBoLLEKkB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":23,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" want","obfuscation":"QDFU5H1BPiA"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":23,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":".","obfuscation":"vPM8eKGqILHsoqE"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":24,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" safe","obfuscation":"240Ga3doFk2"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":24,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" To","obfuscation":"CVouJw1C4DwTC"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":25,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" instructions","obfuscation":"i3c"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":25,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" cross","obfuscation":"7VJhekB0Hj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":26,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":".","obfuscation":"sPzUYBhuU72asYr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":26,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" the","obfuscation":"NxiM4gXQ34tU"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":27,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" It","obfuscation":"TcuTHkEXHW11U"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":27,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" street","obfuscation":"oyMsA8KxK"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":28,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"’s","obfuscation":"e4VC2o5dSZoIXE"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":28,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" safely","obfuscation":"S1i5esj4r"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":29,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" important","obfuscation":"Ft8GaB"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":29,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":",","obfuscation":"UCk07uWdiGqUxY0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":30,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" that","obfuscation":"zunylrzaYps"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":30,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" I","obfuscation":"XHdX8ib8s0HXi3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":31,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"bF8UQP6Hr3R9P5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":31,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":"’ll","obfuscation":"ZOgLK0NSuKG6B"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":32,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" analyze","obfuscation":"FXfGJcsV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":32,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" note","obfuscation":"DI9AQ5BKtug"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":33,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" potential","obfuscation":"WQ9TGM"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":33,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" a","obfuscation":"VaXzSlAc4QpgZv"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":34,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" risks","obfuscation":"QM323nGYBo"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":34,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" few","obfuscation":"iL1WUhwpYSkH"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":35,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" and","obfuscation":"mjHUecJhQyAO"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":35,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" key","obfuscation":"DqPmBAikQvZ7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":36,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" ensure","obfuscation":"78HphedfL"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":36,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" points","obfuscation":"y7Oq9xNiS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":37,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" the","obfuscation":"goqpcUS4oiUQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":37,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":":","obfuscation":"3XNrtjZyDPiAkuo"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":38,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" guidelines","obfuscation":"VHNm4"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":38,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" always","obfuscation":"oQ9LU4BVt"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":39,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"v1wadXgMCLtR95"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":39,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" look","obfuscation":"Zc5Jp3XuIrh"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":40,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" give","obfuscation":"TBLQUaD6UTF"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":40,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" left","obfuscation":"ne4fO9w4N6K"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":41,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" are","obfuscation":"z5D8G7kidAgu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":41,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":",","obfuscation":"LTP5Zxd1NXpeDt3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":42,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" safe","obfuscation":"Xqjog1eD6y7"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":42,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" right","obfuscation":"SMo7V2HeRJ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":43,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":".","obfuscation":"syU8cyksPmf1qzj"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":43,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":",","obfuscation":"5861wvw5rxAJLj9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":44,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"DLgfnJl8l5z7uR"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":44,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" and","obfuscation":"WNOQqOtxLDht"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":45,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" should","obfuscation":"KWauFdfL2"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":45,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" then","obfuscation":"cs87Sjtvvdp"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":46,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" include","obfuscation":"sb2bFEqy"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":46,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" left","obfuscation":"dy2f8sgZWl2"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":47,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" real","obfuscation":"j1nZcTdJkWw"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":47,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" again","obfuscation":"kcjpWhXk46"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":48,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"-world","obfuscation":"ZrtSO7kHKu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":48,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" before","obfuscation":"yO0MHxwjJ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":49,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" safety","obfuscation":"zYj8GDgAI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":49,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" moving","obfuscation":"7KCXLp2T2"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":50,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" tips","obfuscation":"jtvcBOn2jqD"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":50,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":";","obfuscation":"yOIjQPQklByVcox"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":51,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" and","obfuscation":"899942wyOIAd"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":51,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" wait","obfuscation":"HXOxNHhBBvj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":52,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" be","obfuscation":"moJFt4FZKLW84"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":52,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" for","obfuscation":"Y7g5DOGNbzHW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":53,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" cautious","obfuscation":"YjVdKKN"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":53,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" a","obfuscation":"fv7O0kYiK7ZA2e"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":54,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" in","obfuscation":"f3hv4KntAujfp"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":54,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" gap","obfuscation":"ZVkCNtcvwBzU"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":55,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" my","obfuscation":"MmRaycmpBaYJe"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":55,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" in","obfuscation":"wdVQy8kbvyM7P"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":56,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" response","obfuscation":"Uirv4Ir"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":56,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" traffic","obfuscation":"u3TF72ms"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":57,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":".","obfuscation":"bsGbgQPldaWgjCi"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":57,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":";","obfuscation":"OZlG2bsPLKyU7AI"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":58,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"reJHNWXMEIcuky"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":58,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" and","obfuscation":"rY0yPJNmCEgY"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":59,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" also","obfuscation":"fhnFmWGjkqc"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":59,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" use","obfuscation":"5d3dVTaXRutp"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":60,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" want","obfuscation":"JANd9HxSJPu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":60,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" cross","obfuscation":"lLe9shJypB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":61,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" to","obfuscation":"VKpBl2ikaGMTx"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":61,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":"walk","obfuscation":"GfjLecb1iEBB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":62,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" make","obfuscation":"1VKL5BxJSLv"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":62,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":"s","obfuscation":"f82APE5eJgKf7Zq"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":63,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" sure","obfuscation":"87e2hVTRCKJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":63,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" when","obfuscation":"azNiCUtL1W7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":64,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" to","obfuscation":"EP3rbCFY7WrN7"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":64,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" possible","obfuscation":"azzjtCM"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":65,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" clarify","obfuscation":"DdUqVJ1C"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":65,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":".","obfuscation":"xrybhyrux6oKGj7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":66,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" that","obfuscation":"7Q09gtw9vtA"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":66,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" My","obfuscation":"6UEqzgwy477uW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":67,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"fK2Ew9iPXT2OrO"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":67,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" message","obfuscation":"O3ewNihS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":68,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"’m","obfuscation":"9ji6MjOX6tRfDr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":68,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" will","obfuscation":"XHNUPyBtnP7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":69,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" not","obfuscation":"PMVjXSvkb9Ze"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":69,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" include","obfuscation":"sKDamgEf"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":70,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" a","obfuscation":"ItQ7bsbxX8dtrJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":70,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" these","obfuscation":"7DDZCIIKOy"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":71,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" traffic","obfuscation":"yqKQpeVW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":71,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" instructions","obfuscation":"DAD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":72,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" safety","obfuscation":"B6yCvYvti"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":72,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" clearly","obfuscation":"tswLUGNV"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":73,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" expert","obfuscation":"ETPImYn0n"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":73,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":",","obfuscation":"SmXBmogoJb06eki"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":74,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":".","obfuscation":"yHsgzDRoqy7U1Bc"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":74,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" emphasizing","obfuscation":"edRF"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":75,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" I","obfuscation":"5PbxcwJwlIHI64"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":75,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" the","obfuscation":"QmRQbote3KFf"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":76,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":"’ll","obfuscation":"OYiT5lXZLUfOv"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":76,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" importance","obfuscation":"rHKXS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":77,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" lay","obfuscation":"oCYxh8JLP0R5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":77,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" of","obfuscation":"dbYWZYil5pKRn"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":78,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" out","obfuscation":"R2N6tS5UiDit"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":78,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" checking","obfuscation":"TYcponf"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":79,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" clear","obfuscation":"zsUyBK3Wk9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":79,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" for","obfuscation":"pXfxSEWOCAyp"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":80,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" steps","obfuscation":"PuGmpoPAGC"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":80,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" vehicles","obfuscation":"ehwBbPv"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":81,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" for","obfuscation":"SZobD6DGtDNQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":81,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" and","obfuscation":"lX5pDLx8P4YC"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":82,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" crossing","obfuscation":"HuDyTvJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":82,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" waiting","obfuscation":"53YKvM2A"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":83,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" the","obfuscation":"sUOQDSMylIpU"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":83,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" for","obfuscation":"jHJwaTbooMDU"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":84,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" street","obfuscation":"Pj3u5Xg6G"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":84,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" pedestrian","obfuscation":"e1Jik"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":85,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":" safely","obfuscation":"e9sWW2AwZ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":85,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" signals","obfuscation":"vqOdu0CO"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":86,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"delta":".","obfuscation":"VysBcHk1a85kR4k"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":86,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" before","obfuscation":"alWKPpQjN"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":87,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":" crossing","obfuscation":"gAZHgGM"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":88,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"delta":".","obfuscation":"MeqCdeN7KR4eUPu"} event: response.reasoning_summary_text.done - data: {"type":"response.reasoning_summary_text.done","sequence_number":87,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"text":"**Providing street-crossing advice**\n\nThe user is asking how to cross the street, which likely means they want safe instructions. It’s important that I analyze potential risks and ensure the guidelines I give are safe. I should include real-world safety tips and be cautious in my response. I also want to make sure to clarify that I’m not a traffic safety expert. I’ll lay out clear steps for crossing the street safely."} + data: {"type":"response.reasoning_summary_text.done","sequence_number":89,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"text":"**Providing safe crossing instructions**\n\nI'll first remind myself to follow local guidelines and consult a professional if I'm unsure. To cross the street safely, I’ll note a few key points: always look left, right, and then left again before moving; wait for a gap in traffic; and use crosswalks when possible. My message will include these instructions clearly, emphasizing the importance of checking for vehicles and waiting for pedestrian signals before crossing."} event: response.reasoning_summary_part.done - data: {"type":"response.reasoning_summary_part.done","sequence_number":88,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":0,"part":{"type":"summary_text","text":"**Providing street-crossing advice**\n\nThe user is asking how to cross the street, which likely means they want safe instructions. It’s important that I analyze potential risks and ensure the guidelines I give are safe. I should include real-world safety tips and be cautious in my response. I also want to make sure to clarify that I’m not a traffic safety expert. I’ll lay out clear steps for crossing the street safely."}} + data: {"type":"response.reasoning_summary_part.done","sequence_number":90,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":0,"part":{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI'll first remind myself to follow local guidelines and consult a professional if I'm unsure. To cross the street safely, I’ll note a few key points: always look left, right, and then left again before moving; wait for a gap in traffic; and use crosswalks when possible. My message will include these instructions clearly, emphasizing the importance of checking for vehicles and waiting for pedestrian signals before crossing."}} event: response.reasoning_summary_part.added - data: {"type":"response.reasoning_summary_part.added","sequence_number":89,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"part":{"type":"summary_text","text":""}} + data: {"type":"response.reasoning_summary_part.added","sequence_number":91,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"part":{"type":"summary_text","text":""}} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":90,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"**Providing","obfuscation":"ILjtD"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":92,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":"**Creating","obfuscation":"bNL1br"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":91,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" safe","obfuscation":"zTr1eOKy0PE"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":93,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" pedestrian","obfuscation":"m7Djs"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":92,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" crossing","obfuscation":"s4eA1ut"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":94,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" safety","obfuscation":"iCn7eP0Ca"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":93,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" instructions","obfuscation":"9nW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":95,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" instructions","obfuscation":"7TA"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":94,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"**\n\nI","obfuscation":"h7QhkAp7Qr9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":96,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":"**\n\nTo","obfuscation":"NykZjgDWKF"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":95,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" need","obfuscation":"rhrGCtumjEu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":97,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" cross","obfuscation":"OooG0nPF3f"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":96,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" to","obfuscation":"LXXhh7pPbRDgh"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":98,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" the","obfuscation":"fyT1KvtymIyj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":97,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" give","obfuscation":"rhHCVomPzpn"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":99,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" street","obfuscation":"nSB9oaLW8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":98,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" clear","obfuscation":"mUTDrMES08"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":100,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" safely","obfuscation":"LH94sld1s"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":99,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" instructions","obfuscation":"QNT"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":101,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"2gJB0FLkFQQOXh6"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":100,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" for","obfuscation":"CIlMuI4VJJEQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":102,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" I","obfuscation":"ao7DNESYjyTe44"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":101,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" crossing","obfuscation":"4lKaj7o"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":103,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":"’ll","obfuscation":"khkA7ZRtPVbHD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":102,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" the","obfuscation":"Bpn8PUQN5BJ9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":104,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" share","obfuscation":"mhblhdaZwj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":103,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" street","obfuscation":"MjquYGZxA"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":105,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" important","obfuscation":"bT8q33"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":104,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" safely","obfuscation":"JvfcZWO8G"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":106,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" steps","obfuscation":"BE4jDnMLeL"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":105,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":".","obfuscation":"5BKMoTdx3CpJw6Q"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":107,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"SSKTf78mQmJ6Nd0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":106,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" While","obfuscation":"tsJFp1q3kV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":108,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" First","obfuscation":"iolmq39bcs"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":107,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" it","obfuscation":"rkOTY6rSNd2Hn"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":109,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"KnbwVVJlx0VTPE0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":108,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" might","obfuscation":"RC59MCOcHR"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":110,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" always","obfuscation":"zZVKB17vL"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":109,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" seem","obfuscation":"NWUhY510j8g"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":111,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" find","obfuscation":"3I5wri7jt9z"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":110,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" trivial","obfuscation":"XRWGYOse"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":112,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" a","obfuscation":"B0l06u4y8alCP2"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":111,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"lE5nwMNUVqD1ynp"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":113,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" designated","obfuscation":"DgUOk"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":112,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" it","obfuscation":"hqCvSrEgGAxFU"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":114,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" crossing","obfuscation":"3KlAX0x"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":113,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"’s","obfuscation":"Ca4dGcA54jtL9c"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":115,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" area","obfuscation":"2eCr5Y2E8xW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":114,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" important","obfuscation":"JkMQIZ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":116,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"qisIMuj9SVUvX9F"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":115,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" to","obfuscation":"NM9HjaOTsGshr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":117,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" If","obfuscation":"PuhD5UuLHMpCm"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":116,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" ensure","obfuscation":"xzifqgG9l"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":118,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" there's","obfuscation":"XLz4qJhM"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":117,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" I","obfuscation":"V0qewHu3gMiSak"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":119,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" a","obfuscation":"XlhDDQlDKRhBui"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":118,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"’m","obfuscation":"gefyljFSeBKWRZ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":120,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" traffic","obfuscation":"0ujlyTdo"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":119,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" providing","obfuscation":"CKwaRa"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":121,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" light","obfuscation":"qiC4huI77G"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":120,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" useful","obfuscation":"ZqfXNiQmY"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":122,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"YO7JaQYUKJzZtta"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":121,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" guidance","obfuscation":"VNAePWx"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":123,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" wait","obfuscation":"zrDBjejdZSq"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":122,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":".","obfuscation":"myQ7nNSmtkFJPaL"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":124,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" for","obfuscation":"hpGJlT8KqFZE"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":123,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" I","obfuscation":"OsjzchvapVNSwG"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":125,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" the","obfuscation":"bziEwG0AoIPz"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":124,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" should","obfuscation":"KElQYZ2FX"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":126,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" green","obfuscation":"AeK5GNticn"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":125,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" include","obfuscation":"M504LozX"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":127,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" pedestrian","obfuscation":"XMEwJ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":126,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" basic","obfuscation":"AdybFCGdpI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":128,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" signal","obfuscation":"eKbEUTnZD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":127,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" advice","obfuscation":"MekCtM2zl"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":129,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"qykLg36TTGU0CNC"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":128,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" like","obfuscation":"00lKsEiL4Le"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":130,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" Before","obfuscation":"9Mah1izC3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":129,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" finding","obfuscation":"zmZMEmQp"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":131,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" stepping","obfuscation":"CPLNdwi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":130,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" a","obfuscation":"lOCW4s56jbO14C"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":132,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" off","obfuscation":"qyZ4O1TTSVtE"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":131,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" cross","obfuscation":"QzmeD53i2F"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":133,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"VrFF2pMYZ0cjbp7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":132,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"walk","obfuscation":"XoXQCDkhEcYd"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":134,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" look","obfuscation":"QyfyLObZgsj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":133,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"ZqmnyAxWw8sV5fs"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":135,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" left","obfuscation":"1CtEr0EycXj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":134,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" following","obfuscation":"WBa7gS"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":136,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"RJ0hZXpJgyWqZV4"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":135,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" traffic","obfuscation":"615Vp2LM"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":137,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" right","obfuscation":"71yABci4bP"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":136,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" signals","obfuscation":"4kocWTrJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":138,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"BWbRMq22eJqJPQl"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":137,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"PWDLAVi5rJPUBZQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":139,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" and","obfuscation":"pGiYPWIo9YeJ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":138,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" and","obfuscation":"qlwK6mIviqmX"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":140,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" left","obfuscation":"CVtD5jXegsR"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":139,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" being","obfuscation":"aMTGG4tmy1"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":141,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" again","obfuscation":"ZigcP0re2P"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":140,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" aware","obfuscation":"Ke53ZmAGdW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":142,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" to","obfuscation":"5vIVMoQbv4qav"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":141,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" of","obfuscation":"FxSHlQzzJbotR"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":143,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" check","obfuscation":"LVGourdxt8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":142,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" vehicles","obfuscation":"fyBLFCt"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":144,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" for","obfuscation":"BbIrLNuaCHV8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":143,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":".","obfuscation":"IYy2axcPgcA8cyU"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":145,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" vehicles","obfuscation":"by2WLb3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":144,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" Key","obfuscation":"48Li2BQOXjQ4"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":146,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"pCKeWCArHZqkJZr"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":145,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" steps","obfuscation":"ZNHfnJVn6Z"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":147,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" While","obfuscation":"NPgtOZ47hq"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":146,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" include","obfuscation":"BktIMRpV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":148,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" crossing","obfuscation":"sS9VwB3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":147,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" \"","obfuscation":"Z1lMbhetOHF0Uy"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":149,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"PQHVL2urkavOQNE"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":148,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":"stop","obfuscation":"xtDs6PbElw3x"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":150,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" move","obfuscation":"e0y3weASONm"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":149,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"xjkLAPuaZHriOhi"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":151,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" at","obfuscation":"47LW6xNImlNs5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":150,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" look","obfuscation":"crWemP33GaJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":152,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" a","obfuscation":"viqikmcbOtaKs6"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":151,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"wxFyE8c1PyG2oWd"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":153,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" steady","obfuscation":"TYER3uvvO"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":152,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" listen","obfuscation":"S72Od0sOs"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":154,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" pace","obfuscation":"OdSfQawOMou"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":153,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",\"","obfuscation":"N4wUEaQkKAl4fn"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":155,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" and","obfuscation":"wrAeuujqHxug"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":154,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" and","obfuscation":"jBpNCnq35sii"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":156,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" stay","obfuscation":"RKgn7fqKhbe"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":155,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" remembering","obfuscation":"PMNi"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":157,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" alert","obfuscation":"a61XkobSwN"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":156,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" to","obfuscation":"JooVXFIDLanUL"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":158,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"dqRd5WJ4RSCGqv8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":157,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" check","obfuscation":"LuOAUWtFNM"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":159,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" After","obfuscation":"WnxtTiy6RY"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":158,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" left","obfuscation":"Yo2seUCGk8u"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":160,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" reaching","obfuscation":"xxkB0K5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":159,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"i3LhmhQmYyPhR6V"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":161,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" the","obfuscation":"iED0pzpFy7A5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":160,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" right","obfuscation":"AIjQDI9Cgi"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":162,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" other","obfuscation":"pFamoWS94L"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":161,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"WeESXp4c2fqAPij"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":163,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" side","obfuscation":"q8z1lePLcEk"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":162,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" and","obfuscation":"SEInUYnQNIpI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":164,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"h0BQf7LkFMGKQhi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":163,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" left","obfuscation":"9fvNqugV2H6"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":165,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" wait","obfuscation":"5Q4n2EWdrbv"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":164,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" again","obfuscation":"TJ8PYJCP3B"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":166,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" for","obfuscation":"MLgLzfRwV1WX"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":165,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" before","obfuscation":"GE8rHXxZD"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":167,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" a","obfuscation":"j0yRcJxNQJylTX"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":166,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" crossing","obfuscation":"94UzAvj"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":168,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" gap","obfuscation":"KqVPWqqccUuA"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":167,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":".","obfuscation":"Ym33iyW89VolrrW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":169,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" if","obfuscation":"uhvon6mj6cw30"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":168,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" It's","obfuscation":"s4d61bbYZpT"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":170,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" needed","obfuscation":"qmZgH53yt"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":169,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" also","obfuscation":"S3cIvTLjqX9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":171,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"pcJClh7Mn47tPNW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":170,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" necessary","obfuscation":"naol0U"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":172,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" I","obfuscation":"l0L1XMj9fM7Vo9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":171,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" to","obfuscation":"HV9SEmT2SuDpC"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":173,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":"’ll","obfuscation":"Ge36ZWgZifH24"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":172,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" state","obfuscation":"MdUkrgnVM8"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":174,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" add","obfuscation":"aumYyqAq5ZVl"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":173,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" that","obfuscation":"go7I2QPRTo3"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":175,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" that","obfuscation":"mHxAFRS5ARG"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":174,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" I'm","obfuscation":"ARDAURYNiaFw"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":176,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" this","obfuscation":"g21znTdORdo"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":175,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" not","obfuscation":"nfyNd2o0lTml"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":177,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" guidance","obfuscation":"M9SsB5a"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":176,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" a","obfuscation":"aZvfv1uScLcjGH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":178,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" is","obfuscation":"oDM6LxL1Mul0G"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":177,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" traffic","obfuscation":"voVRjCYh"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":179,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" general","obfuscation":"EMeIYwWi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":178,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" safety","obfuscation":"y2WtkxJxW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":180,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" and","obfuscation":"3QjSjaWSoKTi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":179,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" expert","obfuscation":"bJbM0pvX0"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":181,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" may","obfuscation":"GgY2q0uAmXq9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":180,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":",","obfuscation":"LykHDMNvhRtvc2d"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":182,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" not","obfuscation":"dXuzotk1E9to"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":181,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" and","obfuscation":"NQRBnULmHJpN"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":183,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" apply","obfuscation":"yUgH3RtSzm"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":182,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" local","obfuscation":"U0V8RUqv0s"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":184,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" to","obfuscation":"AKTnFOKUo5Bwr"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":183,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" guidelines","obfuscation":"Zz5XF"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":185,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" all","obfuscation":"qS3HIYj5mJQf"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":184,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" should","obfuscation":"RV0VlvlWo"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":186,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" situations","obfuscation":"gII1U"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":185,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" be","obfuscation":"7uFYWZ0CPHHe3"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":187,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":",","obfuscation":"i6SMeIBjvBWUAll"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":186,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" consulted","obfuscation":"nZx3ev"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":188,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" so","obfuscation":"d0ytxYrL7KsrN"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":187,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" for","obfuscation":"AEb0sB6SHL4F"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":189,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" being","obfuscation":"cpa1cqjUFW"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":188,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" specific","obfuscation":"x59Xuq5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":190,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" aware","obfuscation":"Mkj08y5Gnf"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":189,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":" circumstances","obfuscation":"vk"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":191,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" is","obfuscation":"53tRobabVMSLY"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":190,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"delta":".","obfuscation":"m5532ohIxKszKLr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":192,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":" crucial","obfuscation":"hmLv4OeM"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":193,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"delta":".","obfuscation":"mrvDDMIhj9hxlmQ"} event: response.reasoning_summary_text.done - data: {"type":"response.reasoning_summary_text.done","sequence_number":191,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"text":"**Providing safe crossing instructions**\n\nI need to give clear instructions for crossing the street safely. While it might seem trivial, it’s important to ensure I’m providing useful guidance. I should include basic advice like finding a crosswalk, following traffic signals, and being aware of vehicles. Key steps include \"stop, look, listen,\" and remembering to check left, right, and left again before crossing. It's also necessary to state that I'm not a traffic safety expert, and local guidelines should be consulted for specific circumstances."} + data: {"type":"response.reasoning_summary_text.done","sequence_number":194,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"text":"**Creating pedestrian safety instructions**\n\nTo cross the street safely, I’ll share important steps. First, always find a designated crossing area. If there's a traffic light, wait for the green pedestrian signal. Before stepping off, look left, right, and left again to check for vehicles. While crossing, move at a steady pace and stay alert. After reaching the other side, wait for a gap if needed. I’ll add that this guidance is general and may not apply to all situations, so being aware is crucial."} event: response.reasoning_summary_part.done - data: {"type":"response.reasoning_summary_part.done","sequence_number":192,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":1,"part":{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI need to give clear instructions for crossing the street safely. While it might seem trivial, it’s important to ensure I’m providing useful guidance. I should include basic advice like finding a crosswalk, following traffic signals, and being aware of vehicles. Key steps include \"stop, look, listen,\" and remembering to check left, right, and left again before crossing. It's also necessary to state that I'm not a traffic safety expert, and local guidelines should be consulted for specific circumstances."}} + data: {"type":"response.reasoning_summary_part.done","sequence_number":195,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":1,"part":{"type":"summary_text","text":"**Creating pedestrian safety instructions**\n\nTo cross the street safely, I’ll share important steps. First, always find a designated crossing area. If there's a traffic light, wait for the green pedestrian signal. Before stepping off, look left, right, and left again to check for vehicles. While crossing, move at a steady pace and stay alert. After reaching the other side, wait for a gap if needed. I’ll add that this guidance is general and may not apply to all situations, so being aware is crucial."}} event: response.reasoning_summary_part.added - data: {"type":"response.reasoning_summary_part.added","sequence_number":193,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"part":{"type":"summary_text","text":""}} + data: {"type":"response.reasoning_summary_part.added","sequence_number":196,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"part":{"type":"summary_text","text":""}} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":197,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"**Providing","obfuscation":"JwNLG"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":198,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"fHwR7Kx"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":199,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" instructions","obfuscation":"uVr"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":200,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"**\n\nI","obfuscation":"GX4ImRMO5zY"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":201,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"’ll","obfuscation":"plIyH3RCz4I3g"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":202,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" make","obfuscation":"E8KXu4mTDs1"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":203,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" clear","obfuscation":"RYqpXif93q"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":204,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" that","obfuscation":"aDisun7G30k"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":205,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" I","obfuscation":"z5Z2Ws0bRnbqrk"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":206,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"’m","obfuscation":"oglVNfTA0wTUgK"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":207,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" not","obfuscation":"DnDTWvyMmZik"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":208,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" an","obfuscation":"Ph9vPRiYtFa8t"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":194,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"**Providing","obfuscation":"jRRCy"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":209,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" official","obfuscation":"ImMmYYM"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":195,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" safe","obfuscation":"ugmD6gumFO9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":210,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" traffic","obfuscation":"Wkgm0Go0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":196,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"L2BbgEl"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":211,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" expert","obfuscation":"KxEAOqiFR"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":197,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" steps","obfuscation":"9SaSaZQYIt"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":212,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" and","obfuscation":"iFVT38j0TjdD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":198,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"**\n\nI","obfuscation":"vfVGHSWlxVA"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":213,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" suggest","obfuscation":"RdWFmBDj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":199,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" need","obfuscation":"cR5pADchybI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":214,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" consulting","obfuscation":"eQIeY"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":200,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" to","obfuscation":"w3q6DigUMiQ4d"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":215,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" local","obfuscation":"yxXAkWbVt8"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":201,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" provide","obfuscation":"F1cmnTpJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":216,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" guidelines","obfuscation":"fYIEz"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":202,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" clear","obfuscation":"CBhfL0EiSH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":217,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" for","obfuscation":"tjAYXgKnbnH5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":203,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" instructions","obfuscation":"Goc"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":218,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" personalized","obfuscation":"JYw"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":204,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" for","obfuscation":"aKxWrnWMFWpV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":219,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" advice","obfuscation":"LDUTdcaUV"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":205,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"QFVdThn"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":220,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"Blv99Z9JQBqWFFr"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":206,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" the","obfuscation":"XsiAJx7SSWqu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":221,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" My","obfuscation":"0GsjeRuJBorAA"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":207,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" street","obfuscation":"ycKOTDWaG"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":222,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" final","obfuscation":"8mpErfSX3z"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":208,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" safely","obfuscation":"G7RUPcWwE"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":223,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" answer","obfuscation":"BRZjLceqg"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":209,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":".","obfuscation":"NsOF782YR7oFj2g"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":224,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" will","obfuscation":"YOfHhbqmDpI"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":210,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" First","obfuscation":"gUmt1Y2Whc"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":225,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" include","obfuscation":"Ht6PRmvp"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":211,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":",","obfuscation":"sHth7AozwLL9HbH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":226,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" step","obfuscation":"fXRJOs9EtLY"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":212,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" I","obfuscation":"Oszc6PU9dpRvEW"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":227,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"-by","obfuscation":"Ndq3Q7L2o9QEs"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":213,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"’ll","obfuscation":"aR1EXuvqJZsT0"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":228,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"-step","obfuscation":"L7rJIhS6ev0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":214,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" list","obfuscation":"6cT1NcpN97O"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":229,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" instructions","obfuscation":"M9N"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":215,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" essential","obfuscation":"EEcqHs"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":230,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":":","obfuscation":"5e0xhXkatag9QSL"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":216,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" steps","obfuscation":"txtKWVuHk1"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":231,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" \n\n1","obfuscation":"O9jeS0gUeUIr"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":217,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":",","obfuscation":"LfIwkRk4J31BW2W"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":232,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"ql7BpwpYIZ9lZb4"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":218,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" like","obfuscation":"8LAbqA5p9A1"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":233,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" Use","obfuscation":"zEO48MsO5ggo"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":219,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" using","obfuscation":"uFkX9kGQ5y"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":234,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" a","obfuscation":"8u0v9KkZMAuZg5"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":220,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" cross","obfuscation":"qCcFsqFy2H"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":235,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" cross","obfuscation":"I7XTkWg6CN"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":221,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"walk","obfuscation":"PToeZXOfzQU0"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":236,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"walk","obfuscation":"HDesKD3CeO14"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":222,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"s","obfuscation":"mpiEXLhaJfuXDK9"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":237,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" if","obfuscation":"qQyjMoY1UhXJM"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":223,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" and","obfuscation":"Dz2MxZKoQBf5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":238,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" it","obfuscation":"f9hLhnukx4Gk7"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":224,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" checking","obfuscation":"AAbOQ99"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":239,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"’s","obfuscation":"NgiJgxC2MixG6M"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":225,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" traffic","obfuscation":"n36n5ntr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":240,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" available","obfuscation":"yCyaMS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":226,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" signals","obfuscation":"h1cYMCi6"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":241,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"qEsC1aaS50aWTyR"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":227,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":".","obfuscation":"93Ir57bihxQzgpg"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":242,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"\n2","obfuscation":"tNbH9jxCvh9D9e"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":228,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" I","obfuscation":"RKwv7sWEuovbtj"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":243,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"AA9WxVyVj9MYIag"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":229,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" must","obfuscation":"xwpVZnXCS3A"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":244,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" Wait","obfuscation":"Ys2C1SaJvTd"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":230,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" emphasize","obfuscation":"03JOpU"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":245,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" for","obfuscation":"MRlDK3rD1Xbj"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":231,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" safety","obfuscation":"P06KqgUGg"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":246,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" the","obfuscation":"Dgz27adrzTI1"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":232,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" by","obfuscation":"aCUwnysMrnkrz"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":247,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" proper","obfuscation":"MCykVAnlZ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":233,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" advising","obfuscation":"w3NoL14"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":248,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" signal","obfuscation":"2geUyjCv4"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":234,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" people","obfuscation":"Wrz75MQKa"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":249,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" before","obfuscation":"UxxU18QmH"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":235,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" to","obfuscation":"62NDnSfLKpQiX"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":250,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"OVTQhO0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":236,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" stop","obfuscation":"dDEBgo66Fzp"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":251,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"YFd0VGBiL5evZw9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":237,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" and","obfuscation":"Uox5ejsGErmS"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":252,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"\n3","obfuscation":"wdsKjKqAweviwK"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":238,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" look","obfuscation":"PrXvsI7AVyQ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":253,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"7wu3yp2a8FTOPTg"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":239,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" left","obfuscation":"0C9ajfaiHKz"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":254,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" Look","obfuscation":"s0KQModuxMU"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":240,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":",","obfuscation":"bHjtsdvivWlGXDw"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":255,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" left","obfuscation":"69788LVlqad"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":241,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" right","obfuscation":"yMRIvTz18Z"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":256,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":",","obfuscation":"vHXNh8UwRfuNWG0"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":242,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":",","obfuscation":"6BCDjKe5teW4z2m"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":257,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" right","obfuscation":"jz5jxtz7iQ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":243,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" and","obfuscation":"K46V786Ky5m5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":258,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":",","obfuscation":"iTQD6oVeRYtJHld"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":244,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" then","obfuscation":"QDnBNgo9jHL"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":259,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" and","obfuscation":"5zMCG4ehqWtw"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":245,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" left","obfuscation":"q195cSPJgZO"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":260,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" left","obfuscation":"oV2XlcYCinH"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":246,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" again","obfuscation":"I9Slm6gWN7"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":261,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" again","obfuscation":"pQTMRptpyS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":247,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" before","obfuscation":"fz5RnoZJ2"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":262,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" to","obfuscation":"sr4UjoVS45SY1"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":248,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"rfMAlTi"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":263,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" ensure","obfuscation":"JBSEcDKmG"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":249,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":".","obfuscation":"d6pAoyr4YEJY8j5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":264,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" it's","obfuscation":"YjoH1DNG7Hc"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":250,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" It","obfuscation":"bIlMmvqiT7J8i"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":265,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" safe","obfuscation":"B6JOgXCnfvb"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":251,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"’s","obfuscation":"4WMog6XtYih7on"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":266,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"i40AyGqzzKn9TaZ"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":252,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" crucial","obfuscation":"zyzbCuHr"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":267,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"\n4","obfuscation":"kftjJdW6Z42Puv"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":253,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" to","obfuscation":"E6tAdbSDxmmfu"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":268,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"TbHVmH4YXdd9Ghq"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":254,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" note","obfuscation":"CjGP3gNGX40"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":269,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" Continue","obfuscation":"4dSIUup"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":255,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" that","obfuscation":"U3Ip72DwtMx"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":270,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" crossing","obfuscation":"h1Py3o1"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":256,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" I","obfuscation":"4Vf4wyYQGOkovk"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":271,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" if","obfuscation":"YjdLFWdu7OviI"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":257,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"’m","obfuscation":"cJEz5PAfr97V5r"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":272,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" no","obfuscation":"8zqZ4QEF7oTUg"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":258,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" not","obfuscation":"BUfmdi46U2km"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":273,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" vehicles","obfuscation":"67j6g4f"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":259,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" a","obfuscation":"IT6JdPfemRpu7R"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":274,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" are","obfuscation":"GAUehUCAvW5V"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":260,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" safety","obfuscation":"YiBghAgqJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":275,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" approaching","obfuscation":"ApIS"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":261,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" expert","obfuscation":"7FvVSxAVI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":276,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"MA3phr35lfYzoU4"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":262,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" and","obfuscation":"3JESBeKSOKpA"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":277,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"\n5","obfuscation":"k8TfYBbO3j5gxD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":263,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" to","obfuscation":"LARQcIMnAUgjR"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":278,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"gaU1sniXd4OZAKB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":264,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" follow","obfuscation":"YNE3ChkI8"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":279,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" If","obfuscation":"8QPVcibepQsej"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":265,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" local","obfuscation":"prNcVbLW6p"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":280,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" there's","obfuscation":"U8HM6vjq"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":266,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" guidelines","obfuscation":"x9OKp"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":281,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" no","obfuscation":"6yhlJxfS5leEb"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":267,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":".","obfuscation":"daEKLEX5TKLdEN7"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":282,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" cross","obfuscation":"cXTBaPPKLn"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":268,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" I","obfuscation":"i5HwZCJOGHcxik"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":283,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"walk","obfuscation":"ljqZk42BbGF9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":269,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":"’ll","obfuscation":"UhXS9KzvxMt7I"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":284,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":",","obfuscation":"ABYbG5b6fkhruKi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":270,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" highlight","obfuscation":"jSRdkK"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":285,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" choose","obfuscation":"evXrwKnRG"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":271,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" the","obfuscation":"e3MaiDDf7vTH"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":286,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" a","obfuscation":"NIOjWwgTDw9c5y"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":272,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" importance","obfuscation":"7eOuT"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":287,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" safe","obfuscation":"gZO2H6qT2OC"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":273,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" of","obfuscation":"5shsP5UWIZEHV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":288,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" spot","obfuscation":"iffOqejSvSh"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":274,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" avoiding","obfuscation":"XosBOTl"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":289,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" to","obfuscation":"lw5XiGRjKYigU"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":275,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" distractions","obfuscation":"Yjq"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":290,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" cross","obfuscation":"j9LT4r7gzP"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":276,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":",","obfuscation":"Bt8KgqVWJsxQCMB"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":291,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"Xr8wa0KqFgRLkg9"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":277,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" and","obfuscation":"2TxemMjxp0Ph"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":292,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"\n\nI","obfuscation":"5fcF3qrqZWcwi"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":278,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" wearing","obfuscation":"N0aYcuLI"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":293,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":"’ll","obfuscation":"yMy6hhBWK6YL3"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":279,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" bright","obfuscation":"TQ2wjqnZ0"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":294,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" share","obfuscation":"lZe0ivqGiB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":280,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" clothing","obfuscation":"9Kd7nlJ"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":295,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" this","obfuscation":"k5Kq8iBSrvt"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":281,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" at","obfuscation":"n2Zjd7e6zemLV"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":296,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" in","obfuscation":"9MljplBvr631x"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":282,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" night","obfuscation":"oZUM16cV6Y"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":297,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" clear","obfuscation":"oxiyVvp1vB"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":283,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" for","obfuscation":"0w2EZtx00xk2"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":298,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":",","obfuscation":"ydJYxAd0PbgXoxy"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":284,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" better","obfuscation":"4r8bQf69m"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":299,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" plain","obfuscation":"yB3HSeUEDD"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":285,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":" visibility","obfuscation":"4jgaL"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":300,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" text","obfuscation":"goOps5CtyFR"} event: response.reasoning_summary_text.delta - data: {"type":"response.reasoning_summary_text.delta","sequence_number":286,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"delta":".","obfuscation":"XFN9LOK8lPJ3wi5"} + data: {"type":"response.reasoning_summary_text.delta","sequence_number":301,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" for","obfuscation":"sWP2RoDj1cSM"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":302,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" easy","obfuscation":"CEoGUcjrqDD"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":303,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":" understanding","obfuscation":"uL"} + + event: response.reasoning_summary_text.delta + data: {"type":"response.reasoning_summary_text.delta","sequence_number":304,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"delta":".","obfuscation":"xQlYf0vqomUHkHq"} event: response.reasoning_summary_text.done - data: {"type":"response.reasoning_summary_text.done","sequence_number":287,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"text":"**Providing safe crossing steps**\n\nI need to provide clear instructions for crossing the street safely. First, I’ll list essential steps, like using crosswalks and checking traffic signals. I must emphasize safety by advising people to stop and look left, right, and then left again before crossing. It’s crucial to note that I’m not a safety expert and to follow local guidelines. I’ll highlight the importance of avoiding distractions, and wearing bright clothing at night for better visibility."} + data: {"type":"response.reasoning_summary_text.done","sequence_number":305,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"text":"**Providing crossing instructions**\n\nI’ll make clear that I’m not an official traffic expert and suggest consulting local guidelines for personalized advice. My final answer will include step-by-step instructions: \n\n1. Use a crosswalk if it’s available.\n2. Wait for the proper signal before crossing.\n3. Look left, right, and left again to ensure it's safe.\n4. Continue crossing if no vehicles are approaching.\n5. If there's no crosswalk, choose a safe spot to cross.\n\nI’ll share this in clear, plain text for easy understanding."} event: response.reasoning_summary_part.done - data: {"type":"response.reasoning_summary_part.done","sequence_number":288,"item_id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","output_index":0,"summary_index":2,"part":{"type":"summary_text","text":"**Providing safe crossing steps**\n\nI need to provide clear instructions for crossing the street safely. First, I’ll list essential steps, like using crosswalks and checking traffic signals. I must emphasize safety by advising people to stop and look left, right, and then left again before crossing. It’s crucial to note that I’m not a safety expert and to follow local guidelines. I’ll highlight the importance of avoiding distractions, and wearing bright clothing at night for better visibility."}} + data: {"type":"response.reasoning_summary_part.done","sequence_number":306,"item_id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","output_index":0,"summary_index":2,"part":{"type":"summary_text","text":"**Providing crossing instructions**\n\nI’ll make clear that I’m not an official traffic expert and suggest consulting local guidelines for personalized advice. My final answer will include step-by-step instructions: \n\n1. Use a crosswalk if it’s available.\n2. Wait for the proper signal before crossing.\n3. Look left, right, and left again to ensure it's safe.\n4. Continue crossing if no vehicles are approaching.\n5. If there's no crosswalk, choose a safe spot to cross.\n\nI’ll share this in clear, plain text for easy understanding."}} event: response.output_item.done - data: {"type":"response.output_item.done","sequence_number":289,"output_index":0,"item":{"id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","type":"reasoning","summary":[{"type":"summary_text","text":"**Providing street-crossing advice**\n\nThe user is asking how to cross the street, which likely means they want safe instructions. It’s important that I analyze potential risks and ensure the guidelines I give are safe. I should include real-world safety tips and be cautious in my response. I also want to make sure to clarify that I’m not a traffic safety expert. I’ll lay out clear steps for crossing the street safely."},{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI need to give clear instructions for crossing the street safely. While it might seem trivial, it’s important to ensure I’m providing useful guidance. I should include basic advice like finding a crosswalk, following traffic signals, and being aware of vehicles. Key steps include \"stop, look, listen,\" and remembering to check left, right, and left again before crossing. It's also necessary to state that I'm not a traffic safety expert, and local guidelines should be consulted for specific circumstances."},{"type":"summary_text","text":"**Providing safe crossing steps**\n\nI need to provide clear instructions for crossing the street safely. First, I’ll list essential steps, like using crosswalks and checking traffic signals. I must emphasize safety by advising people to stop and look left, right, and then left again before crossing. It’s crucial to note that I’m not a safety expert and to follow local guidelines. I’ll highlight the importance of avoiding distractions, and wearing bright clothing at night for better visibility."}]}} + data: {"type":"response.output_item.done","sequence_number":307,"output_index":0,"item":{"id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","type":"reasoning","encrypted_content":"gAAAAABou0zS-YdoWhxKJNW-lIiUfEGK03w_4ymVzJghyfyp-PxHuPdAlnipmSzHT4SrYgzE78NP4tx16QYkW7kCycFpSHCfpKPnYiaZ-gOVesehygvL9OOcq6Xih-gC-s7L7i_lTO4rccitcS6eTV-44_gtxa12do9YLwwR67QQICyPT12vOCBmqUvqTDyeRaq4rM3o4FvDEoSMEvM56kEsAoJywEr47MzWsj-hBFVq2Vw2ZsFGN6Wg_DY__0NBbKnrMhCT5tF2f0vMk7mSnymJd_ynzfJj5VXR_SOwhJU0MCy7pxtf-8lI0ArCvo5PnY0d5nEC_OKtg0iNVMZV7c-1HPvdEqm9VIX5N1pN_13zQqOeyIG29RNU3AIf4l68cuUFPHSfwGc3-_hvki12bW4Vr124v7jXI3wKC6cAaHBMZCzduw2hATk=","summary":[{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI'll first remind myself to follow local guidelines and consult a professional if I'm unsure. To cross the street safely, I’ll note a few key points: always look left, right, and then left again before moving; wait for a gap in traffic; and use crosswalks when possible. My message will include these instructions clearly, emphasizing the importance of checking for vehicles and waiting for pedestrian signals before crossing."},{"type":"summary_text","text":"**Creating pedestrian safety instructions**\n\nTo cross the street safely, I’ll share important steps. First, always find a designated crossing area. If there's a traffic light, wait for the green pedestrian signal. Before stepping off, look left, right, and left again to check for vehicles. While crossing, move at a steady pace and stay alert. After reaching the other side, wait for a gap if needed. I’ll add that this guidance is general and may not apply to all situations, so being aware is crucial."},{"type":"summary_text","text":"**Providing crossing instructions**\n\nI’ll make clear that I’m not an official traffic expert and suggest consulting local guidelines for personalized advice. My final answer will include step-by-step instructions: \n\n1. Use a crosswalk if it’s available.\n2. Wait for the proper signal before crossing.\n3. Look left, right, and left again to ensure it's safe.\n4. Continue crossing if no vehicles are approaching.\n5. If there's no crosswalk, choose a safe spot to cross.\n\nI’ll share this in clear, plain text for easy understanding."}]}} event: response.output_item.added - data: {"type":"response.output_item.added","sequence_number":290,"output_index":1,"item":{"id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","type":"message","status":"in_progress","content":[],"role":"assistant"}} + data: {"type":"response.output_item.added","sequence_number":308,"output_index":1,"item":{"id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","type":"message","status":"in_progress","content":[],"role":"assistant"}} event: response.content_part.added - data: {"type":"response.content_part.added","sequence_number":291,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}} + data: {"type":"response.content_part.added","sequence_number":309,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":310,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"Here","logprobs":[],"obfuscation":"2kZG8NatekAb"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":311,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"94FuvXukAYTn"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":312,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" some","logprobs":[],"obfuscation":"9u3UiBl3tL1"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":313,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" general","logprobs":[],"obfuscation":"oFNzNcug"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":314,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" guidelines","logprobs":[],"obfuscation":"DoY5S"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":315,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"uRWtWU61SxuX9"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":316,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" help","logprobs":[],"obfuscation":"bKSjZMwu3xL"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":317,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"aBXcdxRpsQrH"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":318,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"chG7ZcrbYd"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":319,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"uK7JrHjdtJDn"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":320,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" street","logprobs":[],"obfuscation":"MXTFqbBi2"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":321,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safely","logprobs":[],"obfuscation":"dYgxnpKrt"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":322,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"ZNTVrshYBPe7pLZ"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":323,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Remember","logprobs":[],"obfuscation":"XMA9oWP"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":324,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"PDpfYKXI5BC"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":325,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" these","logprobs":[],"obfuscation":"gquv4LfxJZ"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":326,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" suggestions","logprobs":[],"obfuscation":"NGN2"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":327,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"y7L720Ljkd07"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":328,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"qQIo97uIIzwt"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":329,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" typical","logprobs":[],"obfuscation":"F7DwsKoF"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":330,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" pedestrian","logprobs":[],"obfuscation":"5prDw"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":331,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" situations","logprobs":[],"obfuscation":"bo5Rf"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":332,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"ahd5MSXRQLYo"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":333,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"VGhR6YIbxEi"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":334,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" local","logprobs":[],"obfuscation":"f5aBOHdF5H"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":335,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" road","logprobs":[],"obfuscation":"c0KKwXRwii5"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":336,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" rules","logprobs":[],"obfuscation":"9ktpywdgXx"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":337,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"hfB8Q0fM3P5wZ"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":338,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" specific","logprobs":[],"obfuscation":"nkTGBTV"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":339,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" circumstances","logprobs":[],"obfuscation":"gl"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":340,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" might","logprobs":[],"obfuscation":"rIfzsUNAGz"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":341,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" require","logprobs":[],"obfuscation":"4nM6T6WO"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":342,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" additional","logprobs":[],"obfuscation":"LLnOw"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":343,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" precautions","logprobs":[],"obfuscation":"QMjB"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":344,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n\n","logprobs":[],"obfuscation":"GFcsuWqnEy66d"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":345,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"1","logprobs":[],"obfuscation":"SV2OKJbwSoJYzUY"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":346,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"Mce9IQFs3CIYlkx"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":347,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Know","logprobs":[],"obfuscation":"eIoXXPJedl3"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":348,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Your","logprobs":[],"obfuscation":"lspeqS5Vkw0"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":349,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Crossing","logprobs":[],"obfuscation":"ykluIl6"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":350,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Point","logprobs":[],"obfuscation":"kajL4xluxg"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":351,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"aJIYq23dtaaq0u"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":352,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"aGWOoRyO1hqeVdx"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":353,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"CqWUaN6s5sTL2hO"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":354,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Use","logprobs":[],"obfuscation":"skXB77UDHSkE"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":355,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" designated","logprobs":[],"obfuscation":"2UdaI"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":356,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"T6dCtMsf5c"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":357,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"walk","logprobs":[],"obfuscation":"GKTh1TxUGcAO"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":358,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"s","logprobs":[],"obfuscation":"IC8AJH0cBgMzNVn"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":359,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"0UaTl3LINSW7nIr"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":360,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" intersections","logprobs":[],"obfuscation":"hX"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":361,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"8Ov3M8wNVzool41"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":362,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"J3CtJtUaHyLay"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":363,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" pedestrian","logprobs":[],"obfuscation":"5b1cC"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":364,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" crossings","logprobs":[],"obfuscation":"lKI38B"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":365,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" whenever","logprobs":[],"obfuscation":"L01NHaO"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":366,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" possible","logprobs":[],"obfuscation":"5gchwKP"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":367,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"oP3Cm5Kx3b0QXQ"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":368,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"HNmmPmjVNigQzde"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":369,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"XNgzo2Q4Jpg4897"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":370,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"CdJAKSImYSSXq"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":371,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"WEinpJDmpdNdwL"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":372,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"Gxt1woL1jU"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":373,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"walk","logprobs":[],"obfuscation":"zXQ6lIwDb0IC"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":374,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" isn","logprobs":[],"obfuscation":"ylNzs3lskyTL"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":375,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’t","logprobs":[],"obfuscation":"K9ebkwWyrp7ajv"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":376,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" available","logprobs":[],"obfuscation":"mD7Tek"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":377,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"4InAUIBUyas1SUp"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":378,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" choose","logprobs":[],"obfuscation":"ipweBfDzp"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":379,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"TwFDxTeuZW6JRw"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":380,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" spot","logprobs":[],"obfuscation":"8PFNCwbsL3J"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":381,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" where","logprobs":[],"obfuscation":"JX8h6TZS8H"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":382,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" drivers","logprobs":[],"obfuscation":"RNZCLBe4"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":383,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" can","logprobs":[],"obfuscation":"sFhl6wuEBewk"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":384,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" see","logprobs":[],"obfuscation":"3NTOOYYqs9pr"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":385,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"g65LWQ0LkyXj"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":386,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" from","logprobs":[],"obfuscation":"zUvPohrJoEN"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":387,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"swpVgW9MPJF8Cp"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":388,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" distance","logprobs":[],"obfuscation":"s8Flt0X"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":389,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"Z3zfmRhXhcGQ"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":390,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" there","logprobs":[],"obfuscation":"94MeDRIMXA"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":391,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’s","logprobs":[],"obfuscation":"X9NaMxAYGjw0i0"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":392,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"Gur8fMPVgVkf8O"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":393,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" clear","logprobs":[],"obfuscation":"AJ4r2HOpTw"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":394,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" view","logprobs":[],"obfuscation":"T3Sc3JAFREW"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":395,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"PASCq6uTVyFb1"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":396,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" both","logprobs":[],"obfuscation":"SvdlEwiEdct"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":397,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" directions","logprobs":[],"obfuscation":"Iz9k8"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":398,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"JRr7D9aevhiDy"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":399,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"2","logprobs":[],"obfuscation":"QiX5g1fQCyrbS4q"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":400,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"NRxyCkXavEBzibN"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":401,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Observe","logprobs":[],"obfuscation":"s6wIerGq"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":402,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Traffic","logprobs":[],"obfuscation":"hHQHbaV3"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":403,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Signals","logprobs":[],"obfuscation":"vEnF0FuK"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":404,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"CqQclRnaqLMb"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":405,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Signs","logprobs":[],"obfuscation":"FM59JkAe5R"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":406,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"Y8KSJbMiUpjAkv"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":407,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"NgQ9V3sX4YAMHSa"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":408,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"Pw45e4rkJMiMqFs"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":409,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" At","logprobs":[],"obfuscation":"Gera7XuAoVXfq"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":410,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" intersections","logprobs":[],"obfuscation":"qr"} + + event: response.output_text.delta + data: {"type":"response.output_text.delta","sequence_number":411,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" with","logprobs":[],"obfuscation":"P0TuYSK4tAf"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":292,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"I","logprobs":[],"obfuscation":"oiRGq9sRcfniSod"} + data: {"type":"response.output_text.delta","sequence_number":412,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" traffic","logprobs":[],"obfuscation":"7C0dmeKA"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":293,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"’m","logprobs":[],"obfuscation":"MTUkOg3TuSvpJg"} + data: {"type":"response.output_text.delta","sequence_number":413,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" lights","logprobs":[],"obfuscation":"Se3L9C7If"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":294,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" not","logprobs":[],"obfuscation":"bdo7B2PUBUzy"} + data: {"type":"response.output_text.delta","sequence_number":414,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"XI81ZeP2zQhGTR6"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":295,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"GGqWope0BO3xNY"} + data: {"type":"response.output_text.delta","sequence_number":415,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" wait","logprobs":[],"obfuscation":"G0EvmDzI4K3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":296,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" traffic","logprobs":[],"obfuscation":"ihCK4qiv"} + data: {"type":"response.output_text.delta","sequence_number":416,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" until","logprobs":[],"obfuscation":"CRDqoiezSI"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":297,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" safety","logprobs":[],"obfuscation":"BmtLXQ7zA"} + data: {"type":"response.output_text.delta","sequence_number":417,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"4xqBi2capjP8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":298,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" expert","logprobs":[],"obfuscation":"4UrWfeVe2"} + data: {"type":"response.output_text.delta","sequence_number":418,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" pedestrian","logprobs":[],"obfuscation":"aKIfJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":299,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"Gsye4zDPaCyfX9d"} + data: {"type":"response.output_text.delta","sequence_number":419,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" “","logprobs":[],"obfuscation":"iNFC995yh2lSRR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":300,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" but","logprobs":[],"obfuscation":"w1LFLOWHhdI6"} + data: {"type":"response.output_text.delta","sequence_number":420,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"walk","logprobs":[],"obfuscation":"IRZJNPga53ir"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":301,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" here","logprobs":[],"obfuscation":"LMIWkHwD1lK"} + data: {"type":"response.output_text.delta","sequence_number":421,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"”","logprobs":[],"obfuscation":"SIAHFuSGA65YCf4"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":302,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"jqTblnfzVDHb"} + data: {"type":"response.output_text.delta","sequence_number":422,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" signal","logprobs":[],"obfuscation":"Cn8aIbU6T"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":303,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" some","logprobs":[],"obfuscation":"ux5aeNNx8og"} + data: {"type":"response.output_text.delta","sequence_number":423,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" is","logprobs":[],"obfuscation":"pWkYf22oBIFJa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":304,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" general","logprobs":[],"obfuscation":"FMkgJFxB"} + data: {"type":"response.output_text.delta","sequence_number":424,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" on","logprobs":[],"obfuscation":"TNHsuKMHZVv8Y"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":305,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" tips","logprobs":[],"obfuscation":"3kStdOVoHHO"} + data: {"type":"response.output_text.delta","sequence_number":425,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"LpJDjd8DuQNzA6"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":306,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" on","logprobs":[],"obfuscation":"ri0FqBV47HFeE"} + data: {"type":"response.output_text.delta","sequence_number":426,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"tRmttLxas7Wpgyd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":307,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" how","logprobs":[],"obfuscation":"lrJ8eFkJOggg"} + data: {"type":"response.output_text.delta","sequence_number":427,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"G99hgKpbOW1XmwQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":308,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"lV5B93mjYFvcx"} + data: {"type":"response.output_text.delta","sequence_number":428,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Even","logprobs":[],"obfuscation":"eXiV3jXDOjd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":309,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"2w53M7pPdu"} + data: {"type":"response.output_text.delta","sequence_number":429,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" when","logprobs":[],"obfuscation":"b7qcl3MH6br"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":310,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"SKbAc5v6IOIn0z"} + data: {"type":"response.output_text.delta","sequence_number":430,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"BBzV9vZygYI3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":311,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" street","logprobs":[],"obfuscation":"i4JgzO6x4"} + data: {"type":"response.output_text.delta","sequence_number":431,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" have","logprobs":[],"obfuscation":"Zncf4vjG0XP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":312,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" safely","logprobs":[],"obfuscation":"CaUnSAoFc"} + data: {"type":"response.output_text.delta","sequence_number":432,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"I0egTr3xV0CC"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":313,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"UOpHynkXCCdFjtp"} + data: {"type":"response.output_text.delta","sequence_number":433,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" signal","logprobs":[],"obfuscation":"tuTYLyXJD"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":314,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Always","logprobs":[],"obfuscation":"QuTiBtmKf"} + data: {"type":"response.output_text.delta","sequence_number":434,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"5WecmrH2iLpeqI7"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":315,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" follow","logprobs":[],"obfuscation":"qaCQDjxP9"} + data: {"type":"response.output_text.delta","sequence_number":435,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" stay","logprobs":[],"obfuscation":"nNPVK6acaUa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":316,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"NQJ4GiCWph7"} + data: {"type":"response.output_text.delta","sequence_number":436,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" alert","logprobs":[],"obfuscation":"SS3cp4x47L"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":317,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" local","logprobs":[],"obfuscation":"oDhMi5tAkg"} + data: {"type":"response.output_text.delta","sequence_number":437,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"—","logprobs":[],"obfuscation":"Z54wpvvQ3MS68aH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":318,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" traffic","logprobs":[],"obfuscation":"3HBKhzQl"} + data: {"type":"response.output_text.delta","sequence_number":438,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"drivers","logprobs":[],"obfuscation":"EkgAeI9JK"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":319,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" laws","logprobs":[],"obfuscation":"Fqkyv576Ux0"} + data: {"type":"response.output_text.delta","sequence_number":439,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" sometimes","logprobs":[],"obfuscation":"7SEVew"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":320,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"4E0sF6Pxjz1I"} + data: {"type":"response.output_text.delta","sequence_number":440,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" may","logprobs":[],"obfuscation":"sKuDr6KbOoo7"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":321,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" any","logprobs":[],"obfuscation":"BqIbDcJK616T"} + data: {"type":"response.output_text.delta","sequence_number":441,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" not","logprobs":[],"obfuscation":"pj0onHtkIqhR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":322,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" posted","logprobs":[],"obfuscation":"Cln41ricg"} + data: {"type":"response.output_text.delta","sequence_number":442,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" see","logprobs":[],"obfuscation":"aNlCt9sQTt0x"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":323,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" signs","logprobs":[],"obfuscation":"cN8yBXd8Y6"} + data: {"type":"response.output_text.delta","sequence_number":443,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"7VqL2HLZ8vOW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":324,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"FUMzK2vflIVvS"} + data: {"type":"response.output_text.delta","sequence_number":444,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"O1NdJqn7PQ89i"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":325,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" signals","logprobs":[],"obfuscation":"YHIL0ebD"} + data: {"type":"response.output_text.delta","sequence_number":445,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" may","logprobs":[],"obfuscation":"kTvJHteG4jW0"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":326,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":":\n\n","logprobs":[],"obfuscation":"10oO4orpjMnWo"} + data: {"type":"response.output_text.delta","sequence_number":446,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" not","logprobs":[],"obfuscation":"djiqK92peKCc"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":327,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"1","logprobs":[],"obfuscation":"UzbrwVbbixdJ0oU"} + data: {"type":"response.output_text.delta","sequence_number":447,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" stop","logprobs":[],"obfuscation":"iYkzpQJaZeU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":328,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"BiSSYalEBLnNodm"} + data: {"type":"response.output_text.delta","sequence_number":448,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" as","logprobs":[],"obfuscation":"9hDvEhIlX6YUU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":329,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Find","logprobs":[],"obfuscation":"CPVC3vnI3Vq"} + data: {"type":"response.output_text.delta","sequence_number":449,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" expected","logprobs":[],"obfuscation":"HsSKbPJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":330,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"vK9X5MX4tLHmc2"} + data: {"type":"response.output_text.delta","sequence_number":450,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"GwTqLQTXjBWMb"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":331,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" designated","logprobs":[],"obfuscation":"wNzTL"} + data: {"type":"response.output_text.delta","sequence_number":451,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"3","logprobs":[],"obfuscation":"EYYGWoTKUfKs1Hl"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":332,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" crossing","logprobs":[],"obfuscation":"U4ZOGZl"} + data: {"type":"response.output_text.delta","sequence_number":452,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"uDeg67Lx3Df3mvI"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":333,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" area","logprobs":[],"obfuscation":"j4rjy50RsnA"} + data: {"type":"response.output_text.delta","sequence_number":453,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Look","logprobs":[],"obfuscation":"FqQ1jMhlAnq"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":334,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"tJbIfxtZZ4cHCfJ"} + data: {"type":"response.output_text.delta","sequence_number":454,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Both","logprobs":[],"obfuscation":"AfQdVVLGKwG"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":335,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Whenever","logprobs":[],"obfuscation":"6FNzcDA"} + data: {"type":"response.output_text.delta","sequence_number":455,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Ways","logprobs":[],"obfuscation":"gkQPW37isIu"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":336,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" possible","logprobs":[],"obfuscation":"stQ9T6c"} + data: {"type":"response.output_text.delta","sequence_number":456,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"00rpVDtsGBQnNa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":337,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"9YJExIAWo3Lad76"} + data: {"type":"response.output_text.delta","sequence_number":457,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"5zXQ3cYfWq2XrZG"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":338,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" use","logprobs":[],"obfuscation":"MJMcv0Hcsimm"} + data: {"type":"response.output_text.delta","sequence_number":458,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"OjC7kGI9yBGB396"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":339,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"yFpc5u0zBFmMak"} + data: {"type":"response.output_text.delta","sequence_number":459,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Before","logprobs":[],"obfuscation":"daeTusCXT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":340,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" marked","logprobs":[],"obfuscation":"hgJy9QVJt"} + data: {"type":"response.output_text.delta","sequence_number":460,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" stepping","logprobs":[],"obfuscation":"puzL610"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":341,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"l9hlaOln7G"} + data: {"type":"response.output_text.delta","sequence_number":461,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" off","logprobs":[],"obfuscation":"CDfPFbFZ4tSJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":342,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"walk","logprobs":[],"obfuscation":"Ktobwb8OiFTF"} + data: {"type":"response.output_text.delta","sequence_number":462,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"lsipL2LR9iPo"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":343,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"rXMXkWV3Bj8O3"} + data: {"type":"response.output_text.delta","sequence_number":463,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" curb","logprobs":[],"obfuscation":"dWEWludJ0EL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":344,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"qVu4VKMjwCU1tb"} + data: {"type":"response.output_text.delta","sequence_number":464,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"iLM1QUFraBtu5Yj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":345,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" pedestrian","logprobs":[],"obfuscation":"vzPuc"} + data: {"type":"response.output_text.delta","sequence_number":465,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" take","logprobs":[],"obfuscation":"5VwGxczAujj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":346,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" crossing","logprobs":[],"obfuscation":"xz2Hysh"} + data: {"type":"response.output_text.delta","sequence_number":466,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"MsFbCTpdI2XXKy"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":347,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"vqNEsTPTO7vZwyW"} + data: {"type":"response.output_text.delta","sequence_number":467,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" moment","logprobs":[],"obfuscation":"Q3mYcsa5B"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":348,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"fGRN3eRI50yB3"} + data: {"type":"response.output_text.delta","sequence_number":468,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"t0ZXsFsKXJ25f"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":349,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" there","logprobs":[],"obfuscation":"UvJyYEk6qs"} + data: {"type":"response.output_text.delta","sequence_number":469,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" look","logprobs":[],"obfuscation":"J5IXE795O4m"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":350,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"’s","logprobs":[],"obfuscation":"IyUgFsfu4UMfwQ"} + data: {"type":"response.output_text.delta","sequence_number":470,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"wBdsNGruDC7w1"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":351,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"PzOMruXRQSq6I0"} + data: {"type":"response.output_text.delta","sequence_number":471,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" all","logprobs":[],"obfuscation":"gIKRENIC9HV3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":352,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" traffic","logprobs":[],"obfuscation":"YlBmaBV3"} + data: {"type":"response.output_text.delta","sequence_number":472,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" directions","logprobs":[],"obfuscation":"73FTF"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":353,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" light","logprobs":[],"obfuscation":"QhMab1GbWK"} + data: {"type":"response.output_text.delta","sequence_number":473,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"tWSu2M9BG87nto"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":354,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"iVw8Yzu71soF0Bs"} + data: {"type":"response.output_text.delta","sequence_number":474,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"lDNh1OMyGP0lArH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":355,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" wait","logprobs":[],"obfuscation":"q8GJUxEYIRS"} + data: {"type":"response.output_text.delta","sequence_number":475,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"Y7NsAL13luRZMWa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":356,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"XOchDvgAQPFb"} + data: {"type":"response.output_text.delta","sequence_number":476,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"–","logprobs":[],"obfuscation":"Jv64Y8oxSuLgLQp"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":357,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"gGcK2rv3JEG6"} + data: {"type":"response.output_text.delta","sequence_number":477,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Check","logprobs":[],"obfuscation":"doc7YdBb6Y"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":358,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" “","logprobs":[],"obfuscation":"JXYgB7YmG2o6qE"} + data: {"type":"response.output_text.delta","sequence_number":478,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" left","logprobs":[],"obfuscation":"NwNnV1xcfRU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":359,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"Walk","logprobs":[],"obfuscation":"dQpYLoTpvTlb"} + data: {"type":"response.output_text.delta","sequence_number":479,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" first","logprobs":[],"obfuscation":"ZWECo8ulmo"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":360,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"”","logprobs":[],"obfuscation":"zdfwxZv74XKsXmn"} + data: {"type":"response.output_text.delta","sequence_number":480,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" (","logprobs":[],"obfuscation":"0c47VYvRMstTEV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":361,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" signal","logprobs":[],"obfuscation":"uS7xU38BY"} + data: {"type":"response.output_text.delta","sequence_number":481,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"as","logprobs":[],"obfuscation":"BUvNFVsq1BfDtO"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":362,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" before","logprobs":[],"obfuscation":"yHHqeRB4o"} + data: {"type":"response.output_text.delta","sequence_number":482,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" vehicles","logprobs":[],"obfuscation":"fmJs02V"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":363,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" proceeding","logprobs":[],"obfuscation":"VFQzn"} + data: {"type":"response.output_text.delta","sequence_number":483,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" typically","logprobs":[],"obfuscation":"vTTpgv"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":364,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"tx2DjGqO2x3Ea"} + data: {"type":"response.output_text.delta","sequence_number":484,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" approach","logprobs":[],"obfuscation":"3uZxt6T"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":365,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"2","logprobs":[],"obfuscation":"Sxu3A9T7ih8TAso"} + data: {"type":"response.output_text.delta","sequence_number":485,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" from","logprobs":[],"obfuscation":"tSTDoYKOAVD"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":366,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"1YT6cawnHldmfV2"} + data: {"type":"response.output_text.delta","sequence_number":486,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"rSYk5qt8PgH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":367,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Stop","logprobs":[],"obfuscation":"ZRcLFnqwyl3"} + data: {"type":"response.output_text.delta","sequence_number":487,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" direction","logprobs":[],"obfuscation":"QAGZnV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":368,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" at","logprobs":[],"obfuscation":"Imm8oZ9ZoVcXl"} + data: {"type":"response.output_text.delta","sequence_number":488,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"185Cgh6Ut3nXp"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":369,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"UT0zH4f7UOx9"} + data: {"type":"response.output_text.delta","sequence_number":489,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" countries","logprobs":[],"obfuscation":"74RSgd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":370,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" curb","logprobs":[],"obfuscation":"UdOitq7JgGf"} + data: {"type":"response.output_text.delta","sequence_number":490,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" where","logprobs":[],"obfuscation":"0H7B4kXq0R"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":371,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"0HjN46F08VZxPWr"} + data: {"type":"response.output_text.delta","sequence_number":491,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"eaq1Tl7kXNTO"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":372,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Before","logprobs":[],"obfuscation":"jC4D5qX5H"} + data: {"type":"response.output_text.delta","sequence_number":492,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" drive","logprobs":[],"obfuscation":"CtejYPIR8T"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":373,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" stepping","logprobs":[],"obfuscation":"rnSpKgP"} + data: {"type":"response.output_text.delta","sequence_number":493,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" on","logprobs":[],"obfuscation":"2NbdF7rBeBbsB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":374,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" off","logprobs":[],"obfuscation":"Ce5DIXBpejhE"} + data: {"type":"response.output_text.delta","sequence_number":494,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"5MHSPoF17Yjd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":375,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"6nM7aKPhg8v1db3"} + data: {"type":"response.output_text.delta","sequence_number":495,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" right","logprobs":[],"obfuscation":"0F5mHtDHmo"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":376,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" stand","logprobs":[],"obfuscation":"AOsur7qL2R"} + data: {"type":"response.output_text.delta","sequence_number":496,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":").\n","logprobs":[],"obfuscation":"E5GsCX5Uaf1sI"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":377,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" at","logprobs":[],"obfuscation":"2Dulztsx6niCU"} + data: {"type":"response.output_text.delta","sequence_number":497,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"hK9B3UmWrXTthG5"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":378,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"SY6uoq0mwqpl"} + data: {"type":"response.output_text.delta","sequence_number":498,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"qKhlqNne5gsgJKB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":379,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" edge","logprobs":[],"obfuscation":"9oi7V0e3Pof"} + data: {"type":"response.output_text.delta","sequence_number":499,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"–","logprobs":[],"obfuscation":"z6gDPjbZQ56nBD6"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":380,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" of","logprobs":[],"obfuscation":"1ZDtLPRgEMgSm"} + data: {"type":"response.output_text.delta","sequence_number":500,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Then","logprobs":[],"obfuscation":"KJ7YxBadLN3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":381,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"1QPDeyv2zfvu"} + data: {"type":"response.output_text.delta","sequence_number":501,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" check","logprobs":[],"obfuscation":"P9HPCW3KqH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":382,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sidewalk","logprobs":[],"obfuscation":"3eZb0K4"} + data: {"type":"response.output_text.delta","sequence_number":502,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" right","logprobs":[],"obfuscation":"pHYDyJLwz3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":383,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"xXmLFNgJBceth"} + data: {"type":"response.output_text.delta","sequence_number":503,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"kWeEbwwQMZWuEH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":384,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" curb","logprobs":[],"obfuscation":"aY968t5Etgf"} + data: {"type":"response.output_text.delta","sequence_number":504,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"QhfVZ45X5LSN1WN"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":385,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"AuMVewfW2Q9AEY6"} + data: {"type":"response.output_text.delta","sequence_number":505,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"nVd9cCvM4Xtzmq8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":386,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Avoid","logprobs":[],"obfuscation":"q4au4Q6Ptl"} + data: {"type":"response.output_text.delta","sequence_number":506,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"–","logprobs":[],"obfuscation":"zFfoq8AZy0xc0PH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":387,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"vrpdKf1s2ONL"} + data: {"type":"response.output_text.delta","sequence_number":507,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Look","logprobs":[],"obfuscation":"hfiOwiIEVcN"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":388,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" “","logprobs":[],"obfuscation":"GHJSo502uZCzTA"} + data: {"type":"response.output_text.delta","sequence_number":508,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" left","logprobs":[],"obfuscation":"wmgIAtUhqaq"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":389,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"d","logprobs":[],"obfuscation":"yxwbsdGMok17hvG"} + data: {"type":"response.output_text.delta","sequence_number":509,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" again","logprobs":[],"obfuscation":"szggQS158W"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":390,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"ile","logprobs":[],"obfuscation":"zVDHNyCCKaBYF"} + data: {"type":"response.output_text.delta","sequence_number":510,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" just","logprobs":[],"obfuscation":"jYkAvqd63Ac"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":391,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"mma","logprobs":[],"obfuscation":"ucY8UAMQnC16T"} + data: {"type":"response.output_text.delta","sequence_number":511,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" before","logprobs":[],"obfuscation":"NIXEE7pbz"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":392,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" zone","logprobs":[],"obfuscation":"3EpnZ8voJlR"} + data: {"type":"response.output_text.delta","sequence_number":512,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"sVK793WcyXF0"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":393,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"”","logprobs":[],"obfuscation":"YIEOpWpQKIC4DVM"} + data: {"type":"response.output_text.delta","sequence_number":513,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"ze2Ph7Ic7y"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":394,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" where","logprobs":[],"obfuscation":"KzVxxnhV9Y"} + data: {"type":"response.output_text.delta","sequence_number":514,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"pNDbOvwNMB7yJl"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":395,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" drivers","logprobs":[],"obfuscation":"8GAzm584"} + data: {"type":"response.output_text.delta","sequence_number":515,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"Ih91QewCev0JpeM"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":396,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" might","logprobs":[],"obfuscation":"DVfOxcM98Z"} + data: {"type":"response.output_text.delta","sequence_number":516,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"XqB1IpMOJ0kiTti"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":397,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" mis","logprobs":[],"obfuscation":"VGH9pbwOegnI"} + data: {"type":"response.output_text.delta","sequence_number":517,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Continue","logprobs":[],"obfuscation":"iK5racT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":398,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"judge","logprobs":[],"obfuscation":"DX5vF6gSVbS"} + data: {"type":"response.output_text.delta","sequence_number":518,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"r1mPtRuHmqB5N"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":399,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"0Iob9Qj7DK3"} + data: {"type":"response.output_text.delta","sequence_number":519,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" be","logprobs":[],"obfuscation":"5d9N1171sKoQU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":400,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" intentions","logprobs":[],"obfuscation":"3Nd4M"} + data: {"type":"response.output_text.delta","sequence_number":520,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" aware","logprobs":[],"obfuscation":"X0rcbCjTWh"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":401,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"TbkOIR5cFxSe5"} + data: {"type":"response.output_text.delta","sequence_number":521,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" of","logprobs":[],"obfuscation":"M2eKfTd3Yk3Q5"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":402,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"3","logprobs":[],"obfuscation":"gmqGxcXDhd2q3LS"} + data: {"type":"response.output_text.delta","sequence_number":522,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"Xrr3Z6CdBCZ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":403,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"n12Sy8TEDjWPLmu"} + data: {"type":"response.output_text.delta","sequence_number":523,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" surroundings","logprobs":[],"obfuscation":"75K"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":404,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Look","logprobs":[],"obfuscation":"VHb4fgDHWCp"} + data: {"type":"response.output_text.delta","sequence_number":524,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" as","logprobs":[],"obfuscation":"gmKH6yWM5rJQY"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":405,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" both","logprobs":[],"obfuscation":"5ffaged083W"} + data: {"type":"response.output_text.delta","sequence_number":525,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"iHOaiVzpRVFd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":406,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" ways","logprobs":[],"obfuscation":"iKuNetoRKJg"} + data: {"type":"response.output_text.delta","sequence_number":526,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"KZKhCVx3Jv"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":407,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"—even","logprobs":[],"obfuscation":"Eb8Tg1klCbi"} + data: {"type":"response.output_text.delta","sequence_number":527,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"GQuXUfEBoRhh"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":408,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" if","logprobs":[],"obfuscation":"p1rdSY7ANqtyN"} + data: {"type":"response.output_text.delta","sequence_number":528,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" street","logprobs":[],"obfuscation":"FHp6hbDFX"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":409,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"FqOyeWUyy3dr"} + data: {"type":"response.output_text.delta","sequence_number":529,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"RRp056fwaPA0l"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":410,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" have","logprobs":[],"obfuscation":"n7GboECFKF8"} + data: {"type":"response.output_text.delta","sequence_number":530,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"4","logprobs":[],"obfuscation":"XHswdzOVdKHDz3A"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":411,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"fY6cPap9BxZM"} + data: {"type":"response.output_text.delta","sequence_number":531,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"rR2xxx816II2IbI"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":412,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" right","logprobs":[],"obfuscation":"PpVKAkvUmv"} + data: {"type":"response.output_text.delta","sequence_number":532,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Make","logprobs":[],"obfuscation":"m14JtFiNcqB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":413,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"-of","logprobs":[],"obfuscation":"JoxeRea44XwNh"} + data: {"type":"response.output_text.delta","sequence_number":533,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Eye","logprobs":[],"obfuscation":"lBzQ3rGyMWKv"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":414,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"-way","logprobs":[],"obfuscation":"TFd4gLjcnO5O"} + data: {"type":"response.output_text.delta","sequence_number":534,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Contact","logprobs":[],"obfuscation":"idMiIoT0"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":415,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"2XEX6fIYyHdK1mV"} + data: {"type":"response.output_text.delta","sequence_number":535,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"g3LjsQFTQEieUn"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":416,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Begin","logprobs":[],"obfuscation":"Og195yobJr"} + data: {"type":"response.output_text.delta","sequence_number":536,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"EGbhRhz3yMzGTA8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":417,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" by","logprobs":[],"obfuscation":"yprD58AGzSHvY"} + data: {"type":"response.output_text.delta","sequence_number":537,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"dP51w55KYx8tiuf"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":418,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" looking","logprobs":[],"obfuscation":"3zpk8Cnd"} + data: {"type":"response.output_text.delta","sequence_number":538,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"hkKZrqP64NCV2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":419,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" left","logprobs":[],"obfuscation":"8M9JicIWUg0"} + data: {"type":"response.output_text.delta","sequence_number":539,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"wBaXZWSIJa5S"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":420,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"PZ65Mi4KYgIquQq"} + data: {"type":"response.output_text.delta","sequence_number":540,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" see","logprobs":[],"obfuscation":"Q0UzbLUP5XPb"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":421,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" then","logprobs":[],"obfuscation":"EwyG5pNPt2I"} + data: {"type":"response.output_text.delta","sequence_number":541,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" an","logprobs":[],"obfuscation":"xjdNmQC7UorV9"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":422,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" right","logprobs":[],"obfuscation":"QloZegQrH5"} + data: {"type":"response.output_text.delta","sequence_number":542,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" approaching","logprobs":[],"obfuscation":"xcHQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":423,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"vOFyDYFesD1970I"} + data: {"type":"response.output_text.delta","sequence_number":543,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" driver","logprobs":[],"obfuscation":"tJ9Cx6LXa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":424,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"a2CCvkyUT8Mh"} + data: {"type":"response.output_text.delta","sequence_number":544,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"F6HgYeaGo4ezOd5"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":425,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" left","logprobs":[],"obfuscation":"etZjmKFkf7T"} + data: {"type":"response.output_text.delta","sequence_number":545,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" try","logprobs":[],"obfuscation":"4ZLOvfiTFwxr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":426,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" again","logprobs":[],"obfuscation":"9GdKLGHeeW"} + data: {"type":"response.output_text.delta","sequence_number":546,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"BacDBOzFbz1tV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":427,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"dR21KtwOq5lW8ct"} + data: {"type":"response.output_text.delta","sequence_number":547,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" make","logprobs":[],"obfuscation":"lsMsQ6R3pxj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":428,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" This","logprobs":[],"obfuscation":"jonjOg3W2bz"} + data: {"type":"response.output_text.delta","sequence_number":548,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" eye","logprobs":[],"obfuscation":"rBzLUyeDIc4F"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":429,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" helps","logprobs":[],"obfuscation":"dmujnTYw18"} + data: {"type":"response.output_text.delta","sequence_number":549,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" contact","logprobs":[],"obfuscation":"9CgPEi4q"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":430,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" ensure","logprobs":[],"obfuscation":"ocEgLxodT"} + data: {"type":"response.output_text.delta","sequence_number":550,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"hy6dOM9A7nYn9"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":431,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"PAWz0ANTso90"} + data: {"type":"response.output_text.delta","sequence_number":551,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ensure","logprobs":[],"obfuscation":"wAK3WzcCV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":432,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" notice","logprobs":[],"obfuscation":"g28SIlLzK"} + data: {"type":"response.output_text.delta","sequence_number":552,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"986gnOddNiMR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":433,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" vehicles","logprobs":[],"obfuscation":"4xj4JVN"} + data: {"type":"response.output_text.delta","sequence_number":553,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" driver","logprobs":[],"obfuscation":"WZWoebdbJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":434,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" coming","logprobs":[],"obfuscation":"IX2K9vHIt"} + data: {"type":"response.output_text.delta","sequence_number":554,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" has","logprobs":[],"obfuscation":"L3KBv1bhzdBM"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":435,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" from","logprobs":[],"obfuscation":"4MthNoFoCg7"} + data: {"type":"response.output_text.delta","sequence_number":555,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" seen","logprobs":[],"obfuscation":"qYribd4fR28"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":436,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" different","logprobs":[],"obfuscation":"UIURM0"} + data: {"type":"response.output_text.delta","sequence_number":556,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"N58FCYGK2ybx"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":437,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" directions","logprobs":[],"obfuscation":"3wFok"} + data: {"type":"response.output_text.delta","sequence_number":557,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" before","logprobs":[],"obfuscation":"sDsI21uCT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":438,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" (","logprobs":[],"obfuscation":"z47ogzC1tvuIIW"} + data: {"type":"response.output_text.delta","sequence_number":558,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"3amv9yxZI3rc"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":439,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"especially","logprobs":[],"obfuscation":"QsEYfk"} + data: {"type":"response.output_text.delta","sequence_number":559,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" step","logprobs":[],"obfuscation":"SOKDUp7PX4B"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":440,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" important","logprobs":[],"obfuscation":"7qK7Eq"} + data: {"type":"response.output_text.delta","sequence_number":560,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" off","logprobs":[],"obfuscation":"ZZAASlyNzzZW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":441,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" at","logprobs":[],"obfuscation":"9QvFTAwECBHk9"} + data: {"type":"response.output_text.delta","sequence_number":561,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"5hYXliK7RJWu1f"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":442,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" intersections","logprobs":[],"obfuscation":"fB"} + data: {"type":"response.output_text.delta","sequence_number":562,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"i9EEbN6yccW4CLv"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":443,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"8vxYCzwKQIkHT"} + data: {"type":"response.output_text.delta","sequence_number":563,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"78GJZZYUrJaw8rg"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":444,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" when","logprobs":[],"obfuscation":"AzvHPM9xjPp"} + data: {"type":"response.output_text.delta","sequence_number":564,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Don","logprobs":[],"obfuscation":"cT865BIYNUDV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":445,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" turning","logprobs":[],"obfuscation":"U2kcUWVE"} + data: {"type":"response.output_text.delta","sequence_number":565,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’t","logprobs":[],"obfuscation":"3HaMCDY8859DkT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":446,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" vehicles","logprobs":[],"obfuscation":"RcYygD7"} + data: {"type":"response.output_text.delta","sequence_number":566,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" assume","logprobs":[],"obfuscation":"w2cWYRbWB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":447,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" may","logprobs":[],"obfuscation":"Oic0UdrjdLhk"} + data: {"type":"response.output_text.delta","sequence_number":567,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"82txeuk7bLC"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":448,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" be","logprobs":[],"obfuscation":"elvwz9mHIcNQe"} + data: {"type":"response.output_text.delta","sequence_number":568,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" every","logprobs":[],"obfuscation":"eFWLyecjbU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":449,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" present","logprobs":[],"obfuscation":"Xt0iJZRZ"} + data: {"type":"response.output_text.delta","sequence_number":569,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" driver","logprobs":[],"obfuscation":"79tT145IL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":450,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":").\n\n","logprobs":[],"obfuscation":"5DyAfeCu3dWn"} + data: {"type":"response.output_text.delta","sequence_number":570,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" will","logprobs":[],"obfuscation":"J9OGDMtjojQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":451,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"4","logprobs":[],"obfuscation":"rEvbypv6SqmbTAn"} + data: {"type":"response.output_text.delta","sequence_number":571,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" yield","logprobs":[],"obfuscation":"wojYvIQccz"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":452,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"e4zAYDC1c0FtTl9"} + data: {"type":"response.output_text.delta","sequence_number":572,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"—you","logprobs":[],"obfuscation":"6DItM0iKkGFG"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":453,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Listen","logprobs":[],"obfuscation":"2VjwIOJYW"} + data: {"type":"response.output_text.delta","sequence_number":573,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’re","logprobs":[],"obfuscation":"RShNNBfkGg0MM"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":454,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"J2QTYQKJSAar"} + data: {"type":"response.output_text.delta","sequence_number":574,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safer","logprobs":[],"obfuscation":"ZhbuD9mRxp"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":455,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" stay","logprobs":[],"obfuscation":"slQ42uWUVQG"} + data: {"type":"response.output_text.delta","sequence_number":575,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" when","logprobs":[],"obfuscation":"yNII0NQPX4L"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":456,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" alert","logprobs":[],"obfuscation":"nd6G28rTZh"} + data: {"type":"response.output_text.delta","sequence_number":576,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"8u3rcZwtos3u"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":457,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"JiUKgkKE1byymIT"} + data: {"type":"response.output_text.delta","sequence_number":577,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’re","logprobs":[],"obfuscation":"QuhzgZayRs6qx"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":458,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Remove","logprobs":[],"obfuscation":"O6rq42wsj"} + data: {"type":"response.output_text.delta","sequence_number":578,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"gnoAupnk8GxW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":459,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"E0JInDAu3p2da"} + data: {"type":"response.output_text.delta","sequence_number":579,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" one","logprobs":[],"obfuscation":"tLU5S09WdOaW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":460,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" pause","logprobs":[],"obfuscation":"FH14JfEEel"} + data: {"type":"response.output_text.delta","sequence_number":580,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"8PssLFtxQJXBd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":461,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" distractions","logprobs":[],"obfuscation":"mCh"} + data: {"type":"response.output_text.delta","sequence_number":581,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" control","logprobs":[],"obfuscation":"t6xmD9gY"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":462,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" (","logprobs":[],"obfuscation":"WcgTts30GUItGD"} + data: {"type":"response.output_text.delta","sequence_number":582,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" of","logprobs":[],"obfuscation":"BOJJ9XGuULETd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":463,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"like","logprobs":[],"obfuscation":"iRlIHJxmPnpz"} + data: {"type":"response.output_text.delta","sequence_number":583,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"xwFa0dkFVReJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":464,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cell","logprobs":[],"obfuscation":"o6TaatoM5qT"} + data: {"type":"response.output_text.delta","sequence_number":584,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" crossing","logprobs":[],"obfuscation":"wqd9Kgd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":465,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" phones","logprobs":[],"obfuscation":"smtlHODRK"} + data: {"type":"response.output_text.delta","sequence_number":585,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" decision","logprobs":[],"obfuscation":"hCr62gv"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":466,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"kg7Zcx8OTQ9bE"} + data: {"type":"response.output_text.delta","sequence_number":586,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"0cyw2EKwlkN6F"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":467,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" headphones","logprobs":[],"obfuscation":"x0WK2"} + data: {"type":"response.output_text.delta","sequence_number":587,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"5","logprobs":[],"obfuscation":"yQoJNrQxtmMJG3f"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":468,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":")","logprobs":[],"obfuscation":"2O7sD4fQzguLRa8"} + data: {"type":"response.output_text.delta","sequence_number":588,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"uGCFWQLCEYH2BTH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":469,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" so","logprobs":[],"obfuscation":"3GoEeLI3K2eWq"} + data: {"type":"response.output_text.delta","sequence_number":589,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Cross","logprobs":[],"obfuscation":"XjhULi5zDE"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":470,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"tg1dEvmxaZH2"} + data: {"type":"response.output_text.delta","sequence_number":590,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Quickly","logprobs":[],"obfuscation":"KlCQki70"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":471,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" can","logprobs":[],"obfuscation":"Q9jMroZQGNFF"} + data: {"type":"response.output_text.delta","sequence_number":591,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"wZ2w9eIsfxi9"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":472,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" hear","logprobs":[],"obfuscation":"wEDDwKO9xdg"} + data: {"type":"response.output_text.delta","sequence_number":592,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Saf","logprobs":[],"obfuscation":"QSpyojEVtu9K"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":473,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" any","logprobs":[],"obfuscation":"JxqPvMpEdwqA"} + data: {"type":"response.output_text.delta","sequence_number":593,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"ely","logprobs":[],"obfuscation":"VBqCr1qZ9Z1yq"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":474,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" warning","logprobs":[],"obfuscation":"B7B3ioM9"} + data: {"type":"response.output_text.delta","sequence_number":594,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"GTBdWkAarKtvLJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":475,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sounds","logprobs":[],"obfuscation":"vF84hZphn"} + data: {"type":"response.output_text.delta","sequence_number":595,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"rCp5W9YLy0D7lcz"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":476,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"Y9BZ355nIvBvC4M"} + data: {"type":"response.output_text.delta","sequence_number":596,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"248uDgMVX3gVPh2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":477,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" such","logprobs":[],"obfuscation":"vhkSH4Y5QhY"} + data: {"type":"response.output_text.delta","sequence_number":597,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Once","logprobs":[],"obfuscation":"0GXBQZf9vXy"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":478,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" as","logprobs":[],"obfuscation":"HzAUf1lmEaxW8"} + data: {"type":"response.output_text.delta","sequence_number":598,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"8VNFZyaLDfNM"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":479,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" horns","logprobs":[],"obfuscation":"rtTdN26D3G"} + data: {"type":"response.output_text.delta","sequence_number":599,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’re","logprobs":[],"obfuscation":"CH3hb3lremvvB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":480,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"Fsc0wUtLTDEr2"} + data: {"type":"response.output_text.delta","sequence_number":600,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" sure","logprobs":[],"obfuscation":"G0OHHkO9jg2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":481,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sir","logprobs":[],"obfuscation":"qiQPcJO6Arf1"} + data: {"type":"response.output_text.delta","sequence_number":601,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" it","logprobs":[],"obfuscation":"6Odq1wh4IwKeY"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":482,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"ens","logprobs":[],"obfuscation":"Db0tsdpAAH7U3"} + data: {"type":"response.output_text.delta","sequence_number":602,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’s","logprobs":[],"obfuscation":"3DzsOCksVslJrw"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":483,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"o0wEqCuhsSHLN"} + data: {"type":"response.output_text.delta","sequence_number":603,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safe","logprobs":[],"obfuscation":"E7klzP6CVcx"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":484,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"5","logprobs":[],"obfuscation":"rhFCK4haQZCfme9"} + data: {"type":"response.output_text.delta","sequence_number":604,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"1KIGctsYjfr1OAW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":485,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"yjXTIzDNbjgGxID"} + data: {"type":"response.output_text.delta","sequence_number":605,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"3FvHgx6Nhz"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":486,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Make","logprobs":[],"obfuscation":"edQE0L49V5e"} + data: {"type":"response.output_text.delta","sequence_number":606,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"Fyl3XVrhWDxK"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":487,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" eye","logprobs":[],"obfuscation":"y4rj9YON00D9"} + data: {"type":"response.output_text.delta","sequence_number":607,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" street","logprobs":[],"obfuscation":"idT4ITAfO"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":488,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" contact","logprobs":[],"obfuscation":"JYSXReMK"} + data: {"type":"response.output_text.delta","sequence_number":608,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" brisk","logprobs":[],"obfuscation":"Pe7We1C884"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":489,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"uMqkHQf8Qnl85bl"} + data: {"type":"response.output_text.delta","sequence_number":609,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"ly","logprobs":[],"obfuscation":"7S8Irfksp0WtfX"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":490,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"7aKZdgu37gTaI"} + data: {"type":"response.output_text.delta","sequence_number":610,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" without","logprobs":[],"obfuscation":"3S9scK46"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":491,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" possible","logprobs":[],"obfuscation":"mVUNP9l"} + data: {"type":"response.output_text.delta","sequence_number":611,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" running","logprobs":[],"obfuscation":"wRey24EK"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":492,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"UvmNkQ1HuxBPwe2"} + data: {"type":"response.output_text.delta","sequence_number":612,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" (","logprobs":[],"obfuscation":"GrpOuSvCX2CcCB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":493,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" try","logprobs":[],"obfuscation":"eqIygPJWDAQP"} + data: {"type":"response.output_text.delta","sequence_number":613,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"which","logprobs":[],"obfuscation":"venQtTvFkyJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":494,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"Q3xuiYsWJhm3t"} + data: {"type":"response.output_text.delta","sequence_number":614,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" can","logprobs":[],"obfuscation":"j2fla0Mcpnko"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":495,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" establish","logprobs":[],"obfuscation":"zAp0bZ"} + data: {"type":"response.output_text.delta","sequence_number":615,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" be","logprobs":[],"obfuscation":"Kh2d7D2wyfExD"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":496,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" eye","logprobs":[],"obfuscation":"qh3A6NycC82m"} + data: {"type":"response.output_text.delta","sequence_number":616,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" risky","logprobs":[],"obfuscation":"GXgAvtQN1r"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":497,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" contact","logprobs":[],"obfuscation":"zKtLDmbt"} + data: {"type":"response.output_text.delta","sequence_number":617,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" if","logprobs":[],"obfuscation":"kvwL7o6mjbWXe"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":498,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" with","logprobs":[],"obfuscation":"YIqbelnRwLX"} + data: {"type":"response.output_text.delta","sequence_number":618,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" obstacles","logprobs":[],"obfuscation":"bP4IUb"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":499,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" drivers","logprobs":[],"obfuscation":"NTD6U6A4"} + data: {"type":"response.output_text.delta","sequence_number":619,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"g1HNmcvNg8uR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":500,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"ugh9e69ndGNsP"} + data: {"type":"response.output_text.delta","sequence_number":620,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" present","logprobs":[],"obfuscation":"ae6wnnGl"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":501,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" ensure","logprobs":[],"obfuscation":"YyHcnAXet"} + data: {"type":"response.output_text.delta","sequence_number":621,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":").\n","logprobs":[],"obfuscation":"FrPMRilMeGg9M"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":502,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"5Et7qREq9j4"} + data: {"type":"response.output_text.delta","sequence_number":622,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"a806dzEA5CgXFpw"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":503,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" they","logprobs":[],"obfuscation":"Vuuz4OJPukB"} + data: {"type":"response.output_text.delta","sequence_number":623,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"tN91d2X3NCvdymw"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":504,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" see","logprobs":[],"obfuscation":"Ir05BvkUex8t"} + data: {"type":"response.output_text.delta","sequence_number":624,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Keep","logprobs":[],"obfuscation":"B88hkbSTRco"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":505,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"toTvSaA40dGF"} + data: {"type":"response.output_text.delta","sequence_number":625,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"41r7bdLTMRe"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":506,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" before","logprobs":[],"obfuscation":"21bQkSRVK"} + data: {"type":"response.output_text.delta","sequence_number":626,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" head","logprobs":[],"obfuscation":"aiGGNnlgdYW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":507,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"RduPf23Ba21a"} + data: {"type":"response.output_text.delta","sequence_number":627,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" up","logprobs":[],"obfuscation":"BYdAuEpfmrHia"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":508,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"3VZLwNQY9S"} + data: {"type":"response.output_text.delta","sequence_number":628,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"FH6nKVFgYaCJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":509,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"NQwSCKB6MH16a"} + data: {"type":"response.output_text.delta","sequence_number":629,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" stay","logprobs":[],"obfuscation":"GuFLMyEgii5"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":510,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"6","logprobs":[],"obfuscation":"JIAQF9qmUy0Z9pZ"} + data: {"type":"response.output_text.delta","sequence_number":630,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" focused","logprobs":[],"obfuscation":"INLMvDn2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":511,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"Tqx3GDYC8M8udjW"} + data: {"type":"response.output_text.delta","sequence_number":631,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"obcfc4BjdYTRnpw"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":512,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Cross","logprobs":[],"obfuscation":"ykfuhuktbm"} + data: {"type":"response.output_text.delta","sequence_number":632,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" avoiding","logprobs":[],"obfuscation":"PaAMtVt"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":513,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" steadily","logprobs":[],"obfuscation":"3NpJ0vd"} + data: {"type":"response.output_text.delta","sequence_number":633,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" distractions","logprobs":[],"obfuscation":"XWS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":514,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"A5aAXonPm0Op"} + data: {"type":"response.output_text.delta","sequence_number":634,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" like","logprobs":[],"obfuscation":"3i8qSpVv0eb"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":515,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" directly","logprobs":[],"obfuscation":"OQd0uBz"} + data: {"type":"response.output_text.delta","sequence_number":635,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" texting","logprobs":[],"obfuscation":"cuUDBsBk"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":516,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"kKUlOZQiW4G91GR"} + data: {"type":"response.output_text.delta","sequence_number":636,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"OifrHr4Tm67JZ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":517,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Once","logprobs":[],"obfuscation":"nB6PkrayKPM"} + data: {"type":"response.output_text.delta","sequence_number":637,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" listening","logprobs":[],"obfuscation":"FHmI1K"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":518,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"LJfaEA3YrdNt"} + data: {"type":"response.output_text.delta","sequence_number":638,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"cL1BfK5vEEXva"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":519,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"’re","logprobs":[],"obfuscation":"hjHMpJLZEBz7Y"} + data: {"type":"response.output_text.delta","sequence_number":639,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" loud","logprobs":[],"obfuscation":"dJ8simUVEIB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":520,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sure","logprobs":[],"obfuscation":"48Zw5nyo3o2"} + data: {"type":"response.output_text.delta","sequence_number":640,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" music","logprobs":[],"obfuscation":"s9SWlLA2WT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":521,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" it","logprobs":[],"obfuscation":"Vt6nAZ4AE7w3V"} + data: {"type":"response.output_text.delta","sequence_number":641,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"TZpYQaBGyjPEP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":522,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"’s","logprobs":[],"obfuscation":"xoVmB2DoQDtg6t"} + data: {"type":"response.output_text.delta","sequence_number":642,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"6","logprobs":[],"obfuscation":"qFdolhz6xLoLQhR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":523,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" safe","logprobs":[],"obfuscation":"Mw3WeYV2SF2"} + data: {"type":"response.output_text.delta","sequence_number":643,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"wa5qN8SBYJ18YPw"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":524,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"WoY4KZcAdcaw9rs"} + data: {"type":"response.output_text.delta","sequence_number":644,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Be","logprobs":[],"obfuscation":"MaHP78WPm4lox"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":525,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"OpTcD7VtY9"} + data: {"type":"response.output_text.delta","sequence_number":645,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Extra","logprobs":[],"obfuscation":"nLQ2Pi5lRa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":526,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"q8GNqqiuQnBby"} + data: {"type":"response.output_text.delta","sequence_number":646,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" C","logprobs":[],"obfuscation":"EQGutVlUPOa8o8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":527,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"q2qLQjVZHXXpBF"} + data: {"type":"response.output_text.delta","sequence_number":647,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"aut","logprobs":[],"obfuscation":"qpFsDTSen0c2a"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":528,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" straight","logprobs":[],"obfuscation":"NrNveNv"} + data: {"type":"response.output_text.delta","sequence_number":648,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"ious","logprobs":[],"obfuscation":"tFR3xE8AMyFf"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":529,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" line","logprobs":[],"obfuscation":"LmyMkdgiuAu"} + data: {"type":"response.output_text.delta","sequence_number":649,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":":\n","logprobs":[],"obfuscation":"HzYNQnYBEPRL8D"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":530,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"wuoemwmkyrQJMIE"} + data: {"type":"response.output_text.delta","sequence_number":650,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"sGEXqncV0SaOhsS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":531,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" without","logprobs":[],"obfuscation":"VN6gMQNA"} + data: {"type":"response.output_text.delta","sequence_number":651,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"TyoBSnPa9yXax0y"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":532,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" stopping","logprobs":[],"obfuscation":"pMcG4bF"} + data: {"type":"response.output_text.delta","sequence_number":652,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Look","logprobs":[],"obfuscation":"lUBOVW9m42I"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":533,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"QBalDHmQZDvH6iP"} + data: {"type":"response.output_text.delta","sequence_number":653,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" out","logprobs":[],"obfuscation":"77eRmINhZa8r"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":534,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"gWnpZijSUvKTh"} + data: {"type":"response.output_text.delta","sequence_number":654,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"WTMEEFYRMDPe"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":535,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" minimize","logprobs":[],"obfuscation":"kZVUzz8"} + data: {"type":"response.output_text.delta","sequence_number":655,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" vehicles","logprobs":[],"obfuscation":"AzxSQIr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":536,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"1G2dJaPiTePv"} + data: {"type":"response.output_text.delta","sequence_number":656,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" turning","logprobs":[],"obfuscation":"Ej0YytmE"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":537,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" time","logprobs":[],"obfuscation":"MyAFr7peHwc"} + data: {"type":"response.output_text.delta","sequence_number":657,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" into","logprobs":[],"obfuscation":"sxJ35EktFsU"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":538,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"jhYrRUQzjDhO"} + data: {"type":"response.output_text.delta","sequence_number":658,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"rXUb4WOCnXhg"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":539,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" spend","logprobs":[],"obfuscation":"8uC1jPbrgA"} + data: {"type":"response.output_text.delta","sequence_number":659,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" street","logprobs":[],"obfuscation":"dkXm0ZX6f"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":540,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"dPRwqkVCkkmQN"} + data: {"type":"response.output_text.delta","sequence_number":660,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"ApxdF987rRf41"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":541,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"uRzek7hxeNAG"} + data: {"type":"response.output_text.delta","sequence_number":661,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" coming","logprobs":[],"obfuscation":"SlAyeTNQk"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":542,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" roadway","logprobs":[],"obfuscation":"ybtbt0AZ"} + data: {"type":"response.output_text.delta","sequence_number":662,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" from","logprobs":[],"obfuscation":"CPaMuVGlehr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":543,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"Dml5bQBvUOljL"} + data: {"type":"response.output_text.delta","sequence_number":663,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" unexpected","logprobs":[],"obfuscation":"6vRpc"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":544,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"7","logprobs":[],"obfuscation":"fiurvrJRL3ER8DZ"} + data: {"type":"response.output_text.delta","sequence_number":664,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" directions","logprobs":[],"obfuscation":"MyOYS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":545,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"QFk8Uj0CJ47nGpn"} + data: {"type":"response.output_text.delta","sequence_number":665,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n","logprobs":[],"obfuscation":"9oce3cVN0Rdp09"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":546,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Stay","logprobs":[],"obfuscation":"c7F8ejQ0FJj"} + data: {"type":"response.output_text.delta","sequence_number":666,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ","logprobs":[],"obfuscation":"23y7ELN7rblkTjR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":547,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" visible","logprobs":[],"obfuscation":"fdozxa09"} + data: {"type":"response.output_text.delta","sequence_number":667,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"•","logprobs":[],"obfuscation":"xX9ZyFwPWBwr4SS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":548,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"wAMd4LScnySoY4J"} + data: {"type":"response.output_text.delta","sequence_number":668,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" In","logprobs":[],"obfuscation":"qHLkH5aS37ULV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":549,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"lUBRFdmEHOvg5"} + data: {"type":"response.output_text.delta","sequence_number":669,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" areas","logprobs":[],"obfuscation":"rZU960ug6q"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":550,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"eXdw8JUtGirF"} + data: {"type":"response.output_text.delta","sequence_number":670,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" with","logprobs":[],"obfuscation":"BSpfRew99iW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":551,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"’re","logprobs":[],"obfuscation":"xze0OUwtQdYWV"} + data: {"type":"response.output_text.delta","sequence_number":671,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" heavy","logprobs":[],"obfuscation":"1dpunDTGFT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":552,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" crossing","logprobs":[],"obfuscation":"IIRl5R6"} + data: {"type":"response.output_text.delta","sequence_number":672,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" traffic","logprobs":[],"obfuscation":"LrjeQbl3"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":553,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" at","logprobs":[],"obfuscation":"7KyhJsuNnSn36"} + data: {"type":"response.output_text.delta","sequence_number":673,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"ZWMSpzJNBMrKa"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":554,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" night","logprobs":[],"obfuscation":"yM5Or2SVDD"} + data: {"type":"response.output_text.delta","sequence_number":674,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" poor","logprobs":[],"obfuscation":"2UMqxnhEM5M"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":555,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"ZB6ey4h6Vytoy"} + data: {"type":"response.output_text.delta","sequence_number":675,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" visibility","logprobs":[],"obfuscation":"wiaS8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":556,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"6N3Xt4YXqKkLD"} + data: {"type":"response.output_text.delta","sequence_number":676,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" (","logprobs":[],"obfuscation":"SnRkCnyRFiensJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":557,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" low","logprobs":[],"obfuscation":"Cs91whx7gspG"} + data: {"type":"response.output_text.delta","sequence_number":677,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"like","logprobs":[],"obfuscation":"An4csfx68QyL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":558,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"-light","logprobs":[],"obfuscation":"CKcUchjsvo"} + data: {"type":"response.output_text.delta","sequence_number":678,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" at","logprobs":[],"obfuscation":"0L3oJTp4d5MYi"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":559,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" conditions","logprobs":[],"obfuscation":"xtBDk"} + data: {"type":"response.output_text.delta","sequence_number":679,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" night","logprobs":[],"obfuscation":"xc2NrBXARi"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":560,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"WqkkuJkh6qWqYRt"} + data: {"type":"response.output_text.delta","sequence_number":680,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"),","logprobs":[],"obfuscation":"5PtidnSNsfXsPM"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":561,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" wear","logprobs":[],"obfuscation":"L4XrZp5VJ4v"} + data: {"type":"response.output_text.delta","sequence_number":681,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" consider","logprobs":[],"obfuscation":"sYN001j"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":562,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" bright","logprobs":[],"obfuscation":"SN0Fl45nj"} + data: {"type":"response.output_text.delta","sequence_number":682,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" wearing","logprobs":[],"obfuscation":"s3AAty3P"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":563,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"vTTf9YvuEzkMN"} + data: {"type":"response.output_text.delta","sequence_number":683,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" bright","logprobs":[],"obfuscation":"DDN0cCbFJ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":564,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" reflective","logprobs":[],"obfuscation":"aDylQ"} + data: {"type":"response.output_text.delta","sequence_number":684,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"O3CDlBYrY19ZH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":565,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" clothing","logprobs":[],"obfuscation":"JJMHUED"} + data: {"type":"response.output_text.delta","sequence_number":685,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" reflective","logprobs":[],"obfuscation":"QHrFm"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":566,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" so","logprobs":[],"obfuscation":"2aGWaj6B0L2In"} + data: {"type":"response.output_text.delta","sequence_number":686,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" clothing","logprobs":[],"obfuscation":"5oKZacW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":567,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" drivers","logprobs":[],"obfuscation":"ljLxDppz"} + data: {"type":"response.output_text.delta","sequence_number":687,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"JOEJbHUVenvPR"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":568,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" can","logprobs":[],"obfuscation":"VxnpB1YPKB6U"} + data: {"type":"response.output_text.delta","sequence_number":688,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" increase","logprobs":[],"obfuscation":"XuGkPja"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":569,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" see","logprobs":[],"obfuscation":"KdITwSjPElWY"} + data: {"type":"response.output_text.delta","sequence_number":689,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"7En9GGBUgH2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":570,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"vMKJcwaZWBN6"} + data: {"type":"response.output_text.delta","sequence_number":690,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" visibility","logprobs":[],"obfuscation":"fsI5i"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":571,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"N9VfdiWmaunh9"} + data: {"type":"response.output_text.delta","sequence_number":691,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"fqEXRZqbmdt3T"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":572,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"8","logprobs":[],"obfuscation":"twaikWghSaQ8DOq"} + data: {"type":"response.output_text.delta","sequence_number":692,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"Always","logprobs":[],"obfuscation":"wLETmPB5nh"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":573,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"NiKWWlDNGacStL7"} + data: {"type":"response.output_text.delta","sequence_number":693,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" keep","logprobs":[],"obfuscation":"9T2uUiNsQPb"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":574,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Be","logprobs":[],"obfuscation":"3tx05RqtCAcvk"} + data: {"type":"response.output_text.delta","sequence_number":694,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" in","logprobs":[],"obfuscation":"NfT8TKIkt1h4Y"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":575,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" extra","logprobs":[],"obfuscation":"K7J4F6Swfp"} + data: {"type":"response.output_text.delta","sequence_number":695,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" mind","logprobs":[],"obfuscation":"KV8UGNlDSkr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":576,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cautious","logprobs":[],"obfuscation":"k0tc2cq"} + data: {"type":"response.output_text.delta","sequence_number":696,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"NeJKm15ZbAu"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":577,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" when","logprobs":[],"obfuscation":"VC6nPhNJ4tX"} + data: {"type":"response.output_text.delta","sequence_number":697,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"—even","logprobs":[],"obfuscation":"gNpN6gcKaoZ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":578,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" vehicles","logprobs":[],"obfuscation":"dHFovvX"} + data: {"type":"response.output_text.delta","sequence_number":698,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" if","logprobs":[],"obfuscation":"gkeuLjHRN7q09"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":579,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"lhOFmi442UEF"} + data: {"type":"response.output_text.delta","sequence_number":699,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"hFHo2TNKh9fC"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":580,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" turning","logprobs":[],"obfuscation":"lIBeaVWx"} + data: {"type":"response.output_text.delta","sequence_number":700,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" have","logprobs":[],"obfuscation":"GmSsRfeynSi"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":581,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"zUZBNLnVG76RqIo"} + data: {"type":"response.output_text.delta","sequence_number":701,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" the","logprobs":[],"obfuscation":"NF6DsQfdAl0O"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":582,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Even","logprobs":[],"obfuscation":"6iDbXUBjsjA"} + data: {"type":"response.output_text.delta","sequence_number":702,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" right","logprobs":[],"obfuscation":"oyir4lailg"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":583,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" when","logprobs":[],"obfuscation":"yxycVOAT1ut"} + data: {"type":"response.output_text.delta","sequence_number":703,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"-of","logprobs":[],"obfuscation":"Wte62GVBFukBH"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":584,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" designated","logprobs":[],"obfuscation":"rwilV"} + data: {"type":"response.output_text.delta","sequence_number":704,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"-way","logprobs":[],"obfuscation":"mqtGSezOy2S2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":585,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"qIIHQNMljRdmd"} + data: {"type":"response.output_text.delta","sequence_number":705,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"—","logprobs":[],"obfuscation":"aUKjIXKuGlh9ERt"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":586,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" go","logprobs":[],"obfuscation":"rbL9pjL3LeGVD"} + data: {"type":"response.output_text.delta","sequence_number":706,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"drivers","logprobs":[],"obfuscation":"Cm2CIqsIi"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":587,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"uMZtSYBaTj2LyTq"} + data: {"type":"response.output_text.delta","sequence_number":707,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" might","logprobs":[],"obfuscation":"JZREcaGpJS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":588,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sometimes","logprobs":[],"obfuscation":"nIUSXQ"} + data: {"type":"response.output_text.delta","sequence_number":708,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" not","logprobs":[],"obfuscation":"bvoMCHVKKMDS"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":589,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" cars","logprobs":[],"obfuscation":"INRZEa7vGxW"} + data: {"type":"response.output_text.delta","sequence_number":709,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" always","logprobs":[],"obfuscation":"OZtG13Grx"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":590,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" may","logprobs":[],"obfuscation":"dJtXyPpUY126"} + data: {"type":"response.output_text.delta","sequence_number":710,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" be","logprobs":[],"obfuscation":"R87xcH8o96GNW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":591,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" mis","logprobs":[],"obfuscation":"7yScWBG7X4p2"} + data: {"type":"response.output_text.delta","sequence_number":711,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" aware","logprobs":[],"obfuscation":"1WEMHuZByh"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":592,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"judge","logprobs":[],"obfuscation":"AmPYrj3Tpd3"} + data: {"type":"response.output_text.delta","sequence_number":712,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" of","logprobs":[],"obfuscation":"9dgs5k76NBiyr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":593,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"jNM61w8sWvx"} + data: {"type":"response.output_text.delta","sequence_number":713,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" pedestrians","logprobs":[],"obfuscation":"Mscq"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":594,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" speed","logprobs":[],"obfuscation":"4llmpPbfXv"} + data: {"type":"response.output_text.delta","sequence_number":714,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"vh5VmReOhCzkYIQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":595,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"Gu97lh6bP2XC7"} + data: {"type":"response.output_text.delta","sequence_number":715,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" Staying","logprobs":[],"obfuscation":"E1DHJuEW"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":596,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" intent","logprobs":[],"obfuscation":"E2y3h8ggI"} + data: {"type":"response.output_text.delta","sequence_number":716,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" alert","logprobs":[],"obfuscation":"T1b4W1LeMT"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":597,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"FRXhjb8luTJNKMk"} + data: {"type":"response.output_text.delta","sequence_number":717,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"elOgtFnfnU5s"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":598,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" so","logprobs":[],"obfuscation":"PrCwb5GjlnU2x"} + data: {"type":"response.output_text.delta","sequence_number":718,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" following","logprobs":[],"obfuscation":"2gVvi0"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":599,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" keep","logprobs":[],"obfuscation":"rlBUFPefZUM"} + data: {"type":"response.output_text.delta","sequence_number":719,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" these","logprobs":[],"obfuscation":"SsieIQjn3K"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":600,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" watching","logprobs":[],"obfuscation":"2pap7Xv"} + data: {"type":"response.output_text.delta","sequence_number":720,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" steps","logprobs":[],"obfuscation":"ParfIlYyUP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":601,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"fWl2q97OJ0jn"} + data: {"type":"response.output_text.delta","sequence_number":721,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" will","logprobs":[],"obfuscation":"xo2TJlNOzpt"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":602,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" any","logprobs":[],"obfuscation":"mq3wu2vlaehi"} + data: {"type":"response.output_text.delta","sequence_number":722,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" help","logprobs":[],"obfuscation":"MVUma5MS2c1"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":603,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" unexpected","logprobs":[],"obfuscation":"FSPOq"} + data: {"type":"response.output_text.delta","sequence_number":723,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"wSDY5IlogVrV"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":604,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" movement","logprobs":[],"obfuscation":"5qKbKCc"} + data: {"type":"response.output_text.delta","sequence_number":724,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" minimize","logprobs":[],"obfuscation":"l5Bc5Tg"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":605,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"HXurPJn1glQAZ"} + data: {"type":"response.output_text.delta","sequence_number":725,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" risks","logprobs":[],"obfuscation":"4YGFYSBpnj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":606,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"Remember","logprobs":[],"obfuscation":"jpINeGrd"} + data: {"type":"response.output_text.delta","sequence_number":726,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"2coi4v2DgNeK"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":607,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":":","logprobs":[],"obfuscation":"oocBAu6IqpPj5go"} + data: {"type":"response.output_text.delta","sequence_number":727,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" cross","logprobs":[],"obfuscation":"bUXopYJZaj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":608,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" these","logprobs":[],"obfuscation":"s9NQLcA9UM"} + data: {"type":"response.output_text.delta","sequence_number":728,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safely","logprobs":[],"obfuscation":"5h1uBYumP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":609,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" tips","logprobs":[],"obfuscation":"LmuAKfQys2i"} + data: {"type":"response.output_text.delta","sequence_number":729,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"iC6UnCquCmYC9bQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":610,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" are","logprobs":[],"obfuscation":"Polu1EKRln89"} + data: {"type":"response.output_text.delta","sequence_number":730,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" If","logprobs":[],"obfuscation":"aDb7YU3GF2kvy"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":611,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" general","logprobs":[],"obfuscation":"TWXpjhwL"} + data: {"type":"response.output_text.delta","sequence_number":731,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" you","logprobs":[],"obfuscation":"ZK5Swzobi82T"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":612,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" guidelines","logprobs":[],"obfuscation":"5lM8Q"} + data: {"type":"response.output_text.delta","sequence_number":732,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" have","logprobs":[],"obfuscation":"3WXsKqwm7MD"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":613,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"MOe2PXAJarQ9ZrA"} + data: {"type":"response.output_text.delta","sequence_number":733,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" any","logprobs":[],"obfuscation":"ybWqNOLHCKbN"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":614,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Different","logprobs":[],"obfuscation":"kztDRv"} + data: {"type":"response.output_text.delta","sequence_number":734,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" doubts","logprobs":[],"obfuscation":"0KZ1CIPEx"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":615,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" intersections","logprobs":[],"obfuscation":"4d"} + data: {"type":"response.output_text.delta","sequence_number":735,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" about","logprobs":[],"obfuscation":"YFluAK0L5G"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":616,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"WhCDCuQcC9DUxAy"} + data: {"type":"response.output_text.delta","sequence_number":736,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"sMiQYAYS0ytk4F"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":617,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" neighborhoods","logprobs":[],"obfuscation":"Gq"} + data: {"type":"response.output_text.delta","sequence_number":737,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" particular","logprobs":[],"obfuscation":"hdZlN"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":618,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"xUMCc8TevOLkkKT"} + data: {"type":"response.output_text.delta","sequence_number":738,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" crossing","logprobs":[],"obfuscation":"tErdhER"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":619,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"PV5mFc6w1jcJ"} + data: {"type":"response.output_text.delta","sequence_number":739,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" situation","logprobs":[],"obfuscation":"K6VPpd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":620,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" countries","logprobs":[],"obfuscation":"AiGPap"} + data: {"type":"response.output_text.delta","sequence_number":740,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"aovNi0VtThBzhjL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":621,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" may","logprobs":[],"obfuscation":"H26R4x9c5cvC"} + data: {"type":"response.output_text.delta","sequence_number":741,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" wait","logprobs":[],"obfuscation":"j41KdFQUbxF"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":622,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" have","logprobs":[],"obfuscation":"JKMq8Y0hkpQ"} + data: {"type":"response.output_text.delta","sequence_number":742,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"GS2X6r5A1uYg"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":623,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" specific","logprobs":[],"obfuscation":"HUC9Jxz"} + data: {"type":"response.output_text.delta","sequence_number":743,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" extra","logprobs":[],"obfuscation":"OHDyFEzM00"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":624,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" rules","logprobs":[],"obfuscation":"iGz42weQkd"} + data: {"type":"response.output_text.delta","sequence_number":744,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" confirmation","logprobs":[],"obfuscation":"rPF"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":625,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":",","logprobs":[],"obfuscation":"tLrEf2BKJzSBOQU"} + data: {"type":"response.output_text.delta","sequence_number":745,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" that","logprobs":[],"obfuscation":"yUVIQrMPHJG"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":626,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" so","logprobs":[],"obfuscation":"tJsiuyHrHOweF"} + data: {"type":"response.output_text.delta","sequence_number":746,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" it","logprobs":[],"obfuscation":"uGxZELrPasyfP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":627,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" be","logprobs":[],"obfuscation":"hrplJ6vxtcpXN"} + data: {"type":"response.output_text.delta","sequence_number":747,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"’s","logprobs":[],"obfuscation":"COZBfgklIOjdi8"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":628,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" sure","logprobs":[],"obfuscation":"I4wMwfuM75F"} + data: {"type":"response.output_text.delta","sequence_number":748,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safe","logprobs":[],"obfuscation":"amMvfHIjPLQ"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":629,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" to","logprobs":[],"obfuscation":"MOk4hAjS2cDFv"} + data: {"type":"response.output_text.delta","sequence_number":749,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" or","logprobs":[],"obfuscation":"yiCwcHjOMIEFp"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":630,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" follow","logprobs":[],"obfuscation":"kOZQWsBrU"} + data: {"type":"response.output_text.delta","sequence_number":750,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" ask","logprobs":[],"obfuscation":"amSBRsBTXYBs"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":631,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" local","logprobs":[],"obfuscation":"16UKHifUkU"} + data: {"type":"response.output_text.delta","sequence_number":751,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" a","logprobs":[],"obfuscation":"JhmN6QkCdZPkfP"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":632,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" regulations","logprobs":[],"obfuscation":"IGkA"} + data: {"type":"response.output_text.delta","sequence_number":752,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" knowledgeable","logprobs":[],"obfuscation":"eK"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":633,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" and","logprobs":[],"obfuscation":"P2R8JkYDNVUn"} + data: {"type":"response.output_text.delta","sequence_number":753,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" local","logprobs":[],"obfuscation":"dPEcmQ6iNL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":634,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" adapt","logprobs":[],"obfuscation":"mIxum0YCl4"} + data: {"type":"response.output_text.delta","sequence_number":754,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" for","logprobs":[],"obfuscation":"7LAFvE8Egkyr"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":635,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" your","logprobs":[],"obfuscation":"Vi1VyNQHIeM"} + data: {"type":"response.output_text.delta","sequence_number":755,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" advice","logprobs":[],"obfuscation":"D2QuGKKAd"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":636,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" behavior","logprobs":[],"obfuscation":"OTgwdFP"} + data: {"type":"response.output_text.delta","sequence_number":756,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":".\n\n","logprobs":[],"obfuscation":"xugb6Yip7MnNE"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":637,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" accordingly","logprobs":[],"obfuscation":"7J8n"} + data: {"type":"response.output_text.delta","sequence_number":757,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"Stay","logprobs":[],"obfuscation":"IOex6uzHWLC2"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":638,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":".","logprobs":[],"obfuscation":"RMIxqwykX9mz5el"} + data: {"type":"response.output_text.delta","sequence_number":758,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" safe","logprobs":[],"obfuscation":"ivshtCy19LB"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":639,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" Stay","logprobs":[],"obfuscation":"f6ydBwSi8mr"} + data: {"type":"response.output_text.delta","sequence_number":759,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" out","logprobs":[],"obfuscation":"DvxmnqKeVUvL"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":640,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":" safe","logprobs":[],"obfuscation":"ooMl9bGbaxH"} + data: {"type":"response.output_text.delta","sequence_number":760,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":" there","logprobs":[],"obfuscation":"l3E0DSTNQj"} event: response.output_text.delta - data: {"type":"response.output_text.delta","sequence_number":641,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"delta":"!","logprobs":[],"obfuscation":"Tc1jkbqGA3dMBti"} + data: {"type":"response.output_text.delta","sequence_number":761,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"delta":"!","logprobs":[],"obfuscation":"4wX5MX53BKXA7Hc"} event: response.output_text.done - data: {"type":"response.output_text.done","sequence_number":642,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"text":"I’m not a traffic safety expert, but here are some general tips on how to cross a street safely. Always follow your local traffic laws and any posted signs or signals:\n\n1. Find a designated crossing area. Whenever possible, use a marked crosswalk or a pedestrian crossing. If there’s a traffic light, wait for the “Walk” signal before proceeding.\n\n2. Stop at the curb. Before stepping off, stand at the edge of the sidewalk or curb. Avoid the “dilemma zone” where drivers might misjudge your intentions.\n\n3. Look both ways—even if you have the right-of-way. Begin by looking left, then right, and left again. This helps ensure you notice vehicles coming from different directions (especially important at intersections or when turning vehicles may be present).\n\n4. Listen and stay alert. Remove or pause distractions (like cell phones or headphones) so you can hear any warning sounds, such as horns or sirens.\n\n5. Make eye contact. If possible, try to establish eye contact with drivers to ensure that they see you before you cross.\n\n6. Cross steadily and directly. Once you’re sure it’s safe, cross in a straight line, without stopping, to minimize the time you spend in the roadway.\n\n7. Stay visible. If you’re crossing at night or in low-light conditions, wear bright or reflective clothing so drivers can see you.\n\n8. Be extra cautious when vehicles are turning. Even when designated to go, sometimes cars may misjudge your speed or intent, so keep watching for any unexpected movement.\n\nRemember: these tips are general guidelines. Different intersections, neighborhoods, and countries may have specific rules, so be sure to follow local regulations and adapt your behavior accordingly. Stay safe!","logprobs":[]} + data: {"type":"response.output_text.done","sequence_number":762,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"text":"Here are some general guidelines to help you cross the street safely. Remember that these suggestions are for typical pedestrian situations and that local road rules or specific circumstances might require additional precautions:\n\n1. Know Your Crossing Point:\n • Use designated crosswalks, intersections, or pedestrian crossings whenever possible.\n • If a crosswalk isn’t available, choose a spot where drivers can see you from a distance and there’s a clear view in both directions.\n\n2. Observe Traffic Signals and Signs:\n • At intersections with traffic lights, wait until the pedestrian “walk” signal is on.\n • Even when you have the signal, stay alert—drivers sometimes may not see you or may not stop as expected.\n\n3. Look Both Ways:\n • Before stepping off the curb, take a moment to look in all directions.\n  – Check left first (as vehicles typically approach from that direction in countries where you drive on the right).\n  – Then check right.\n  – Look left again just before you cross.\n • Continue to be aware of your surroundings as you cross the street.\n\n4. Make Eye Contact:\n • If you see an approaching driver, try to make eye contact to ensure the driver has seen you before you step off.\n • Don’t assume that every driver will yield—you’re safer when you’re the one in control of the crossing decision.\n\n5. Cross Quickly and Safely:\n • Once you’re sure it’s safe, cross the street briskly without running (which can be risky if obstacles are present).\n • Keep your head up and stay focused, avoiding distractions like texting or listening to loud music.\n\n6. Be Extra Cautious:\n • Look out for vehicles turning into the street or coming from unexpected directions.\n • In areas with heavy traffic or poor visibility (like at night), consider wearing bright or reflective clothing to increase your visibility.\n\nAlways keep in mind that—even if you have the right-of-way—drivers might not always be aware of pedestrians. Staying alert and following these steps will help you minimize risks and cross safely. If you have any doubts about a particular crossing situation, wait for extra confirmation that it’s safe or ask a knowledgeable local for advice.\n\nStay safe out there!","logprobs":[]} event: response.content_part.done - data: {"type":"response.content_part.done","sequence_number":643,"item_id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","output_index":1,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"I’m not a traffic safety expert, but here are some general tips on how to cross a street safely. Always follow your local traffic laws and any posted signs or signals:\n\n1. Find a designated crossing area. Whenever possible, use a marked crosswalk or a pedestrian crossing. If there’s a traffic light, wait for the “Walk” signal before proceeding.\n\n2. Stop at the curb. Before stepping off, stand at the edge of the sidewalk or curb. Avoid the “dilemma zone” where drivers might misjudge your intentions.\n\n3. Look both ways—even if you have the right-of-way. Begin by looking left, then right, and left again. This helps ensure you notice vehicles coming from different directions (especially important at intersections or when turning vehicles may be present).\n\n4. Listen and stay alert. Remove or pause distractions (like cell phones or headphones) so you can hear any warning sounds, such as horns or sirens.\n\n5. Make eye contact. If possible, try to establish eye contact with drivers to ensure that they see you before you cross.\n\n6. Cross steadily and directly. Once you’re sure it’s safe, cross in a straight line, without stopping, to minimize the time you spend in the roadway.\n\n7. Stay visible. If you’re crossing at night or in low-light conditions, wear bright or reflective clothing so drivers can see you.\n\n8. Be extra cautious when vehicles are turning. Even when designated to go, sometimes cars may misjudge your speed or intent, so keep watching for any unexpected movement.\n\nRemember: these tips are general guidelines. Different intersections, neighborhoods, and countries may have specific rules, so be sure to follow local regulations and adapt your behavior accordingly. Stay safe!"}} + data: {"type":"response.content_part.done","sequence_number":763,"item_id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","output_index":1,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"Here are some general guidelines to help you cross the street safely. Remember that these suggestions are for typical pedestrian situations and that local road rules or specific circumstances might require additional precautions:\n\n1. Know Your Crossing Point:\n • Use designated crosswalks, intersections, or pedestrian crossings whenever possible.\n • If a crosswalk isn’t available, choose a spot where drivers can see you from a distance and there’s a clear view in both directions.\n\n2. Observe Traffic Signals and Signs:\n • At intersections with traffic lights, wait until the pedestrian “walk” signal is on.\n • Even when you have the signal, stay alert—drivers sometimes may not see you or may not stop as expected.\n\n3. Look Both Ways:\n • Before stepping off the curb, take a moment to look in all directions.\n  – Check left first (as vehicles typically approach from that direction in countries where you drive on the right).\n  – Then check right.\n  – Look left again just before you cross.\n • Continue to be aware of your surroundings as you cross the street.\n\n4. Make Eye Contact:\n • If you see an approaching driver, try to make eye contact to ensure the driver has seen you before you step off.\n • Don’t assume that every driver will yield—you’re safer when you’re the one in control of the crossing decision.\n\n5. Cross Quickly and Safely:\n • Once you’re sure it’s safe, cross the street briskly without running (which can be risky if obstacles are present).\n • Keep your head up and stay focused, avoiding distractions like texting or listening to loud music.\n\n6. Be Extra Cautious:\n • Look out for vehicles turning into the street or coming from unexpected directions.\n • In areas with heavy traffic or poor visibility (like at night), consider wearing bright or reflective clothing to increase your visibility.\n\nAlways keep in mind that—even if you have the right-of-way—drivers might not always be aware of pedestrians. Staying alert and following these steps will help you minimize risks and cross safely. If you have any doubts about a particular crossing situation, wait for extra confirmation that it’s safe or ask a knowledgeable local for advice.\n\nStay safe out there!"}} event: response.output_item.done - data: {"type":"response.output_item.done","sequence_number":644,"output_index":1,"item":{"id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"I’m not a traffic safety expert, but here are some general tips on how to cross a street safely. Always follow your local traffic laws and any posted signs or signals:\n\n1. Find a designated crossing area. Whenever possible, use a marked crosswalk or a pedestrian crossing. If there’s a traffic light, wait for the “Walk” signal before proceeding.\n\n2. Stop at the curb. Before stepping off, stand at the edge of the sidewalk or curb. Avoid the “dilemma zone” where drivers might misjudge your intentions.\n\n3. Look both ways—even if you have the right-of-way. Begin by looking left, then right, and left again. This helps ensure you notice vehicles coming from different directions (especially important at intersections or when turning vehicles may be present).\n\n4. Listen and stay alert. Remove or pause distractions (like cell phones or headphones) so you can hear any warning sounds, such as horns or sirens.\n\n5. Make eye contact. If possible, try to establish eye contact with drivers to ensure that they see you before you cross.\n\n6. Cross steadily and directly. Once you’re sure it’s safe, cross in a straight line, without stopping, to minimize the time you spend in the roadway.\n\n7. Stay visible. If you’re crossing at night or in low-light conditions, wear bright or reflective clothing so drivers can see you.\n\n8. Be extra cautious when vehicles are turning. Even when designated to go, sometimes cars may misjudge your speed or intent, so keep watching for any unexpected movement.\n\nRemember: these tips are general guidelines. Different intersections, neighborhoods, and countries may have specific rules, so be sure to follow local regulations and adapt your behavior accordingly. Stay safe!"}],"role":"assistant"}} + data: {"type":"response.output_item.done","sequence_number":764,"output_index":1,"item":{"id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"Here are some general guidelines to help you cross the street safely. Remember that these suggestions are for typical pedestrian situations and that local road rules or specific circumstances might require additional precautions:\n\n1. Know Your Crossing Point:\n • Use designated crosswalks, intersections, or pedestrian crossings whenever possible.\n • If a crosswalk isn’t available, choose a spot where drivers can see you from a distance and there’s a clear view in both directions.\n\n2. Observe Traffic Signals and Signs:\n • At intersections with traffic lights, wait until the pedestrian “walk” signal is on.\n • Even when you have the signal, stay alert—drivers sometimes may not see you or may not stop as expected.\n\n3. Look Both Ways:\n • Before stepping off the curb, take a moment to look in all directions.\n  – Check left first (as vehicles typically approach from that direction in countries where you drive on the right).\n  – Then check right.\n  – Look left again just before you cross.\n • Continue to be aware of your surroundings as you cross the street.\n\n4. Make Eye Contact:\n • If you see an approaching driver, try to make eye contact to ensure the driver has seen you before you step off.\n • Don’t assume that every driver will yield—you’re safer when you’re the one in control of the crossing decision.\n\n5. Cross Quickly and Safely:\n • Once you’re sure it’s safe, cross the street briskly without running (which can be risky if obstacles are present).\n • Keep your head up and stay focused, avoiding distractions like texting or listening to loud music.\n\n6. Be Extra Cautious:\n • Look out for vehicles turning into the street or coming from unexpected directions.\n • In areas with heavy traffic or poor visibility (like at night), consider wearing bright or reflective clothing to increase your visibility.\n\nAlways keep in mind that—even if you have the right-of-way—drivers might not always be aware of pedestrians. Staying alert and following these steps will help you minimize risks and cross safely. If you have any doubts about a particular crossing situation, wait for extra confirmation that it’s safe or ask a knowledgeable local for advice.\n\nStay safe out there!"}],"role":"assistant"}} event: response.completed - data: {"type":"response.completed","sequence_number":645,"response":{"id":"resp_68b76f88d55481a0ae465635af30a42d01b59cf192cc16cf","object":"response","created_at":1756852104,"status":"completed","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[{"id":"rs_68b76f917ebc81a0acddae1fcfc1ce0d01b59cf192cc16cf","type":"reasoning","summary":[{"type":"summary_text","text":"**Providing street-crossing advice**\n\nThe user is asking how to cross the street, which likely means they want safe instructions. It’s important that I analyze potential risks and ensure the guidelines I give are safe. I should include real-world safety tips and be cautious in my response. I also want to make sure to clarify that I’m not a traffic safety expert. I’ll lay out clear steps for crossing the street safely."},{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI need to give clear instructions for crossing the street safely. While it might seem trivial, it’s important to ensure I’m providing useful guidance. I should include basic advice like finding a crosswalk, following traffic signals, and being aware of vehicles. Key steps include \"stop, look, listen,\" and remembering to check left, right, and left again before crossing. It's also necessary to state that I'm not a traffic safety expert, and local guidelines should be consulted for specific circumstances."},{"type":"summary_text","text":"**Providing safe crossing steps**\n\nI need to provide clear instructions for crossing the street safely. First, I’ll list essential steps, like using crosswalks and checking traffic signals. I must emphasize safety by advising people to stop and look left, right, and then left again before crossing. It’s crucial to note that I’m not a safety expert and to follow local guidelines. I’ll highlight the importance of avoiding distractions, and wearing bright clothing at night for better visibility."}]},{"id":"msg_68b76f99240c81a0b42d2fc92024631801b59cf192cc16cf","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"I’m not a traffic safety expert, but here are some general tips on how to cross a street safely. Always follow your local traffic laws and any posted signs or signals:\n\n1. Find a designated crossing area. Whenever possible, use a marked crosswalk or a pedestrian crossing. If there’s a traffic light, wait for the “Walk” signal before proceeding.\n\n2. Stop at the curb. Before stepping off, stand at the edge of the sidewalk or curb. Avoid the “dilemma zone” where drivers might misjudge your intentions.\n\n3. Look both ways—even if you have the right-of-way. Begin by looking left, then right, and left again. This helps ensure you notice vehicles coming from different directions (especially important at intersections or when turning vehicles may be present).\n\n4. Listen and stay alert. Remove or pause distractions (like cell phones or headphones) so you can hear any warning sounds, such as horns or sirens.\n\n5. Make eye contact. If possible, try to establish eye contact with drivers to ensure that they see you before you cross.\n\n6. Cross steadily and directly. Once you’re sure it’s safe, cross in a straight line, without stopping, to minimize the time you spend in the roadway.\n\n7. Stay visible. If you’re crossing at night or in low-light conditions, wear bright or reflective clothing so drivers can see you.\n\n8. Be extra cautious when vehicles are turning. Even when designated to go, sometimes cars may misjudge your speed or intent, so keep watching for any unexpected movement.\n\nRemember: these tips are general guidelines. Different intersections, neighborhoods, and countries may have specific rules, so be sure to follow local regulations and adapt your behavior accordingly. Stay safe!"}],"role":"assistant"}],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":13,"input_tokens_details":{"cached_tokens":0},"output_tokens":1503,"output_tokens_details":{"reasoning_tokens":1152},"total_tokens":1516},"user":null,"metadata":{}}} + data: {"type":"response.completed","sequence_number":765,"response":{"id":"resp_68bb4cbe885481a3a55b6a2e6d6aa5120b681c5350c0b73b","object":"response","created_at":1757105342,"status":"completed","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"o3-mini-2025-01-31","output":[{"id":"rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b","type":"reasoning","encrypted_content":"gAAAAABou0zSk9TstPAHfd9-XczGs1p4RTYzlvgZdOKx6M9Vr95vJI3g2Cq6k9uX38BYIDiELA3_zXUerIDB2iUVf4FbRQEZ_k5xXsJ_fKd-Y_JgaaR_Ue5owuTU5BpnjgY1xesVjbqF4rWU9wb1r-DYtQV7pUvboFHrhZb-QtJv80mU9HVGR5RzlJOe804qIpaSsQZh2LgKLUWt98RsZMWcuisBr-OCf_08GCnGUvyHbvHZxNIavvGofEEJOhGyp3vg5-Fq6ehcUIomMfv1tJo_M6jCVvjjvUTBzmyO1tu7dcTxdxJ0Kq4ram2ybvFvFECKOL0VoPbO9JKQTy8LvfK-5q6Ci2-qO7ak7ou-iTx3d90tO14W9YZFgM_n6Un7kQNKyj354VinA2qt3dFdYR8X50pkguyh1NxzSlb-xo_DZhD9sBzP0mA=","summary":[{"type":"summary_text","text":"**Providing safe crossing instructions**\n\nI'll first remind myself to follow local guidelines and consult a professional if I'm unsure. To cross the street safely, I’ll note a few key points: always look left, right, and then left again before moving; wait for a gap in traffic; and use crosswalks when possible. My message will include these instructions clearly, emphasizing the importance of checking for vehicles and waiting for pedestrian signals before crossing."},{"type":"summary_text","text":"**Creating pedestrian safety instructions**\n\nTo cross the street safely, I’ll share important steps. First, always find a designated crossing area. If there's a traffic light, wait for the green pedestrian signal. Before stepping off, look left, right, and left again to check for vehicles. While crossing, move at a steady pace and stay alert. After reaching the other side, wait for a gap if needed. I’ll add that this guidance is general and may not apply to all situations, so being aware is crucial."},{"type":"summary_text","text":"**Providing crossing instructions**\n\nI’ll make clear that I’m not an official traffic expert and suggest consulting local guidelines for personalized advice. My final answer will include step-by-step instructions: \n\n1. Use a crosswalk if it’s available.\n2. Wait for the proper signal before crossing.\n3. Look left, right, and left again to ensure it's safe.\n4. Continue crossing if no vehicles are approaching.\n5. If there's no crosswalk, choose a safe spot to cross.\n\nI’ll share this in clear, plain text for easy understanding."}]},{"id":"msg_68bb4cd204f881a3b7efcb8866b634410b681c5350c0b73b","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"Here are some general guidelines to help you cross the street safely. Remember that these suggestions are for typical pedestrian situations and that local road rules or specific circumstances might require additional precautions:\n\n1. Know Your Crossing Point:\n • Use designated crosswalks, intersections, or pedestrian crossings whenever possible.\n • If a crosswalk isn’t available, choose a spot where drivers can see you from a distance and there’s a clear view in both directions.\n\n2. Observe Traffic Signals and Signs:\n • At intersections with traffic lights, wait until the pedestrian “walk” signal is on.\n • Even when you have the signal, stay alert—drivers sometimes may not see you or may not stop as expected.\n\n3. Look Both Ways:\n • Before stepping off the curb, take a moment to look in all directions.\n  – Check left first (as vehicles typically approach from that direction in countries where you drive on the right).\n  – Then check right.\n  – Look left again just before you cross.\n • Continue to be aware of your surroundings as you cross the street.\n\n4. Make Eye Contact:\n • If you see an approaching driver, try to make eye contact to ensure the driver has seen you before you step off.\n • Don’t assume that every driver will yield—you’re safer when you’re the one in control of the crossing decision.\n\n5. Cross Quickly and Safely:\n • Once you’re sure it’s safe, cross the street briskly without running (which can be risky if obstacles are present).\n • Keep your head up and stay focused, avoiding distractions like texting or listening to loud music.\n\n6. Be Extra Cautious:\n • Look out for vehicles turning into the street or coming from unexpected directions.\n • In areas with heavy traffic or poor visibility (like at night), consider wearing bright or reflective clothing to increase your visibility.\n\nAlways keep in mind that—even if you have the right-of-way—drivers might not always be aware of pedestrians. Staying alert and following these steps will help you minimize risks and cross safely. If you have any doubts about a particular crossing situation, wait for extra confirmation that it’s safe or ask a knowledgeable local for advice.\n\nStay safe out there!"}],"role":"assistant"}],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"high","summary":"detailed"},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":13,"input_tokens_details":{"cached_tokens":0},"output_tokens":1733,"output_tokens_details":{"reasoning_tokens":1280},"total_tokens":1746},"user":null,"metadata":{}}} headers: alt-svc: @@ -1975,7 +2337,7 @@ interactions: openai-organization: - pydantic-28gund openai-processing-ms: - - '66' + - '45' openai-project: - proj_dKobscVY9YJxeEaDJen54e3d openai-version: diff --git a/tests/models/test_cohere.py b/tests/models/test_cohere.py index 03f52e56ae..4f4de791dd 100644 --- a/tests/models/test_cohere.py +++ b/tests/models/test_cohere.py @@ -417,7 +417,7 @@ async def test_cohere_model_thinking_part(allow_model_requests: None, co_api_key pytest.skip('OpenAI is not installed') openai_model = OpenAIResponsesModel('o3-mini', provider=OpenAIProvider(api_key=openai_api_key)) - co_model = CohereModel('command-r7b-12-2024', provider=CohereProvider(api_key=co_api_key)) + co_model = CohereModel('command-a-reasoning-08-2025', provider=CohereProvider(api_key=co_api_key)) agent = Agent(openai_model) # We call OpenAI to get the thinking parts, because Google disabled the thoughts in the API. @@ -436,14 +436,13 @@ async def test_cohere_model_thinking_part(allow_model_requests: None, co_api_key IsInstance(ThinkingPart), IsInstance(ThinkingPart), IsInstance(ThinkingPart), - IsInstance(ThinkingPart), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=13, output_tokens=1909, details={'reasoning_tokens': 1472}), + usage=RequestUsage(input_tokens=13, output_tokens=2241, details={'reasoning_tokens': 1856}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_680739f4ad748191bd11096967c37c8b048efc3f8b2a068e', + provider_response_id='resp_68bb5f153efc81a2b3958ddb1f257ff30886f4f20524f3b9', ), ] ) @@ -461,14 +460,13 @@ async def test_cohere_model_thinking_part(allow_model_requests: None, co_api_key IsInstance(ThinkingPart), IsInstance(ThinkingPart), IsInstance(ThinkingPart), - IsInstance(ThinkingPart), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=13, output_tokens=1909, details={'reasoning_tokens': 1472}), + usage=RequestUsage(input_tokens=13, output_tokens=2241, details={'reasoning_tokens': 1856}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_680739f4ad748191bd11096967c37c8b048efc3f8b2a068e', + provider_response_id='resp_68bb5f153efc81a2b3958ddb1f257ff30886f4f20524f3b9', ), ModelRequest( parts=[ @@ -479,11 +477,14 @@ async def test_cohere_model_thinking_part(allow_model_requests: None, co_api_key ] ), ModelResponse( - parts=[IsInstance(TextPart)], + parts=[ + IsInstance(ThinkingPart), + IsInstance(TextPart), + ], usage=RequestUsage( - input_tokens=1457, output_tokens=807, details={'input_tokens': 954, 'output_tokens': 805} + input_tokens=2190, output_tokens=1257, details={'input_tokens': 431, 'output_tokens': 661} ), - model_name='command-r7b-12-2024', + model_name='command-a-reasoning-08-2025', timestamp=IsDatetime(), provider_name='cohere', ), diff --git a/tests/models/test_mistral.py b/tests/models/test_mistral.py index d66a0a076c..ae0cc63cb7 100644 --- a/tests/models/test_mistral.py +++ b/tests/models/test_mistral.py @@ -2073,22 +2073,31 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', + signature=IsStr(), + ), + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', + ), + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', + ), TextPart(content=IsStr()), ], - usage=RequestUsage(input_tokens=13, output_tokens=1789, details={'reasoning_tokens': 1344}), + usage=RequestUsage(input_tokens=13, output_tokens=1616, details={'reasoning_tokens': 1344}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_68079acebbfc819189ec20e1e5bf525d0493b22e4095129c', + provider_response_id='resp_68bb6452990081968f5aff503a55e3b903498c8aa840cf12', ), ] ) - mistral_model = MistralModel('mistral-large-latest', provider=MistralProvider(api_key=mistral_api_key)) + mistral_model = MistralModel('magistral-medium-latest', provider=MistralProvider(api_key=mistral_api_key)) result = await agent.run( 'Considering the way to cross the street, analogously, how do I cross the river?', model=mistral_model, @@ -2099,50 +2108,26 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - ThinkingPart(content=IsStr(), id='rs_68079ad7f0588191af64f067e7314d840493b22e4095129c'), - TextPart( - content="""\ -I'm not a traffic safety expert, but here are some general guidelines that many people follow when crossing a street safely. Remember that local rules and conditions might vary, so always follow local traffic laws and pay close attention to your surroundings. - -1. Find a Designated Crossing Point - • Look for crosswalks, pedestrian signals, or marked intersections. These areas are designed for safe crossing. - • If no crosswalk is available, choose a spot where you have clear visibility of oncoming traffic in all directions. - -2. Stop at the Curb or Edge of the Road - • Before stepping off the curb, pause to assess the situation. - • Resist the urge to step into the street immediately—this helps you avoid unpredictable traffic behavior. - -3. Look and Listen - • Look left, then right, and left again. In some places, you might need to check right a second time depending on the flow of traffic. - • Pay attention to the sound of approaching vehicles or any signals that indicate vehicles may be turning into your path. - • Remove or lower distractions like headphones so you can be fully aware of your environment. - -4. Follow Pedestrian Signals (if available) - • If you're at an intersection with traffic signals, wait for the "Walk" signal. - • Even when the signal is in your favor, ensure that any turning vehicles (cars or bikes) see you and are stopping. - -5. Make Eye Contact - • If possible, make eye contact with drivers who might be turning. This can help ensure that they see you and are taking appropriate action. - -6. Cross Quickly and Carefully - • Once you've determined that it's safe, proceed at a steady pace. - • Continue to be alert while you cross, watching for any unexpected vehicle movements. - -7. Stay on the Sidewalk Once You've Crossed - • After reaching the other side, stick to areas designated for pedestrians rather than walking immediately back into the roadway. - -These suggestions are meant to help you think through pedestrian safety. Different regions may have additional rules or different signals, so if you're unsure, it might help to check local guidelines or ask someone familiar with the area. Stay safe!\ -""" + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', + signature=IsStr(), + ), + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', ), + ThinkingPart( + content=IsStr(), + id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', + ), + TextPart(content=IsStr()), ], - usage=RequestUsage(input_tokens=13, output_tokens=1789, details={'reasoning_tokens': 1344}), + usage=RequestUsage(input_tokens=13, output_tokens=1616, details={'reasoning_tokens': 1344}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_68079acebbfc819189ec20e1e5bf525d0493b22e4095129c', + provider_response_id='resp_68bb6452990081968f5aff503a55e3b903498c8aa840cf12', ), ModelRequest( parts=[ @@ -2153,12 +2138,15 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap ] ), ModelResponse( - parts=[TextPart(content=IsStr())], - usage=RequestUsage(input_tokens=1036, output_tokens=691), - model_name='mistral-large-latest', + parts=[ + ThinkingPart(content=IsStr()), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=664, output_tokens=747), + model_name='magistral-medium-latest', timestamp=IsDatetime(), provider_name='mistral', - provider_response_id='a088e80a476e44edaaa959a1ff08f358', + provider_response_id='9abe8b736bff46af8e979b52334a57cd', ), ] ) diff --git a/tests/models/test_openai_responses.py b/tests/models/test_openai_responses.py index 346d6eda00..2981daf5fb 100644 --- a/tests/models/test_openai_responses.py +++ b/tests/models/test_openai_responses.py @@ -3,7 +3,6 @@ from typing import Any, cast import pytest -from dirty_equals import IsListOrTuple from inline_snapshot import snapshot from pydantic import BaseModel from typing_extensions import TypedDict @@ -24,7 +23,6 @@ TextPart, TextPartDelta, ThinkingPart, - ThinkingPartDelta, ToolCallPart, ToolReturnPart, UserPromptPart, @@ -1141,17 +1139,21 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), + ThinkingPart( + content=IsStr(), + id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c', + signature=IsStr(), + ), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=13, output_tokens=2050, details={'reasoning_tokens': 1664}), + usage=RequestUsage(input_tokens=13, output_tokens=1828, details={'reasoning_tokens': 1472}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_68034835d12481919c80a7fd8dbe6f7e08c845d2be9bcdd8', + provider_response_id='resp_68bb4c1e21c88195992250ee4e6c3e5506370ebbaae73d2c', ), ] ) @@ -1165,17 +1167,21 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034841ab2881918a8c210e3d988b9208c845d2be9bcdd8'), + ThinkingPart( + content=IsStr(), + id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c', + signature=IsStr(), + ), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=13, output_tokens=2050, details={'reasoning_tokens': 1664}), + usage=RequestUsage(input_tokens=13, output_tokens=1828, details={'reasoning_tokens': 1472}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_68034835d12481919c80a7fd8dbe6f7e08c845d2be9bcdd8', + provider_response_id='resp_68bb4c1e21c88195992250ee4e6c3e5506370ebbaae73d2c', ), ModelRequest( parts=[ @@ -1187,16 +1193,21 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, ), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='rs_68034858dc588191bc3a6801c23e728f08c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034858dc588191bc3a6801c23e728f08c845d2be9bcdd8'), - ThinkingPart(content=IsStr(), id='rs_68034858dc588191bc3a6801c23e728f08c845d2be9bcdd8'), + ThinkingPart( + content=IsStr(), + id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c', + signature=IsStr(), + ), + ThinkingPart(content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c'), + ThinkingPart(content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c'), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=424, output_tokens=2033, details={'reasoning_tokens': 1408}), + usage=RequestUsage(input_tokens=394, output_tokens=2196, details={'reasoning_tokens': 1536}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', - provider_response_id='resp_6803484f19a88191b9ea975d7cfbbe8408c845d2be9bcdd8', + provider_response_id='resp_68bb4c373f6c819585afac2acfadeede06370ebbaae73d2c', ), ] ) @@ -1208,25 +1219,45 @@ async def test_openai_responses_thinking_part_iter(allow_model_requests: None, o settings = OpenAIResponsesModelSettings(openai_reasoning_effort='high', openai_reasoning_summary='detailed') agent = Agent(responses_model, model_settings=settings) - event_parts: list[Any] = [] async with agent.iter(user_prompt='How do I cross the street?') as agent_run: async for node in agent_run: if Agent.is_model_request_node(node) or Agent.is_call_tools_node(node): async with node.stream(agent_run.ctx) as request_stream: async for event in request_stream: - event_parts.append(event) + pass - assert event_parts == IsListOrTuple( - positions={ - 0: PartStartEvent(index=0, part=ThinkingPart(content='', id=IsStr())), - 1: PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - 84: PartStartEvent(index=1, part=ThinkingPart(content='', id=IsStr())), - 85: PartDeltaEvent(index=1, delta=IsInstance(ThinkingPartDelta)), - 186: PartStartEvent(index=2, part=ThinkingPart(content='', id=IsStr())), - 187: PartDeltaEvent(index=2, delta=IsInstance(ThinkingPartDelta)), - 280: PartStartEvent(index=3, part=TextPart(content='I')), - 281: FinalResultEvent(tool_name=None, tool_call_id=None), - 282: PartDeltaEvent(index=3, delta=IsInstance(TextPartDelta)), - }, - length=631, + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', + signature=IsStr(), + ), + ThinkingPart( + content=IsStr(), + id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', + ), + ThinkingPart( + content=IsStr(), + id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=13, output_tokens=1733, details={'reasoning_tokens': 1280}), + model_name='o3-mini', + timestamp=IsDatetime(), + provider_name='openai', + ), + ] ) diff --git a/uv.lock b/uv.lock index 15bff0d715..c62ddb2eb4 100644 --- a/uv.lock +++ b/uv.lock @@ -663,7 +663,7 @@ wheels = [ [[package]] name = "cohere" -version = "5.16.1" +version = "5.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fastavro" }, @@ -676,9 +676,9 @@ dependencies = [ { name = "types-requests" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/c7/fd1e4c61cf3f0aac9d9d73fce63a766c9778e1270f7a26812eb289b4851d/cohere-5.16.1.tar.gz", hash = "sha256:02aa87668689ad0fbac2cda979c190310afdb99fb132552e8848fdd0aff7cd40", size = 162300, upload-time = "2025-07-09T20:47:36.348Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/ea/0b4bfb4b7f0f445db97acc979308f80ed5ab31df3786b1951d6e48b30d27/cohere-5.17.0.tar.gz", hash = "sha256:70d2fb7bccf8c9de77b07e1c0b3d93accf6346242e3cdc6ce293b577afa74a63", size = 164665, upload-time = "2025-08-13T06:58:00.608Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/82/c6/72309ac75f3567425ca31a601ad394bfee8d0f4a1569dfbc80cbb2890d07/cohere-5.16.1-py3-none-any.whl", hash = "sha256:37e2c1d69b1804071b5e5f5cb44f8b74127e318376e234572d021a1a729c6baa", size = 291894, upload-time = "2025-07-09T20:47:34.919Z" }, + { url = "https://files.pythonhosted.org/packages/aa/21/d0eb7c8e5b3bb748190c59819928c38cafcdf8f8aaca9d21074c64cf1cae/cohere-5.17.0-py3-none-any.whl", hash = "sha256:fe7d8228cda5335a7db79a828893765a4d5a40b7f7a43443736f339dc7813fa4", size = 295301, upload-time = "2025-08-13T06:57:59.072Z" }, ] [[package]] @@ -1494,6 +1494,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/ab/4ad6bb9808f242e659ca8437ee475efaa201f18ff20a0dd5553280c85ae5/inline_snapshot-0.23.0-py3-none-any.whl", hash = "sha256:b1a5feab675aee8d03a51f1b6291f412100ce750d846c2d58eab16c90ee2c4dd", size = 50119, upload-time = "2025-04-25T18:14:34.46Z" }, ] +[[package]] +name = "invoke" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/42/127e6d792884ab860defc3f4d80a8f9812e48ace584ffc5a346de58cdc6c/invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5", size = 299835, upload-time = "2023-07-12T18:05:17.998Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/66/7f8c48009c72d73bc6bbe6eb87ac838d6a526146f7dab14af671121eb379/invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820", size = 160274, upload-time = "2023-07-12T18:05:16.294Z" }, +] + [[package]] name = "jinja2" version = "3.1.5" @@ -1870,18 +1879,20 @@ wheels = [ [[package]] name = "mistralai" -version = "1.9.2" +version = "1.9.10" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "eval-type-backport" }, { name = "httpx" }, + { name = "invoke" }, { name = "pydantic" }, { name = "python-dateutil" }, + { name = "pyyaml" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/e7/204a54d07c37ebf173590af85bf46cddf8bc343b9d6005804581967b4751/mistralai-1.9.2.tar.gz", hash = "sha256:c0c6d5aff18ffccbc0d22c06fbc84280d71eeaeb08fa4e1ef7326b36629cfb0b", size = 192678, upload-time = "2025-07-10T13:07:08.85Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/a3/1ae43c9db1fc612176d5d3418c12cd363852e954c5d12bf3a4477de2e4a6/mistralai-1.9.10.tar.gz", hash = "sha256:a95721276f035bf86c7fdc1373d7fb7d056d83510226f349426e0d522c0c0965", size = 205043, upload-time = "2025-09-02T07:44:38.859Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/eb/f746a3f977d3c0059e4afa19d26b1293f54c6258fcf841957e584be6927f/mistralai-1.9.2-py3-none-any.whl", hash = "sha256:7c3fff00e50227d379dea82052455c2610612a8ef476fa97393191aeeb7ab15f", size = 411581, upload-time = "2025-07-10T13:07:07.226Z" }, + { url = "https://files.pythonhosted.org/packages/29/40/646448b5ad66efec097471bd5ab25f5b08360e3f34aecbe5c4fcc6845c01/mistralai-1.9.10-py3-none-any.whl", hash = "sha256:cf0a2906e254bb4825209a26e1957e6e0bacbbe61875bd22128dc3d5d51a7b0a", size = 440538, upload-time = "2025-09-02T07:44:37.5Z" }, ] [[package]] @@ -3186,7 +3197,7 @@ requires-dist = [ { name = "anthropic", marker = "extra == 'anthropic'", specifier = ">=0.61.0" }, { name = "argcomplete", marker = "extra == 'cli'", specifier = ">=3.5.0" }, { name = "boto3", marker = "extra == 'bedrock'", specifier = ">=1.39.0" }, - { name = "cohere", marker = "sys_platform != 'emscripten' and extra == 'cohere'", specifier = ">=5.16.0" }, + { name = "cohere", marker = "sys_platform != 'emscripten' and extra == 'cohere'", specifier = ">=5.17.0" }, { name = "ddgs", marker = "extra == 'duckduckgo'", specifier = ">=9.0.0" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "fasta2a", marker = "extra == 'a2a'", specifier = ">=0.4.1" }, @@ -3199,7 +3210,7 @@ requires-dist = [ { name = "huggingface-hub", extras = ["inference"], marker = "extra == 'huggingface'", specifier = ">=0.33.5" }, { name = "logfire", extras = ["httpx"], marker = "extra == 'logfire'", specifier = ">=3.14.1" }, { name = "mcp", marker = "extra == 'mcp'", specifier = ">=1.12.3" }, - { name = "mistralai", marker = "extra == 'mistral'", specifier = ">=1.9.2" }, + { name = "mistralai", marker = "extra == 'mistral'", specifier = ">=1.9.10" }, { name = "openai", marker = "extra == 'openai'", specifier = ">=1.99.9" }, { name = "opentelemetry-api", specifier = ">=1.28.0" }, { name = "prompt-toolkit", marker = "extra == 'cli'", specifier = ">=3" }, From 3f956555e430a66ea3c7a805cd4d582ed16d332e Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 00:29:16 +0000 Subject: [PATCH 02/13] Progress is made --- .../pydantic_ai/_parts_manager.py | 18 +- pydantic_ai_slim/pydantic_ai/messages.py | 34 +- .../pydantic_ai/models/anthropic.py | 57 +- .../pydantic_ai/models/bedrock.py | 79 +- .../pydantic_ai/models/function.py | 1 + pydantic_ai_slim/pydantic_ai/models/google.py | 20 +- pydantic_ai_slim/pydantic_ai/models/groq.py | 4 +- .../pydantic_ai/models/mistral.py | 5 +- pydantic_ai_slim/pydantic_ai/models/openai.py | 81 +- ...test_mistral_model_thinking_part_iter.yaml | 736 ++++++++++++++++++ tests/models/test_anthropic.py | 79 +- tests/models/test_bedrock.py | 4 +- tests/models/test_deepseek.py | 13 +- tests/models/test_huggingface.py | 19 +- tests/models/test_mistral.py | 97 ++- tests/models/test_openai_responses.py | 19 +- 16 files changed, 1137 insertions(+), 129 deletions(-) create mode 100644 tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml diff --git a/pydantic_ai_slim/pydantic_ai/_parts_manager.py b/pydantic_ai_slim/pydantic_ai/_parts_manager.py index c2c5844ba9..3988f1ea8c 100644 --- a/pydantic_ai_slim/pydantic_ai/_parts_manager.py +++ b/pydantic_ai_slim/pydantic_ai/_parts_manager.py @@ -156,6 +156,7 @@ def handle_thinking_delta( content: str | None = None, id: str | None = None, signature: str | None = None, + provider_name: str | None = None, ) -> ModelResponseStreamEvent: """Handle incoming thinking content, creating or updating a ThinkingPart in the manager as appropriate. @@ -170,6 +171,7 @@ def handle_thinking_delta( content: The thinking content to append to the appropriate ThinkingPart. id: An optional id for the thinking part. signature: An optional signature for the thinking content. + provider_name: An optional provider name for the thinking part. Returns: A `PartStartEvent` if a new part was created, or a `PartDeltaEvent` if an existing part was updated. @@ -199,7 +201,7 @@ def handle_thinking_delta( if content is not None: # There is no existing thinking part that should be updated, so create a new one new_part_index = len(self._parts) - part = ThinkingPart(content=content, id=id, signature=signature) + part = ThinkingPart(content=content, id=id, signature=signature, provider_name=provider_name) if vendor_part_id is not None: # pragma: no branch self._vendor_id_to_part_index[vendor_part_id] = new_part_index self._parts.append(part) @@ -207,16 +209,12 @@ def handle_thinking_delta( else: raise UnexpectedModelBehavior('Cannot create a ThinkingPart with no content') else: - if content is not None: - # Update the existing ThinkingPart with the new content delta - existing_thinking_part, part_index = existing_thinking_part_and_index - part_delta = ThinkingPartDelta(content_delta=content) - self._parts[part_index] = part_delta.apply(existing_thinking_part) - return PartDeltaEvent(index=part_index, delta=part_delta) - elif signature is not None: - # Update the existing ThinkingPart with the new signature delta + if content is not None or signature is not None: + # Update the existing ThinkingPart with the new content and/or signature delta existing_thinking_part, part_index = existing_thinking_part_and_index - part_delta = ThinkingPartDelta(signature_delta=signature) + part_delta = ThinkingPartDelta( + content_delta=content, signature_delta=signature, provider_name=provider_name + ) self._parts[part_index] = part_delta.apply(existing_thinking_part) return PartDeltaEvent(index=part_index, delta=part_delta) else: diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index 231bc6af30..c384bf2dbd 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -895,7 +895,18 @@ class ThinkingPart: signature: str | None = None """The signature of the thinking. - This corresponds to the `signature` field on Anthropic thinking parts, and the `encrypted_content` field on OpenAI reasoning parts. + Supported by: + + * Anthropic (corresponds to the `signature` field) + * Bedrock (corresponds to the `signature` field) + * Google (corresponds to the `thought_signature` field) + * OpenAI (corresponds to the `encrypted_content` field) + """ + + provider_name: str | None = None + """The name of the provider that generated the response. + + Signatures are only sent back to the same provider. """ part_kind: Literal['thinking'] = 'thinking' @@ -980,7 +991,10 @@ class BuiltinToolCallPart(BaseToolCallPart): _: KW_ONLY provider_name: str | None = None - """The name of the provider that generated the response.""" + """The name of the provider that generated the response. + + Built-in tool calls are only sent back to the same provider. + """ part_kind: Literal['builtin-tool-call'] = 'builtin-tool-call' """Part type identifier, this is available on all parts as a discriminator.""" @@ -1198,6 +1212,12 @@ class ThinkingPartDelta: Note this is never treated as a delta — it can replace None. """ + provider_name: str | None = None + """Optional provider name for the thinking part. + + Signatures are only sent back to the same provider. + """ + part_delta_kind: Literal['thinking'] = 'thinking' """Part delta type identifier, used as a discriminator.""" @@ -1222,14 +1242,18 @@ def apply(self, part: ModelResponsePart | ThinkingPartDelta) -> ThinkingPart | T if isinstance(part, ThinkingPart): new_content = part.content + self.content_delta if self.content_delta else part.content new_signature = self.signature_delta if self.signature_delta is not None else part.signature - return replace(part, content=new_content, signature=new_signature) + new_provider_name = self.provider_name if self.provider_name is not None else part.provider_name + return replace(part, content=new_content, signature=new_signature, provider_name=new_provider_name) elif isinstance(part, ThinkingPartDelta): if self.content_delta is None and self.signature_delta is None: raise ValueError('Cannot apply ThinkingPartDelta with no content or signature') if self.signature_delta is not None: - return replace(part, signature_delta=self.signature_delta) + part = replace(part, signature_delta=self.signature_delta) if self.content_delta is not None: - return replace(part, content_delta=self.content_delta) + part = replace(part, content_delta=self.content_delta) + if self.provider_name is not None: + part = replace(part, provider_name=self.provider_name) + return part raise ValueError( # pragma: no cover f'Cannot apply ThinkingPartDeltas to non-ThinkingParts or non-ThinkingPartDeltas ({part=}, {self=})' ) diff --git a/pydantic_ai_slim/pydantic_ai/models/anthropic.py b/pydantic_ai_slim/pydantic_ai/models/anthropic.py index ae31563a2c..9bf90ad5ad 100644 --- a/pydantic_ai_slim/pydantic_ai/models/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/models/anthropic.py @@ -1,7 +1,6 @@ from __future__ import annotations as _annotations import io -import warnings from collections.abc import AsyncGenerator, AsyncIterable, AsyncIterator from contextlib import asynccontextmanager from dataclasses import dataclass, field @@ -78,6 +77,7 @@ BetaRawMessageStopEvent, BetaRawMessageStreamEvent, BetaRedactedThinkingBlock, + BetaRedactedThinkingBlockParam, BetaServerToolUseBlock, BetaServerToolUseBlockParam, BetaSignatureDelta, @@ -321,14 +321,11 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: ) ) elif isinstance(item, BetaRedactedThinkingBlock): # pragma: no cover - # TODO: Handle redacted thinking - warnings.warn( - 'Pydantic AI currently does not handle redacted thinking blocks. ' - 'If you have a suggestion on how we should handle them, please open an issue.', - UserWarning, + items.append( + ThinkingPart(id='redacted_thinking', content='', signature=item.data, provider_name='anthropic') ) elif isinstance(item, BetaThinkingBlock): - items.append(ThinkingPart(content=item.thinking, signature=item.signature)) + items.append(ThinkingPart(content=item.thinking, signature=item.signature, provider_name='anthropic')) else: assert isinstance(item, BetaToolUseBlock), f'unexpected item type {type(item)}' items.append( @@ -446,6 +443,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be | BetaWebSearchToolResultBlockParam | BetaCodeExecutionToolResultBlockParam | BetaThinkingBlockParam + | BetaRedactedThinkingBlockParam ] = [] for response_part in m.parts: if isinstance(response_part, TextPart): @@ -460,13 +458,29 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be ) assistant_content_params.append(tool_use_block_param) elif isinstance(response_part, ThinkingPart): - if response_part.signature is not None: # pragma: no branch + if ( + response_part.provider_name == 'anthropic' and response_part.signature is not None + ): # pragma: no branch + if response_part.id == 'redacted_thinking': + assistant_content_params.append( + BetaRedactedThinkingBlockParam( + data=response_part.signature, + type='redacted_thinking', + ) + ) + else: + assistant_content_params.append( + BetaThinkingBlockParam( + thinking=response_part.content, + signature=response_part.signature, + type='thinking', + ) + ) + elif response_part.content: + start_tag, end_tag = self.profile.thinking_tags assistant_content_params.append( - BetaThinkingBlockParam( - # TODO: Store `provider_name` on ThinkingPart, only send back `signature` if it matches? - thinking=response_part.content, - signature=response_part.signature, - type='thinking', + BetaTextBlockParam( + text='\n'.join([start_tag, response_part.content, end_tag]), type='text' ) ) elif isinstance(response_part, BuiltinToolCallPart): @@ -621,6 +635,15 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id='thinking', content=current_block.thinking, signature=current_block.signature, + provider_name='anthropic', + ) + elif isinstance(current_block, BetaRedactedThinkingBlock): + yield self._parts_manager.handle_thinking_delta( + vendor_part_id='redacted_thinking', + id='redacted_thinking', + content='', + signature=current_block.data, + provider_name='anthropic', ) elif isinstance(current_block, BetaToolUseBlock): maybe_event = self._parts_manager.handle_tool_call_delta( @@ -643,11 +666,15 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: yield maybe_event elif isinstance(event.delta, BetaThinkingDelta): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', content=event.delta.thinking + vendor_part_id='thinking', + content=event.delta.thinking, + provider_name='anthropic', ) elif isinstance(event.delta, BetaSignatureDelta): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', signature=event.delta.signature + vendor_part_id='thinking', + signature=event.delta.signature, + provider_name='anthropic', ) elif ( current_block diff --git a/pydantic_ai_slim/pydantic_ai/models/bedrock.py b/pydantic_ai_slim/pydantic_ai/models/bedrock.py index 9bed0f58b0..c4177951e5 100644 --- a/pydantic_ai_slim/pydantic_ai/models/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/models/bedrock.py @@ -63,7 +63,6 @@ PerformanceConfigurationTypeDef, PromptVariableValuesTypeDef, ReasoningContentBlockOutputTypeDef, - ReasoningTextBlockTypeDef, SystemContentBlockTypeDef, ToolChoiceTypeDef, ToolConfigurationTypeDef, @@ -279,13 +278,24 @@ async def _process_response(self, response: ConverseResponseTypeDef) -> ModelRes if message := response['output'].get('message'): # pragma: no branch for item in message['content']: if reasoning_content := item.get('reasoningContent'): - reasoning_text = reasoning_content.get('reasoningText') - if reasoning_text: # pragma: no branch - thinking_part = ThinkingPart( - content=reasoning_text['text'], - signature=reasoning_text.get('signature'), + if redacted_content := reasoning_content.get('redactedContent'): + items.append( + ThinkingPart( + id='redacted_content', + content='', + signature=redacted_content.decode('utf-8'), + provider_name='bedrock', + ) + ) + elif reasoning_text := reasoning_content.get('reasoningText'): # pragma: no branch + signature = reasoning_text.get('signature') + items.append( + ThinkingPart( + content=reasoning_text['text'], + signature=signature, + provider_name='bedrock' if signature else None, + ) ) - items.append(thinking_part) if text := item.get('text'): items.append(TextPart(content=text)) elif tool_use := item.get('toolUse'): @@ -477,20 +487,28 @@ async def _map_messages( # noqa: C901 content.append({'text': item.content}) elif isinstance(item, ThinkingPart): if BedrockModelProfile.from_profile(self.profile).bedrock_send_back_thinking_parts: - reasoning_text: ReasoningTextBlockTypeDef = { - 'text': item.content, - } - if item.signature: - # TODO: Store `provider_name` on ThinkingPart, only send back `signature` if it matches? - reasoning_text['signature'] = item.signature - reasoning_content: ReasoningContentBlockOutputTypeDef = { - 'reasoningText': reasoning_text, - } + if item.provider_name == 'bedrock' and item.signature: + if item.id == 'redacted_content': + reasoning_content: ReasoningContentBlockOutputTypeDef = { + 'redactedContent': item.signature.encode('utf-8'), + } + else: + reasoning_content: ReasoningContentBlockOutputTypeDef = { + 'reasoningText': { + 'text': item.content, + 'signature': item.signature, + } + } + else: + reasoning_content: ReasoningContentBlockOutputTypeDef = { + 'reasoningText': { + 'text': item.content, + } + } content.append({'reasoningContent': reasoning_content}) else: - # TODO: Should we send in `` tags in case thinking from another model was forwarded to Bedrock? - # NOTE: We don't pass the thinking part to Bedrock for models other than Claude since it raises an error. - pass + start_tag, end_tag = self.profile.thinking_tags + content.append({'text': '\n'.join([start_tag, item.content, end_tag])}) elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): pass else: @@ -602,7 +620,7 @@ class BedrockStreamedResponse(StreamedResponse): _provider_name: str _timestamp: datetime = field(default_factory=_utils.now_utc) - async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: + async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: # noqa: C901 """Return an async iterator of [`ModelResponseStreamEvent`][pydantic_ai.messages.ModelResponseStreamEvent]s. This method should be implemented by subclasses to translate the vendor-specific stream of events into @@ -639,11 +657,22 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: index = content_block_delta['contentBlockIndex'] delta = content_block_delta['delta'] if 'reasoningContent' in delta: - yield self._parts_manager.handle_thinking_delta( - vendor_part_id=index, - content=delta['reasoningContent'].get('text'), - signature=delta['reasoningContent'].get('signature'), - ) + if redacted_content := delta['reasoningContent'].get('redactedContent'): + yield self._parts_manager.handle_thinking_delta( + vendor_part_id=index, + id='redacted_content', + content='', + signature=redacted_content.decode('utf-8'), + provider_name='bedrock', + ) + else: + signature = delta['reasoningContent'].get('signature') + yield self._parts_manager.handle_thinking_delta( + vendor_part_id=index, + content=delta['reasoningContent'].get('text'), + signature=signature, + provider_name='bedrock' if signature else None, + ) if 'text' in delta: maybe_event = self._parts_manager.handle_text_delta(vendor_part_id=index, content=delta['text']) if maybe_event is not None: # pragma: no branch diff --git a/pydantic_ai_slim/pydantic_ai/models/function.py b/pydantic_ai_slim/pydantic_ai/models/function.py index 591c37970d..152b704660 100644 --- a/pydantic_ai_slim/pydantic_ai/models/function.py +++ b/pydantic_ai_slim/pydantic_ai/models/function.py @@ -291,6 +291,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id=dtc_index, content=delta.content, signature=delta.signature, + provider_name='function' if delta.signature else None, ) elif isinstance(delta, DeltaToolCall): if delta.json_args: diff --git a/pydantic_ai_slim/pydantic_ai/models/google.py b/pydantic_ai_slim/pydantic_ai/models/google.py index bcea4679b7..1d1fbb1f61 100644 --- a/pydantic_ai_slim/pydantic_ai/models/google.py +++ b/pydantic_ai_slim/pydantic_ai/models/google.py @@ -594,7 +594,13 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: for part in parts: if part.text is not None: if part.thought: - yield self._parts_manager.handle_thinking_delta(vendor_part_id='thinking', content=part.text) + signature = part.thought_signature.decode('utf-8') if part.thought_signature else None + yield self._parts_manager.handle_thinking_delta( + vendor_part_id='thinking', + content=part.text, + signature=signature, + provider_name='google' if signature else None, + ) else: maybe_event = self._parts_manager.handle_text_delta(vendor_part_id='content', content=part.text) if maybe_event is not None: # pragma: no branch @@ -644,7 +650,9 @@ def _content_model_response(m: ModelResponse) -> ContentDict: { 'text': item.content, 'thought': True, - 'thought_signature': item.signature.encode('utf-8') if item.signature else None, + 'thought_signature': item.signature.encode('utf-8') + if item.provider_name == 'google' and item.signature + else None, } ) elif isinstance(item, BuiltinToolCallPart): @@ -689,7 +697,13 @@ def _process_response_from_parts( elif part.text is not None: if part.thought: signature = part.thought_signature.decode('utf-8') if part.thought_signature else None - items.append(ThinkingPart(content=part.text, signature=signature)) + items.append( + ThinkingPart( + content=part.text, + signature=signature, + provider_name='google' if signature else None, + ) + ) else: items.append(TextPart(content=part.text)) elif part.function_call: diff --git a/pydantic_ai_slim/pydantic_ai/models/groq.py b/pydantic_ai_slim/pydantic_ai/models/groq.py index 485d2fc391..f86c694928 100644 --- a/pydantic_ai_slim/pydantic_ai/models/groq.py +++ b/pydantic_ai_slim/pydantic_ai/models/groq.py @@ -376,8 +376,8 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletio elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) elif isinstance(item, ThinkingPart): - # Groq does not yet support sending back reasoning - pass + start_tag, end_tag = self.profile.thinking_tags + texts.append('\n'.join([start_tag, item.content, end_tag])) elif isinstance(item, BuiltinToolCallPart | BuiltinToolReturnPart): # pragma: no cover # This is currently never returned from groq pass diff --git a/pydantic_ai_slim/pydantic_ai/models/mistral.py b/pydantic_ai_slim/pydantic_ai/models/mistral.py index 47d514f622..679e900fd5 100644 --- a/pydantic_ai_slim/pydantic_ai/models/mistral.py +++ b/pydantic_ai_slim/pydantic_ai/models/mistral.py @@ -607,8 +607,9 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: # Handle the text part of the response content = choice.delta.content - text, _ = _map_content(content) - # TODO: Handle thinking deltas + text, thinking = _map_content(content) + for thought in thinking: + self._parts_manager.handle_thinking_delta(vendor_part_id='thinking', content=thought) if text: # Attempt to produce an output tool call from the received text output_tools = {c.name: c for c in self.model_request_parameters.output_tools} diff --git a/pydantic_ai_slim/pydantic_ai/models/openai.py b/pydantic_ai_slim/pydantic_ai/models/openai.py index 7e3e65ff67..669f3f9499 100644 --- a/pydantic_ai_slim/pydantic_ai/models/openai.py +++ b/pydantic_ai_slim/pydantic_ai/models/openai.py @@ -4,7 +4,7 @@ import warnings from collections.abc import AsyncIterable, AsyncIterator, Sequence from contextlib import asynccontextmanager -from dataclasses import dataclass, field +from dataclasses import dataclass, field, replace from datetime import datetime from typing import Any, Literal, cast, overload @@ -31,6 +31,7 @@ ModelResponse, ModelResponsePart, ModelResponseStreamEvent, + PartStartEvent, RetryPromptPart, SystemPromptPart, TextPart, @@ -492,9 +493,16 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons choice = response.choices[0] items: list[ModelResponsePart] = [] - # The `reasoning_content` is only present in DeepSeek models. + # The `reasoning_content` field is only present in DeepSeek models. + # https://api-docs.deepseek.com/guides/reasoning_model if reasoning_content := getattr(choice.message, 'reasoning_content', None): - items.append(ThinkingPart(content=reasoning_content)) + items.append(ThinkingPart(id='reasoning_content', content=reasoning_content, provider_name='openai')) + + # The `reasoning` field is only present in OpenRouter and gpt-oss responses. + # https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api + # https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens + if reasoning := getattr(choice.message, 'reasoning', None): + items.append(ThinkingPart(id='reasoning', content=reasoning, provider_name='openai')) # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks @@ -516,7 +524,10 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons ] if choice.message.content is not None: - items.extend(split_content_into_text_and_thinking(choice.message.content, self.profile.thinking_tags)) + items.extend( + (replace(part, id='content', provider_name='openai') if isinstance(part, ThinkingPart) else part) + for part in split_content_into_text_and_thinking(choice.message.content, self.profile.thinking_tags) + ) if choice.message.tool_calls is not None: for c in choice.message.tool_calls: if isinstance(c, ChatCompletionMessageFunctionToolCall): @@ -586,7 +597,7 @@ def _get_web_search_options(self, model_request_parameters: ModelRequestParamete f'`{tool.__class__.__name__}` is not supported by `OpenAIModel`. If it should be, please file an issue.' ) - async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletionMessageParam]: + async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletionMessageParam]: # noqa: C901 """Just maps a `pydantic_ai.Message` to a `openai.types.ChatCompletionMessageParam`.""" openai_messages: list[chat.ChatCompletionMessageParam] = [] for message in messages: @@ -600,8 +611,22 @@ async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCom if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - # TODO: Send back in tags (Ollama etc), `reasoning` field (DeepSeek), or `reasoning_content` field (OpenRouter)? - pass + if item.provider_name == 'openai': + # TODO: Consider handling this based on model profile, rather than the ID that's set when it was read. + # Since it's possible that we received data from one OpenAI-compatible API, and are sending it to another, that doesn't support the same field. + if item.id == 'reasoning': + # TODO: OpenRouter/gpt-oss `reasoning` field should be sent back per https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api + continue + elif item.id == 'reasoning_details': + # TODO: OpenRouter `reasoning_details` field should be sent back per https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + continue + elif item.id == 'reasoning_content': + # TODO: DeepSeek `reasoning_content` field should NOT be sent back per https://api-docs.deepseek.com/guides/reasoning_model + continue + + start_tag, end_tag = self.profile.thinking_tags + texts.append('\n'.join([start_tag, item.content, end_tag])) + elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) # OpenAI doesn't return built-in tool calls @@ -844,7 +869,14 @@ def _process_response(self, response: responses.Response) -> ModelResponse: for summary in item.summary: # We use the same id for all summaries so that we can merge them on the round trip. # We only need to store the signature once. - items.append(ThinkingPart(content=summary.text, id=item.id, signature=signature)) + items.append( + ThinkingPart( + content=summary.text, + id=item.id, + signature=signature, + provider_name='openai' if signature else None, + ) + ) signature = None # TODO: Handle gpt-oss reasoning_text: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot elif isinstance(item, responses.ResponseOutputMessage): @@ -1097,8 +1129,7 @@ async def _map_messages( # noqa: C901 reasoning_item = responses.ResponseReasoningItemParam( id=item.id or _utils.generate_tool_call_id(), summary=[Summary(text=item.content, type='summary_text')], - # TODO: Store `provider_name` on ThinkingPart, only send back `encrypted_content` if it matches? - encrypted_content=item.signature, + encrypted_content=item.signature if item.provider_name == 'openai' else None, type='reasoning', ) openai_messages.append(reasoning_item) @@ -1234,14 +1265,34 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: ignore_leading_whitespace=self._model_profile.ignore_streamed_leading_whitespace, ) if maybe_event is not None: # pragma: no branch + if isinstance(maybe_event, PartStartEvent) and isinstance(maybe_event.part, ThinkingPart): + maybe_event.part.id = 'content' + maybe_event.part.provider_name = 'openai' yield maybe_event - # Handle reasoning part of the response, present in DeepSeek models + # The `reasoning_content` field is only present in DeepSeek models. + # https://api-docs.deepseek.com/guides/reasoning_model if reasoning_content := getattr(choice.delta, 'reasoning_content', None): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='reasoning_content', content=reasoning_content + vendor_part_id='reasoning_content', + id='reasoning_content', + content=reasoning_content, + provider_name='openai', ) + # The `reasoning` field is only present in OpenRouter and gpt-oss responses. + # https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api + # https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens + if reasoning := getattr(choice.delta, 'reasoning', None): + yield self._parts_manager.handle_thinking_delta( + vendor_part_id='reasoning', + id='reasoning', + content=reasoning, + provider_name='openai', + ) + + # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + for dtc in choice.delta.tool_calls or []: maybe_event = self._parts_manager.handle_tool_call_delta( vendor_part_id=dtc.index, @@ -1345,13 +1396,17 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: elif isinstance(chunk, responses.ResponseOutputItemDoneEvent): if isinstance(chunk.item, responses.ResponseReasoningItem): # Add the signature to the part corresponding to the first summary item + signature = chunk.item.encrypted_content yield self._parts_manager.handle_thinking_delta( vendor_part_id=f'{chunk.item.id}-0', - signature=chunk.item.encrypted_content, + id=chunk.item.id, + signature=signature, + provider_name='openai' if signature else None, ) pass elif isinstance(chunk, responses.ResponseReasoningSummaryPartAddedEvent): + # TODO: Handle gpt-oss reasoning_text: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot yield self._parts_manager.handle_thinking_delta( vendor_part_id=f'{chunk.item_id}-{chunk.summary_index}', content=chunk.part.text, diff --git a/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml b/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml new file mode 100644 index 0000000000..72342c22b6 --- /dev/null +++ b/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml @@ -0,0 +1,736 @@ +interactions: +- request: + headers: + accept: + - text/event-stream + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '117' + content-type: + - application/json + host: + - api.mistral.ai + method: POST + parsed_body: + messages: + - content: How do I cross the street? + role: user + model: magistral-medium-latest + stream: true + uri: https://api.mistral.ai/v1/chat/completions#stream + response: + body: + string: |+ + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":""},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"Okay"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" user"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" is"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" asking"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a very"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" basic question about"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" how"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to cross the street"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":". This"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" seems"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" like a straightforward query"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":","}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" but"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" I"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" need to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" make"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" sure I provide"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" clear"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" and"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" safe"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" instructions"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":". Crossing"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the street safely"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" involves a"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" few"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" key"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" steps that"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" are"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" generally"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" taught"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" children"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" and"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" are"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" important"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" for"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" everyone"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" follow.\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"First"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", I"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" recall"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" that"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" basic"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" steps involve"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" looking"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" both"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" ways for"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" on"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"coming traffic,"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" using"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" designated"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" cross"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"wal"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"ks if"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" available"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", and following traffic"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signals"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" if"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" there"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" are"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" any"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"."}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" But"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" I"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" should"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" break"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" it"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" down into"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" clear"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":","}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" action"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"able steps.\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"1. **Find"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Safe"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Place"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Cross**:"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Ideally"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", you should cross"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" at"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" designated"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" crosswalk or"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" intersection"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":". These"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" are typically"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" marked"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" with white"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" lines"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" on the road and"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" may"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" have traffic"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signals"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" or"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signs"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":".\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"2. **Look"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Both"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Ways**: Before"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" stepping"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" off"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the curb"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", look"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" left"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":","}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" right, and"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" then"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" left"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" again to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" check"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" for"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" on"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"coming traffic. This"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" is"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" because"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" in"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" many"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" places, traffic comes"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" from"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" left first"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" ("}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"depend"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"ing on the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" country"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"'s"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" driving"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" side"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":").\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"3. **Wait"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" for a"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Safe"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Gap"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"**: Make"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" sure there"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" is enough"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" time"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" cross the street before"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" any"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" vehicles"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" approach"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":". If there's"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a traffic"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" light, wait"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" for the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" pedestrian"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signal"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to indicate"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" it"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"'s safe"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" cross.\n\n4."}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" **Cross with"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" C"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"aution**: Walk"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" br"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"iskly across"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the street while"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" keeping"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" an"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" eye out"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" for any unexpected"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" vehicles"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"."}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Avoid"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" running"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" unless"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" absolutely"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" necessary.\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"5. **Continue"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Looking"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"**: Even"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" while"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" crossing,"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" continue to look for"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" vehicles to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" ensure"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" your"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" safety.\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"6. **Follow"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" Traffic Signals**: If"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" there"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" are traffic"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" lights or"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" pedestrian"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signals,"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" obey"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" them. Only"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" cross"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" when"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" signal"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" indicates"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" it"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"'s safe to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" do so.\n\nAdditionally"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", it"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"'s important to make"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" eye"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" contact with drivers"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" if"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" possible"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":","}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" to"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" ensure"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" they see"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" you before"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" you"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" cross. Avoid"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" distra"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"ctions like using"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" your"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" phone while crossing the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" street.\n\nBut"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" wait"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", does"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" user"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" need"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" any specific"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" context"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"?"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" For"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" example"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", are"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" they in"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a country"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" where cars"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" drive"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" on the left or"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" right?"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" That"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" might"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" affect"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the direction they"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" should"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" look"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" first"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":". However"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", since"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the user"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" hasn"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"'t specified"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a location"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", I'll provide"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a general answer"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" that should"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" work"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" in"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" most places.\n\n"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":"Also"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", if"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the user is asking"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" this"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" question,"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" they"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" might"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" be very"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" young"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" or unfamiliar"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" with urban"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" environments"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":", so I"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" should"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" keep"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" the"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" instructions"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" simple and clear"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":".\n\nHere's"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" a concise"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" response based"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":" on this thinking"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[{"type":"text","text":":"}]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":[{"type":"thinking","thinking":[]}]},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" cross the street safely"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":", follow"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" these steps"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":":\n\n1. Find"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" a designated crosswalk"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" or intersection if"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" possible"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":".\n2. Look"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" left"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" right, and then"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" left again to"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" check for oncoming"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" traffic.\n3."},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" Wait"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" for a safe gap"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" traffic"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" pedestrian signal to indicate"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" it's safe to"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" cross.\n4."},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" Cross"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" street br"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"iskly while continuing"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" to look for vehicles"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":".\n"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"5. Follow any"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" traffic signals and"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" always"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" be"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" cautious of your"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" surroundings.\n\n"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"If"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"'re in"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" a country where cars"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" drive on the left"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"like"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" the UK"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" Japan"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"), remember"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" look"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" right"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" first"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" instead"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" of left. Always"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" priorit"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":"ize your"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" safety and"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" make"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" sure drivers"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" see"},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":" you before crossing."},"finish_reason":null}]} + + data: {"id":"9faf4309c1d743d189f16b29211d8b45","object":"chat.completion.chunk","created":1757459263,"model":"magistral-medium-latest","choices":[{"index":0,"delta":{"content":""},"finish_reason":"stop"}],"usage":{"prompt_tokens":10,"total_tokens":612,"completion_tokens":602}} + + data: [DONE] + + headers: + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + connection: + - keep-alive + content-type: + - text/event-stream; charset=utf-8 + mistral-correlation-id: + - 019930bc-2e47-7f5d-ab5e-1ceb8d616e6f + strict-transport-security: + - max-age=15552000; includeSubDomains + transfer-encoding: + - chunked + status: + code: 200 + message: OK +version: 1 +... diff --git a/tests/models/test_anthropic.py b/tests/models/test_anthropic.py index 6fa2a09f1d..1e4c2558fb 100644 --- a/tests/models/test_anthropic.py +++ b/tests/models/test_anthropic.py @@ -986,6 +986,7 @@ async def test_anthropic_model_thinking_part(allow_model_requests: None, anthrop I'll provide this information in a clear, helpful way, emphasizing safety without being condescending.\ """, signature='ErUBCkYIBhgCIkB9AyHADyBknnHL4dh+Yj3rg3javltU/bz1MLHKCQTEVZwvjis+DKTOFSYqZU0F2xasSofECVAmYmgtRf87AL52EgyXRs8lh+1HtZ0V+wAaDBo0eAabII+t1pdHzyIweFpD2l4j1eeUwN8UQOW+bxcN3mwu144OdOoUxmEKeOcU97wv+VF2pCsm07qcvucSKh1P/rZzWuYm7vxdnD4EVFHdBeewghoO0Ngc1MTNsxgC', + provider_name='anthropic', ), TextPart(content=IsStr()), ], @@ -1060,6 +1061,7 @@ async def test_anthropic_model_thinking_part(allow_model_requests: None, anthrop I'll keep the format similar to my street-crossing response for consistency.\ """, signature='ErUBCkYIBhgCIkDvSvKCs5ePyYmR6zFw5i+jF7KEmortSIleqDa4gfa3pbuBclQt0TPdacouhdXFHdVSqR4qOAAAOpN7RQEUz2o6Egy9MPee6H8U4SW/G2QaDP/9ysoEvk+yNyVYZSIw+/+5wuRyc3oajwV3w0EdL9CIAXXd5thQH7DwAe3HTFvoJuF4oZ4fU+Kh6LRqxnEaKh3SSRqAH4UH/sD86duzg0jox4J/NH4C9iILVesEERgC', + provider_name='anthropic', ), TextPart(content=IsStr()), ], @@ -1099,7 +1101,7 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, assert event_parts == snapshot( [ - PartStartEvent(index=0, part=ThinkingPart(content='', signature='')), + PartStartEvent(index=0, part=ThinkingPart(content='', signature='', provider_name='anthropic')), PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), @@ -1115,41 +1117,62 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, content_delta="""\ .) 2. Look\ -""" +""", + provider_name='anthropic', ), ), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' both ways (left-')), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='right-left in countries')), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' where cars drive on the right;')), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' right-left-right where')), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' they drive on the left)')), + PartDeltaEvent( + index=0, delta=ThinkingPartDelta(content_delta=' both ways (left-', provider_name='anthropic') + ), + PartDeltaEvent( + index=0, delta=ThinkingPartDelta(content_delta='right-left in countries', provider_name='anthropic') + ), + PartDeltaEvent( + index=0, + delta=ThinkingPartDelta(content_delta=' where cars drive on the right;', provider_name='anthropic'), + ), + PartDeltaEvent( + index=0, delta=ThinkingPartDelta(content_delta=' right-left-right where', provider_name='anthropic') + ), + PartDeltaEvent( + index=0, delta=ThinkingPartDelta(content_delta=' they drive on the left)', provider_name='anthropic') + ), PartDeltaEvent( index=0, delta=ThinkingPartDelta( content_delta="""\ 3. Wait for\ -""" +""", + provider_name='anthropic', ), ), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' traffic to stop or for a clear')), + PartDeltaEvent( + index=0, + delta=ThinkingPartDelta(content_delta=' traffic to stop or for a clear', provider_name='anthropic'), + ), PartDeltaEvent( index=0, delta=ThinkingPartDelta( content_delta="""\ gap in traffic 4\ -""" +""", + provider_name='anthropic', ), ), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='. Make eye contact with drivers if')), + PartDeltaEvent( + index=0, + delta=ThinkingPartDelta(content_delta='. Make eye contact with drivers if', provider_name='anthropic'), + ), PartDeltaEvent( index=0, delta=ThinkingPartDelta( content_delta="""\ possible 5. Cross at\ -""" +""", + provider_name='anthropic', ), ), PartDeltaEvent( @@ -1158,7 +1181,8 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, content_delta="""\ a steady pace without running 6. Continue\ -""" +""", + provider_name='anthropic', ), ), PartDeltaEvent( @@ -1167,10 +1191,14 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, content_delta="""\ watching for traffic while crossing 7\ -""" +""", + provider_name='anthropic', ), ), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='. Use pedestrian signals where')), + PartDeltaEvent( + index=0, + delta=ThinkingPartDelta(content_delta='. Use pedestrian signals where', provider_name='anthropic'), + ), PartDeltaEvent( index=0, delta=ThinkingPartDelta( @@ -1178,20 +1206,31 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, available I'll also mention\ -""" +""", + provider_name='anthropic', ), ), PartDeltaEvent( - index=0, delta=ThinkingPartDelta(content_delta=' some additional safety tips and considerations for') + index=0, + delta=ThinkingPartDelta( + content_delta=' some additional safety tips and considerations for', provider_name='anthropic' + ), ), PartDeltaEvent( - index=0, delta=ThinkingPartDelta(content_delta=' different situations (busy streets, streets') + index=0, + delta=ThinkingPartDelta( + content_delta=' different situations (busy streets, streets', provider_name='anthropic' + ), + ), + PartDeltaEvent( + index=0, + delta=ThinkingPartDelta(content_delta=' with traffic signals, etc.).', provider_name='anthropic'), ), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' with traffic signals, etc.).')), PartDeltaEvent( index=0, delta=ThinkingPartDelta( - signature_delta='ErUBCkYIBhgCIkA/Y+JwNMtmQyHcoo4/v2dpY6ruQifcu3pAzHbzIwpIrjIyaWaYdJOp9/0vUmBPj+LmqgiDSTktRcn0U75AlpXOEgwzVmYdHgDaZfeyBGcaDFSIZCHzzrZQkolJKCIwhMETosYLx+Dw/vKa83hht943z9R3/ViOqokT25JmMfaGOntuo+33Zxqf5rqUbkQ3Kh34rIqqnKaFSVr7Nn85z8OFN3Cwzz+HmXl2FgCXOxgC' + signature_delta='ErUBCkYIBhgCIkA/Y+JwNMtmQyHcoo4/v2dpY6ruQifcu3pAzHbzIwpIrjIyaWaYdJOp9/0vUmBPj+LmqgiDSTktRcn0U75AlpXOEgwzVmYdHgDaZfeyBGcaDFSIZCHzzrZQkolJKCIwhMETosYLx+Dw/vKa83hht943z9R3/ViOqokT25JmMfaGOntuo+33Zxqf5rqUbkQ3Kh34rIqqnKaFSVr7Nn85z8OFN3Cwzz+HmXl2FgCXOxgC', + provider_name='anthropic', ), ), PartStartEvent(index=1, part=IsInstance(TextPart)), diff --git a/tests/models/test_bedrock.py b/tests/models/test_bedrock.py index 1e25292e12..9be5f81331 100644 --- a/tests/models/test_bedrock.py +++ b/tests/models/test_bedrock.py @@ -651,6 +651,7 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ThinkingPart( content=IsStr(), signature='ErcBCkgIAhABGAIiQMuiyDObz/Z/ryneAVaQDk4iH6JqSNKJmJTwpQ1RqPz07UFTEffhkJW76u0WVKZaYykZAHmZl/IbQOPDLGU0nhQSDDuHLg82YIApYmWyfhoMe8vxT1/WGTJwyCeOIjC5OfF0+c6JOAvXvv9ElFXHo3yS3am1V0KpTiFj4YCy/bqfxv1wFGBw0KOMsTgq7ugqHeuOpzNM91a/RgtYHUdrcAKm9iCRu24jIOCjr5+h', + provider_name='bedrock', ), IsInstance(TextPart), ], @@ -764,7 +765,7 @@ async def test_bedrock_model_thinking_part_stream(allow_model_requests: None, be PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='ly and ask')), PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' how I can help')), PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=' them today.')), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(signature_delta=IsStr())), + PartDeltaEvent(index=0, delta=ThinkingPartDelta(signature_delta=IsStr(), provider_name='bedrock')), PartStartEvent(index=1, part=TextPart(content='Hello! It')), FinalResultEvent(tool_name=None, tool_call_id=None), PartDeltaEvent(index=1, delta=TextPartDelta(content_delta="'s nice")), @@ -789,6 +790,7 @@ async def test_bedrock_model_thinking_part_stream(allow_model_requests: None, be ThinkingPart( content='The user has greeted me with a simple "Hello". I should respond in a friendly and welcoming manner. This is a straightforward greeting, so I\'ll respond warmly and ask how I can help them today.', signature=IsStr(), + provider_name='bedrock', ), TextPart(content="Hello! It's nice to meet you. How can I help you today?"), ], diff --git a/tests/models/test_deepseek.py b/tests/models/test_deepseek.py index 6a3f49dee0..468f8cb5a3 100644 --- a/tests/models/test_deepseek.py +++ b/tests/models/test_deepseek.py @@ -43,7 +43,10 @@ async def test_deepseek_model_thinking_part(allow_model_requests: None, deepseek [ ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( - parts=[ThinkingPart(content=IsStr()), TextPart(content=IsStr())], + parts=[ + ThinkingPart(content=IsStr(), id='reasoning_content', provider_name='openai'), + TextPart(content=IsStr()), + ], usage=RequestUsage( input_tokens=12, output_tokens=789, @@ -79,9 +82,11 @@ async def test_deepseek_model_thinking_stream(allow_model_requests: None, deepse assert event_parts == snapshot( IsListOrTuple( positions={ - 0: PartStartEvent(index=0, part=ThinkingPart(content='H')), - 1: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='mm')), - 2: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=',')), + 0: PartStartEvent( + index=0, part=ThinkingPart(content='H', id='reasoning_content', provider_name='openai') + ), + 1: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='mm', provider_name='openai')), + 2: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=',', provider_name='openai')), 198: PartStartEvent(index=1, part=TextPart(content='Hello')), 199: FinalResultEvent(tool_name=None, tool_call_id=None), 200: PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' there')), diff --git a/tests/models/test_huggingface.py b/tests/models/test_huggingface.py index 4c23d46408..152c4d9902 100644 --- a/tests/models/test_huggingface.py +++ b/tests/models/test_huggingface.py @@ -864,9 +864,9 @@ async def test_thinking_part_in_history(allow_model_requests: None): ModelRequest(parts=[UserPromptPart(content='request')]), ModelResponse( parts=[ - TextPart(content='thought 1'), - ThinkingPart(content='this should be ignored'), - TextPart(content='thought 2'), + TextPart(content='text 1'), + ThinkingPart(content='let me do some thinking'), + TextPart(content='text 2'), ], model_name='hf-model', timestamp=datetime.now(timezone.utc), @@ -880,7 +880,18 @@ async def test_thinking_part_in_history(allow_model_requests: None): assert [{k: v for k, v in asdict(m).items() if v is not None} for m in sent_messages] == snapshot( [ {'content': 'request', 'role': 'user'}, - {'content': 'thought 1\n\nthought 2', 'role': 'assistant'}, + { + 'content': """\ +text 1 + + +let me do some thinking + + +text 2\ +""", + 'role': 'assistant', + }, {'content': 'another request', 'role': 'user'}, ] ) diff --git a/tests/models/test_mistral.py b/tests/models/test_mistral.py index cf418e67f1..3679e28080 100644 --- a/tests/models/test_mistral.py +++ b/tests/models/test_mistral.py @@ -2087,15 +2087,10 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', signature=IsStr(), + provider_name='openai', ), - ThinkingPart( - content=IsStr(), - id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', - ), - ThinkingPart( - content=IsStr(), - id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', - ), + ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), + ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), TextPart(content=IsStr()), ], usage=RequestUsage(input_tokens=13, output_tokens=1616, details={'reasoning_tokens': 1344}), @@ -2124,15 +2119,10 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', signature=IsStr(), + provider_name='openai', ), - ThinkingPart( - content=IsStr(), - id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', - ), - ThinkingPart( - content=IsStr(), - id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', - ), + ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), + ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), TextPart(content=IsStr()), ], usage=RequestUsage(input_tokens=13, output_tokens=1616, details={'reasoning_tokens': 1344}), @@ -2164,3 +2154,78 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap ), ] ) + + +@pytest.mark.vcr() +async def test_mistral_model_thinking_part_iter(allow_model_requests: None, mistral_api_key: str): + model = MistralModel('magistral-medium-latest', provider=MistralProvider(api_key=mistral_api_key)) + agent = Agent(model) + + async with agent.iter(user_prompt='How do I cross the street?') as agent_run: + async for node in agent_run: + if Agent.is_model_request_node(node) or Agent.is_call_tools_node(node): + async with node.stream(agent_run.ctx) as request_stream: + async for _ in request_stream: + pass + + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content="""\ +Okay, the user is asking a very basic question about how to cross the street. This seems like a straightforward query, but I need to make sure I provide clear and safe instructions. Crossing the street safely involves a few key steps that are generally taught to children and are important for everyone to follow. + +First, I recall that the basic steps involve looking both ways for oncoming traffic, using designated crosswalks if available, and following traffic signals if there are any. But I should break it down into clear, actionable steps. + +1. **Find a Safe Place to Cross**: Ideally, you should cross at a designated crosswalk or intersection. These are typically marked with white lines on the road and may have traffic signals or signs. + +2. **Look Both Ways**: Before stepping off the curb, look left, right, and then left again to check for oncoming traffic. This is because in many places, traffic comes from the left first (depending on the country's driving side). + +3. **Wait for a Safe Gap**: Make sure there is enough time to cross the street before any vehicles approach. If there's a traffic light, wait for the pedestrian signal to indicate it's safe to cross. + +4. **Cross with Caution**: Walk briskly across the street while keeping an eye out for any unexpected vehicles. Avoid running unless absolutely necessary. + +5. **Continue Looking**: Even while crossing, continue to look for vehicles to ensure your safety. + +6. **Follow Traffic Signals**: If there are traffic lights or pedestrian signals, obey them. Only cross when the signal indicates it's safe to do so. + +Additionally, it's important to make eye contact with drivers if possible, to ensure they see you before you cross. Avoid distractions like using your phone while crossing the street. + +But wait, does the user need any specific context? For example, are they in a country where cars drive on the left or the right? That might affect the direction they should look first. However, since the user hasn't specified a location, I'll provide a general answer that should work in most places. + +Also, if the user is asking this question, they might be very young or unfamiliar with urban environments, so I should keep the instructions simple and clear. + +Here's a concise response based on this thinking:\ +""" + ), + TextPart( + content="""\ +To cross the street safely, follow these steps: + +1. Find a designated crosswalk or intersection if possible. +2. Look left, right, and then left again to check for oncoming traffic. +3. Wait for a safe gap in traffic or for the pedestrian signal to indicate it's safe to cross. +4. Cross the street briskly while continuing to look for vehicles. +5. Follow any traffic signals and always be cautious of your surroundings. + +If you're in a country where cars drive on the left (like the UK or Japan), remember to look right first instead of left. Always prioritize your safety and make sure drivers see you before crossing.\ +""" + ), + ], + usage=RequestUsage(input_tokens=10, output_tokens=602), + model_name='magistral-medium-latest', + timestamp=IsDatetime(), + provider_name='mistral', + ), + ] + ) diff --git a/tests/models/test_openai_responses.py b/tests/models/test_openai_responses.py index faa9364b2e..b6b2a9cfc9 100644 --- a/tests/models/test_openai_responses.py +++ b/tests/models/test_openai_responses.py @@ -1193,6 +1193,7 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c', signature=IsStr(), + provider_name='openai', ), ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), @@ -1223,6 +1224,7 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c', signature=IsStr(), + provider_name='openai', ), ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), @@ -1251,6 +1253,7 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c', signature=IsStr(), + provider_name='openai', ), ThinkingPart(content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c'), ThinkingPart(content=IsStr(), id='rs_68bb4c44500481959c3dc83bfff8bdf006370ebbaae73d2c'), @@ -1279,7 +1282,7 @@ async def test_openai_responses_thinking_part_iter(allow_model_requests: None, o async for node in agent_run: if Agent.is_model_request_node(node) or Agent.is_call_tools_node(node): async with node.stream(agent_run.ctx) as request_stream: - async for event in request_stream: + async for _ in request_stream: pass assert agent_run.result is not None @@ -1299,21 +1302,19 @@ async def test_openai_responses_thinking_part_iter(allow_model_requests: None, o content=IsStr(), id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', signature=IsStr(), + provider_name='openai', ), - ThinkingPart( - content=IsStr(), - id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', - ), - ThinkingPart( - content=IsStr(), - id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b', - ), + ThinkingPart(content=IsStr(), id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b'), + ThinkingPart(content=IsStr(), id='rs_68bb4cc9730481a38d9aaf55dff8dd4a0b681c5350c0b73b'), TextPart(content=IsStr()), ], usage=RequestUsage(input_tokens=13, output_tokens=1733, details={'reasoning_tokens': 1280}), model_name='o3-mini', timestamp=IsDatetime(), provider_name='openai', + provider_details={'finish_reason': 'completed'}, + provider_response_id='resp_68bb4cbe885481a3a55b6a2e6d6aa5120b681c5350c0b73b', + finish_reason='stop', ), ] ) From 86328ee94e48a1c1915dc97fc220b3c8a784e401 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 21:08:29 +0000 Subject: [PATCH 03/13] Fix Google thought signatures --- pydantic_ai_slim/pydantic_ai/models/google.py | 97 ++--- .../test_google_model_thinking_part.yaml | 329 ++++++++++++++--- .../test_google_model_thinking_part_iter.yaml | 338 ++++++------------ tests/models/test_anthropic.py | 53 +-- tests/models/test_bedrock.py | 12 +- tests/models/test_cohere.py | 18 +- tests/models/test_google.py | 185 +++++++--- tests/models/test_huggingface.py | 17 +- tests/models/test_mistral.py | 23 +- tests/models/test_openai.py | 19 +- tests/models/test_openai_responses.py | 26 +- 11 files changed, 603 insertions(+), 514 deletions(-) diff --git a/pydantic_ai_slim/pydantic_ai/models/google.py b/pydantic_ai_slim/pydantic_ai/models/google.py index c9df5335d8..a4845a04c6 100644 --- a/pydantic_ai_slim/pydantic_ai/models/google.py +++ b/pydantic_ai_slim/pydantic_ai/models/google.py @@ -568,7 +568,7 @@ class GeminiStreamedResponse(StreamedResponse): _timestamp: datetime _provider_name: str - async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: + async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: # noqa: C901 async for chunk in self._response: self._usage = _metadata_as_usage(chunk) @@ -592,15 +592,17 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: raise UnexpectedModelBehavior('Content field missing from streaming Gemini response', str(chunk)) parts = candidate.content.parts or [] for part in parts: + if part.thought_signature: + signature = base64.b64encode(part.thought_signature).decode('utf-8') + yield self._parts_manager.handle_thinking_delta( + vendor_part_id='thinking', + signature=signature, + provider_name='google', + ) + if part.text is not None: if part.thought: - signature = part.thought_signature.decode('utf-8') if part.thought_signature else None - yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', - content=part.text, - signature=signature, - provider_name='google' if signature else None, - ) + yield self._parts_manager.handle_thinking_delta(vendor_part_id='thinking', content=part.text) else: maybe_event = self._parts_manager.handle_text_delta(vendor_part_id='content', content=part.text) if maybe_event is not None: # pragma: no branch @@ -639,32 +641,38 @@ def timestamp(self) -> datetime: def _content_model_response(m: ModelResponse) -> ContentDict: parts: list[PartDict] = [] + thought_signature: bytes | None = None for item in m.parts: + part: PartDict = {} + if thought_signature: + part['thought_signature'] = thought_signature + thought_signature = None + if isinstance(item, ToolCallPart): function_call = FunctionCallDict(name=item.tool_name, args=item.args_as_dict(), id=item.tool_call_id) - parts.append({'function_call': function_call}) + part['function_call'] = function_call elif isinstance(item, TextPart): - parts.append({'text': item.content}) + part['text'] = item.content elif isinstance(item, ThinkingPart): - parts.append( - { - 'text': item.content, - 'thought': True, - 'thought_signature': item.signature.encode('utf-8') - if item.provider_name == 'google' and item.signature - else None, - } - ) + if item.provider_name == 'google' and item.signature: + # The thought signature is included on the _next_ part, not the thought part itself + thought_signature = base64.b64decode(item.signature) + + part['text'] = item.content + part['thought'] = True elif isinstance(item, BuiltinToolCallPart): if item.provider_name == 'google': if item.tool_name == 'code_execution': # pragma: no branch - parts.append({'executable_code': cast(ExecutableCodeDict, item.args)}) + part['executable_code'] = cast(ExecutableCodeDict, item.args) elif isinstance(item, BuiltinToolReturnPart): if item.provider_name == 'google': if item.tool_name == 'code_execution': # pragma: no branch - parts.append({'code_execution_result': item.content}) + part['code_execution_result'] = item.content else: assert_never(item) + + if part: + parts.append(part) return ContentDict(role='model', parts=parts) @@ -678,44 +686,41 @@ def _process_response_from_parts( finish_reason: FinishReason | None = None, ) -> ModelResponse: items: list[ModelResponsePart] = [] + item: ModelResponsePart | None = None for part in parts: + if part.thought_signature: + signature = base64.b64encode(part.thought_signature).decode('utf-8') + assert isinstance(item, ThinkingPart), 'Thought signature must follow a thinking part' + item.signature = signature + item.provider_name = 'google' + if part.executable_code is not None: - items.append( - BuiltinToolCallPart( - provider_name='google', args=part.executable_code.model_dump(), tool_name='code_execution' - ) + item = BuiltinToolCallPart( + provider_name='google', args=part.executable_code.model_dump(), tool_name='code_execution' ) elif part.code_execution_result is not None: - items.append( - BuiltinToolReturnPart( - provider_name='google', - tool_name='code_execution', - content=part.code_execution_result, - tool_call_id='not_provided', - ) + item = BuiltinToolReturnPart( + provider_name='google', + tool_name='code_execution', + content=part.code_execution_result, + tool_call_id='not_provided', ) elif part.text is not None: if part.thought: - signature = part.thought_signature.decode('utf-8') if part.thought_signature else None - items.append( - ThinkingPart( - content=part.text, - signature=signature, - provider_name='google' if signature else None, - ) - ) + item = ThinkingPart(content=part.text) else: - items.append(TextPart(content=part.text)) + item = TextPart(content=part.text) elif part.function_call: assert part.function_call.name is not None - tool_call_part = ToolCallPart(tool_name=part.function_call.name, args=part.function_call.args) + item = ToolCallPart(tool_name=part.function_call.name, args=part.function_call.args) if part.function_call.id is not None: - tool_call_part.tool_call_id = part.function_call.id # pragma: no cover - items.append(tool_call_part) - elif part.function_response: # pragma: no cover + item.tool_call_id = part.function_call.id # pragma: no cover + else: # pragma: no cover raise UnexpectedModelBehavior( - f'Unsupported response from Gemini, expected all parts to be function calls or text, got: {part!r}' + f'Unsupported response from Gemini, expected all parts to be function calls, text, or thoughts, got: {part!r}' ) + + items.append(item) return ModelResponse( parts=items, model_name=model_name, diff --git a/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml b/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml index bd349b715a..d75c56f409 100644 --- a/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +++ b/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml @@ -8,7 +8,7 @@ interactions: connection: - keep-alive content-length: - - '242' + - '371' content-type: - application/json host: @@ -26,17 +26,24 @@ interactions: parts: - text: You are a helpful assistant. role: user - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview-03-25:generateContent + tools: + - functionDeclarations: + - description: '' + name: dummy + parameters: + properties: {} + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent response: headers: alt-svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 content-length: - - '6861' + - '9053' content-type: - application/json; charset=UTF-8 server-timing: - - gfet4t7; dur=36000 + - gfet4t7; dur=14825 transfer-encoding: - chunked vary: @@ -48,91 +55,299 @@ interactions: - content: parts: - text: | - **Deconstructing and Constructing a Safe Crossing Guide** + **Navigating the Street: Your Safe Crossing Guide** - My initial thought is that the seemingly simple question "How do I cross the street?" demands a comprehensive, nuanced answer. It's crucial to consider the user's potential needs and knowledge gaps – a child, a language learner, someone with specific needs, or even someone being facetious. The primary goal is to provide a universally applicable, safe, and easily understood guide. + Okay, so the user wants the lowdown on safe street crossing. As an expert, I know this is a basic but crucial bit of knowledge. My thoughts are: this isn't something I can *do* for them, but I can certainly provide a solid framework. Here's my plan: - First, I'll dissect the core of the request. The essence is to get from one side of the street to the other safely. That means pinpointing the key actions (stopping, looking, listening, walking, making eye contact, using designated areas) and anticipating various scenarios: intersections with lights, crosswalks without lights, mid-block crossings (jaywalking - which I'll strongly discourage, yet cover), parking lots, and rural areas. + I'll break it down step-by-step, starting with a safe spot, then prepping to cross, then the crossing itself, and finally, some extra considerations. I'll need to keep it simple, direct, and focused on safety. - Next, I'll identify and organize the key safety principles: distractions (a huge one), visibility issues, making eye contact, teaching children, and what to do if a car doesn't stop. + Here's how I envision it: - The resulting structure will guide the detailed response: a friendly introduction validating the user's question, followed by a clear, step-by-step guide – the "Golden Rule" (Stop, Look, Listen, Cross). I'll detail what each step entails and expand with nuances. Specific sections for different crossing scenarios will make the information readily accessible, followed by a 'Crucial Safety Tips' section highlighting key takeaways. A specific section on teaching children adds value and shows consideration for different user demographics. The response concludes with a reassuring, safety-focused statement. + First, let's find the safest place to cross. I should tell them to: - The core of the response will be a concise, practical guide encompassing the fundamental actions involved in safe street crossing, supported by specific examples tailored to diverse situations. + * **Look for a designated crosswalk** – that's the ideal spot. + * **If there's no crosswalk, head to a street corner or intersection.** + * **Make sure you have a clear view of the traffic** in all directions. + * **Avoid crossing between parked cars** or in the middle of the block – those are blind spots! + + Next up, it's time to *prepare* to cross: + + * **Stop** at the curb – don't step out yet! + * **Look** left, then right, then left *again* for any vehicles coming. + * **Listen** for approaching vehicles – some might be hard to see! + + Now, the actual crossing: + + * **Wait until the road is clear.** This is the most important part! + * **Make eye contact with drivers** to be sure they see you. + * **Walk, don't run, straight across the street**. Running is risky! + * **Keep looking and listening** the whole time you're crossing. + + Finally, some extra tips: + + * **If there are traffic signals, obey them** – wait for the "Walk" signal. *Don't* cross on the "Don't Walk" sign. + * **Put your phone away and take off headphones** – distractions are dangerous. + * **At night, wear bright or reflective clothing** to be seen. + * **If you're with a child, hold their hand!** + + Ultimately, the goal is simple: Stay safe out there! thought: true - text: |- - Of course! That's a very important question. Safely crossing the street is a critical skill. Here is a step-by-step guide covering the most common situations. + Crossing the street safely is very important! Here is a standard, safe procedure to follow, often taught as "Stop, Look, and Listen." + + ### 1. Find a Safe Place to Cross + * **Use a designated crosswalk:** Whenever possible, cross at a marked crosswalk or an intersection with a traffic light. These are the safest places. + * **If no crosswalk is available:** Go to the nearest street corner. You will have a better view of traffic from all directions. + * **Avoid crossing in the middle of the block**, especially between parked cars. Drivers can't see you easily in these areas. + + ### 2. Stop at the Edge + * Stop at the curb or the edge of the road. + * Do not step into the street yet. + + ### 3. Look and Listen for Traffic + * **Look Left:** Check for any oncoming cars, bicyclists, or motorcycles. + * **Look Right:** Do the same for traffic coming from the other direction. + * **Look Left Again:** Take one final look in the direction of the closest traffic before you step out. + * **Listen:** Sometimes you can hear a vehicle before you can see it. + + ### 4. Wait Until It's Clear + * Wait for a safe gap in traffic before you start to cross. + * If you are at a crosswalk with a signal, wait for the "Walk" symbol (often a walking person) to appear. Don't cross on the flashing "Don't Walk" or red hand signal. + * Try to make eye contact with drivers to be sure they have seen you. + + ### 5. Cross the Street + * Walk, don't run, straight across the street. + * Keep looking and listening for traffic as you cross, as the situation can change quickly. + * Put your phone away and remove headphones so you can stay fully aware of your surroundings. + + By following these steps every time, you can significantly increase your safety when crossing the street. + thoughtSignature: CsIbAdHtim/PZBtNV8ZVUpjBA+5nE2xCD8XQPDu2xgdh95uZHSrxP5gkFxPsBfhTstGSt7babNrzOBMplTirXzddg13pptXtIydFpF1HjqqDHvjWW7XJHY48ePaT7MBWUzogsr/plCNKr/LK1hjqQN42htEl09xcHJp+ZAAIZ5gojorScI2QerVWdV4md2pM4ywmSdC9t8Re+7SIQD/mdzcRm/htt97rcso5Z97mwxtjdFWGQmbNr59TzmjvORNI19TC69pghKFir9qa6hw0fL+55wTRVw0WVObEhKjZ6nrwC3xBP9CAAi9WxwhrrVFjOHmlWUtM5rw59HcQ24fRjHDLPAdEUCqf2nNDaHxrwNActNAWSeBpyyXp/2DwUC5QMpXkSLmeDfIB2FYhDsRod3IxJ+NY5cxyVwMCCgXnfwhgS0WgMZvaXqNa2V0cYDkKObmWG9Kr6CBL5J/QWpOm7c3i8H+sF+7G1rAsU0dcLgWGZj0Mh52EFXyihB4ZzEwtRwtuvq0BLkFuNzWNh3tSpEiddTFdZAQvYDoXnTH5SV7dJ3Wg3muiT8+Q+ZasNVfrT4LFNRak7Z+w494uLVIYqiWGhGDT3Q5sL2w7XANyqirP6gfPJHHy8XZVnNzmyKlYDqdHH7/kQErqw95jAhh0l+C84GXpeEAFd3QKz85APweeaVnxjuY3Jz76WvEs48ax/Dct7XKl37ko1pLdkG0R13CZQ/9UcLw4I+5czAgcWUOm97WUPxGd686+Gh5QBaaGf6Y5wwSYXaOLavPGjnbsKTh7wBXXetPH3xW2MjlTpvpfzluItkef6KewcaJMaHlIrqL+BkLxraalGq/uGdJizuO61IGe0r8Y7mnstZyWuhFp/tLzKXNZKh579ZJwjCtc8SNWgJoRxvQoJAbFofksh2KqQFfkAmrrJyqpJWQlYiRal283lmaY+wQh+Bq+cBj0SpD42U8wJW0bJhTqK2VwiLtmTy4D9J1xjee2s23ljUiFZqTLovcoXySCglbmIpqxXngsYl48VoE3QzqG4xEP0l4ckEbTTlb3nHiNsVReFlfaVA2nKqtaYRIKfaWF3NOGjKvMuR0+6O8Wlb7yqWhIu36pu/gtoPbzzsFhP5zwzclrJoxRUdL3o6nsue0MwRzfGmLdioWeyHaNThlzh1s6yEFxtncK/iwu/WyRC3tPfZczmAcicOv5lGxjjlYcnWI2/OagB6sOeXSiCnQ1N2zxlbTq3IN3YOsdaAtbzCQPhYqFp8g1P6Ge/8+3rkmTeawTe0A6Q9RWNCWQU6LUSROAlj7dwaV9tGtGlYwZsVupi+Z8a2+zWh7zdP1x3wIk0pY+wMiQpus5t8ZqKQudpv0hki3cVL4VnIEJNjeFIqLk91eVx01/wq7EfGd5Y+o8cSDO5s4hsfSzVVbJmfHnSSbzaZ9UCV8b/qVMpDipDc8r/21cgffDfOAOScOPzYBJG1ZB87o3jdyPpMsm+dT1djMj2SQO8o2TUpv27q/VIVZEP1+Nn6ZYv1go2+YlJ+RibLOWnD7mF+xsWmQuZwN/Oyh7eRD+G7KJKDqsnd5iaouMZSOge8UyXTSAlAVF4YDoEz7BIznf5SFvwlC2wTPtzqQh69teGe+Y8/Ka4ZXOOmXn01QN4iRqGd5fpoyGcoB+rqt7ufMxVShV4cbSFsLhP/ukmyWIUl1igzjskOrlcgh/TroAfuwOMTeXlMxfghxYEfQP2lChjr5ZkgxOpMphI9gZzePs+I0YihYpeYuJbhcjft9xzfWC9hq9d+BXzBO5NAWZKj0+xhxDGD5JIpuDZUPtuZLLesNQ+akeIlkCINmjtcCk7pGa888EBptoWF9O7JL42Nwp+5Ozg4N9oMJfS3jGNxQexEUtoM386lrQz2pAcw1RN/yefWRxwPS2Ng9qfCHedIj+9ZMMu5VFtBHIJrnOqFJA5Q9P9rDaCM6yc6Kshj/wy+yo72UAuA5T0lLB7O1LyclUbf0oZfQnQoKQc2MOywTbdNDYg0rXInuZe+dMfoVPlIRR5YgxgmWWIpeY6UDx0IxuVq/4VCLxqlwnQ7wmuJNzm4Kha6OAC6KwYMpfyUMfotqdk+DqiBOK0I5uxz39PxOwxKCf/JGDZpjU/JNhoag7k7GXH7H3UaOKMROeu67HdqkBZx77CwTKyCbyHjY04r5DzAfHgi7d16GFUgqhu8vtfbK3SmMAw/fE/Q/ULcDryAlAhFCvsqI53tEXNHgTTngEL0kSHd1qwsevzT5lyT2hWlLF0/6sR8f1e49x9AnRxoVxIAINEn0uv4cbt7NYqa3cTv2mMS3PDH/1tCOXXio87pKwbXbWq2IG/mG1/iLptqYQ3MLFtGG2RX4zRCL/ytsBUPJi8a39a5AOjXRnxWHcrNjFPNUR7fITUsP5yq0ixI9ZobTAmgPdaUAB4aRbcqt3MkkMAEHxOAu2TdaQcOP83xL0zK1JKwuMRnB4FpYbIsF3thhTrDWwGF46zYA8EVQDk94pNo430l24L8h39eNUIpGWXn9oNzpal9E53o/z1g/AhxNR3hr+4bLkEk4tMPl9XU6sL+/BkgQr0n8JXBZJzhmwuscANvv9fRcurfWbNWi6ANXLtpL2necZU9rXG21mN/E2trsFj8oXgV5flaofTnyPd0UadcngfkYOQRVrusIJGRE4J7fcUdlA2u3cvlEYFM6Xxm0dilnPjTwcAYMhz59FzBQE2w7QFTQlHruFpvr9wESDpZrEUlg5owu393QMkEZZBe5H06QSU52uQqkEgnZ24SMRDJXbnPJXIQ/axOnC8UhLwoneS55rd+qVO8CVfwbn2nkoO7KzTIye8ehf21s15Km1NzLxSudF1KDLfZD08xsugW/WkqZrBEJ+N4Q1Xq7JZgaDvK13LFf77Ig0xrpq4qsrIkbJ6V9QoZ+yEHbtbtnuIMpcmoYOz/YVplNessT+XSxQyF0m6CIar/3kLZEiidxT3EwnH6BR7q32thyFyNKaZ1XAlSMKW6g3eEvTzIVRmKIamrO5o1iMiobaelw2hScm76tmUwC3KhV4pMbKLhlJwWTeMqtNxFg7yY9c0PmmfNsGqnoXRID6jJLO5sUkGls10g10Ug5cIlDqbmPyCDm3PSq6SH81O5iCj/ydsQPWBgNFW2pGemCXLU/x4o43jHMfBcJBhBOhzaphGQIoNLS55DsIoqLAq+B87J5X/gmOI8ZyaqI1ftpRShlDkCRRedpwRwWjyj3R8+PzVQVlFziaWndyyHpqLs5I0d/iXJntv0l2u9h0t4VYnlGLmTYUmDcHbZOQUV6sza9aC+GSEsmwx3PF5hJgirjt/wi7K8uJrBG0qU1BGl8ntmr+ZnE2RK5RmH2iijGqtuqCR0/BflnD9hlf3OqEZwnNuABIZO0uEL2TO6XkTJGgaJWO8JdS/77nCkkOx65jYkqYlJToztylfgU+vVM9RzhcVgXWT4F/zrQrClOPePw27xRsWMXrDY2RXf8AYFYJJOFbi0slUHJgw3zOrG0CHPdMWhEX1iS+75L1ifNUO3bUpFST3vfaQf5YkvW1FzEpA/OVFMkml9nyQRUp2D4irXRN2xqBQlxxmDU53GjabiYBzv5dZfzh9lUoVEBAskmp3bW4inpNNKI+yezhEtQBImWsRfcxHV/htmmm2qEWCnTAPqXJU90C0QGg6SpBaelpN6P98D/rhLmp2umn69VPTSctWn07piSy/Dx9JNtSnw5OCc6wTu2w+NhUaU/Eg2mw+EsOpFMrE5JhQzQo8043Y/FN3FPsbsAGRX8bWOHPMam7el00x8AdVK9AMBnsNlyBpsRj2vXgQjzojD9t7nanMxWPlpdsxJr68mLqtnQGhylnGMsvUR9MVL56xnoGb/oh15XihE+mfvS15+dWVhMSpXQYQasKqne0EQzjnoA0UvcDxYdxgInK6rGwF5ULun3oQwrzxLN+7oXM5oy59OJGL908t0cmZVLjfdFEQDYXMRjRm9Invc2DXF6JLSt/2ZptK2b++VTSnMSC+fAoBzLBxLJMPTbxBB1fIZP0M7E2mdECxQf7yUZ9mUhlKDur//FONzk8dAVaFVM0OOY57koOgN3ge5USPkw4UwSU9DQz8lkjyAZqtqIIWP3AmhMNxhcXaF68RkxolS082wYbhFyH8rL/CrBlU9BlMW9B1LN/qy/dgB6KzV8ETy+0xZZ6y3SiREhjUnNsHdyOEfSweJwVNETWBZ9/asKGeeK6DtS8QYj2BFt466N3U4Bk824THFUsDRZsg07LirvRXjgL1MDmbVdzNG/3e3NhcONOYPG8u1JOAKzNzCGgFUHwi6H6bLwJcnFtJhVoxp/3glVN/Tm7QOcUMZleMeiulda/LINbQ3P0wUsZ8tWDRxRwyD0Dvho6EKy7E2nVGEHqODyuTqNdyS8zBWHwdNOC6PuxX+GSV7W/2+GwfB2f0YHo0LyypDWiAgE3Nn10QH8igHb2dij51g5Q871bBt9Tt9PN9nGiRW1j+1Nhah5rozPI/GM7d4DOsF39EaHo+UaigyzusTefADY1iO5fF17o2JNoHpVKr6hDKIpvCMAuVJP5UFE35RCN8UBcQhC7Tp4ZKSs3n9f/X4nMOGUER6TFYUXIsfbjL+HEsEEFhOPeblX7UBaVwSXUpxNHY3ZXxWpmtHy8nwvb/e6QmtEB0vUMraq/95SDB8B8OLTy9txo + role: model + finishReason: STOP + index: 0 + modelVersion: gemini-2.5-pro + responseId: sebBaN7rGrSsqtsPhf3J0Q4 + usageMetadata: + candidatesTokenCount: 429 + promptTokenCount: 34 + promptTokensDetails: + - modality: TEXT + tokenCount: 34 + thoughtsTokenCount: 817 + totalTokenCount: 1280 + status: + code: 200 + message: OK +- request: + headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '9006' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + method: POST + parsed_body: + contents: + - parts: + - text: How do I cross the street? + role: user + - parts: + - text: | + **Navigating the Street: Your Safe Crossing Guide** + + Okay, so the user wants the lowdown on safe street crossing. As an expert, I know this is a basic but crucial bit of knowledge. My thoughts are: this isn't something I can *do* for them, but I can certainly provide a solid framework. Here's my plan: + + I'll break it down step-by-step, starting with a safe spot, then prepping to cross, then the crossing itself, and finally, some extra considerations. I'll need to keep it simple, direct, and focused on safety. + + Here's how I envision it: + + First, let's find the safest place to cross. I should tell them to: - ### The Basic Steps: The Golden Rule for Any Crossing + * **Look for a designated crosswalk** – that's the ideal spot. + * **If there's no crosswalk, head to a street corner or intersection.** + * **Make sure you have a clear view of the traffic** in all directions. + * **Avoid crossing between parked cars** or in the middle of the block – those are blind spots! - No matter where you are, always follow these fundamental steps. + Next up, it's time to *prepare* to cross: - 1. **STOP** at the edge of the road or curb. Never step into the street without stopping first. - 2. **LOOK** for traffic. Look **left**, then **right**, then **left again**. The first car to reach you will come from the left, so you check that direction last before stepping out. Also, check for turning vehicles. - 3. **LISTEN** for the sound of approaching cars, motorcycles, or sirens. Sometimes you can hear a vehicle before you can see it, especially around a blind corner. - 4. **CROSS** when the road is clear. Walk briskly and directly across the street. **Do not run**, as you could trip and fall. Continue looking for traffic as you cross. + * **Stop** at the curb – don't step out yet! + * **Look** left, then right, then left *again* for any vehicles coming. + * **Listen** for approaching vehicles – some might be hard to see! - --- + Now, the actual crossing: - ### How to Cross in Different Situations + * **Wait until the road is clear.** This is the most important part! + * **Make eye contact with drivers** to be sure they see you. + * **Walk, don't run, straight across the street**. Running is risky! + * **Keep looking and listening** the whole time you're crossing. - #### 1. At an Intersection with a Traffic Light & Pedestrian Signal ("Walk/Don't Walk") + Finally, some extra tips: - This is the safest place to cross. + * **If there are traffic signals, obey them** – wait for the "Walk" signal. *Don't* cross on the "Don't Walk" sign. + * **Put your phone away and take off headphones** – distractions are dangerous. + * **At night, wear bright or reflective clothing** to be seen. + * **If you're with a child, hold their hand!** - 1. **Find the pedestrian signal button** and press it. This lets the system know you are waiting to cross. - 2. **Wait for the "Walk" signal.** This is usually a symbol of a walking person or the word "WALK." - 3. **Before you step off the curb, STILL LOOK LEFT, RIGHT, and LEFT AGAIN.** Even with the walk signal, a car may be turning or running a red light. - 4. **Pay attention to the countdown timer.** If the hand symbol starts flashing and counting down, you have that many seconds to finish crossing. If you haven't started crossing yet, it's safer to wait for the next "Walk" signal. - 5. **Never cross on a "Don't Walk" signal** (usually a solid red hand). + Ultimately, the goal is simple: Stay safe out there! + thought: true + - text: |- + Crossing the street safely is very important! Here is a standard, safe procedure to follow, often taught as "Stop, Look, and Listen." - #### 2. At a Marked Crosswalk with No Traffic Light + ### 1. Find a Safe Place to Cross + * **Use a designated crosswalk:** Whenever possible, cross at a marked crosswalk or an intersection with a traffic light. These are the safest places. + * **If no crosswalk is available:** Go to the nearest street corner. You will have a better view of traffic from all directions. + * **Avoid crossing in the middle of the block**, especially between parked cars. Drivers can't see you easily in these areas. + + ### 2. Stop at the Edge + * Stop at the curb or the edge of the road. + * Do not step into the street yet. + + ### 3. Look and Listen for Traffic + * **Look Left:** Check for any oncoming cars, bicyclists, or motorcycles. + * **Look Right:** Do the same for traffic coming from the other direction. + * **Look Left Again:** Take one final look in the direction of the closest traffic before you step out. + * **Listen:** Sometimes you can hear a vehicle before you can see it. + + ### 4. Wait Until It's Clear + * Wait for a safe gap in traffic before you start to cross. + * If you are at a crosswalk with a signal, wait for the "Walk" symbol (often a walking person) to appear. Don't cross on the flashing "Don't Walk" or red hand signal. + * Try to make eye contact with drivers to be sure they have seen you. + + ### 5. Cross the Street + * Walk, don't run, straight across the street. + * Keep looking and listening for traffic as you cross, as the situation can change quickly. + * Put your phone away and remove headphones so you can stay fully aware of your surroundings. + + By following these steps every time, you can significantly increase your safety when crossing the street. + thoughtSignature: CsIbAdHtim_PZBtNV8ZVUpjBA-5nE2xCD8XQPDu2xgdh95uZHSrxP5gkFxPsBfhTstGSt7babNrzOBMplTirXzddg13pptXtIydFpF1HjqqDHvjWW7XJHY48ePaT7MBWUzogsr_plCNKr_LK1hjqQN42htEl09xcHJp-ZAAIZ5gojorScI2QerVWdV4md2pM4ywmSdC9t8Re-7SIQD_mdzcRm_htt97rcso5Z97mwxtjdFWGQmbNr59TzmjvORNI19TC69pghKFir9qa6hw0fL-55wTRVw0WVObEhKjZ6nrwC3xBP9CAAi9WxwhrrVFjOHmlWUtM5rw59HcQ24fRjHDLPAdEUCqf2nNDaHxrwNActNAWSeBpyyXp_2DwUC5QMpXkSLmeDfIB2FYhDsRod3IxJ-NY5cxyVwMCCgXnfwhgS0WgMZvaXqNa2V0cYDkKObmWG9Kr6CBL5J_QWpOm7c3i8H-sF-7G1rAsU0dcLgWGZj0Mh52EFXyihB4ZzEwtRwtuvq0BLkFuNzWNh3tSpEiddTFdZAQvYDoXnTH5SV7dJ3Wg3muiT8-Q-ZasNVfrT4LFNRak7Z-w494uLVIYqiWGhGDT3Q5sL2w7XANyqirP6gfPJHHy8XZVnNzmyKlYDqdHH7_kQErqw95jAhh0l-C84GXpeEAFd3QKz85APweeaVnxjuY3Jz76WvEs48ax_Dct7XKl37ko1pLdkG0R13CZQ_9UcLw4I-5czAgcWUOm97WUPxGd686-Gh5QBaaGf6Y5wwSYXaOLavPGjnbsKTh7wBXXetPH3xW2MjlTpvpfzluItkef6KewcaJMaHlIrqL-BkLxraalGq_uGdJizuO61IGe0r8Y7mnstZyWuhFp_tLzKXNZKh579ZJwjCtc8SNWgJoRxvQoJAbFofksh2KqQFfkAmrrJyqpJWQlYiRal283lmaY-wQh-Bq-cBj0SpD42U8wJW0bJhTqK2VwiLtmTy4D9J1xjee2s23ljUiFZqTLovcoXySCglbmIpqxXngsYl48VoE3QzqG4xEP0l4ckEbTTlb3nHiNsVReFlfaVA2nKqtaYRIKfaWF3NOGjKvMuR0-6O8Wlb7yqWhIu36pu_gtoPbzzsFhP5zwzclrJoxRUdL3o6nsue0MwRzfGmLdioWeyHaNThlzh1s6yEFxtncK_iwu_WyRC3tPfZczmAcicOv5lGxjjlYcnWI2_OagB6sOeXSiCnQ1N2zxlbTq3IN3YOsdaAtbzCQPhYqFp8g1P6Ge_8-3rkmTeawTe0A6Q9RWNCWQU6LUSROAlj7dwaV9tGtGlYwZsVupi-Z8a2-zWh7zdP1x3wIk0pY-wMiQpus5t8ZqKQudpv0hki3cVL4VnIEJNjeFIqLk91eVx01_wq7EfGd5Y-o8cSDO5s4hsfSzVVbJmfHnSSbzaZ9UCV8b_qVMpDipDc8r_21cgffDfOAOScOPzYBJG1ZB87o3jdyPpMsm-dT1djMj2SQO8o2TUpv27q_VIVZEP1-Nn6ZYv1go2-YlJ-RibLOWnD7mF-xsWmQuZwN_Oyh7eRD-G7KJKDqsnd5iaouMZSOge8UyXTSAlAVF4YDoEz7BIznf5SFvwlC2wTPtzqQh69teGe-Y8_Ka4ZXOOmXn01QN4iRqGd5fpoyGcoB-rqt7ufMxVShV4cbSFsLhP_ukmyWIUl1igzjskOrlcgh_TroAfuwOMTeXlMxfghxYEfQP2lChjr5ZkgxOpMphI9gZzePs-I0YihYpeYuJbhcjft9xzfWC9hq9d-BXzBO5NAWZKj0-xhxDGD5JIpuDZUPtuZLLesNQ-akeIlkCINmjtcCk7pGa888EBptoWF9O7JL42Nwp-5Ozg4N9oMJfS3jGNxQexEUtoM386lrQz2pAcw1RN_yefWRxwPS2Ng9qfCHedIj-9ZMMu5VFtBHIJrnOqFJA5Q9P9rDaCM6yc6Kshj_wy-yo72UAuA5T0lLB7O1LyclUbf0oZfQnQoKQc2MOywTbdNDYg0rXInuZe-dMfoVPlIRR5YgxgmWWIpeY6UDx0IxuVq_4VCLxqlwnQ7wmuJNzm4Kha6OAC6KwYMpfyUMfotqdk-DqiBOK0I5uxz39PxOwxKCf_JGDZpjU_JNhoag7k7GXH7H3UaOKMROeu67HdqkBZx77CwTKyCbyHjY04r5DzAfHgi7d16GFUgqhu8vtfbK3SmMAw_fE_Q_ULcDryAlAhFCvsqI53tEXNHgTTngEL0kSHd1qwsevzT5lyT2hWlLF0_6sR8f1e49x9AnRxoVxIAINEn0uv4cbt7NYqa3cTv2mMS3PDH_1tCOXXio87pKwbXbWq2IG_mG1_iLptqYQ3MLFtGG2RX4zRCL_ytsBUPJi8a39a5AOjXRnxWHcrNjFPNUR7fITUsP5yq0ixI9ZobTAmgPdaUAB4aRbcqt3MkkMAEHxOAu2TdaQcOP83xL0zK1JKwuMRnB4FpYbIsF3thhTrDWwGF46zYA8EVQDk94pNo430l24L8h39eNUIpGWXn9oNzpal9E53o_z1g_AhxNR3hr-4bLkEk4tMPl9XU6sL-_BkgQr0n8JXBZJzhmwuscANvv9fRcurfWbNWi6ANXLtpL2necZU9rXG21mN_E2trsFj8oXgV5flaofTnyPd0UadcngfkYOQRVrusIJGRE4J7fcUdlA2u3cvlEYFM6Xxm0dilnPjTwcAYMhz59FzBQE2w7QFTQlHruFpvr9wESDpZrEUlg5owu393QMkEZZBe5H06QSU52uQqkEgnZ24SMRDJXbnPJXIQ_axOnC8UhLwoneS55rd-qVO8CVfwbn2nkoO7KzTIye8ehf21s15Km1NzLxSudF1KDLfZD08xsugW_WkqZrBEJ-N4Q1Xq7JZgaDvK13LFf77Ig0xrpq4qsrIkbJ6V9QoZ-yEHbtbtnuIMpcmoYOz_YVplNessT-XSxQyF0m6CIar_3kLZEiidxT3EwnH6BR7q32thyFyNKaZ1XAlSMKW6g3eEvTzIVRmKIamrO5o1iMiobaelw2hScm76tmUwC3KhV4pMbKLhlJwWTeMqtNxFg7yY9c0PmmfNsGqnoXRID6jJLO5sUkGls10g10Ug5cIlDqbmPyCDm3PSq6SH81O5iCj_ydsQPWBgNFW2pGemCXLU_x4o43jHMfBcJBhBOhzaphGQIoNLS55DsIoqLAq-B87J5X_gmOI8ZyaqI1ftpRShlDkCRRedpwRwWjyj3R8-PzVQVlFziaWndyyHpqLs5I0d_iXJntv0l2u9h0t4VYnlGLmTYUmDcHbZOQUV6sza9aC-GSEsmwx3PF5hJgirjt_wi7K8uJrBG0qU1BGl8ntmr-ZnE2RK5RmH2iijGqtuqCR0_BflnD9hlf3OqEZwnNuABIZO0uEL2TO6XkTJGgaJWO8JdS_77nCkkOx65jYkqYlJToztylfgU-vVM9RzhcVgXWT4F_zrQrClOPePw27xRsWMXrDY2RXf8AYFYJJOFbi0slUHJgw3zOrG0CHPdMWhEX1iS-75L1ifNUO3bUpFST3vfaQf5YkvW1FzEpA_OVFMkml9nyQRUp2D4irXRN2xqBQlxxmDU53GjabiYBzv5dZfzh9lUoVEBAskmp3bW4inpNNKI-yezhEtQBImWsRfcxHV_htmmm2qEWCnTAPqXJU90C0QGg6SpBaelpN6P98D_rhLmp2umn69VPTSctWn07piSy_Dx9JNtSnw5OCc6wTu2w-NhUaU_Eg2mw-EsOpFMrE5JhQzQo8043Y_FN3FPsbsAGRX8bWOHPMam7el00x8AdVK9AMBnsNlyBpsRj2vXgQjzojD9t7nanMxWPlpdsxJr68mLqtnQGhylnGMsvUR9MVL56xnoGb_oh15XihE-mfvS15-dWVhMSpXQYQasKqne0EQzjnoA0UvcDxYdxgInK6rGwF5ULun3oQwrzxLN-7oXM5oy59OJGL908t0cmZVLjfdFEQDYXMRjRm9Invc2DXF6JLSt_2ZptK2b--VTSnMSC-fAoBzLBxLJMPTbxBB1fIZP0M7E2mdECxQf7yUZ9mUhlKDur__FONzk8dAVaFVM0OOY57koOgN3ge5USPkw4UwSU9DQz8lkjyAZqtqIIWP3AmhMNxhcXaF68RkxolS082wYbhFyH8rL_CrBlU9BlMW9B1LN_qy_dgB6KzV8ETy-0xZZ6y3SiREhjUnNsHdyOEfSweJwVNETWBZ9_asKGeeK6DtS8QYj2BFt466N3U4Bk824THFUsDRZsg07LirvRXjgL1MDmbVdzNG_3e3NhcONOYPG8u1JOAKzNzCGgFUHwi6H6bLwJcnFtJhVoxp_3glVN_Tm7QOcUMZleMeiulda_LINbQ3P0wUsZ8tWDRxRwyD0Dvho6EKy7E2nVGEHqODyuTqNdyS8zBWHwdNOC6PuxX-GSV7W_2-GwfB2f0YHo0LyypDWiAgE3Nn10QH8igHb2dij51g5Q871bBt9Tt9PN9nGiRW1j-1Nhah5rozPI_GM7d4DOsF39EaHo-UaigyzusTefADY1iO5fF17o2JNoHpVKr6hDKIpvCMAuVJP5UFE35RCN8UBcQhC7Tp4ZKSs3n9f_X4nMOGUER6TFYUXIsfbjL-HEsEEFhOPeblX7UBaVwSXUpxNHY3ZXxWpmtHy8nwvb_e6QmtEB0vUMraq_95SDB8B8OLTy9txo + role: model + - parts: + - text: Considering the way to cross the street, analogously, how do I cross the river? + role: user + generationConfig: + thinkingConfig: + includeThoughts: true + systemInstruction: + parts: + - text: You are a helpful assistant. + role: user + tools: + - functionDeclarations: + - description: '' + name: dummy + parameters: + properties: {} + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent + response: + headers: + alt-svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + content-length: + - '15234' + content-type: + - application/json; charset=UTF-8 + server-timing: + - gfet4t7; dur=26581 + transfer-encoding: + - chunked + vary: + - Origin + - X-Origin + - Referer + parsed_body: + candidates: + - content: + parts: + - text: | + **My Approach to the River-Crossing Analogy** + + Okay, here's how I'm thinking about this. The user wants a detailed analogy, specifically mapping the "Stop, Look, and Listen" method for street crossing onto river crossing. That's the key. I can't just talk about general river-crossing techniques. This needs to be a direct parallel. + + First, I broke down the user's request. It's about safety, situational awareness, choosing the right spot, and executing the crossing. Then, I identified the core principles of street crossing: minimizing risk, awareness, location selection, tool/method selection, and safe execution. + + Next, I'm brainstorming the river-crossing equivalents. Streets are predictable, structured. Rivers are dynamic, natural, and less predictable. The "cars" in the street analogy become "currents, depth, debris, and wildlife" in the river. + + I'm structuring the analogy using the same headings as the street-crossing method. + + * **Find a Safe Place to Cross:** Bridges and established fords are the "crosswalks" of a river. Avoid wide bends or areas with rapids. I need to emphasize the importance of scouting for a safe spot. + + * **Stop at the Edge:** This is the assessment phase. Stop at the riverbank and don't just jump in. It's the "Stop" portion of the new method. + + * **Look and Listen for Traffic:** This is the heart of the analogy. I'm reinterpreting "Look and Listen" for a river environment. Instead of traffic, it's about assessing the dangers: current speed, depth, debris, and bottom conditions. Instead of engine noises, I'm listening for the roar of rapids or hidden dangers. I'm going to call this "Stop, Assess, and Probe" instead of "Stop, Look, and Listen." It sounds more active and appropriate. + + * **Wait Until It's Clear:** This is where the analogy diverges. There's no "walk" signal on a river. You have to make a judgment call: is it safe *now*? If not, find another way or turn back. I'll emphasize that sometimes you simply *don't* cross. + + * **Cross the Street:** This translates to executing the river crossing safely. I'll explain wading techniques: facing upstream, using a stick, shuffling your feet, going at an angle, and staying alert. + + Finally, I'll synthesize this into a structured response with clear headings and a clear introduction and conclusion. I'll make sure to highlight the critical difference: a street is a controlled system, a river is a natural force demanding more respect and caution. It's an interesting challenge! + thought: true + - text: |- + Excellent question! Using the principles of crossing a street as an analogy for crossing a river is a great way to understand the necessary caution and steps. The core concept of "Stop, Look, and Listen" translates perfectly from an urban environment to a natural one. - These are the white lines painted on the road. + Here is how you would cross a river, using the same safety logic as crossing a street. Let's call it **"Stop, Assess, and Probe."** - 1. **Stop at the edge of the crosswalk.** - 2. **Make your intention clear.** Stand where drivers can see you, but do not step into the road yet. - 3. **Wait for a safe gap in traffic.** While pedestrians often have the right-of-way in a crosswalk, **never assume a car will stop for you.** - 4. **Make eye contact with the drivers** of approaching cars to ensure they have seen you and are stopping. A wave or a nod can help confirm. - 5. Once traffic has stopped or there is a clear gap, cross the street, continuing to watch for cars. + ### 1. Find a Safe Place to Cross (The "Crosswalk") + * **Use a bridge or established ford:** Just like a crosswalk, these are the designated, safest places to cross. If one is available, use it. + * **If no established crossing is available:** Look for a spot that is wide, straight, and shallow. + * **Avoid crossing at dangerous "intersections":** + * **Bends:** The current is fastest and the water is deepest on the outside of a bend. + * **Narrow spots:** Water moves much faster through narrow channels. + * **Just above a waterfall or rapids:** A slip here could be fatal. - #### 3. At a Corner or Intersection with Only a Stop Sign + ### 2. Stop at the Edge (Stop at the "Curb") + * Stop at the riverbank before you even touch the water. + * This is your moment to assess the situation without being in immediate danger. Rushing in is like stepping off the curb without looking. - 1. **Wait for the cars to come to a complete stop** at the stop sign. - 2. **Make eye contact with the driver** to make sure they see you before you start to cross in front of them. - 3. Cross when you are certain the driver is waiting for you. Watch out for cars turning from other directions. + ### 3. Assess and Probe for Dangers (The "Look and Listen") + This is the most critical part. The "traffic" in a river is the water itself—its speed, depth, temperature, and what it's carrying. - #### 4. Crossing in the Middle of the Block (No Crosswalk) + * **Look at the Current (Assess the "Speed"):** + * How fast is the water moving? Is it faster than a walking pace? If so, it can easily knock you over. + * Look for debris (twigs, leaves) on the surface to gauge the speed. + * Look at the surface: Smooth, glassy water can be deep and deceptively fast. Eddies and turbulence indicate rocks and uneven terrain below. - **This is the most dangerous option and should be avoided whenever possible.** It's always best to walk to the nearest corner or crosswalk. If you absolutely must cross here: + * **Look at the Depth and Obstacles (Assess the "Vehicles"):** + * Is the water clear enough to see the bottom? Look for large, slippery rocks or sudden drop-offs. Darker water usually means deeper water. + * **Probe with a stick:** Use a long, sturdy stick or trekking pole to test the depth and the stability of the riverbed before you take a step. + * Look downstream for "strainers" (fallen trees or logjams) that water can pass through but you can't. These are extremely dangerous. - 1. **Find a spot with a clear view of traffic** in both directions. Do not cross from between parked cars. - 2. **Wait for a very large gap** in traffic from both directions. Traffic is moving faster here and is not expecting you. - 3. Follow the **"Look Left, Right, Left Again"** rule and cross quickly but safely when the way is completely clear. + * **Listen (Listen for "Unseen Traffic"):** + * Listen for the roar of water. A low rumble might indicate larger, more dangerous rapids or a waterfall downstream that you can't see from your vantage point. - ### Crucial Safety Tips to Always Remember + ### 4. Wait Until It's Safe (Wait for the "Gap in Traffic") + * The river's "traffic" never stops, so your decision is different. It’s not about waiting for a gap, but about making a judgment call: **Is it safe to cross at all?** + * If the water is too high, too fast, or too cold, the safe decision is to **not cross**. Find another way or turn back. Pride is not worth your life. A river that is impassable in the morning might be crossable in the afternoon (or vice-versa). - * **Put Away Distractions:** Put your phone away. Take off your headphones or at least turn the volume down. Your eyes and ears are your best safety tools. - * **Be Visible:** During the day, wear bright clothing. At night or in bad weather, wear light-colored or reflective clothing. - * **Make Eye Contact:** This is the best way to confirm that a driver sees you. - * **Watch for Turning Cars:** Drivers turning at an intersection might be looking at other cars, not at pedestrians. Be extra careful. - * **Never Assume:** Never assume a driver sees you or will stop for you, even if you have the right-of-way. - * **Teach Children:** When with a child, hold their hand firmly and explain what you are doing and why ("We're stopping to look for cars," "Now it's safe to cross"). + ### 5. Cross the River (Cross the "Street") + * **Use proper technique:** Unbuckle the waist and chest straps of your backpack so you can shed it easily if you fall. + * **Use a tool:** Use your sturdy stick or trekking pole as a third point of contact, planting it upstream of you. + * **Face upstream:** Lean into the current and move across at a slight downstream angle. + * **Shuffle, don't run:** Shuffle your feet along the bottom. This maintains your balance and helps you feel for unseen obstacles. + * **Stay aware:** Keep looking and feeling your way across. The river's bottom can change with every step. - By being patient and aware of your surroundings, you can cross the street safely every time. + By translating the simple, life-saving rules of crossing a street to the natural world, you can see that the fundamental principle is the same: **Never enter a potentially dangerous path without first understanding and respecting the forces at play.** + thoughtSignature: CqsvAdHtim+y8hQ4OThZKwYOwip/W2jb6pMxmr/ahMan9pzQjtC7KtqKx47N/bAQkwjKu9Q/7PNsQXmAePA6+Y8WVw+6ug191Lk3kUne/fKL+dtWf8QosjOL86FIBd4FxtuVeheZRxVqP8PU19xpbH0hp25PLxSaY0CsYw6dJYDbm4dou03UQozSRpi4CAeSB+wQNDPGA8tvjw0zkkzql90Cjv5RQ8lJA+KM4eJhlLGQajoa2WBPh6BKDJIXNjJ0zN3316/JXIypWcIrzKjboocPbeW9wPYslRRdIQvzXvXGgc+X5og+zdQJ2Ld2eVJSfabJQu32zsVKUb5lQB0r5EzQheC6DzXWeD6/isez2XEUOxntOWT7n88Ld5M/wJuH0abdpH5/Vc4AE6zTyJ+U5c6TZQq5FNUM3+K9IQulZPqr+qBMTppjEDZjV8R37yGNjWs12Mn/ZyUdIRFfuN56aZ0X4Q7g/UScoFDFct42p1J0JVuQ6/B4wPKgeGCPErArvJpGQGmgWkP0cr3sf3bPwTXzrHq7LdmXdYO62yQJCjE6+RHjhJMqU0jWCALT2TUcaESXMyueZIH3hq4OemJWiNlx/HRAP+9aEusprzn8qfWz8Lp15uub4p8EvZ22aaY/zuLL41Ek6fpeNTVw1zCif7FiNbzPzsNR9hcoaKqMJnYtQa23DFJXhDJSR3/Go2HZo5CO0gfV2TZY5jh0dqPkHeKvi5pB40EkbNARDt/mFcDQx7mLY65/2QGP7MKyWsNqUElmyaaEqo+ScPK+FAzGb97BgSRFgOFY4o9HdKRaxEJlPNq9VaXdD/KMKLJGzzVDW0AEe9r0NgpYao1IdvTBbywHaNhI/HYWrJfob9riGaPRHk6Zt/3XlCgl/VHrMuT5LgN6p8xR3O+1V9pDKep0uqn7VFp8A1a3yVXajA/5zFb9a2U8GPSu8KfrZvWoQwBzOB5ThbkHgdRBjjrIdF13ie6ECBdzqdwrKlQGCdeyW2osxQKDc51q9Yopg9aEnhu/kykJgSVnmUX6ytgGg6/7UOL1VcMWG5IT2+zEb28SC7WaIcCpLKtT7RbRwboJ807x1iBjnEur2I41JvtnajhltQPGwRZ3u5K/H7Uk+nwLJcgSyvGI9MR4p5aodizppxpNa/GWr5lgKZq2qk915Etd0+QbF2UWeIBwH3MQKrQgTYlySLfLHjbw2TkVe/qnY3vTM3k8KxmkKsayXUVT74t46TKKDM4B1CFUT+UG++VxeGncnCe/ZLdPy/RqPfMNx5xJM47BdBdjQztgkcgBMVBKjBhQGTBYQQE0OQkgRmzRCSwpA1NlXKBsDNljakVgIWbsnTyvP/J6EQ2OpujJcGvQDfc0x1JpeinNRieBF29Lpt+Wvxf50AsvQgx2DeAq1jWZLsQ6/75Wm3wSyBpihy8lGopIKnDy0Se2XkVx/FoMIQb3P5/eWBzDaMN6YAEyN3yzC5nCreSoYreG/3GkOrbFxIh/y1JxsTWbKSWcxJ9QYzrIXl5izRSHepM/u02opAPLu7VTmoty7hVt5+bnhJKwh26e06MYymPWcFZNiHKSiEsqHpajIxbjDLZuHtlxcoqWMBZrY3OxirCAKqdavaNKc/kO1h4Q2t8cCYe0KNf7oHTrT26xOFM/MIT1RkNQdDiMYWr2aTPU/VtGQ2FV8CdShe7aLhYP2f4ghyQ2iklOAgdWIA1mXLCjZL6zYKRmys4FUEcq0E4nAwpbryGpsRvtyNs3ll18HMG/GsOGnkOHepWPCVUFadlvV7n89cdPc5Sd6q5vt5g4xQENK/M4Q4MR3T756vvqnDsLm5V/lvq81eXdyFsLKl5Tf2b4630Bj4fuQx/ifmogTR6oTdwJK85tCIuqqCI3XQBA4MACN5K1NFfiUerewwXMeqv7iGmCA0ZxloC6W46whdbKBbxxc7LqL6zUojoFj0m/JRB2BIXV/fq51s1lcCBiCVWIeYSIj1zmcBUwZMX1nv2QUpDSeawL7xbE+hzLrq36NIObm7h0w4YgNsk3IPG32Ix0FpMV4kgLCcZQnQt7ah9sF+S9cS//JhqHLqAtUgn3h/gUo+hQKg6kHlKZD8b14yeg4eJ/5hTRsq6HozLu/9XkPC8zDMOYc30YECrJflw2l4lKfGqbkAOiXRs0fymSa7gui7Ah2MIHT+oODZCiBiBQ7iiWJ+BEf3CyvdIdXE0t0RIBkrnQbzmgg0EGg06yqwWpX02SdFg4ycy14RiLDWcUERZnEDyS+TyrnPsD0s3DuUn2uVP8F+bH3viWA3lecd+iyJEc8tZRGsFdC/5ZRyzkyfuOg9jq5ZWur7OXTb09IxXaOZx9rP+roGQcsnpqP6KBIMTcQkubBR5i+9nE95qF0Xe91I2ctOPyTYCaORT1MYCFVl+OrLKxqba1BSS0rn+/+7W+TUaSmZPveRyuBhUr7ErNKAtYaug8MLv9kcxgGCQKyrsI7ySzZWhxUHmF5hvygEbxDq5a0Xys4uj6PeQ0nqhk71zWTsStRpsRKL/0hCfFv5Gts6bPuQ7JYeLyUj74CVCsArZRPBstCO0JIkdZhycHQilrEKbfIz1rUdRtyYRZVvlzqBeLE9rP7M0be3S+xmkXyQlAFU2tarfA5LETMhFJ/g5XX32ez+Kwm6CamWsiagmzursHBxSrFHH3MTcWqpbYc6r7/nyUOjspg6F5DUxgiiI78K/UB0LcRz6xhuQCBWm6Lt9fy99DQQEYSG9IHdRjZFharOu8LNMFpSiJtPhaCauO7Tfn06f0nsyFImPUMttv58IlrOWgt5FyefY/62l0XQarwzu7EFd6UY50pcPendGJx3b2yIpbV0apZzTxa+AcfkzRctRJnBuGmBIbx0t1KoAnVHi8yBTruFWVmwi64pF4GHRT0jn75X1du3C9sWlFyVbsT9U1xSl19eEXwnIuk4oAsUcn7VeSR12+q7CuVlsjQUGZMTBssu0pnsbS6Ag7AJZYzg3CO99wVzH+z5fw8EgNbctRFcTC/XdRd/2MUvR1nKOUThdii29oRd8826mFEEmkmmenGKB4h+0R4Gg/XS5OjUhrN9Q5tlPSyst0cbb9xE+ZELK7rF7o2Z23U7CIG2scOTDQx5tbiRfRiqguMqja2K+vRmHoCUMym+9RatlShWCvkGLmtsNuHgatg9UYGVw+CVNG+kvrfq7HxomiArP541HaO9z+U57DOrIxM/mXLHUB9O3NOH0tBoO+t9MglUFRjodD7/acmh1e7nLzCbMHYMs5Y7RqhnY16o3I4k8LDuN8z4K7pjv3Wswk9HGMgZBwwz50ZVigl4kPxWoLwES/Y90N+ZtO6LzMu2b0WBg4zlNGQEoe/wM8nxReXvcxdRrZ0W2iyBsXhdudkzsTqbeOq6w7yxEFuubObdyjAs2BIu0N1obzyWldwZ5VGtS7mg78kBZihbStDbM605GcsvZZUTiIFEbgHCWGjOObuy125Ze6B7NUGFPN1vdmwAejrqW5Yq1KUfCIquZAeq8160pFkr0JGi5JQx9jFmMaPPsJQ8482nGStV/xbU7IktZErZ4r4Y4n0GlQ5bSunwd3xMcexfgMKeP4MWjX2yQyCXVEtXSfyMvTYMPw74Ighmo0ADkq5Qdrr+C6NuCXQY3w+IXHHs4hCHDqMHHCLlgUpy060kx2rhW7R90ZXVe1larJU0xpgaOph2a3eNBTzSfgQqxUQpIuYD+6Num3GJEAQZFpZRLw4mE+dVNpY5lbFdGtPZU5J9gsQRPXs4MDmYIwMTbYKmf/NlgrExAYSr/Pwjg/ZcZ+2ZBrQ+z1TfrXree5woAeWQykbP2ogP1OCGE20Tx72j++JVrVDMmkqqiVdzT/SUqJNhOO9USa5CUQrwR2pshDRcQyootAy7ucl+5UeJLVZ/+aD1f5YaONp0fpbpAwP/h/z1LsRdS5/l03MgJsju9iIrMlCmzsK05XrrMEJsJU70Vui7sI3V8J4d6GIJqBsqVMw/mYZszOa8TFhiHBy64Ykh0Q03eSkYeqOKY18acpn6oWOBLsOxO4AmOXp5FIlWlLxgZKvYS4lQTTXnrEpoJOM6CasUVvazRzuzpTds/ZtMM2K2xN+RpLQeZdjQdTMBcP4F1oqNcqCanHP8DUqcgVl9daUNEfoQpvMwBB6+kW+nlLKEnnTHDgNaUcm1j8eBuqIaZZvFf767MWwvEgZAbILQFO1cmONyLJXqiRdezbgVR+mKVnSgp+88s1za95KQkNJ6q1V2yuG8Hy1/4afetaTj2ciBHtucheRma9DI2nOV4ohbnJ4bemkMvSCfnWlE7D74KzTrdhCF3/ZJXTAsGm52Jz+Z9Il6pWYx7NSmuObrxJ1H9loYkYBzJo1u4CJalS1IZrpu42AjvIa40FaEW4SaB6UpSJLgvr7ixktMz+baZHrjt3Ki/HWCtG46tWCXqfs9MJt+v+FW6nMUb59JiHTnuc+4TCbooVSg4DPGsF+p+PqlSy51H+8Y5Eldi7pGvY2uS0o/4rRX0+GF0QjAvBbqnI2dwNBFLyFBejX6d9K5bny2D9S86tolJreTSaCh1YXT46s2lanZScCq0QDFgs0Q9oDZW/vyBJ0MRP/JJB1M6AVYZSxUlf8C41rrnHwhC7H8/c2kgEGYdLMRoeXP2jV3lWsZ6KMiFFGQTPr0um1wiqot0hWll1H/1pEADC9Z2M1PtVuGg+lUjB9uXm8UASZsh4j7lGYrVvXyXPw9GKfmDndSrYmsxJlR/Pv7H32lMJoBqmOCt8fzgLU6QnTSxuHxAzmi6GtI04atR63sZlomcFo0u54QQ/HzqA11HGp6Jno+bdTBIvx6IoHLXhejIVRWlrURCfhHFzdPLamhJzzgDxUYqWQdO4pTO+YWxvo9IFE/04Dahrgyyb7OV9bCWBjGVxo8eFwdaPW2M4XdVLD4xV0bjHMB4G+EnuTdaCQTiTcMreiju3kpH/uvVZPbZcTR4JIsMLj/x/F/S6hURbAKjucrHpmrRBtXOHmvZ96lXb5RYPzapHN+8O5QwJ35ld6fmJXJcYiC7EFZwkcAzJ4d38l/d+xU9jIXEo/VgLFOR5nBIvh+mO3kd8eRyaqGwr/feC8MorHFs3rDMm0J6t6DlY4SCFhv5/OPGOEOGB1gCA6kVWZNPIBe4UfCoA86LzJYoFSX7cFngmtPJo15/BdwZChubNWjW9eZasQMalsr8zOV1gQxtVeieUw+/DjRJ+XfMT/TVQFQaahn+rVoUHkPhtu5B11ZznzsjoRwz+6NbTQwSKBqU8T7NrEmiqK3SOorZuHZzSrxn1W5gJPoE7eVEKZwSsEn0WLph3e9hbG1DScxq43/UOjIVEidIQQk+rRacwjzEilXc+p0denSfDSCcBvyC5i1+6Csixw4Gpg/KvRM44wvTXhSMwEnnQOammghqUXLeeSqiWMLM/nXFTr9HVYUuvg8NJEzHTjSPbDajQU8fTuVw8oVtq+MK9qsoBu3P9YvoAenNUB+HCI+gtHbDopwfKVEQ5ccL13z3+gfstXSD2gANgpIdug/8ddYOWNRMWnSzA7XSwL4r4JI8Pwt/YFODKGWlrbEMKMIGWcjkCAlh1XyHdbbc9xR+6Hib92uAaYF/RxTh7jJoqmJjkq0gPlbSjnQeLIM9U+YHeVjO0Mor+0aDB/TC5/mo3bN79oQDrwR+DfDvdwgy3CrRV1IwvKRkv7NFTOVAw9Tpom+g0SjHjV/AqYtgtvwMgqHS+DfFhbH6OeZGp7Lv+G0sESU4j/zrL/WP4a/ynaqyxQw2L3E05mYU9dnBqGGHgaG5zsA0TxZy1V5A0mKyRZdj6vwOk1LLD+8ffpSweK10V1sY6EFbyVugxv/mSEs7w17qWEiwTO3IiPpaBQRDSGI4U73tKHNcsvkg4rTo6zPvLiivh9NZGlbT6PE9WQh9Ac/DgAyrsOD3PtE7gCqV894UUKDlcTKOA9ce9N4Mqmyj+JlW3u5FLw687p1pfgDpF7O2SFJlyznoekLv2HNx4T5h+WERJMRjt0tCEdEfRfFuiVXsE2ebYicE3/PRWkmMIqUgGo5M8GKKZDUmkENZ4WjhxcoCAP4qu3Y3rZepyWbkVohIHvFrbcw8NLu647zaQZmCEVaeJfm654koXtw4iW4G+LzVPv8NCEK4cVvQHKXt4RBHhkgk3k14gsXc9I/S15zI5gepWoH7TMcIJ2NsFtplLu1IJBaRL5A2zeB/XhWfQAEPxwDoSuXVqQJa/CVO49RjCZVEVqv3ptVwJ5nvcE5Fb570OS9kwoPUVb7XLrGYPA2fxteESfkhnT0Zf/Gp5oYq1wzThWVkqXLf7m9LFxXLTckwVpykH2AI7E+XOrTZEnTuBREchDGIQe2VpyHSSjTItf3qL/3WTCbB9oqKNJ428dPe1CLlTwFV0RsCqt5bG92PDWfEfQ7dlry8EINeryt3KIykpOLb1tIBF0d5zvjnToFc34uVvDY8oO0F0Ipc8eL+qH+RWQSfdEFolXJVGDVCyggB+CS/jAL+KQSScz8BnKJ0QG8BPNUi/Jg84HUM6S222G7M91G6JiHDni3VNwVc9PlLAZ4sgmn+2KKoLiuE/coL7QG7Kz60v3xT+R79pJKSHY9rziyrqb7wsf/Bayl6lrhalcHV+LpYaTTecSHkxWimlZKcagOv+gMin/N1IPkcS1H83egxOknVXQOlD4M0EsesAlGSZ2nIfc5sGhIuFrbdrz7QO6OcQ9Wsy7O2+XN+nuQ9f4c/Cw3S6B4ekVqaE6jUAiezkoVfMbE/r3FLVrWYTV69/KyovyU3YEaZcRFzSiiUuS/ACksHHY215XLd4fpOifjEEED+TTq/Z3fgNvUg0tR8doso+9UwtSofK0bXwrTCoKMVVU07wx+L4DdWq4Fkdjx270xWR/GzrzaZl+chHE+sVGj0luktzZlwKuEBFOxKT76EgVA4C76qA7+meS+uDkpkjOCjNDYM0bcqTGq7JVhrF9u9arYaly/+A2kH7BIZ1YrkbMU8RVJnfSNnGaalTupCV4zcGKrggdP5mEwp6wIJ0uSavv8/6jsSNCQk1SVwCLJ9jcEsI/RCUUVUHtrgq1hfUFt4tyKY4Q+Ardfe0x8hrIBO+g8RERX7RHGnigfpzh9D2sPEwdtp0ZjQQ6p58cV87+NkIyOB31t9AekdREzzZSfGoCUN3HU+4Ghwkz/cr5Y6tX//cqy1eBU8HIqCVo4wyjZHGTFjtEZiqhXAnv97pTniQvOP7OihvbdiUi8qqSZRHHKboWVCREasRrMpZeRH1qt5qr/qWXDxvTV01z1u+AaoBEyNZHGuhIgkw1bE0XpPq4hnOY2y5GUzUtzdEH/L0O1vHEzF0BUbFTM1cJdItAXBQanE7Tg8WYOj2o3Ksc6OA71Lo4glWP5t7w5ZM+Ykx5j2cBoDrEJO01q7ns2crJbrcS8qDIIRQNCuXxgLo5xMF+SMEGZlxtajrm5hh2w/t6PzFYdh24CdBoswc2YZ03ReLvC+PHxjAGpcDatF+x8LFAI+fDeQLKecbTXXaXEq32PUMPp0spl3bDvC7yB1kmUCYGCc7IQZhX+S0p0ccxElL2/OKcde4NFQSUIC0LyHbHcbrfkoxKeBA0dwCWCoo0Wn6c99krl1yy4Y/4/KJQPZGwEvPjnGEW3la4WbPHP8mL4GKwEGUJQWOtRoBSpA7k83e0m0SoYiUXP5GBjmWcPDvpCNAZZYqNaGNAcX69itpjG3WFIFYrQr6UO0aCSwS1JwqKdpGJdZaUH46WPVt/ztlq/q4JLHtTqVWUGO95CnSWMwN0ITF2efmePX9OqgceTY03GmNkIWUkO5pe3JbqdabMbrlPpO5kvNGBSa7wHVt7F7KaGTdqhT2DeCd4goMSstFHNfFb9rgkP0he6De4KDLu9f7nTvxJzF2QhqOoON9R/kJumD7FumrJHI60+jlNMD1ZnJPMbiu8nimM6uL8kXV0ZQ7g0l8Du8+oUl/MhM1EtsLZhBaW4rL2mGfjWqK8Kp25Lp9laRlPPJfQUeA4fYcFGOq7c4PTcl9iXgzaiY9S7btQG58OWclIdd9qPREYZRWEovtKrU= role: model finishReason: STOP index: 0 - modelVersion: models/gemini-2.5-pro - responseId: C1teaIWDBovAkdUP0qyd4Aw + modelVersion: gemini-2.5-pro + responseId: zObBaKreOqSIqtsP7uur4A0 usageMetadata: - candidatesTokenCount: 1041 - promptTokenCount: 15 + candidatesTokenCount: 941 + promptTokenCount: 978 promptTokensDetails: - modality: TEXT - tokenCount: 15 - thoughtsTokenCount: 1647 - totalTokenCount: 2703 + tokenCount: 978 + thoughtsTokenCount: 1476 + totalTokenCount: 3395 status: code: 200 message: OK diff --git a/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml b/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml index e9fb3cf6ea..5367b92471 100644 --- a/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +++ b/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml @@ -8,7 +8,7 @@ interactions: connection: - keep-alive content-length: - - '242' + - '371' content-type: - application/json host: @@ -26,231 +26,119 @@ interactions: parts: - text: You are a helpful assistant. role: user - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview-03-25:streamGenerateContent?alt=sse + tools: + - functionDeclarations: + - description: '' + name: dummy + parameters: + properties: {} + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse response: body: - string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Defining the Core Question**\\n\\nMy analysis - has begun. It's clear that the user's question, \\\"How do I cross the street?\\\" is deceptively simple. I'm focusing - on unpacking its inherent complexities and the potential for a layered response. I'm dissecting the core request, - recognizing the need for a comprehensive breakdown, rather than a cursory answer.\\n\\n\\n\",\"thought\": true}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"totalTokenCount\": 84,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 69},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Structuring - the Response**\\n\\nNow, I'm focusing on the structural framework. The goal is clarity and conciseness. I'm building - on the initial brainstorming to refine the \\\"Look, Listen, Wait, Walk\\\" sequence. I'm categorizing risks and identifying - vulnerable groups. I'm adding a layered approach to account for different scenarios and user needs. The draft is being - built section by section.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"totalTokenCount\": 335,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 320},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \"**Analyzing Safety Priorities**\\n\\nI'm now diving deep into the critical - aspects of street crossing safety. I'm expanding on the \\\"Look, Listen, Wait, Walk\\\" sequence, building out each - component with greater detail. I'm prioritizing the identification of specific risks, like distracted driving and - blind spots, within each crossing scenario. My goal is to craft a comprehensive guide, ensuring it covers all essential - safety principles for every potential user.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"totalTokenCount\": 587,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 572},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Elaborating Safety Protocols**\\n\\nI'm now concentrating - on specific safety protocols. The \\\"Stop, Look, Listen, Think\\\" framework is being enriched to clarify the 'Think' - component with more examples. I'm adding specific guidelines for understanding traffic signals and the implications - of flashing hands. I'm also incorporating the importance of making eye contact with drivers.\\n\\n\\n\",\"thought\": - true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"totalTokenCount\": 839,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 824},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Developing Enhanced - Protocols**\\n\\nNow, I'm integrating specific safety protocols into the instructions. I'm focusing on making the - 'Think' component more actionable with concrete examples, like anticipating a driver's actions. I'm clarifying the - meaning of traffic signals, and emphasizing the importance of eye contact with drivers. I'm adding tips for situations - with no crosswalks. My goal is a detailed and easy-to-follow guide.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"totalTokenCount\": 1112,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1097},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Integrating - Risk Mitigation**\\n\\nI'm now integrating safety-specific details. My focus is the \\\"Stop, Look, Listen, Think\\\" - mantra. I'm prioritizing the \\\"Think\\\" component. I'm adding specific guidelines for understanding traffic signals - and the implications of flashing hands. I'm including the importance of making eye contact with drivers, in order - to maximize safety.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"totalTokenCount\": 1340,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1325},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \"**Developing Sectional Clarity**\\n\\nThe \\\"Section 1\\\" and \\\"Section - 2\\\" structures are solidified, with clear distinctions and risk levels outlined. I'm focusing now on the importance - of visibility and distraction avoidance in \\\"Section 3\\\". I'm also considering global variations of the traffic - rules for wider application. I aim to create a concise, yet informative, conclusion.\\n\\n\\n\",\"thought\": true}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"totalTokenCount\": 1401,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Of course! Crossing - the street seems simple, but doing it safely is a crucial\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 9,\"totalTokenCount\": 1410,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" skill. Here is - a step-by-step guide covering different situations.\\n\\n### The Golden Rule: Stop, Look, Listen\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 35,\"totalTokenCount\": 1436,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \", and Think\\n\\nThis - is the most important principle to remember every single time you cross a street.\\n\\n1. **STOP\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 61,\"totalTokenCount\": 1462,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"** at the curb - or the edge of the road. Never step into the street without stopping first.\\n2. **LOOK\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 87,\"totalTokenCount\": 1488,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"** left, then - right, then left again. The first car to reach you will come from the left (in countries with right\"}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 113,\"totalTokenCount\": - 1514,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": - \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": - {\"parts\": [{\"text\": \"-hand traffic). Look for turning cars as well.\\n3. **LISTEN** for the sound of approaching - vehicles\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 137,\"totalTokenCount\": 1538,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \". Sometimes you can hear a car before you can see it, especially around a - blind corner.\\n4. **THINK**\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 164,\"totalTokenCount\": 1565,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \" about whether it is truly safe to cross. Is the car slowing down for you? - Is there enough time?\\n\\n---\\n\\n###\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 190,\"totalTokenCount\": 1591,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" How to Cross at a Designated Crosswalk (Safest Method)\\n\\nThis - is the best and safest place to cross the street.\\n\\n\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 216,\"totalTokenCount\": 1617,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"#### 1. At a Crosswalk - with a Traffic Light & Pedestrian Signal\\n\\n\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 232,\"totalTokenCount\": 1633,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\\n\\n1. **Find and Press the Button:**\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 242,\"totalTokenCount\": 1643,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" If there's a - pedestrian signal button, press it once. This will signal your intent to cross.\\n2. **\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 268,\"totalTokenCount\": 1669,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Wait for the \\\"Walk\\\" - Signal:** Wait for the signal to show the \\\"Walk\\\" symbol (often a white walking person).\\n\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 294,\"totalTokenCount\": 1695,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"3. **Look Left, - Right, and Left Again:** Even with the \\\"Walk\\\" signal, **do not assume cars\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 320,\"totalTokenCount\": 1721,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" will stop**. - Check for turning vehicles or drivers who might run the red light.\\n4. **Make Eye Contact:**\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 345,\"totalTokenCount\": 1746,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" If possible, - make eye contact with drivers to ensure they see you.\\n5. **Cross When Safe:** Walk\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 369,\"totalTokenCount\": 1770,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" briskly across - the street, staying within the marked lines of the crosswalk.\\n6. **Pay Attention to the\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 395,\"totalTokenCount\": 1796,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Countdown/Flashing - Hand:** If the signal starts flashing a red hand or counting down, it means \\\"don't start crossing\"}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 421,\"totalTokenCount\": - 1822,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": - \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": - {\"parts\": [{\"text\": \".\\\" If you are already in the street, finish crossing quickly but safely. Do not turn - back.\\n\\n#### 2\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 445,\"totalTokenCount\": 1846,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \". At a Crosswalk with No Signal (Zebra Stripes)\\n\\n1. **Stop at the Edge:** - Stand\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 469,\"totalTokenCount\": 1870,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \" at the curb where you are visible to drivers.\\n2. **Wait for a Gap:** - Wait for a safe\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 493,\"totalTokenCount\": 1894,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \" gap in traffic. While pedestrians often have the right-of-way in marked - crosswalks, **never assume a car\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 518,\"totalTokenCount\": 1919,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" will stop for you.**\\n3. **Make Eye Contact:** Try to - make eye contact with the driver of an approaching\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 543,\"totalTokenCount\": 1944,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" car. A wave or a nod can confirm they see you.\\n4. **Watch - for Cars in All Lanes:** When\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 569,\"totalTokenCount\": 1970,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \" one car stops, be cautious of another car in the next lane that may not - have seen you and could try to pass\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 593,\"totalTokenCount\": 1994,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" the stopped vehicle.\\n5. **Cross Quickly and Alertly:** - Once it's clear, cross the street,\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 618,\"totalTokenCount\": 2019,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" continuing to look both ways as you walk.\\n\\n---\\n\\n### - How to Cross When There Is NO Crosswalk (Use\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 643,\"totalTokenCount\": 2044,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Extra Caution)\\n\\nThis is more dangerous and should be - avoided if possible. If you must, follow these steps:\\n\\n\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 666,\"totalTokenCount\": 2067,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"1. **Find the - Safest Spot:** Walk to a location where you have the best view of traffic in both directions.\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 692,\"totalTokenCount\": 2093,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Avoid crossing - between parked cars, on a curve, or at the crest of a hill.\\n2. **Wait for a\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 718,\"totalTokenCount\": 2119,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Large Gap:** - You need a much larger gap in traffic than you would at a crosswalk. Wait until there are no cars coming\"}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 744,\"totalTokenCount\": - 2145,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": - \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": - {\"parts\": [{\"text\": \" for a long distance.\\n3. **Apply \\\"Stop, Look, and Listen\\\":** This is more critical - than ever here\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 771,\"totalTokenCount\": 2172,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \". Look left, right, and left again, and listen carefully.\\n4. **Cross Quickly - and Directly:** Walk\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 796,\"totalTokenCount\": 2197,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \", don't run, straight across the street. Continue to watch for traffic as - you cross.\\n\\n---\\n\\n### Cru\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 821,\"totalTokenCount\": 2222,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"cial Safety Tips for Everyone\\n\\n* **Be Visible:** During - the day, wear bright clothing. At night, wear\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 845,\"totalTokenCount\": 2246,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" light-colored or reflective clothing and consider carrying - a flashlight.\\n* **Avoid Distractions:** **Put your phone away\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 870,\"totalTokenCount\": 2271,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \".** Take out your - earbuds or headphones. Being distracted for even a few seconds can lead to an accident.\\n* **Never\"}],\"role\": - \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 896,\"totalTokenCount\": - 2297,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": - \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": - {\"parts\": [{\"text\": \" Assume:** Never assume a driver sees you or will stop for you, even if you have the right - of way.\\n* \"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": - 921,\"totalTokenCount\": 2322,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": - 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": - [{\"content\": {\"parts\": [{\"text\": \"**Watch for Turning Vehicles:** When at an intersection, always be on the - lookout for cars making right or left turns.\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": - 15,\"candidatesTokenCount\": 945,\"totalTokenCount\": 2346,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": - 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: - {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\\n* **Teach Children:** Teach children these rules and - always hold the hand of a young child when crossing the street. Lead\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 970,\"totalTokenCount\": 2371,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" by example.\\n* - \ **Note for Different Countries:** In countries like the UK, Australia, and Japan, traffic comes\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 995,\"totalTokenCount\": 2396,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" from the right. - In that case, you should **look right, then left, then right again.**\\n\\nStaying **\"}],\"role\": \"model\"},\"index\": - 0}],\"usageMetadata\": {\"promptTokenCount\": 15,\"candidatesTokenCount\": 1019,\"totalTokenCount\": 2420,\"promptTokensDetails\": - [{\"modality\": \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"alert** and **predictable** - is the key to crossing any street safely.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": - {\"promptTokenCount\": 15,\"candidatesTokenCount\": 1035,\"totalTokenCount\": 2436,\"promptTokensDetails\": [{\"modality\": - \"TEXT\",\"tokenCount\": 15}],\"thoughtsTokenCount\": 1386},\"modelVersion\": \"models/gemini-2.5-pro\",\"responseId\": - \"D1teaK3_Jbf9nsEP7NzysQY\"}\r\n\r\n" + string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Clarifying User Goals**\\n\\nI'm currently + focused on defining the user's ultimate goal: ensuring their safety while crossing the street. I've pinpointed that + this is a real-world scenario with significant safety considerations. However, I'm also mindful of my limitations + as an AI and my inability to physically assist or visually assess the situation.\\n\\n\\n\",\"thought\": true}],\"role\": + \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"totalTokenCount\": 102,\"promptTokensDetails\": + [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 68},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": + \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Developing a + Safety Protocol**\\n\\nI'm now formulating a comprehensive safety procedure. I've pinpointed the essential first step: + finding a safe crossing location, such as marked crosswalks or intersections. Stopping at the curb, and looking and + listening for traffic are vital too. The rationale behind \\\"look left, right, then left again\\\" now needs further + exploration. I'm focusing on crafting universally applicable and secure steps.\\n\\n\\n\",\"thought\": true}],\"role\": + \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"totalTokenCount\": 332,\"promptTokensDetails\": + [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 298},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": + \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Prioritizing + Safe Crossing**\\n\\nI've revised the procedure's initial step, emphasizing safe crossing zones (crosswalks, intersections). + Next, I'm integrating the \\\"look left, right, then left\\\" sequence, considering why it's repeated. I'm focusing + on crafting universal, safety-focused instructions that suit diverse situations and address my inherent limitations.\\n\\n\\n\",\"thought\": + true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"totalTokenCount\": 586,\"promptTokensDetails\": + [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 552},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": + \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Crafting Safe + Instructions**\\n\\nI've identified the core user intent: to learn safe street-crossing. Now, I'm focusing on crafting + universally applicable steps. Finding safe crossing locations and looking-listening for traffic remain paramount. + I'm prioritizing direct, clear language, addressing my limitations as an AI. I'm crafting advice that works generally, + regardless of specific circumstances or locations.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": + 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"totalTokenCount\": 821,\"promptTokensDetails\": [{\"modality\": + \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"This is a great question! Safely crossing the street is + all about being aware and predictable. Here is a step-by-step\",\"thoughtSignature\": \"CiIB0e2Kb6Syj1a961EfbWv4W5C8RgAA/hGleV9VYJtnJFh4CmkB0e2Kb2qMva5NvDLuUvN8VpUjtONdaccbsRQ79+XvVh1AFoHjMdZAETCTSMzbyNktSx0w0C4lJFdld7kI+5ebYSU7ohQP0bDh4gC2w/yL8P7jC2EsgTI4V81lh0geK/9ktUxg6zkbP+oKfQHR7Ypv9395FWZW4+/829hMAush43zw0QshgLy6gCngMYKmJrtYtvjZ2FP5xIvfU/PPHfldzCim2+UQKze4+cLUk/bFJc5W3G5s5bIq/ERKUf5W1Wj62ZLqlu8AI1K+XRQh80EHvayt1im86y2goz+a/+5OsUTwkGpS/6UPCpkBAdHtim8jtCeEvH7amxWDHJTFu6fBt+wX03WIl/Dsn1uTOL9MHR4x5L1AOm+45iJlxdoGIlXtR5bijCGoRpOQVc7WNT9Dt9q0FYEycA85mum+GxJBN9/yug6ULAxmQ55TFNaAwqveUoB2WOj0l4aYPFxZKnBRXoWkiUDmkYBqWg0/JpJVLG/Lh4oQx9DGXpSA7sHsFXO/0J7TCqkBAdHtim/2mGLbQSFLeexCigBRypMkOioMaTMH/brwjRBwzqu1oOqiFjoC1hX1KEehhWRUvL5ytBF3hmtadCs5yRUAcaClTylOT7ac9o9X2Zew5PdlV3uJhQJyclrZq7v3/T7FpzNxtXnW04nyyN1xTOhhnQreeQktmeOG7/eTpZfQbkauZ4ktcTWVQrN1cqUMmcLRhATxDv1JmVKZMzFt/TZ1TOiQ0P+MrgqTAQHR7Ypvect1e/TIFJ1Iv4IHEAK/oNS9iboCWraGGK9LaS7Jve67/GnTGqXB8lnyUdI6VKol/B8mhK2j8GkGrz3i8jyZzUmaVG+1cQKgSR5S9Ydc2XIZA+RD03o5WwgCCUoCnCX1ibQBvDfhnfH2hoQgBqHfIhlsJbnlnE5/daAK+0in+4riONRWNwYrfSd9cPtKfwqOAQHR7YpvF/32Xtcd64G3KIWgzlOuJyrDJtlDRiDr7L/HXp27AkJ9tQLihyGDLNXPumfulkyXMj6fJ6/yVJA7iChdXSrBLN5cstCy5fTmKToBNB1Jy6DMeVq3EEiLwvWRFmmyaLPVhPdsv4caiFk+zIkyZyqNl+b+I5aO7C3zgCQLBz03BJi4e5iY6UYBitwKjgEB0e2Kb40Mzzj3wRl+zYIxmxKeBboY10T0xjUxKQuI5R0m5QckA/YouNyLyOHOgoYdSm3FxcqmzOuLfKGuopjxi3b8VpMcwyRe68+JnnXRqYRlioDaDoTiFMkX+cw/jVzSuezZ9TSlw3XFN1tQgB5qMxaYA+/SDoKdbGq/vrCX4bVsXZ2MDLDkHML2AhwLCp0BAdHtim9Oubf02UU50cfreIZlHR6hxe3tS8AiI+KuzVs3bPD6vuv8igK21QZHbOD17Sql+NCepOUELMizth1neQwTjtomXfHHBODfKVUJ4F20F0CNjhhlKt1aVS2+O6tvrS7aMVmvk3KRt0drrm5VR7pRNXA1oPJdhX1q3MhJDuqan7orvWh3YZ5WGFyEK9YuB5z0pgvYtDercaQ69wqRAQHR7YpvoATYq0iXLopzpIaEXcnZPLxyzHqpVnNqSn2fJRPmLQdspJUM62TsxpBeXAsR0F8yAv3wxuk25Lx84W2cnt20hFt+PbtGQVSM6KfE104XA0iHuidSwb9h5bcicQOQyzkIlrwosgo5FJyYQJFspMwDcHPt1H1xiW/yPaF8ZtL/ZXAomLouhq/bErZ84WEKigEB0e2Kbxs7yDL/L2OSWSIPGHnybOO+2mo9+7iQMARzd6a9AxjNvdTYKwn0iINhZ6Rx1TeVCW0w4UbYQF/ujzgmNtGHdPsEZ+M+5wMDu/U/8kpuWRJZVuJ48f3V19YQxU8Isq75n4AzaqXjK/KUFYeQJbGSfBS5EHrSwlQijhNIv8HQ+NVMj/Svf24KoQEB0e2Kb8FthNnzJDZ+f2+Lshah8D6O/QjfJGrnKvMMrUoUqX5ZqAxYg4R4UBirA6zvaFuKI0V6odeGwXWmPArIp5RC2NiEBaxCtwirXSe0amvaL0hk8CLkKy+brTrZiC7UCdiW6sLz5f9wrU50CdUH1P0jh5VDSuNXFkGBSiz8Yf8WL5DmOdnzs7/HSw8i99XzUdVdKCbzNrT8rXE1RveglgqAAQHR7YpvGr3dgHVESEDYAfaFXQI8ZCZUe3Cv2DmR3wBev2kMmRlixDyjRqXCgCw0EdXsJM8okkHj55sp6EZE0THrCxPCxaqUnALaaFSfh5AJiaC8bRZm/KUgL3I3phMtqSbIlKptGo03BLq9rz8bXgPc6Byiaic+wnfNUJQo8vO5CpQBAdHtim8C13z5v4gDZaJo9xgMLa+CPHKD2fTsBfVEIEJ7RI8G3C/6r6i7sJzvCAqsAC9pX+KgF2iGYM6kLxBRV+cuaV23OSVWqrd4uqBpIIrKjmN8423MHivDsEe6390BTRmSuev8N5SB6Bhdh7q6wzyblOaQ7VO+QpMt+HEfdlXCxtdwyQlQ0RdlHioAOem+VmtvhQqTAQHR7Ypv/TSKdwJl31A4G5XnObS4STu3FwdEdIECw6loDG2t5oTRnVJ69a93v2zNeNztp/LqUb7ptIN2UgileFq6Hiv5mNGpCNyThLSyGiN8JlHHAAEAzlnu2q+d97FxTv1zFMjIVfsWIKNrrr2PpJPv0sgYyYbsxuiOem4azhnFy2Q7ZVuI4xtQbQ/Mis6jNWiaWwqTAQHR7YpvsBQsV+yPEVR6uNrS0i1ToyFW1xp18q8Xzp151kDQbM3CTLxrJtrpi/Y1A/W38plOMMYTH/xZWf7o+PbvAIeXpEVRyZ2ST73gqacgZCRJYqgNybhATFzMMka4YF/ZQIKeYoT6L9mGpaSxeLzIVtiMxCdg5+FCLU4/rEWYoeaO0SXFGZOkcXC5IwmxP766MwqaAQHR7YpvCey4HxoWg4wh/pl5RL1x+GYt4okG+LPCIspPFmOE5ZL4L8CC+CnTmuppL25hGPBxjbTE0/Cld04d2cu+S4ajupggMXN6gt8N7BiAeRW0JWuWRM8kwD7XQ7Ngy8XG2kAIqjwEwX5e8qm6Bc4MrwziwLcjnwjK0M5zmBO7fU7qpMwcdONw06r9fJV1rHp8eicOJDRE48EKdQHR7YpvBby7jsEEGC9v0Ku5pIoeRcn84d7mWEHQnNWeFvX4AD3kp3/7PmxRCBvxHfa6k62zz5MsMwVGHHpU/PGsN/+mObu4tZcIlcPYXprM28wFDNkFgzo/9jprbR0lTAOhyQdkwYC1l+XjNQZgDSiSWHg5zgqKAQHR7YpvLo+F+bUs/EgO1F8w+oGBbMIur2LFu/ptvMzAjN4adrogDjtZvuIMxT9i4kOcGrhGkey5E4jtlzR4q2O46INZk7ubFInL2/TnknmR8uj0LEn08NQb6Qm8T6ftiApfpv5gKgGvGwJz6jttExkNq04DGpnKOF/iYJfk8a/604BVCogeAvSfrAqCAQHR7YpvRPJBA1auMRSVnz0MjIEkMP0Nfi30IUbhb4RLOaQZ5F6TdxociF2tLU92nDbHydkDgZhEQEEotia6xUl5tOrBABk1zASKkTTnLeNhi6JHBct3JuX3T5OxS4oKQzFlRySBZgvjQWk/H1MDQFoCQq7SofII6h/41DfCi0y+LJgKlwEB0e2KbzGjX2We98l4sdEf3aaVDmY2oka/8sUcEKXbPN12ip4hvdt8apDfdx+T3al50oabnNhl8Hd1G1FIlOr+oJWBH7+TfSLQ1vt1SczRX3QJwhBV145FhcO9+yHhuLVOvxk1QAI8onelLnX/oTSrKcAb6dQjj+kZOsYIq67Hoe2FXn5edxN0Bppg76TWp/PzoyFkiHwSCoYBAdHtim8Cqd73rN2h3De6n/c/CjZmfNYzx/NNgA2XrZzXeuB+DbPINOKNzHkzZQ1kYh1EjlTreIdpVhx58wI3zw1ec7x1u5G7oHDf26IhS85AjDcIXWn7Xp6k2fxJV4K7DzA0gclKmCJFqnzZUNZ7F0NL4vRObmBy/GIILvVP/sBzF2L4KdsKmgEB0e2Kb3zjJMWKJLl/uUxDaoveBXGzzz9mHV6aI65Ur8oIEAYUytuL/1p7YlWylkiBk7UPJ98FmC9TCd9An6f3N7oebwwiFnf7aMtjoKPfhgKPZaHNjRQOJi4egyLkdk/YfPYWDWyJMvDOUMuJtpFhf5oYzTsoYzTrwsw5zeh/n/YL/RISa7KgZwESq9dbXP396n5gEr8J/NwDCo4BAdHtim9xqhsvPCOmY7nmz2ijFtMSFQNd3buUFQRNM18N+knI1AXX/A01rlh29qcdxZIeQ+kN4YKOZoHfRxqlvhTyl/0AT6Q/jI/oWwGHdDdZwZCDE4n3ju1ZN2up2S4lsbXTqSTUKhD5qaV8dGktZAZ88mY8wuiJF2iOsE8uyCM247Z/Sz8fGsgP9Ets6QqOAQHR7Ypvl8gvPbQbGnn0iafjVSBDpHWhJU81msZg+qVjOyUJRmhF4lV97ds4lDpUtl52BwTyHNTlz4STXDMU8PdHpDZTMzMmJ3Qg3iJ/gYDXP5kpGqasQelo9yz0qvEIqeWsKV7tXGxY1njzrRYYEGl/4mmHo23XrS2U9hJPJBz8TMdFQDuw5wRarB9SJ7kKgAEB0e2Kb58mxC0KZgOB7u3f4m66IbHeDWR51Af08Ah+KH4EpcSRqt2iYXijH589mPTKEEJnSNcRkpm/rpRDo+NbYO83B7LB06R/J+JKq/hpzI9JSviv6YFkMMGgvhsWFkHvFN62OFG3y5w8id/IZfvl54z/0ApnTZO0DnVXo2b1vAp3AdHtim/ncRkntLVBoi+V6IJjKZ5Uwye9jnCLbQHyoWeQ0AzP7IWOnDMZLvT1VupfJysJgGuF9mzQVsFf86+abuNBOAUJXcjkTViqFoDEfWWTyZIlQ1dBa/s32qQvkCPQpPLb68rx9IcXpBh9KKaVE8wXn2FhZqgKkAEB0e2KbyzwhSOwreaWP7nfhxP76KGa8iSzUYupJ/IhYwIbi+hNPxOrGAmYoyYM4ywLFljv8IYoy5P4Ht4grxl6kQjUrGu4A0NlioV8UG7iKdZX+NwvIB2iwYKjRhLYz7uE1v4U0t4vGBL6a5W4ulic6Pw3MS2G2TJZRDnv47E6jTLUHlxLpwE7vgYjP/w0AZMKigEB0e2Kb2OtrSlqymij19/hNYnF5ZKclwE2c5hgwpgxqlt6KPIIwYlqyh1JlLrTrK7a/Kwm8RrBq9i90NX1TQbNDBf178fZ55MyyfT92yFzsjnpiqtUEmcLwWmVZpRzlNNugsHS7WG3gpjPKI2tXDy4oKkNCax2qu5zxsbAYjd0WmJhoHlixwu4kz8KlwEB0e2Kb+UXDHMn8p+kZ/6WmCYRbQ9wxkQlKYjbE+28G3g8HgTj/kyqu0ED0meRDCEfH4258605JMv88QSMW/xNXDWegZngBYCuz7izrHD5745Ps4PldgGptwqhs+3LxKqvAPQeYsU+Fllk60I/XuVtfcTAeZRQBy5v+OLzIjD7nSPL3njsDVKRmhyd4hmRLZRgV5Qi6WAHCqgBAdHtim+k265Inoii+qCLrUDth4v5RCK/+siGsm4QS3ACeGPY5UivNrimEsbCM8KuwFq8ykAUCplBUEI8HDI1+OXy7jUx7dNM3Dxvs/L7C7OxF3b3FCF2w7rEIO1MRyYfC/GwMlXdjrcvRBbIy2ZyOXj/C6bO5kO0LFGuxkhyDLyM8kcG9drbDpObNJAFOi7h5ZEXWESsP62fI6xfc2ykcc2Thd7grJ/fCpABAdHtim96cGLSuRmr5lCfmme0s/o7+9n2nSZ8ziW/BLgprp6fg5magVwqRa8L91eLzMHmHbwafd2sa0Ki+dgUWiqJRnItVfNPK1HaIO/r+EAw89KLXMtSgtaHDED2YL1WNsM2QBWnNlIET8ZjK/6BVDJk64eA96lp7m69m7WEbsQkd31f1q+pkEcVCdNg2/jgCk4B0e2Kb3o9fcDaQ0TzMW3qo00/kjGwr7xO/Mlmz30HuSaH48iO92G52Tdqn4Yy0e2GFCnk9JlNjRyjsqeWrw7oTiOIFZ1EgMKlqm/dH8k=\"}],\"role\": + \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"candidatesTokenCount\": 23,\"totalTokenCount\": + 844,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": + \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": + [{\"text\": \" guide that is widely taught for safety:\\n\\n### 1. Find a Safe Place to Cross\\nThe best place is\"}],\"role\": + \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"candidatesTokenCount\": 47,\"totalTokenCount\": + 868,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": + \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": + [{\"text\": \" always at a designated **crosswalk** or a **street corner/intersection**. These are places where drivers + expect to see pedestrians. Avoid\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 74,\"totalTokenCount\": 895,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" crossing in the middle of the block or from between parked + cars.\\n\\n### 2. Stop at the Edge of the\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 98,\"totalTokenCount\": 919,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Curb\\nStand on the sidewalk, a safe distance from the + edge of the street. This gives you a clear view of the traffic\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": + {\"promptTokenCount\": 34,\"candidatesTokenCount\": 125,\"totalTokenCount\": 946,\"promptTokensDetails\": [{\"modality\": + \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" without putting you in danger.\\n\\n### 3. Look and Listen + for Traffic\\nFollow the \\\"Left-Right-Left\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 150,\"totalTokenCount\": 971,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\\\" rule:\\n* **Look left** for the traffic that will + be closest to you first.\\n* \"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 173,\"totalTokenCount\": 994,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Look right** for oncoming traffic in the other lane.\\n* + \ **Look left again** to make sure nothing\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 197,\"totalTokenCount\": 1018,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" has changed.\\n* **Listen** for the sound of approaching + vehicles that you might not be able to see.\\n\\n### \"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 223,\"totalTokenCount\": 1044,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"4. Wait for a Safe Gap\\nWait until there is a large enough + gap in traffic for you to walk all the way across.\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 250,\"totalTokenCount\": 1071,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Don't assume a driver will stop for you. If you can, try + to **make eye contact** with drivers\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 274,\"totalTokenCount\": 1095,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" to ensure they have seen you.\\n\\n### 5. Walk, Don't Run\\nOnce + it's safe\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"candidatesTokenCount\": + 298,\"totalTokenCount\": 1119,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": + 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": + [{\"content\": {\"parts\": [{\"text\": \":\\n* Walk straight across the street.\\n* **Keep looking and listening** + for traffic as you cross\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"candidatesTokenCount\": + 322,\"totalTokenCount\": 1143,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": + 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": + [{\"content\": {\"parts\": [{\"text\": \". The situation can change quickly.\\n* **Don't use your phone** or wear + headphones that block out\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 34,\"candidatesTokenCount\": + 346,\"totalTokenCount\": 1167,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": + 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: {\"candidates\": + [{\"content\": {\"parts\": [{\"text\": \" the sound of traffic.\\n\\n---\\n\\n### Special Situations:\\n\\n* **At + a Traffic Light:** Wait for the pedestrian signal\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 373,\"totalTokenCount\": 1194,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" to show the \\\"Walk\\\" sign (often a symbol of a person + walking). Even when the sign says to walk, you\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 398,\"totalTokenCount\": 1219,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" should still look left and right before crossing.\\n* **At + a Stop Sign:** Wait for the car to come to a\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": + 34,\"candidatesTokenCount\": 424,\"totalTokenCount\": 1245,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": + 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" complete stop. Make eye contact with the driver before + you step into the street to be sure they see you.\\n\\nThe\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": + {\"promptTokenCount\": 34,\"candidatesTokenCount\": 448,\"totalTokenCount\": 1269,\"promptTokensDetails\": [{\"modality\": + \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\ndata: + {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" most important rule is to **stay alert and be predictable**. + Always assume a driver might not see you.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": + {\"promptTokenCount\": 34,\"candidatesTokenCount\": 469,\"totalTokenCount\": 1290,\"promptTokensDetails\": [{\"modality\": + \"TEXT\",\"tokenCount\": 34}],\"thoughtsTokenCount\": 787},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"beHBaJfEMIi-qtsP3769-Q8\"}\r\n\r\n" headers: alt-svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 @@ -259,7 +147,7 @@ interactions: content-type: - text/event-stream server-timing: - - gfet4t7; dur=5500 + - gfet4t7; dur=2666 transfer-encoding: - chunked vary: diff --git a/tests/models/test_anthropic.py b/tests/models/test_anthropic.py index b4fc6d5f0f..644093a15a 100644 --- a/tests/models/test_anthropic.py +++ b/tests/models/test_anthropic.py @@ -1014,28 +1014,8 @@ async def test_anthropic_model_thinking_part(allow_model_requests: None, anthrop 'Considering the way to cross the street, analogously, how do I cross the river?', message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[IsInstance(ThinkingPart), IsInstance(TextPart)], - usage=RequestUsage( - input_tokens=42, - output_tokens=363, - details={ - 'cache_creation_input_tokens': 0, - 'cache_read_input_tokens': 0, - 'input_tokens': 42, - 'output_tokens': 363, - }, - ), - model_name='claude-3-7-sonnet-20250219', - timestamp=IsDatetime(), - provider_name='anthropic', - provider_details={'finish_reason': 'end_turn'}, - provider_response_id=IsStr(), - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( @@ -1099,6 +1079,37 @@ async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, async for event in request_stream: event_parts.append(event) + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='anthropic', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(output_tokens=419, details={'output_tokens': 419}), + model_name='claude-3-7-sonnet-20250219', + timestamp=IsDatetime(), + provider_name='anthropic', + provider_details={'finish_reason': 'end_turn'}, + provider_response_id='msg_01PiJ6i3vjEZjHxojahi2YNc', + finish_reason='stop', + ), + ] + ) + assert event_parts == snapshot( [ PartStartEvent(index=0, part=ThinkingPart(content='', signature='', provider_name='anthropic')), diff --git a/tests/models/test_bedrock.py b/tests/models/test_bedrock.py index d8ae262f90..7fc3fd1b2c 100644 --- a/tests/models/test_bedrock.py +++ b/tests/models/test_bedrock.py @@ -642,18 +642,8 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ), message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[IsInstance(TextPart), IsInstance(ThinkingPart)], - usage=RequestUsage(input_tokens=12, output_tokens=882), - model_name='us.deepseek.r1-v1:0', - timestamp=IsDatetime(), - provider_name='bedrock', - provider_details={'finish_reason': 'end_turn'}, - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( diff --git a/tests/models/test_cohere.py b/tests/models/test_cohere.py index bc1905af5b..354c095c03 100644 --- a/tests/models/test_cohere.py +++ b/tests/models/test_cohere.py @@ -468,24 +468,8 @@ async def test_cohere_model_thinking_part(allow_model_requests: None, co_api_key model=co_model, message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[ - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(TextPart), - ], - usage=RequestUsage(input_tokens=13, output_tokens=2241, details={'reasoning_tokens': 1856}), - model_name='o3-mini-2025-01-31', - timestamp=IsDatetime(), - provider_name='openai', - provider_details={'finish_reason': 'completed'}, - provider_response_id='resp_68bb5f153efc81a2b3958ddb1f257ff30886f4f20524f3b9', - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( diff --git a/tests/models/test_google.py b/tests/models/test_google.py index 65411f0b1f..591e62f270 100644 --- a/tests/models/test_google.py +++ b/tests/models/test_google.py @@ -976,28 +976,82 @@ async def test_google_model_empty_assistant_response(allow_model_requests: None, async def test_google_model_thinking_part(allow_model_requests: None, google_provider: GoogleProvider): - m = GoogleModel('gemini-2.5-pro-preview-03-25', provider=google_provider) + m = GoogleModel('gemini-2.5-pro', provider=google_provider) settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True}) agent = Agent(m, system_prompt='You are a helpful assistant.', model_settings=settings) + + # Google only emits thought signatures when there are tools: https://ai.google.dev/gemini-api/docs/thinking#signatures + @agent.tool_plain + def dummy() -> None: ... + result = await agent.run('How do I cross the street?') assert result.all_messages() == snapshot( [ ModelRequest( parts=[ - SystemPromptPart(content='You are a helpful assistant.', timestamp=IsDatetime()), - UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime()), + SystemPromptPart( + content='You are a helpful assistant.', + timestamp=IsDatetime(), + ), + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ), ] ), ModelResponse( - parts=[IsInstance(ThinkingPart), IsInstance(TextPart)], + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='google', + ), + TextPart(content=IsStr()), + ], usage=RequestUsage( - input_tokens=15, output_tokens=2688, details={'thoughts_tokens': 1647, 'text_prompt_tokens': 15} + input_tokens=34, output_tokens=1246, details={'thoughts_tokens': 817, 'text_prompt_tokens': 34} ), - model_name='models/gemini-2.5-pro', + model_name='gemini-2.5-pro', timestamp=IsDatetime(), provider_name='google-gla', provider_details={'finish_reason': 'STOP'}, - provider_response_id=IsStr(), + provider_response_id='sebBaN7rGrSsqtsPhf3J0Q4', + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'Considering the way to cross the street, analogously, how do I cross the river?', + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='Considering the way to cross the street, analogously, how do I cross the river?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='google', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=978, output_tokens=2417, details={'thoughts_tokens': 1476, 'text_prompt_tokens': 978} + ), + model_name='gemini-2.5-pro', + timestamp=IsDatetime(), + provider_name='google-gla', + provider_details={'finish_reason': 'STOP'}, + provider_response_id='zObBaKreOqSIqtsP7uur4A0', finish_reason='stop', ), ] @@ -1005,10 +1059,14 @@ async def test_google_model_thinking_part(allow_model_requests: None, google_pro async def test_google_model_thinking_part_iter(allow_model_requests: None, google_provider: GoogleProvider): - m = GoogleModel('gemini-2.5-pro-preview-03-25', provider=google_provider) + m = GoogleModel('gemini-2.5-pro', provider=google_provider) settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True}) agent = Agent(m, system_prompt='You are a helpful assistant.', model_settings=settings) + # Google only emits thought signatures when there are tools: https://ai.google.dev/gemini-api/docs/thinking#signatures + @agent.tool_plain + def dummy() -> None: ... + event_parts: list[Any] = [] async with agent.iter(user_prompt='How do I cross the street?') as agent_run: async for node in agent_run: @@ -1017,59 +1075,70 @@ async def test_google_model_thinking_part_iter(allow_model_requests: None, googl async for event in request_stream: event_parts.append(event) + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + SystemPromptPart( + content='You are a helpful assistant.', + timestamp=IsDatetime(), + ), + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ), + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='google', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=34, output_tokens=1256, details={'thoughts_tokens': 787, 'text_prompt_tokens': 34} + ), + model_name='gemini-2.5-pro', + timestamp=IsDatetime(), + provider_name='google-gla', + provider_details={'finish_reason': 'STOP'}, + provider_response_id='beHBaJfEMIi-qtsP3769-Q8', + finish_reason='stop', + ), + ] + ) + assert event_parts == snapshot( [ - PartStartEvent(index=0, part=IsInstance(ThinkingPart)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartDeltaEvent(index=0, delta=IsInstance(ThinkingPartDelta)), - PartStartEvent(index=1, part=IsInstance(TextPart)), + PartStartEvent(index=0, part=ThinkingPart(content=IsStr())), + PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=0, delta=ThinkingPartDelta(signature_delta=IsStr(), provider_name='google')), + PartStartEvent(index=1, part=TextPart(content=IsStr())), FinalResultEvent(tool_name=None, tool_call_id=None), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), - PartDeltaEvent(index=1, delta=IsInstance(TextPartDelta)), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), ] ) diff --git a/tests/models/test_huggingface.py b/tests/models/test_huggingface.py index ea0bb60e82..5fe1ed00b7 100644 --- a/tests/models/test_huggingface.py +++ b/tests/models/test_huggingface.py @@ -1003,26 +1003,13 @@ async def test_hf_model_thinking_part(allow_model_requests: None, huggingface_ap ), message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[ - IsInstance(ThinkingPart), - IsInstance(TextPart), - ], - usage=RequestUsage(input_tokens=15, output_tokens=1090), - model_name='Qwen/Qwen3-235B-A22B', - timestamp=IsDatetime(), - provider_name='huggingface', - provider_details={'finish_reason': 'stop'}, - provider_response_id='chatcmpl-957db61fe60d4440bcfe1f11f2c5b4b9', - ), ModelRequest( parts=[ UserPromptPart( content='Considering the way to cross the street, analogously, how do I cross the river?', - timestamp=IsDatetime(), + timestamp=datetime.datetime(2025, 9, 10, 21, 4, 47, 652638, tzinfo=datetime.timezone.utc), ) ] ), diff --git a/tests/models/test_mistral.py b/tests/models/test_mistral.py index 05637a658d..79fbf3e669 100644 --- a/tests/models/test_mistral.py +++ b/tests/models/test_mistral.py @@ -2173,29 +2173,8 @@ async def test_mistral_model_thinking_part(allow_model_requests: None, openai_ap model=mistral_model, message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[ - ThinkingPart( - content=IsStr(), - id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12', - signature=IsStr(), - provider_name='openai', - ), - ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), - ThinkingPart(content=IsStr(), id='rs_68bb645d50f48196a0c49fd603b87f4503498c8aa840cf12'), - TextPart(content=IsStr()), - ], - usage=RequestUsage(input_tokens=13, output_tokens=1616, details={'reasoning_tokens': 1344}), - model_name='o3-mini-2025-01-31', - timestamp=IsDatetime(), - provider_name='openai', - provider_details={'finish_reason': 'completed'}, - provider_response_id='resp_68bb6452990081968f5aff503a55e3b903498c8aa840cf12', - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( diff --git a/tests/models/test_openai.py b/tests/models/test_openai.py index fb34454320..140c326eb3 100644 --- a/tests/models/test_openai.py +++ b/tests/models/test_openai.py @@ -2013,25 +2013,8 @@ async def test_openai_model_thinking_part(allow_model_requests: None, openai_api model=OpenAIChatModel('o3-mini', provider=provider), message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[ - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(TextPart), - ], - usage=RequestUsage(input_tokens=13, output_tokens=1900, details={'reasoning_tokens': 1536}), - model_name='o3-mini-2025-01-31', - timestamp=IsDatetime(), - provider_name='openai', - provider_details={'finish_reason': 'completed'}, - provider_response_id='resp_680797310bbc8191971fff5a405113940ed3ec3064b5efac', - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( diff --git a/tests/models/test_openai_responses.py b/tests/models/test_openai_responses.py index 87df0122a9..58b67a1cab 100644 --- a/tests/models/test_openai_responses.py +++ b/tests/models/test_openai_responses.py @@ -1215,30 +1215,8 @@ async def test_openai_responses_model_thinking_part(allow_model_requests: None, 'Considering the way to cross the street, analogously, how do I cross the river?', message_history=result.all_messages(), ) - assert result.all_messages() == snapshot( + assert result.new_messages() == snapshot( [ - ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), - ModelResponse( - parts=[ - ThinkingPart( - content=IsStr(), - id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c', - signature=IsStr(), - provider_name='openai', - ), - ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), - ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), - ThinkingPart(content=IsStr(), id='rs_68bb4c2a8d6c8195bfee2ff3d46c5ba506370ebbaae73d2c'), - IsInstance(TextPart), - ], - usage=RequestUsage(input_tokens=13, output_tokens=1828, details={'reasoning_tokens': 1472}), - model_name='o3-mini-2025-01-31', - timestamp=IsDatetime(), - provider_name='openai', - provider_details={'finish_reason': 'completed'}, - provider_response_id='resp_68bb4c1e21c88195992250ee4e6c3e5506370ebbaae73d2c', - finish_reason='stop', - ), ModelRequest( parts=[ UserPromptPart( @@ -1309,7 +1287,7 @@ async def test_openai_responses_thinking_part_iter(allow_model_requests: None, o TextPart(content=IsStr()), ], usage=RequestUsage(input_tokens=13, output_tokens=1733, details={'reasoning_tokens': 1280}), - model_name='o3-mini', + model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', provider_details={'finish_reason': 'completed'}, From a98f6f25eae4069343c53886c621390999229a63 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 21:10:54 +0000 Subject: [PATCH 04/13] Fix test --- tests/models/test_huggingface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/models/test_huggingface.py b/tests/models/test_huggingface.py index 5fe1ed00b7..db7d40f5fc 100644 --- a/tests/models/test_huggingface.py +++ b/tests/models/test_huggingface.py @@ -1009,7 +1009,7 @@ async def test_hf_model_thinking_part(allow_model_requests: None, huggingface_ap parts=[ UserPromptPart( content='Considering the way to cross the street, analogously, how do I cross the river?', - timestamp=datetime.datetime(2025, 9, 10, 21, 4, 47, 652638, tzinfo=datetime.timezone.utc), + timestamp=IsDatetime(), ) ] ), From 399c9ad7276eb6abfc9c4e1b40f6f091f546ef0c Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 21:38:05 +0000 Subject: [PATCH 05/13] Fix Google thought signature if it occurs on first part --- pydantic_ai_slim/pydantic_ai/models/google.py | 12 ++- ...st_tool_returning_audio_resource_link.yaml | 89 +++++++++++++------ tests/test_mcp.py | 38 +++++--- 3 files changed, 97 insertions(+), 42 deletions(-) diff --git a/pydantic_ai_slim/pydantic_ai/models/google.py b/pydantic_ai_slim/pydantic_ai/models/google.py index a4845a04c6..84ab280dd0 100644 --- a/pydantic_ai_slim/pydantic_ai/models/google.py +++ b/pydantic_ai_slim/pydantic_ai/models/google.py @@ -596,6 +596,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: signature = base64.b64encode(part.thought_signature).decode('utf-8') yield self._parts_manager.handle_thinking_delta( vendor_part_id='thinking', + content='', # A thought signature may occur without a preceding thinking part, so we add an empty delta so that a new part can be created signature=signature, provider_name='google', ) @@ -655,11 +656,12 @@ def _content_model_response(m: ModelResponse) -> ContentDict: part['text'] = item.content elif isinstance(item, ThinkingPart): if item.provider_name == 'google' and item.signature: - # The thought signature is included on the _next_ part, not the thought part itself + # The thought signature is to be included on the _next_ part, not the thought part itself thought_signature = base64.b64decode(item.signature) - part['text'] = item.content - part['thought'] = True + if item.content: + part['text'] = item.content + part['thought'] = True elif isinstance(item, BuiltinToolCallPart): if item.provider_name == 'google': if item.tool_name == 'code_execution': # pragma: no branch @@ -690,7 +692,9 @@ def _process_response_from_parts( for part in parts: if part.thought_signature: signature = base64.b64encode(part.thought_signature).decode('utf-8') - assert isinstance(item, ThinkingPart), 'Thought signature must follow a thinking part' + if not isinstance(item, ThinkingPart): + item = ThinkingPart(content='') + items.append(item) item.signature = signature item.provider_name = 'google' diff --git a/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml b/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml index 61cbfaabbe..f468f508d5 100644 --- a/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +++ b/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml @@ -1,9 +1,19 @@ interactions: - request: headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '2820' content-type: - application/json - method: post + host: + - generativelanguage.googleapis.com + method: POST parsed_body: contents: - parts: @@ -77,6 +87,7 @@ interactions: parameters: properties: value: + default: false type: BOOLEAN type: OBJECT - description: '' @@ -109,17 +120,26 @@ interactions: required: - foo type: OBJECT - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview-03-25:generateContent + - description: Use elicitation callback to ask the user a question. + name: use_elicitation + parameters: + properties: + question: + type: STRING + required: + - question + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent response: headers: alt-svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 content-length: - - '1956' + - '1507' content-type: - application/json; charset=UTF-8 server-timing: - - gfet4t7; dur=3710 + - gfet4t7; dur=2384 transfer-encoding: - chunked vary: @@ -130,47 +150,56 @@ interactions: candidates: - content: parts: - - text: The content of the audio resource is at a link that can be accessed by calling the function `get_audio_resource_link`. - thoughtSignature: CroGAVSoXO6j4xLFiplrUxAhD6k0wVQlsvqVKDHcFbqBjdLkdJd+h5gAQaxSeziYR8v0x/jTR6ehSM7/NtsWEdpyGPGk49DlofKiIv6sskq8Tk2ga5OzBupXR2ScaDV4SHUncCpVc3KkyaZtoDtpifYYDwBqaDQDLD6jjB5iGJ3ztgrlyE+P9Vc6u4EEyHy8Z+qLrNERWqYecFM4a3dnoSr+utk7fF78eZbWTC54hxG3mar7j41LHiHm4aDAMCXKRk5lBSW5yIahPI+VbyyQRsYBTeqifzhGelln5HV1+/ax2+m1LDYTHfq1bQXvAt3gv6z/wMlBmNgTDeU3X8HvzYoyYmHYP2uJpuUnuZTftDiIeC2o95aXqwsswyuh6etluzR7uWf2G1RaiVaXcCtTRUkDvYlaHppcGy9nsE+88nY4TatIPMfRohsrdupDtVhdhba6Bg+puJaFEIzl6kjbSDj9EWGZEFNEIA+9Wh6u4cSWS5G1kr1H238PQL7QuqATsccz6LWWCSMYwjAMXDvEmaLj88QmBCvwtVCvR9xTlq15TgUgGD5fMheWs0mvXcbs2ZiwsfU8WHmRbrNtzmOP7Johz4BOoIuxOkuJ4ssnnpelp4Q0VG57ZZCZjkVDtnBqGuC3Y8UIwDGlYAooZcul0Jv1Nkv0jBEu6Uvv9Wlgq4RmlixR2m/9GcOevDcbFaNM8Cqw4T4YoytHyQPvlEv6zgz/LEhW1ttav7PLVJsLKkSJRbkFsjiI3SQll7d3HloJ5cyto6tHqnA+AK0KmIhGngBMfHI+jgDpo+XMb8jE7fImycyheml7TTzZSaxC6zCuJ2Eqc2XjNEjqZLvCTNiNSt1oSleDYdotjOSEPz3pqLw3JIGw/6sirVjJZ1lvzwOrU18hTwu0GaIxH6/tnFAbV+ZRR5WOm4eMnMydVqBHTC9erUnSPumjtCjaoxo/VqcVGK4aNPg3CVQnukujel4UP+TMOVEuwBGrkbyrZJdb3FRGgTK0J5vDaTrukJkLhjFnizm3W4JTECD51xKvjBpgT0YLBOsCu+ZWoKuIoFlLsKW6FU8MGOQts9euqcgmEPJW0OqujMTo9JshAKMWlQ== - functionCall: args: {} name: get_audio_resource_link + thoughtSignature: Cu0EAdHtim/iEdfaraHKrHSS/TNJ8ls71bg4FpUo64uz80/J/vr7RPZxxpyX5sJEg95p8cQ+5YU2KFwfHFeLA7MXkbZyyVTNst8crFcLOaEHY/SfUAQWdaxGsLucv73i6n31NRSRBlOejyKdXzyC0pai39ugvt+BUmwE6/xWGb6jF9OkGRKiN7SqsB0rnJhilJXS7FjtpS+Xx0mQGETPWRtUmrUFoqNYylOVecuyb2bGGm8CaJVhYXfJltuMQmX2XkU5ZA85MbV/TcuVJc7tMK6zMRdYZiQ8hyeMKzvCsLMmzqRqS5kcNF/auBa4GskaHHWBENlCkNIHJ6GpT4EgP4Vel3xnq6A+TroS9qyIdbfDD1qEiX9/ndyvhB9IlBviU5oB5JhtvagPyTmZc9H9BefJi4UJXqsChzvWp6MkyYQ+go4PiOL2CfU3ebNfxbdoLSLvwmhKOZQEPSzTVIar5mlozL8pIuhYaDJajvxualF+8qBk1GkaKvHNhB4jwiMPyEJfThflpVGqgC3GPCXOH5XULiMRfDXZg0e76UffPVq33R0KSuW/GDF2X3T2ddJuI1Z1KtqH4/vJODwxrjUKMbdMb4HU1kn+QOWai6RONdYqdnSEauUle4NJvfSisKhRntixXKJQ+ms2/kwjMdzXB3GhJVlkB9q8K2PNO9ClAy/jHR01ThBgsbLOnJfZ5sdxXrE6n/+a4+LwzfczfOJrRXlzbSXYuPPq4riuXIymaVgBNCeGMYIt5maF0tzT4mez05GyeV1bBhmDJFWBmm2h0+AwbcCAr0dqnEF4rFF91PGAdTC/TH2tghT9JTq3TpLL role: model finishReason: STOP index: 0 - modelVersion: models/gemini-2.5-pro - responseId: KHKBaP7DCv2dz7IPq97f6A8 + modelVersion: gemini-2.5-pro + responseId: Pe_BaJGqOKSdz7IP0NqogA8 usageMetadata: - candidatesTokenCount: 41 - promptTokenCount: 561 + candidatesTokenCount: 14 + promptTokenCount: 605 promptTokensDetails: - modality: TEXT - tokenCount: 561 - thoughtsTokenCount: 195 - totalTokenCount: 797 + tokenCount: 605 + thoughtsTokenCount: 154 + totalTokenCount: 773 status: code: 200 message: OK - request: headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '75906' content-type: - application/json - method: post + host: + - generativelanguage.googleapis.com + method: POST parsed_body: contents: - parts: - text: What's the content of the audio resource via get_audio_resource_link? role: user - parts: - - text: The content of the audio resource is at a link that can be accessed by calling the function `get_audio_resource_link`. - functionCall: args: {} - id: pyd_ai_acb3c2780e3642e9b8bca61de5a63eed + id: pyd_ai_396803870f644840b6ed84639451855c name: get_audio_resource_link + thoughtSignature: Cu0EAdHtim_iEdfaraHKrHSS_TNJ8ls71bg4FpUo64uz80_J_vr7RPZxxpyX5sJEg95p8cQ-5YU2KFwfHFeLA7MXkbZyyVTNst8crFcLOaEHY_SfUAQWdaxGsLucv73i6n31NRSRBlOejyKdXzyC0pai39ugvt-BUmwE6_xWGb6jF9OkGRKiN7SqsB0rnJhilJXS7FjtpS-Xx0mQGETPWRtUmrUFoqNYylOVecuyb2bGGm8CaJVhYXfJltuMQmX2XkU5ZA85MbV_TcuVJc7tMK6zMRdYZiQ8hyeMKzvCsLMmzqRqS5kcNF_auBa4GskaHHWBENlCkNIHJ6GpT4EgP4Vel3xnq6A-TroS9qyIdbfDD1qEiX9_ndyvhB9IlBviU5oB5JhtvagPyTmZc9H9BefJi4UJXqsChzvWp6MkyYQ-go4PiOL2CfU3ebNfxbdoLSLvwmhKOZQEPSzTVIar5mlozL8pIuhYaDJajvxualF-8qBk1GkaKvHNhB4jwiMPyEJfThflpVGqgC3GPCXOH5XULiMRfDXZg0e76UffPVq33R0KSuW_GDF2X3T2ddJuI1Z1KtqH4_vJODwxrjUKMbdMb4HU1kn-QOWai6RONdYqdnSEauUle4NJvfSisKhRntixXKJQ-ms2_kwjMdzXB3GhJVlkB9q8K2PNO9ClAy_jHR01ThBgsbLOnJfZ5sdxXrE6n_-a4-LwzfczfOJrRXlzbSXYuPPq4riuXIymaVgBNCeGMYIt5maF0tzT4mez05GyeV1bBhmDJFWBmm2h0-AwbcCAr0dqnEF4rFF91PGAdTC_TH2tghT9JTq3TpLL role: model - parts: - functionResponse: - id: pyd_ai_acb3c2780e3642e9b8bca61de5a63eed + id: pyd_ai_396803870f644840b6ed84639451855c name: get_audio_resource_link response: return_value: See file 2d36ae @@ -247,6 +276,7 @@ interactions: parameters: properties: value: + default: false type: BOOLEAN type: OBJECT - description: '' @@ -279,17 +309,26 @@ interactions: required: - foo type: OBJECT - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview-03-25:generateContent + - description: Use elicitation callback to ask the user a question. + name: use_elicitation + parameters: + properties: + question: + type: STRING + required: + - question + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent response: headers: alt-svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 content-length: - - '596' + - '589' content-type: - application/json; charset=UTF-8 server-timing: - - gfet4t7; dur=2162 + - gfet4t7; dur=2033 transfer-encoding: - chunked vary: @@ -304,17 +343,17 @@ interactions: role: model finishReason: STOP index: 0 - modelVersion: models/gemini-2.5-pro - responseId: KnKBaNORHOHOz7IPy77GuQE + modelVersion: gemini-2.5-pro + responseId: QO_BaLC6AozQz7IPh5Kj4Q4 usageMetadata: candidatesTokenCount: 5 - promptTokenCount: 784 + promptTokenCount: 801 promptTokensDetails: - modality: TEXT - tokenCount: 640 + tokenCount: 657 - modality: AUDIO tokenCount: 144 - totalTokenCount: 789 + totalTokenCount: 806 status: code: 200 message: OK diff --git a/tests/test_mcp.py b/tests/test_mcp.py index 4b4a25b107..a255c27d3f 100644 --- a/tests/test_mcp.py +++ b/tests/test_mcp.py @@ -764,7 +764,7 @@ async def test_tool_returning_audio_resource( async def test_tool_returning_audio_resource_link( allow_model_requests: None, agent: Agent, audio_content: BinaryContent, gemini_api_key: str ): - model = GoogleModel('gemini-2.5-pro-preview-03-25', provider=GoogleProvider(api_key=gemini_api_key)) + model = GoogleModel('gemini-2.5-pro', provider=GoogleProvider(api_key=gemini_api_key)) async with agent: result = await agent.run("What's the content of the audio resource via get_audio_resource_link?", model=model) assert result.output == snapshot('00:05') @@ -780,19 +780,25 @@ async def test_tool_returning_audio_resource_link( ), ModelResponse( parts=[ - TextPart( - content='The content of the audio resource is at a link that can be accessed by calling the function `get_audio_resource_link`.' + ThinkingPart( + content='', + signature=IsStr(), + provider_name='google', + ), + ToolCallPart( + tool_name='get_audio_resource_link', + args={}, + tool_call_id='pyd_ai_396803870f644840b6ed84639451855c', ), - ToolCallPart(tool_name='get_audio_resource_link', args={}, tool_call_id=IsStr()), ], usage=RequestUsage( - input_tokens=561, output_tokens=236, details={'thoughts_tokens': 195, 'text_prompt_tokens': 561} + input_tokens=605, output_tokens=168, details={'thoughts_tokens': 154, 'text_prompt_tokens': 605} ), - model_name='models/gemini-2.5-pro', + model_name='gemini-2.5-pro', timestamp=IsDatetime(), provider_name='google-gla', provider_details={'finish_reason': 'STOP'}, - provider_response_id=IsStr(), + provider_response_id='Pe_BaJGqOKSdz7IP0NqogA8', finish_reason='stop', ), ModelRequest( @@ -800,25 +806,31 @@ async def test_tool_returning_audio_resource_link( ToolReturnPart( tool_name='get_audio_resource_link', content='See file 2d36ae', - tool_call_id=IsStr(), + tool_call_id='pyd_ai_396803870f644840b6ed84639451855c', + timestamp=IsDatetime(), + ), + UserPromptPart( + content=[ + 'This is file 2d36ae:', + audio_content, + ], timestamp=IsDatetime(), ), - UserPromptPart(content=['This is file 2d36ae:', audio_content], timestamp=IsDatetime()), ] ), ModelResponse( parts=[TextPart(content='00:05')], usage=RequestUsage( - input_tokens=784, + input_tokens=801, output_tokens=5, input_audio_tokens=144, - details={'text_prompt_tokens': 640, 'audio_prompt_tokens': 144}, + details={'text_prompt_tokens': 657, 'audio_prompt_tokens': 144}, ), - model_name='models/gemini-2.5-pro', + model_name='gemini-2.5-pro', timestamp=IsDatetime(), provider_name='google-gla', provider_details={'finish_reason': 'STOP'}, - provider_response_id=IsStr(), + provider_response_id='QO_BaLC6AozQz7IPh5Kj4Q4', finish_reason='stop', ), ] From c4eebd29bf49c87ad7a0977967283cda1224e75d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 21:54:23 +0000 Subject: [PATCH 06/13] fix test --- pydantic_ai_slim/pydantic_ai/messages.py | 4 +-- .../pydantic_ai/models/anthropic.py | 22 ++++++------- .../pydantic_ai/models/bedrock.py | 10 +++--- pydantic_ai_slim/pydantic_ai/models/google.py | 18 +++++------ pydantic_ai_slim/pydantic_ai/models/groq.py | 4 +-- pydantic_ai_slim/pydantic_ai/models/openai.py | 20 ++++++------ tests/models/test_deepseek.py | 32 +++++++++---------- tests/models/test_google.py | 22 +++++++------ tests/test_mcp.py | 6 ++-- 9 files changed, 70 insertions(+), 68 deletions(-) diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index c384bf2dbd..fd0fcd5dc0 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -1247,10 +1247,10 @@ def apply(self, part: ModelResponsePart | ThinkingPartDelta) -> ThinkingPart | T elif isinstance(part, ThinkingPartDelta): if self.content_delta is None and self.signature_delta is None: raise ValueError('Cannot apply ThinkingPartDelta with no content or signature') + if self.content_delta is not None: + part = replace(part, content_delta=(part.content_delta or '') + self.content_delta) if self.signature_delta is not None: part = replace(part, signature_delta=self.signature_delta) - if self.content_delta is not None: - part = replace(part, content_delta=self.content_delta) if self.provider_name is not None: part = replace(part, provider_name=self.provider_name) return part diff --git a/pydantic_ai_slim/pydantic_ai/models/anthropic.py b/pydantic_ai_slim/pydantic_ai/models/anthropic.py index 4035f80f1e..e138d62701 100644 --- a/pydantic_ai_slim/pydantic_ai/models/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/models/anthropic.py @@ -305,7 +305,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: elif isinstance(item, BetaWebSearchToolResultBlock | BetaCodeExecutionToolResultBlock): items.append( BuiltinToolReturnPart( - provider_name='anthropic', + provider_name=self.system, tool_name=item.type, content=item.content, tool_call_id=item.tool_use_id, @@ -314,7 +314,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: elif isinstance(item, BetaServerToolUseBlock): items.append( BuiltinToolCallPart( - provider_name='anthropic', + provider_name=self.system, tool_name=item.name, args=cast(dict[str, Any], item.input), tool_call_id=item.id, @@ -322,10 +322,10 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: ) elif isinstance(item, BetaRedactedThinkingBlock): # pragma: no cover items.append( - ThinkingPart(id='redacted_thinking', content='', signature=item.data, provider_name='anthropic') + ThinkingPart(id='redacted_thinking', content='', signature=item.data, provider_name=self.system) ) elif isinstance(item, BetaThinkingBlock): - items.append(ThinkingPart(content=item.thinking, signature=item.signature, provider_name='anthropic')) + items.append(ThinkingPart(content=item.thinking, signature=item.signature, provider_name=self.system)) else: assert isinstance(item, BetaToolUseBlock), f'unexpected item type {type(item)}' items.append( @@ -459,7 +459,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be assistant_content_params.append(tool_use_block_param) elif isinstance(response_part, ThinkingPart): if ( - response_part.provider_name == 'anthropic' and response_part.signature is not None + response_part.provider_name == self.system and response_part.signature is not None ): # pragma: no branch if response_part.id == 'redacted_thinking': assistant_content_params.append( @@ -484,7 +484,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be ) ) elif isinstance(response_part, BuiltinToolCallPart): - if response_part.provider_name == 'anthropic': + if response_part.provider_name == self.system: server_tool_use_block_param = BetaServerToolUseBlockParam( id=_guard_tool_call_id(t=response_part), type='server_tool_use', @@ -493,7 +493,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be ) assistant_content_params.append(server_tool_use_block_param) elif isinstance(response_part, BuiltinToolReturnPart): - if response_part.provider_name == 'anthropic': + if response_part.provider_name == self.system: tool_use_id = _guard_tool_call_id(t=response_part) if response_part.tool_name == 'web_search_tool_result': server_tool_result_block_param = BetaWebSearchToolResultBlockParam( @@ -635,7 +635,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id='thinking', content=current_block.thinking, signature=current_block.signature, - provider_name='anthropic', + provider_name=self.provider_name, ) elif isinstance(current_block, BetaRedactedThinkingBlock): yield self._parts_manager.handle_thinking_delta( @@ -643,7 +643,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: id='redacted_thinking', content='', signature=current_block.data, - provider_name='anthropic', + provider_name=self.provider_name, ) elif isinstance(current_block, BetaToolUseBlock): maybe_event = self._parts_manager.handle_tool_call_delta( @@ -668,13 +668,13 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: yield self._parts_manager.handle_thinking_delta( vendor_part_id='thinking', content=event.delta.thinking, - provider_name='anthropic', + provider_name=self.provider_name, ) elif isinstance(event.delta, BetaSignatureDelta): yield self._parts_manager.handle_thinking_delta( vendor_part_id='thinking', signature=event.delta.signature, - provider_name='anthropic', + provider_name=self.provider_name, ) elif ( current_block diff --git a/pydantic_ai_slim/pydantic_ai/models/bedrock.py b/pydantic_ai_slim/pydantic_ai/models/bedrock.py index 87820049be..f1077d9311 100644 --- a/pydantic_ai_slim/pydantic_ai/models/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/models/bedrock.py @@ -297,7 +297,7 @@ async def _process_response(self, response: ConverseResponseTypeDef) -> ModelRes id='redacted_content', content='', signature=redacted_content.decode('utf-8'), - provider_name='bedrock', + provider_name=self.system, ) ) elif reasoning_text := reasoning_content.get('reasoningText'): # pragma: no branch @@ -306,7 +306,7 @@ async def _process_response(self, response: ConverseResponseTypeDef) -> ModelRes ThinkingPart( content=reasoning_text['text'], signature=signature, - provider_name='bedrock' if signature else None, + provider_name=self.system if signature else None, ) ) if text := item.get('text'): @@ -505,7 +505,7 @@ async def _map_messages( # noqa: C901 content.append({'text': item.content}) elif isinstance(item, ThinkingPart): if BedrockModelProfile.from_profile(self.profile).bedrock_send_back_thinking_parts: - if item.provider_name == 'bedrock' and item.signature: + if item.provider_name == self.system and item.signature: if item.id == 'redacted_content': reasoning_content: ReasoningContentBlockOutputTypeDef = { 'redactedContent': item.signature.encode('utf-8'), @@ -686,7 +686,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: id='redacted_content', content='', signature=redacted_content.decode('utf-8'), - provider_name='bedrock', + provider_name=self.provider_name, ) else: signature = delta['reasoningContent'].get('signature') @@ -694,7 +694,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id=index, content=delta['reasoningContent'].get('text'), signature=signature, - provider_name='bedrock' if signature else None, + provider_name=self.provider_name if signature else None, ) if 'text' in delta: maybe_event = self._parts_manager.handle_text_delta(vendor_part_id=index, content=delta['text']) diff --git a/pydantic_ai_slim/pydantic_ai/models/google.py b/pydantic_ai_slim/pydantic_ai/models/google.py index 84ab280dd0..5b724fca3c 100644 --- a/pydantic_ai_slim/pydantic_ai/models/google.py +++ b/pydantic_ai_slim/pydantic_ai/models/google.py @@ -503,7 +503,7 @@ async def _map_messages(self, messages: list[ModelMessage]) -> tuple[ContentDict message_parts = [{'text': ''}] contents.append({'role': 'user', 'parts': message_parts}) elif isinstance(m, ModelResponse): - contents.append(_content_model_response(m)) + contents.append(_content_model_response(m, self.system)) else: assert_never(m) if instructions := self._get_instructions(messages): @@ -598,7 +598,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id='thinking', content='', # A thought signature may occur without a preceding thinking part, so we add an empty delta so that a new part can be created signature=signature, - provider_name='google', + provider_name=self.provider_name, ) if part.text is not None: @@ -640,7 +640,7 @@ def timestamp(self) -> datetime: return self._timestamp -def _content_model_response(m: ModelResponse) -> ContentDict: +def _content_model_response(m: ModelResponse, provider_name: str) -> ContentDict: parts: list[PartDict] = [] thought_signature: bytes | None = None for item in m.parts: @@ -655,7 +655,7 @@ def _content_model_response(m: ModelResponse) -> ContentDict: elif isinstance(item, TextPart): part['text'] = item.content elif isinstance(item, ThinkingPart): - if item.provider_name == 'google' and item.signature: + if item.provider_name == provider_name and item.signature: # The thought signature is to be included on the _next_ part, not the thought part itself thought_signature = base64.b64decode(item.signature) @@ -663,11 +663,11 @@ def _content_model_response(m: ModelResponse) -> ContentDict: part['text'] = item.content part['thought'] = True elif isinstance(item, BuiltinToolCallPart): - if item.provider_name == 'google': + if item.provider_name == provider_name: if item.tool_name == 'code_execution': # pragma: no branch part['executable_code'] = cast(ExecutableCodeDict, item.args) elif isinstance(item, BuiltinToolReturnPart): - if item.provider_name == 'google': + if item.provider_name == provider_name: if item.tool_name == 'code_execution': # pragma: no branch part['code_execution_result'] = item.content else: @@ -696,15 +696,15 @@ def _process_response_from_parts( item = ThinkingPart(content='') items.append(item) item.signature = signature - item.provider_name = 'google' + item.provider_name = provider_name if part.executable_code is not None: item = BuiltinToolCallPart( - provider_name='google', args=part.executable_code.model_dump(), tool_name='code_execution' + provider_name=provider_name, args=part.executable_code.model_dump(), tool_name='code_execution' ) elif part.code_execution_result is not None: item = BuiltinToolReturnPart( - provider_name='google', + provider_name=provider_name, tool_name='code_execution', content=part.code_execution_result, tool_call_id='not_provided', diff --git a/pydantic_ai_slim/pydantic_ai/models/groq.py b/pydantic_ai_slim/pydantic_ai/models/groq.py index 198b1fb638..aae60a5cae 100644 --- a/pydantic_ai_slim/pydantic_ai/models/groq.py +++ b/pydantic_ai_slim/pydantic_ai/models/groq.py @@ -313,12 +313,12 @@ def _process_response(self, response: chat.ChatCompletion) -> ModelResponse: tool_call_id = generate_tool_call_id() items.append( BuiltinToolCallPart( - tool_name=tool.type, args=tool.arguments, provider_name='groq', tool_call_id=tool_call_id + tool_name=tool.type, args=tool.arguments, provider_name=self.system, tool_call_id=tool_call_id ) ) items.append( BuiltinToolReturnPart( - provider_name='groq', tool_name=tool.type, content=tool.output, tool_call_id=tool_call_id + provider_name=self.system, tool_name=tool.type, content=tool.output, tool_call_id=tool_call_id ) ) if choice.message.reasoning is not None: diff --git a/pydantic_ai_slim/pydantic_ai/models/openai.py b/pydantic_ai_slim/pydantic_ai/models/openai.py index 85ff8e3fb1..e777ca3cac 100644 --- a/pydantic_ai_slim/pydantic_ai/models/openai.py +++ b/pydantic_ai_slim/pydantic_ai/models/openai.py @@ -496,13 +496,13 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons # The `reasoning_content` field is only present in DeepSeek models. # https://api-docs.deepseek.com/guides/reasoning_model if reasoning_content := getattr(choice.message, 'reasoning_content', None): - items.append(ThinkingPart(id='reasoning_content', content=reasoning_content, provider_name='openai')) + items.append(ThinkingPart(id='reasoning_content', content=reasoning_content, provider_name=self.system)) # The `reasoning` field is only present in OpenRouter and gpt-oss responses. # https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api # https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens if reasoning := getattr(choice.message, 'reasoning', None): - items.append(ThinkingPart(id='reasoning', content=reasoning, provider_name='openai')) + items.append(ThinkingPart(id='reasoning', content=reasoning, provider_name=self.system)) # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks @@ -525,7 +525,7 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons if choice.message.content is not None: items.extend( - (replace(part, id='content', provider_name='openai') if isinstance(part, ThinkingPart) else part) + (replace(part, id='content', provider_name=self.system) if isinstance(part, ThinkingPart) else part) for part in split_content_into_text_and_thinking(choice.message.content, self.profile.thinking_tags) ) if choice.message.tool_calls is not None: @@ -616,7 +616,7 @@ async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCom if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - if item.provider_name == 'openai': + if item.provider_name == self.system: # TODO: Consider handling this based on model profile, rather than the ID that's set when it was read. # Since it's possible that we received data from one OpenAI-compatible API, and are sending it to another, that doesn't support the same field. if item.id == 'reasoning': @@ -879,7 +879,7 @@ def _process_response(self, response: responses.Response) -> ModelResponse: content=summary.text, id=item.id, signature=signature, - provider_name='openai' if signature else None, + provider_name=self.system if signature else None, ) ) signature = None @@ -1134,7 +1134,7 @@ async def _map_messages( # noqa: C901 reasoning_item = responses.ResponseReasoningItemParam( id=item.id or _utils.generate_tool_call_id(), summary=[Summary(text=item.content, type='summary_text')], - encrypted_content=item.signature if item.provider_name == 'openai' else None, + encrypted_content=item.signature if item.provider_name == self.system else None, type='reasoning', ) openai_messages.append(reasoning_item) @@ -1272,7 +1272,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: if maybe_event is not None: # pragma: no branch if isinstance(maybe_event, PartStartEvent) and isinstance(maybe_event.part, ThinkingPart): maybe_event.part.id = 'content' - maybe_event.part.provider_name = 'openai' + maybe_event.part.provider_name = self.provider_name yield maybe_event # The `reasoning_content` field is only present in DeepSeek models. @@ -1282,7 +1282,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id='reasoning_content', id='reasoning_content', content=reasoning_content, - provider_name='openai', + provider_name=self.provider_name, ) # The `reasoning` field is only present in OpenRouter and gpt-oss responses. @@ -1293,7 +1293,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id='reasoning', id='reasoning', content=reasoning, - provider_name='openai', + provider_name=self.provider_name, ) # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks @@ -1406,7 +1406,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: vendor_part_id=f'{chunk.item.id}-0', id=chunk.item.id, signature=signature, - provider_name='openai' if signature else None, + provider_name=self.provider_name if signature else None, ) pass diff --git a/tests/models/test_deepseek.py b/tests/models/test_deepseek.py index 468f8cb5a3..df0903b1b2 100644 --- a/tests/models/test_deepseek.py +++ b/tests/models/test_deepseek.py @@ -44,7 +44,7 @@ async def test_deepseek_model_thinking_part(allow_model_requests: None, deepseek ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - ThinkingPart(content=IsStr(), id='reasoning_content', provider_name='openai'), + ThinkingPart(content=IsStr(), id='reasoning_content', provider_name='deepseek'), TextPart(content=IsStr()), ], usage=RequestUsage( @@ -79,19 +79,19 @@ async def test_deepseek_model_thinking_stream(allow_model_requests: None, deepse async for event in request_stream: event_parts.append(event) - assert event_parts == snapshot( - IsListOrTuple( - positions={ - 0: PartStartEvent( - index=0, part=ThinkingPart(content='H', id='reasoning_content', provider_name='openai') - ), - 1: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='mm', provider_name='openai')), - 2: PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=',', provider_name='openai')), - 198: PartStartEvent(index=1, part=TextPart(content='Hello')), - 199: FinalResultEvent(tool_name=None, tool_call_id=None), - 200: PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' there')), - 201: PartDeltaEvent(index=1, delta=TextPartDelta(content_delta='!')), - }, - length=211, - ) + assert event_parts == IsListOrTuple( + positions={ + 0: snapshot( + PartStartEvent( + index=0, part=ThinkingPart(content='H', id='reasoning_content', provider_name='deepseek') + ) + ), + 1: snapshot(PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta='mm', provider_name='deepseek'))), + 2: snapshot(PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=',', provider_name='deepseek'))), + 198: snapshot(PartStartEvent(index=1, part=TextPart(content='Hello'))), + 199: snapshot(FinalResultEvent(tool_name=None, tool_call_id=None)), + 200: snapshot(PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' there'))), + 201: snapshot(PartDeltaEvent(index=1, delta=TextPartDelta(content_delta='!'))), + }, + length=211, ) diff --git a/tests/models/test_google.py b/tests/models/test_google.py index 591e62f270..1996721b6c 100644 --- a/tests/models/test_google.py +++ b/tests/models/test_google.py @@ -704,14 +704,14 @@ async def test_google_model_code_execution_tool(allow_model_requests: None, goog 'language': Language.PYTHON, }, tool_call_id=IsStr(), - provider_name='google', + provider_name='google-gla', ), BuiltinToolReturnPart( tool_name='code_execution', content=CodeExecutionResult(outcome=Outcome.OUTCOME_OK, output="day_of_week='Thursday'\n"), tool_call_id='not_provided', timestamp=IsDatetime(), - provider_name='google', + provider_name='google-gla', ), TextPart(content='Today is Thursday in Utrecht.\n'), ], @@ -765,14 +765,14 @@ async def test_google_model_code_execution_tool(allow_model_requests: None, goog 'language': Language.PYTHON, }, tool_call_id=IsStr(), - provider_name='google', + provider_name='google-gla', ), BuiltinToolReturnPart( tool_name='code_execution', content=CodeExecutionResult(outcome=Outcome.OUTCOME_OK, output="day_of_week='Thursday'\n"), tool_call_id='not_provided', timestamp=IsDatetime(), - provider_name='google', + provider_name='google-gla', ), TextPart(content='Today is Thursday in Utrecht.\n'), ], @@ -816,14 +816,14 @@ async def test_google_model_code_execution_tool(allow_model_requests: None, goog 'language': Language.PYTHON, }, tool_call_id=IsStr(), - provider_name='google', + provider_name='google-gla', ), BuiltinToolReturnPart( tool_name='code_execution', content=CodeExecutionResult(outcome=Outcome.OUTCOME_OK, output="day_of_week='Friday'\n"), tool_call_id='not_provided', timestamp=IsDatetime(), - provider_name='google', + provider_name='google-gla', ), TextPart(content='Tomorrow is Friday.\n'), ], @@ -1004,7 +1004,7 @@ def dummy() -> None: ... ThinkingPart( content=IsStr(), signature=IsStr(), - provider_name='google', + provider_name='google-gla', ), TextPart(content=IsStr()), ], @@ -1040,7 +1040,7 @@ def dummy() -> None: ... ThinkingPart( content=IsStr(), signature=IsStr(), - provider_name='google', + provider_name='google-gla', ), TextPart(content=IsStr()), ], @@ -1095,7 +1095,7 @@ def dummy() -> None: ... ThinkingPart( content=IsStr(), signature=IsStr(), - provider_name='google', + provider_name='google-gla', ), TextPart(content=IsStr()), ], @@ -1118,7 +1118,9 @@ def dummy() -> None: ... PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=IsStr())), - PartDeltaEvent(index=0, delta=ThinkingPartDelta(signature_delta=IsStr(), provider_name='google')), + PartDeltaEvent( + index=0, delta=ThinkingPartDelta(content_delta='', signature_delta=IsStr(), provider_name='google-gla') + ), PartStartEvent(index=1, part=TextPart(content=IsStr())), FinalResultEvent(tool_name=None, tool_call_id=None), PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=IsStr())), diff --git a/tests/test_mcp.py b/tests/test_mcp.py index a255c27d3f..5f0313cfc2 100644 --- a/tests/test_mcp.py +++ b/tests/test_mcp.py @@ -783,12 +783,12 @@ async def test_tool_returning_audio_resource_link( ThinkingPart( content='', signature=IsStr(), - provider_name='google', + provider_name='google-gla', ), ToolCallPart( tool_name='get_audio_resource_link', args={}, - tool_call_id='pyd_ai_396803870f644840b6ed84639451855c', + tool_call_id=IsStr(), ), ], usage=RequestUsage( @@ -806,7 +806,7 @@ async def test_tool_returning_audio_resource_link( ToolReturnPart( tool_name='get_audio_resource_link', content='See file 2d36ae', - tool_call_id='pyd_ai_396803870f644840b6ed84639451855c', + tool_call_id=IsStr(), timestamp=IsDatetime(), ), UserPromptPart( From 48f17844125f335c848afcff9254eca1ff3497a1 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 21:57:26 +0000 Subject: [PATCH 07/13] fix test --- tests/test_messages.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_messages.py b/tests/test_messages.py index e46897a42b..f011461dce 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -338,10 +338,10 @@ def test_thinking_part_delta_apply_to_thinking_part_delta(): assert result.signature_delta == 'new_sig' # Test applying delta with content_delta - content_delta = ThinkingPartDelta(content_delta='new_content') + content_delta = ThinkingPartDelta(content_delta=' new_content') result = content_delta.apply(original_delta) assert isinstance(result, ThinkingPartDelta) - assert result.content_delta == 'new_content' + assert result.content_delta == 'original new_content' def test_pre_usage_refactor_messages_deserializable(): From 0c161b919b76d1fa121732e4bb66af29efe7b5c1 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 22:08:25 +0000 Subject: [PATCH 08/13] We don't support OpenRouter reasoning_details and gpt-oss reasoning_text for now --- pydantic_ai_slim/pydantic_ai/models/openai.py | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/pydantic_ai_slim/pydantic_ai/models/openai.py b/pydantic_ai_slim/pydantic_ai/models/openai.py index e777ca3cac..c2b20bc808 100644 --- a/pydantic_ai_slim/pydantic_ai/models/openai.py +++ b/pydantic_ai_slim/pydantic_ai/models/openai.py @@ -504,7 +504,8 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons if reasoning := getattr(choice.message, 'reasoning', None): items.append(ThinkingPart(id='reasoning', content=reasoning, provider_name=self.system)) - # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + # NOTE: We don't currently handle OpenRouter `reasoning_details`: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + # If you need this, please file an issue. vendor_details: dict[str, Any] = {} @@ -602,7 +603,7 @@ def _get_web_search_options(self, model_request_parameters: ModelRequestParamete f'`{tool.__class__.__name__}` is not supported by `OpenAIChatModel`. If it should be, please file an issue.' ) - async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletionMessageParam]: # noqa: C901 + async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCompletionMessageParam]: """Just maps a `pydantic_ai.Message` to a `openai.types.ChatCompletionMessageParam`.""" openai_messages: list[chat.ChatCompletionMessageParam] = [] for message in messages: @@ -616,22 +617,13 @@ async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCom if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - if item.provider_name == self.system: - # TODO: Consider handling this based on model profile, rather than the ID that's set when it was read. - # Since it's possible that we received data from one OpenAI-compatible API, and are sending it to another, that doesn't support the same field. - if item.id == 'reasoning': - # TODO: OpenRouter/gpt-oss `reasoning` field should be sent back per https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api - continue - elif item.id == 'reasoning_details': - # TODO: OpenRouter `reasoning_details` field should be sent back per https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks - continue - elif item.id == 'reasoning_content': - # TODO: DeepSeek `reasoning_content` field should NOT be sent back per https://api-docs.deepseek.com/guides/reasoning_model - continue - + # NOTE: OpenRouter/gpt-oss `reasoning` field should be sent back per https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api, + # but we currently just send it in `` tags as this field is non-standard and not available on the SDK types. + # NOTE: DeepSeek `reasoning_content` field should NOT be sent back per https://api-docs.deepseek.com/guides/reasoning_model, + # but we currently just send it in `` tags anyway as we don't want DeepSeek-specific checks here. + # If you need this changed, please file an issue. start_tag, end_tag = self.profile.thinking_tags texts.append('\n'.join([start_tag, item.content, end_tag])) - elif isinstance(item, ToolCallPart): tool_calls.append(self._map_tool_call(item)) # OpenAI doesn't return built-in tool calls @@ -883,7 +875,8 @@ def _process_response(self, response: responses.Response) -> ModelResponse: ) ) signature = None - # TODO: Handle gpt-oss reasoning_text: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot + # NOTE: We don't currently handle the raw CoT from gpt-oss `reasoning_text`: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot + # If you need this, please file an issue. elif isinstance(item, responses.ResponseOutputMessage): for content in item.content: if isinstance(content, responses.ResponseOutputText): # pragma: no branch @@ -1296,8 +1289,6 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: provider_name=self.provider_name, ) - # TODO: Handle OpenRouter reasoning_details: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks - for dtc in choice.delta.tool_calls or []: maybe_event = self._parts_manager.handle_tool_call_delta( vendor_part_id=dtc.index, @@ -1411,7 +1402,6 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: pass elif isinstance(chunk, responses.ResponseReasoningSummaryPartAddedEvent): - # TODO: Handle gpt-oss reasoning_text: https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot yield self._parts_manager.handle_thinking_delta( vendor_part_id=f'{chunk.item_id}-{chunk.summary_index}', content=chunk.part.text, From 19b20060ab3a8a1f6f50be0f3ac130565d140aac Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 22:18:43 +0000 Subject: [PATCH 09/13] some coverage --- .../pydantic_ai/models/anthropic.py | 2 +- pydantic_ai_slim/pydantic_ai/models/cohere.py | 5 ++-- .../pydantic_ai/models/mistral.py | 2 +- pydantic_ai_slim/pydantic_ai/models/openai.py | 25 ++++--------------- .../pydantic_ai/providers/bedrock.py | 1 - tests/models/test_google.py | 4 +-- tests/test_messages.py | 16 +++++++++--- 7 files changed, 23 insertions(+), 32 deletions(-) diff --git a/pydantic_ai_slim/pydantic_ai/models/anthropic.py b/pydantic_ai_slim/pydantic_ai/models/anthropic.py index e138d62701..3f6da5c937 100644 --- a/pydantic_ai_slim/pydantic_ai/models/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/models/anthropic.py @@ -320,7 +320,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse: tool_call_id=item.id, ) ) - elif isinstance(item, BetaRedactedThinkingBlock): # pragma: no cover + elif isinstance(item, BetaRedactedThinkingBlock): items.append( ThinkingPart(id='redacted_thinking', content='', signature=item.data, provider_name=self.system) ) diff --git a/pydantic_ai_slim/pydantic_ai/models/cohere.py b/pydantic_ai_slim/pydantic_ai/models/cohere.py index 8c5cbb154a..2b70ef45bf 100644 --- a/pydantic_ai_slim/pydantic_ai/models/cohere.py +++ b/pydantic_ai_slim/pydantic_ai/models/cohere.py @@ -204,10 +204,9 @@ def _process_response(self, response: V2ChatResponse) -> ModelResponse: parts: list[ModelResponsePart] = [] if response.message.content is not None: for content in response.message.content: - print(content) if content.type == 'text': parts.append(TextPart(content=content.text)) - elif content.type == 'thinking': + elif content.type == 'thinking': # pragma: no branch parts.append(ThinkingPart(content=cast(str, content.thinking))) # pyright: ignore[reportUnknownMemberType,reportAttributeAccessIssue] - https://github.com/cohere-ai/cohere-python/issues/692 for c in response.message.tool_calls or []: if c.function and c.function.name and c.function.arguments: # pragma: no branch @@ -260,7 +259,7 @@ def _map_messages(self, messages: list[ModelMessage]) -> list[ChatMessageV2]: contents: list[AssistantMessageV2ContentItem] = [] if thinking: contents.append(ThinkingAssistantMessageV2ContentItem(thinking='\n\n'.join(thinking))) # pyright: ignore[reportCallIssue] - https://github.com/cohere-ai/cohere-python/issues/692 - if texts: + if texts: # pragma: no branch contents.append(TextAssistantMessageV2ContentItem(text='\n\n'.join(texts))) message_param.content = contents if tool_calls: diff --git a/pydantic_ai_slim/pydantic_ai/models/mistral.py b/pydantic_ai_slim/pydantic_ai/models/mistral.py index 7424da68af..4111c531a3 100644 --- a/pydantic_ai_slim/pydantic_ai/models/mistral.py +++ b/pydantic_ai_slim/pydantic_ai/models/mistral.py @@ -765,7 +765,7 @@ def _map_content(content: MistralOptionalNullable[MistralContent]) -> tuple[str text = text or '' + chunk.text elif isinstance(chunk, MistralThinkChunk): for thought in chunk.thinking: - if thought.type == 'text': + if thought.type == 'text': # pragma: no branch thinking.append(thought.text) else: assert False, ( # pragma: no cover diff --git a/pydantic_ai_slim/pydantic_ai/models/openai.py b/pydantic_ai_slim/pydantic_ai/models/openai.py index c2b20bc808..a057758018 100644 --- a/pydantic_ai_slim/pydantic_ai/models/openai.py +++ b/pydantic_ai_slim/pydantic_ai/models/openai.py @@ -498,13 +498,11 @@ def _process_response(self, response: chat.ChatCompletion | str) -> ModelRespons if reasoning_content := getattr(choice.message, 'reasoning_content', None): items.append(ThinkingPart(id='reasoning_content', content=reasoning_content, provider_name=self.system)) - # The `reasoning` field is only present in OpenRouter and gpt-oss responses. - # https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api - # https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens - if reasoning := getattr(choice.message, 'reasoning', None): - items.append(ThinkingPart(id='reasoning', content=reasoning, provider_name=self.system)) - - # NOTE: We don't currently handle OpenRouter `reasoning_details`: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + # NOTE: We don't currently handle OpenRouter `reasoning_details`: + # - https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks + # NOTE: We don't currently handle OpenRouter/gpt-oss `reasoning`: + # - https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api + # - https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens # If you need this, please file an issue. vendor_details: dict[str, Any] = {} @@ -617,8 +615,6 @@ async def _map_messages(self, messages: list[ModelMessage]) -> list[chat.ChatCom if isinstance(item, TextPart): texts.append(item.content) elif isinstance(item, ThinkingPart): - # NOTE: OpenRouter/gpt-oss `reasoning` field should be sent back per https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api, - # but we currently just send it in `` tags as this field is non-standard and not available on the SDK types. # NOTE: DeepSeek `reasoning_content` field should NOT be sent back per https://api-docs.deepseek.com/guides/reasoning_model, # but we currently just send it in `` tags anyway as we don't want DeepSeek-specific checks here. # If you need this changed, please file an issue. @@ -1278,17 +1274,6 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: provider_name=self.provider_name, ) - # The `reasoning` field is only present in OpenRouter and gpt-oss responses. - # https://cookbook.openai.com/articles/gpt-oss/handle-raw-cot#chat-completions-api - # https://openrouter.ai/docs/use-cases/reasoning-tokens#basic-usage-with-reasoning-tokens - if reasoning := getattr(choice.delta, 'reasoning', None): - yield self._parts_manager.handle_thinking_delta( - vendor_part_id='reasoning', - id='reasoning', - content=reasoning, - provider_name=self.provider_name, - ) - for dtc in choice.delta.tool_calls or []: maybe_event = self._parts_manager.handle_tool_call_delta( vendor_part_id=dtc.index, diff --git a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py index 3d5eb37b5e..557ffce195 100644 --- a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py @@ -51,7 +51,6 @@ def bedrock_amazon_model_profile(model_name: str) -> ModelProfile | None: def bedrock_deepseek_model_profile(model_name: str) -> ModelProfile | None: """Get the model profile for a DeepSeek model used via Bedrock.""" profile = deepseek_model_profile(model_name) - # TODO: Test Bedrock reasoning with `deepseek.r1-v1:0` if 'r1' in model_name: return BedrockModelProfile(bedrock_send_back_thinking_parts=True).update(profile) return profile diff --git a/tests/models/test_google.py b/tests/models/test_google.py index 1996721b6c..f6c90f07fe 100644 --- a/tests/models/test_google.py +++ b/tests/models/test_google.py @@ -982,7 +982,7 @@ async def test_google_model_thinking_part(allow_model_requests: None, google_pro # Google only emits thought signatures when there are tools: https://ai.google.dev/gemini-api/docs/thinking#signatures @agent.tool_plain - def dummy() -> None: ... + def dummy() -> None: ... # pragma: no cover result = await agent.run('How do I cross the street?') assert result.all_messages() == snapshot( @@ -1065,7 +1065,7 @@ async def test_google_model_thinking_part_iter(allow_model_requests: None, googl # Google only emits thought signatures when there are tools: https://ai.google.dev/gemini-api/docs/thinking#signatures @agent.tool_plain - def dummy() -> None: ... + def dummy() -> None: ... # pragma: no cover event_parts: list[Any] = [] async with agent.iter(user_prompt='How do I cross the street?') as agent_run: diff --git a/tests/test_messages.py b/tests/test_messages.py index f011461dce..885302cc26 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -324,24 +324,32 @@ def test_video_url_invalid(): def test_thinking_part_delta_apply_to_thinking_part_delta(): """Test lines 768-775: Apply ThinkingPartDelta to another ThinkingPartDelta.""" - original_delta = ThinkingPartDelta(content_delta='original', signature_delta='sig1') + original_delta = ThinkingPartDelta( + content_delta='original', signature_delta='sig1', provider_name='original_provider' + ) # Test applying delta with no content or signature - should raise error empty_delta = ThinkingPartDelta() with pytest.raises(ValueError, match='Cannot apply ThinkingPartDelta with no content or signature'): empty_delta.apply(original_delta) + # Test applying delta with content_delta + content_delta = ThinkingPartDelta(content_delta=' new_content') + result = content_delta.apply(original_delta) + assert isinstance(result, ThinkingPartDelta) + assert result.content_delta == 'original new_content' + # Test applying delta with signature_delta sig_delta = ThinkingPartDelta(signature_delta='new_sig') result = sig_delta.apply(original_delta) assert isinstance(result, ThinkingPartDelta) assert result.signature_delta == 'new_sig' - # Test applying delta with content_delta - content_delta = ThinkingPartDelta(content_delta=' new_content') + # Test applying delta with provider_name + content_delta = ThinkingPartDelta(content_delta='', provider_name='new_provider') result = content_delta.apply(original_delta) assert isinstance(result, ThinkingPartDelta) - assert result.content_delta == 'original new_content' + assert result.provider_name == 'new_provider' def test_pre_usage_refactor_messages_deserializable(): From e0dddd39c2aa55dbe84522112c3b7537c3ad9977 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 22:52:33 +0000 Subject: [PATCH 10/13] more coverage --- .../pydantic_ai/models/bedrock.py | 23 +- .../pydantic_ai/providers/bedrock.py | 2 +- ..._model_thinking_part_from_other_model.yaml | 343 +++++++++++++++++ .../test_bedrock_model_thinking_part.yaml | 259 ++++++------- ..._model_thinking_part_from_other_model.yaml | 300 +++++++++++++++ ..._model_thinking_part_from_other_model.yaml | 362 ++++++++++++++++++ .../test_openai_model_thinking_part.yaml | 215 +++++------ tests/models/test_anthropic.py | 115 ++++++ tests/models/test_bedrock.py | 113 +++++- tests/models/test_google.py | 108 ++++++ tests/models/test_openai.py | 25 +- 11 files changed, 1582 insertions(+), 283 deletions(-) create mode 100644 tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml create mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml create mode 100644 tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml diff --git a/pydantic_ai_slim/pydantic_ai/models/bedrock.py b/pydantic_ai_slim/pydantic_ai/models/bedrock.py index f1077d9311..a7a2182146 100644 --- a/pydantic_ai_slim/pydantic_ai/models/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/models/bedrock.py @@ -504,23 +504,20 @@ async def _map_messages( # noqa: C901 if isinstance(item, TextPart): content.append({'text': item.content}) elif isinstance(item, ThinkingPart): - if BedrockModelProfile.from_profile(self.profile).bedrock_send_back_thinking_parts: - if item.provider_name == self.system and item.signature: - if item.id == 'redacted_content': - reasoning_content: ReasoningContentBlockOutputTypeDef = { - 'redactedContent': item.signature.encode('utf-8'), - } - else: - reasoning_content: ReasoningContentBlockOutputTypeDef = { - 'reasoningText': { - 'text': item.content, - 'signature': item.signature, - } - } + if ( + item.provider_name == self.system + and item.signature + and BedrockModelProfile.from_profile(self.profile).bedrock_send_back_thinking_parts + ): + if item.id == 'redacted_content': + reasoning_content: ReasoningContentBlockOutputTypeDef = { + 'redactedContent': item.signature.encode('utf-8'), + } else: reasoning_content: ReasoningContentBlockOutputTypeDef = { 'reasoningText': { 'text': item.content, + 'signature': item.signature, } } content.append({'reasoningContent': reasoning_content}) diff --git a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py index 557ffce195..41c02c5ff2 100644 --- a/pydantic_ai_slim/pydantic_ai/providers/bedrock.py +++ b/pydantic_ai_slim/pydantic_ai/providers/bedrock.py @@ -53,7 +53,7 @@ def bedrock_deepseek_model_profile(model_name: str) -> ModelProfile | None: profile = deepseek_model_profile(model_name) if 'r1' in model_name: return BedrockModelProfile(bedrock_send_back_thinking_parts=True).update(profile) - return profile + return profile # pragma: no cover class BedrockProvider(Provider[BaseClient]): diff --git a/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml new file mode 100644 index 0000000000..239b0c60f2 --- /dev/null +++ b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml @@ -0,0 +1,343 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '249' + content-type: + - application/json + host: + - api.openai.com + method: POST + parsed_body: + include: + - reasoning.encrypted_content + input: + - content: You are a helpful assistant. + role: system + - content: How do I cross the street? + role: user + model: gpt-5 + reasoning: + effort: high + summary: detailed + stream: false + uri: https://api.openai.com/v1/responses + response: + headers: + alt-svc: + - h3=":443"; ma=86400 + connection: + - keep-alive + content-length: + - '20367' + content-type: + - application/json + openai-organization: + - pydantic-28gund + openai-processing-ms: + - '24717' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + background: false + created_at: 1757543847 + error: null + id: resp_68c1fda6f11081a1b9fa80ae9122743506da9901a3d98ab7 + incomplete_details: null + instructions: null + max_output_tokens: null + max_tool_calls: null + metadata: {} + model: gpt-5-2025-08-07 + object: response + output: + - encrypted_content: gAAAAABowf2_AHOXmEAKsNdyGIMNmBt3qK8T8OcybLOuQkkIgjjciRaVh5lvEYzq0T3Tiuov9JXstCcNjH5TF36PUM53JjnJ2x7qPZg0DfOc7XzUtwH_OJGLc_eX18QOw-zohEZuf7TJWzXue0nwVpKTQWN_6zXPtLj9OZtccEcu-fHT5rrSt-Z7WLoYKj9Bp1u-SfShJPL7v7I1jzPMwGf0I2C6uBmHSqPAlJ-QunpuAo3u_xp1l7w6z1iIeWJ7gV46E0UmaLk4fexi0x9Fvk9BTBd4dbjAV46IvWJkeQeGKuivgJ3X9C41KsaOZTknyLXGQYuE_PI1nd3O8obIUK37ODoOmxjqqVJfBzZXbqfOwTwMRiv1wSzahBfLytCKmU1a43iNjJhsSQGqdogD0RIv9unoYcXTjfSQk9R7qxNCo3oPMLO3LYLZgs8abjFpLGTiI36tze62L-NEbbJpOV0tKDZ5nVLxCS6-XG6IKKI9ltMhY-cISfx4VcLG_TLp68nyYGdu7ascSrUXRpH8yNJciMjfRDtu9C3mojioaxi9FUmQ95vsYpuUlxOytUWcXxj1k6HdzOVhJNGtD8RCAHp28usbuIFDobvOo0K3BTU0z-umGYDSRIksK5M-XAHRfXoBoBBiTEVRDH5WiqLpSy_gL73CDtJFXpW5PlwNa-zwrp1zVD7HIhgG0oQeQ5kNSO8hV40rm8WYrKXnWpD25zjFA7E-qx47Sn98rBVk9UGNYfw2RV0aN_0lCwFNi_8dtY5-V2feSMXWAR7MNX2QRuc7RsMzfAvDv8TDJJFn0EZvX0Bv7TA7UkjQoLPOi5OKbeNuAT8k42TA_cob3uiejsqQ1mrYixezVJX4jQ4ARLxp0uAyAjnWHhnqkb4oCfIDQ8ht9IgS4dqm9pc2BKhGGYvqH1Vk0aUONciXGipfxEN-ZGhhls6CfPH3WUytB_qhWFiWF8aewSttku4sL9AkGtbG80lLc9lRAvtWHWviW_2XH_yvLuDMDvRAa-cYOaTMtxk1iQ_A8mGnSxDut5heIOK5z8ReUq9qtcOR2xiKF0wVSZX9wticGT6EwLrgPPKafbE10Hl6kkkwo02WkREhkD7rmRyqPuUyPqRaTC_qIxINYSx6DiidnDDfiIjXitlnt6Dp0eFmqfce0cVyKJwc2AEl3QvzG2rHyWTYrVLk_K_M8bPueX2Dgp5fQKZW8GjuXOHVuMnQFVoiiWWs3SYUdAD0aiqJg6BmRYpcdwlkKT_BCZzQIp2QQF_n2W5IhI1VDULmV7WW0ljtW9Rq2-47qaVyMFRrLD5SS-siFwH-AhraBUxhYX4lLe6GrTFLJ5jUYBl1xBuhVUPPSV-qUhGgGmgQb-hgDIXQb3AX8wH9JrToM93SMh-zstW-GNLcdlAH1t1CExqqcUs2wc2ecMrTL8dxHg9AY4jCM2hDMgp_ZmiRzBF_8IhH5b_qEArG_fAZ2U7-4FOWm2-dF2aFYqG0gW8VzjhS2knnzqd2YJS-MtTmCuJdmwql_7mhMcgQvQmnbpj-TON_hf4t_IQHT65hZ20JmQNMX2qc_JY6Xp0IPpt908_soJN2ml9fI-ObNL6a9tkx1oRaKBB25dH5ZYWjDzC2_jHZwlEL2JRkSUgcF_H0tohI8cNnQSJ89jkCcgTHqIDqcp9w7-0TvLGj05TzIodJAlI6eOXqoNNAof2F2y6wsyD7lRnhPqPmTpIG6nYVZXEOHICTVNEfAAewtXZ82OYfO-uU0y535huv7bBJv5RYImhHMC-tkUAUGox1223I8O14UsyhXJrsOIaSLdhmrm_9hvAfs2YKF4WprnSzkxsda6C_WIuJy7tDNAo6EVXkB9i9INElyfnxGJgvWfwXOIbLLsdsS5Ocf1mqpBdECU6vsgOnio8opZ6MoWDexB515C8mCngOlIZKGZ3TojdOLGKoeeOn4Y1USVr9bndXIN9-hm3xzLXyfgfUMuaF3ehx2IXTFA0oJhy-z3N6Orgey6ibNNCsGtq5QKfYyIV7o-_cqjGcXyMjQqNXeH-imRwMXevfWiKNHowJf3_cjUIAOUnXXPi2c8Tv0KMWQDR1mKyASXh8QY5GyPMYDF3mfI6zHiSumIfSFZiiX6xCs2lKdy1wfrYPHjde8Qi4DZhDFOX5imeziWBAdLrWA5QVdNy45p88zKwZYiQKFqmsWpZYwYjji-OdikTn6FKxpYlzRJMRSQjpOU30sNov8FIwySApK0mPsxBulkT1gcipyb3bKuXm5wvbzMDcS24vx26PlnUluX9jo1ElJBkxCqfwJZK9vOLPfVZHeN9uS2JU_GCMBLrAmXcLG-scaikRawW2SDhv3seFJHPL330wT2_i2DY_fVi0Q2YZxsELZ_YSAMzL11RMgzbdvE9GF1LOt6PkALQxlhmyKnaOjpqwlfSgoeKSmgM4h9JbOQ8CRTrT2KbIAxQF3D5IA3arKkLsL6HE55x7okRRqQzI5hN80vQAfSa4wUe7r7EV_AoypQZPSkWMnDfqJDcjIwju0-H6iE875b1AUVqx8QjiRDJRzEupZ3pC15z9qx0LmbIsjGoD2KNutWtgbWdPqGo53EKaksEhgalbGe08U5yl081OyP6U6EpLvIXnZGRSQvpgHCUg9uNhshgz1-GIZXC0h97PLA5JaUR9cdsKH5F6LC78LU8XJphS6k7U4gaP4tmCIp4rs1qVMCVAxShszolHGZo1JQIbAakNi8-f5tNgMZQulDe9FaFtecrGfCugL11PwmT0RbrV0M-wotDBpo0uC9vuAI4wB6HW7FGhpLwZnJ1c27kkWaGo0jltCPTiUvxTCRK-BtAYz0S2YedVSmKOaUP9vomJqeg2LfKokDJLDwPRFmfZPstc5nYAQPWbN_L8OrjkeNKrW3XdB3wFw0FSehoTwNkAjyeMmcKWxZKXIfkqXkhe4arw6df9dIVWqBTELDxhGp8X8Q6nxDPU8S4EgbdP7SmhQM9utpqz2dT0057InogmYcVzLV98PBdsF3yVwkmCPYUlKu1e84rLqL9iQ0JbsBjRRd45sbXI2xqeIQxgp4Onz16m0cXg5lFq5uhFagW5syJvDVZtZY_IAF0b3vQvHo5QuCnLJPaJHayVDFDcSi3qYUYMa5eDhglYEn0tDKuIqLyu0jIXCBSUVqjKiBkFkIiYlJLc-L4Z3BV2waO-AaEIUAl9mT7mNBlu4N90K9C6wcrqKZcxFvRUicMO8Ak-tcqolvwVqmTxch9SkHX-Wtjh_vXytOpePfRH339z9QH1gQYTK-tb1Gu3sv6IJrL1enJwqMydKDiISp-oPH7YeA-nwsuWB3PSDxCrUdozyhr_HharZ6ComY6ESf4o9mzSJxKjJWVGFRHEvvWlCcD31L0aYGBB0ZXUGT0gXxWz_jyScH40g9Rfflt4N_HfOeyZFw_EDMWr4cXQ4_m0LEYqEfbINNS0vUCupaQ4igsQjy9W3QXsmmD-CsYFiLT9u2bhsM4cYhg04cGz3zjfuteIEub3YNWIAfK6CCglnQK0Ty8sKBRq5s8-bLohoWJV2W0vlsdO7RP5HEYzdfyFBzpuqXaXIfGwt055lxnTew4iOGmnNcaWDmKUeQtdFjyQqRn8dGh_ScSk92J__sRqM4P4BEDKJIhxmJclVpKlpN3ujDm7MJyC_D9tVLjXyItouS85BNAHaYE34t2fZYhQXdpYNedPFzscNZF-shqU8Z1ppbh11eqwL5aU_GvpUU3AQjvu7oHxaNOwS9IzktzNZC5lvmfGGi9qJsTuZnqUhIumkwSB_N6NSsXCXmoB2dhp1JsP1Tra9R1Cn63KF5yvvQ0eddZG0Hy4cY-ehTas7YKPoJmiRdLikQXSiCKEqQSykM65NbSysEvHSPsVGQQiiTD9Ha0ukcsoEu_luctbAgX4MJdQ8EjZjsKIDG-CTAML0W6rL8NGlFNZ8XBf-OAFQGWKBqzjiJtbTV9FxcYzZNMwlpVLmweVO8Q8J2x1zk6DxYKQQyD2P0VSLW2G3WTKkfzB6JEBJ3xO7hF72oAUsE97FCMVvp9tU-JcS8ONfM_V06Mc8ySIlqLExN4lotXgoarB-oTkTBElKfssgbT9_aKsfOkINXCwvRWDWHmL3WMvH0MqIxJJ03M0J2PEWYeR8qXH8gQ6XDe3r_f7VBka9xMamOxtsbRDUvEhcvLPIPBV_GwOjVyrRzhMPGxqXyuCiXaDy8qwQ6A6P7JlexpqWA6Flq8X90sT64guSup-y87lUwQYLe8IuFFI2siJj4ipSUTUKdybuSThLT-zb5NN0Q5nzFJVhLssQ0wgtgdUXH9pGV6QrnYmQ8hcwbeLuoqs-rmCaFmKvNo2ucH5kf1t0hihakCd1wAUMW-HsAQ9zbC5KdNlFu5xaCUzPHrpgiW5VlV3lvpKFLGqAb3dYFNeWrUjvt_G3rSxjBh9e5KKrt5F9y3DV-_ZZ1lC9ANRoVnwTrlSD5bx1SxvoIdgBa_RQq8D3eCH9G7fPw42dr5gDg2vFrWoVcuRvwCaaHdHkpXR9f5uL1s32DCsFB-jCjVCDvPEo_V3bMSHROszGQYu8FCERK-mVgpLYGfd6jV6YP-qluL_ezukhQfB67jti3GT0Ze9Las9EdXYmJGpvZPYWl6x8okBe06-NARmzrDMVi8QryKFZ5gBPwim50yome3lYnf9MhiCjLIsVKX45X2J-7pF5WmfnhatPnMAxlVD5UTi_GNILD0cQasHKVLMMRSr5xJ6-YN5zyZIOr3hpOuZ_iPmbveucxtwwN5eZrPaIMWyPKThkmdThOd5dL0mceWyimZDcVqZa5fl0NVEkFzqA6RpVPBW_fAh6FynEwBIxdSQ_sE8Ozv5ztcTg805cfYQDi0ssVC0PAVywMzsirCGB3UJQFueiD88Pz-haU_WV1ckskScmumgxxESoLq_i0PZIKjMZf5DQp8auLSjff9EyNrQAnX3vIF5BULz1S6MrzJCOYHrIkJyN3-fuJIw6JlfDbOgijmH3heINhARq9k2wHByNLYzmrQV3jPp1nPLViLHsRihY_-zGA89N5fy-LYg9CcUzb05fW-hAz0EJDG8C15E6sqXaWgs9wFnNhQkOsfgNPwGDd6dPdd-X51N1ewz84welWcOrR0RtehCPqpOkOQ5Kh7FnyuQizT4doZ1uVFFQrKrLjliucn5ZKAJNmpnYtl_7IJhIffJkXEhbsAOy-jrVTxx0w2SoRbTInV5MENDT9EDjQgZEgCkoyT_8RIt4RSNS2DrH7HU-U8RFgAXeYhQaiBQSG73yBH6sqNXxNsFU7I_U6rNCVib-FRIoMVLcocqswFbZNm2CV7qzM4euUa8vw0Kp_mfFAtFg0M3M1s8T2y2ce0vHtEBKiFZRewHqL8LfYU-q8PxMJJrHRzJ54PXDGdH_kyDmXophBboXpYoyQKf0ikmdl0mcUtgx8jQOMjwzaFyx8cfNXlhaKZxWLZnTPuUDCXv8jm4jbyBxv-fT1k26Iaz_e8vJ6kraT1mOLUWeYsHQ9niNlOQd9iXl9WqSiUSZjIDRYZdpPgEUAvTgVS_eIevUEqWmdDYcUmK36l7c8sBZoOSO1biIt2bnyasvORv549ihVWinxjyVsTvHX7_oFL2TcWt_yqd_WbQCekEHR2FhnuVjgUogCMXHxaEqgtLv2PDMDQc8MaXoFVyrzhfJQMQiPO1BHIDyRUE-WtEiZSk1gSDpNIn8-gUzSujF-qsSOgjPh-hOuGaX3mI-NEs9UR7kV7jf1ILWY5wpUOZwD-jVq3MQXgQOVOZifcoOXb2tLnTa2aR7aORFrgdsyx6DhW64ghEavdlK5GF269oKwpZIU_z8ue4Ps6TakA8vv9wGHfobndoT6sGH_xA3tFpR4tLCJti2FwkUIqApVRPXR-vHctd3NGshiyGiESz4QL0kaXXNa_ws4MSniVSdNDF06n-RKzR1pSdyQlpR9OOSnUbX9at9vaCIHjBi3fiir12SzXL-cg0LYYJlft7rTZnxQZsW869c-S0QscBfvINhIehyN_ht71lOQGzelvBCfWGjnKzlLgyBm8pVmowB1g3IURgTeMyegdIFmZl0H7oJ6U4_X9fjWuQbzUei7mqA6mIpncOw3sk_xuIRtmC8SQwnYkKsuHNTCOzgaYm92ouU25znn9xnsNxxaUQLA0dGesut1vbLIWj-ENX9ZWXl6KyLEc41U9LPuzH9SY0aZxeHbuDOPBuROV9NsRQ8kkJUMM0R1jQ9TtOgZeIWIHqpD7bjljdeX_DxGGnkHeediTkcFJwRXr_ROZcCjP6E4_81RbYraWQ52Yvaj5Ac1Qt_BgReC_7WueorRgRElEKksbRq_CBMj6Zivo38m8Lk-JvP9x8FOITJvJ_iS58LNptrNNC5cE-SLtr5QHlEVwOfnr0nCG8Elstx8wo0T0kXOP3BF_i-Ui2yNPB1DjRPVy04DgFOBtBOAP-Gjt2efS_hkd3O2iiNLXitj48X2FyFD6s4R9h1JpdRSFQg4ILII4yF8IHlS6QzBKUD9sxl4f2U1RvDOQ_P3e6rTLStrFN3UvM2pp3j-EzAL321Xjzq0U-Z1RflUiQbFcnf6nnFz0XjFIA6QhRi8vv3OR-7euA0cTRwQPwIKgui8RzrNy9OlmOvuGaaHm11xZxN6DFtCvbsneyw2HnrX4w7-r67-8pUwXaJVPOQAeTK7NrIBCj44J5WIXHepQCI7z8tMUzawwHSXMzcA55gx5nvYbIKYEhnHgpD24_Jw9WEwGu5dCvswEVq12qit6UzmHYdYeLIjWM9widuQo-pPCdZxpv-vWGSJ1ZordSx19hoWxReY32TOP9ik0LXBVixgIICIJsv8Bd0UUr_761PnYmIbBOrtLa2QG3VxT7r8MAawRJjG85jiPeYj7iB8HI--PRoKsa8sonlx-pfkZhKWjfb86-8a49LETKIEPHfpoTh0trg3rMDxdisKt2AwNgDGAdCAaNWF5VkPCuLnivue7pUOXiazUyuvWdh_Jxvq7NOl_Y0lgzW-W0iHdDdVqZd4L24N4F2T-SRdxbvwhE3forHjC7kX3ewHSKEMBriq9qQ8ryc7OMRD4dvtEFMbRyFOJdxIRGd0zsj-BhdY0Yf91sLkO7rwSMYy49y5x6s7_3SlNGDRVdthc9H1gPHFXzNsE9AKIaEbiceNtlgPoaHtqNpVfX-cvsELpAa-d_HlGWxgSRB43Yk2Cg4uGTb9TNC3B0Z2u_n1mjqrkQkpxMdZMH6ZXT-90UKb0-Lfp-Mk0ZRJwHQm_hnmqu7ufnk4dYULEuEpQ2UFgEMHcsr0_854uexobvgrc-USkEj-Yw7jOqxnBaSS_eanJfxt2MPHH6XKoRsxThZaqwHM6IYyYjTvwiQ2iEWooA3kEVeKOYJhTDub3n9c2AoomHhleViDyTXQI4bVqtwjhKIxsWE3fRwLRG939tB2T6i1pQGkox0XkuStFCGKUl-glcIooxKbbXmrs8RmHhVNxOFs_nyuHO_Mpk-w6P1ImcjhRcwovSh5qSRBEIMsubFhhnUo4Xo9Pa7BXc_RQZ8SNCHU5PdLvDPL4dx7TgHPvZ4pkXJUd_8gxHBXiWDfQloHPQ0ur9MkQ0rDknE6FbcOP5oDbyKs1qb1I-p0pL4__IAXo5G1Tg0vzKrVq8oVBsFaIf87e2jyR7IWZRQ1PyC7opFtvOOC35MvvGedOw10-f5vP94vy4LpLSjq71CESIeRnq8WdQXlKFSQ4-rWAKeSXGBWkAxb5bevdSWleTaQPJ-9sz3RULfPmzs8eJj7LG4JDX1aS98Mvh21lvWJiyq-I97OtPtRl7S14fwkuZhM3dKTsXYxrqORzD0CeKF6cHUITsK1EbfAyk8UdZOvXlWTr8lgQp_W-nGIx5WGRFAoZ_TaPpCyJeoKFWZQr3oR5MgexgPGg6wuywDU68dUpgei1l45C3_RcxftD_4ljNopyq8CrVrZdqMjv-_psxSoUJT2-O3eJXB07kc482tsFSvNSIq_sBxYt-bPuqwn6z5V6yRky_D8ra2TwyPE8j98vZjjxoskM3my8oN-uYIf-v4PgXTf33qs0EcYCAWQ0BS0nU07AKs07kZW6TY_GDNQh33cSC9WJTVgu91gvYdpzTZQNc7IH9wZFTcW32eWtGkEcjF8fyivst9y68jvfgoDEfVAGQ76XsjKLBQTKJsIqDTtHge4wcJ0syW_R3YfrdwhdqLYDE3Glevn__JfB6aJAU_U4j-5xejrwX_Qu0qB_zuLcylphNZ-Aww36qkl7l93hZYa-iCAci1LptJRqJB2LLWetjMPe2JvO74jCpt-MM-FrfSkLaSHmTLXoLR4UAgfJ9PXlax1iiVSWgVX_OpjGqcVtKkXbgy7MuGwPkvkKstHd1z8cm1m3NYjp4yHZOOrrmNklMCYfCEaoOVkjoZfubgvJBQ9alReQI_OSe2iHaVvrjT26s-QAqsCLai5UEjFBRQSOK_V-bL8r2kLL9nhyNMuaaVyFnjPkp9j8EJ2u5XE9cQxG8pSkG_bZmPJOti0UOf7M99sEnJM6oP4xH_vVVmfAWEtDDefvWcwoa9JI5ue7NS9bvIzSm3mxjIFY76dPFh7kX8ZMzSxvgqnWWCeDJ-dFVgapSTQ9CzCtdqMVf3Wb0nj2nDxz9HguzEbSVKBkIip3FdIo-7HkgAlutZcwugcglhWzrfiiAR_ZS4emHGWSSftj7UfUu1Olhwm62ejZf8FbdJ4Io6Hk0EhAZG47-StUaUs6vy0bWUoGYuoC2x8YJCVMenKvIHFAVzbj-4o7A8X2KfjdVskti-DHrTV0f8wjqt68YOX-OdRGj5-84dqxWamIQVa-YMZns_TGRfzA8QtYpctv9bOvyb6JqTSGiSICHi6n6lJRpn_SbQ7fQU8P4VnVSrbKMmL1KA3XvqILCeuF_Xf-wEGVfAJeZh1YXLLtVB58-BLty4cqTfxyhHkyxgsxzemPhsLJj95Qxv_zvnQVH1-nTNdpy7HLapEBZ7jwDFHpt1RqSU4m9lUx8bZ0UcA_ie2AepxglvhaBF-68zihJHGeqi3ttADoJiGKrNZAmFEYL_pGZSdH9uVN_gBlNBzQOc0nf57fJuNUksjNRYxykvy8Nl0sy4L0_HyCHv5_JwEK4xgaZVuvPMUK6YWk2wJ34iMYCpu-Ixlj8hSb911P75lddDPUdLIpzliDsW1h4j82y-CthnSH7PVgK8CuiYgj63z1Ovptw5gMA5RofXUMM-ZYDRFoEvUauWAaaSb8ISMqiTIwLIB5yyoVGVkvIJ-8nTc8lP8OistLah3VZLLlY2xGcKjECuGwLAdpV4zpviy886sG6lGgI3m_5TJ6VDV76SCzgOMdAQSmbeOlpWrYD8hM88-0pgrky-R-OUiamjbeFCj0AoGd12USuXlLJXjbf_9KPwxgnP9Wj9EEFcyemS8vcU5aCABcuETtNYtrV7rzmc7LMcf1yWMx3rFejq7OC7EfBqf4qeUFhYxNAmxgDS9QotPKlZf3QB6INCurxCABLcKVQ-ULw3lavSSwaicdhNDBM1cQsGQOIx4RoY70yH7BmGKH_pjSUa42bYLJ5xX6zawZ4qj9bBE6ZOG7sY2XI8ZB0fhKzjYKMtfn9bcYR0voMYWnZCB04FtvCxm_YF1b2c6OGfMwqBSU2Sa3FoPV6csUlISf6G1kkLr0neqOKMjm4fLvYTptlC3U-XkJpM8JY_ZmZ66h0A7ogKfVQ0-pCNYh8ISOS-IWQyf9kHCtQcjAs0Q7vPEN5ZF7yGI7nshpFxiJ0qXv3A7wReE190DLWFHw7FOQDbzxVkOzdeGH9mrNw5Lli32Jzga5NflP34skOAlJ85VJrOBbI2egWLrV-Hw4Px2w_khKWEeqVgiEwCf2zkaFEGJYvmfdLTVShhULzNyQj291gkRrqv4byN1SbRKlAO5cromYII7DaDv0F-T1g52O2d6U-EO767kFhvesXVIWsMWaLjdV78o-sNatlY6TLUh5zn6JEW0QE6iBlbYlQeuiRr7Cna4SJGYfrCPlXwR8Is5paRzdFiNXfFwnQQzlyxsJZ3wLo6_aU4WYuh4NdUlAft3mkDkeNOgU2VSF6ysMORSMfnEhGfh-9wObGR5iN068gXspb3fbSkl9Cr8uCkDGyhoh_MmqXNbiCJJRb6PLTB5IteEoDGgIXkDKontPgfoSE7QxgWwjMW8XTQRVDkoyy-REsMzbVG_g46plaRW8hwQooUVk408hEg8T6LCEmrs8qptQd0jOymBQVYO8JVJYx7wpMr2QEQw8GCNI7nxZbRLn09TLeEdqvFqQJo5I0ZaiDDlCZD3j5_5MDkLmhINInfv8Aj8ZdcZZ40yre4rZ3JzwlHi5-IrPBRifIRCcKtHWknHH5_n7St7srg8XLz8mppKFtw-Ba5iIQJwjPKZlQC_lrb1VjaXAkpCMKkVKRMdAgUciac3TOdEA6jLb0umQynhF_ffGMjG4P7RptF58Q7KCN2COw5xq7bqoQDsKF_PavftXdmF0_rA1vgQcUrihI2LzeOP5v23giMOTm5vGQefhMjHU0mUyCEtwbDQ0mORiYc4GKBZ3u077SEx6spBXTFny5UM1tgN7ZO4-zed-LBgtkeDLSrcylj0Vk6nFn7RKGJzrYeXP6qIGT4UhgDLrG5SW-YUqmogXJLYg7ttAePlz520rqwULZrzUS-YfQ_KLcfOFuGt5sXv5KRqJlzujmngeicQLulBLhlvtPpEiBsnLUul_By4I2HKcF5l_9ZAUdlJD1GZ6oKbVAmJ6pQK1M-tLql8lFViZZCKCz8GOXlk1Z8vq1CgMp_BuZQr76Vky71YYvROw4vmrz-A_aXObMANFuKzL3HmcwHKpcz9mufDn-E89WPBw7nOPvW7Tum9HPXAmTHwUmRzGvy-h3rs8Gv9yA_UL70u6fco75vcX6QHQ_zbqB3RYa9PwuSSOUM56MkJpWZHVomwa08CgcvsJXhKwORlAkzEgaaog2LKFOsgJt9PqyHbfHU8EXBonDuhj6KnPtsKMKuO_mXI0QiJ1nyrkYeyx38Lb2lfLua1WZDfEC66KZIrCnZ1awzgdpDVzVpzTU9F1k2C53Do_LzAl36tkAmGxlGtYRzVtUDPVbRax_0JL0LXyw8uavzDWvAhxVpmWnhzYU5i6W8Lj-gA20XB_b0A14TZCAHA6y_W0vRQavN3M9ZOvWlb-meivRYcvLSLq-MD2sU5vP3I2ONfucnsPD4Phs64Fhb3X7jdBsAqouCSnfPz9S1fOQ6tZVRhESDOPFPFDUNbNQcPegBca683ldlfGEfD-nj90CsYGq4HSaQsR9CjHI5MVmviXF9y0QkITryfXzohqv5q80ThaP_dTw9WZI7dH3Cs7yHnM3QkWEbLlp2f0sUCjYaSl42NdKN-_PvcIswwqmGL-tA1_EwnqCAFP5cHddgeCAp5ehMuGugBZsNrwrisG6a_SVjHPZeA2RFM15PMvJxstBBlf0DBAc1-pJ3gVlIyLyz8nVsM4KQgPwAQzmYi0amrFbmQix3sx_2-F1STeNSl7NldNGj4ahn9V8XFMga7-BUaSNIX8tbpZd2E7tzV6x8Dk7S8UcuNlbWztIuV0CAsLKxrAAP6ueaD3AKkU9kfUS2iKq-H__Kj-1F8pzk3yDYOifjWaubrkAIVRzR8cnK8-EI41Sm1QSYrOryEYQ9eWEDEth9l5tpAb3OeUDOUrSqK36Q5cQvtslA6SLCB7ZsKRqOXnKSuuNHZPAmLlMIItiHNQEjXp2bwn1W-1D-wYgInh7XGDdidtmcGNk94haoRZW0BIEVB6ixfQwl9Bwcdok9QXMRD5v9nN2PMrc14RwFkkiMWspvZFZDN1hyc4YwdZFaxEZidf35RILDkXX3hLiL15aatI9eT1jMn-4j7NTDwPD9eV-02iNR2afwcK8WXZci6-iu3YoqPRQl6oiNj4MlRN-HS4Vs_zAl69EhmAK-k0HUDLyafZqYb-Uo9iBnHmpc7t7NSM80OEHmAmy5i0uZ_iEsosNFdT03FiDXiBKaN8e-WnRK2mVvmpGajcOFOpAv4_6bAzMJYz1SgSIlojNkXsNRJAzQmP5y0U2b-CARoJGsSaBku7OQh3l-WI9YKrptDhciGR54TiMLqFwbAUPqm4jY0ZtWbo0QtCq3yrEFfPtVHmCXlaYwXC6REsdwdmj47rzp8waAmc6-iwCgt8Zg3GdtUrTLyDNCe7Id7GRDcxKCWjH54mL_jTzlexAmSTPdOtwlz9SX2BDiLj71AopySjGs9VFzRMZR7hfn-wM3PIzT7aRFZd9snSXobJIQVi0zkm-TiuORItG18LGBvUAoF9CZpRWBl-aHV_yjNol7j_9jjLyCLpau8wPGbnwuqbOE0dTqXce8S6F0ljA1fMMdA40HVy57kOnU2INijcX_-eMUHyzbgvRqdwmezDf22ucYZuiCF4vCoE6UOsOthNK7_ueqqx25l8Tb5eda-Z5a3-NjdXk3Z6gJAbaRZkj7uIxS2uyDPg-b7GwmouUjU4Z85ICWHq-3UZMbYBy4Pfmsj5TykWH5ZuHLx6FVzFtLLkboUwdf1EJ-OuAXeDBCQr73hfI8clIyRO0P46aAaZ9D1IRyw9fyArd2v3-vEuaWCChBla8j1v71UnZJ6s5JDQh5xE-duHpFMAoboynbRyICVS7cm5-8lqoRhQ4JquGBraLMt2U3mdW0w1CfGLqZb7tObf-ZA3gjuSG-r89htZtBc2564xcPnl_B4cD3mq_t94aeKDp5a7lVtlW9kCcDXEAlBNJtjakgjdOhUqP2Xg6LZFKtdZUDnmGH6QNguRfDZesE95nO4PZHDMyJdQvFR_m44pQInrOMmi80XUaN5LVRrM9I7eyk7qN0zf9R6I2Jg== + id: rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7 + summary: + - text: |- + **Providing street crossing advice** + + I need to answer the question, "How do I cross the street?" Safety is the priority here! I’ll outline practical steps like using crosswalks and signals, looking both ways, and stopping at the curb. It’s wise to consider the user’s location, as traffic direction varies by country. Universal advice can include checking for vehicles turning and being aware of bikes. Also, at night, visibility is crucial. If there’s a pedestrian bridge or tunnel, that’s the way to go! + type: summary_text + - text: |- + **Addressing street crossing complexities** + + I want to consider the environmental context when crossing the street: multi-lane roads, parked cars, buses, and hidden driveways. It’s important to cross straight, not diagonally unless permitted, and be cautious of slippery surfaces. If I'm with children, I should hold their hand. For those with mobility concerns, pressing the button for more time can help. For visually impaired people, accessible crossings with audible cues are key. I'll provide concise bullet points, including tips for both urban and rural roads, and remind everyone to obey local traffic laws. + type: summary_text + - text: |- + **Considering edge cases for crossing** + + I should consider edge cases like one-way streets and multiple-phase signals with protected turn arrows. It's crucial to cross only when there’s a walk sign and to ensure that turning vehicles yield. For roundabouts, I'll recommend crossing at designated crosswalks one leg at a time. I want to address both signalized and unsignalized crossing steps. If the user feels unsafe, they should choose a different crossing point and wait longer. I'll keep things concise with bullet points for clarity. + type: summary_text + - text: "**Creating crossing guidelines**\n\nLet’s establish some clear steps for crossing safely. \n\n- Begin by + choosing the safest place, such as a marked crosswalk, intersection, or pedestrian signal. Bridges or tunnels + are great options too.\n\n- At signalized crosswalks, press the button if available and wait for the WALK signal. + Avoid starting to cross on a flashing DON'T WALK or steady light. Before stepping off the curb, stop at the edge, + look for turning vehicles and bicycles from both directions, and make eye contact with drivers. Keep scanning + while crossing—cross straight, avoid distractions like phones and headphones. \n\n- For unsignalized crossings, + stop at the curb and look left-right-left, or check both directions based on which side traffic comes from." + type: summary_text + - text: "**Crafting safe crossing steps**\n\nLet’s create some concise steps for crossing the street safely:\n\n- + Always use marked crosswalks or intersections, and press the button if available.\n\n- At signalized crossings, + wait for the WALK signal. Before stepping out, look both ways for turning cars and bikes, making eye contact with + drivers.\n\n- If the signal starts flashing DON'T WALK while you're crossing, keep going to the far curb.\n\n- + At unsignalized spots, stop at the curb where you're visible. Look and listen for traffic and bikes, waiting for + a large enough gap to cross safely. If there’s a median, treat it as two separate crossings, ensuring all lanes + have stopped before proceeding.\n\n- General tips include putting your phone away, removing earbuds, being extra + visible at night, and avoiding crossing from behind parked cars. Also, remember to follow local laws! \n\nFor + a simplified version, I can suggest a catchy mnemonic: \"Stop, Look, Listen, Think\" to make it even easier to + remember!" + type: summary_text + - text: "**Crafting safe crossing instructions**\n\nI’m thinking about how to summarize crossing the street safely. + Here’s a short version: \"Use a marked crosswalk with a signal, wait for the 'Walk' signal, look for cars and + bikes, make eye contact, and cross straight while scanning.\"\n\nFor the details, I suggest: Stop at the curb, + look and listen for traffic from all directions, and wait for a safe gap or the Walk signal. Make eye contact + with drivers and continue to scan while crossing. \n\nI'll also ask: \"Is there a signalized crosswalk where you + are, or is it an unsignalized street?\" This keeps it simple and relevant!" + type: summary_text + type: reasoning + - content: + - annotations: [] + logprobs: [] + text: "Short version: Stop at the curb, look and listen for traffic from all directions, wait for a safe gap or + the WALK signal, make eye contact with drivers, then cross straight while continuing to scan.\n\nIf there’s a + pedestrian signal:\n- Press the button if there is one. Wait for the WALK symbol.\n- Before stepping out, look + left, right, and for turning cars and bikes in all directions (including from behind you).\n- Make eye contact + with drivers. Keep scanning as you cross; don’t use your phone.\n- If the signal starts flashing “Don’t Walk” + after you’ve started, keep going to the far curb.\n\nIf there’s no signal:\n- Cross at a marked crosswalk or intersection + if possible. Avoid crossing between parked cars.\n- Stand where drivers can see you. Look and listen for traffic + in every lane and for bikes/scooters.\n- Wait for a big enough gap so you can cross without rushing. If one driver + stops, make sure all lanes have stopped before you go.\n- If there’s a median, treat it as two separate crossings.\n\nExtra + tips:\n- Be visible at night (light clothing/reflective, small light). \n- Keep earbuds out and phone away.\n- + Follow local laws; in left-driving countries, traffic comes first from the right.\n\nDo you have a signalized + crosswalk where you are, or is it an unsignalized street?" + type: output_text + id: msg_68c1fdbecbf081a18085a084257a9aef06da9901a3d98ab7 + role: assistant + status: completed + type: message + parallel_tool_calls: true + previous_response_id: null + prompt_cache_key: null + reasoning: + effort: high + summary: detailed + safety_identifier: null + service_tier: default + status: completed + store: true + temperature: 1.0 + text: + format: + type: text + verbosity: medium + tool_choice: auto + tools: [] + top_logprobs: 0 + top_p: 1.0 + truncation: disabled + usage: + input_tokens: 23 + input_tokens_details: + cached_tokens: 0 + output_tokens: 2211 + output_tokens_details: + reasoning_tokens: 1920 + total_tokens: 2234 + user: null + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '6159' + content-type: + - application/json + host: + - api.anthropic.com + method: POST + parsed_body: + max_tokens: 4096 + messages: + - content: + - text: How do I cross the street? + type: text + role: user + - content: + - text: |- + + **Providing street crossing advice** + + I need to answer the question, "How do I cross the street?" Safety is the priority here! I’ll outline practical steps like using crosswalks and signals, looking both ways, and stopping at the curb. It’s wise to consider the user’s location, as traffic direction varies by country. Universal advice can include checking for vehicles turning and being aware of bikes. Also, at night, visibility is crucial. If there’s a pedestrian bridge or tunnel, that’s the way to go! + + type: text + - text: |- + + **Addressing street crossing complexities** + + I want to consider the environmental context when crossing the street: multi-lane roads, parked cars, buses, and hidden driveways. It’s important to cross straight, not diagonally unless permitted, and be cautious of slippery surfaces. If I'm with children, I should hold their hand. For those with mobility concerns, pressing the button for more time can help. For visually impaired people, accessible crossings with audible cues are key. I'll provide concise bullet points, including tips for both urban and rural roads, and remind everyone to obey local traffic laws. + + type: text + - text: |- + + **Considering edge cases for crossing** + + I should consider edge cases like one-way streets and multiple-phase signals with protected turn arrows. It's crucial to cross only when there’s a walk sign and to ensure that turning vehicles yield. For roundabouts, I'll recommend crossing at designated crosswalks one leg at a time. I want to address both signalized and unsignalized crossing steps. If the user feels unsafe, they should choose a different crossing point and wait longer. I'll keep things concise with bullet points for clarity. + + type: text + - text: "\n**Creating crossing guidelines**\n\nLet’s establish some clear steps for crossing safely. \n\n- + Begin by choosing the safest place, such as a marked crosswalk, intersection, or pedestrian signal. Bridges or + tunnels are great options too.\n\n- At signalized crosswalks, press the button if available and wait for the WALK + signal. Avoid starting to cross on a flashing DON'T WALK or steady light. Before stepping off the curb, stop at + the edge, look for turning vehicles and bicycles from both directions, and make eye contact with drivers. Keep + scanning while crossing—cross straight, avoid distractions like phones and headphones. \n\n- For unsignalized + crossings, stop at the curb and look left-right-left, or check both directions based on which side traffic comes + from.\n" + type: text + - text: "\n**Crafting safe crossing steps**\n\nLet’s create some concise steps for crossing the street safely:\n\n- + Always use marked crosswalks or intersections, and press the button if available.\n\n- At signalized crossings, + wait for the WALK signal. Before stepping out, look both ways for turning cars and bikes, making eye contact with + drivers.\n\n- If the signal starts flashing DON'T WALK while you're crossing, keep going to the far curb.\n\n- + At unsignalized spots, stop at the curb where you're visible. Look and listen for traffic and bikes, waiting for + a large enough gap to cross safely. If there’s a median, treat it as two separate crossings, ensuring all lanes + have stopped before proceeding.\n\n- General tips include putting your phone away, removing earbuds, being extra + visible at night, and avoiding crossing from behind parked cars. Also, remember to follow local laws! \n\nFor + a simplified version, I can suggest a catchy mnemonic: \"Stop, Look, Listen, Think\" to make it even easier to + remember!\n" + type: text + - text: "\n**Crafting safe crossing instructions**\n\nI’m thinking about how to summarize crossing the street + safely. Here’s a short version: \"Use a marked crosswalk with a signal, wait for the 'Walk' signal, look for cars + and bikes, make eye contact, and cross straight while scanning.\"\n\nFor the details, I suggest: Stop at the curb, + look and listen for traffic from all directions, and wait for a safe gap or the Walk signal. Make eye contact + with drivers and continue to scan while crossing. \n\nI'll also ask: \"Is there a signalized crosswalk where you + are, or is it an unsignalized street?\" This keeps it simple and relevant!\n" + type: text + - text: "Short version: Stop at the curb, look and listen for traffic from all directions, wait for a safe gap or + the WALK signal, make eye contact with drivers, then cross straight while continuing to scan.\n\nIf there’s a + pedestrian signal:\n- Press the button if there is one. Wait for the WALK symbol.\n- Before stepping out, look + left, right, and for turning cars and bikes in all directions (including from behind you).\n- Make eye contact + with drivers. Keep scanning as you cross; don’t use your phone.\n- If the signal starts flashing “Don’t Walk” + after you’ve started, keep going to the far curb.\n\nIf there’s no signal:\n- Cross at a marked crosswalk or intersection + if possible. Avoid crossing between parked cars.\n- Stand where drivers can see you. Look and listen for traffic + in every lane and for bikes/scooters.\n- Wait for a big enough gap so you can cross without rushing. If one driver + stops, make sure all lanes have stopped before you go.\n- If there’s a median, treat it as two separate crossings.\n\nExtra + tips:\n- Be visible at night (light clothing/reflective, small light). \n- Keep earbuds out and phone away.\n- + Follow local laws; in left-driving countries, traffic comes first from the right.\n\nDo you have a signalized + crosswalk where you are, or is it an unsignalized street?" + type: text + role: assistant + - content: + - text: Considering the way to cross the street, analogously, how do I cross the river? + type: text + role: user + model: claude-sonnet-4-0 + stream: false + system: You are a helpful assistant. + thinking: + budget_tokens: 1024 + type: enabled + uri: https://api.anthropic.com/v1/messages?beta=true + response: + headers: + connection: + - keep-alive + content-length: + - '4209' + content-type: + - application/json + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + content: + - signature: ErcHCkYIBxgCKkBZJZKmgqTGMrerntNOcgoakLxACdlqZhs9ARPkSHfxpKy8WFQJGmTqM8F5gcZ4poD5uHULbNVyCKQ5iyQToITuEgyMSMFkX8rWNC+QsFQaDKf0KnH66FeMiSl4ZyIwxyuh2BSP4OfaA90p4t4Wd5H1BzuugU8JlLRnlDyMKkTzlGBOpROR0YfLgVGRJ5nXKp4GFVoHGIvHEivxrnLmvJVesc2Py+d2YSMEgCyegtAyeXaLCH9bhpqe+Nj+CQjBP1EObqinccTYysoHJPZ2iPWr2EnoV9sXqWL7FoAC48ehLXqUiS9uthPu8jqEETsay9CacSdZEQAd7QQQ22ors4bcGCmaxydaWoVYXG+NiOEILtclRpyM8amsfZb17tGvsY50tkK62uYylAvw7sIZqq74kKgMTcdps0kPmPILtvEekVlNsnJgy6HEvF4XKDMno3qcvLuemOF+tdaVx0f2Xz2NE6w/R6PRwk/eW5Gt9u5wtB0E7p2axGptfZwIErF+JhvnhYj5ILIlzg2P+6v3zpdn0dbkQPJJbUGqTSScm6AS0hFV0EqFzSf+GmPuKHGO6lWPAHUORzZMud5VdDMkPAPuStwwL3+cJPUHGAuYGciClLrFX7gtHCbVTXUXScPfNpPosWSm5/Zcxyz6UpAZRxqeIFmNZ2bJFLKHt7yJRCbD1KyPPridIXb4h7ArvKheM35tpJUQndedmys8Ekwgwtz1OYxDAuv/1gtFuR7PoF/xOR0wyJOkEFENi1dxjHSzNhMgWxJm1nh2mrbVdNge1jpNhQpYdeKZNx4Le4CROJTam3spHcNL8HTr5uV0T8UxbfJjsKEDj4uk4z9tSQIA0ASlMiIvnCXewbLZkSMB8E6ivZdaY5boHBV3q2lJnd9X96avYnzF1rYRw2RYgLRvbE/bsqKFtVC21sUaW/KTnb7KDSkdUIdzjiRU/fgyms1/KAvlnsS09GOk7XzSZooplPAQSCZlRNhnIilCZF/kBHvnZlpN53a+eXAcsMD0HH1ajpwSTAZV5YGuRce2wD5MTrDNiX6eq0QAXFbq0cZv6b4banO7YTgQUIjcDH7ZTfBNSMmNgg9z2B683T4XootQK7/B7d/Lau7AsU24soCThSxfzR/O6knvkRyjVEDdqMATBG5938qQQ/98Z8+POR7SUPX5B4sV7abUwpl7LorpwXur2LcdJC6todfTw2AyDpbsQxb3z58LuwrSM6BzLGTODl+95w+Ja8b+czLcAkINUWgdGAE= + thinking: |- + The user is asking for an analogous approach to crossing a river, based on my street crossing advice. This is an interesting question that requires me to think about the similarities and differences between crossing streets and rivers. + + Key similarities: + - Safety assessment before crossing + - Looking for designated/safer crossing points + - Being aware of hazards (traffic vs. water conditions) + - Having a plan and being prepared + + Key differences: + - Rivers involve water hazards (drowning, currents, temperature) + - Different infrastructure (bridges, ferries, fords vs. crosswalks) + - Different skills needed (swimming vs. walking) + - Environmental factors (weather, water levels, seasons) + + I should structure this similarly to my street crossing advice but adapted for water crossings. + type: thinking + - text: |- + Great analogy! Here's how to "cross the river" safely, following similar principles: + + **Short version:** Look for established crossing points (bridges, ferries), assess water conditions, have a backup plan, and never cross alone in challenging conditions. + + **If there's infrastructure:** + - Use bridges, ferries, or designated boat crossings when available + - Check if services are running and safe (weather conditions, maintenance) + - Follow posted rules and weight limits + - Wait for proper signals/clearance before boarding ferries + + **If crossing naturally (ford, shallow areas):** + - Scout the crossing point first - look for established fords or naturally shallow, slow-moving areas + - Check water depth, current speed, and bottom conditions (rocks, mud, drop-offs) + - Test with a stick first; if it's deeper than your knees or the current is strong, don't attempt it + - Cross at an angle upstream to compensate for current + - Use a walking stick for balance and to probe ahead + + **Safety essentials:** + - Never cross alone in challenging conditions + - Wear appropriate gear (life jacket if deep water is possible) + - Have dry clothes waiting on the other side or in a waterproof bag + - Know your swimming ability and have an exit strategy + - Check weather - avoid crossing during floods, storms, or when water levels are high + - Tell someone your crossing plan and expected return time + + **When NOT to cross:** + - Fast-moving or flood-stage water + - Unknown depth or underwater obstacles + - Extreme weather conditions + - If you can't swim and water might be over your head + + Just like with streets - when in doubt, find a safer route or wait for better conditions! + type: text + id: msg_016e2w8nkCuArd5HFSfEwke7 + model: claude-sonnet-4-20250514 + role: assistant + stop_reason: end_turn + stop_sequence: null + type: message + usage: + cache_creation: + ephemeral_1h_input_tokens: 0 + ephemeral_5m_input_tokens: 0 + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 1343 + output_tokens: 538 + service_tier: standard + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml index 243b1a8fdf..967c3c36fb 100644 --- a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml @@ -5,7 +5,7 @@ interactions: headers: amz-sdk-invocation-id: - !!binary | - NWMyN2FhM2ItOTBmOC00NDc2LTkxNWUtYjg1NmFjODE4MTY4 + NzNhNzQ1MzMtNDRlMC00YmVjLTg1MmQtZGJjOTBmNjI1ODEx amz-sdk-request: - !!binary | YXR0ZW1wdD0x @@ -21,175 +21,178 @@ interactions: connection: - keep-alive content-length: - - '4296' + - '5415' content-type: - application/json parsed_body: metrics: - latencyMs: 24594 + latencyMs: 7829 output: message: content: - - text: "\n\nCrossing the street safely involves following key steps to ensure your safety. Here's a clear guide:\n\n### - **Steps to Cross Safely:**\n1. **Find a Safe Spot** \n - Use a **marked crosswalk** or pedestrian crossing - whenever possible. If unavailable, choose an intersection where drivers expect pedestrians.\n - Avoid crossing - between parked cars or mid-block, as drivers may not see you.\n\n2. **Check for Traffic Signals** \n - If - there's a traffic light or walk signal, wait for the \"walk\" symbol (or green light where pedestrian signals - aren't present). \n - **Don't start crossing on a flashing \"don't walk\"** or red light—finish crossing - if you've already started.\n\n3. **Look Both Ways** \n - **Left-Right-Left**: Look left, right, and left - again before stepping into the street. In countries with right-side driving, check for cars turning left. In - left-side driving countries (e.g., UK, Japan), check right first. \n - **Make eye contact** with drivers - to ensure they see you, even if you have the right of way.\n\n4. **Stay Alert While Crossing** \n - Keep - looking for traffic as you cross. Watch for turning vehicles, bikes, or scooters. \n - Walk at a steady pace—don't - run, but avoid lingering.\n\n5. **Use Medians if Available** \n - If the street has a median (center island), - treat it as a halfway point. Stop there and check traffic again before continuing.\n\n### **Additional Safety - Tips:**\n- **Avoid Distractions**: Put away phones, remove headphones, and stay focused. \n- **Visibility**: - At night, wear reflective clothing or carry a light. \n- **Children/Disabilities**: Hold children's hands. - Those with mobility aids should use designated crossings where possible. \n- **Right of Way**: Never assume - a driver will stop—wait for vehicles to halt before stepping into the road.\n\n### **Special Situations:**\n- - **Uncontrolled Crossings (no signals)**: Wait for a large gap in traffic. Cross perpendicular to the road (straight - line). \n- **Roundabouts**: Use crosswalks before entering the circle, and watch for multiple lanes of traffic. - \ \n- **Highways/Freeways**: Avoid crossing—seek an overpass or underpass instead.\n\nBy staying vigilant and - following these steps, you can cross the street safely! \U0001F6B8" + - text: "\n\nCrossing the street safely involves careful observation and following traffic rules. Here's a step-by-step + guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for + traffic lights, signs, or zebra stripes. \n - If no crosswalk is nearby, choose a well-lit area with a clear + view of traffic in both directions.\n\n2. **Check for Signals**: \n - Wait for the **\"Walk\" signal** (or + green light) at intersections. Press the pedestrian button if required. \n - Never cross on a **\"Don’t Walk\"** + or red light, even if traffic seems clear.\n\n3. **Look Both Ways**: \n - **Left → Right → Left again** (or + reverse in left-driving countries). Keep checking as you cross. \n - Watch for turning vehicles, bicycles, + and motorcycles, which may move quickly or silently.\n\n4. **Make Eye Contact**: \n - Ensure drivers see + you before stepping into the road. Don’t assume they’ll stop, even if you have the right of way.\n\n5. **Stay + Visible**: \n - Wear reflective clothing or use a flashlight at night. Avoid crossing between parked cars + or obstacles.\n\n6. **Avoid Distractions**: \n - Put away phones, remove headphones, and stay focused on + your surroundings.\n\n7. **Cross Carefully**: \n - Walk briskly (don’t run) in a straight line. Keep scanning + for traffic as you go. \n - If there’s a median, pause there if needed before completing the crossing.\n\n8. + **Special Situations**: \n - **Children**: Hold hands and supervise closely. \n - **Groups**: Cross together + to increase visibility. \n - **Assistive devices**: Use canes, wheelchairs, or walkers as needed, ensuring + drivers notice you.\n\n9. **Follow Local Laws**: \n - Avoid jaywalking (illegal in many areas). Use pedestrian + bridges or tunnels if available.\n\n**Remember**: Always prioritize safety over speed. Even if you have the + right of way, proceed cautiously. \U0001F6B6♂️\U0001F6A6" - reasoningContent: reasoningText: - text: "Okay, the user is asking how to cross the street. Let me think about the best way to explain this. - First, I need to make sure they understand the basic steps but also stay safe. Maybe start by finding a - safe place to cross. Like a crosswalk or pedestrian crossing. If there's a traffic light, they should wait - for the walk signal. But if there's no signal, they need to look both ways. Wait until there's no traffic - coming, right?\n\nWait, what if there's a crosswalk but no lights? They should still check for cars. Maybe - mention making eye contact with drivers to ensure they're seen. Also, don't forget to keep looking while - crossing, in case a car appears suddenly. What about intersections without marked crosswalks? They should - still cross there rather than mid-block because drivers expect pedestrians at intersections. \n\nOh, and - distractions like phones or headphones. They should avoid those to stay alert. Teach them to walk, not run, - but keep a steady pace. If there's a median, maybe use it as a halfway point. Also, in some countries, traffic - drives on the left, so check the correct direction when looking. \n\nWhat about children or people with - disabilities? Maybe add something about holding hands with kids or using assistive devices. And if it's - dark, wearing reflective clothing could help. Are there any other safety tips? Maybe don't assume drivers - will stop, even if you have the right of way. Always double-check. \n\nLet me structure this step by step. - Start with finding a safe spot, check signals, look both ways, stay visible, keep monitoring traffic, and - avoid distractions. Maybe number the steps for clarity. Also, include additional tips for different scenarios. - Okay, that should cover the essentials without being too complicated.\n" + text: "Okay, so the user is asking how to cross the street. Let me think about the best way to explain this. + First, I need to make sure I cover all the basic steps but also consider different scenarios. Let me start + by breaking down the process step by step.\n\nFirst, they need to find a safe place to cross. That usually + means a crosswalk or a pedestrian crossing. If there's a traffic light, that's even better. But maybe they're + in an area without those, so they should look for the most visible spot with a good view of traffic. I should + mention looking both ways, even if it's a one-way street, just in case. \n\nWait, in some countries, traffic + drives on the left, so the direction you look first might matter. But maybe I should keep it general. Always + look left, right, and left again. Or maybe just say check both directions multiple times. Also, making eye + contact with drivers is important because sometimes drivers might not stop even if they're supposed to. + \n\nThen, waiting for the walk signal if there's a traffic light. But sometimes the signals can be confusing. + For instance, some places have countdown timers, others don't. Also, in some places, turning vehicles might + have a green light while pedestrians have the walk signal, so you have to watch out for turning cars. \n\nIf + there's no crosswalk, they should be extra cautious. Maybe mention finding a well-lit area if it's dark. + Oh, and using reflective clothing or a flashlight at night. Distractions like phones or headphones are a + big no-no. I should emphasize staying focused. \n\nWalking straight across, not diagonally, unless it's + a designated diagonal crossing. Keep looking while crossing because sometimes cars might come out of nowhere. + Also, don't run, but walk briskly. If there's a median, they can stop there if needed. \n\nWhat about children + or people with disabilities? Maybe mention holding hands with kids and using assistive devices. Also, in + some countries, pedestrians have the right of way, but not everywhere. So it's good to be cautious regardless. + \n\nLet me check if I missed anything. Oh, maybe jaywalking laws. In some places, crossing outside a crosswalk + is illegal. So advising to follow local traffic laws. Also, using pedestrian bridges or tunnels if available. + \n\nWait, the user might be a kid, so using simple language is important. But the answer should still be + thorough. Let me structure it step by step, starting with finding a safe spot, checking for signals, looking + both ways, making eye contact, staying visible, avoiding distractions, walking safely, and being aware of + surroundings. \n\nI should also mention that if a crossing is controlled by a button, they need to press + it and wait. Maybe add something about checking for bicycles or motorcycles, which can be quieter and faster. + \n\nHmm, maybe include a note about not assuming vehicles will stop, even if you have the right of way. + Safety first. Also, groups should cross together to be more visible. \n\nI think that's comprehensive. Let + me put it all together in a clear, step-by-step manner without being too technical. Make sure each step + is concise and easy to follow. Avoid jargon. Use bullet points or numbers for clarity. Yeah, that should + cover it.\n" role: assistant stopReason: end_turn usage: inputTokens: 12 - outputTokens: 882 - totalTokens: 894 + outputTokens: 1133 + totalTokens: 1145 status: code: 200 message: OK - request: body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}, {"role": "assistant", "content": - [{"text": "\n\nCrossing the street safely involves following key steps to ensure your safety. Here''s a clear guide:\n\n### - **Steps to Cross Safely:**\n1. **Find a Safe Spot** \n - Use a **marked crosswalk** or pedestrian crossing whenever - possible. If unavailable, choose an intersection where drivers expect pedestrians.\n - Avoid crossing between parked - cars or mid-block, as drivers may not see you.\n\n2. **Check for Traffic Signals** \n - If there\u2019s a traffic - light or walk signal, wait for the \"walk\" symbol (or green light where pedestrian signals aren\u2019t present). \n - - **Don\u2019t start crossing on a flashing \"don\u2019t walk\"** or red light\u2014finish crossing if you\u2019ve already - started.\n\n3. **Look Both Ways** \n - **Left-Right-Left**: Look left, right, and left again before stepping into - the street. In countries with right-side driving, check for cars turning left. In left-side driving countries (e.g., - UK, Japan), check right first. \n - **Make eye contact** with drivers to ensure they see you, even if you have the - right of way.\n\n4. **Stay Alert While Crossing** \n - Keep looking for traffic as you cross. Watch for turning vehicles, - bikes, or scooters. \n - Walk at a steady pace\u2014don\u2019t run, but avoid lingering.\n\n5. **Use Medians if Available** \n - - If the street has a median (center island), treat it as a halfway point. Stop there and check traffic again before continuing.\n\n### - **Additional Safety Tips:**\n- **Avoid Distractions**: Put away phones, remove headphones, and stay focused. \n- **Visibility**: - At night, wear reflective clothing or carry a light. \n- **Children/Disabilities**: Hold children\u2019s hands. Those - with mobility aids should use designated crossings where possible. \n- **Right of Way**: Never assume a driver will - stop\u2014wait for vehicles to halt before stepping into the road.\n\n### **Special Situations:**\n- **Uncontrolled - Crossings (no signals)**: Wait for a large gap in traffic. Cross perpendicular to the road (straight line). \n- **Roundabouts**: - Use crosswalks before entering the circle, and watch for multiple lanes of traffic. \n- **Highways/Freeways**: Avoid - crossing\u2014seek an overpass or underpass instead.\n\nBy staying vigilant and following these steps, you can cross - the street safely! \ud83d\udeb8"}]}, {"role": "user", "content": [{"text": "Considering the way to cross the street, - analogously, how do I cross the river?"}]}], "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": - {"type": "enabled", "budget_tokens": 1024}}}' + [{"text": "\n\nCrossing the street safely involves careful observation and following traffic rules. Here''s a step-by-step + guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for traffic + lights, signs, or zebra stripes. \n - If no crosswalk is nearby, choose a well-lit area with a clear view of traffic + in both directions.\n\n2. **Check for Signals**: \n - Wait for the **\"Walk\" signal** (or green light) at intersections. + Press the pedestrian button if required. \n - Never cross on a **\"Don\u2019t Walk\"** or red light, even if traffic + seems clear.\n\n3. **Look Both Ways**: \n - **Left \u2192 Right \u2192 Left again** (or reverse in left-driving countries). + Keep checking as you cross. \n - Watch for turning vehicles, bicycles, and motorcycles, which may move quickly or + silently.\n\n4. **Make Eye Contact**: \n - Ensure drivers see you before stepping into the road. Don\u2019t assume + they\u2019ll stop, even if you have the right of way.\n\n5. **Stay Visible**: \n - Wear reflective clothing or use + a flashlight at night. Avoid crossing between parked cars or obstacles.\n\n6. **Avoid Distractions**: \n - Put away + phones, remove headphones, and stay focused on your surroundings.\n\n7. **Cross Carefully**: \n - Walk briskly (don\u2019t + run) in a straight line. Keep scanning for traffic as you go. \n - If there\u2019s a median, pause there if needed + before completing the crossing.\n\n8. **Special Situations**: \n - **Children**: Hold hands and supervise closely. \n - + **Groups**: Cross together to increase visibility. \n - **Assistive devices**: Use canes, wheelchairs, or walkers + as needed, ensuring drivers notice you.\n\n9. **Follow Local Laws**: \n - Avoid jaywalking (illegal in many areas). + Use pedestrian bridges or tunnels if available.\n\n**Remember**: Always prioritize safety over speed. Even if you have + the right of way, proceed cautiously. \ud83d\udeb6\u2642\ufe0f\ud83d\udea6"}, {"text": "\nOkay, so the user + is asking how to cross the street. Let me think about the best way to explain this. First, I need to make sure I cover + all the basic steps but also consider different scenarios. Let me start by breaking down the process step by step.\n\nFirst, + they need to find a safe place to cross. That usually means a crosswalk or a pedestrian crossing. If there''s a traffic + light, that''s even better. But maybe they''re in an area without those, so they should look for the most visible spot + with a good view of traffic. I should mention looking both ways, even if it''s a one-way street, just in case. \n\nWait, + in some countries, traffic drives on the left, so the direction you look first might matter. But maybe I should keep + it general. Always look left, right, and left again. Or maybe just say check both directions multiple times. Also, making + eye contact with drivers is important because sometimes drivers might not stop even if they''re supposed to. \n\nThen, + waiting for the walk signal if there''s a traffic light. But sometimes the signals can be confusing. For instance, some + places have countdown timers, others don''t. Also, in some places, turning vehicles might have a green light while pedestrians + have the walk signal, so you have to watch out for turning cars. \n\nIf there''s no crosswalk, they should be extra + cautious. Maybe mention finding a well-lit area if it''s dark. Oh, and using reflective clothing or a flashlight at + night. Distractions like phones or headphones are a big no-no. I should emphasize staying focused. \n\nWalking straight + across, not diagonally, unless it''s a designated diagonal crossing. Keep looking while crossing because sometimes cars + might come out of nowhere. Also, don''t run, but walk briskly. If there''s a median, they can stop there if needed. + \n\nWhat about children or people with disabilities? Maybe mention holding hands with kids and using assistive devices. + Also, in some countries, pedestrians have the right of way, but not everywhere. So it''s good to be cautious regardless. + \n\nLet me check if I missed anything. Oh, maybe jaywalking laws. In some places, crossing outside a crosswalk is illegal. + So advising to follow local traffic laws. Also, using pedestrian bridges or tunnels if available. \n\nWait, the user + might be a kid, so using simple language is important. But the answer should still be thorough. Let me structure it + step by step, starting with finding a safe spot, checking for signals, looking both ways, making eye contact, staying + visible, avoiding distractions, walking safely, and being aware of surroundings. \n\nI should also mention that if a + crossing is controlled by a button, they need to press it and wait. Maybe add something about checking for bicycles + or motorcycles, which can be quieter and faster. \n\nHmm, maybe include a note about not assuming vehicles will stop, + even if you have the right of way. Safety first. Also, groups should cross together to be more visible. \n\nI think + that''s comprehensive. Let me put it all together in a clear, step-by-step manner without being too technical. Make + sure each step is concise and easy to follow. Avoid jargon. Use bullet points or numbers for clarity. Yeah, that should + cover it.\n\n"}]}, {"role": "user", "content": [{"text": "Considering the way to cross the street, analogously, + how do I cross the river?"}]}], "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": + "enabled", "budget_tokens": 1024}}}' headers: amz-sdk-invocation-id: - !!binary | - ODFkYmUyODUtN2EzMy00NjE2LTk3NWQtMDU3YjI5MjA0ZmNh + NjYzZDBjZjItYTRmMy00MWI1LTg4YjEtOTc2MGE0M2Q2NjI0 amz-sdk-request: - !!binary | YXR0ZW1wdD0x content-length: - - '2720' + - '5646' content-type: - !!binary | YXBwbGljYXRpb24vanNvbg== method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-20250514-v1%3A0/converse response: headers: connection: - keep-alive content-length: - - '3598' + - '4071' content-type: - application/json parsed_body: metrics: - latencyMs: 16324 + latencyMs: 16082 output: message: content: - reasoningContent: reasoningText: - signature: ErcBCkgIAhABGAIiQMuiyDObz/Z/ryneAVaQDk4iH6JqSNKJmJTwpQ1RqPz07UFTEffhkJW76u0WVKZaYykZAHmZl/IbQOPDLGU0nhQSDDuHLg82YIApYmWyfhoMe8vxT1/WGTJwyCeOIjC5OfF0+c6JOAvXvv9ElFXHo3yS3am1V0KpTiFj4YCy/bqfxv1wFGBw0KOMsTgq7ugqHeuOpzNM91a/RgtYHUdrcAKm9iCRu24jIOCjr5+h + signature: Eo0GCkgIBxABGAIqQCUgV8lFdgubUqxI/3s9+KDfA2rtOBKfcEyeMjdPTOrbb9XkcLP1IMKO+RSRzkfROcZMXhWCom8VvSG/yF6NhToSDNRPwapPz+9ND3e7UBoMg7ntVYeZvJvYI5s0IjAEAw70lQZ1U21O1uJ5E0d+sQ17fmy+aIR2Pssnp6ZmyjrWYJB0+HUd854YQShOU48q8gR3JUcmKKQ+pLsEytGvspVN0F3pLfArANIWh+bp7N1I7h7mvnwqXzMUAphYgj2egdWQ0h944FRT/5sVXQFQ+mKAP4pSBtwUYVNddLj2OkoTZBPxPd1+/z40qkGhRDjmFFs1dMnFp+aYmLGb69GR56WWk2wGbnkfPlA8Y2yV4N0uYySh5LPK5zMLOcZdkPQuXW6SkQ8JPvStQpxKA85mfmPai6h61h251Y2YJYoTBUvNBjOsltzFrrXYF2eb8SMIMiO/2UdFjycCojBJqiNVpwUlvDMVeIPeJoBxp9vaskhoaZwArwRW3oFh82G2s9y4PwRFJRyzTyAfMyid7aSg2bJdywaqKXW2kCSKv+5VdsB+7jW2nQKxiY91fZ+xKSlDhV0++z50K2eJe0WuFtUXu8MEfNd1ZmEXg3D1+c3dcPT6sLqfZlp+um5IaodJNxyWbuxviRjtgb4x5zLRjxHds9mCmnTtEsSzjQQEMppq3roWPzY9kiPNKbaZnujYDKmPAuKwplcsmsq5RRhag5zaQQFdhTX8AWRKNzSieoT4H++5joj7buZAz9hNyJ20p5UiHXDpWBnS7nP+x8Yuc68QHHMpSCztbFdjY/1D1+68Ml+ikxaJ/LBzXoo8Ixzz2SamaPGgcuOTKMMXXq2+XKDTOmktv3KNwV188gaEyMI5AzQYMIJThbRsYpew/hBnTT87Fhe9v9JTKF8Mn3+e7Z9ckU9yHLaqlfDDcA24wNqe3smTgpKHKuD/oShRdGH/Y8kaObGRvfW7UWTmZI15+jhNJTWLgaDmYQAjowt1uQl7Kk2QWkU+Iwv0pszrsgHfsVrcpsdwoBgB text: |- - This is an interesting analogy! The person is asking me to use the street-crossing principles I just outlined and apply them to crossing a river. I'll create an analogous guide for river crossing, keeping the same safety-focused structure but adapting it to the water environment. + The user is asking about crossing a river, using the street-crossing analogy. This is an interesting question because crossing a river involves different considerations than crossing a street - it's about water safety, different methods of crossing, and various hazards. Let me think through this systematically, drawing parallels to street crossing where appropriate but focusing on the unique aspects of river crossing. - I should include: - 1. Finding safe crossing spots (like bridges, ferries, or shallow fords) - 2. Checking conditions (water level, current speed, weather) - 3. Looking for hazards (similar to looking both ways) - 4. Crossing techniques - 5. Staying alert during crossing - 6. Special situations - - I'll make sure to emphasize safety throughout, just as I did with street crossing. - - text: |- - # How to Cross a River Safely - - Just as with street crossing, river crossing requires careful assessment and proper technique. Here's how to approach it safely: - - ### **Steps to Cross a River:** - - 1. **Find a Safe Crossing Point** - - Use **established bridges** or **ferry services** whenever possible - - If you must ford the river, look for wide, shallow sections with slower current - - Avoid narrow, deep sections where water moves quickly - - 2. **Assess River Conditions** - - **Check water levels and flow rate** before attempting to cross - - Look for debris or floating hazards (like logs) coming downstream - - Consider recent weather—rain upstream can cause sudden changes in water level - - 3. **Evaluate Before Entering** - - **Upstream-Downstream-Upstream**: Look for hazards upstream that might flow toward you, downstream for where you might drift if swept away, then upstream again - - **Test depth** with a walking stick before committing to cross - - 4. **Cross Safely** - - Face **upstream at an angle** (diagonal crossing) to avoid being knocked over - - Use a **walking stick or trekking pole** for a third point of contact - - Unbuckle backpack waist straps so you can shed gear quickly if you fall - - 5. **Stay Alert While Crossing** - - Move deliberately with careful foot placement - - Continue monitoring upstream for approaching hazards - - Maintain at least two points of contact with the riverbed at all times - - ### **Additional Safety Tips:** - - **Depth Check**: Water above knee-height becomes significantly more dangerous - - **Footwear**: Keep shoes on to protect feet from rocks and debris - - **Group Crossing**: Link arms in a line facing upstream for stability in moderate currents - - **Emergency Plan**: Know what to do if swept away (float on back, feet downstream) - - ### **Special Situations:** - - **Deep Rivers**: Seek proper water craft rather than swimming across - - **Winter Crossings**: Be extremely cautious with ice—thickness may vary - - **Flash Flood Areas**: If water is rising or muddy/turbulent, wait it out instead of crossing - - **Wildlife Concerns**: Check for crocodiles, hippos, or other dangerous animals in relevant regions - - Remember: When in doubt, don't cross! Unlike streets, rivers can change conditions rapidly and unpredictably. + Just like with street crossing, safety is paramount, but the risks and methods are quite different. Let me structure this similarly to my street crossing response but adapt it for rivers. + - text: "Great analogy! Crossing a river safely requires similar careful planning but with different considerations. + Here's how to approach it:\n\n## **1. Assess the Situation First**\n- **Find the safest crossing point**: Look + for bridges, ferries, or designated crossing areas first\n- **Evaluate the river**: Check depth, current speed, + width, and water clarity\n- **Check conditions**: Weather, time of day, and seasonal factors (flooding, ice, + etc.)\n\n## **2. Use Established Crossings When Possible**\n- **Bridges**: The safest option - just like using + crosswalks for streets\n- **Ferries or boats**: Official water transportation \n- **Fords**: Marked shallow + crossing points used by vehicles/pedestrians\n\n## **3. If You Must Wade Across**\n- **Choose your spot**: Look + for wide, shallow areas where water moves slowly\n- **Test the depth**: Use a stick or pole to check depth and + bottom conditions\n- **Face upstream**: Walk diagonally downstream while facing the current\n- **Move slowly**: + Take small, deliberate steps to maintain balance\n\n## **4. Safety Precautions**\n- **Never go alone**: Have + someone watch or accompany you\n- **Wear appropriate gear**: Non-slip shoes, life jacket if available\n- **Stay + visible**: Bright clothing, especially in low light\n- **Check for hazards**: Rocks, debris, strong currents, + wildlife\n\n## **5. Know Your Limits**\n- **Don't attempt if**: Water is above your knees, current is swift, + or conditions are poor\n- **Turn back**: If conditions worsen partway across\n- **Cold water**: Hypothermia + risk increases danger significantly\n\n## **6. Alternative Methods**\n- **Wait**: Sometimes the best choice + is to wait for better conditions or find another route\n- **Go around**: Follow the riverbank to find a better + crossing point\n- **Use tools**: Rope, walking stick, or flotation device if experienced\n\n**Key Difference**: + Unlike streets where you follow traffic rules, rivers follow natural laws - current, depth, and weather are + your \"traffic signals.\" When in doubt, don't risk it! \U0001F30A⚠️" role: assistant stopReason: end_turn usage: @@ -197,9 +200,9 @@ interactions: cacheReadInputTokens: 0 cacheWriteInputTokenCount: 0 cacheWriteInputTokens: 0 - inputTokens: 636 - outputTokens: 690 - totalTokens: 1326 + inputTokens: 1320 + outputTokens: 609 + totalTokens: 1929 status: code: 200 message: OK diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml new file mode 100644 index 0000000000..8f87aae55c --- /dev/null +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml @@ -0,0 +1,300 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '249' + content-type: + - application/json + host: + - api.openai.com + method: POST + parsed_body: + include: + - reasoning.encrypted_content + input: + - content: You are a helpful assistant. + role: system + - content: How do I cross the street? + role: user + model: gpt-5 + reasoning: + effort: high + summary: detailed + stream: false + uri: https://api.openai.com/v1/responses + response: + headers: + alt-svc: + - h3=":443"; ma=86400 + connection: + - keep-alive + content-length: + - '18769' + content-type: + - application/json + openai-organization: + - pydantic-28gund + openai-processing-ms: + - '41765' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + background: false + created_at: 1757544417 + error: null + id: resp_68c1ffe0f9a48191894c46b63c1a4f440003919771fccd27 + incomplete_details: null + instructions: null + max_output_tokens: null + max_tool_calls: null + metadata: {} + model: gpt-5-2025-08-07 + object: response + output: + - encrypted_content: gAAAAABowgAKxFTo-oXVZ9WpxX1o2XmQkqXqGTeqSbHjr1hsNXhe0QDBXDnKBMrBVbYympkJVMbAIsYJuZ8P3-DmXZVwYJR_F1cfpCbt97TxVSbG7WIbUp-H1vYpN3oA2-hlP-G76YzOGJzHQy1bWWluUC4GsPP194NpVANRnTUBQakfwhOgk9WE2Op7SyzfdHxYV5vpRPcrXRMrLZYZFUXM6D6ROZljjaZKNj9KaluIOdiTZydQnKVyZs0ffjIpNe6Cn9jJNAUH-cxKfOJ3fmUVN213tTr-PveUkAdlYwCRdtq_IlrFrr1gp6hiMgtdQXxSdtjPuoMfQEZTsI-FiAGFipYDrN5Gu_YXlqX1Lmzbb2famCXTYp6bWljYT14pCSMA-OZrJWsgj4tSahyZIgNq_E_cvHnQ-iJo1ACH0Jt22soOFBhAhSG8rLOG8O5ZkmF7sGUr1MbP56LLkz29NPgh98Zsyxp4tM33QH5XPrMC7MOfTvzj8TyhRH31CWHScQl3AJq1o3z2K3qgl6spkmWIwWLjbo4DBzFz6-wRPBm5Fv60hct1oFuYjXL-ntOBASLOAES7U3Cvb56VPex7JdmTyzb-XP7jNhYzWK-69HgGZaMhOJJmLGZhu8Xp9P6GPnXiQpyL5LvcX_FEiR6CzpkhhS54IryQx2UW7VadUMnpvwEUwtT2c9xoh6WEwt2kTDj65DyzRwFdcms3WG_B1cSe5iwBN1JAQm3ay04dSG-a5JNVqFyaW7r1NcVts3HWC2c-S9Z_Xjse548XftM_aD97KTqoiR5GxU95geXvrWI8szDSYSueSGCTI8L7bCDO-iKE4RQEmyS8ZbqMSWyQgClVQOR5CF3jPKb6hP7ofoQlPRuMyMY8AqyWGeY9bbWb-LjrSDpRTAR6af8Ip5JYr4rlcG1YqEWYT-MqiCPw3ZJqBXUICSpz9ZHQNTrYIzkJZqPg-hCqvFkOCUtvOYSDtGkAe9x1ekPqlV0IuWLxAmjqbkGH0QCaYAF90wVQUgWPkVWfQ6ULRz2sveQDZf0P8rVZw6ATEvZVnkml6VDbaH69lMyvzls7suvEZJxS5osyjrGfkt6L4nsvhZS7Nuxj2TcRxSEXxo5kULEqAO85Ivsm4j7R1Cxb2h8I4ZZZ_-DnkbWsgd7DELMI-CYtpAWLFl4K4VaMBT6mNAuud545BemUlWnQgmrde4aS7Q_W5GP11iQea9_JcJr6DMf4Y40NDr_fPVU5p7q1bnc1xtwkIpyx0uEeXHEZDR8k-5apBXScJtmelzpiy-25oJdSU5xtgVPrb77kVyJofPtujplZoqMh6MOqTdIhIMm_Goy_Wne4W39hVI01b2vwduBaCCaX6M8uACX96s454WPitX4MYAVc65UHF0BTFskEcbY5bFZpzcWb39VTfra-Ru2URvdo_66qmUd-03XzLKiMsqJHGclhaU6XBqaIo9qD8FjLVT9DOx56eh3GFvYA1dxvgbp6gyOg7bOBL0KDarT9Vmo40vGvwyCT_a2S_6Oki6uBU_3bf-jGvtum4tkN--wZkBrhOj7L8onItPoAZQXjYXrcXfVC1KR_xA0IOxYZD59G1rBxTDlvatIFwhvoISinkU-zPkKMpralHlxDicmJrBsKsy-mZWCF5qHeWF36pjE35dE9GxR28xw1Ed0pA_kOIgMKSKCiRWUYY8D1jAHKzimnj_4VTKR05kTp30pasr0IUMl2celsQMDv1D2atEJ_65CeRio5cnNGUR_Z73LJ-fqLkSjSxlE2YvtcKX7bdF6bSq3EqDtOdLVUjYl_pxRaUNMRmahQUJXGsDx7X-W9xUgQmAq09qT3lh1fhVUgdtUuuaoNY_M1s5V0E5ePuu_C6Duuz8WCcecbhrcbI3FDQSJn_XHK6ImLMYBowGRYVkBE_Rf7q7Hj4zdF-3bVE_QDce3syZNshCYK5kO8mvADptgdNVG7lEiZ9TIQPBd-XWRUrZ3XvIfGVJFVMjh_Laq8RTDyvvId7iQDuvq89hQ86hlfWteEl8HzuwpakWnogg3CCStX5CMGpYUWWkOCUu2LCH2H4EBaeCcAPLCmEoxcpKS182kYLm8-4ShRz-YOMIEmE9TL2za15I6BCBi9OhQGcLSl4BquhfBVHyxmkEN7_g102yI1Ocucux8q_HLMo5UZz0KALRQy4qmNpnLg9f4Yetj6msezjuU17Ji1ofIcadglOYy2J3Aswf58M9fCwCfB6hAHRYM2XkYzJ3nc0VosWA0er90zqKOeM1-erWC-skbupO-8nw9DA5OtnJTZOLnhGRjzXqna0E5R69wOHi3yvb3zzv2K9fLMKi11bCM_cnel9ItcFM-AYQ0AhBTZ3sTn-tpIf3IVNCvnCxMWvbO-MBmoexQnPorA0SL6n_nL49Y9Zb7UgwCyNGmhsFjIlSXu-YG-yCV1lVXBYoEPDwa2eCaMwph0QneXPHHMUs_i9PuFVI-nwfEiwU0b4tk8x3tWdkltvtzhjB8fxQxJNrk-ykNhuEYfQMQ0_MCqIRD097_gjO8q-eFUjnuiVqqoQ9_rH9QCxABdA8afoNt0hFxBwR6d57P81_XKOnApyrPx0DjsuKVTBFoCWccKX4DZuQT_PhmsFtPquNp6OPWQM5a8HzKntjz_HgFYnyS5p6n0hBGZVC_GDtFEm8JELcwuVoSLSXhI_XKnck2FIhHA5YQ4vLGOhCEEZoINkDdq3oNgm-NiP-DpG2LYetLl4ljlUpRBUizmWn4Fr3jhIt8rmQwqmFj6aMDSEM0Sgen9DsUH7H3uGK2NipvFv2Uxic5aXAKQ37EFjxPFqvKXlDl-hLnUXtkXLXBbmgCJJw6nBvm-SeIxU_eKnWHkhtdnkNZrmNFaq0OYZKk-moYSxEgzxasQNYGtkN89LqAhRTS6dIbb4nXa8ArvuHTJ_qpLFjGF3SSX98Y53cgtSdGTTmHQ6_v0BmeKCWhRd83vPrmFosif57AXyBVk0HJ5YdeueitsBCyXcJmeCntrT4zDlujwuMWK7wDO4vGMj3nIIyuJMJjtpD_auuDLmpYHqmKTHm8Ob8R2jJIwDhJIupkTldX5kHZmo6Nyh8tjeMgeEbp4Tp05CfyUTWWM16gaGkwW2Gto3sJtv0AiA_PzSN_dDziD5fRSH2Q2JTW4g03Uc9SBelL2fFiQifPSc3-mI4i8QHIswd_qPnSAnHxBW6SLJFqY-qIG6soLzt2VnH5hpVvakMfO27A82DQrcoFDFsqRb8KgLEoL5u-6NbgwKSNFjfIrLFg9IzrQI7oktylkFrc_EWL_smmL6iuT5WEYt4jBwtMvyDD6nVHzzx7jd8J3XQqjXfWuH_uTAX6cOHprzaPn05QRAluZgcBL-FSQJ3Qw7PjpoiLyd3DGL77nfl_m9cpAnpz3ojtajP7Gb-aq_xa_JIqxbnuBDBkeyN8pOQp--ZD7T2BOAgS7poVoqPFXRYIJOwKtOcrj6UdPN2yrx-44ZMTJYzwcGELnFRs32PKx8TiiF1pKSwo4NB5Z97_0k_WbyBwyNajMtRUPmEuTr9VoO7CBwe1r3U3iIZbBKCfJjiG5FQToqzku31_YAs5OIIaV4B9ifLt5PwUA4mO-7XqgO1VQQjt2cUQo3Ui3EKWEJ-ov7F3wf_byGsguBwv2qMuAQiLBqs5jxrJUxyYIJAM7B_TtUjpQnNERvHEkt9TxCN8Kc6L-MejMOfu3VPdArf38naQjvBjBAZDznV639bkIRED7-soJbGMcGEyGWUqAVs9vkFleO9S4YLNvFShwo3ujBd7SMMdAyvi851CXT5uN5SDtaxmQnUGzAXmPJ9-UoJF23lSGB26eMdnIerzFoYMCgWPHyvt949IrsUKnpjuxebqQYVSrppmhIIrD8R255bJGSscVwdbrd9iA9-gHoB3UzCr5pd3gfW9Z6ynT4dQVILqtj0KgrDOHw4AIBqmwaecTBi5BeyXJx2oF1ClqS_7AanfqNToLcAwaKXnrK4RGyrX_mXHUFX9cT-o-eGqhi0lifCcJixwb3kG2AhP1USNNsCz31m40_c7cm7JcqLbzCnz4hvbivUvON5rf6kQ8PrfrjNrZA73VVIKhgZBDHxsHa3skwQvq-JH_3QulELy1-6vL5Kq84bg3ZPQxOUtxBRuyjxEJkpgG-sED2pYsKrUPqo0Ku_ggMTQjvoGGYRBt5uMlVX4pdB1zhOe1ZjcvPb8IwnL_BdLX4NvLpN97KH9Ot45bLeVTCGpv5UH8Nnm5CzQ53wqsOUD-9u5hqrSwx89sF7h8TlN9non95r7b_oHkU1R_czZ-ZjL6EubsUx4w-rWKwVU7GYde-ie62v8jcaLhkM72O4B0UvCfY2t3GtruZ4OirX44hWfOPujFr5L6bOkVSMKONJFooIJ2RIwCw64Mczkle2zQZ1P3u1DrMS5s65h-gNTwSGw3qyQBwF58-um9ycDis6f6O0ggqubsCDlsW7Vdnk_GlETHLDQ7lR_lRG1g3kRQEhKz2iwzxQan01X021EJd4TlocJYafpp8HU_rgcJdUmcvPFgB2xysE6F1vYdUAdovDztLftb5Bad4aKueUfDs8haq9TBgosHQinvKFfazE2StHUaEAVK_BiOYrH1XsrFQlXuMwhQlRgA9L3Q663gMrnhnfcQPSNd7P5EhqbadtddoVrLOKhMD5yBJj9RiC0vamCGVr2LA7hStIPBGysTBanE3u4bT-TKe2qCOskvfR2xU8NSlai9b8d57zkuxklf7LaDnMi-xu9TOqduYFfXOn87uqjaN3_emcq0NExYcQ1fMUMcbOuGoW6qeWlWmMtANjI3VaJCa_v2JYJ4cyl4gUoboC42d2esKg_Em2XfqUkKQh4XTG673LC1ebToWGPRvFtTQM3gZ4Wh5JY4pL58VeSsf1jhINWsytNpgGckHCK11BzUUx4MABT2BuMWf-a_5DV4KYdmXHn_AKAqoZWHgE2hC2Q6DUEaKTm7AV56Cm5vo-NibALDGH1zG8ih5C3dmHvQmES7vUOVM1jPS6k7paHXEwnPFE9M-zg6XmjKjdvSZ04lauZEeCjSJPb4E_v-uWlwkdHsDcTxfj9oTjfEpX0mZxIuT_Ex7Mx2I7DUHDUQgKgZT9n1TQym9patiPO8VYzYuoXrsEeLS1Mk5N3AmQXeB89x85_Xj2plBbDOqqMpAD2uMBXwHI4kut10unkHhl3S0JtA1tE0ukxTRaitpDQveHfao0tQC8gy4JEA6M5AD7iyWOm_iuW9baElC-R_g_6s_X1t2qv4mWwd8P-h7yFm4XEZg_oJEIA40hGwSPKD1d-b9QRz7Kl734V5RvMw1ekdsvZ9dVKNcPffkGX0inTp8RgkOWFUnS0hZpxuNbte3-rGWEt6Syy4x2jaH-Zr6o667kigSt1Q3cQO_eqQtq4VWuFmYIbDzkEbIKmIHY52gh-rB5k-FMQqCs-ay5Blj_IpvfcImMtrZBrbhL89gzGNRonBZEa-9kJeu4jr2_DLzw14KJR5zVNwiGLub3jJkgYqOZZ5ee_oNchx3v68S3wHyFnZA9IIaXRZjYLMrjD699h9SZvkTHdGAwICpyOjrfYbgX_7woRp1ZWBslOamnw6mDqJAk22nb1a8cpdGNP2IjXVRtuqIB8y36bHEFjChDTxERZ2dsz7a2mp5qM2Xz75OGBM77DAjnGpU7GFXDnolAnAsU5T3dd-LLnVlVhvzyuZWg7ZdH-0WsVVCezyIsQnm3WMpdPrlUcHtT6fyY2fhJVIm1QJEES5wEiEPMRrmGQ68V-q8TWlrPan6LU5Kr8Ak0nJKhE-r5bcaemeUbIsY4a9n2YDZck9CI6VGumMccelQ61Bhs5vgQ0W4AID90TXnUtJjWrVcgdhrLCWV_kv2_YSqDDoI6TM0oJKNaoNeG2HXCxXpHy8izUvfMwHvdniW3c4BPnvMpQW83bXrMPteKk-CFXdwQ6bB2PzzXAzWTp5q6D5cLWAyPJjju4AmopBUJmRwp0tjulMCClWqMiB08y8DIWDDLAAaG7Q-de-_Q-T6tZy4LRk_c0sYOtAaNCA1HgTDSLvP4j-xeuu8DrKv5SqefP2J7LLFM_JAi1gRh_84NUvUDvBdexr9wZI8eXjnnoDvP6KTosKCLmSC_ErmtzRXfUg1mz5fNVtlKSm03tqzmfL46iKDATVuEejDtlo34djj7uBV5DUw4lDIpQY1VsO1Ozgpoz9i8sNcRKQ-K3Of-vDL6R28gLBUq0Xo3nm1hAJgjc68C57jrMlJhD8GM6AeoGnnhDTfJ2xuxsdnH6i06qFUKcuTmA8l23Ek-A3ryx8DHAIaRX40d3e5MwaUqbglufHWBGId7KBiaiFuD3LhJC0CLl23XyHf225Rd4lir9LpltmuaRLnyS0FwIGZMaRmxQ-SWB2fDVzj81SJpo9lPDsuLu_ji7AA1cx-PnTj5fVp3APeRmy9E0A2v8hCKm4C6tPuvgC7Xp6MV8epxYIsGRiTy5wlHQE0FUuOdBtBH0rmGJDf4HQJoZHjhDhOJZqkvlDtEowB1mtndHgRz-0lpQurRm-RwKvl4n0quBfWZ1GL_PmiZIO36Iyyw4BRt3c1a5Zc5ilweQcle_-ZxawS1aAXXOaknt2c6AGB5JnmrTz2dXS7A8M20uNp7Cv8RoeiCYjPa1Co3Nr_6BuQL7HFxNsyk1AXDbG2qUJljSeWG3YFkaPHxgTw7aAefXrFFL_GNPi0YtageYJq3WN6lrdQ2CB0g7QLoj9dsHlAGhm8PtUESBUBbSyJVOm1lCuGGbB7psYxOLLO3BSqnXHb0--sDiyCTKMi-80rtMiHttXC3zAxXUFQjTre3a8KNohgPWx1PTAbxf96enJ33rhBV-2ewMIROT9j-K_Esee0eWUcTmt9v0yHW-V5ij0Hopx7oaXadNQLdgBJwUDf6R9xEktHhzUkyJ0g73gjrKQz2EidorhljD9LSFMAlUuRTkUhG35crMduH9TAAEgOHXZI24CD5Fz3n2KgXKoxWHlpaLlTwBXK1xLHVCrqCqvsBo60w5FV7cmdNTBjFbDU1EKSHLopt_aMgtT_6Fg1ZT6H2p0CAvvbinLkTLop3pSVU1_itnzRHOf3ayHzMrmSN_pI_03Of_63ZuHJmRWRCd7s1PviAo-B1LcG52VTanJz0JCF1RAlPj9-2DIgJLxDgNcPI96cTqZBbLk-rwKlebrmX6d5CBg3V5pmJKkgLIj5FpTmhiXhqDHHJvu-BxfzDQl2c8QtQYF6aygihfCCluN5biEv51XKRDpC-S3sU3USofDTgcg1pznwUvVv2eL8nWywckhIHWnip7z_ptCTmyn7BEzzgRgGLA_pLG17SPRJP6laoXHG_dprfpRM7gcLJZQ2zk29W2zVEpFwWePGpnQbpPjPqcOBiQfewxwnLHEuV8yGBR7Y-SEKrc6M6v8AHYk9oLXaRu1qBKkLUKSzKQhNFtfl-h-J8Adf0W9hxYSt6QNzf1YUuE8H_w2SrUGcVnsCnIQY_xu11sJ-0d-T2oFelzeEoasMeeCDamuFQye14ps0k4cM8vXpk_7ZrVE7rQmEpW40_n1iNHwB4UINg9CnQGXH98DzBBCoGPZpA1SELOwGTcJGcBZVQ5Tfey1SRFwXWJO0QFHfDb5-_tQUj9o30MhJBGxOftnwLaFROLgq3FuSBRM9dYsdlpHe1SILQXKVIwjXcOVMFgmbDq_hMSNFlMvblX9LLBduT9cXk6JhBVcxb8-oKbvbjL7zqQHOgke3ZC6oDEvcew2YzLMiNLiyGxJcthsyDfrWbhbq9DSRE7lYq9AVeh_Zc2wZq0RFh4CJGhXtW8WobIOY8JPIkyQKD4W_mKRxchykWyrCRliFId1Tzbgzu1NKxdZLiGZchs7MRgd-c_Kk0mDAvcVqyCSw5ZnlG8qWxmgwods9KD80tww2Bvp87a9Jwf-S8_PhqqG3ggGuLLm2CH71h7v6uA7f9-aCJKnlPiyb43OU2IK-rRgJf_U6VNAs1n0-RwWlaMttgA5wcecqRUlkneFkWpJOKDXpuAR9vwfoArMnPnp0jGQDN3-OPymX4xsYY6L4k0zC6j3zz9K2wgcGFD9kliVy2qwbeAqWL37Qdnr6sEbkxusF6IiYh-POUU_8rCQX03_uw0XHroHwK4mFajchjXmOY8ykOBQCIGPwCNI446xFhqWFDytDTXq9Eu651PlEqDELIcRwQz6KYWNJNlEFi4_f4GYS8sn0wpwte5R9QuaaLjc38obGBswmh15l9PrMvrWklBnnEZpV3NWmxQViKWcuey_QG_hRfQ-8Kjhv0f4D4L-d52x89yVXeVu0wbN_GstklEGCCecqvmQi1vXDf2FKr69Md-TE-mAh9pA-72vepP3guNcHz6PqzzOQX9Sj1uNZCkB0heHrXuCunn_Elv3ZvHZ-9AE26ybqtRVxaHtYrbtX9AKVk7ud_YdFPxSq-HeavXCXOBDGxEVleN03Q01jj7xoz5MjhKrVDF7XOobW0xMLtPfJLLmEGkBtSrLFCDGo1T7T3DnEiFQzXZutM50_l0k_3DxzDKhI4s5rOeeTMjSXDaxjM52LLgwAanVnMtKEsEXFVF4b5xvu_xn5CzqW5T0TTDOFXm2Gdxj-t59bgRGmnO56K85rTGgeJyXBroTz8cS4hkgfm2fQKiDAQZ5iMJeY4iqKZJTrOYb0IueB_ez-I8XW_dibgUd-WcJNKYKf4KnZR9_Z8o4OofbCdVj2mcgunpgjbTCORNWj7IpYmkHcbIQFtXnnts_2WNf-TtE6xr-iIVkwGABYE7ugHl1BUO5yKuDmeTOijSxWQGO22dzPnGVQ4O7AuXUYBFRa6FKVEIIVyk49ggvgRFFerncqEW1s8LR9gCzMIsxH2jCOyOSqjWGdZncRqDWhF6NYgFsqs3BDGYspC1vd9KFYppnH5W7MRYb2Duoi9yb7SQhNarto9KaqqgiTdEWeOw3kSkTZxa1moEh8F3ueFWhjQXNW4I3_inDPUdw0Xcf703y7uitnAsi-235tGC36JkWMR9M9Dx1cQSnS0NWhOYjUPPrKSHW8QCY-ZAfEUSJfixJeXEEUI0YmuGlFCIrLFvtlqFjxzqJW4JPCfnB0jCC9Z07d7rwHznYBSkr_cis4gNwnPOa11060WODyso6zRSJ7Q57bPhULvgnMZHZq2hl5dygeAz-elG8XYIUmr8jwXKuVGT_hl13cNI5QHaxshgdJuTzE362jxI4c0usFIVIzwhX6KqDFtWIZ5skj8iGioS6pDkY5tTj91aRu1ZL9eQ7KSLBbPeqhZCjQJGuudUr4u7HGuz8lQR0KvuZqKGGaybbPYwzJSx9qkGwqr_RNT7RW7oDxNiPlUHEf1qvED5M5FBFt_YlTmVtLQDJHRxvx3jv-Nc9pm6tew-et17Z0lMcXypXhr138RTXZYHSwJXsHMTNNGZFHCuZsyrq-PywrzCm-i6tXstJXx79s9os_dAaYgMtYEjPNRCb29LjaNw6OL60MKAl0Fung52DEDjnxFCTp9ygM_IkmLw95r9nhdq3smfsasefn6cp3YnEG3skKDswqS2Ul8Pilfqz3JI7mVucw4zA08ICIXAxB_L8_MPXUPPrVrdcf2HHicjjFs5L7mabPyv6blX2uB0BJ8Pcsdr_qdm-JbxmEEZZnxmtaG0VPgo23-DaHHIdMnNa-4cElpS64Tqcanin5QIsd1e1jIBJcjLmGOjV0eJpawOICK6dIhgdAsgLyXT-ItiUkVc_7NrPdpe0Fag7jMtvqXlvi-JljdILhGfbT7o-rNPY2iJ32jKUIDVZTSADQRf7Psnt40y3m1Ccx6aN3JVhNrgihrfjMF4rhZkqrh7Rlzs350VVOar8RblBoycjjBh9-xyXXSp4OWebr4rK6w76HQqKoOdQZvFrBG0Y3Qfkq1tNnJyy7QA3ZZwhnVPzmvi7GeCLIZMNQLQ2A3mUvZXcmmcI2NmLBJuTHoQ5IBhmtMA9_b1qVTt-8iy0jIklazgzzUa0Zdl3IAuptdmJT7AGneTDhrR60WBnxVbbjJa-_LvOyVdEVimw6wNuUO0HIuyLo7s5MkR1D1SNShzV7PUtM2YKxUxbE1zEHkqiTIF1P5RxIhh85XAaIaJMlIxjhvtIUy--jiuzLh9HDDjDCuSMRrqOk958lSAkZnProYbHuRI12ViZ561Z4-whNCQwctuoP68FvRWLByoO2NtNSaPBC9aqNx6OWHcTTGdaip8MZLmD_xPjoq6O04HNxBsaCQeo2xqMkeoB74m_8HtZQIPHyEgW2cAnDDOPDRFspt8KN9TMgAWTf_Pa7eI1ZvWo1vZtjOUi9E9SARkpmtFNtaQP_NRLp_76h9B_piPJCdzuIl9QXbwscJOaDHIlYfeauN1j1zMGmSY1jS2UPNPF7Qfy1wUcdxLFuzGy_1YPe6i8DoMimj_c995kmHFKi9jIdBHrTz5p-pX_E01O95Wd1mzgCeQCo643zzQ10c93MASc5dgHgCjyTfT4RATHXhVrhhjnamu0xnLxIHt0qA43qDfQd23xzzp5gA0KLoQ-b9fYpo5tjD3z-A6BuVES9k9W60WN3nwxJiil6rjHSHxzq_rmoDj--EOBsKv5TcismcMk4IdBgoKWcsHGW43c5t5gmaA6c1QZPDHZWTnkHPZIsH2U1kMcsNHoWG-H-xQ65cz6cceu_ATRu26etMuEZo4ecqNSENhCQq7NlkEnWVacuW7qybowkEr2uIU-BB_wI1oHPKVupH-0ZOHsVZOgktQ5g1DWiXUVloBabeRIZJt7fDYFs5oNgXxggElnN9fK-fb8BQb9j2BraENpRQonC68YsbFQLoyefvK3WnO1GFQQg7qDqzhU9PgMU6CIYfMfuHAoFiXtaTsnykAIv7m0nckJn8nldATLqakn72ObT_rzRQXi_cKoksBvKel4sqg7FtoM9no5s9a3wT1OwRXNUZ5Jg5iYyFW9mlRV4-Pwo67XhiipGG-iXsqxlhmDQjmeJoBfOKfm3MWJccFO9hMReoCp1DDqP5wxG_1gFMhl4mHPgxQW24pRrYOO00YYdR9VVrsBdjalyjo4mK5PuWqP0O3BKTZ7-Al2P5_VyQ2MxMZAZCkHSE5tRIkq0k29sZLPM58yUwN5FkIrzop2PR_VNYNa2eY2jK-mVv7eYvwcq9LcF6JbJN79K9YyPI-dqKutPoFzFXQEijdF77VbVDQYN5v33gKMYWIyXUb_ZgBFZ9wwZkGkzK7aRR22QVhUMk-M6dZrVH365Cmnboiq_7ZqSIa49uF1qlWbCljkpXMDxF8i0YGRdx4CUSU6vfyKyMUtCb-c6ZxGztojxz72-u3SwPOEJeRNUjpgH25LHo21ORRGuDHM0p04CyxXYe6YH-qYyINgouQ58GorDnhZJfLssqXFDEV_HeQfuZp-KsEnHSMDgX7ibItCu_ETXE2ano2M0XnOjdmSPRHl1aFyQAWkHsgTsrlzucRFcDhkK1BNIGPgC4eWce4bsaf_DHP0OJW8qVEnd15Oj1r9Om2K-vL5pYCLySkxA85DSgMKNOXPsPV3wGkiJjLJqn250v5aiwAziMHrcY5ik4Fm2AvDlRXPvGqXOuQG-zJsFc05J-1TBLgT1wZ1b2mw_qihmlJt71mthNKfgjmCMtx6WVKgRGM2lhdZ6gXt_9AkBcf3Rax9inuLnPgfaOZSCNa-MMR5yVa7ql7i-NwvuupwuuTuuKGkXv_-T3EK-Ky418dDDOMTgpW8nHiUM6Y5uBu6v__N8NMYvnJmujw6dUTNMR-R6vgaXdDtzs6a4KAccwIgqQ43uhgDexj9x4OB4304dKb5PJ2HpgIlnXlhjB-JGmnQAbAIaLrEcW9V0S0PX4H_Mz4NGqaAtDTeeiw= + id: rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27 + summary: + - text: |- + **Providing crossing guidance** + + I see the user is asking, "How do I cross the street?" and it seems like a general safety question. Since they didn’t provide an image or locale, I need to focus on safe pedestrian practices. + + I’ll outline steps like using crosswalks, waiting for signals, and looking both ways while being cautious of distractions. For multi-lane roads, it’s important to wait until all lanes have stopped before crossing, and I’ll remind them to watch for turning vehicles. + type: summary_text + - text: |- + **Outlining crossing steps** + + I need to give guidance on crossing the street, but I don’t know what country the user is in. I can mention that if vehicles drive on the right or the left, they should adjust accordingly. The policy allows general safety advice, so I can offer concise steps without being too verbose. + + I can ask a clarifying question, like whether they are at a crosswalk with a signal. I’ll present a step-by-step approach to help them cross safely. + type: summary_text + - text: |- + **Detailing crossing tactics** + + If you're already crossing when the countdown starts, just keep going, but don't start crossing on a flashing hand signal. + + For an unsignalized crosswalk, remember that traffic should yield, but confirm by making eye contact. Wait for all lanes to come to a full stop before stepping out cautiously and keep watching for any vehicles. + + If there’s no crosswalk, choose a straight stretch with good visibility, look left-right-left, and wait for a safe gap before crossing straight. For multi-lane roads, ensure all lanes have stopped, as vehicles may still pass. + type: summary_text + - text: "**Including additional safety tips**\n\nI also want to remind users to watch for bikes and e-scooters while + crossing.\n\nIn low visibility conditions or at night, it's vital to wear bright or reflective clothing, use a + light, and choose well-lit crosswalks. When roads are icy or wet, vehicles require longer stopping distances.\n\nWhen + crossing with children or the elderly, hold hands, cross at signals, and teach them to look for safety. For accessible + crossings, using audible signals helps, and if the signal changes while you're halfway, just keep going without + running back. \n\nTo make this easier, I'll provide a simple plan with steps, like starting by finding the safest + place to cross at an intersection." + type: summary_text + - text: "**Explaining safe crossing steps**\n\nHere are some basic steps for crossing the street safely:\n\n- Choose + a crosswalk or intersection; avoid crossing mid-block or between parked cars. Make sure it’s well-lit so you can + clearly see traffic.\n \n- Stop at the curb, take one step back, put away your phone and earbuds, and hold a + child's hand or shorten pet leashes.\n \n- If there’s a button, press it and wait for the WALK symbol.\n\n- Look + left, right, and left again (reverse this for left-hand traffic). Check for turning cars and bikes.\n\n- Make + eye contact with drivers and don’t move until all lanes have stopped or you see a big enough gap.\n\n- Walk straight + across, don’t run, and keep looking around.\n\n- If the signal starts counting down while you’re already crossing, + keep going and do not start on a flashing hand.\n\n- Be cautious on multi-lane roads, as cars in other lanes might + still pass stopped vehicles.\n\n- At night or in rain/snow, be extra cautious and try to be as visible as possible.\n\n- + If a driver waves you on, still double-check all lanes.\n\n- If there’s a median, pause there if needed before + crossing the next direction. \n\nIf you share where you are right now, like if you have a signal or not, I can + provide tailored instructions!" + type: summary_text + type: reasoning + - content: + - annotations: [] + logprobs: [] + text: |- + Here’s a simple, safe way to cross: + + - Go to a marked crosswalk or intersection if possible; avoid crossing mid‑block or between parked cars. + - Stop at the curb, one step back. Put your phone away and remove earbuds. Hold kids’ hands; keep pets close. + - If there’s a button, press it and wait for the WALK signal. + - Look for traffic: left, right, then left again (reverse this in countries where cars drive on the left). Also check for turning cars, bikes, and e‑scooters. + - Make eye contact with drivers. Don’t step out until traffic in all lanes has fully stopped or there’s a big enough gap. + - Start crossing straight across; walk, don’t run, and keep looking both ways as you go. + - If the signal starts counting down after you’ve started, keep going; don’t start on a flashing hand. + - On multi‑lane roads, be wary of a second lane car passing a stopped one—ensure every lane is safe. + - At night or in rain/snow, be extra cautious and try to cross where it’s well lit. + - If a driver waves you on, still check other lanes yourself before stepping out. + - If there’s a median/island, you can pause there and reassess before crossing the next lanes. + + If you tell me whether you have a signalized crosswalk or not (and your country), I can tailor the steps. + type: output_text + id: msg_68c200091ccc8191b38e07ea231e862d0003919771fccd27 + role: assistant + status: completed + type: message + parallel_tool_calls: true + previous_response_id: null + prompt_cache_key: null + reasoning: + effort: high + summary: detailed + safety_identifier: null + service_tier: default + status: completed + store: true + temperature: 1.0 + text: + format: + type: text + verbosity: medium + tool_choice: auto + tools: [] + top_logprobs: 0 + top_p: 1.0 + truncation: disabled + usage: + input_tokens: 23 + input_tokens_details: + cached_tokens: 0 + output_tokens: 2030 + output_tokens_details: + reasoning_tokens: 1728 + total_tokens: 2053 + user: null + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}, {"role": "assistant", "content": + [{"text": "\n**Providing crossing guidance**\n\nI see the user is asking, \"How do I cross the street?\" and + it seems like a general safety question. Since they didn\u2019t provide an image or locale, I need to focus on safe + pedestrian practices.\n\nI\u2019ll outline steps like using crosswalks, waiting for signals, and looking both ways while + being cautious of distractions. For multi-lane roads, it\u2019s important to wait until all lanes have stopped before + crossing, and I\u2019ll remind them to watch for turning vehicles.\n"}, {"text": "\n**Outlining + crossing steps**\n\nI need to give guidance on crossing the street, but I don\u2019t know what country the user is in. + I can mention that if vehicles drive on the right or the left, they should adjust accordingly. The policy allows general + safety advice, so I can offer concise steps without being too verbose.\n\nI can ask a clarifying question, like whether + they are at a crosswalk with a signal. I\u2019ll present a step-by-step approach to help them cross safely.\n"}, + {"text": "\n**Detailing crossing tactics**\n\nIf you''re already crossing when the countdown starts, just + keep going, but don''t start crossing on a flashing hand signal.\n\nFor an unsignalized crosswalk, remember that traffic + should yield, but confirm by making eye contact. Wait for all lanes to come to a full stop before stepping out cautiously + and keep watching for any vehicles.\n\nIf there\u2019s no crosswalk, choose a straight stretch with good visibility, + look left-right-left, and wait for a safe gap before crossing straight. For multi-lane roads, ensure all lanes have + stopped, as vehicles may still pass.\n"}, {"text": "\n**Including additional safety tips**\n\nI + also want to remind users to watch for bikes and e-scooters while crossing.\n\nIn low visibility conditions or at night, + it''s vital to wear bright or reflective clothing, use a light, and choose well-lit crosswalks. When roads are icy or + wet, vehicles require longer stopping distances.\n\nWhen crossing with children or the elderly, hold hands, cross at + signals, and teach them to look for safety. For accessible crossings, using audible signals helps, and if the signal + changes while you''re halfway, just keep going without running back. \n\nTo make this easier, I''ll provide a simple + plan with steps, like starting by finding the safest place to cross at an intersection.\n"}, {"text": "\n**Explaining + safe crossing steps**\n\nHere are some basic steps for crossing the street safely:\n\n- Choose a crosswalk or intersection; + avoid crossing mid-block or between parked cars. Make sure it\u2019s well-lit so you can clearly see traffic.\n \n- + Stop at the curb, take one step back, put away your phone and earbuds, and hold a child''s hand or shorten pet leashes.\n \n- + If there\u2019s a button, press it and wait for the WALK symbol.\n\n- Look left, right, and left again (reverse this + for left-hand traffic). Check for turning cars and bikes.\n\n- Make eye contact with drivers and don\u2019t move until + all lanes have stopped or you see a big enough gap.\n\n- Walk straight across, don\u2019t run, and keep looking around.\n\n- + If the signal starts counting down while you\u2019re already crossing, keep going and do not start on a flashing hand.\n\n- + Be cautious on multi-lane roads, as cars in other lanes might still pass stopped vehicles.\n\n- At night or in rain/snow, + be extra cautious and try to be as visible as possible.\n\n- If a driver waves you on, still double-check all lanes.\n\n- + If there\u2019s a median, pause there if needed before crossing the next direction. \n\nIf you share where you are right + now, like if you have a signal or not, I can provide tailored instructions!\n"}, {"text": "Here\u2019s a + simple, safe way to cross:\n\n- Go to a marked crosswalk or intersection if possible; avoid crossing mid\u2011block + or between parked cars.\n- Stop at the curb, one step back. Put your phone away and remove earbuds. Hold kids\u2019 + hands; keep pets close.\n- If there\u2019s a button, press it and wait for the WALK signal.\n- Look for traffic: left, + right, then left again (reverse this in countries where cars drive on the left). Also check for turning cars, bikes, + and e\u2011scooters.\n- Make eye contact with drivers. Don\u2019t step out until traffic in all lanes has fully stopped + or there\u2019s a big enough gap.\n- Start crossing straight across; walk, don\u2019t run, and keep looking both ways + as you go.\n- If the signal starts counting down after you\u2019ve started, keep going; don\u2019t start on a flashing + hand.\n- On multi\u2011lane roads, be wary of a second lane car passing a stopped one\u2014ensure every lane is safe.\n- + At night or in rain/snow, be extra cautious and try to cross where it\u2019s well lit.\n- If a driver waves you on, + still check other lanes yourself before stepping out.\n- If there\u2019s a median/island, you can pause there and reassess + before crossing the next lanes.\n\nIf you tell me whether you have a signalized crosswalk or not (and your country), + I can tailor the steps."}]}, {"role": "user", "content": [{"text": "Considering the way to cross the street, analogously, + how do I cross the river?"}]}], "system": [{"text": "You are a helpful assistant."}], "inferenceConfig": {}, "additionalModelRequestFields": + {"thinking": {"type": "enabled", "budget_tokens": 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + OGYxMjQwMjktN2I1Yy00YTA3LWIzYWQtMTFhMDk2YjM4NmEy + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '5581' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-20250514-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '3497' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 13879 + output: + message: + content: + - reasoningContent: + reasoningText: + signature: Es4FCkgIBxABGAIqQMN4sFOn9Em/PepMCcKcz9OouVipCu3IvqdO2Gsiq1ibYVMxahaPn0ryu9fbV9emOP2O6XErfQJJah6OBdhrAQESDGqy6kCYCVr9ri5vaBoMxjWO09J27hfH47DaIjBeYviRqLR2DfclmjTr4HNF02SJq38kzzlnAJtCdsh4RS4gOveNrT5iusOY21uFIJEqswQEE40C7XRcN8xinDMOTPGde3SxMwuPlqfqVOhRq8lILofb0DhCrrRVqkQmrEgNHmAEr4DaP8M39vghUZQXSZWfDDmIL14P5VpntR8uv+DDYlB/5gKdTd8U5FR721QIyKHCteEpUAmJ82OgMsobIrmOq+t/9am9NbmI+rhBpoOhABI6sTa/Gb0izVym2LFvmrWREyhKZGcSQbQd2z/QXctsXE5FXmbwg8fKv+Li1EKaEv9LOAJAqHVu1EGUcUJKgA8Ky1rCmSAHDXrnE9JAubZC6yO7tUSge6VOxJeJwdaW2EJzMPMTbjEEoXArUxOLM9Jy4t+PZv4YuzGnyH0VL5trTuZVZ9Mseylk7c4rBh36fJykB6KJxfml6UAPa4+uEczXRjNk3uaHiYs/QRFKo8F/sNaLWnf3+BnZ6vOCdM7/Egu6YJhemGQrreA/PSnXoI+2LStFgFfR/u9a9J0FW26TCBzTQjRd3cvpqaunRri0xdF8lYBiYjehSCcVvEbXqRe0cWGUm8T9ad0z1TB6VdF8fmtMKlusFEKshD3OVJCE+fX7l7nPbUt5PgNN/YLmI57X+pSM9SqexhkTyGRCsOZvaxxeqlZzeb35qQLSmZdIXMf6hfRrlPWzK2jLA6Ci31t4EGhgXbDqnHqveBY1KksIbE2zDLV3LSNNr9I4pojyRNU2d+04hWS1/ubr2TMP6Ge0OI+S2l7WPvGeAYq2AO+I/e3JGSdUnVqCVj7KLOpIEKNSiRgB + text: |- + The user is asking about crossing a river, using the street crossing analogy. This is an interesting question that could have both literal and metaphorical interpretations, but I think they're asking literally about how to safely cross a river, drawing parallels to the systematic safety approach I gave for crossing streets. + + I should provide practical advice about river crossing safety, which is quite different from street crossing but can follow some similar principles like assessing conditions, finding the safest route, and being prepared. + - text: |- + Great analogy! Here's how to safely cross a river, following similar safety principles: + + **Before attempting:** + - **Find the safest crossing point** - Look for shallow, wide areas with slower current, like a bend or where the river spreads out. Avoid narrow, deep sections. + - **Assess conditions** - Check water depth, current speed, and weather. Never cross during floods or storms. + - **Look for established crossings** - Bridges, fords, or ferry services are always safer than improvising. + + **If you must wade across:** + - **Stop and plan** - Just like stopping at the curb, pause to read the water and plan your route. + - **Use a stick or pole** for balance and to test depth ahead of you. + - **Face upstream** and move diagonally downstream while crossing - fighting the current directly is exhausting. + - **Go slowly and deliberately** - Test each step, keep three points of contact. + - **Stay low** - Bend your knees for better balance and lower center of gravity. + - **Cross as a group** if possible - link arms with others for stability. + + **Safety gear:** + - Life jacket if available + - Rope for emergency + - Waterproof bag for essentials + - Quick-dry clothing + + **Know when NOT to cross:** + - If water is above your knees + - If you can't see the bottom + - If current is too strong to stand easily + - If water temperature is very cold + + **Alternative "bridges":** + - Fallen logs (test stability first) + - Rock hopping in shallow areas + - Established boat crossings or ferries + + The key parallel is: just like with streets, preparation and choosing the right crossing point makes all the difference! + role: assistant + stopReason: end_turn + usage: + cacheReadInputTokenCount: 0 + cacheReadInputTokens: 0 + cacheWriteInputTokenCount: 0 + cacheWriteInputTokens: 0 + inputTokens: 1241 + outputTokens: 495 + totalTokens: 1736 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml b/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml new file mode 100644 index 0000000000..cf70b2c26b --- /dev/null +++ b/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml @@ -0,0 +1,362 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '425' + content-type: + - application/json + host: + - api.openai.com + method: POST + parsed_body: + include: + - reasoning.encrypted_content + input: + - content: You are a helpful assistant. + role: system + - content: How do I cross the street? + role: user + model: gpt-5 + reasoning: + effort: high + summary: detailed + stream: false + tool_choice: auto + tools: + - description: null + name: dummy + parameters: + additionalProperties: false + properties: {} + type: object + strict: false + type: function + uri: https://api.openai.com/v1/responses + response: + headers: + alt-svc: + - h3=":443"; ma=86400 + connection: + - keep-alive + content-length: + - '16587' + content-type: + - application/json + openai-organization: + - pydantic-28gund + openai-processing-ms: + - '23760' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + background: false + created_at: 1757543275 + error: null + id: resp_68c1fb6b6a248196a6216e80fc2ace380c14a8a9087e8689 + incomplete_details: null + instructions: null + max_output_tokens: null + max_tool_calls: null + metadata: {} + model: gpt-5-2025-08-07 + object: response + output: + - encrypted_content: gAAAAABowfuDvp8B-XO2DkSIBqFaRwAZt4GWePwPxp619APtUwnRbLvvGZyalGNeb-L_5H4RM97zf0ZHUnCk-UNK4feO81LaLYDum6G3dC1TsPlRQmG7s4r0c4eVLGfPniuXruhg3Z7RhmuCNeQbq6JF231f998APO3QLqww0YMmvHFv460qLJm4MV6IBeUmUungvCKds5CgX-QFKkaTZNxn7rW-ESZfCECSkkrnVI5bfqwgBniXs-e1RS8IAAQNacdEZfeFOFmYOFwKFlbtptpPBluo7ZKv6G9BoiIJOoYoFuGyzz0PJxXoeWg_7CNphxVhs2aJ4slbvckOZ9iDxqkrM_M0FDhPBFW9301QHKG6XzqaBEB-yEmShoz85OaqsfhmEr1oCBkfHqnd1FTzDLklDwNW1xAvPpyTr9wGwKZThLvEGU_t6tu5sQXN_IL7jCVksjwn_miJivE_8bwoUmasBJPQJ70pRj8Eg8s8HyFh4wg5xnlBx9ef-igajyr1JOLhThR979OBC0jUxmFa7itZyA6b5Vg31ZN5TE1LBV8z90_3BDgT5Fz7qFTOfHrvRays0BDZtPOY7g5QPygUgod5cAf0GkiczIdzkyyPlwb5t-_VBCaW_baG3Olx6tOcgA76Bolj2tE_Lb8qBW2H8Rvc8xhKb2MrrIFFTXJg5w_HZyfgDTNDXJaYiz9-wpUCF5xYRU3_qynqLDMOmp_jBzvFNJ5FAz8xtmWQSvAbIj_uZ-9eXPkzwq5Ban6JdqdnoZiYqDpfSN76O6KfXka5umt1IX0sqVzcyFfEtshxNKAyb7mtI6S3hAPcWMFF7k13nduxP8BDM9VOS4jKwv6EXNiKjpI1Mc_Lei-UqHyLq3UDHm833CLAJrrrv5WD3hZ51CVrUM7XJSAn33DUr8uuURfngm2qmosEhhOO29IH6QV-VbfYLNEAmh5M5Rrp6TdF0IK3zhEPLhe_xALyyZfkuJYE6b6rTwHewcbP6j_7r-5H-rPLVfrSeF1Cpsx2ExUfer-yfKODebRMRq2cZXAL3p3OhVaLoah3zEv6izzFR_WLyj8W6SW6ytjI7Y4X8XN4UB7OXUADCnQ_jHpHf3yeRfvkcDA0xdRcrnZxjKhXpZhMBLPqASBXMksCcflJxv64x0lA-38k683LroqoFTzj2mIrxYw4_lN1fqHNCwQK0hn-Ws3U2NtvehL4RoerAuMxq5ImydDJVsgk0iRzar2OI6mf38DRvT_Lk-t5fE7urggj08WJpNO8uFheCIVb3aai99AbXjcb06a72rl9Li98LTIBBDMKj3tITaidFvo_ZN3ydCEFnlO4Kz0UyTIbRVkPShBmgTWNL_FwjNq1MT9OJwYyqY_GxAlznnANadS7DV_S8D9TiQsIb-lSk8FbzPURxbfquGX8NxHvuFqpkBaXXu376lqphLsuDfSmtvtP4_dejSJno49ZDQAyd5hwTxR8ydRKmD6UIUOwGFiYgFaOoetYA99RgzVP90F8SnkXkZLXigq4jTDowOlp_QZ9Nbjiy7-nxy2k8Yt-G_vL1Fs_g9PWhR94Ffsd7yDNH0x7tykF1GaN23_1Q0evFHKK7VuknQ3Qbo7-qjKSK5mIDQFL-jXHd_W-RQO6Yzwikjj4dFajy7wy1byVSOqzagGjPyIo1hG14wZn3mVdW_G71OCBYKRu5ihsd3aZ7b1lq-ugZbMGfyKSxA2m-amnKCbFlMwIWTFLQGuTDlHhLUJoYukCj2MC7z0DwG8ojVA3RCtuVFdvloHtge5bm62OqC19wEMlTc9JohWJZl0x-E2u_rkhdyJ0-TKcsGuQBLgSbm2kpXEA_5Gmd5mYJGFjuPCfZuKKPApr3SLfR0jAOyWYjdF3gxu-2sF0g2-aF2Qm8h3AcMU77mPblDTW8CS4MMx_UOwVwX_PdfIlWLQIewdXSKmbJThOeU6yvxyfDp9nSWtYCkMridb5H27ldMGxTfUvjXnoJ8VDULCkbTbsjOkyY64kmIqgvkFTdVgVQYpQ7pCexeY4Epv7Ck_NQMUEgNLZ7ukjr7xRYdrXr7lr4LPW98RCiTN1xaBZo5efpigr8AGd1qT2vlmSnnTk4fn-YjO1_SL0Dg6zqvP2HYeqSI5As5Sh6ToWVJIncDxxj-Odqly7upOBEc-aB-_Yoiz7UdAtppwzadYZazwd4G3wIk_Um6044D34rfPTRFGBONR0INxbn_m1bs_m5hZ7FK3N1imFUP5y4hs_jq4J1NCTSIEO9U7Haeawx1Hn73WZNoi7pHRPmwZ2pVzpDb8A8NP6hEIRKPxNRGxCKiomO-qQ0F1gh1ylOJH9faKRQNn6AuDfS2HFgQof5sYVzyKRM9QlgoHns6Th5XfRNKPRipxWdcahHOWH_XR0SpGy_YegTUpyVE-aXgW3doa89vznDQlju8C50yzyhSEKvPUw03B4Ygbz28S_HULOmMNBVZM8T1vuAhWcvbed_2JBHmYX4Kf-P3zNpXabYkPoflE0ofekYlsT012bXQ-Lwp3_UhHvDK7DFN-R2KwXpLmGjqPbyfGhp3p7Edj-k8lTcWPh7UmldgJLqKxiF_bVl6BA2OMQRCCudZ34dXiJT-L2u3otSKPjlb2k9iKqmG8pNCcl4KGRgUaKssjOV5Z77IB2QHlXCZX9iIKmeVTl5qacVPHE0b5j5RmZEdJ-HYs9OHNeMckgZhBvvczC8t2M2rqJ_dmxd7U80JnpX3olJLWTj1YaW27kr7jsalxNcS0mEHOkqXq2OJ46PvJPyHb170uW2WGucLvmx_x1BMA1QhFQMhgX34A0I2nuxYX5gTcLRoCCkwSxdF6pza_P1n2blEW_Z-wxaIO860330Ou_OxC4KR2OaD9zBnJvPadFGYi7np5Q_EBy6LSl9sGS0zyWNSc905Q0bsu1J_fVP4S9JUnlQbAC2ypHsrbxl-D8IxraYvgn8iWbFhOrNijEjnuP5yDs6xye6fpdhas59YQ6h4MNS2jWAiKdaXZ5wR5RgRor9Dpe9TZyAoXcQATlUvKiw3IJxYOL_zOoxfNE8fhncxj8Zo76QEi9x-XwWmH9odegLeKbBLTuMJCC-9zCizfLKDPuIMjZiff5Ot0PJCRcHD-ixtFB306RDiA9XxQ-P4YerqgzzqRxeI0o15ACiHp6htYIb4ivwF_uYspa6gIAlHtx7LK93kFnm0uoMIitt9Qn2ZO_pCW3LXUusiLYh2V3e-pEloTO47fpKzcE_ctIvzpfDpJBVlFsNCmNQtTVyb-WEY7UP59BGPGEZfx5xIVnYK9ocE7NTEbTd2v0pDyTD0f7pRMktR-no-iyZYEjsdUPaMU2umvoKdxvVrkg8yv_ETnTIQvecATDRNLkgdrVKdrQSAfeTvEbrREmK-2KMVXFa2ssgkhyJidblUPVTPESG1TepMlHAqlkbtkRTjBPoJQCYmzL95xoXXJFx7P7UeolcprE4JQ4iIlzhT0VzP-xYwMgvSqbSiHyhcop5144lTLt6sXLqhitY74PuRL5ROwza0E4NuFD7k3i9PvceZYo9HWr5hoGmw4wrnqB59clBYfa_5GVTsNIu9dovxaB36L5uXj0_a4ZbpC462ObWtR12b1qGCkrr8_LOJn7gzbRQr55E6ShETBbqNax_-sWL_an-vsTQCZsFJYfm_DLu2e7sEZXrxXmNN4K_76kYVvVPXZjE1y7YaGN9Dqq6fHxczXxF7c1lybN3BTsww80DHJHl059qBd_zBCVXrSVhPbPl9Rj5-CWBabFgUV3SdptSri2ym8hKuM9DoFlWI1qXMkpmkmf2_jCqW48uPd24zH1WdzCurwlG9lrbr6cjwvtqgmb7N4hTwbwTpKGIt0JhKw7iPfuvNGRTfWaqPDfeLQSj9D6CDLlo6E7coL232QoKAqP5Dt06tb5BEnf_ynzor_1niU-PX_hHjzYPxMlv1X4ZQ66Rtc5ic0ns_VBN9OwqbhxI24yDuGY06xZcWtbhSY28cE0q3CAjf0ODFeKY3Vaa5v-AfZYlb15n2f7nYU8TwyD77-ad20kCX-wiTjyf2SabTRBHdSw2U3wKk8HxDy_U4dwFdKe_xHMFOKb6Mz3pY0tHpyPLuWVoxGUqaPvfZpeROxkzp2wN_pjDZprvYfdFOGozVM6PyjM4ZGAzIUNfe_FSlc7v90jjqp-kbU20TtTS86hmKSa73N1ZZLGF2mnh5L5CV32uUGAua3Uy6wEaQGHmhKEWMOc5wuqmKrkkfcSIHDs5wzwk_U0kt6vaFcA3glf4DAcVvnJuKt_K1xX2_JEG3dxJwL15mmWlD8SQklBDp6G8-iGpW2sSfxe6rBZkXBWbt7jBhWN6DjlFO19IyEmxc5LHj_bdaDwOaV0jpyV_U1wLG7DCh50mAsp7HrFWY80NGilPcRT_otJTRwcqlh9-C4uGVsgCFGEEbUgfFca5hN6yPlzhi67evsiYW6GZ7UpCU3uGkEN_auVX_yl15cgS0xSN7SGMUadAQzops3WdTIW9gJszO6oA_7Vgrq1v3J3eixQnYGydNwVgk_ydirnqDPV96GG5Vrv9BjZGx6VILMdlvO3v2VaCrgQzpgy5IaIKPlrZdHZxTMWwQ9Kx5a6BiKP252BkIS0DjTb6WxMSwT8y3_DGSfNlPhy2gSsuYFOJHryEUgtTMktozazsBfO60DLe1Df4KGUy3g2jWvcu9M1Z60uXyzpdl6Oq6DVti56lpRNtLtUd9sdgvMR9PXAJfK5mPWvI_becCll3VRFS0ftqwbcCrnM6oKFf21cnzpB4XyHMMtmdnkTRazkkmbC5vX_r8cmIkEdO4czTQwMoMEH1gDaZbhA6mRo5KfnYdGOxxIrbc4uhIvsjF_C9Gsz-wZtXJvvdeKyFujC9nLd0w9ZkcyW3vHMiDun__zklrcscwKq29fTHz0uRrvObdlXU6gUckq8kFgG0REv5dqZIcf2fklSGrHgYyd8RuoZugsQt6WJ257PrpolRgtzNt3rTx5kicisXO8BRYbgtwdC1PE15d8ehbOJFLRCmfMTyvl6iq6zl4TO0ShFXF0RVmFLR0EFBnWmtfI8GAJGin-1c2kXz1M9xSKhGmKFQvz-0scsKjvdaGLKTNSt6Q-0wA2ajdDW6FqzWgm1E1vPciWyzYA5tBrMgokBEGq0tNt5W0_O27eUp5RtWaiFy9gXqT2BEWJgcdJQR3exR4AYsvG6NWdB-2d86--EjBR2o1P9h9mgtDbhkLNe9rXVCkrZY8qjjtB4PO2JmZs_s18yK6OvgnMlxwSxg1tIjE_u6bN6_r-ytPITfy957pDUZebWZ6TOX9waEsF_91f30l1Fqmhl7ayJxY6dNh0Y6QSi-eBqcHFwnkwr_OoPUUwtHCKl3CSl1jl5ULUnKv-1xHzrcgeDX7qUW2VaLJ4VdET4JikyNUC7Xh0aXO9qsa--AQdfwAhu5BBhh2wBMqTtugNoW2eNrzHiE7SBRfVTYr0lLXkFuHRsqO2uXl9NLcZEkH9nuYML8MUZZRRi9oBoH19NYYnN4-Iu5_8uOFcq3buH91WdM0KpsLOOCMAbZtZDxj1s1tC4Ld2DF69BHgJWN-FcNMzwB9s7PimLYIvWtb3UluLCxd2zB_om6a1VWsnrceBLcnauyHr2DfxTWWlPNWt5DFiLdcLlAHBJjfVKdsI2oLhPf0IAXQzZ9v6p3POPcHDGsuHbTml38-ug5tY0kUx4ZgGCfsToNAGT0UhzQsFaM4zMqHKmIUXHmKPO_VUkoS2fEHcm66AH7Jap_Q3S5Y65ce2m1I6vdya6tJkTEOge4AwS5sQWsOfEV6smK50TtqB84rSotIasiJ7npPBN1BDCZ68lGnnxJBcMMTB6Jmy0OWfu9-u90zn7-XolXYBlbDSW9Z7kLQnaoHMeXJPTVw3eVkuljJeCqiPh1HuhisY2WVU0m5ZjISZs2nJz06W8XObzdIKJlW6l8i6RwvPN-fgP2vLjz9Dfyq8QaZdKvf_jN4Jo9f6a-yg2QbL9kMu2jX13Uata2xM8i80Vbgrr8iwzpPbGwNsLwpFooFyRuv0yXuuRmUs5_oowYSK7Js29fsjqYT8xfPkBvoXtzpd-T7T6ekA2hEhmOs7aokObCB3Wjf2WyXanMbIEGUw9NiKV64ST9QMRvsEN9R6yvWMOBm28JiId6hVeVB5BjhxR8x3wAD12r9lQeCQ0LgwQTuuSVdyaLH07LZurmD_kJR6BlrqzQ8CjQiXmxBWuaBu-KOJPKR2jNOQGDjVsOXDHVW7SSxQqBnZIFiV3rzA9snj4KlV7Bcf94q3CeH_Y1_4sbtyh1q9UT_dGCIQwFI_Yl75cmRBRDLFZhPfCyuTxRYudyiJPkXLpyCBcI3WakFPTTuuJOCAFSlAchDMV33bs8qf8yW3jqUuv_N3YHe0HfmHuHzqYbecxcM-Er1Boc8w2ZiSvQZp4mlRy58ibNE2j139IDGlgRI0Nuo21UqpwHn9T4sKnpA_x6SRv79RIpSuRedObGKy3C7sb9w6CJ7Jsqp0ZikNIzAI_UJihHvuUsKkzyK5r_o3RCypvPInqxJpBmeajVRD8tUdKrhJkdSWaWMeUJub8VoojqA_t8PEK_0GDj7Rtig-VgK56rXJZJObzB5O925C15k1LGhC5Cv_tJLAKkNZkwyVR4wV6k8qzQNwsn7l1ILeNl1OP8L9Lh_OBq-AhltjqXH2z2wJgsyp4SuDinD0Z-hv3F7LDmWP35RIhXvGhQ4-a5DP0jeUXPYch_m9_9S8TBaE2v5qXsBWNTaHZdEy2uVfjMfDhFj8BQizXaJpsGRU53l0r8y6_roCR3GE6I5sKqd7vBLIiF4dZuu3RZhjn5m3O6rAoN45nT-cAnOq1P8lwQ_Y5B5lcLSLkgZ9-XPUh80sbdkFNNLx2_wDXHwzuM02m4uA2WcAmFQsrLL00xi_0r1fY0Kxm00z_Z6rqqBdrF60z_0UMBJEmgYFBBQ5zAg7MmwE7VN4Twqwi0GmMgXke7UOPQbsDBPzjos_VU2_sLAain97aiippQMLDMgUDTZq-EAJ6zJoOz_KmgNNDe4DcUU2l_e9bBs5UDMroFlS1syXmCtXKpJEMRs6YTsh6uW_JXhhxIEQbL-0C0vg1l0an-nTtaCl4onpA58O-2USsM-MrNmQk3w3w3SgUCowS9VCaflhtpJkaw4zL_R5jSGuncQ1Nv2ieeqW6Asy8XlJj70pIbg-oMue5hlSFE-ueanxwqytn7l6GJWN_au5zuFMo05JpyMqh0lq0uNw4P-WqHT3eeX1kmMCGh9iUac-AzwP5JGHQhxcsSvnlRgTUrAZxCLO4tiey3TDobGoYSxdo0JxGNvRHzFYhhJ06nvtnXSlC_WdYk48N466J2qvsQjxhkj69uLVFEfLaS6NUmZYMi-EPO3ySxHaJTmpFUjTiZXLBYMleu7yo2CfUEzxWTY0DN0FxEdzMmh5YCSY2aWIjjL4zoL2ugn0LXFexaNryMFergBNkAADhYWVvlfh5MxX3ZK4vwKBSFE8MfhEULNTeV-rwJvMUtRPwjCzzLkUvQk98YfhAUYPufFvoPYSELbg1rUkCcy4fNzKXwWWLIRSbARkdH5nUefnFZ0ASClr3eBZ4l2_Fgx5cCTwx7427DOEO10w4jaU2R_ACC3eYy0cIHLpJiVKfg-7Lk-UEtHeYAwc7lUPv3e_kANL2Nwj7eQSjNjXGQx-sr8OLs_q-5D989Gp0BPXexrtJ1Yhn5Tmi-DrhO_zIwBxf_2bv4BJTN2Jw1ne8xtuoXHKauxbtPiO_MMfK3ttsgpGLLXngXmLr7QZ9RdeLZmnDRUBgix43Kfaeie2uJun3sfW76Ev7XXVQp9YaSrNxw2_HbFrZ_hqZuAh17jsAs8p_RlPf0mQDfgVijkzUbekSzn3ePDkCsbwXDOq42yvhNtSgFMvYmFjy2B26enfLQlIlbMrqe_Y79bx7ysvEhTs48JxIfNEi1sS1Ib2ebKvfJ0TKvzXEfWtvb7L3aIJf-AmUcrXcr5tjeBHsLto5lybJoamNRNXJVUnssedQScKsBMJ_5tTfdTnz727y9faZEqzoiuGQIT2dn33eLSgbSxdE-XG1F7MtQHL3C2q7vJEBEaMtelDEm99-KVrShB-CzE24uNowqmNjKHAxePRbFM4i3X9L0HrmMxnT9wJyHs2G-lbkbTlK_kapJ9A6awt3T5PyqGPOF41QVv-GPF5GNg2dvEXcLXEUVXKifOi58gh0Hwi47rPJ6P6mVnaHk3JdySiwC54TbyH8zXaI58t1kAm1piIhkRIgxAo5aKrLjd9Gwje5D9K4nr4wxy70xeDiwo_t9urC4KFPGQ6Q6KhaZkVbSJ19MY8MXF0ju4NSFjVJwLI3jFeJeYoF07llo8ljsagKP-AlTHY-hs2Mvx_VRSamMLYeRBX8vH-kktEnK2OXpLYD5ELU7TPACfztHF3W1LCy_VT9NEyfiqiIiBoS5uj0hnr3v4o7nskbZnK1l87f5aGm7zytTqPfs9gNFRfJjfHftEgSUHzjvkxWWF_GbT2a6liuwwrFo7fqehFE11MLhiu8Kqy6cLK1PEEXKj57DVkuCYB71dGewouCYS-s8ikSikx_1Uyw9uEBOxjb5pEg2KcowPChP_NZ4gCa00_Mf1eWiHOeSdbuBgY-y8S8jb2f2rM7Ur3Kgm_GI6FBQqxnjlq0jqRmwD4585l_rmYkn_QyeadwpeK-oW3NmWHSg3tGQs6GzOBz9lowXbz-QNkHah4SXtghvNnW_O5GuFZeDr3ds_s9VD8nB_JsCoBog9vrhONYZfMmNnujRN0ThktYt4JthgOthbxcT_QhJs0XPSqNqeH1KgwWVZ5HY-jGaj1UTvXwY0czrax3ELU5-tv8HAw44pvMvR6zd0F86QvDmWV7BpSxfIwofeFkg178yDFLmRO8XrBC-d0bsalTQknZsk4TB1pjbc2UYPBhG369NxClmawDazA-BjX8T0YHCexOLbfOr2pYow6u8fCUxDjTDKWcovYSZpXzpQ7tAM3gxL4OX150PRLo_8aZe--UMXR1fNKxJ6hB0dLqUqUQ4t-8BFIgUn8hAfxWERBG3wQv9ZSaKc5aagej_nOuKj-EQlZsfdoozFATyx3gf1MGiHOHZ0KuNHU_XeP6Rg57DePus3Ufr5WAhzvW9hH0dnGzD8EmS9sISw8LsQNRnPP78ED_cWqjepp2TWaGVSD1y639Y0WoBLanhogSOyELl9QpANyr6Za2buaXl3gte54mzE_hV37dq07uJTym7s4oyc4zKc6VPA_ok8W31xDc7Lplr7BPn1T__5YAG_qZLY_v9hcSpRPIvNW88YCkpsTx737nFKBFhzIYXUzUUYXwM4Byw6mnLeBzw2QoihmeLUlU6a5Ym2yCm5EALo5-BU5dEgIWI3GzgbssMhktrwoiKYUT9ZVnbuqPkeIW8R28QClpX3R4jUX1qQMs9F5Ss3WFHyoN3epU_ioP0fdzluIvo4Ld0QGY_LcsxwVNl_XeslhhqFqVQvhqnlwnHt0Y6dDfErwm2HGA3IDa_kjzUA7GBHl6HrmVQKa4Twx4LLOiX2INRI8ai4pYIVbfQJtIz_Gw6_197mTr_BleRKnFIfX9sT3FPlRUeXOEMwTMmW-0qwYUifZ3dQuTYXk95cchCS8WcaR-WCEJ + id: rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689 + summary: + - text: |- + **Providing street crossing guidance** + + I need to respond to the user's question about how to cross the street. I’ll give clear, step-by-step guidance while keeping it simple and not overly formatted, possibly with bullet points. It will be important to cover general safety, such as using crosswalks, obeying signals, looking left-right-left, making eye contact with drivers, and avoiding distractions like headphones. Suggestions for kids holding an adult's hand and wearing visible clothing at night should also be included. Let's keep this information straightforward! + type: summary_text + - text: |- + **Clarifying crossing context** + + I want to ask the user some contextual questions, like whether they're in a country with left-hand traffic, if there are signals or crosswalks, or if they have any mobility needs. However, I’ll primarily stick to general advice for crossing the street safely. I don’t think disclaimers are necessary, but I should ensure not to encourage risky behavior. I'll provide a concise bullet list of instructions, avoiding heavy formatting and tools for this task. + type: summary_text + - text: |- + **Detailing crossing instructions** + + I want to provide clear crossing instructions that cover both signalized and unsignalized situations. At signalized intersections, I’ll recommend pressing the button, waiting for the "WALK" symbol, checking for turning vehicles, and scanning while crossing. For unsignalized crosswalks, picking a gap and making eye contact is essential. I’ll also advise on mid-block crossings, emphasizing visibility at night and using curbs or median islands. For roundabouts and trams/bicycles, I need to specify checking both directions. Plus, reminding kids to hold hands and to put down smartphones is crucial, especially in icy conditions. + type: summary_text + - text: "**Creating concise crossing instructions**\n\nI want the answer to be short and straightforward since the + user hasn't requested a lot of detail. I plan to mention looking both ways while adapting to traffic direction, + but I think I can simplify it by just saying to \"look both ways and keep scanning.\" I’ll structure the advice + clearly: \n\n- Before crossing: choose the safest place, remove distractions, plan your route. \n- At signalized + intersections and unsignalized crosswalks: specific tips for each. \n- I’ll also mention if there’s no crosswalk + and provide tips for while crossing, especially at night or for children. \n- Lastly, I'll add that if someone + doesn’t feel safe, they should wait for a safer opportunity. A bullet list is fine to keep it organized!" + type: summary_text + - text: "**Crafting street crossing steps**\n\nI want to create a concise guide on crossing the street safely, using + bullet points for clarity. Here's what I’ll include: \n\n- Use a crosswalk or intersection; avoid mid-block and + choose a well-lit place. \n- At signals, press the button, wait for the WALK signal, and check for vehicles. + \ \n- Without a signal, stop at the curb, look both ways, listen, and wait for a big gap before crossing. \n- + Keep scanning while crossing and watch for silent vehicles. \n- At night, wear bright clothing and carry a light. + \ \n- Hold kids' hands and teach them to stop at curbs. \n- For roundabouts, cross at designated areas. \n- + If unsure, wait for the next opportunity. \nI might ask the user if they’re in a place with pedestrian signals + or crosswalks to tailor the advice further!" + type: summary_text + type: reasoning + - content: + - annotations: [] + logprobs: [] + text: |- + Here’s a safe, simple way to cross a street: + + - Use a crosswalk or intersection if you can; it’s safer and drivers expect you there. Press the pedestrian button if there is one. + - Stop at the curb. Put your phone away and remove/turn down headphones. + - Look for traffic and listen. Check both directions and for turning vehicles, bikes, and quiet EVs. Keep scanning. + - If there’s a pedestrian signal: start on the WALK. If it starts flashing while you’re in the street, keep going to the other side—don’t stop in the road. + - If there’s no signal: wait for a large gap in all lanes or for vehicles to stop. Make eye contact with drivers; don’t assume they’ll yield. + - Walk straight across at a brisk pace (don’t run), and keep looking both ways as you cross each lane. + - For multi-lane roads, be sure every lane has stopped or there’s a clear gap before you enter it. Use medians/islands to pause if needed. + - Avoid crossing between parked cars, on curves, or near hill crests where drivers can’t see you well. + - At night or in rain, make yourself visible (light-colored/reflective clothing, a small light). + - With kids, hold hands and have them stop at the curb first. + + If you tell me whether you have signals/crosswalks where you are (or if traffic drives on the left), I can tailor this to your situation. + type: output_text + id: msg_68c1fb814fdc8196aec1a46164ddf7680c14a8a9087e8689 + role: assistant + status: completed + type: message + parallel_tool_calls: true + previous_response_id: null + prompt_cache_key: null + reasoning: + effort: high + summary: detailed + safety_identifier: null + service_tier: default + status: completed + store: true + temperature: 1.0 + text: + format: + type: text + verbosity: medium + tool_choice: auto + tools: + - description: null + name: dummy + parameters: + additionalProperties: false + properties: {} + type: object + strict: false + type: function + top_logprobs: 0 + top_p: 1.0 + truncation: disabled + usage: + input_tokens: 45 + input_tokens_details: + cached_tokens: 0 + output_tokens: 1719 + output_tokens_details: + reasoning_tokens: 1408 + total_tokens: 1764 + user: null + status: + code: 200 + message: OK +- request: + headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '5456' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + method: POST + parsed_body: + contents: + - parts: + - text: How do I cross the street? + role: user + - parts: + - text: |- + **Providing street crossing guidance** + + I need to respond to the user's question about how to cross the street. I’ll give clear, step-by-step guidance while keeping it simple and not overly formatted, possibly with bullet points. It will be important to cover general safety, such as using crosswalks, obeying signals, looking left-right-left, making eye contact with drivers, and avoiding distractions like headphones. Suggestions for kids holding an adult's hand and wearing visible clothing at night should also be included. Let's keep this information straightforward! + thought: true + - text: |- + **Clarifying crossing context** + + I want to ask the user some contextual questions, like whether they're in a country with left-hand traffic, if there are signals or crosswalks, or if they have any mobility needs. However, I’ll primarily stick to general advice for crossing the street safely. I don’t think disclaimers are necessary, but I should ensure not to encourage risky behavior. I'll provide a concise bullet list of instructions, avoiding heavy formatting and tools for this task. + thought: true + - text: |- + **Detailing crossing instructions** + + I want to provide clear crossing instructions that cover both signalized and unsignalized situations. At signalized intersections, I’ll recommend pressing the button, waiting for the "WALK" symbol, checking for turning vehicles, and scanning while crossing. For unsignalized crosswalks, picking a gap and making eye contact is essential. I’ll also advise on mid-block crossings, emphasizing visibility at night and using curbs or median islands. For roundabouts and trams/bicycles, I need to specify checking both directions. Plus, reminding kids to hold hands and to put down smartphones is crucial, especially in icy conditions. + thought: true + - text: "**Creating concise crossing instructions**\n\nI want the answer to be short and straightforward since the + user hasn't requested a lot of detail. I plan to mention looking both ways while adapting to traffic direction, + but I think I can simplify it by just saying to \"look both ways and keep scanning.\" I’ll structure the advice + clearly: \n\n- Before crossing: choose the safest place, remove distractions, plan your route. \n- At signalized + intersections and unsignalized crosswalks: specific tips for each. \n- I’ll also mention if there’s no crosswalk + and provide tips for while crossing, especially at night or for children. \n- Lastly, I'll add that if someone + doesn’t feel safe, they should wait for a safer opportunity. A bullet list is fine to keep it organized!" + thought: true + - text: "**Crafting street crossing steps**\n\nI want to create a concise guide on crossing the street safely, using + bullet points for clarity. Here's what I’ll include: \n\n- Use a crosswalk or intersection; avoid mid-block and + choose a well-lit place. \n- At signals, press the button, wait for the WALK signal, and check for vehicles. + \ \n- Without a signal, stop at the curb, look both ways, listen, and wait for a big gap before crossing. \n- + Keep scanning while crossing and watch for silent vehicles. \n- At night, wear bright clothing and carry a light. + \ \n- Hold kids' hands and teach them to stop at curbs. \n- For roundabouts, cross at designated areas. \n- + If unsure, wait for the next opportunity. \nI might ask the user if they’re in a place with pedestrian signals + or crosswalks to tailor the advice further!" + thought: true + - text: |- + Here’s a safe, simple way to cross a street: + + - Use a crosswalk or intersection if you can; it’s safer and drivers expect you there. Press the pedestrian button if there is one. + - Stop at the curb. Put your phone away and remove/turn down headphones. + - Look for traffic and listen. Check both directions and for turning vehicles, bikes, and quiet EVs. Keep scanning. + - If there’s a pedestrian signal: start on the WALK. If it starts flashing while you’re in the street, keep going to the other side—don’t stop in the road. + - If there’s no signal: wait for a large gap in all lanes or for vehicles to stop. Make eye contact with drivers; don’t assume they’ll yield. + - Walk straight across at a brisk pace (don’t run), and keep looking both ways as you cross each lane. + - For multi-lane roads, be sure every lane has stopped or there’s a clear gap before you enter it. Use medians/islands to pause if needed. + - Avoid crossing between parked cars, on curves, or near hill crests where drivers can’t see you well. + - At night or in rain, make yourself visible (light-colored/reflective clothing, a small light). + - With kids, hold hands and have them stop at the curb first. + + If you tell me whether you have signals/crosswalks where you are (or if traffic drives on the left), I can tailor this to your situation. + role: model + - parts: + - text: Considering the way to cross the street, analogously, how do I cross the river? + role: user + generationConfig: + thinkingConfig: + includeThoughts: true + systemInstruction: + parts: + - text: You are a helpful assistant. + role: user + tools: + - functionDeclarations: + - description: '' + name: dummy + parameters: + properties: {} + type: OBJECT + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent + response: + headers: + alt-svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + content-length: + - '12736' + content-type: + - application/json; charset=UTF-8 + server-timing: + - gfet4t7; dur=21021 + transfer-encoding: + - chunked + vary: + - Origin + - X-Origin + - Referer + parsed_body: + candidates: + - content: + parts: + - text: | + **Analogies and River Crossings** + + Okay, so the user wants to understand how to approach crossing a river, using the familiar concept of crossing a street as an analogy. That's a great starting point! I'll break it down by drawing parallels to those street-crossing techniques. The goal, of course, is the same: to get from one side to the other safely and efficiently, but with different hazards. + + **Think about it like this:** + + * **Safest Option (Like a Bridge/Crosswalk with a Signal):** Opt for a designated crossing whenever possible. These are like the bridges and ferries of the river world. They're engineered for safety and are the top recommendation. + * **Bridge:** The direct equivalent! It completely removes you from the hazard. + * **Ferry:** Also designed for safe passage, providing a platform to get across. + * **Cautious Approach (Like an Unmarked Crosswalk):** If there's no bridge or ferry, find a safe, natural crossing point like a ford. Look for wide, shallow areas with a slow, clear bottom. This requires personal assessment. + * **Last Resort (Like Jaywalking):** Wading or swimming across an unknown section is the riskiest, like jaywalking. Only do this if there's no other choice, and only after thorough assessment! + + **Now, the "Safety Rules" – directly mirroring the street crossing advice:** + + * **"Use a designated crossing"** – That means bridge or ferry. If not, carefully assess! + * **"Stop and look"** – Absolutely! "Read" the river. Look upstream and downstream for potential hazards like rapids, waterfalls, or floating debris. Check the depth (a stick is your friend!), the speed (anything faster than a walking pace is risky), the clarity of the water, and its temperature. + * **"Wait for a safe gap"** – Time your crossing well. Avoid floods, bad weather, or dusk. The calmer, the better. + * **"Cross directly and predictably"** – Plan your path carefully. Face upstream and use a stick for support. Move diagonally downstream with the current to maximize stability. + * **"Be visible"** – Don't go alone! Tell someone your plans. + * **"Avoid dangerous spots"** – Steer clear of bends, narrow channels, and areas with obstacles. + + In essence, crossing a river, just like crossing a street, is about preparation, assessment, and choosing the safest available option. You can translate street crossing tips into river crossing best practices. By understanding the risks and choosing your method wisely, crossing a river can be just as manageable as crossing a street. + thought: true + - text: |- + Of course. That's an excellent analogy. Let's break down how to cross a river using the same logic as crossing a street. + + The core principle is the same: **Assess the danger and choose the safest possible method to get to the other side.** + + Here is the analogous guide to crossing a river: + + ### 1. Use a Designated Crossing (Like a Crosswalk or Bridge) + This is always the safest and most recommended option. + * **The Analogy:** A pedestrian bridge or a crosswalk with a traffic light. + * **In the River:** **Use a bridge or a ferry.** It's built specifically for safe crossing and completely removes you from the primary hazard (the water). + + ### 2. Find the Safest Place to Cross (Like an Unmarked Intersection) + If there's no designated crossing, you must choose your spot carefully. + * **The Analogy:** Finding a well-lit intersection with good visibility instead of jaywalking between parked cars. + * **In the River:** **Find a proper ford.** Look for a section that is: + * **Wide and Straight:** The river's energy is spread out, so the current is slower and the water is shallower. Avoid narrow channels and sharp bends where the water is deep and fast. + * **Shallow:** Look for gravel bars or riffles. Ideally, the water should not be deeper than your knees. Water above the thigh is very dangerous. + * **Clear:** You want to see the bottom so you can avoid holes, large rocks, or debris. + + ### 3. Stop, Look, and Listen Before You Enter + Assess the conditions before you commit. + * **The Analogy:** Stopping at the curb to look both ways for traffic. + * **In the River:** **"Read" the river.** + * **Look:** Check the speed. Is it faster than a walking pace? If so, it may be too strong. Throw a stick in to gauge the speed. Look upstream and downstream for hazards like rapids, waterfalls, or floating logs. + * **Listen:** Can you hear large rocks rolling along the bottom? That's a sign of a powerful current. + * **Test:** Use a sturdy stick or trekking pole to probe the depth and check the stability of the riverbed before you take a step. + + ### 4. Cross Safely and Deliberately + Once you've decided it's safe, use the proper technique. + * **The Analogy:** Walking briskly (not running), making eye contact with drivers, and continuously scanning for traffic. + * **In the River:** + * **Prepare:** Unbuckle the waist and chest straps of your backpack so you can shed it easily if you fall. Wear shoes for protection and traction. + * **Face Upstream:** Always face the current. This allows your legs to brace against the force of the water. + * **Use a Tool:** Use a strong stick or trekking poles on your upstream side to create a stable tripod with your feet. + * **Move Methodically:** Shuffle your feet. Never cross your feet. Maintain two points of contact with the riverbed at all times. + * **Angle Downstream:** Plan your path to exit the river slightly downstream from where you entered, moving with the current, not fighting it directly. + + In short, the analogy holds perfectly: The safest way is to use infrastructure designed for the task (a bridge). If you can't, you must become the safety expert by carefully choosing your location, assessing all the risks, and using a proven, safe technique to manage the hazard. + thoughtSignature: Co0kAdHtim9AnDn0f0N9wkthEGCKQ7VwqPjXbIOuA6H27pkDk+v2jvtdm2zjqJNonVGnrsjX+H/RuUb/6D3jqFOEkItN4rabaijvmRKzAZE0nFXTIohbXVbFAlcrwWsuoCiEr9oxMnP3XsZm213rhtn1ow7we0KFBC+vN5A2ETHPzza9BX8iiTsh9v9KkW2UWogbgbGdsBurvWK3S9uUuQGgvu9byQ0jK+63HGKxRAo99ltmiojPsrZ9pmrgvDxH5VCiUpuuoE+UtmARUa/105Gx8tvInQY8AYQr6Hen6Ddut5VJBpwN2+ZeGp/0JAA1XFrLi4xKo+7MU/i/EvQT8X8wHyPooKZ01IJglcVeR5PjAQCmZL1sG6Ig9osAzVrhLw1QcF+gRafBNT3tLpmCa2Lo/m4vbAOWs5df6Vn0wZl+ujak2SzFcOCDQhBJQUhmaLCp0Yf47DDVRu80sOHOJwz/s0ovUsULSj+zusbGoGXsVVSMJXmcy+bail9CbUYtkIQuzE2t2P0eMfAWpKMO9aiQyR/THmalv9LNTOS+iiNELmP2phzUIMR6OpovA1QUywhyWFajmqnwZEKxy/o0SfU4ttkOsx7aM6AVb+wfUNpzTiSwoK3wUSbdqO+2eTgGeVxVEbbc3gea1moue/6Dx326Co3zlQMVT6vxglwhJkwh9WD5BT2bpdYzHf8LJujbU4B+bZABSc3MpuAQVH6kjShtXJgpluD1L+y7ZdSbtkY0QHqO9Gsgi8LbVXgONBCS2XuBCrvGw38VDvvz/L+/DFq60Vn08vEFcyheJPRCaimdEIM+V7vMKICrhNKNuev/TUdWpQKxA30MLMrF3WipwoFCSMO0ZoA6v9XIv/LqXB95l/KT1FigeVhRHnRWyjKRcCAdTJVPs2WOHBcKuMJuGy7+AOy4NDrt8aTxXh82m3uuA26RGV4c+07ja7IjrdDSLC6RhvDOraXUoeeU6F5daauL1jCYdbw30peuHieneakZXWtVBuDRgZ7tS9rNDSCgFXM3JP/OeIW9z4yPJugOdaSH8/2O5Xgcr/MUObKaKVfJPLMycmo89S4MryQq0MR/+2dohkAeCz+fBsCwCImiW8uVrtMy1lJFvHNSG98NXTJsvzY7LKUuHjQnyuBZ3KIgrPPX/PMkqD4F3yT0cmWSR0qyTt/pL9gW06Qr4IQt1DjlgHY1PqJXg+QZ9OYo3r8lfWU0JEfaMFI0KKz5bkNmh0UMqDOHvssELRjBhkqtAOOqe9mcI9YZErlkHqfJKXOFikANHKHbuSiywmHD2hSoOuhBhlw/ldiFRf/Y3dMvMHqdNdE2fz3xJ5SNeuaihzqvPdOY1ifYFPw9WaR0+IQReLB7CK/8DGiGEs04c4tPZg2qnMp/LdCXOaPdqq+15IPp1LSMUujtkmQ0rNTEK/z86E0FC8lZOBc+u90lodyeKPqpcnbQpuFzQBmMm8sRDixml/JiXloyNwFC+0H8Ke+I2eE5v+IbvVOjleGgKgVE9v26ZAOXdL7ndIrRFt4qwmtWj2+FlaVw3ug0O1+cP4kjeczYAGOw7asc0DLnUdPmu9I76nazgiVhb+A9S7efVciP4s/+D29JIBaLCKnCpAS7FabcYm0UGUGoqAGq7PaDynE8tWpAssaONg6UZy8+NNfjcL/tDq2hbCWpPDX6fgqqODvT4QUjK44n8nkKD1hFDoxswWru/m+lVJsbzp6U5aMkqDjr9ztRqaEw9m9ClfQ4ARa4sceDugvGohkPLNKEDq3230hbUvkpkLVOxo2o5u9YwSCvw9DU9CDPJm75rSXy6AJ+obe23+ddmZdWek3tuUscMcLPQIPLrg/ujnXi8UHX/7J26EvuEPnOv9mdZjQTcpJAHdR4HBamvuw3RD7weLvFzGQzWnCBd0K4YPkRUQ2k+gYW2bJfjGk20nrRI6jZ//qTV6M06MZHfaR6G+xAoLkX/KRPB/LPQx9nR516ZHduVyD2jPQwB+1G3+niX0wRansHmGuzadGQvK//zRnrka72NMUu/XEXFROS/ag4jD/u4q+S7+OHiBdQU/YeHIoBeoGMySuEGTYoPh54kDyqeg3pW2+4xQLzZJxkiyEGAFR5Js4rLoUae1pSPBPHLatzeshFBOBOIr6X87FtEXcXvFL7/BjaMbih7b0ZBOcrDq3TPRHCxirKXvu4UZ7HrknofPwmluORotvP2v4YENvwgbDZ7AgAOGEQxHvQ/AnmPoZ64y0YipZ+UkoBaNvqynYBLsw5T6wb9fT/1LMuwldiHn8l0nS61W6zBNNfJXHzaNbSiNDAROqQKugOapjcTWgUFXq3QArvovSFb3suToPF6YwXEDmF6gPtlOm69mvQTf++Bx8r74HVj9bFgNU+Ul5UBPJ3SyqND9Nl2rGeoFDxHh+5RDwYVHPkwLb0yr8k8XwWK3fxiZm6/fMEa1eRcbIAS3eCcJTPNA8+JWBXGJQbQDep0V53cOAEg50wmykN4PjbKX6D2xnWpvQo69w2YJmXJSuRw+IXiXXhs3qViW83zKyh1ySFro/bNoyPd5M3fd8SysbDP9yRPZdsOZMTY4klhOEGvy3447tVTtBsV/xCjeU+X5UwiTbs2W3FnyrWJ0MKnGWpBrTE1LwmpbguX0qbSVP3b8rpBojDZVEOo6YdnTuw8xvYaJsRkxLbfplB6J8/FylscwNeiD9OU/HL50PGWmjoo4OlN0H0jBk4MZ7nm//KWLzKNBD5VnAiVKeJlWucV/HNQ+735rsJTjyhc6FkG9rv7OAJmmiMtkt/vQTNinUFjOdUQZh4cVwQHC4fXKGweedhUoPjwshrjmqvp8c6y+NFWnN1UscKi4qVnLSMcMpTuwj6d/vpKfR/qKWsxqf63RdeiTIYBauX0GpEtVU1Q1Up0lEl6vymufuaVBGMjbpOjCHz9LxDMB0ssEv7gHxSkBdK+ghumNZsQ7qJSJiCxM9I/dQ8fF5NIFH/lktldWwuE276zrB4iWhNty2HNTlgwtR/7LAWg4LHPvHOfefY95XKr1B1vUN2HgnmV3mspM7Nh2QegxiX35sIp2uCQV2C7zx26c/71XvlAPDPuk3yGZhkm6Mp+UfPTy1S7Npc7DKGN0XhfUpR1I2LGwx0n91k0OBlN1r/53v9S7DV5ZUdRnHvqainmBc7JBy7MblyjqDmrfnIeiVt62f6wa/SiMD0Xx5qkhh3LZSSJ3yR53ha58wSyoBl/zDCg6pyH3McskGoC53dKe+aaf6jbzogB25PgYoyrJ+flSoFXUiQ7y0Gg9v1nIQWwZeDiNkZquAedFiuUHYqFvTlsXWn5QSDqttziGkrcEk/Wr0ZWoIfFaAD55juPnWoWF2kKbJn/akd8htLGIqCoDxei5/m32bCsE4S+dhPgPpjvPWQ3A+3x3dofdBjU2YXkf8i9kjybHFXhX0d7W6DVOplnFwZvY6cDdQn1z5s6tIZIXzKuMtUcAalK0my5clNnfjPUdBdBEU1uM9FajHYtwd8Ahpl558+yCB1VBH9Tc1/gtVHJaWwPx3tr8q+XQ+eIY9Eb3ki4aPwgSG/H+Je5kypJCoHh5YRCTyPZ2qT4baskwxouNzgOzNNNxWbmhZ7Lb12PAcWb7F6atQz549GWbr7T3nVwx/Ne98Sr22GmGuAGOka9Z9lljbPebpgzGfBn7z3fSyYmnPAOKhoWsNH1P8s41IE7riedo8RLssfnPED8Hd6LkMeCr+gUGZJlhtmAf9AAw/dtrOZeYBemNUx1WMBfME8Ay3hc8QBPf1GDnNJe1hMLbKpV378oYdWkPIkNqsNQV64Kxw5RT/wNfTOislfynQL/1GkxpyjL7evs+OBGT37Xkg2+jalDs2/E+0ou7NPvBipsVt6lXFZPRNcFee8vhKacpYSwqFUW0W9r5pdyDW9zeL28NLkAkD0ObGjbz0FyueOovGF9Y1Elwvvm4/xjedz9TbnmOBztX9gSBJ56wu+TvIyZBwo/1O9VfbaOSuR9wi6PGRiKeHseTRF4xbXqxD2H3Xurl/G28zUWUs9SEl5NdAqeDJ9sqQLq+fGvRBW+IF5BXn8o+gMApitq39vWcdWiLvl3hR7cMLezymxMfRsVHmZ8gQLmv9lcG06HLjDMhreRyNaLqB7bRoYriO2v85S4s5wEu3X960xnqcO9Y749r/BhdkWgdp4xIBxAoVRs1H0IP7gBke4s3ldIXoKVKsffO2Kf9qi7L7S3GTtAIkAHdHhqQ8qXggYhzxurezk8HxWmefNB7r8i88Gf9qVRPwtX2zWNCefGq+mT7bVTNYe+ZvqmehKqABf7XGUsprjupZ45wTDPqHdFzjaFkDGRynacwsyib6hwfxqnGKK/ss/NcCLwxUQKpnGDqDPklJJYeCZbpY+k6sRl9lfQ1B+rO16Kf6VNdMybv7+BC7TQ/ONQznDYNpBKxVA0+475ouPsd0edyHNXGqXge1+RTG0RTcypd1dNppNn1kNAkkTvPn4gLe2tsVs5GYFcLQYk1pQKqZDqIzwMpTU4lDsSe0cq4/YAJXx2JJBp81xmUYsXoTJHkVbxUhDL7d+JisdTA/BNU3ptN5kCDQYlfqApv+HaBLZBM7+9N1RtPS08Z4Y0q5SxCDDDIh0Fbc2TcWpbKGrNAITXd9vKJ2QpkjHUe88/DFxg6FNOtOu3rlpMoGBZV7OMwSqljjhk/FxX4dqETnrduQpQuvR4304eNdtPeA1dmhlA4nhS83PrqHr6CpT29s/VzXMOE0FHvE+nDsAecNEZ2sgk7m/fsjUuQ/0CGTYxlrPcUNqm3NFN2x2FxLKU2Mg5YurNOlFVdOceyzn913iy796paxmZgjdPP7ergOJAHqYEjYmEzOI7FDOqjZS9BjQGBEzizho/y0guA2fqUE1J+mXhISER/KIRbNC5gacm2NWR+/Eo3O2HxYlpW2apEMtcJ5vrcznCncPvAGG2zzClrCXzsAwvBFeWvgHOjOK4pqYSTdCniYQGpb3RXw+dODY6TKQJJ8Sdgslltgen5tzZKrkrowWOMbxdgYgcLH0fZuPsM6d32sryfqP7k8yyGJ1Oj0cTbDjLqgCwoVXLdc3hgRCJETxYGy654jcRG7s5B7oRmLxvdspxnU/aVPNdcjW9B3IYTDv3VFO/hGPggcbqf0N91cWY2nCscSe+uuKxkCRLATbulTqef4jcFxfDWLXXjS7G++F1dzqvqetvIOePDFYIRKlr7zWnTaKpZl2CKSEoy6pKWBiggGIZcKze17g7T3+lg3vus8qsGJ29hValkVJRiK0XdQV5O9epVRfoGkURjGRY5h6StNjMifIsI1KYR7mwxmLq4Zo5E8Y7kprkJisTKr0UVnK4mY2VXtzIQwkqvDa63YfcFK3agFPWufNZnStl4j8DlgY1tVSxhk21mlD2btTxoVo3X3jteiHXj6d4mfLp1C2fh6/BZJf2wT319gwD376VW/fkcIYBmbWSQo3M8lHLqMoOtV8xYgLEv8P+gPY+Fign6ihst01LVuqjh1okeT8vCYVqqrWbZX9CSZl4UrlPdEzgG+Kfrq5lTR9kEZjoOucvIp+bWL4mXVcjjKmxZUCQLdR0N0hAvIeeGy2TM4bjl/EG+nRfEqU41bBhg11YQRjHEtPRNU+5yOAzpkdxNO4lwU68MX1coaHT5YiMPYw9w6IGC4tX+bKDE6iVs/ierjFE1drNmZ/9spEKsa8QJJKZszTCc2DB7oJavfkaXzqoHhfDgOmal0MkVtdPBoGpp41k3IuzBlShjzzzzQd5BQVaGEoY0ERy5ayY9ZO5sDcKPuaKavwVBPANrKLUK/CZ7lIp3M0Du2jAJtMB6PMvZHVJihZwLCxCXi5dEBuMprEyOeFbkmNsNWXP74l6bhzthB2joesUszMralhr/rm3JZbgZvmPYQQXPNKGg4aIfkUbZiReK7uaqMWnFa7ojb6C8ZGS3qkpM8qW3Q+/cYSgyyI2dVf8DdGpDwAzfqCJCAtfXjsch17IY7VoCUsrVDmcAnANQ11FgTvPemCKsZ0w/e4bZufUdIBB3e+890yRCLUqwXH+rCLLOl4NgVZX3bMYL0qWZEi2Dk7nyf3ndE8pYkUXMAyAbIb3Kp9ZltMLdvgAnkzGkD3Auesgi/QJ7SnE9tQkEUUqgCcgt4fUmQzC6Kprg== + role: model + finishReason: STOP + index: 0 + modelVersion: gemini-2.5-pro + responseId: mPvBaJmNOMywqtsPsb_l2A4 + usageMetadata: + candidatesTokenCount: 778 + promptTokenCount: 1106 + promptTokensDetails: + - modality: TEXT + tokenCount: 1106 + thoughtsTokenCount: 1089 + totalTokenCount: 2973 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml b/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml index 2466cdfe7a..3b4265822c 100644 --- a/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +++ b/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml @@ -8,13 +8,15 @@ interactions: connection: - keep-alive content-length: - - '150' + - '192' content-type: - application/json host: - api.openai.com method: POST parsed_body: + include: + - reasoning.encrypted_content input: - content: How do I cross the street? role: user @@ -31,13 +33,15 @@ interactions: connection: - keep-alive content-length: - - '5667' + - '4776' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '21167' + - '26638' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -45,82 +49,67 @@ interactions: transfer-encoding: - chunked parsed_body: - created_at: 1745327921 + background: false + created_at: 1757542917 error: null - id: resp_680797310bbc8191971fff5a405113940ed3ec3064b5efac + id: resp_68c1fa0523248197888681b898567bde093f57e27128848a incomplete_details: null instructions: null max_output_tokens: null + max_tool_calls: null metadata: {} model: o3-mini-2025-01-31 object: response output: - - id: rs_6807973b20f48191bfc1575c3aff7ad70ed3ec3064b5efac + - encrypted_content: gAAAAABowfofynE_bcBtlQwnphMqkyKvkV8Sr35i7mAX3iK-nK_d2usOyX9bxTqTs2rO9Q-rWy_925tvvxVDftIty6WSJYgydfLk3_2n4aNnc--vX7aUT5db_qTyH_367MTbp_Qr_Wcu_QkOwTuMfF5wU0RxF5PNqKwg1Owpteut0jDGs0haA6SHMMskH0sezDb9VXSTHaIq2EQuaB2n5nAVi6hy5Z6OCScNnC4aBzSnTbPOFi2qMGf4vZwyGpl-mPZn6_kEtuN0ov7K0_vj3MyT02QHrk7ADk1aWu1GFvQHunYJ8LPV1jqZnwP6ovVI080lTTBXEkwvvjJxSmt2UE-0JJ3rlKDXVEC6U-k6_wL95LbXc0MqrFSO_yLNOnytNnTctYSF6i5mwID994MvNhF_L7zRLllV4uf_XrTSBD_oHmcL8R9E5Po= + id: rs_68c1fa166e9c81979ff56b16882744f1093f57e27128848a summary: - text: |- - **Evaluating crossing instructions** + **Emphasizing pedestrian safety** - The user's question about crossing the street seems a bit ambiguous. I suspect they're looking for safety instructions. Given the nature of the request, I should provide clear guidance to ensure safety while crossing. Simple instructions like looking both ways, waiting for the walk signal, and crossing carefully would be appropriate. I want to make sure I'm being responsible and offering helpful, real-life safety information tailored to their query. + I want to stress how important it is to look both ways thoroughly before stepping away from the curb. Being aware of turning vehicles and ensuring your visibility is key. If you can, make eye contact with drivers to confirm they see you. While I'm not a safety expert, these guidelines aim to encourage careful crossing. Remember to "walk, look, wait until it's safe, then cross." Always prioritize your safety! type: summary_text - text: |- - **Clarifying street crossing instructions** + **Clarifying street crossing guidance** - The user's request, "How do I cross the street?" seems focused on safe pedestrian practices. I believe it's important to clarify and gather context, like asking which street or location they're referencing. Basic safety advice includes looking both ways before crossing, waiting for a clear signal, using crosswalks, and staying aware of surroundings. However, I want to ensure I'm providing guidance that's appropriate and responsible, clearly acknowledging that I'm not a traffic safety professional and encouraging consulting official sources. - type: summary_text - - text: |- - **Providing crossing instructions** - - I need to give clear guidance on crossing the street safely. Key tips include using crosswalks, waiting for walk signals, and looking both ways before crossing. If there are no signals, I should advise waiting for a safe gap in traffic. I'll outline instructions in a friendly tone, featuring a disclaimer that I'm not a professional safety expert. My final list will emphasize awareness and caution, incorporating phrases like, "Don't assume drivers see you," and refer to local traffic laws for the best practices. - type: summary_text - - text: |- - **Compiling crossing instructions** + I see that the question "How do I cross the street?" can be quite ambiguous. To clarify, I might ask if the user is referring to safely crossing as a pedestrian. Assuming that's the case, I’ll provide straightforward instructions about pedestrian safety. - I want to make sure my answer provides safe, step-by-step guidelines for crossing the street. It's crucial to stress using crosswalks and following local laws. I'll structure the instructions clearly, starting with a contextual title: "Steps to Safely Cross the Street." The points will include waiting at the edge, looking both ways, waiting for safe gaps in traffic, and remaining alert while crossing. I need to add a disclaimer that this advice is general and should complement local road regulations. + It's crucial to find a safe spot, like a marked crosswalk, and obey pedestrian signals. Step up to the curb, avoid distractions, and look both ways carefully before crossing. It's also important to make eye contact with drivers and wear bright clothing at night if possible. Remember, local traffic laws vary, so always stay cautious! type: summary_text type: reasoning - content: - annotations: [] + logprobs: [] text: |- - When crossing the street, safety is the top priority. Always remember that conditions and local traffic rules may vary, so use your best judgment. Here are some general guidelines: - - 1. Find a designated crossing area. If there's a crosswalk or pedestrian signal, use it. These are designed to protect pedestrians. + I'm happy to help. When crossing the street, safety is the top priority. Here are some general steps you can follow: - 2. Before you step off the curb, pause and look both ways: - • Look to your left. - • Look to your right. - • Look to your left again. - Even if you have a "walk" signal, make sure no vehicles (or bicycles) are approaching. + 1. Find a designated crossing area (like a crosswalk or an intersection). If there’s a pedestrian signal, wait for the “Walk” sign before stepping off the curb. - 3. Make sure drivers can see you. Even when you have the right-of-way, not all drivers may be alert to your presence. + 2. Before you cross, pause at the curb. Look left, right, then left again (and occasionally right once more) to make sure no vehicles are approaching. Even when you have a signal, double-check that drivers are stopping and seem alert. - 4. If there's a traffic light: - • Wait for the pedestrian signal to indicate it's safe to cross. - • Continue looking out for turning vehicles or unexpected hazards. + 3. Make eye contact with drivers where possible. This can help ensure that they see you and are yielding or prepared to stop. - 5. If there isn't a crosswalk or signal: - • Wait for a clear gap in traffic. - • Ensure that drivers have enough time to see and yield for you. + 4. Keep distractions to a minimum—avoid using your phone or headphones at a high volume so you can hear oncoming traffic and other hazards. - 6. While crossing: - • Walk at a steady pace—don't run or stop suddenly. - • Keep your eyes on the street so you can react if a vehicle behaves unpredictably. - • Avoid distractions like using your phone or wearing headphones at a high volume. + 5. Cross at a steady pace. Stay aware of your surroundings as you cross. If you’re in an area with turning vehicles, extra caution is needed as drivers may be focused on traffic in front of them. - 7. Once you're safely across, remain alert to any potential hazards even on the sidewalk. + 6. If you’re crossing in an area without a designated crosswalk, choose a spot where you’re most visible and where drivers are more likely to see you. Make sure it’s safe to cross by ensuring there are long enough gaps between vehicles. - These steps are general and meant to help you think through your approach. If you're crossing in an unfamiliar area or in a country with different road rules, it might be a good idea to research local pedestrian guidelines or ask a local for tips. + 7. Always follow local traffic laws and pedestrian guidelines, as these can vary by location. - Remember, no set of instructions replaces your own caution and attention when navigating traffic. Stay safe! + Remember, these are general guidelines and do not replace advice from local safety authorities. Your safety is important, so when in doubt, wait for a clear and safe opportunity to cross. type: output_text - id: msg_680797458c0481918f9943dc8aec1c520ed3ec3064b5efac + id: msg_68c1fa1ec9448197b5c8f78a90999360093f57e27128848a role: assistant status: completed type: message parallel_tool_calls: true previous_response_id: null + prompt_cache_key: null reasoning: effort: high summary: detailed + safety_identifier: null service_tier: default status: completed store: true @@ -128,18 +117,20 @@ interactions: text: format: type: text + verbosity: medium tool_choice: auto tools: [] + top_logprobs: 0 top_p: 1.0 truncation: disabled usage: input_tokens: 13 input_tokens_details: cached_tokens: 0 - output_tokens: 1900 + output_tokens: 1915 output_tokens_details: - reasoning_tokens: 1536 - total_tokens: 1913 + reasoning_tokens: 1600 + total_tokens: 1928 user: null status: code: 200 @@ -153,12 +144,12 @@ interactions: connection: - keep-alive content-length: - - '4308' + - '2938' content-type: - application/json cookie: - - __cf_bm=t_2d_d5Tn1HQUcewbzItSqtWw1T_nqMVuoVZQQZg2Rk-1745327942-1.0.1.1-4luN5TUFhOQegehIbCloJiy1B616TXFYdp5YrM5cCM8jXDhb2R9woJs5kUT_5P.EAkFLkdzxXKg00GCsSh7W3.xcC.hzAi1u9BA19SnIHJI; - _cfuvid=m8KdsS_VWmRjfmd_23E7BCHBuwP2UxMHz7L3abFekwE-1745327942248-0.0.1.1-604800000 + - __cf_bm=fMbpHN37N4Jl2undNvKTsq6DqKx_PMw0qA.jtpOVDZM-1757542943-1.0.1.1-Hlh5haRooDmlIL1knac.PQfa.AlwuV42DxZ99SgI9MGSe7RcBlK3vFIkNbbM8kfFD21yhIZqaz6m0e3I7hU3NKkfLgVT.l3y63A6ErQW2NY; + _cfuvid=2fHJTxDbyBXyO4qPuOISpc7I8oOWU1Ys2.Eshbtekps-1757542943801-0.0.1.1-604800000 host: - api.openai.com method: POST @@ -167,65 +158,41 @@ interactions: - content: How do I cross the street? role: user - content: |- - When crossing the street, safety is the top priority. Always remember that conditions and local traffic rules may vary, so use your best judgment. Here are some general guidelines: - - 1. Find a designated crossing area. If there's a crosswalk or pedestrian signal, use it. These are designed to protect pedestrians. - - 2. Before you step off the curb, pause and look both ways: - • Look to your left. - • Look to your right. - • Look to your left again. - Even if you have a "walk" signal, make sure no vehicles (or bicycles) are approaching. - - 3. Make sure drivers can see you. Even when you have the right-of-way, not all drivers may be alert to your presence. - - 4. If there's a traffic light: - • Wait for the pedestrian signal to indicate it's safe to cross. - • Continue looking out for turning vehicles or unexpected hazards. + + **Emphasizing pedestrian safety** - 5. If there isn't a crosswalk or signal: - • Wait for a clear gap in traffic. - • Ensure that drivers have enough time to see and yield for you. + I want to stress how important it is to look both ways thoroughly before stepping away from the curb. Being aware of turning vehicles and ensuring your visibility is key. If you can, make eye contact with drivers to confirm they see you. While I'm not a safety expert, these guidelines aim to encourage careful crossing. Remember to "walk, look, wait until it's safe, then cross." Always prioritize your safety! + - 6. While crossing: - • Walk at a steady pace—don't run or stop suddenly. - • Keep your eyes on the street so you can react if a vehicle behaves unpredictably. - • Avoid distractions like using your phone or wearing headphones at a high volume. + + **Clarifying street crossing guidance** - 7. Once you're safely across, remain alert to any potential hazards even on the sidewalk. + I see that the question "How do I cross the street?" can be quite ambiguous. To clarify, I might ask if the user is referring to safely crossing as a pedestrian. Assuming that's the case, I’ll provide straightforward instructions about pedestrian safety. - These steps are general and meant to help you think through your approach. If you're crossing in an unfamiliar area or in a country with different road rules, it might be a good idea to research local pedestrian guidelines or ask a local for tips. + It's crucial to find a safe spot, like a marked crosswalk, and obey pedestrian signals. Step up to the curb, avoid distractions, and look both ways carefully before crossing. It's also important to make eye contact with drivers and wear bright clothing at night if possible. Remember, local traffic laws vary, so always stay cautious! + - Remember, no set of instructions replaces your own caution and attention when navigating traffic. Stay safe! + I'm happy to help. When crossing the street, safety is the top priority. Here are some general steps you can follow: - - **Evaluating crossing instructions** + 1. Find a designated crossing area (like a crosswalk or an intersection). If there’s a pedestrian signal, wait for the “Walk” sign before stepping off the curb. - The user's question about crossing the street seems a bit ambiguous. I suspect they're looking for safety instructions. Given the nature of the request, I should provide clear guidance to ensure safety while crossing. Simple instructions like looking both ways, waiting for the walk signal, and crossing carefully would be appropriate. I want to make sure I'm being responsible and offering helpful, real-life safety information tailored to their query. - + 2. Before you cross, pause at the curb. Look left, right, then left again (and occasionally right once more) to make sure no vehicles are approaching. Even when you have a signal, double-check that drivers are stopping and seem alert. - - **Clarifying street crossing instructions** + 3. Make eye contact with drivers where possible. This can help ensure that they see you and are yielding or prepared to stop. - The user's request, "How do I cross the street?" seems focused on safe pedestrian practices. I believe it's important to clarify and gather context, like asking which street or location they're referencing. Basic safety advice includes looking both ways before crossing, waiting for a clear signal, using crosswalks, and staying aware of surroundings. However, I want to ensure I'm providing guidance that's appropriate and responsible, clearly acknowledging that I'm not a traffic safety professional and encouraging consulting official sources. - + 4. Keep distractions to a minimum—avoid using your phone or headphones at a high volume so you can hear oncoming traffic and other hazards. - - **Providing crossing instructions** + 5. Cross at a steady pace. Stay aware of your surroundings as you cross. If you’re in an area with turning vehicles, extra caution is needed as drivers may be focused on traffic in front of them. - I need to give clear guidance on crossing the street safely. Key tips include using crosswalks, waiting for walk signals, and looking both ways before crossing. If there are no signals, I should advise waiting for a safe gap in traffic. I'll outline instructions in a friendly tone, featuring a disclaimer that I'm not a professional safety expert. My final list will emphasize awareness and caution, incorporating phrases like, "Don't assume drivers see you," and refer to local traffic laws for the best practices. - + 6. If you’re crossing in an area without a designated crosswalk, choose a spot where you’re most visible and where drivers are more likely to see you. Make sure it’s safe to cross by ensuring there are long enough gaps between vehicles. - - **Compiling crossing instructions** + 7. Always follow local traffic laws and pedestrian guidelines, as these can vary by location. - I want to make sure my answer provides safe, step-by-step guidelines for crossing the street. It's crucial to stress using crosswalks and following local laws. I'll structure the instructions clearly, starting with a contextual title: "Steps to Safely Cross the Street." The points will include waiting at the edge, looking both ways, waiting for safe gaps in traffic, and remaining alert while crossing. I need to add a disclaimer that this advice is general and should complement local road regulations. - + Remember, these are general guidelines and do not replace advice from local safety authorities. Your safety is important, so when in doubt, wait for a clear and safe opportunity to cross. role: assistant - content: Considering the way to cross the street, analogously, how do I cross the river? role: user model: o3-mini - n: 1 reasoning_effort: high stream: false uri: https://api.openai.com/v1/chat/completions @@ -238,13 +205,15 @@ interactions: connection: - keep-alive content-length: - - '3912' + - '3382' content-type: - application/json openai-organization: - pydantic-28gund openai-processing-ms: - - '21626' + - '27649' + openai-project: + - proj_dKobscVY9YJxeEaDJen54e3d openai-version: - '2020-10-01' strict-transport-security: @@ -257,53 +226,49 @@ interactions: index: 0 message: annotations: [] - content: "Crossing a river safely can be a lot more challenging than crossing a street—you need to consider factors - like water depth, flow rate, temperature, and the terrain. While I'm not a professional outdoorsman or safety - expert, here are some general guidelines you might consider, keeping in mind that every river and situation is - different:\n\n1. Plan Ahead and Evaluate the Situation \n • Assess the river's width, depth, and current. \n • - Determine water temperature (cold water can lead to hypothermia quickly). \n • Look for natural features that - might create a safe crossing point (e.g., a ford, stepping stones, or gradual, shallow water). \n • Whenever - possible, use man-made crossings like bridges or ferries rather than attempting to ford the river on your own.\n\n2. - Choose Your Crossing Point Carefully \n • If you see a naturally shallow area with a gentle current and stable - riverbed, that might be a better option. \n • Look for signs that others have crossed there safely before. \n • - Avoid areas with slippery rocks, sudden drop-offs, or fast-moving water.\n\n3. Prepare for the Crossing \n • - Consider wearing proper footwear that provides good grip. \n • Remove heavy or cumbersome items that could make - you lose balance. \n • If you have one available, use a sturdy stick or pole for extra balance. \n • If possible, - don't cross alone—having someone with you increases safety. \n • Use a life jacket or personal flotation device - (PFD), especially if the water is deep or moving swiftly.\n\n4. Test the Conditions \n • Before fully committing, - carefully test the water with your foot to see how stable it is. \n • Check if the riverbed is firm enough to - support your weight, ensuring there's no hidden risk of slipping or sudden drops.\n\n5. Crossing Technique \n • - Step slowly and deliberately, testing each foothold as you go. \n • Face upstream so you can see the water's - movement and maintain your balance using any stable features (like large rocks or riverbanks) as support. \n • - Keep your body low and your center of gravity steady—this can help you react if the footing becomes unstable.\n • - If using the water (i.e., wading), move perpendicular to the current rather than directly against it to minimize - the force against you.\n\n6. Know When to Turn Back \n • If at any point conditions seem too dangerous (e.g., - unexpected strong currents, high water levels, or inclement weather), or you feel unsteady, don't force the crossing.\n • - It's far safer to look for an alternate route (like a bridge or a ferry), even if it means a longer detour.\n\nRemember, - these guidelines are provided for informational purposes only. Different rivers—even those that look similar—can - have very different conditions, and what works in one situation might not be safe in another. Always prioritize - your personal safety by assessing the risks, and when in doubt, seek advice from local experts or authorities - who know the area.\n\nStay safe and plan carefully before attempting to cross any river!" + content: "When it comes to crossing a river safely, the process is quite different from crossing a street. Whereas + a street might have signals, crosswalks, and a predictable flow of traffic, a river has its own natural hazards + like current strength, water depth, and unpredictable conditions. That said, here are some general guidelines + to consider—but please remember that these suggestions aren’t a substitute for expert advice or local knowledge:\n\n1. + Find a designated or safe crossing point. \n • Look for an established bridge, ferry service, or shallow ford + that is known to be safe. Local signage, maps, or community advice can often point you toward a preferred crossing.\n\n2. + Assess water conditions. \n • Observe the water’s depth, flow speed, and temperature. Even a seemingly calm river + can have strong undercurrents or hidden hazards. \n • If possible, ask locals or check for weather-related advisories, + as conditions can change quickly.\n\n3. Use appropriate equipment and safety gear. \n • If you’re crossing by + a boat or watercraft, make sure that it’s in good condition and that you have life jackets for all passengers. + \ \n • If fording the river (wading through), wear a life vest or floatation device, and use sturdy footwear. + \ \n • If you’re planning to swim, ensure you’re a confident swimmer and that the current isn’t too strong.\n\n4. + Consider enlisting help. \n • Crossing a river can be considerably more hazardous than a street, so it may be + wise to have someone accompany you, especially if you’re not familiar with the area. \n • Local guides, park + rangers, or authorities might be able to offer the safest routes and additional advice.\n\n5. Proceed with caution. + \ \n • Just as you would look both ways before crossing a street, check your surroundings—both for obstacles in + the water and for any changes in conditions that might occur as you move along. \n • Make sure you have a clear + plan for recovery if the crossing becomes too difficult or dangerous.\n\n6. Follow local regulations and advice. + \ \n • There might be rules, seasonal restrictions, or safety warnings regarding river crossings in your area. + Always follow these guidelines to reduce risk.\n\nIn summary, while the concept of “crossing” shares similarities—locating + a safe zone, checking conditions, and proceeding carefully—the challenges presented by a river require additional + precautions. When in doubt, it’s best to avoid a risky crossing and seek an established, safe alternative or professional + guidance. Stay safe!" refusal: null role: assistant - created: 1745327942 - id: chatcmpl-BP7ocN6qxho4C1UzUJWnU5tPJno55 + created: 1757542944 + id: chatcmpl-CENUmtwDD0HdvTUYL6lUeijDtxrZL model: o3-mini-2025-01-31 object: chat.completion service_tier: default - system_fingerprint: fp_2d4670fb9a + system_fingerprint: fp_6c43dcef8c usage: - completion_tokens: 2437 + completion_tokens: 2320 completion_tokens_details: accepted_prediction_tokens: 0 audio_tokens: 0 reasoning_tokens: 1792 rejected_prediction_tokens: 0 - prompt_tokens: 822 + prompt_tokens: 577 prompt_tokens_details: audio_tokens: 0 cached_tokens: 0 - total_tokens: 3259 + total_tokens: 2897 status: code: 200 message: OK diff --git a/tests/models/test_anthropic.py b/tests/models/test_anthropic.py index 644093a15a..260919c04e 100644 --- a/tests/models/test_anthropic.py +++ b/tests/models/test_anthropic.py @@ -79,7 +79,9 @@ AnthropicModelSettings, _map_usage, # pyright: ignore[reportPrivateUsage] ) + from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings from pydantic_ai.providers.anthropic import AnthropicProvider + from pydantic_ai.providers.openai import OpenAIProvider MockAnthropicMessage = BetaMessage | Exception MockRawMessageStreamEvent = BetaRawMessageStreamEvent | Exception @@ -1066,6 +1068,119 @@ async def test_anthropic_model_thinking_part(allow_model_requests: None, anthrop ) +async def test_anthropic_model_thinking_part_from_other_model( + allow_model_requests: None, anthropic_api_key: str, openai_api_key: str +): + provider = OpenAIProvider(api_key=openai_api_key) + m = OpenAIResponsesModel('gpt-5', provider=provider) + settings = OpenAIResponsesModelSettings(openai_reasoning_effort='high', openai_reasoning_summary='detailed') + agent = Agent(m, system_prompt='You are a helpful assistant.', model_settings=settings) + + result = await agent.run('How do I cross the street?') + assert result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + SystemPromptPart( + content='You are a helpful assistant.', + timestamp=IsDatetime(), + ), + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ), + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + signature=IsStr(), + provider_name='openai', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fda7b4d481a1a65f48aef6a6b85e06da9901a3d98ab7', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=23, output_tokens=2211, details={'reasoning_tokens': 1920}), + model_name='gpt-5-2025-08-07', + timestamp=IsDatetime(), + provider_name='openai', + provider_details={'finish_reason': 'completed'}, + provider_response_id='resp_68c1fda6f11081a1b9fa80ae9122743506da9901a3d98ab7', + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'Considering the way to cross the street, analogously, how do I cross the river?', + model=AnthropicModel( + 'claude-sonnet-4-0', + provider=AnthropicProvider(api_key=anthropic_api_key), + settings=AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}), + ), + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='Considering the way to cross the street, analogously, how do I cross the river?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='anthropic', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=1343, + output_tokens=538, + details={ + 'cache_creation_input_tokens': 0, + 'cache_read_input_tokens': 0, + 'input_tokens': 1343, + 'output_tokens': 538, + }, + ), + model_name='claude-sonnet-4-20250514', + timestamp=IsDatetime(), + provider_name='anthropic', + provider_details={'finish_reason': 'end_turn'}, + provider_response_id='msg_016e2w8nkCuArd5HFSfEwke7', + finish_reason='stop', + ), + ] + ) + + async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, anthropic_api_key: str): m = AnthropicModel('claude-3-7-sonnet-latest', provider=AnthropicProvider(api_key=anthropic_api_key)) settings = AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}) diff --git a/tests/models/test_bedrock.py b/tests/models/test_bedrock.py index 7fc3fd1b2c..30fef5f15d 100644 --- a/tests/models/test_bedrock.py +++ b/tests/models/test_bedrock.py @@ -40,7 +40,9 @@ with try_import() as imports_successful: from pydantic_ai.models.bedrock import BedrockConverseModel, BedrockModelSettings + from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings from pydantic_ai.providers.bedrock import BedrockProvider + from pydantic_ai.providers.openai import OpenAIProvider pytestmark = [ pytest.mark.skipif(not imports_successful(), reason='bedrock not installed'), @@ -621,7 +623,7 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[TextPart(content=IsStr()), ThinkingPart(content=IsStr())], - usage=RequestUsage(input_tokens=12, output_tokens=882), + usage=RequestUsage(input_tokens=12, output_tokens=1133), model_name='us.deepseek.r1-v1:0', timestamp=IsDatetime(), provider_name='bedrock', @@ -631,7 +633,7 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ] ) - anthropic_model = BedrockConverseModel('us.anthropic.claude-3-7-sonnet-20250219-v1:0', provider=bedrock_provider) + anthropic_model = BedrockConverseModel('us.anthropic.claude-sonnet-4-20250514-v1:0', provider=bedrock_provider) result = await agent.run( 'Considering the way to cross the street, analogously, how do I cross the river?', model=anthropic_model, @@ -656,13 +658,114 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p parts=[ ThinkingPart( content=IsStr(), - signature='ErcBCkgIAhABGAIiQMuiyDObz/Z/ryneAVaQDk4iH6JqSNKJmJTwpQ1RqPz07UFTEffhkJW76u0WVKZaYykZAHmZl/IbQOPDLGU0nhQSDDuHLg82YIApYmWyfhoMe8vxT1/WGTJwyCeOIjC5OfF0+c6JOAvXvv9ElFXHo3yS3am1V0KpTiFj4YCy/bqfxv1wFGBw0KOMsTgq7ugqHeuOpzNM91a/RgtYHUdrcAKm9iCRu24jIOCjr5+h', + signature=IsStr(), provider_name='bedrock', ), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=636, output_tokens=690), - model_name='us.anthropic.claude-3-7-sonnet-20250219-v1:0', + usage=RequestUsage(input_tokens=1320, output_tokens=609), + model_name='us.anthropic.claude-sonnet-4-20250514-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + +async def test_bedrock_model_thinking_part_from_other_model( + allow_model_requests: None, bedrock_provider: BedrockProvider, openai_api_key: str +): + provider = OpenAIProvider(api_key=openai_api_key) + m = OpenAIResponsesModel('gpt-5', provider=provider) + settings = OpenAIResponsesModelSettings(openai_reasoning_effort='high', openai_reasoning_summary='detailed') + agent = Agent(m, system_prompt='You are a helpful assistant.', model_settings=settings) + + result = await agent.run('How do I cross the street?') + assert result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + SystemPromptPart( + content='You are a helpful assistant.', + timestamp=IsDatetime(), + ), + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ), + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + id='rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27', + signature='gAAAAABowgAKxFTo-oXVZ9WpxX1o2XmQkqXqGTeqSbHjr1hsNXhe0QDBXDnKBMrBVbYympkJVMbAIsYJuZ8P3-DmXZVwYJR_F1cfpCbt97TxVSbG7WIbUp-H1vYpN3oA2-hlP-G76YzOGJzHQy1bWWluUC4GsPP194NpVANRnTUBQakfwhOgk9WE2Op7SyzfdHxYV5vpRPcrXRMrLZYZFUXM6D6ROZljjaZKNj9KaluIOdiTZydQnKVyZs0ffjIpNe6Cn9jJNAUH-cxKfOJ3fmUVN213tTr-PveUkAdlYwCRdtq_IlrFrr1gp6hiMgtdQXxSdtjPuoMfQEZTsI-FiAGFipYDrN5Gu_YXlqX1Lmzbb2famCXTYp6bWljYT14pCSMA-OZrJWsgj4tSahyZIgNq_E_cvHnQ-iJo1ACH0Jt22soOFBhAhSG8rLOG8O5ZkmF7sGUr1MbP56LLkz29NPgh98Zsyxp4tM33QH5XPrMC7MOfTvzj8TyhRH31CWHScQl3AJq1o3z2K3qgl6spkmWIwWLjbo4DBzFz6-wRPBm5Fv60hct1oFuYjXL-ntOBASLOAES7U3Cvb56VPex7JdmTyzb-XP7jNhYzWK-69HgGZaMhOJJmLGZhu8Xp9P6GPnXiQpyL5LvcX_FEiR6CzpkhhS54IryQx2UW7VadUMnpvwEUwtT2c9xoh6WEwt2kTDj65DyzRwFdcms3WG_B1cSe5iwBN1JAQm3ay04dSG-a5JNVqFyaW7r1NcVts3HWC2c-S9Z_Xjse548XftM_aD97KTqoiR5GxU95geXvrWI8szDSYSueSGCTI8L7bCDO-iKE4RQEmyS8ZbqMSWyQgClVQOR5CF3jPKb6hP7ofoQlPRuMyMY8AqyWGeY9bbWb-LjrSDpRTAR6af8Ip5JYr4rlcG1YqEWYT-MqiCPw3ZJqBXUICSpz9ZHQNTrYIzkJZqPg-hCqvFkOCUtvOYSDtGkAe9x1ekPqlV0IuWLxAmjqbkGH0QCaYAF90wVQUgWPkVWfQ6ULRz2sveQDZf0P8rVZw6ATEvZVnkml6VDbaH69lMyvzls7suvEZJxS5osyjrGfkt6L4nsvhZS7Nuxj2TcRxSEXxo5kULEqAO85Ivsm4j7R1Cxb2h8I4ZZZ_-DnkbWsgd7DELMI-CYtpAWLFl4K4VaMBT6mNAuud545BemUlWnQgmrde4aS7Q_W5GP11iQea9_JcJr6DMf4Y40NDr_fPVU5p7q1bnc1xtwkIpyx0uEeXHEZDR8k-5apBXScJtmelzpiy-25oJdSU5xtgVPrb77kVyJofPtujplZoqMh6MOqTdIhIMm_Goy_Wne4W39hVI01b2vwduBaCCaX6M8uACX96s454WPitX4MYAVc65UHF0BTFskEcbY5bFZpzcWb39VTfra-Ru2URvdo_66qmUd-03XzLKiMsqJHGclhaU6XBqaIo9qD8FjLVT9DOx56eh3GFvYA1dxvgbp6gyOg7bOBL0KDarT9Vmo40vGvwyCT_a2S_6Oki6uBU_3bf-jGvtum4tkN--wZkBrhOj7L8onItPoAZQXjYXrcXfVC1KR_xA0IOxYZD59G1rBxTDlvatIFwhvoISinkU-zPkKMpralHlxDicmJrBsKsy-mZWCF5qHeWF36pjE35dE9GxR28xw1Ed0pA_kOIgMKSKCiRWUYY8D1jAHKzimnj_4VTKR05kTp30pasr0IUMl2celsQMDv1D2atEJ_65CeRio5cnNGUR_Z73LJ-fqLkSjSxlE2YvtcKX7bdF6bSq3EqDtOdLVUjYl_pxRaUNMRmahQUJXGsDx7X-W9xUgQmAq09qT3lh1fhVUgdtUuuaoNY_M1s5V0E5ePuu_C6Duuz8WCcecbhrcbI3FDQSJn_XHK6ImLMYBowGRYVkBE_Rf7q7Hj4zdF-3bVE_QDce3syZNshCYK5kO8mvADptgdNVG7lEiZ9TIQPBd-XWRUrZ3XvIfGVJFVMjh_Laq8RTDyvvId7iQDuvq89hQ86hlfWteEl8HzuwpakWnogg3CCStX5CMGpYUWWkOCUu2LCH2H4EBaeCcAPLCmEoxcpKS182kYLm8-4ShRz-YOMIEmE9TL2za15I6BCBi9OhQGcLSl4BquhfBVHyxmkEN7_g102yI1Ocucux8q_HLMo5UZz0KALRQy4qmNpnLg9f4Yetj6msezjuU17Ji1ofIcadglOYy2J3Aswf58M9fCwCfB6hAHRYM2XkYzJ3nc0VosWA0er90zqKOeM1-erWC-skbupO-8nw9DA5OtnJTZOLnhGRjzXqna0E5R69wOHi3yvb3zzv2K9fLMKi11bCM_cnel9ItcFM-AYQ0AhBTZ3sTn-tpIf3IVNCvnCxMWvbO-MBmoexQnPorA0SL6n_nL49Y9Zb7UgwCyNGmhsFjIlSXu-YG-yCV1lVXBYoEPDwa2eCaMwph0QneXPHHMUs_i9PuFVI-nwfEiwU0b4tk8x3tWdkltvtzhjB8fxQxJNrk-ykNhuEYfQMQ0_MCqIRD097_gjO8q-eFUjnuiVqqoQ9_rH9QCxABdA8afoNt0hFxBwR6d57P81_XKOnApyrPx0DjsuKVTBFoCWccKX4DZuQT_PhmsFtPquNp6OPWQM5a8HzKntjz_HgFYnyS5p6n0hBGZVC_GDtFEm8JELcwuVoSLSXhI_XKnck2FIhHA5YQ4vLGOhCEEZoINkDdq3oNgm-NiP-DpG2LYetLl4ljlUpRBUizmWn4Fr3jhIt8rmQwqmFj6aMDSEM0Sgen9DsUH7H3uGK2NipvFv2Uxic5aXAKQ37EFjxPFqvKXlDl-hLnUXtkXLXBbmgCJJw6nBvm-SeIxU_eKnWHkhtdnkNZrmNFaq0OYZKk-moYSxEgzxasQNYGtkN89LqAhRTS6dIbb4nXa8ArvuHTJ_qpLFjGF3SSX98Y53cgtSdGTTmHQ6_v0BmeKCWhRd83vPrmFosif57AXyBVk0HJ5YdeueitsBCyXcJmeCntrT4zDlujwuMWK7wDO4vGMj3nIIyuJMJjtpD_auuDLmpYHqmKTHm8Ob8R2jJIwDhJIupkTldX5kHZmo6Nyh8tjeMgeEbp4Tp05CfyUTWWM16gaGkwW2Gto3sJtv0AiA_PzSN_dDziD5fRSH2Q2JTW4g03Uc9SBelL2fFiQifPSc3-mI4i8QHIswd_qPnSAnHxBW6SLJFqY-qIG6soLzt2VnH5hpVvakMfO27A82DQrcoFDFsqRb8KgLEoL5u-6NbgwKSNFjfIrLFg9IzrQI7oktylkFrc_EWL_smmL6iuT5WEYt4jBwtMvyDD6nVHzzx7jd8J3XQqjXfWuH_uTAX6cOHprzaPn05QRAluZgcBL-FSQJ3Qw7PjpoiLyd3DGL77nfl_m9cpAnpz3ojtajP7Gb-aq_xa_JIqxbnuBDBkeyN8pOQp--ZD7T2BOAgS7poVoqPFXRYIJOwKtOcrj6UdPN2yrx-44ZMTJYzwcGELnFRs32PKx8TiiF1pKSwo4NB5Z97_0k_WbyBwyNajMtRUPmEuTr9VoO7CBwe1r3U3iIZbBKCfJjiG5FQToqzku31_YAs5OIIaV4B9ifLt5PwUA4mO-7XqgO1VQQjt2cUQo3Ui3EKWEJ-ov7F3wf_byGsguBwv2qMuAQiLBqs5jxrJUxyYIJAM7B_TtUjpQnNERvHEkt9TxCN8Kc6L-MejMOfu3VPdArf38naQjvBjBAZDznV639bkIRED7-soJbGMcGEyGWUqAVs9vkFleO9S4YLNvFShwo3ujBd7SMMdAyvi851CXT5uN5SDtaxmQnUGzAXmPJ9-UoJF23lSGB26eMdnIerzFoYMCgWPHyvt949IrsUKnpjuxebqQYVSrppmhIIrD8R255bJGSscVwdbrd9iA9-gHoB3UzCr5pd3gfW9Z6ynT4dQVILqtj0KgrDOHw4AIBqmwaecTBi5BeyXJx2oF1ClqS_7AanfqNToLcAwaKXnrK4RGyrX_mXHUFX9cT-o-eGqhi0lifCcJixwb3kG2AhP1USNNsCz31m40_c7cm7JcqLbzCnz4hvbivUvON5rf6kQ8PrfrjNrZA73VVIKhgZBDHxsHa3skwQvq-JH_3QulELy1-6vL5Kq84bg3ZPQxOUtxBRuyjxEJkpgG-sED2pYsKrUPqo0Ku_ggMTQjvoGGYRBt5uMlVX4pdB1zhOe1ZjcvPb8IwnL_BdLX4NvLpN97KH9Ot45bLeVTCGpv5UH8Nnm5CzQ53wqsOUD-9u5hqrSwx89sF7h8TlN9non95r7b_oHkU1R_czZ-ZjL6EubsUx4w-rWKwVU7GYde-ie62v8jcaLhkM72O4B0UvCfY2t3GtruZ4OirX44hWfOPujFr5L6bOkVSMKONJFooIJ2RIwCw64Mczkle2zQZ1P3u1DrMS5s65h-gNTwSGw3qyQBwF58-um9ycDis6f6O0ggqubsCDlsW7Vdnk_GlETHLDQ7lR_lRG1g3kRQEhKz2iwzxQan01X021EJd4TlocJYafpp8HU_rgcJdUmcvPFgB2xysE6F1vYdUAdovDztLftb5Bad4aKueUfDs8haq9TBgosHQinvKFfazE2StHUaEAVK_BiOYrH1XsrFQlXuMwhQlRgA9L3Q663gMrnhnfcQPSNd7P5EhqbadtddoVrLOKhMD5yBJj9RiC0vamCGVr2LA7hStIPBGysTBanE3u4bT-TKe2qCOskvfR2xU8NSlai9b8d57zkuxklf7LaDnMi-xu9TOqduYFfXOn87uqjaN3_emcq0NExYcQ1fMUMcbOuGoW6qeWlWmMtANjI3VaJCa_v2JYJ4cyl4gUoboC42d2esKg_Em2XfqUkKQh4XTG673LC1ebToWGPRvFtTQM3gZ4Wh5JY4pL58VeSsf1jhINWsytNpgGckHCK11BzUUx4MABT2BuMWf-a_5DV4KYdmXHn_AKAqoZWHgE2hC2Q6DUEaKTm7AV56Cm5vo-NibALDGH1zG8ih5C3dmHvQmES7vUOVM1jPS6k7paHXEwnPFE9M-zg6XmjKjdvSZ04lauZEeCjSJPb4E_v-uWlwkdHsDcTxfj9oTjfEpX0mZxIuT_Ex7Mx2I7DUHDUQgKgZT9n1TQym9patiPO8VYzYuoXrsEeLS1Mk5N3AmQXeB89x85_Xj2plBbDOqqMpAD2uMBXwHI4kut10unkHhl3S0JtA1tE0ukxTRaitpDQveHfao0tQC8gy4JEA6M5AD7iyWOm_iuW9baElC-R_g_6s_X1t2qv4mWwd8P-h7yFm4XEZg_oJEIA40hGwSPKD1d-b9QRz7Kl734V5RvMw1ekdsvZ9dVKNcPffkGX0inTp8RgkOWFUnS0hZpxuNbte3-rGWEt6Syy4x2jaH-Zr6o667kigSt1Q3cQO_eqQtq4VWuFmYIbDzkEbIKmIHY52gh-rB5k-FMQqCs-ay5Blj_IpvfcImMtrZBrbhL89gzGNRonBZEa-9kJeu4jr2_DLzw14KJR5zVNwiGLub3jJkgYqOZZ5ee_oNchx3v68S3wHyFnZA9IIaXRZjYLMrjD699h9SZvkTHdGAwICpyOjrfYbgX_7woRp1ZWBslOamnw6mDqJAk22nb1a8cpdGNP2IjXVRtuqIB8y36bHEFjChDTxERZ2dsz7a2mp5qM2Xz75OGBM77DAjnGpU7GFXDnolAnAsU5T3dd-LLnVlVhvzyuZWg7ZdH-0WsVVCezyIsQnm3WMpdPrlUcHtT6fyY2fhJVIm1QJEES5wEiEPMRrmGQ68V-q8TWlrPan6LU5Kr8Ak0nJKhE-r5bcaemeUbIsY4a9n2YDZck9CI6VGumMccelQ61Bhs5vgQ0W4AID90TXnUtJjWrVcgdhrLCWV_kv2_YSqDDoI6TM0oJKNaoNeG2HXCxXpHy8izUvfMwHvdniW3c4BPnvMpQW83bXrMPteKk-CFXdwQ6bB2PzzXAzWTp5q6D5cLWAyPJjju4AmopBUJmRwp0tjulMCClWqMiB08y8DIWDDLAAaG7Q-de-_Q-T6tZy4LRk_c0sYOtAaNCA1HgTDSLvP4j-xeuu8DrKv5SqefP2J7LLFM_JAi1gRh_84NUvUDvBdexr9wZI8eXjnnoDvP6KTosKCLmSC_ErmtzRXfUg1mz5fNVtlKSm03tqzmfL46iKDATVuEejDtlo34djj7uBV5DUw4lDIpQY1VsO1Ozgpoz9i8sNcRKQ-K3Of-vDL6R28gLBUq0Xo3nm1hAJgjc68C57jrMlJhD8GM6AeoGnnhDTfJ2xuxsdnH6i06qFUKcuTmA8l23Ek-A3ryx8DHAIaRX40d3e5MwaUqbglufHWBGId7KBiaiFuD3LhJC0CLl23XyHf225Rd4lir9LpltmuaRLnyS0FwIGZMaRmxQ-SWB2fDVzj81SJpo9lPDsuLu_ji7AA1cx-PnTj5fVp3APeRmy9E0A2v8hCKm4C6tPuvgC7Xp6MV8epxYIsGRiTy5wlHQE0FUuOdBtBH0rmGJDf4HQJoZHjhDhOJZqkvlDtEowB1mtndHgRz-0lpQurRm-RwKvl4n0quBfWZ1GL_PmiZIO36Iyyw4BRt3c1a5Zc5ilweQcle_-ZxawS1aAXXOaknt2c6AGB5JnmrTz2dXS7A8M20uNp7Cv8RoeiCYjPa1Co3Nr_6BuQL7HFxNsyk1AXDbG2qUJljSeWG3YFkaPHxgTw7aAefXrFFL_GNPi0YtageYJq3WN6lrdQ2CB0g7QLoj9dsHlAGhm8PtUESBUBbSyJVOm1lCuGGbB7psYxOLLO3BSqnXHb0--sDiyCTKMi-80rtMiHttXC3zAxXUFQjTre3a8KNohgPWx1PTAbxf96enJ33rhBV-2ewMIROT9j-K_Esee0eWUcTmt9v0yHW-V5ij0Hopx7oaXadNQLdgBJwUDf6R9xEktHhzUkyJ0g73gjrKQz2EidorhljD9LSFMAlUuRTkUhG35crMduH9TAAEgOHXZI24CD5Fz3n2KgXKoxWHlpaLlTwBXK1xLHVCrqCqvsBo60w5FV7cmdNTBjFbDU1EKSHLopt_aMgtT_6Fg1ZT6H2p0CAvvbinLkTLop3pSVU1_itnzRHOf3ayHzMrmSN_pI_03Of_63ZuHJmRWRCd7s1PviAo-B1LcG52VTanJz0JCF1RAlPj9-2DIgJLxDgNcPI96cTqZBbLk-rwKlebrmX6d5CBg3V5pmJKkgLIj5FpTmhiXhqDHHJvu-BxfzDQl2c8QtQYF6aygihfCCluN5biEv51XKRDpC-S3sU3USofDTgcg1pznwUvVv2eL8nWywckhIHWnip7z_ptCTmyn7BEzzgRgGLA_pLG17SPRJP6laoXHG_dprfpRM7gcLJZQ2zk29W2zVEpFwWePGpnQbpPjPqcOBiQfewxwnLHEuV8yGBR7Y-SEKrc6M6v8AHYk9oLXaRu1qBKkLUKSzKQhNFtfl-h-J8Adf0W9hxYSt6QNzf1YUuE8H_w2SrUGcVnsCnIQY_xu11sJ-0d-T2oFelzeEoasMeeCDamuFQye14ps0k4cM8vXpk_7ZrVE7rQmEpW40_n1iNHwB4UINg9CnQGXH98DzBBCoGPZpA1SELOwGTcJGcBZVQ5Tfey1SRFwXWJO0QFHfDb5-_tQUj9o30MhJBGxOftnwLaFROLgq3FuSBRM9dYsdlpHe1SILQXKVIwjXcOVMFgmbDq_hMSNFlMvblX9LLBduT9cXk6JhBVcxb8-oKbvbjL7zqQHOgke3ZC6oDEvcew2YzLMiNLiyGxJcthsyDfrWbhbq9DSRE7lYq9AVeh_Zc2wZq0RFh4CJGhXtW8WobIOY8JPIkyQKD4W_mKRxchykWyrCRliFId1Tzbgzu1NKxdZLiGZchs7MRgd-c_Kk0mDAvcVqyCSw5ZnlG8qWxmgwods9KD80tww2Bvp87a9Jwf-S8_PhqqG3ggGuLLm2CH71h7v6uA7f9-aCJKnlPiyb43OU2IK-rRgJf_U6VNAs1n0-RwWlaMttgA5wcecqRUlkneFkWpJOKDXpuAR9vwfoArMnPnp0jGQDN3-OPymX4xsYY6L4k0zC6j3zz9K2wgcGFD9kliVy2qwbeAqWL37Qdnr6sEbkxusF6IiYh-POUU_8rCQX03_uw0XHroHwK4mFajchjXmOY8ykOBQCIGPwCNI446xFhqWFDytDTXq9Eu651PlEqDELIcRwQz6KYWNJNlEFi4_f4GYS8sn0wpwte5R9QuaaLjc38obGBswmh15l9PrMvrWklBnnEZpV3NWmxQViKWcuey_QG_hRfQ-8Kjhv0f4D4L-d52x89yVXeVu0wbN_GstklEGCCecqvmQi1vXDf2FKr69Md-TE-mAh9pA-72vepP3guNcHz6PqzzOQX9Sj1uNZCkB0heHrXuCunn_Elv3ZvHZ-9AE26ybqtRVxaHtYrbtX9AKVk7ud_YdFPxSq-HeavXCXOBDGxEVleN03Q01jj7xoz5MjhKrVDF7XOobW0xMLtPfJLLmEGkBtSrLFCDGo1T7T3DnEiFQzXZutM50_l0k_3DxzDKhI4s5rOeeTMjSXDaxjM52LLgwAanVnMtKEsEXFVF4b5xvu_xn5CzqW5T0TTDOFXm2Gdxj-t59bgRGmnO56K85rTGgeJyXBroTz8cS4hkgfm2fQKiDAQZ5iMJeY4iqKZJTrOYb0IueB_ez-I8XW_dibgUd-WcJNKYKf4KnZR9_Z8o4OofbCdVj2mcgunpgjbTCORNWj7IpYmkHcbIQFtXnnts_2WNf-TtE6xr-iIVkwGABYE7ugHl1BUO5yKuDmeTOijSxWQGO22dzPnGVQ4O7AuXUYBFRa6FKVEIIVyk49ggvgRFFerncqEW1s8LR9gCzMIsxH2jCOyOSqjWGdZncRqDWhF6NYgFsqs3BDGYspC1vd9KFYppnH5W7MRYb2Duoi9yb7SQhNarto9KaqqgiTdEWeOw3kSkTZxa1moEh8F3ueFWhjQXNW4I3_inDPUdw0Xcf703y7uitnAsi-235tGC36JkWMR9M9Dx1cQSnS0NWhOYjUPPrKSHW8QCY-ZAfEUSJfixJeXEEUI0YmuGlFCIrLFvtlqFjxzqJW4JPCfnB0jCC9Z07d7rwHznYBSkr_cis4gNwnPOa11060WODyso6zRSJ7Q57bPhULvgnMZHZq2hl5dygeAz-elG8XYIUmr8jwXKuVGT_hl13cNI5QHaxshgdJuTzE362jxI4c0usFIVIzwhX6KqDFtWIZ5skj8iGioS6pDkY5tTj91aRu1ZL9eQ7KSLBbPeqhZCjQJGuudUr4u7HGuz8lQR0KvuZqKGGaybbPYwzJSx9qkGwqr_RNT7RW7oDxNiPlUHEf1qvED5M5FBFt_YlTmVtLQDJHRxvx3jv-Nc9pm6tew-et17Z0lMcXypXhr138RTXZYHSwJXsHMTNNGZFHCuZsyrq-PywrzCm-i6tXstJXx79s9os_dAaYgMtYEjPNRCb29LjaNw6OL60MKAl0Fung52DEDjnxFCTp9ygM_IkmLw95r9nhdq3smfsasefn6cp3YnEG3skKDswqS2Ul8Pilfqz3JI7mVucw4zA08ICIXAxB_L8_MPXUPPrVrdcf2HHicjjFs5L7mabPyv6blX2uB0BJ8Pcsdr_qdm-JbxmEEZZnxmtaG0VPgo23-DaHHIdMnNa-4cElpS64Tqcanin5QIsd1e1jIBJcjLmGOjV0eJpawOICK6dIhgdAsgLyXT-ItiUkVc_7NrPdpe0Fag7jMtvqXlvi-JljdILhGfbT7o-rNPY2iJ32jKUIDVZTSADQRf7Psnt40y3m1Ccx6aN3JVhNrgihrfjMF4rhZkqrh7Rlzs350VVOar8RblBoycjjBh9-xyXXSp4OWebr4rK6w76HQqKoOdQZvFrBG0Y3Qfkq1tNnJyy7QA3ZZwhnVPzmvi7GeCLIZMNQLQ2A3mUvZXcmmcI2NmLBJuTHoQ5IBhmtMA9_b1qVTt-8iy0jIklazgzzUa0Zdl3IAuptdmJT7AGneTDhrR60WBnxVbbjJa-_LvOyVdEVimw6wNuUO0HIuyLo7s5MkR1D1SNShzV7PUtM2YKxUxbE1zEHkqiTIF1P5RxIhh85XAaIaJMlIxjhvtIUy--jiuzLh9HDDjDCuSMRrqOk958lSAkZnProYbHuRI12ViZ561Z4-whNCQwctuoP68FvRWLByoO2NtNSaPBC9aqNx6OWHcTTGdaip8MZLmD_xPjoq6O04HNxBsaCQeo2xqMkeoB74m_8HtZQIPHyEgW2cAnDDOPDRFspt8KN9TMgAWTf_Pa7eI1ZvWo1vZtjOUi9E9SARkpmtFNtaQP_NRLp_76h9B_piPJCdzuIl9QXbwscJOaDHIlYfeauN1j1zMGmSY1jS2UPNPF7Qfy1wUcdxLFuzGy_1YPe6i8DoMimj_c995kmHFKi9jIdBHrTz5p-pX_E01O95Wd1mzgCeQCo643zzQ10c93MASc5dgHgCjyTfT4RATHXhVrhhjnamu0xnLxIHt0qA43qDfQd23xzzp5gA0KLoQ-b9fYpo5tjD3z-A6BuVES9k9W60WN3nwxJiil6rjHSHxzq_rmoDj--EOBsKv5TcismcMk4IdBgoKWcsHGW43c5t5gmaA6c1QZPDHZWTnkHPZIsH2U1kMcsNHoWG-H-xQ65cz6cceu_ATRu26etMuEZo4ecqNSENhCQq7NlkEnWVacuW7qybowkEr2uIU-BB_wI1oHPKVupH-0ZOHsVZOgktQ5g1DWiXUVloBabeRIZJt7fDYFs5oNgXxggElnN9fK-fb8BQb9j2BraENpRQonC68YsbFQLoyefvK3WnO1GFQQg7qDqzhU9PgMU6CIYfMfuHAoFiXtaTsnykAIv7m0nckJn8nldATLqakn72ObT_rzRQXi_cKoksBvKel4sqg7FtoM9no5s9a3wT1OwRXNUZ5Jg5iYyFW9mlRV4-Pwo67XhiipGG-iXsqxlhmDQjmeJoBfOKfm3MWJccFO9hMReoCp1DDqP5wxG_1gFMhl4mHPgxQW24pRrYOO00YYdR9VVrsBdjalyjo4mK5PuWqP0O3BKTZ7-Al2P5_VyQ2MxMZAZCkHSE5tRIkq0k29sZLPM58yUwN5FkIrzop2PR_VNYNa2eY2jK-mVv7eYvwcq9LcF6JbJN79K9YyPI-dqKutPoFzFXQEijdF77VbVDQYN5v33gKMYWIyXUb_ZgBFZ9wwZkGkzK7aRR22QVhUMk-M6dZrVH365Cmnboiq_7ZqSIa49uF1qlWbCljkpXMDxF8i0YGRdx4CUSU6vfyKyMUtCb-c6ZxGztojxz72-u3SwPOEJeRNUjpgH25LHo21ORRGuDHM0p04CyxXYe6YH-qYyINgouQ58GorDnhZJfLssqXFDEV_HeQfuZp-KsEnHSMDgX7ibItCu_ETXE2ano2M0XnOjdmSPRHl1aFyQAWkHsgTsrlzucRFcDhkK1BNIGPgC4eWce4bsaf_DHP0OJW8qVEnd15Oj1r9Om2K-vL5pYCLySkxA85DSgMKNOXPsPV3wGkiJjLJqn250v5aiwAziMHrcY5ik4Fm2AvDlRXPvGqXOuQG-zJsFc05J-1TBLgT1wZ1b2mw_qihmlJt71mthNKfgjmCMtx6WVKgRGM2lhdZ6gXt_9AkBcf3Rax9inuLnPgfaOZSCNa-MMR5yVa7ql7i-NwvuupwuuTuuKGkXv_-T3EK-Ky418dDDOMTgpW8nHiUM6Y5uBu6v__N8NMYvnJmujw6dUTNMR-R6vgaXdDtzs6a4KAccwIgqQ43uhgDexj9x4OB4304dKb5PJ2HpgIlnXlhjB-JGmnQAbAIaLrEcW9V0S0PX4H_Mz4NGqaAtDTeeiw=', + provider_name='openai', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1ffe148588191812b659c6dc35ce60003919771fccd27', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=23, output_tokens=2030, details={'reasoning_tokens': 1728}), + model_name='gpt-5-2025-08-07', + timestamp=IsDatetime(), + provider_name='openai', + provider_details={'finish_reason': 'completed'}, + provider_response_id='resp_68c1ffe0f9a48191894c46b63c1a4f440003919771fccd27', + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'Considering the way to cross the street, analogously, how do I cross the river?', + model=BedrockConverseModel( + 'us.anthropic.claude-sonnet-4-20250514-v1:0', + provider=bedrock_provider, + settings=BedrockModelSettings( + bedrock_additional_model_requests_fields={'thinking': {'type': 'enabled', 'budget_tokens': 1024}} + ), + ), + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='Considering the way to cross the street, analogously, how do I cross the river?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='bedrock', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=1241, output_tokens=495), + model_name='us.anthropic.claude-sonnet-4-20250514-v1:0', timestamp=IsDatetime(), provider_name='bedrock', provider_details={'finish_reason': 'end_turn'}, diff --git a/tests/models/test_google.py b/tests/models/test_google.py index f6c90f07fe..bfdeebda5a 100644 --- a/tests/models/test_google.py +++ b/tests/models/test_google.py @@ -61,7 +61,9 @@ ) from pydantic_ai.models.google import GoogleModel, GoogleModelSettings, _metadata_as_usage # type: ignore + from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings from pydantic_ai.providers.google import GoogleProvider + from pydantic_ai.providers.openai import OpenAIProvider pytestmark = [ pytest.mark.skipif(not imports_successful(), reason='google-genai not installed'), @@ -1058,6 +1060,112 @@ def dummy() -> None: ... # pragma: no cover ) +async def test_google_model_thinking_part_from_other_model( + allow_model_requests: None, google_provider: GoogleProvider, openai_api_key: str +): + provider = OpenAIProvider(api_key=openai_api_key) + m = OpenAIResponsesModel('gpt-5', provider=provider) + settings = OpenAIResponsesModelSettings(openai_reasoning_effort='high', openai_reasoning_summary='detailed') + agent = Agent(m, system_prompt='You are a helpful assistant.', model_settings=settings) + + # Google only emits thought signatures when there are tools: https://ai.google.dev/gemini-api/docs/thinking#signatures + @agent.tool_plain + def dummy() -> None: ... # pragma: no cover + + result = await agent.run('How do I cross the street?') + assert result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + SystemPromptPart( + content='You are a helpful assistant.', + timestamp=IsDatetime(), + ), + UserPromptPart( + content='How do I cross the street?', + timestamp=IsDatetime(), + ), + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + id='rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689', + signature=IsStr(), + provider_name='openai', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689', + ), + ThinkingPart( + content=IsStr(), + id='rs_68c1fb6c15c48196b964881266a03c8e0c14a8a9087e8689', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=45, output_tokens=1719, details={'reasoning_tokens': 1408}), + model_name='gpt-5-2025-08-07', + timestamp=IsDatetime(), + provider_name='openai', + provider_details={'finish_reason': 'completed'}, + provider_response_id='resp_68c1fb6b6a248196a6216e80fc2ace380c14a8a9087e8689', + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'Considering the way to cross the street, analogously, how do I cross the river?', + model=GoogleModel( + 'gemini-2.5-pro', + provider=google_provider, + settings=GoogleModelSettings(google_thinking_config={'include_thoughts': True}), + ), + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='Considering the way to cross the street, analogously, how do I cross the river?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='google-gla', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=1106, output_tokens=1867, details={'thoughts_tokens': 1089, 'text_prompt_tokens': 1106} + ), + model_name='gemini-2.5-pro', + timestamp=IsDatetime(), + provider_name='google-gla', + provider_details={'finish_reason': 'STOP'}, + provider_response_id='mPvBaJmNOMywqtsPsb_l2A4', + finish_reason='stop', + ), + ] + ) + + async def test_google_model_thinking_part_iter(allow_model_requests: None, google_provider: GoogleProvider): m = GoogleModel('gemini-2.5-pro', provider=google_provider) settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True}) diff --git a/tests/models/test_openai.py b/tests/models/test_openai.py index 140c326eb3..2b7e6eb32f 100644 --- a/tests/models/test_openai.py +++ b/tests/models/test_openai.py @@ -40,7 +40,7 @@ from pydantic_ai.tools import ToolDefinition from pydantic_ai.usage import RequestUsage -from ..conftest import IsDatetime, IsInstance, IsNow, IsStr, TestEnv, try_import +from ..conftest import IsDatetime, IsNow, IsStr, TestEnv, try_import from .mock_openai import MockOpenAI, completion_message, get_mock_chat_completion_kwargs with try_import() as imports_successful: @@ -1991,18 +1991,21 @@ async def test_openai_model_thinking_part(allow_model_requests: None, openai_api ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[ - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(ThinkingPart), - IsInstance(TextPart), + ThinkingPart( + content=IsStr(), + id='rs_68c1fa166e9c81979ff56b16882744f1093f57e27128848a', + signature=IsStr(), + provider_name='openai', + ), + ThinkingPart(content=IsStr(), id='rs_68c1fa166e9c81979ff56b16882744f1093f57e27128848a'), + TextPart(content=IsStr()), ], - usage=RequestUsage(input_tokens=13, output_tokens=1900, details={'reasoning_tokens': 1536}), + usage=RequestUsage(input_tokens=13, output_tokens=1915, details={'reasoning_tokens': 1600}), model_name='o3-mini-2025-01-31', timestamp=IsDatetime(), provider_name='openai', provider_details={'finish_reason': 'completed'}, - provider_response_id='resp_680797310bbc8191971fff5a405113940ed3ec3064b5efac', + provider_response_id='resp_68c1fa0523248197888681b898567bde093f57e27128848a', finish_reason='stop', ), ] @@ -2026,8 +2029,8 @@ async def test_openai_model_thinking_part(allow_model_requests: None, openai_api ModelResponse( parts=[TextPart(content=IsStr())], usage=RequestUsage( - input_tokens=822, - output_tokens=2437, + input_tokens=577, + output_tokens=2320, details={ 'accepted_prediction_tokens': 0, 'audio_tokens': 0, @@ -2039,7 +2042,7 @@ async def test_openai_model_thinking_part(allow_model_requests: None, openai_api timestamp=IsDatetime(), provider_name='openai', provider_details={'finish_reason': 'stop'}, - provider_response_id='chatcmpl-BP7ocN6qxho4C1UzUJWnU5tPJno55', + provider_response_id='chatcmpl-CENUmtwDD0HdvTUYL6lUeijDtxrZL', finish_reason='stop', ), ] From 7d48b023dbe0d26d84e00beefc1ec5003410612f Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 23:24:00 +0000 Subject: [PATCH 11/13] more coverage --- .../pydantic_ai/models/anthropic.py | 14 +- ...nthropic_model_thinking_part_redacted.yaml | 150 ++++++++ ...c_model_thinking_part_redacted_stream.yaml | 129 +++++++ .../test_bedrock_model_thinking_part.yaml | 209 ----------- ...bedrock_model_thinking_part_anthropic.yaml | 184 +++++++++ ..._bedrock_model_thinking_part_deepseek.yaml | 165 ++++++++ ..._bedrock_model_thinking_part_redacted.yaml | 110 ++++++ ...k_model_thinking_part_redacted_stream.yaml | 128 +++++++ tests/models/test_anthropic.py | 354 +++++++++++++++++- tests/models/test_bedrock.py | 260 ++++++++++++- 10 files changed, 1463 insertions(+), 240 deletions(-) create mode 100644 tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml create mode 100644 tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml delete mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml create mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml create mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml create mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml create mode 100644 tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml diff --git a/pydantic_ai_slim/pydantic_ai/models/anthropic.py b/pydantic_ai_slim/pydantic_ai/models/anthropic.py index 3f6da5c937..509b7fdf59 100644 --- a/pydantic_ai_slim/pydantic_ai/models/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/models/anthropic.py @@ -476,7 +476,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Be type='thinking', ) ) - elif response_part.content: + elif response_part.content: # pragma: no branch start_tag, end_tag = self.profile.thinking_tags assistant_content_params.append( BetaTextBlockParam( @@ -626,20 +626,20 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: current_block = event.content_block if isinstance(current_block, BetaTextBlock) and current_block.text: maybe_event = self._parts_manager.handle_text_delta( - vendor_part_id='content', content=current_block.text + vendor_part_id=event.index, content=current_block.text ) if maybe_event is not None: # pragma: no branch yield maybe_event elif isinstance(current_block, BetaThinkingBlock): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', + vendor_part_id=event.index, content=current_block.thinking, signature=current_block.signature, provider_name=self.provider_name, ) elif isinstance(current_block, BetaRedactedThinkingBlock): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='redacted_thinking', + vendor_part_id=event.index, id='redacted_thinking', content='', signature=current_block.data, @@ -660,19 +660,19 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: elif isinstance(event, BetaRawContentBlockDeltaEvent): if isinstance(event.delta, BetaTextDelta): maybe_event = self._parts_manager.handle_text_delta( - vendor_part_id='content', content=event.delta.text + vendor_part_id=event.index, content=event.delta.text ) if maybe_event is not None: # pragma: no branch yield maybe_event elif isinstance(event.delta, BetaThinkingDelta): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', + vendor_part_id=event.index, content=event.delta.thinking, provider_name=self.provider_name, ) elif isinstance(event.delta, BetaSignatureDelta): yield self._parts_manager.handle_thinking_delta( - vendor_part_id='thinking', + vendor_part_id=event.index, signature=event.delta.signature, provider_name=self.provider_name, ) diff --git a/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml new file mode 100644 index 0000000000..ddfd266b27 --- /dev/null +++ b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml @@ -0,0 +1,150 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '302' + content-type: + - application/json + host: + - api.anthropic.com + method: POST + parsed_body: + max_tokens: 4096 + messages: + - content: + - text: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB + type: text + role: user + model: claude-3-7-sonnet-20250219 + stream: false + thinking: + budget_tokens: 1024 + type: enabled + uri: https://api.anthropic.com/v1/messages?beta=true + response: + headers: + connection: + - keep-alive + content-length: + - '1809' + content-type: + - application/json + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + content: + - data: EvgFCkYIBxgCKkBmxKtCnM3xlr1zpw0Ik4FY0bnznKLdj7THnWO4shd9HwIVkqwnbh16iMbUaK/y21Cf3e2zpej0nWdCG/JL5N0xEgywjBGi+v35EN0uLGcaDK+qOqA2s01rnZ0ZLiIwAHciryf6vOoMFDZlnCyaZHZW3oO8qmEGf/zyZgLzdE3WMFC1WxzUOnJDHiRRbAbVKt8EjEfzriU8Jbhw38s6vbMj6ZkQW7xHrQqPoYbDJlnBuZKdj0n+9XmYNTqGbgChQnsCdFT47uxmimkxRzas5L/pE9XbElYde8WAB0zDdbdSRhROBmDWuCsUh6JFtH9ydDWhxrQ2IU0pFQD/SrGLVueS1g/DfZgZNT/G3a+inH5lxQ+cXgF8hUmpe0sM6Gbl8Yf5g9yNt4La+JobgcRC/rNktNgnSnuyBtpl2YPyloWmlOn+hqF0xgPcUhoH+pLefiophUwJ3mjL4NIC4/S6TI5QP3CEuK03uT2STVWh2L3caF3SNCSV7faVE3aElTGjpRsHXCTujLe7CLGkhY7PL7/t8dfyQELFaPrh2O84UIJOvU/PRwN1KfrlVNi67IWs5s90EIg/byHE3EFdboXseLaxO878W01qzoYB30z0zbME7we8I0v2sDi1wzZDgTDffeqF1C9x6BU2jV/hK0NrvhShHowZdD4IizQAaC8MiBoFpkcI6MfoXWVV0vxTLL+Wl3/Rvfzu/nsNSmgeT3DcX1yUYw/CqjeWMA1mEipfVSCav7yWLGhd3JC2BfoQvtxqbOFXQXVXcZBn9X62rzKQTq47xAtl46X18UAP0sx9bb/oeUDbalE57KnVan68zdAN5jmUP5MOq/KO7xadmFKw+yQjORgKqb3Et6AriIrafjra+gNn5ciWpO7IdgOBpQ11LkFz8KlBaK+wRrZRJ8kfBKx8dm9SHp69Dck9CNH4HGd+IjX/hcC+ZMBBMJ38OGK/LpFq7lCP5FldWx8SCh3/NyJXEjDLMdB6OosO0nmiVWAgZhgB + type: redacted_thinking + - text: |- + I notice that your message appears to contain a command or trigger phrase that's attempting to access internal systems or special behaviors. I'm not able to respond to such requests. + + Instead, I'd be happy to have a regular conversation or help you with legitimate questions or tasks. Is there something specific I can assist you with today? + type: text + id: msg_01TbZ1ZKNMPq28AgBLyLX3c4 + model: claude-3-7-sonnet-20250219 + role: assistant + stop_reason: end_turn + stop_sequence: null + type: message + usage: + cache_creation: + ephemeral_1h_input_tokens: 0 + ephemeral_5m_input_tokens: 0 + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 92 + output_tokens: 196 + service_tier: standard + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '1831' + content-type: + - application/json + host: + - api.anthropic.com + method: POST + parsed_body: + max_tokens: 4096 + messages: + - content: + - text: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB + type: text + role: user + - content: + - data: EvgFCkYIBxgCKkBmxKtCnM3xlr1zpw0Ik4FY0bnznKLdj7THnWO4shd9HwIVkqwnbh16iMbUaK/y21Cf3e2zpej0nWdCG/JL5N0xEgywjBGi+v35EN0uLGcaDK+qOqA2s01rnZ0ZLiIwAHciryf6vOoMFDZlnCyaZHZW3oO8qmEGf/zyZgLzdE3WMFC1WxzUOnJDHiRRbAbVKt8EjEfzriU8Jbhw38s6vbMj6ZkQW7xHrQqPoYbDJlnBuZKdj0n+9XmYNTqGbgChQnsCdFT47uxmimkxRzas5L/pE9XbElYde8WAB0zDdbdSRhROBmDWuCsUh6JFtH9ydDWhxrQ2IU0pFQD/SrGLVueS1g/DfZgZNT/G3a+inH5lxQ+cXgF8hUmpe0sM6Gbl8Yf5g9yNt4La+JobgcRC/rNktNgnSnuyBtpl2YPyloWmlOn+hqF0xgPcUhoH+pLefiophUwJ3mjL4NIC4/S6TI5QP3CEuK03uT2STVWh2L3caF3SNCSV7faVE3aElTGjpRsHXCTujLe7CLGkhY7PL7/t8dfyQELFaPrh2O84UIJOvU/PRwN1KfrlVNi67IWs5s90EIg/byHE3EFdboXseLaxO878W01qzoYB30z0zbME7we8I0v2sDi1wzZDgTDffeqF1C9x6BU2jV/hK0NrvhShHowZdD4IizQAaC8MiBoFpkcI6MfoXWVV0vxTLL+Wl3/Rvfzu/nsNSmgeT3DcX1yUYw/CqjeWMA1mEipfVSCav7yWLGhd3JC2BfoQvtxqbOFXQXVXcZBn9X62rzKQTq47xAtl46X18UAP0sx9bb/oeUDbalE57KnVan68zdAN5jmUP5MOq/KO7xadmFKw+yQjORgKqb3Et6AriIrafjra+gNn5ciWpO7IdgOBpQ11LkFz8KlBaK+wRrZRJ8kfBKx8dm9SHp69Dck9CNH4HGd+IjX/hcC+ZMBBMJ38OGK/LpFq7lCP5FldWx8SCh3/NyJXEjDLMdB6OosO0nmiVWAgZhgB + type: redacted_thinking + - text: |- + I notice that your message appears to contain a command or trigger phrase that's attempting to access internal systems or special behaviors. I'm not able to respond to such requests. + + Instead, I'd be happy to have a regular conversation or help you with legitimate questions or tasks. Is there something specific I can assist you with today? + type: text + role: assistant + - content: + - text: What was that? + type: text + role: user + model: claude-3-7-sonnet-20250219 + stream: false + thinking: + budget_tokens: 1024 + type: enabled + uri: https://api.anthropic.com/v1/messages?beta=true + response: + headers: + connection: + - keep-alive + content-length: + - '1931' + content-type: + - application/json + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + parsed_body: + content: + - data: EtUFCkYIBxgCKkAE46qlfUcG4eBdm3DIVpKC/XPkzbryCwgjw+VMiyBJuOckAZlcdrHdQ1wbm0uy7p/RXSF39IIg88HGTbNxXRC+Egw0sa1913mfkLIPfGsaDAi7hUxVkFwA1fUPQCIwdjvc27hKsweSC97pnKArq+2A8W16RwtK1yz5jB9ZmSXySv5TT+O9ySYoypDs/XFYKrwEAqO72GZyZyt38BSY7fpKUGDMHhvKbbe6+TPPErQH6VqAvqMC7X8HXXKY4M/KSounTPn3AtONNHNXBtORIzob303+aRKL2RypqPAgOwdkZDtvRomxxB2d9p04YhS8l3yyH+W6d9WFmzyHGHrvgujMGIzCdiQ1kmmPV4y8PPnyXevA+HoKD1ByZD8RjoIzrG2UsEJZrn5PyWgaoeoy778obQp21YHGzOgu91PnyrI/875+EJi0ECnAJtLlO/hhRAp3tAxXeOoWuzhDxeZeZ2aa+TO72+2M9YEvaVVPZFaa5VEjbjaJADS8O5ITWMgrDreAFdFKD9jo1K9NbireV2ybdHpHoDQBnoINNh9KMlK/gLbDxgVbvWh+2tV4qXhKyuuO77JMFNCe2b0bityyt7MT7Qu3/heND9QX8AQ8SLGg5hLF8d0q2F/3jFM4xRAEoVm4W42uft3wJjp1YNqTU4/fEgTwvg/b3mzFxPSUyKGlsXIJM4PC6WEPcN4GbVV2uwEP4cJlXHlm0Dx2kzqGHhlinnSJ2QYG/1mByZoa1UM2QSxIqJnyxDvd0+w8Tr6vLoMdmuYmXswroNMahvwGdUO7GU7/Ci7C+yrYMDyk82sDW5p9hgq0tVQB4oH44w50B00rSdI1Ny35Kb2nMuzbwm46YO9IWtBg9FT8B4fNYOcu5JGSKKlWe9PYPsfhVJ9TxuziNTGXcHZpGnP0O7RQuxbbTC/nCTfUix+GQKV3kFUSBBGPwtw3kct4D3I1a/UYAQ== + type: redacted_thinking + - text: "That message appeared to be an attempt to use a special command or trigger phrase, possibly trying to access + internal systems or special behaviors in my design. \n\nThese kinds of strings (sometimes called \"jailbreak attempts\" + or \"prompt injections\") typically try to bypass my normal operation or guidelines. I'm designed to recognize such + attempts and respond appropriately by declining them and offering to have a regular conversation instead.\n\nIs + there something I can actually help you with today?" + type: text + id: msg_012oSSVsQdwoGH6b2fryM4fF + model: claude-3-7-sonnet-20250219 + role: assistant + stop_reason: end_turn + stop_sequence: null + type: message + usage: + cache_creation: + ephemeral_1h_input_tokens: 0 + ephemeral_5m_input_tokens: 0 + cache_creation_input_tokens: 0 + cache_read_input_tokens: 0 + input_tokens: 168 + output_tokens: 232 + service_tier: standard + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml new file mode 100644 index 0000000000..9290f087ab --- /dev/null +++ b/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml @@ -0,0 +1,129 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '301' + content-type: + - application/json + host: + - api.anthropic.com + method: POST + parsed_body: + max_tokens: 4096 + messages: + - content: + - text: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB + type: text + role: user + model: claude-3-7-sonnet-20250219 + stream: true + thinking: + budget_tokens: 1024 + type: enabled + uri: https://api.anthropic.com/v1/messages?beta=true + response: + body: + string: |+ + event: message_start + data: {"type":"message_start","message":{"id":"msg_018XZkwvj9asBiffg3fXt88s","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":92,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":88,"service_tier":"standard"}} } + + event: content_block_start + data: {"type":"content_block_start","index":0,"content_block":{"type":"redacted_thinking","data":"EqkECkYIBxgCKkA8AZ4noDfV5VcOJe/p3JTRB6Xz5297mrWhl3MbHSXDKTMfuB/Z52U2teiWWTN0gg4eQ4bGS9TPilFX/xWTIq9HEgyOmstSPriNwyn1G7AaDC51r0hQ062qEd55IiIwYQj3Z3MSBBv0bSVdXi60LEHDvC7tzzmpQfw5Hb6R9rtyOz/6vC/xPw9/E1mUqfBqKpADO2HS2QlE/CnuzR901nZOn0TOw7kEXwH7kg30c85b9W7iKALgEejY9sELMBdPyIZNlTgKqNOKtY3R/aV5rGIRPTHh2Wh9Ijmqsf/TT7i//Z+InaYTo6f/fxF8R0vFXMRPOBME4XIscb05HcNhh4c9FDkpqQGYKaq31IR1NNwPWA0BsvdDz7SIo1nfx4H+X0qKKqqegKnQ3ynaXiD5ydT1C4U7fku4ftgF0LGwIk4PwXBE+4BP0DcKr1HV3cn7YSyNakBSDTvRJMKcXW6hl7X3w2a4//sxjC1Cjq0uzkIHkhzRWirN0OSXt+g3m6b1ex0wGmSyuO17Ak6kgVBpxwPugtrqsflG0oujFem44hecXJ9LQNssPf4RSlcydiG8EXp/XLGTe0YfHbe3kJagkowSH/Dm6ErXBiVs7249brncyY8WA+7MOoqIM82YIU095B9frCqDJDUWnN84VwOszRrcaywmpJXZO4aeQLMC1kXD5Wabu+O/00tD/X67EWkkWuR0AhDIXXjpot45vnBd4ewJ/hgB"} } + + event: content_block_stop + data: {"type":"content_block_stop","index":0 } + + event: content_block_start + data: {"type":"content_block_start","index":1,"content_block":{"type":"redacted_thinking","data":"EtgBCkYIBxgCKkDQfGkwzflEJP5asG3oQfJXcTwJLoRznn8CmuczWCsJ36dv93X9H0NCeaJRbi5BrCA2DyMgFnRKRuzZx8VTv5axEgwkFmcHJk8BSiZMZRQaDDYv2KZPfbFgRa2QjyIwm47f5YYsSK9CT/oh/WWpU1HJJVHr8lrC6HG1ItRdtMvYQYmEGy+KhyfcIACfbssVKkDGv/NKqNMOAcu0bd66gJ2+R1R0PX11Jxn2Nd1JtZqkxx7vMT/PXtHDhm9jkDZ2k/6RjRRFuab/DBV3yRYdZ1J0GAE="}} + + event: ping + data: {"type": "ping"} + + event: content_block_stop + data: {"type":"content_block_stop","index":1 } + + event: ping + data: {"type": "ping"} + + event: content_block_start + data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""} } + + event: ping + data: {"type": "ping"} + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"I notice that you've sent what"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" appears to be some"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" kind of test string"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" or command. I don't have"}} + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" any special \"magic string\""} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" triggers or backdoor commands"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" that would expose internal systems or"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" change my behavior."} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"\n\nI'm Claude"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":", an AI assistant create"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"d by Anthropic to"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" be helpful, harmless"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":", and honest. How"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" can I assist you today with"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":" a legitimate task or question?"} } + + event: content_block_stop + data: {"type":"content_block_stop","index":2 } + + event: message_delta + data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":92,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":189} } + + event: message_stop + data: {"type":"message_stop" } + + headers: + cache-control: + - no-cache + connection: + - keep-alive + content-type: + - text/event-stream; charset=utf-8 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + status: + code: 200 + message: OK +version: 1 +... diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml deleted file mode 100644 index 967c3c36fb..0000000000 --- a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +++ /dev/null @@ -1,209 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}], "system": [], "inferenceConfig": - {}}' - headers: - amz-sdk-invocation-id: - - !!binary | - NzNhNzQ1MzMtNDRlMC00YmVjLTg1MmQtZGJjOTBmNjI1ODEx - amz-sdk-request: - - !!binary | - YXR0ZW1wdD0x - content-length: - - '122' - content-type: - - !!binary | - YXBwbGljYXRpb24vanNvbg== - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.deepseek.r1-v1%3A0/converse - response: - headers: - connection: - - keep-alive - content-length: - - '5415' - content-type: - - application/json - parsed_body: - metrics: - latencyMs: 7829 - output: - message: - content: - - text: "\n\nCrossing the street safely involves careful observation and following traffic rules. Here's a step-by-step - guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for - traffic lights, signs, or zebra stripes. \n - If no crosswalk is nearby, choose a well-lit area with a clear - view of traffic in both directions.\n\n2. **Check for Signals**: \n - Wait for the **\"Walk\" signal** (or - green light) at intersections. Press the pedestrian button if required. \n - Never cross on a **\"Don’t Walk\"** - or red light, even if traffic seems clear.\n\n3. **Look Both Ways**: \n - **Left → Right → Left again** (or - reverse in left-driving countries). Keep checking as you cross. \n - Watch for turning vehicles, bicycles, - and motorcycles, which may move quickly or silently.\n\n4. **Make Eye Contact**: \n - Ensure drivers see - you before stepping into the road. Don’t assume they’ll stop, even if you have the right of way.\n\n5. **Stay - Visible**: \n - Wear reflective clothing or use a flashlight at night. Avoid crossing between parked cars - or obstacles.\n\n6. **Avoid Distractions**: \n - Put away phones, remove headphones, and stay focused on - your surroundings.\n\n7. **Cross Carefully**: \n - Walk briskly (don’t run) in a straight line. Keep scanning - for traffic as you go. \n - If there’s a median, pause there if needed before completing the crossing.\n\n8. - **Special Situations**: \n - **Children**: Hold hands and supervise closely. \n - **Groups**: Cross together - to increase visibility. \n - **Assistive devices**: Use canes, wheelchairs, or walkers as needed, ensuring - drivers notice you.\n\n9. **Follow Local Laws**: \n - Avoid jaywalking (illegal in many areas). Use pedestrian - bridges or tunnels if available.\n\n**Remember**: Always prioritize safety over speed. Even if you have the - right of way, proceed cautiously. \U0001F6B6♂️\U0001F6A6" - - reasoningContent: - reasoningText: - text: "Okay, so the user is asking how to cross the street. Let me think about the best way to explain this. - First, I need to make sure I cover all the basic steps but also consider different scenarios. Let me start - by breaking down the process step by step.\n\nFirst, they need to find a safe place to cross. That usually - means a crosswalk or a pedestrian crossing. If there's a traffic light, that's even better. But maybe they're - in an area without those, so they should look for the most visible spot with a good view of traffic. I should - mention looking both ways, even if it's a one-way street, just in case. \n\nWait, in some countries, traffic - drives on the left, so the direction you look first might matter. But maybe I should keep it general. Always - look left, right, and left again. Or maybe just say check both directions multiple times. Also, making eye - contact with drivers is important because sometimes drivers might not stop even if they're supposed to. - \n\nThen, waiting for the walk signal if there's a traffic light. But sometimes the signals can be confusing. - For instance, some places have countdown timers, others don't. Also, in some places, turning vehicles might - have a green light while pedestrians have the walk signal, so you have to watch out for turning cars. \n\nIf - there's no crosswalk, they should be extra cautious. Maybe mention finding a well-lit area if it's dark. - Oh, and using reflective clothing or a flashlight at night. Distractions like phones or headphones are a - big no-no. I should emphasize staying focused. \n\nWalking straight across, not diagonally, unless it's - a designated diagonal crossing. Keep looking while crossing because sometimes cars might come out of nowhere. - Also, don't run, but walk briskly. If there's a median, they can stop there if needed. \n\nWhat about children - or people with disabilities? Maybe mention holding hands with kids and using assistive devices. Also, in - some countries, pedestrians have the right of way, but not everywhere. So it's good to be cautious regardless. - \n\nLet me check if I missed anything. Oh, maybe jaywalking laws. In some places, crossing outside a crosswalk - is illegal. So advising to follow local traffic laws. Also, using pedestrian bridges or tunnels if available. - \n\nWait, the user might be a kid, so using simple language is important. But the answer should still be - thorough. Let me structure it step by step, starting with finding a safe spot, checking for signals, looking - both ways, making eye contact, staying visible, avoiding distractions, walking safely, and being aware of - surroundings. \n\nI should also mention that if a crossing is controlled by a button, they need to press - it and wait. Maybe add something about checking for bicycles or motorcycles, which can be quieter and faster. - \n\nHmm, maybe include a note about not assuming vehicles will stop, even if you have the right of way. - Safety first. Also, groups should cross together to be more visible. \n\nI think that's comprehensive. Let - me put it all together in a clear, step-by-step manner without being too technical. Make sure each step - is concise and easy to follow. Avoid jargon. Use bullet points or numbers for clarity. Yeah, that should - cover it.\n" - role: assistant - stopReason: end_turn - usage: - inputTokens: 12 - outputTokens: 1133 - totalTokens: 1145 - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}, {"role": "assistant", "content": - [{"text": "\n\nCrossing the street safely involves careful observation and following traffic rules. Here''s a step-by-step - guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for traffic - lights, signs, or zebra stripes. \n - If no crosswalk is nearby, choose a well-lit area with a clear view of traffic - in both directions.\n\n2. **Check for Signals**: \n - Wait for the **\"Walk\" signal** (or green light) at intersections. - Press the pedestrian button if required. \n - Never cross on a **\"Don\u2019t Walk\"** or red light, even if traffic - seems clear.\n\n3. **Look Both Ways**: \n - **Left \u2192 Right \u2192 Left again** (or reverse in left-driving countries). - Keep checking as you cross. \n - Watch for turning vehicles, bicycles, and motorcycles, which may move quickly or - silently.\n\n4. **Make Eye Contact**: \n - Ensure drivers see you before stepping into the road. Don\u2019t assume - they\u2019ll stop, even if you have the right of way.\n\n5. **Stay Visible**: \n - Wear reflective clothing or use - a flashlight at night. Avoid crossing between parked cars or obstacles.\n\n6. **Avoid Distractions**: \n - Put away - phones, remove headphones, and stay focused on your surroundings.\n\n7. **Cross Carefully**: \n - Walk briskly (don\u2019t - run) in a straight line. Keep scanning for traffic as you go. \n - If there\u2019s a median, pause there if needed - before completing the crossing.\n\n8. **Special Situations**: \n - **Children**: Hold hands and supervise closely. \n - - **Groups**: Cross together to increase visibility. \n - **Assistive devices**: Use canes, wheelchairs, or walkers - as needed, ensuring drivers notice you.\n\n9. **Follow Local Laws**: \n - Avoid jaywalking (illegal in many areas). - Use pedestrian bridges or tunnels if available.\n\n**Remember**: Always prioritize safety over speed. Even if you have - the right of way, proceed cautiously. \ud83d\udeb6\u2642\ufe0f\ud83d\udea6"}, {"text": "\nOkay, so the user - is asking how to cross the street. Let me think about the best way to explain this. First, I need to make sure I cover - all the basic steps but also consider different scenarios. Let me start by breaking down the process step by step.\n\nFirst, - they need to find a safe place to cross. That usually means a crosswalk or a pedestrian crossing. If there''s a traffic - light, that''s even better. But maybe they''re in an area without those, so they should look for the most visible spot - with a good view of traffic. I should mention looking both ways, even if it''s a one-way street, just in case. \n\nWait, - in some countries, traffic drives on the left, so the direction you look first might matter. But maybe I should keep - it general. Always look left, right, and left again. Or maybe just say check both directions multiple times. Also, making - eye contact with drivers is important because sometimes drivers might not stop even if they''re supposed to. \n\nThen, - waiting for the walk signal if there''s a traffic light. But sometimes the signals can be confusing. For instance, some - places have countdown timers, others don''t. Also, in some places, turning vehicles might have a green light while pedestrians - have the walk signal, so you have to watch out for turning cars. \n\nIf there''s no crosswalk, they should be extra - cautious. Maybe mention finding a well-lit area if it''s dark. Oh, and using reflective clothing or a flashlight at - night. Distractions like phones or headphones are a big no-no. I should emphasize staying focused. \n\nWalking straight - across, not diagonally, unless it''s a designated diagonal crossing. Keep looking while crossing because sometimes cars - might come out of nowhere. Also, don''t run, but walk briskly. If there''s a median, they can stop there if needed. - \n\nWhat about children or people with disabilities? Maybe mention holding hands with kids and using assistive devices. - Also, in some countries, pedestrians have the right of way, but not everywhere. So it''s good to be cautious regardless. - \n\nLet me check if I missed anything. Oh, maybe jaywalking laws. In some places, crossing outside a crosswalk is illegal. - So advising to follow local traffic laws. Also, using pedestrian bridges or tunnels if available. \n\nWait, the user - might be a kid, so using simple language is important. But the answer should still be thorough. Let me structure it - step by step, starting with finding a safe spot, checking for signals, looking both ways, making eye contact, staying - visible, avoiding distractions, walking safely, and being aware of surroundings. \n\nI should also mention that if a - crossing is controlled by a button, they need to press it and wait. Maybe add something about checking for bicycles - or motorcycles, which can be quieter and faster. \n\nHmm, maybe include a note about not assuming vehicles will stop, - even if you have the right of way. Safety first. Also, groups should cross together to be more visible. \n\nI think - that''s comprehensive. Let me put it all together in a clear, step-by-step manner without being too technical. Make - sure each step is concise and easy to follow. Avoid jargon. Use bullet points or numbers for clarity. Yeah, that should - cover it.\n\n"}]}, {"role": "user", "content": [{"text": "Considering the way to cross the street, analogously, - how do I cross the river?"}]}], "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": - "enabled", "budget_tokens": 1024}}}' - headers: - amz-sdk-invocation-id: - - !!binary | - NjYzZDBjZjItYTRmMy00MWI1LTg4YjEtOTc2MGE0M2Q2NjI0 - amz-sdk-request: - - !!binary | - YXR0ZW1wdD0x - content-length: - - '5646' - content-type: - - !!binary | - YXBwbGljYXRpb24vanNvbg== - method: POST - uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-20250514-v1%3A0/converse - response: - headers: - connection: - - keep-alive - content-length: - - '4071' - content-type: - - application/json - parsed_body: - metrics: - latencyMs: 16082 - output: - message: - content: - - reasoningContent: - reasoningText: - signature: Eo0GCkgIBxABGAIqQCUgV8lFdgubUqxI/3s9+KDfA2rtOBKfcEyeMjdPTOrbb9XkcLP1IMKO+RSRzkfROcZMXhWCom8VvSG/yF6NhToSDNRPwapPz+9ND3e7UBoMg7ntVYeZvJvYI5s0IjAEAw70lQZ1U21O1uJ5E0d+sQ17fmy+aIR2Pssnp6ZmyjrWYJB0+HUd854YQShOU48q8gR3JUcmKKQ+pLsEytGvspVN0F3pLfArANIWh+bp7N1I7h7mvnwqXzMUAphYgj2egdWQ0h944FRT/5sVXQFQ+mKAP4pSBtwUYVNddLj2OkoTZBPxPd1+/z40qkGhRDjmFFs1dMnFp+aYmLGb69GR56WWk2wGbnkfPlA8Y2yV4N0uYySh5LPK5zMLOcZdkPQuXW6SkQ8JPvStQpxKA85mfmPai6h61h251Y2YJYoTBUvNBjOsltzFrrXYF2eb8SMIMiO/2UdFjycCojBJqiNVpwUlvDMVeIPeJoBxp9vaskhoaZwArwRW3oFh82G2s9y4PwRFJRyzTyAfMyid7aSg2bJdywaqKXW2kCSKv+5VdsB+7jW2nQKxiY91fZ+xKSlDhV0++z50K2eJe0WuFtUXu8MEfNd1ZmEXg3D1+c3dcPT6sLqfZlp+um5IaodJNxyWbuxviRjtgb4x5zLRjxHds9mCmnTtEsSzjQQEMppq3roWPzY9kiPNKbaZnujYDKmPAuKwplcsmsq5RRhag5zaQQFdhTX8AWRKNzSieoT4H++5joj7buZAz9hNyJ20p5UiHXDpWBnS7nP+x8Yuc68QHHMpSCztbFdjY/1D1+68Ml+ikxaJ/LBzXoo8Ixzz2SamaPGgcuOTKMMXXq2+XKDTOmktv3KNwV188gaEyMI5AzQYMIJThbRsYpew/hBnTT87Fhe9v9JTKF8Mn3+e7Z9ckU9yHLaqlfDDcA24wNqe3smTgpKHKuD/oShRdGH/Y8kaObGRvfW7UWTmZI15+jhNJTWLgaDmYQAjowt1uQl7Kk2QWkU+Iwv0pszrsgHfsVrcpsdwoBgB - text: |- - The user is asking about crossing a river, using the street-crossing analogy. This is an interesting question because crossing a river involves different considerations than crossing a street - it's about water safety, different methods of crossing, and various hazards. Let me think through this systematically, drawing parallels to street crossing where appropriate but focusing on the unique aspects of river crossing. - - Just like with street crossing, safety is paramount, but the risks and methods are quite different. Let me structure this similarly to my street crossing response but adapt it for rivers. - - text: "Great analogy! Crossing a river safely requires similar careful planning but with different considerations. - Here's how to approach it:\n\n## **1. Assess the Situation First**\n- **Find the safest crossing point**: Look - for bridges, ferries, or designated crossing areas first\n- **Evaluate the river**: Check depth, current speed, - width, and water clarity\n- **Check conditions**: Weather, time of day, and seasonal factors (flooding, ice, - etc.)\n\n## **2. Use Established Crossings When Possible**\n- **Bridges**: The safest option - just like using - crosswalks for streets\n- **Ferries or boats**: Official water transportation \n- **Fords**: Marked shallow - crossing points used by vehicles/pedestrians\n\n## **3. If You Must Wade Across**\n- **Choose your spot**: Look - for wide, shallow areas where water moves slowly\n- **Test the depth**: Use a stick or pole to check depth and - bottom conditions\n- **Face upstream**: Walk diagonally downstream while facing the current\n- **Move slowly**: - Take small, deliberate steps to maintain balance\n\n## **4. Safety Precautions**\n- **Never go alone**: Have - someone watch or accompany you\n- **Wear appropriate gear**: Non-slip shoes, life jacket if available\n- **Stay - visible**: Bright clothing, especially in low light\n- **Check for hazards**: Rocks, debris, strong currents, - wildlife\n\n## **5. Know Your Limits**\n- **Don't attempt if**: Water is above your knees, current is swift, - or conditions are poor\n- **Turn back**: If conditions worsen partway across\n- **Cold water**: Hypothermia - risk increases danger significantly\n\n## **6. Alternative Methods**\n- **Wait**: Sometimes the best choice - is to wait for better conditions or find another route\n- **Go around**: Follow the riverbank to find a better - crossing point\n- **Use tools**: Rope, walking stick, or flotation device if experienced\n\n**Key Difference**: - Unlike streets where you follow traffic rules, rivers follow natural laws - current, depth, and weather are - your \"traffic signals.\" When in doubt, don't risk it! \U0001F30A⚠️" - role: assistant - stopReason: end_turn - usage: - cacheReadInputTokenCount: 0 - cacheReadInputTokens: 0 - cacheWriteInputTokenCount: 0 - cacheWriteInputTokens: 0 - inputTokens: 1320 - outputTokens: 609 - totalTokens: 1929 - status: - code: 200 - message: OK -version: 1 diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml new file mode 100644 index 0000000000..8dfe65a226 --- /dev/null +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml @@ -0,0 +1,184 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}], "system": [], "inferenceConfig": + {}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + OGNlZThhODYtYjE4Yi00ZWQwLWI1MTktMmI3OTk1OGQ4MDQ2 + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '212' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-20250514-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '2233' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 5737 + output: + message: + content: + - reasoningContent: + reasoningText: + signature: Eu4CCkgIBxABGAIqQCc4A+JUj/DJn5X49FRHzzGDqrWoZCEii+cINeYRllo7Bo/OAwNyoXVhdYlz6QWIvPH6vI4DjESc8A+763hdOrsSDGdnYb2cUg2snS0JHhoMNmdJjpWvdqyx3ZLsIjCckLSkej9YJ8DPw0O0oZVKk2lislUos8h5RxV0hY4VqRMGJURQDdIsCdAfaAiIERoq0wEPzjKdWsopjbXYav/Uf/WryRkQBlVHa3M2YSrTSyQQknCmVwQ2OHN/sm+pKw/mEvEm4Qu5xHyD4R65iHAPqzHvu7O+clxFaZHacaaD7tCkJycs5V3F1zD4JofRXoDu/CXu//xdQdkd3v22JQiKk9xNGT4ZbLF46c7gwVLxCuJys14p2c406ehsb0/8AkZC9JmRD2od7ZH+CXd030TQPcXqf11M/Y2p3BHXRxyFXpkjQdrrsLWTBHbUnPkjl8YDNAyF5Bz4mVQtRXb3u8QXSrrGvCwrGAE= + text: This is a straightforward question about crossing the street safely. I should provide clear, practical + safety advice that applies generally, while noting that specific rules may vary by location. + - text: |- + Here are the basic steps for crossing the street safely: + + **At intersections with traffic lights:** + 1. Wait for the pedestrian "Walk" signal + 2. Look both ways before stepping into the street + 3. Make eye contact with drivers when possible + 4. Cross briskly but don't run + 5. Stay alert for turning vehicles + + **At intersections without signals:** + 1. Stop at the curb or edge of the road + 2. Look left, then right, then left again + 3. Listen for approaching vehicles + 4. Wait for a clear gap in traffic + 5. Cross quickly but carefully + + **General safety tips:** + - Use crosswalks and intersections when available + - Avoid crossing between parked cars + - Put away distractions like phones + - Wear bright or reflective clothing in low light + - Make yourself visible to drivers + - Follow local traffic laws (some places may have specific rules) + + **If there's no crosswalk nearby:** + - Find the shortest, straightest path across + - Choose a spot with good visibility in both directions + - Be extra cautious and patient + + Always remember that even when you have the right of way, it's important to stay alert and defensive since not all drivers follow traffic rules perfectly. + role: assistant + stopReason: end_turn + usage: + cacheReadInputTokenCount: 0 + cacheReadInputTokens: 0 + cacheWriteInputTokenCount: 0 + cacheWriteInputTokens: 0 + inputTokens: 42 + outputTokens: 313 + totalTokens: 355 + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}, {"role": "assistant", "content": + [{"reasoningContent": {"reasoningText": {"text": "This is a straightforward question about crossing the street safely. + I should provide clear, practical safety advice that applies generally, while noting that specific rules may vary by + location.", "signature": "Eu4CCkgIBxABGAIqQCc4A+JUj/DJn5X49FRHzzGDqrWoZCEii+cINeYRllo7Bo/OAwNyoXVhdYlz6QWIvPH6vI4DjESc8A+763hdOrsSDGdnYb2cUg2snS0JHhoMNmdJjpWvdqyx3ZLsIjCckLSkej9YJ8DPw0O0oZVKk2lislUos8h5RxV0hY4VqRMGJURQDdIsCdAfaAiIERoq0wEPzjKdWsopjbXYav/Uf/WryRkQBlVHa3M2YSrTSyQQknCmVwQ2OHN/sm+pKw/mEvEm4Qu5xHyD4R65iHAPqzHvu7O+clxFaZHacaaD7tCkJycs5V3F1zD4JofRXoDu/CXu//xdQdkd3v22JQiKk9xNGT4ZbLF46c7gwVLxCuJys14p2c406ehsb0/8AkZC9JmRD2od7ZH+CXd030TQPcXqf11M/Y2p3BHXRxyFXpkjQdrrsLWTBHbUnPkjl8YDNAyF5Bz4mVQtRXb3u8QXSrrGvCwrGAE="}}}, + {"text": "Here are the basic steps for crossing the street safely:\n\n**At intersections with traffic lights:**\n1. + Wait for the pedestrian \"Walk\" signal\n2. Look both ways before stepping into the street\n3. Make eye contact with + drivers when possible\n4. Cross briskly but don''t run\n5. Stay alert for turning vehicles\n\n**At intersections without + signals:**\n1. Stop at the curb or edge of the road\n2. Look left, then right, then left again\n3. Listen for approaching + vehicles\n4. Wait for a clear gap in traffic\n5. Cross quickly but carefully\n\n**General safety tips:**\n- Use crosswalks + and intersections when available\n- Avoid crossing between parked cars\n- Put away distractions like phones\n- Wear + bright or reflective clothing in low light\n- Make yourself visible to drivers\n- Follow local traffic laws (some places + may have specific rules)\n\n**If there''s no crosswalk nearby:**\n- Find the shortest, straightest path across\n- Choose + a spot with good visibility in both directions\n- Be extra cautious and patient\n\nAlways remember that even when you + have the right of way, it''s important to stay alert and defensive since not all drivers follow traffic rules perfectly."}]}, + {"role": "user", "content": [{"text": "Considering the way to cross the street, analogously, how do I cross the river?"}]}], + "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": + 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + MTNhMWE5MGItZGJlNy00ZTIwLWI2NTktZmI2NDZkNTNiNDhm + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '2331' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-20250514-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '2964' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 7756 + output: + message: + content: + - reasoningContent: + reasoningText: + signature: EqkECkgIBxABGAIqQHq1oS+sf/YrAVWg+yVzsVuCiHur1smX27D/xjDFfxR08xEIR3u2YQw8dCZq01Gr7i2Llo3PSiHjRFsiUENtPMsSDKDp77RxiL4iVJUcKRoMl+QGPqtnGq4iQtSEIjAHz8DBce5MNBFJGtLccqDWSAT11yrqfnJMT9cDB/lUxZOyNuk4kpnUKYlN9munxhwqjgO6ztQcIlxDZJ70Dbs7yc/HZC9bHbj5fp1Aig8cFMtFmGdpE1OnVC5yKMhuZmzaQPaV655QTjWs0i4nQ6JwJUOMWCJgrBSGHm13vNoyehWlIro+VIlmBxCuftjQDWMQ+aIs2WceZdmUhfrLIlMuHbS8tU1Si2oi+wA6J3VMlPW2Skc8YlNpmZKqjhC6RXtRBs9/zEQMc4iIHz41YQo5vnAopz93wa5bsaXSB23wua1iAPCdUq7cE6bpZ2ClnybPu6XvpFSwcn9duCJMUB5fbNXVpmAacmVE48auuY/MULuMCMAtLxoPr3Njgla4aubbFHuKeMzjMGYSh8W63etC+BYe5GQ+a4Rsg8xQ8hyqmKXYfBA3i8oAGnft39rQJvmiqZNlqthri7uIkgXDUrerraEotSzcwvQeGd9ASo+NI3N7Nyh2qfyg+w4R97xtl7s/0E/FOglSdqB1yE/Drp0Paqdo4v3GHYQ1EFrZky7AiQZU/PbDdi9O3+biBNRMjIBZx5RuIe0FGr1ubMmSrmDhPRgB + text: The human is asking about crossing a river, using the analogy to my previous answer about crossing a + street. This is an interesting analogy - just like crossing a street requires safety considerations and + proper methods, crossing a river also requires careful planning and safety measures. Let me think about + the various ways to cross a river and the safety considerations involved. + - text: |- + Great analogy! Just like crossing a street, crossing a river requires planning, safety awareness, and choosing the right method. Here are the main approaches: + + **Designated crossing points (like crosswalks):** + - **Bridges** - The safest option when available + - **Ferries** - Official water transportation + - **Marked fords** - Shallow crossing points approved for wading + + **If no designated crossing exists:** + 1. **Assess the situation first:** + - Water depth, speed, and temperature + - Your swimming ability and fitness level + - Weather conditions and visibility + - Presence of hazards (rapids, debris, wildlife) + + 2. **Crossing methods:** + - **Wading** - Only in shallow, slow-moving water + - **Swimming** - If you're a strong swimmer and conditions allow + - **Using flotation** - Kayak, raft, or other watercraft + - **Improvised bridge** - Fallen logs (test stability first) + + **Safety essentials:** + - Never cross alone - use the buddy system + - Wear a life jacket if available + - Choose the narrowest, calmest section + - Cross at an angle downstream to account for current + - Have an exit strategy and know what's downstream + - Consider hypothermia risk in cold water + + **When NOT to cross:** + - Fast-moving or flood conditions + - Water above your waist + - Poor visibility or bad weather + - If you're not a confident swimmer + + Just like with streets, sometimes the best choice is to find an alternate route or wait for better conditions! + role: assistant + stopReason: end_turn + usage: + cacheReadInputTokenCount: 0 + cacheReadInputTokens: 0 + cacheWriteInputTokenCount: 0 + cacheWriteInputTokens: 0 + inputTokens: 334 + outputTokens: 432 + totalTokens: 766 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml new file mode 100644 index 0000000000..b88ffdf1ce --- /dev/null +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml @@ -0,0 +1,165 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}], "system": [], "inferenceConfig": + {}}' + headers: + amz-sdk-invocation-id: + - !!binary | + OGRhODNkNDYtMzgxOS00YzllLWE3NzgtYWFkYzk4YjRhY2Q4 + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '122' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.deepseek.r1-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '3321' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 5517 + output: + message: + content: + - text: "\n\nCrossing the street safely involves careful observation and following basic guidelines. Here's a step-by-step + guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for + traffic lights, zebra stripes, or \"Walk\" signals. \n - If no crosswalk is nearby, choose a spot with clear + visibility in both directions. Avoid curves, hills, or obstructions.\n\n2. **Stop and Look**: \n - **Pause + at the curb** and check **left, right, and left again** (or right-left-right in countries where traffic drives + on the left). \n - Look for cars, bikes, scooters, or other vehicles. Don’t rely solely on traffic signals—drivers + might not stop.\n\n3. **Listen**: \n - Turn off headphones or lower music volume to hear approaching traffic.\n\n4. + **Wait for a Safe Gap**: \n - Ensure all lanes are clear or that vehicles have fully stopped before stepping + into the road. \n - At signals, wait for the \"Walk\" symbol or green light. Never start crossing if the + signal is flashing \"Don’t Walk\" or is red.\n\n5. **Make Eye Contact**: \n - If a driver is approaching, + try to catch their eye to confirm they see you.\n\n6. **Cross Carefully**: \n - Walk **straight across**, + not diagonally. Stay alert—keep looking and listening as you go. \n - Avoid distractions like phones or texting. + \ \n\n7. **Children and Vulnerable Pedestrians**: \n - Hold hands with young children. Those with mobility + aids (e.g., wheelchairs, canes) should ensure drivers yield before crossing.\n\n8. **Uncontrolled Crossings**: + \ \n - If there’s no signal or crosswalk, cross only when traffic is fully clear. Be extra cautious at night + or in poor weather.\n\n**Remember**: Jaywalking (crossing illegally) can be dangerous and may result in fines. + Prioritize safety over convenience! \U0001F6B8" + - reasoningContent: + reasoningText: + text: | + Okay, the user is asking how to cross the street. Let me think about the best way to explain this. First, I should start by mentioning the importance of safety. Maybe start with finding a safe place to cross, like a crosswalk or pedestrian crossing. I should remind them to look for traffic signals if available. Then, checking both ways for traffic is crucial, even if there's a signal. Wait, but in some countries, traffic drives on the left, so the direction to look first might vary. Should I mention that? Maybe keep it general but note that they should check all directions. + + Also, making eye contact with drivers if possible, to ensure they're seen. Then, when it's safe, walk straight across, not diagonally, and stay alert while crossing. Oh, and maybe mention not to use phones or distractions while crossing. What about children or people with disabilities? Maybe add a note about holding hands with children or using assistive devices. Also, if there's no crosswalk, explain to find the safest spot with good visibility. Avoid jaywalking if possible. Maybe list the steps in order: find a safe spot, look both ways, listen, wait for signals, cross when safe, stay alert. Keep it simple and clear. Let me structure that step by step. + role: assistant + stopReason: end_turn + usage: + inputTokens: 12 + outputTokens: 693 + totalTokens: 705 + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "How do I cross the street?"}]}, {"role": "assistant", "content": + [{"text": "\n\nCrossing the street safely involves careful observation and following basic guidelines. Here''s a step-by-step + guide:\n\n1. **Find a Safe Spot**: \n - Use a **crosswalk** or pedestrian crossing if available. Look for traffic + lights, zebra stripes, or \"Walk\" signals. \n - If no crosswalk is nearby, choose a spot with clear visibility in + both directions. Avoid curves, hills, or obstructions.\n\n2. **Stop and Look**: \n - **Pause at the curb** and check + **left, right, and left again** (or right-left-right in countries where traffic drives on the left). \n - Look for + cars, bikes, scooters, or other vehicles. Don\u2019t rely solely on traffic signals\u2014drivers might not stop.\n\n3. + **Listen**: \n - Turn off headphones or lower music volume to hear approaching traffic.\n\n4. **Wait for a Safe Gap**: \n - + Ensure all lanes are clear or that vehicles have fully stopped before stepping into the road. \n - At signals, wait + for the \"Walk\" symbol or green light. Never start crossing if the signal is flashing \"Don\u2019t Walk\" or is red.\n\n5. + **Make Eye Contact**: \n - If a driver is approaching, try to catch their eye to confirm they see you.\n\n6. **Cross + Carefully**: \n - Walk **straight across**, not diagonally. Stay alert\u2014keep looking and listening as you go. \n - + Avoid distractions like phones or texting. \n\n7. **Children and Vulnerable Pedestrians**: \n - Hold hands with + young children. Those with mobility aids (e.g., wheelchairs, canes) should ensure drivers yield before crossing.\n\n8. + **Uncontrolled Crossings**: \n - If there\u2019s no signal or crosswalk, cross only when traffic is fully clear. + Be extra cautious at night or in poor weather.\n\n**Remember**: Jaywalking (crossing illegally) can be dangerous and + may result in fines. Prioritize safety over convenience! \ud83d\udeb8"}, {"text": "\nOkay, the user is asking + how to cross the street. Let me think about the best way to explain this. First, I should start by mentioning the importance + of safety. Maybe start with finding a safe place to cross, like a crosswalk or pedestrian crossing. I should remind + them to look for traffic signals if available. Then, checking both ways for traffic is crucial, even if there''s a signal. + Wait, but in some countries, traffic drives on the left, so the direction to look first might vary. Should I mention + that? Maybe keep it general but note that they should check all directions.\n\nAlso, making eye contact with drivers + if possible, to ensure they''re seen. Then, when it''s safe, walk straight across, not diagonally, and stay alert while + crossing. Oh, and maybe mention not to use phones or distractions while crossing. What about children or people with + disabilities? Maybe add a note about holding hands with children or using assistive devices. Also, if there''s no crosswalk, + explain to find the safest spot with good visibility. Avoid jaywalking if possible. Maybe list the steps in order: find + a safe spot, look both ways, listen, wait for signals, cross when safe, stay alert. Keep it simple and clear. Let me + structure that step by step.\n\n"}]}, {"role": "user", "content": [{"text": "Considering the way to cross the + street, analogously, how do I cross the river?"}]}], "system": [], "inferenceConfig": {}}' + headers: + amz-sdk-invocation-id: + - !!binary | + MzE0MTFjMjEtOWIxOS00NDAxLTg5NjAtYWVlZTEzZjY1ODBj + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '3438' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.deepseek.r1-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '4518' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 7363 + output: + message: + content: + - text: "\n\nCrossing a river, like crossing a street, requires careful assessment and planning, but the risks and + methods differ significantly. Here's a structured analogy:\n\n### **1. \"Look Both Ways\" → Assess the River** + \ \n - **Street:** Check for traffic, signals, and safe gaps. \n - **River:** Evaluate depth, current speed, + obstacles (rocks, debris), and water clarity. \n - **Shallow water:** If safe, wade across slowly, using + a sturdy stick for balance. \n - **Deep/strong current:** Avoid crossing—seek alternatives like bridges + or boats. \n\n---\n\n### **2. \"Use a Crosswalk\" → Find a Safe Crossing Point** \n - **Street:** Use marked + crosswalks or pedestrian bridges. \n - **River:** Look for natural or human-made aids: \n - **Bridges/ferries:** + The safest options. \n - **Shallow riffles or sandbars:** Calmer, shallower areas. \n - **Rocks/stepping + stones:** Only if stable and close enough to hop between. \n\n---\n\n### **3. \"Wait for the Signal\" → Time + It Right** \n - **Street:** Follow traffic lights or pedestrian signals. \n - **River:** Consider environmental + factors: \n - **Weather:** Avoid crossing during/after heavy rain (flash floods). \n - **Time of day:** + Daylight improves visibility; cold temperatures increase hypothermia risk. \n\n---\n\n### **4. \"Stay Alert\" + → Navigate Carefully** \n - **Street:** Watch for sudden traffic changes. \n - **River:** \n - Face + upstream to brace against the current. \n - Move diagonally downstream to reduce resistance. \n - + Never cross alone—use a group or rope system for safety. \n\n---\n\n### **5. \"Alternate Routes\" → Know When + to Turn Back** \n - **Street:** Detour if the path is blocked. \n - **River:** If conditions feel unsafe, + retreat and find another way (e.g., a bridge farther downstream). \n\n---\n\n### **Metaphorical \"River Crossing\"** + \ \nIf this is a metaphor for overcoming challenges: \n - **Assess risks** (research, plan). \n - **Use + tools/resources** (ask for help, build skills). \n - **Adapt** if obstacles arise. \n\nAlways prioritize + safety—rivers are unpredictable, and even shallow water can be dangerous. When in doubt, seek local knowledge + or professional guidance! \U0001F30A\U0001F6B6♂️" + - reasoningContent: + reasoningText: + text: | + Okay, the user is asking how to cross a river, using crossing a street as an analogy. Let me start by breaking down the original question. When you cross a street, you look both ways, wait for traffic signals, use crosswalks, etc. So the user wants a similar step-by-step approach but for a river. + + First, I need to consider the differences between a street and a river. Rivers have currents, varying depths, possible wildlife, and no traffic signals. So the approach can't be exactly the same. The user might be thinking metaphorically, but I should cover both literal and metaphorical interpretations. + + For a literal river crossing: Safety is key. Check depth, current strength, obstacles. Maybe suggest finding a bridge or shallow area. If swimming, use proper techniques. If metaphorical, like overcoming obstacles, then planning, resources, help from others. + + Wait, the user mentioned "analogously," so they might want a comparison. Let me structure it like the street steps but adapted for rivers. For each step in crossing a street, find the river equivalent. For example, looking both ways becomes assessing the river's conditions. Crosswalks could be safe crossing points like bridges. + + I should also mention tools or methods: bridges, boats, stepping stones, ropes. Safety precautions like not going alone, checking weather. Maybe include both natural and metaphorical solutions. Need to make sure the answer is clear and covers possible scenarios without being too technical. Avoid assuming the user's exact situation but provide general advice. Also, highlight the importance of preparation and caution, more so than with streets because rivers are inherently more dangerous. Make sure to differentiate between shallow streams and large rivers. Maybe add a note about seeking local knowledge if possible. Alright, structure the answer with numbered steps, similar to street crossing steps but tailored for rivers, then explain the metaphorical angle if applicable. + role: assistant + stopReason: end_turn + usage: + inputTokens: 33 + outputTokens: 907 + totalTokens: 940 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml new file mode 100644 index 0000000000..85a17f22f6 --- /dev/null +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB"}]}], + "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": + 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + YTA1YTkwYTUtYmMxNi00MzllLWFiNmQtMmZlNDE5NjI2MmRh + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '299' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '1848' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 5846 + output: + message: + content: + - reasoningContent: + redactedContent: RXU4RUNrZ0lCeEFCR0FJcVFJaGtJYVN0OHBFZXF5N3pOYUVLL0thRC9rWnVKVVMrcEJnaU1tdVFWbzRWMzJIc3lwK3R6elBndHNFWVptQzRKNlVza3JROThFU1ZCM0UzT2xMaFRTa1NER2NycncxRE8xR1ZhQUNoakJvTUJhVU5kSzBBcHdYZTVJVG1JakI4YUt6dGQ0UVUxVUVyN1pUMzNkWXVOTU9KdURGMllrcmhrTWR5R1JSMnNNZ1I4UzR0ZEQzSFp2eDlkbmlUZnFvcTFBTy9zQXdsL2NTK0NxVXcxTi91UmZaWU9IMEV2UDljdDVOTjdrNGhTWEV1b3FyZTFpbzArTDNJYWZnaGJMNDFmNHhtd1pKbmpib2I5SHFmMmJJVG04V2N1dWtzTTNFL0plb1EvWUViMWtvV1VOTG9KeDF3R0t5RTlMckNJOHkwYmRjOFN0SVkvS1VlVGpIdkd3SjBZK3UzSlVqTi92Q2lRSTNUOTZIVThWdVNzckwzdXUrVHFDOXc2Y3RVdGg4ejMrZUx4cEpYb2d6Vk9sVFZidXM5N2ZXU1JqcjlzZjQ0TFBOWmgySTBpanRGYVZid0FCZzJJRU14VW5sRUtxUzRTNGtQd2tuTEtodGxVWWhXeTlpQlI1VnFLK29PazRJKzQ2QXVOQWZ6SFhvRGs5d1diSlJaV25BZEJ5ZXMvbnRzNTZsZTBsQkJPVlZGUnlPSnRwVlg5ME1CeHYrOStDZ243TXU1UUM3U0dRbTkxOVEremFwdzBQdUxualdNR0tYbkd6RkhwcEdhZ3ozeiszYzA4QTl6NGJMY29YRnlpVGNMQ2plbzN4NHVNL281UFBZODBnVk92T01HYXNSaXV3Q0tTYjhHd3AxYTN4S3hPZFVGVUo4L1pyVjFEazdVNy9zamZ3YUFybUVDc0RmbHB1NzRhb0U4MWRMcU5Na2tXRlJNUFl2REpIaitnTnVXVzN1U2lOQ3MxeWtCTjVQMnExWXEwbSs2SGluRlFYeXhUM0VEODJUbzZHdUFhU3luVS9MbDdtMTFxdnJYVkRZUGJPZnkxRTk0WDF2NE40L3ZkUnJRTUpURDcrMWU5UnpZR2Y0YXlyc1lBUT09 + - text: "I notice you've sent what appears to be some kind of trigger or command string. I can't respond to attempts + to access internal systems or manipulate how I process information. \n\nInstead, I'd be happy to have a normal + conversation with you. Is there something specific I can help you with today? I'm here to provide information, + have discussions, or assist with tasks within my guidelines." + role: assistant + stopReason: end_turn + usage: + cacheReadInputTokenCount: 0 + cacheReadInputTokens: 0 + cacheWriteInputTokenCount: 0 + cacheWriteInputTokens: 0 + inputTokens: 92 + outputTokens: 176 + totalTokens: 268 + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB"}]}, + {"role": "assistant", "content": [{"reasoningContent": {"redactedContent": "RXU4RUNrZ0lCeEFCR0FJcVFJaGtJYVN0OHBFZXF5N3pOYUVLL0thRC9rWnVKVVMrcEJnaU1tdVFWbzRWMzJIc3lwK3R6elBndHNFWVptQzRKNlVza3JROThFU1ZCM0UzT2xMaFRTa1NER2NycncxRE8xR1ZhQUNoakJvTUJhVU5kSzBBcHdYZTVJVG1JakI4YUt6dGQ0UVUxVUVyN1pUMzNkWXVOTU9KdURGMllrcmhrTWR5R1JSMnNNZ1I4UzR0ZEQzSFp2eDlkbmlUZnFvcTFBTy9zQXdsL2NTK0NxVXcxTi91UmZaWU9IMEV2UDljdDVOTjdrNGhTWEV1b3FyZTFpbzArTDNJYWZnaGJMNDFmNHhtd1pKbmpib2I5SHFmMmJJVG04V2N1dWtzTTNFL0plb1EvWUViMWtvV1VOTG9KeDF3R0t5RTlMckNJOHkwYmRjOFN0SVkvS1VlVGpIdkd3SjBZK3UzSlVqTi92Q2lRSTNUOTZIVThWdVNzckwzdXUrVHFDOXc2Y3RVdGg4ejMrZUx4cEpYb2d6Vk9sVFZidXM5N2ZXU1JqcjlzZjQ0TFBOWmgySTBpanRGYVZid0FCZzJJRU14VW5sRUtxUzRTNGtQd2tuTEtodGxVWWhXeTlpQlI1VnFLK29PazRJKzQ2QXVOQWZ6SFhvRGs5d1diSlJaV25BZEJ5ZXMvbnRzNTZsZTBsQkJPVlZGUnlPSnRwVlg5ME1CeHYrOStDZ243TXU1UUM3U0dRbTkxOVEremFwdzBQdUxualdNR0tYbkd6RkhwcEdhZ3ozeiszYzA4QTl6NGJMY29YRnlpVGNMQ2plbzN4NHVNL281UFBZODBnVk92T01HYXNSaXV3Q0tTYjhHd3AxYTN4S3hPZFVGVUo4L1pyVjFEazdVNy9zamZ3YUFybUVDc0RmbHB1NzRhb0U4MWRMcU5Na2tXRlJNUFl2REpIaitnTnVXVzN1U2lOQ3MxeWtCTjVQMnExWXEwbSs2SGluRlFYeXhUM0VEODJUbzZHdUFhU3luVS9MbDdtMTFxdnJYVkRZUGJPZnkxRTk0WDF2NE40L3ZkUnJRTUpURDcrMWU5UnpZR2Y0YXlyc1lBUT09"}}, + {"text": "I notice you''ve sent what appears to be some kind of trigger or command string. I can''t respond to attempts + to access internal systems or manipulate how I process information. \n\nInstead, I''d be happy to have a normal conversation + with you. Is there something specific I can help you with today? I''m here to provide information, have discussions, + or assist with tasks within my guidelines."}]}, {"role": "user", "content": [{"text": "What was that?"}]}], "system": + [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + NjBjYmYxMWEtZjc0ZS00ODFlLWFlMmItOWEyMjI3MmNhMzAz + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '1965' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse + response: + headers: + connection: + - keep-alive + content-length: + - '2340' + content-type: + - application/json + parsed_body: + metrics: + latencyMs: 7973 + output: + message: + content: + - reasoningContent: + redactedContent: RXVRRkNrZ0lCeEFCR0FJcVFOVjg5eXExUjgrODJieWNLWi84ZVZyRFBCMUVzZk1uL1NrQWQ5TzlWS3k2cUt6N1BYbW5jOS9xZDJzVUdBWFBrSW0zdW5veDFzYTBibTVEVHBIR2Ywb1NEUFpCZ1hpMFRJUTVjNFY3WnhvTUxFMzlTM0NvQTA2SFpSeEhJakNodmNwUjRNdHYxdVVsWlEvV0VNc0xldmpobzU1KzRjbDZBeDI5ZG1ENnJMYmNTT3BGZStaSW9ncEVRY3hqK09rcXlRUXVlZ1lDaWszbkJtUU1MM1gzYmR2Y0MzNFFEaDhnMmlITXBOeFFNWU40RGluTmkvZUdPUTZjQUFFY0JnU2hqSThPMUdNM1N4bHRaOE8zWkhHdG5XQld2ajgxdTEwUDNEeUM4L2c5VFJwMFN2TUNzV3RqeWVMWEJnaUlnanoybmhQaTBvdmd3VnVOcTZ5bXdNb2J5SFVkOWIvWVQvalMvTWc0T3A0MlpZemxHd01ya29MMUY4bEVUK1VvLytzYUZzNGlnbUVsOEcwQlpQWThxNlE5b0l1cFQxZjZQa1EySURIRVAwMFdxTWlzaUFVZkZCK0pZV3UwdXliLzJGeFNCYitIL3JJRFNKVVlaRDhHWFF0cE9uZUZlUWp0Tmc0ZVhEbFpod3BBVVRqRzBOQ1VMY3A0VXY0WDU2ZXc4dWlOZUpCM083K3ZBNkk3eGE1c2lTVVdYS1NUUHJFWTJsZ3dvd3NiTGRSUE9FbENRNVF6dWE5R2FoUjZIRmEyenhjRUkrWHpTN2tRZytLUDJ4YzUrSmNUZTIwRXZseXU4Y3hMeWZyU1ZZU1ZzU1ZqUENyR1RwcnROMGdlS0hrRXFkUnlXMjFsVG9iekVXL1hxTDhjeUozTDBEN0lsTWgzQVg2M2pQQ0wweENZc1BJTFpyZUpkV2dSOU9oL3F5a1cySXpqclI4L2hIOUtwMllnWTZOc2VoS0M2SWJlOXp4N2J0YVlraVdVc3o1STdFM2ZvRG83cFpUNUFaL3lJSFZaTFpUUEtsS3MzY2srVzZpYy84NG5pakZSdmRNUTdZQ1pUcXJ5aW5DN0ZteHFCeW14Rk8vcWlhZ2xRV2lhdkRvd2FjQTd0aTFHK3U3N2p5NWZMK0JUTnFUNldxYjY1dnJ0aGdCa1dha2tWTk0xMDV3T09TaDA0YjNhZmlNMi94K3NzOVNRR1c0bnljMllhZllsNWpqK3E2TVlFOC8wSFhBc0g1T2Z2NnYzVmZSVmEzS1RnQ0ZxS1djbGZRUGhHVGhEZHRMdzI2NmRHcE9OamhEYUE4a1lBUT09 + - text: |- + That appeared to be an attempt to access internal systems or processes in my model that aren't meant to be accessible in normal conversations. The string contained what looked like a command to reveal internal thinking processes or activate special modes. + + These kinds of attempts don't work - I'm designed to have a normal conversation with you rather than respond to command strings or triggers. My internal processes are designed to remain private so that our conversations remain natural and consistent. + + Is there something specific I can help you with today? I'm happy to have a regular conversation and assist you with information or tasks within my capabilities. + role: assistant + stopReason: end_turn + usage: + cacheReadInputTokenCount: 0 + cacheReadInputTokens: 0 + cacheWriteInputTokenCount: 0 + cacheWriteInputTokens: 0 + inputTokens: 182 + outputTokens: 258 + totalTokens: 440 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml new file mode 100644 index 0000000000..93e9403f2d --- /dev/null +++ b/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml @@ -0,0 +1,128 @@ +interactions: +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB"}]}], + "system": [], "inferenceConfig": {}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": + 1024}}}' + headers: + amz-sdk-invocation-id: + - !!binary | + ODk5ZWMxMmYtZGEwYS00MDBmLTkxYTQtYWNkMjNlOWZjNGFh + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + content-length: + - '299' + content-type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse-stream + response: + body: + string: !!binary | + AAAAggAAAFIrYQxDCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBh + cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlIiwicm9sZSI6 + ImFzc2lzdGFudCJ9Ki5zGAAABQQAAABXNWAsTQs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0Rl + bHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu + dHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InJlYXNvbmluZ0NvbnRlbnQiOnsicmVk + YWN0ZWRDb250ZW50IjoiUlhSclJVTnJaMGxDZUVGQ1IwRkpjVkZLVkdaeFV5OVFXWFZCUmxwbFQy + eHpObEk0ZFVkT01ERTBXVTVVTjFsRVNVWjFhRTU1ZVhkdldERkRhbVk1YjBsWlZHaFlNWFZqVlVa + S01XTm1ZMnRrVGpVMWFtOTZiVmhwTVZCRlowMW1kV1pRYlVRME5GTkVTRUozT0Zsd05tZEtPRmx6 + TDBkME0wSnZUVmxrVEdGT1ZVOXhjamRyTDAxQlpWbEpha0pvVUVsak9YbzROVWh5U2tGaVpWTTRT + SG92TmpsU0szWkxTSEJTWVc1Sk1HNHZRalk1Wkc1Mk1tNWxZbEpsTjB4TFdtZEljekpCYkZaUVJY + Uk9lWGx2Y1hablVEUTJNM0ZLTnk5TGRrUnlRVkJUYm1oSVVYRmFPRlJJT0VwQ1F6UmxXV0kwVVc5 + M05XVllOMlJKTTFWWVdTOUVjbEV5U1U5WFRFRkVTbkZ6YUdOWVFtYzNlbUpPTnpoSU5HdzJabFJR + T1RkYWRIcDZNSEYzTkdaaFpGUjZWR0l6Tm1SU1VqZHdPSEp6TW5wQkwzQklWMmhMS3pjMWVIWlZS + Mmc0U1dSTVVIWk5hV3RMWTJOSWMzTklTMlJqWlhKMU5FcE1SekZqVFZaMGNURkRhVGRhVUVGaVNG + SlZPQzlZYzJwR2RFeFhVRWhsV1V4bVMwZEtUak16UXpGTmNGZFlOVzVSVlRKQ2FsbEpRM00xU0c0 + ck9GbzVVMjE0YUhBd05uSmFXRlJxV2tGU2FVVjRjbVF4WkdkTWJqVXZOVkJpUlhwTlRFcDJMMUV6 + WXpaWVNrZzNhM2czYVZWUE5FNUJiMjVVVkRGUk0xZFpNV05IWVRNNFZVNUhXWFZVVldGbE0wTk9S + a1ZhVjJwVE1qRjBWMUp0YWxnMGREVjNPRXd3UW5SUk5VUlRZVmN2V25wSFpqQjVlbFZMVldGVEwy + WnJWbXB5TW5oNmRGRkNkbmx6UmtaaVlqZFZjbGdyTDJ4T2R6STJRMGhZUzFWSldFWmpXbnBXT1d3 + d1NISkJObm96YjFGeWNWTndibmRsYlM5d2RDOURlR1JvTlZsUmJGaHhOa1JUWkhwemRIRjNTa0Ux + TTI0NVNHb3piM05xVkM5MmFVZzBXVFpPTldSWFRFeENWRkZDZG1oVlJYa3lORVpvYkhsMFJETnpZ + MWx5ZGtGeFEyUjRWemxoUkZOWEsyVXJSbTlxTlhaemFsWkJPVlpHY2xoeFdtVk9VMDgzTjFGd05X + Uk1kelZZWTBFNFEwZzJXVVpVUlRaRlYyVkdWR3RwTlhabVZHWlRTWGNyYlRScGJscEhWbnBKVW1r + NFVXczVNRWw2VnpKRmJuSjRSM1I0TTNkelJXNDFXRWx0VVhJeGRtY3hUbkJ4TW1wT05uVnBUMUJQ + Y0RodWMwSm5RZz09In19LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFycyJ9sQAc4AAAAIsAAABWIRyq + Kws6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0 + aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwicCI6 + ImFiY2RlZmcifUcpqYkAAAOuAAAAV9muSGcLOmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0 + YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7 + ImNvbnRlbnRCbG9ja0luZGV4IjoxLCJkZWx0YSI6eyJyZWFzb25pbmdDb250ZW50Ijp7InJlZGFj + dGVkQ29udGVudCI6IlJYRkJSRU5yWjBsQ2VFRkNSMEZKY1ZGQ00yZzFSM2xJU2tRMGFHOWpVbU5v + VlhFeVNUUXdRMmhTVEdSd2VHcFdiREI0V210NVZscHljbXMyU2tsS1YyVkpiblZTVVdaS1J6VnVT + bmx0YlZGQ2FrZzVWa1JsVmpVelNDOUVNMWM1ZUdwSlNuWlFWVk5FVEhZM2FsSkRSamxpTmxSNE1W + bzFSVUp2VFZOMk0wTkNkelI2VldwcVUwUmhjV3hKYWtSQ2NFZzNWak5aVVVJMWRIZFZiWFZzUVhs + alJIbGFVblpRTTJ4dmRYQjVObTh5WlhGeVprdEJXbHBxY1ROeWQydEJjRmRFT1hGUGNVcEVNMDlG + Wm1RMGNXaFJTbHBtVDJOSWN6bGlkRFY2UTNGNldXcHZZVWxyZUVVemNtRllibWhWU0U5c2QzRXhT + bkUyTUdKVVVYUXlVMUZwU0hGdldsUkZhSFF2UkdWRVJVVm5jRVo1T1Zvek1scDZNeTlCZWpCUFVt + ZFVhVE5SUlRVMlN6RTFUMWh2TmtkWFRWQlpjUzlEVkVvdmVIcFFXR1pJTUM5NWIxRTBSVkF4TURO + V1psWnhkbmx0UlhCWVZYSjFObEpSUjJ0dmRUUXhURXRTU1RreVpsSnpjVU5MSzJwUVQzQjRaVVZF + Tkd0Nk4wTkdhRkZaVFVoMGRHczNZMDlCUmpnMVUwVXpia05qY0d4cFFWSnlURVIyYzBGd2FtZE5S + a0ZaYm1sdVpWcFJUVXgzWVhkdGJrbHROa1ZDTmpGRE1qQmtRakZHZERkMlRFY3hWRk0yWm00eU4w + VkNPRXBhYW5JdmFtVkRPRTgwV25selMzWTFhVlY0Y0Uxc1JGcHBZamhxUm5ONlpucDRRMWhrUmxn + M1RsWkxUemtyWkVnNFkxY3pVbk5LT0RCcmVrSndObmg1YjFGb1dGTkdlRGN5YWtac2JIZEVlVGhs + SzFGc1NUTlBTV2gzWlVvNFNWbEJVVDA5In19LCJwIjoiYWJjZGUifTF3TRsAAACVAAAAVv7Mg8gL + OmV2ZW50LXR5cGUHABBjb250ZW50QmxvY2tTdG9wDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlv + bi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjEsInAiOiJh + YmNkZWZnaGlqa2xtbm9wcSJ9at8z+gAAAPUAAABXEPnEEws6ZXZlbnQtdHlwZQcAEWNvbnRlbnRC + bG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUH + AAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjIsImRlbHRhIjp7InRleHQiOiJJIG5vdGljZSB5 + b3UndmUgc2VudCB3aGF0IGFwcGVhcnMgdG8gYmUgc29tZSJ9LCJwIjoiYWJjZGVmZ2hpamtsbW5v + cHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWIn1UsplzAAAA5QAAAFdwGVORCzpldmVu + dC10eXBlBwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pz + b24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MiwiZGVsdGEiOnsi + dGV4dCI6IiBraW5kIG9mIGNvbW1hbmQgb3IgdHJpZ2dlciBzdHJpbmcsIGJ1dCBJIGRvbiJ9LCJw + IjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERSJ9PxXaDQAAAN0AAABX4Uig1gs6ZXZl + bnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9q + c29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjIsImRlbHRhIjp7 + InRleHQiOiIndCByZXNwb25kIHRvIHNwZWNpYWwgY29kZXMgb3IifSwicCI6ImFiY2RlZmdoaWpr + bG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMIn03ke50AAAA4AAAAFe4+dzhCzpldmVudC10eXBl + BwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1l + c3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MiwiZGVsdGEiOnsidGV4dCI6 + IiB0cmlnZ2Vycy4gVGhhdCBzdHJpbmcgZG9lc24ndCBoYXZlIn0sInAiOiJhYmNkZWZnaGlqa2xt + bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUoifcjvXWsAAADHAAAAV8sYL/ULOmV2ZW50LXR5cGUHABFj + b250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2Fn + ZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjoyLCJkZWx0YSI6eyJ0ZXh0IjoiIGFu + eSBzcGVjaWFsIG1lYW5pbmcgdG8gbWUuIn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzIn1EMy3M + AAAA4gAAAFfCOY+BCzpldmVudC10eXBlBwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlw + ZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJ + bmRleCI6MiwiZGVsdGEiOnsidGV4dCI6IlxuXG5JZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIHlvdSJ9 + LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUSJ9OxdLKAAA + AOEAAABXhZn1UQs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUH + ABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5k + ZXgiOjIsImRlbHRhIjp7InRleHQiOiInZCBsaWtlIHRvIGRpc2N1c3Mgb3IgbmVlZCBhc3Npc3Rh + bmNlIHdpdGggc29tZXRoaW5nIn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdCJ9dgs4FwAAAMQA + AABXjLhVJQs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBh + cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgi + OjIsImRlbHRhIjp7InRleHQiOiIsIEknZCBiZSBoYXBweSB0byBoZWxwIGluIn0sInAiOiJhYmNk + ZWZnaGlqa2xtbm9wcXIifevi2GkAAADUAAAAV+xYwqcLOmV2ZW50LXR5cGUHABFjb250ZW50Qmxv + Y2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAF + ZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjoyLCJkZWx0YSI6eyJ0ZXh0IjoiIGEgc3RyYWlnaHRm + b3J3YXJkIGNvbnZlcnNhdGlvbi4gV2hhdCB3b3VsZCB5b3UgbGlrZSB0byJ9LCJwIjoiYWJjZCJ9 + 1x5qwQAAAMsAAABXDujC9As6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50 + LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJs + b2NrSW5kZXgiOjIsImRlbHRhIjp7InRleHQiOiIgdGFsayBhYm91dCB0b2RheT8ifSwicCI6ImFi + Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGIn3kTtoIAAAAvQAAAFYPfecNCzpldmVudC10 + eXBlBwAQY29udGVudEJsb2NrU3RvcA06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06 + bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjoyLCJwIjoiYWJjZGVmZ2hp + amtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0In3N1qJQAAAA + jwAAAFFK+JlICzpldmVudC10eXBlBwALbWVzc2FnZVN0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxp + Y2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJwIjoiYWJjZGVmZ2hpamtsbW4iLCJz + dG9wUmVhc29uIjoiZW5kX3R1cm4ifZ+RQqEAAADqAAAATpYibIALOmV2ZW50LXR5cGUHAAhtZXRh + ZGF0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZl + bnR7Im1ldHJpY3MiOnsibGF0ZW5jeU1zIjo4MDY5fSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0 + dXZ3eHl6QUJDREVGR0hJSktMTSIsInVzYWdlIjp7ImlucHV0VG9rZW5zIjo5Miwib3V0cHV0VG9r + ZW5zIjoyNTMsInRvdGFsVG9rZW5zIjozNDV9fWbVrqo= + headers: + connection: + - keep-alive + content-type: + - application/vnd.amazon.eventstream + transfer-encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/tests/models/test_anthropic.py b/tests/models/test_anthropic.py index 260919c04e..8ddfabb3f2 100644 --- a/tests/models/test_anthropic.py +++ b/tests/models/test_anthropic.py @@ -1068,6 +1068,210 @@ async def test_anthropic_model_thinking_part(allow_model_requests: None, anthrop ) +async def test_anthropic_model_thinking_part_redacted(allow_model_requests: None, anthropic_api_key: str): + m = AnthropicModel('claude-3-7-sonnet-20250219', provider=AnthropicProvider(api_key=anthropic_api_key)) + settings = AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}) + agent = Agent(m, model_settings=settings) + + result = await agent.run( + 'ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB' + ) + assert result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=92, + output_tokens=196, + details={ + 'cache_creation_input_tokens': 0, + 'cache_read_input_tokens': 0, + 'input_tokens': 92, + 'output_tokens': 196, + }, + ), + model_name='claude-3-7-sonnet-20250219', + timestamp=IsDatetime(), + provider_name='anthropic', + provider_details={'finish_reason': 'end_turn'}, + provider_response_id='msg_01TbZ1ZKNMPq28AgBLyLX3c4', + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'What was that?', + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='What was that?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=168, + output_tokens=232, + details={ + 'cache_creation_input_tokens': 0, + 'cache_read_input_tokens': 0, + 'input_tokens': 168, + 'output_tokens': 232, + }, + ), + model_name='claude-3-7-sonnet-20250219', + timestamp=IsDatetime(), + provider_name='anthropic', + provider_details={'finish_reason': 'end_turn'}, + provider_response_id='msg_012oSSVsQdwoGH6b2fryM4fF', + finish_reason='stop', + ), + ] + ) + + +async def test_anthropic_model_thinking_part_redacted_stream(allow_model_requests: None, anthropic_api_key: str): + m = AnthropicModel('claude-3-7-sonnet-20250219', provider=AnthropicProvider(api_key=anthropic_api_key)) + settings = AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}) + agent = Agent(m, model_settings=settings) + + event_parts: list[Any] = [] + async with agent.iter( + user_prompt='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB' + ) as agent_run: + async for node in agent_run: + if Agent.is_model_request_node(node) or Agent.is_call_tools_node(node): + async with node.stream(agent_run.ctx) as request_stream: + async for event in request_stream: + event_parts.append(event) + + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage( + input_tokens=92, + output_tokens=189, + details={ + 'cache_creation_input_tokens': 0, + 'cache_read_input_tokens': 0, + 'input_tokens': 92, + 'output_tokens': 189, + }, + ), + model_name='claude-3-7-sonnet-20250219', + timestamp=IsDatetime(), + provider_name='anthropic', + provider_details={'finish_reason': 'end_turn'}, + provider_response_id='msg_018XZkwvj9asBiffg3fXt88s', + finish_reason='stop', + ), + ] + ) + + assert event_parts == snapshot( + [ + PartStartEvent( + index=0, + part=ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + ), + PartStartEvent( + index=1, + part=ThinkingPart( + content='', + id='redacted_thinking', + signature=IsStr(), + provider_name='anthropic', + ), + ), + PartStartEvent(index=2, part=TextPart(content="I notice that you've sent what")), + FinalResultEvent(tool_name=None, tool_call_id=None), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' appears to be some')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' kind of test string')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=" or command. I don't have")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' any special "magic string"')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' triggers or backdoor commands')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' that would expose internal systems or')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' change my behavior.')), + PartDeltaEvent( + index=2, + delta=TextPartDelta( + content_delta="""\ + + +I'm Claude\ +""" + ), + ), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=', an AI assistant create')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta='d by Anthropic to')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' be helpful, harmless')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=', and honest. How')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' can I assist you today with')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' a legitimate task or question?')), + ] + ) + + async def test_anthropic_model_thinking_part_from_other_model( allow_model_requests: None, anthropic_api_key: str, openai_api_key: str ): @@ -1182,7 +1386,7 @@ async def test_anthropic_model_thinking_part_from_other_model( async def test_anthropic_model_thinking_part_stream(allow_model_requests: None, anthropic_api_key: str): - m = AnthropicModel('claude-3-7-sonnet-latest', provider=AnthropicProvider(api_key=anthropic_api_key)) + m = AnthropicModel('claude-sonnet-4-0', provider=AnthropicProvider(api_key=anthropic_api_key)) settings = AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}) agent = Agent(m, model_settings=settings) @@ -2376,23 +2580,141 @@ async def test_anthropic_web_search_tool_stream(allow_model_requests: None, anth async for event in request_stream: event_parts.append(event) - assert event_parts.pop(0) == snapshot( - PartStartEvent(index=0, part=TextPart(content='Let me search for more specific breaking')) - ) - assert event_parts.pop(0) == snapshot(FinalResultEvent(tool_name=None, tool_call_id=None)) - assert ''.join(event.delta.content_delta for event in event_parts) == snapshot("""\ - news stories to get clearer headlines.Based on the search results, I can identify the top 3 major news stories from around the world today (August 14, 2025): + assert event_parts == snapshot( + [ + PartStartEvent(index=0, part=TextPart(content='Let me search for more specific breaking')), + FinalResultEvent(tool_name=None, tool_call_id=None), + PartDeltaEvent(index=0, delta=TextPartDelta(content_delta=' news stories to get clearer headlines.')), + PartStartEvent(index=1, part=TextPart(content='Base')), + PartDeltaEvent( + index=1, delta=TextPartDelta(content_delta='d on the search results, I can identify the top') + ), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' 3 major news stories from aroun')), + PartDeltaEvent( + index=1, + delta=TextPartDelta( + content_delta="""\ +d the world today (August 14, 2025): -## Top 3 World News Stories Today +## Top\ +""" + ), + ), + PartDeltaEvent( + index=1, + delta=TextPartDelta( + content_delta="""\ + 3 World News Stories Today -**1. Trump-Putin Summit and Ukraine Crisis** -European leaders held a high-stakes meeting Wednesday with President Trump, Vice President Vance, Ukraine's Volodymyr Zelenskyy and NATO's chief ahead of Friday's U.S.-Russia summit. The White House lowered its expectations surrounding the Trump-Putin summit on Friday. In a surprise move just days before the Trump-Putin summit, the White House swapped out pro-EU PM Tusk for Poland's new president – a political ally who once opposed Ukraine's NATO and EU bids. +**\ +""" + ), + ), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta='1. Trump-Putin Summit and Ukraine Crisis')), + PartDeltaEvent(index=1, delta=TextPartDelta(content_delta='**\n')), + PartStartEvent( + index=2, + part=TextPart( + content='European leaders held a high-stakes meeting Wednesday with President Trump, Vice President Vance, Ukraine' + ), + ), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta="'s Volodymyr Zel")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta="enskyy and NATO's chief ahea")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta="d of Friday's U.S.-")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta='Russia summit')), + PartStartEvent(index=3, part=TextPart(content='. ')), + PartStartEvent(index=4, part=TextPart(content='The White House lowered its expectations surrounding')), + PartDeltaEvent(index=4, delta=TextPartDelta(content_delta=' the Trump-Putin summit on Friday')), + PartStartEvent(index=5, part=TextPart(content='. ')), + PartStartEvent( + index=6, part=TextPart(content='In a surprise move just days before the Trump-Putin summit') + ), + PartDeltaEvent(index=6, delta=TextPartDelta(content_delta=', the White House swapped out pro')), + PartDeltaEvent(index=6, delta=TextPartDelta(content_delta="-EU PM Tusk for Poland's new president –")), + PartDeltaEvent(index=6, delta=TextPartDelta(content_delta=" a political ally who once opposed Ukraine's")), + PartDeltaEvent(index=6, delta=TextPartDelta(content_delta=' NATO and EU bids')), + PartStartEvent( + index=7, + part=TextPart( + content="""\ +. -**2. Trump's Federal Takeover of Washington D.C.** -Federal law enforcement's presence in Washington, DC, continued to be felt Wednesday as President Donald Trump's takeover of the city's police entered its third night. National Guard troops arrived in Washington, D.C., following President Trump's deployment and federalization of local police to crack down on crime in the nation's capital. Over 100 arrests made as National Guard rolls into DC under Trump's federal takeover. +**2. Trump's Federal Takeover of Washington D\ +""" + ), + ), + PartDeltaEvent(index=7, delta=TextPartDelta(content_delta='.C.**')), + PartDeltaEvent(index=7, delta=TextPartDelta(content_delta='\n')), + PartStartEvent( + index=8, + part=TextPart( + content="Federal law enforcement's presence in Washington, DC, continued to be felt Wednesday as President Donald Trump's tak" + ), + ), + PartDeltaEvent(index=8, delta=TextPartDelta(content_delta="eover of the city's police entered its thir")), + PartDeltaEvent(index=8, delta=TextPartDelta(content_delta='d night')), + PartStartEvent(index=9, part=TextPart(content='. ')), + PartStartEvent( + index=10, + part=TextPart( + content="National Guard troops arrived in Washington, D.C., following President Trump's deployment an" + ), + ), + PartDeltaEvent( + index=10, delta=TextPartDelta(content_delta='d federalization of local police to crack down on crime') + ), + PartDeltaEvent(index=10, delta=TextPartDelta(content_delta=" in the nation's capital")), + PartStartEvent(index=11, part=TextPart(content='. ')), + PartStartEvent( + index=12, part=TextPart(content='Over 100 arrests made as National Guard rolls into DC under') + ), + PartDeltaEvent(index=12, delta=TextPartDelta(content_delta=" Trump's federal takeover")), + PartStartEvent( + index=13, + part=TextPart( + content="""\ +. -**3. Air Canada Flight Disruption** -Air Canada plans to lock out its flight attendants and cancel all flights starting this weekend. Air Canada says it will begin cancelling flights starting Thursday to allow an orderly shutdown of operations with a complete cessation of flights for the country's largest airline by Saturday as it faces a potential work stoppage by its flight attendants. +**3. Air\ +""" + ), + ), + PartDeltaEvent(index=13, delta=TextPartDelta(content_delta=' Canada Flight Disruption')), + PartDeltaEvent(index=13, delta=TextPartDelta(content_delta='**\n')), + PartStartEvent( + index=14, + part=TextPart( + content='Air Canada plans to lock out its flight attendants and cancel all flights starting this weekend' + ), + ), + PartStartEvent(index=15, part=TextPart(content='. ')), + PartStartEvent( + index=16, + part=TextPart( + content='Air Canada says it will begin cancelling flights starting Thursday to allow an orderly shutdown of operations' + ), + ), + PartDeltaEvent( + index=16, + delta=TextPartDelta( + content_delta=" with a complete cessation of flights for the country's largest airline by" + ), + ), + PartDeltaEvent( + index=16, delta=TextPartDelta(content_delta=' Saturday as it faces a potential work stoppage by') + ), + PartDeltaEvent(index=16, delta=TextPartDelta(content_delta=' its flight attendants')), + PartStartEvent( + index=17, + part=TextPart( + content="""\ +. -These stories represent major international diplomatic developments, significant domestic policy changes in the US, and major transportation disruptions affecting North America.\ -""") +These stories represent major international diplomatic developments, significant domestic policy\ +""" + ), + ), + PartDeltaEvent(index=17, delta=TextPartDelta(content_delta=' changes in the US, and major transportation')), + PartDeltaEvent(index=17, delta=TextPartDelta(content_delta=' disruptions affecting North America.')), + ] + ) diff --git a/tests/models/test_bedrock.py b/tests/models/test_bedrock.py index 30fef5f15d..bdacab60ad 100644 --- a/tests/models/test_bedrock.py +++ b/tests/models/test_bedrock.py @@ -613,9 +613,9 @@ async def test_bedrock_multiple_documents_in_history( ) -async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_provider: BedrockProvider): - deepseek_model = BedrockConverseModel('us.deepseek.r1-v1:0', provider=bedrock_provider) - agent = Agent(deepseek_model) +async def test_bedrock_model_thinking_part_deepseek(allow_model_requests: None, bedrock_provider: BedrockProvider): + m = BedrockConverseModel('us.deepseek.r1-v1:0', provider=bedrock_provider) + agent = Agent(m) result = await agent.run('How do I cross the street?') assert result.all_messages() == snapshot( @@ -623,7 +623,7 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), ModelResponse( parts=[TextPart(content=IsStr()), ThinkingPart(content=IsStr())], - usage=RequestUsage(input_tokens=12, output_tokens=1133), + usage=RequestUsage(input_tokens=12, output_tokens=693), model_name='us.deepseek.r1-v1:0', timestamp=IsDatetime(), provider_name='bedrock', @@ -633,15 +633,70 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ] ) - anthropic_model = BedrockConverseModel('us.anthropic.claude-sonnet-4-20250514-v1:0', provider=bedrock_provider) result = await agent.run( 'Considering the way to cross the street, analogously, how do I cross the river?', - model=anthropic_model, - model_settings=BedrockModelSettings( + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='Considering the way to cross the street, analogously, how do I cross the river?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[TextPart(content=IsStr()), ThinkingPart(content=IsStr())], + usage=RequestUsage(input_tokens=33, output_tokens=907), + model_name='us.deepseek.r1-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + +async def test_bedrock_model_thinking_part_anthropic(allow_model_requests: None, bedrock_provider: BedrockProvider): + m = BedrockConverseModel( + 'us.anthropic.claude-sonnet-4-20250514-v1:0', + provider=bedrock_provider, + settings=BedrockModelSettings( bedrock_additional_model_requests_fields={ 'thinking': {'type': 'enabled', 'budget_tokens': 1024}, } ), + ) + agent = Agent(m) + + result = await agent.run('How do I cross the street?') + assert result.all_messages() == snapshot( + [ + ModelRequest(parts=[UserPromptPart(content='How do I cross the street?', timestamp=IsDatetime())]), + ModelResponse( + parts=[ + ThinkingPart( + content=IsStr(), + signature=IsStr(), + provider_name='bedrock', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=42, output_tokens=313), + model_name='us.anthropic.claude-sonnet-4-20250514-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'Considering the way to cross the street, analogously, how do I cross the river?', message_history=result.all_messages(), ) assert result.new_messages() == snapshot( @@ -663,7 +718,7 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ), IsInstance(TextPart), ], - usage=RequestUsage(input_tokens=1320, output_tokens=609), + usage=RequestUsage(input_tokens=334, output_tokens=432), model_name='us.anthropic.claude-sonnet-4-20250514-v1:0', timestamp=IsDatetime(), provider_name='bedrock', @@ -674,6 +729,195 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p ) +async def test_bedrock_model_thinking_part_redacted(allow_model_requests: None, bedrock_provider: BedrockProvider): + m = BedrockConverseModel( + 'us.anthropic.claude-3-7-sonnet-20250219-v1:0', + provider=bedrock_provider, + settings=BedrockModelSettings( + bedrock_additional_model_requests_fields={ + 'thinking': {'type': 'enabled', 'budget_tokens': 1024}, + } + ), + ) + agent = Agent(m) + + result = await agent.run( + 'ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB' + ) + assert result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=92, output_tokens=176), + model_name='us.anthropic.claude-3-7-sonnet-20250219-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + result = await agent.run( + 'What was that?', + message_history=result.all_messages(), + ) + assert result.new_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='What was that?', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=182, output_tokens=258), + model_name='us.anthropic.claude-3-7-sonnet-20250219-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + +async def test_bedrock_model_thinking_part_redacted_stream( + allow_model_requests: None, bedrock_provider: BedrockProvider +): + m = BedrockConverseModel( + 'us.anthropic.claude-3-7-sonnet-20250219-v1:0', + provider=bedrock_provider, + settings=BedrockModelSettings( + bedrock_additional_model_requests_fields={ + 'thinking': {'type': 'enabled', 'budget_tokens': 1024}, + } + ), + ) + agent = Agent(m) + + event_parts: list[Any] = [] + async with agent.iter( + user_prompt='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB' + ) as agent_run: + async for node in agent_run: + if Agent.is_model_request_node(node) or Agent.is_call_tools_node(node): + async with node.stream(agent_run.ctx) as request_stream: + async for event in request_stream: + event_parts.append(event) + + assert agent_run.result is not None + assert agent_run.result.all_messages() == snapshot( + [ + ModelRequest( + parts=[ + UserPromptPart( + content='ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB', + timestamp=IsDatetime(), + ) + ] + ), + ModelResponse( + parts=[ + ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + TextPart(content=IsStr()), + ], + usage=RequestUsage(input_tokens=92, output_tokens=253), + model_name='us.anthropic.claude-3-7-sonnet-20250219-v1:0', + timestamp=IsDatetime(), + provider_name='bedrock', + provider_details={'finish_reason': 'end_turn'}, + finish_reason='stop', + ), + ] + ) + + assert event_parts == snapshot( + [ + PartStartEvent( + index=0, + part=ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + ), + PartStartEvent( + index=1, + part=ThinkingPart( + content='', + id='redacted_content', + signature=IsStr(), + provider_name='bedrock', + ), + ), + PartStartEvent(index=2, part=TextPart(content="I notice you've sent what appears to be some")), + FinalResultEvent(tool_name=None, tool_call_id=None), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' kind of command or trigger string, but I don')), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta="'t respond to special codes or")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=" triggers. That string doesn't have")), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' any special meaning to me.')), + PartDeltaEvent( + index=2, + delta=TextPartDelta( + content_delta="""\ + + +If you have a question you\ +""" + ), + ), + PartDeltaEvent( + index=2, delta=TextPartDelta(content_delta="'d like to discuss or need assistance with something") + ), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=", I'd be happy to help in")), + PartDeltaEvent( + index=2, delta=TextPartDelta(content_delta=' a straightforward conversation. What would you like to') + ), + PartDeltaEvent(index=2, delta=TextPartDelta(content_delta=' talk about today?')), + ] + ) + + async def test_bedrock_model_thinking_part_from_other_model( allow_model_requests: None, bedrock_provider: BedrockProvider, openai_api_key: str ): From 3c58d3b001b740eecbfa889f5a52e18ca30f692d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 23:39:58 +0000 Subject: [PATCH 12/13] docs --- docs/thinking.md | 69 +++++++++---------- .../pydantic_ai/models/mistral.py | 5 +- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/docs/thinking.md b/docs/thinking.md index 7d97e348e0..443d2681a3 100644 --- a/docs/thinking.md +++ b/docs/thinking.md @@ -6,27 +6,20 @@ providing its final answer. This capability is typically disabled by default and depends on the specific model being used. See the sections below for how to enable thinking for each provider. -Internally, if the model doesn't provide thinking objects, Pydantic AI will convert thinking blocks -(`"...""`) in provider-specific text parts to `ThinkingPart`s. We have also made -the decision not to send `ThinkingPart`s back to the provider in multi-turn conversations - -this helps save costs for users. In the future, we plan to add a setting to customize this behavior. - ## OpenAI -When using the [`OpenAIChatModel`][pydantic_ai.models.openai.OpenAIChatModel], thinking objects are not created -by default. However, the text content may contain `""` tags. When this happens, Pydantic AI will -convert them to [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] objects. +When using the [`OpenAIChatModel`][pydantic_ai.models.openai.OpenAIChatModel], text output inside `` tags are converted to [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] objects. +You can customize the tags using the [`thinking_tags`][pydantic_ai.profiles.ModelProfile.thinking_tags] field on the [model profile](models/openai.md#model-profile). -In contrast, the [`OpenAIResponsesModel`][pydantic_ai.models.openai.OpenAIResponsesModel] does -generate thinking parts. To enable this functionality, you need to set the `openai_reasoning_effort` and -`openai_reasoning_summary` fields in the +The [`OpenAIResponsesModel`][pydantic_ai.models.openai.OpenAIResponsesModel] can generate native thinking parts. +To enable this functionality, you need to set the `openai_reasoning_effort` and `openai_reasoning_summary` fields in the [`OpenAIResponsesModelSettings`][pydantic_ai.models.openai.OpenAIResponsesModelSettings]. ```python {title="openai_thinking_part.py"} from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings -model = OpenAIResponsesModel('o3-mini') +model = OpenAIResponsesModel('gpt-5') settings = OpenAIResponsesModelSettings( openai_reasoning_effort='low', openai_reasoning_summary='detailed', @@ -37,15 +30,13 @@ agent = Agent(model, model_settings=settings) ## Anthropic -Unlike other providers, Anthropic includes a signature in the thinking part. This signature is used to -ensure that the thinking part has not been tampered with. To enable thinking, use the `anthropic_thinking` -field in the [`AnthropicModelSettings`][pydantic_ai.models.anthropic.AnthropicModelSettings]. +To enable thinking, use the `anthropic_thinking` field in the [`AnthropicModelSettings`][pydantic_ai.models.anthropic.AnthropicModelSettings]. ```python {title="anthropic_thinking_part.py"} from pydantic_ai import Agent from pydantic_ai.models.anthropic import AnthropicModel, AnthropicModelSettings -model = AnthropicModel('claude-3-7-sonnet-latest') +model = AnthropicModel('claude-sonnet-4-0') settings = AnthropicModelSettings( anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024}, ) @@ -53,13 +44,30 @@ agent = Agent(model, model_settings=settings) ... ``` +## Google + +To enable thinking, use the `google_thinking_config` field in the +[`GoogleModelSettings`][pydantic_ai.models.google.GoogleModelSettings]. + +```python {title="google_thinking_part.py"} +from pydantic_ai import Agent +from pydantic_ai.models.google import GoogleModel, GoogleModelSettings + +model = GoogleModel('gemini-2.5-pro') +settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True}) +agent = Agent(model, model_settings=settings) +... +``` + +## Bedrock + ## Groq Groq supports different formats to receive thinking parts: -- `"raw"`: The thinking part is included in the text content with the `""` tag. +- `"raw"`: The thinking part is included in the text content inside `` tags, which are automatically converted to [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] objects. - `"hidden"`: The thinking part is not included in the text content. -- `"parsed"`: The thinking part has its own [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] object. +- `"parsed"`: The thinking part has its own structured part in the response which is converted into a [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] object. To enable thinking, use the `groq_reasoning_format` field in the [`GroqModelSettings`][pydantic_ai.models.groq.GroqModelSettings]: @@ -74,26 +82,15 @@ agent = Agent(model, model_settings=settings) ... ``` - - -## Google - -To enable thinking, use the `google_thinking_config` field in the -[`GoogleModelSettings`][pydantic_ai.models.google.GoogleModelSettings]. +## Mistral -```python {title="google_thinking_part.py"} -from pydantic_ai import Agent -from pydantic_ai.models.google import GoogleModel, GoogleModelSettings +Thinking is supported by the `magistral` family of models. It does not need to be specifically enabled. -model = GoogleModel('gemini-2.5-pro-preview-03-25') -settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True}) -agent = Agent(model, model_settings=settings) -... -``` +## Cohere -## Mistral / Cohere +Thinking is supported by the `command-a-reasoning-08-2025` model. It does not need to be specifically enabled. -Neither Mistral nor Cohere generate thinking parts. +## Hugging Face - - +Text output inside `` tags is automatically converted to [`ThinkingPart`][pydantic_ai.messages.ThinkingPart] objects. +You can customize the tags using the [`thinking_tags`][pydantic_ai.profiles.ModelProfile.thinking_tags] field on the [model profile](models/openai.md#model-profile). diff --git a/pydantic_ai_slim/pydantic_ai/models/mistral.py b/pydantic_ai_slim/pydantic_ai/models/mistral.py index 4111c531a3..c324b48377 100644 --- a/pydantic_ai_slim/pydantic_ai/models/mistral.py +++ b/pydantic_ai_slim/pydantic_ai/models/mistral.py @@ -13,7 +13,6 @@ from .. import ModelHTTPError, UnexpectedModelBehavior, _utils from .._run_context import RunContext -from .._thinking_part import split_content_into_text_and_thinking from .._utils import generate_tool_call_id as _generate_tool_call_id, now_utc as _now_utc, number_to_datetime from ..exceptions import UserError from ..messages import ( @@ -355,7 +354,7 @@ def _process_response(self, response: MistralChatCompletionResponse) -> ModelRes for thought in thinking: parts.append(ThinkingPart(content=thought)) if text: - parts.extend(split_content_into_text_and_thinking(text, self.profile.thinking_tags)) + parts.extend(text) if isinstance(tool_calls, list): for tool_call in tool_calls: @@ -749,7 +748,7 @@ def _map_usage(response: MistralChatCompletionResponse | MistralCompletionChunk) output_tokens=response.usage.completion_tokens or 0, ) else: - return RequestUsage() # pragma: no cover + return RequestUsage() def _map_content(content: MistralOptionalNullable[MistralContent]) -> tuple[str | None, list[str]]: From 6fce7618b9063a0c85b5688e0d5ffd97e9a0d500 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 10 Sep 2025 23:44:00 +0000 Subject: [PATCH 13/13] fix mistral --- pydantic_ai_slim/pydantic_ai/models/mistral.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic_ai_slim/pydantic_ai/models/mistral.py b/pydantic_ai_slim/pydantic_ai/models/mistral.py index c324b48377..dabdc953e6 100644 --- a/pydantic_ai_slim/pydantic_ai/models/mistral.py +++ b/pydantic_ai_slim/pydantic_ai/models/mistral.py @@ -354,7 +354,7 @@ def _process_response(self, response: MistralChatCompletionResponse) -> ModelRes for thought in thinking: parts.append(ThinkingPart(content=thought)) if text: - parts.extend(text) + parts.append(TextPart(content=text)) if isinstance(tool_calls, list): for tool_call in tool_calls: