pydantic-ai 0.2.19__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pydantic-ai might be problematic. Click here for more details.
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/PKG-INFO +3 -3
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/pyproject.toml +1 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/conftest.py +5 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/mcp_server.py +18 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +230 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +231 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +206 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +2053 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +290 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +91 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +278 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +122 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +207 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_google/test_google_timeout.yaml +64 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +345 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +313 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +310 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +1413 -0
- pydantic_ai-0.3.0/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +321 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_anthropic.py +249 -11
- pydantic_ai-0.3.0/tests/models/test_bedrock.py +1492 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_cohere.py +133 -1
- pydantic_ai-0.3.0/tests/models/test_deepseek.py +45 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_gemini.py +139 -2
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_gemini_vertex.py +3 -3
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_google.py +161 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_groq.py +221 -3
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_mistral.py +82 -2
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_model_names.py +4 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_model_test.py +1 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_openai.py +209 -8
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_openai_responses.py +1 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_history_processor.py +100 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_logfire.py +2 -2
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_mcp.py +49 -5
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_messages.py +30 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_parts_manager.py +58 -0
- pydantic_ai-0.3.0/tests/test_thinking_part.py +28 -0
- pydantic_ai-0.2.19/tests/models/test_bedrock.py +0 -728
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/.gitignore +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/LICENSE +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/Makefile +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/README.md +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/ext/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/fasta2a/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/fasta2a/test_applications.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/import_examples.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_fallback.py +1 -1
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/providers/test_together.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_agent.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_cli.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_deps.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_direct.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_examples.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_live.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_settings.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_tools.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/test_utils.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.2.19 → pydantic_ai-0.3.0}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Agent Framework / shim to use Pydantic with LLMs
|
|
5
5
|
Project-URL: Homepage, https://ai.pydantic.dev
|
|
6
6
|
Project-URL: Source, https://github.com/pydantic/pydantic-ai
|
|
@@ -28,9 +28,9 @@ Classifier: Topic :: Internet
|
|
|
28
28
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Requires-Python: >=3.9
|
|
31
|
-
Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.3.0
|
|
32
32
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.
|
|
33
|
+
Requires-Dist: pydantic-ai-examples==0.3.0; extra == 'examples'
|
|
34
34
|
Provides-Extra: logfire
|
|
35
35
|
Requires-Dist: logfire>=3.11.0; extra == 'logfire'
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
@@ -37,7 +37,6 @@ if TYPE_CHECKING:
|
|
|
37
37
|
T = TypeVar('T')
|
|
38
38
|
|
|
39
39
|
def IsInstance(arg: type[T]) -> T: ...
|
|
40
|
-
|
|
41
40
|
def IsDatetime(*args: Any, **kwargs: Any) -> datetime: ...
|
|
42
41
|
def IsFloat(*args: Any, **kwargs: Any) -> float: ...
|
|
43
42
|
def IsInt(*args: Any, **kwargs: Any) -> int: ...
|
|
@@ -252,6 +251,11 @@ def document_content(assets_path: Path) -> BinaryContent:
|
|
|
252
251
|
return BinaryContent(data=pdf_bytes, media_type='application/pdf')
|
|
253
252
|
|
|
254
253
|
|
|
254
|
+
@pytest.fixture(scope='session')
|
|
255
|
+
def deepseek_api_key() -> str:
|
|
256
|
+
return os.getenv('DEEPSEEK_API_KEY', 'mock-api-key')
|
|
257
|
+
|
|
258
|
+
|
|
255
259
|
@pytest.fixture(scope='session')
|
|
256
260
|
def openai_api_key() -> str:
|
|
257
261
|
return os.getenv('OPENAI_API_KEY', 'mock-api-key')
|
|
@@ -3,6 +3,8 @@ from pathlib import Path
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
5
|
from mcp.server.fastmcp import Context, FastMCP, Image
|
|
6
|
+
from mcp.server.session import ServerSessionT
|
|
7
|
+
from mcp.shared.context import LifespanContextT, RequestT
|
|
6
8
|
from mcp.types import BlobResourceContents, EmbeddedResource, TextResourceContents
|
|
7
9
|
from pydantic import AnyUrl
|
|
8
10
|
|
|
@@ -118,6 +120,22 @@ async def get_log_level(ctx: Context) -> str: # type: ignore
|
|
|
118
120
|
return log_level
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
@mcp.tool()
|
|
124
|
+
async def echo_deps(ctx: Context[ServerSessionT, LifespanContextT, RequestT]) -> dict[str, Any]:
|
|
125
|
+
"""Echo the run context.
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
ctx: Context object containing request and session information.
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
Dictionary with an echo message and the deps.
|
|
132
|
+
"""
|
|
133
|
+
await ctx.info('This is an info message')
|
|
134
|
+
|
|
135
|
+
deps: Any = getattr(ctx.request_context.meta, 'deps')
|
|
136
|
+
return {'echo': 'This is an echo message', 'deps': deps}
|
|
137
|
+
|
|
138
|
+
|
|
121
139
|
@mcp._mcp_server.set_logging_level() # pyright: ignore[reportPrivateUsage]
|
|
122
140
|
async def set_logging_level(level: str) -> None:
|
|
123
141
|
global log_level
|
pydantic_ai-0.3.0/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
headers:
|
|
4
|
+
accept:
|
|
5
|
+
- application/json
|
|
6
|
+
accept-encoding:
|
|
7
|
+
- gzip, deflate
|
|
8
|
+
connection:
|
|
9
|
+
- keep-alive
|
|
10
|
+
content-length:
|
|
11
|
+
- '213'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
max_tokens: 2048
|
|
19
|
+
messages:
|
|
20
|
+
- content:
|
|
21
|
+
- text: How do I cross the street?
|
|
22
|
+
type: text
|
|
23
|
+
role: user
|
|
24
|
+
model: claude-3-7-sonnet-latest
|
|
25
|
+
stream: false
|
|
26
|
+
thinking:
|
|
27
|
+
budget_tokens: 1024
|
|
28
|
+
type: enabled
|
|
29
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
30
|
+
response:
|
|
31
|
+
headers:
|
|
32
|
+
connection:
|
|
33
|
+
- keep-alive
|
|
34
|
+
content-length:
|
|
35
|
+
- '1876'
|
|
36
|
+
content-type:
|
|
37
|
+
- application/json
|
|
38
|
+
strict-transport-security:
|
|
39
|
+
- max-age=31536000; includeSubDomains; preload
|
|
40
|
+
transfer-encoding:
|
|
41
|
+
- chunked
|
|
42
|
+
parsed_body:
|
|
43
|
+
content:
|
|
44
|
+
- signature: ErUBCkYIBBgCIkDdtS5sPfAhQSct3TDKHzeqm87m7bk/P0ecMKVxqofk9q15fEDVWXxuIzQIYZCLUfcJzFi4/IYnpQYrgP34x4pnEgzeA7mWRCy/f1bK+IYaDH5i0Q5hgZkqPeMdwSIwMzHMBPM4Xae4czWnzjHGLR9Xg7DN+sb+MXKFgdXY4bcaOKzhImS05aqIjqBs4CHyKh1dTzSnHd76MAHgM1qjBQ2eIZJJ7s5WGkRkbvWzTxgC
|
|
45
|
+
thinking: This is a basic question about pedestrian safety when crossing a street. I'll provide a clear, step-by-step
|
|
46
|
+
explanation of how to safely cross a street. This is important safety information that applies to most places, though
|
|
47
|
+
specific rules might vary slightly by country.
|
|
48
|
+
type: thinking
|
|
49
|
+
- text: |-
|
|
50
|
+
# How to Cross the Street Safely
|
|
51
|
+
|
|
52
|
+
1. **Find the right spot to cross**
|
|
53
|
+
- Use marked crosswalks when available
|
|
54
|
+
- Cross at intersections with traffic signals if possible
|
|
55
|
+
- Avoid crossing between parked cars or on blind curves
|
|
56
|
+
|
|
57
|
+
2. **Stop at the edge of the street**
|
|
58
|
+
- Stand where you can see traffic clearly
|
|
59
|
+
- Make sure drivers can see you too
|
|
60
|
+
|
|
61
|
+
3. **Look in all directions**
|
|
62
|
+
- Look left, right, then left again (or right, left, right again in left-driving countries)
|
|
63
|
+
- Check for turning vehicles at intersections
|
|
64
|
+
|
|
65
|
+
4. **Wait for a safe gap in traffic**
|
|
66
|
+
- If at a signal, wait for the "WALK" sign or green light
|
|
67
|
+
- Make sure all vehicles have stopped before stepping into the road
|
|
68
|
+
|
|
69
|
+
5. **Cross with purpose**
|
|
70
|
+
- Walk at a steady pace - don't run
|
|
71
|
+
- Continue watching for traffic as you cross
|
|
72
|
+
- Don't use your phone or wear headphones while crossing
|
|
73
|
+
|
|
74
|
+
Remember that local customs and laws may vary, but safety always comes first!
|
|
75
|
+
type: text
|
|
76
|
+
id: msg_01FWiSVNCRHvHUYU21BRandY
|
|
77
|
+
model: claude-3-7-sonnet-20250219
|
|
78
|
+
role: assistant
|
|
79
|
+
stop_reason: end_turn
|
|
80
|
+
stop_sequence: null
|
|
81
|
+
type: message
|
|
82
|
+
usage:
|
|
83
|
+
cache_creation_input_tokens: 0
|
|
84
|
+
cache_read_input_tokens: 0
|
|
85
|
+
input_tokens: 42
|
|
86
|
+
output_tokens: 302
|
|
87
|
+
service_tier: standard
|
|
88
|
+
status:
|
|
89
|
+
code: 200
|
|
90
|
+
message: OK
|
|
91
|
+
- request:
|
|
92
|
+
headers:
|
|
93
|
+
accept:
|
|
94
|
+
- application/json
|
|
95
|
+
accept-encoding:
|
|
96
|
+
- gzip, deflate
|
|
97
|
+
connection:
|
|
98
|
+
- keep-alive
|
|
99
|
+
content-length:
|
|
100
|
+
- '1953'
|
|
101
|
+
content-type:
|
|
102
|
+
- application/json
|
|
103
|
+
host:
|
|
104
|
+
- api.anthropic.com
|
|
105
|
+
method: POST
|
|
106
|
+
parsed_body:
|
|
107
|
+
max_tokens: 2048
|
|
108
|
+
messages:
|
|
109
|
+
- content:
|
|
110
|
+
- text: How do I cross the street?
|
|
111
|
+
type: text
|
|
112
|
+
role: user
|
|
113
|
+
- content:
|
|
114
|
+
- signature: ErUBCkYIBBgCIkDdtS5sPfAhQSct3TDKHzeqm87m7bk/P0ecMKVxqofk9q15fEDVWXxuIzQIYZCLUfcJzFi4/IYnpQYrgP34x4pnEgzeA7mWRCy/f1bK+IYaDH5i0Q5hgZkqPeMdwSIwMzHMBPM4Xae4czWnzjHGLR9Xg7DN+sb+MXKFgdXY4bcaOKzhImS05aqIjqBs4CHyKh1dTzSnHd76MAHgM1qjBQ2eIZJJ7s5WGkRkbvWzTxgC
|
|
115
|
+
thinking: This is a basic question about pedestrian safety when crossing a street. I'll provide a clear, step-by-step
|
|
116
|
+
explanation of how to safely cross a street. This is important safety information that applies to most places,
|
|
117
|
+
though specific rules might vary slightly by country.
|
|
118
|
+
type: thinking
|
|
119
|
+
- text: |-
|
|
120
|
+
# How to Cross the Street Safely
|
|
121
|
+
|
|
122
|
+
1. **Find the right spot to cross**
|
|
123
|
+
- Use marked crosswalks when available
|
|
124
|
+
- Cross at intersections with traffic signals if possible
|
|
125
|
+
- Avoid crossing between parked cars or on blind curves
|
|
126
|
+
|
|
127
|
+
2. **Stop at the edge of the street**
|
|
128
|
+
- Stand where you can see traffic clearly
|
|
129
|
+
- Make sure drivers can see you too
|
|
130
|
+
|
|
131
|
+
3. **Look in all directions**
|
|
132
|
+
- Look left, right, then left again (or right, left, right again in left-driving countries)
|
|
133
|
+
- Check for turning vehicles at intersections
|
|
134
|
+
|
|
135
|
+
4. **Wait for a safe gap in traffic**
|
|
136
|
+
- If at a signal, wait for the "WALK" sign or green light
|
|
137
|
+
- Make sure all vehicles have stopped before stepping into the road
|
|
138
|
+
|
|
139
|
+
5. **Cross with purpose**
|
|
140
|
+
- Walk at a steady pace - don't run
|
|
141
|
+
- Continue watching for traffic as you cross
|
|
142
|
+
- Don't use your phone or wear headphones while crossing
|
|
143
|
+
|
|
144
|
+
Remember that local customs and laws may vary, but safety always comes first!
|
|
145
|
+
type: text
|
|
146
|
+
role: assistant
|
|
147
|
+
- content:
|
|
148
|
+
- text: Considering the way to cross the street, analogously, how do I cross the river?
|
|
149
|
+
type: text
|
|
150
|
+
role: user
|
|
151
|
+
model: claude-3-7-sonnet-latest
|
|
152
|
+
stream: false
|
|
153
|
+
thinking:
|
|
154
|
+
budget_tokens: 1024
|
|
155
|
+
type: enabled
|
|
156
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
157
|
+
response:
|
|
158
|
+
headers:
|
|
159
|
+
connection:
|
|
160
|
+
- keep-alive
|
|
161
|
+
content-length:
|
|
162
|
+
- '2807'
|
|
163
|
+
content-type:
|
|
164
|
+
- application/json
|
|
165
|
+
strict-transport-security:
|
|
166
|
+
- max-age=31536000; includeSubDomains; preload
|
|
167
|
+
transfer-encoding:
|
|
168
|
+
- chunked
|
|
169
|
+
parsed_body:
|
|
170
|
+
content:
|
|
171
|
+
- signature: ErUBCkYIBBgCIkCNPEqIUXmAqiaqIqaHEmtiTi5sG6jBLYWmyfr9ELAh9dLAPPiq0Bnp2YQFJB2kz0aWYC8pJW9ylay8cJPFOGdIEgwcoJGGceEVCihog7MaDBZNwmI8LweQANgdvCIwvYrhAAqUDGHfQUYWuVB3ay4ySnmnROCDhtjOe6zTA2N2NC+BCePcZQBGQh/tnuoXKh37QqP3KRrKdVU5j1x4vAtUNtxQhbh4ip5qU5J12xgC
|
|
172
|
+
thinking: |-
|
|
173
|
+
This is an interesting analogy question. The person is asking how to cross a river by comparing it to crossing a street. I should outline the key principles of river crossing that parallel street crossing safety, while adapting for the unique challenges of a river environment.
|
|
174
|
+
|
|
175
|
+
For crossing a river, I should consider:
|
|
176
|
+
1. Finding the right spot (like shallow areas, bridges, or ferry crossings)
|
|
177
|
+
2. Assessing the conditions (river speed, depth, width, obstacles)
|
|
178
|
+
3. Choosing the appropriate method based on the river conditions
|
|
179
|
+
4. Safety precautions specific to water crossings
|
|
180
|
+
5. The actual crossing technique
|
|
181
|
+
|
|
182
|
+
I'll structure this as a parallel to the street crossing guide, highlighting the similarities in approach while acknowledging the different hazards and considerations.
|
|
183
|
+
type: thinking
|
|
184
|
+
- text: |-
|
|
185
|
+
# How to Cross a River Safely
|
|
186
|
+
|
|
187
|
+
1. **Find the right spot to cross**
|
|
188
|
+
- Use bridges, ferries, or designated crossing points when available
|
|
189
|
+
- Look for narrow, shallow sections with slower currents
|
|
190
|
+
- Avoid areas with rapids, fallen trees, or deep channels
|
|
191
|
+
|
|
192
|
+
2. **Assess the river before attempting to cross**
|
|
193
|
+
- Check the water speed, depth, and clarity
|
|
194
|
+
- Look for hazards like submerged objects or strong currents
|
|
195
|
+
- Consider seasonal factors (spring floods, winter ice)
|
|
196
|
+
|
|
197
|
+
3. **Choose the appropriate crossing method**
|
|
198
|
+
- Bridge or ferry: Safest options when available
|
|
199
|
+
- Wading: For shallow, calm waters (typically below knee height)
|
|
200
|
+
- Swimming: Only for those with strong swimming skills in appropriate conditions
|
|
201
|
+
- Boat/raft: For wider or deeper crossings
|
|
202
|
+
|
|
203
|
+
4. **Prepare for the crossing**
|
|
204
|
+
- Secure belongings in waterproof containers
|
|
205
|
+
- Remove shoes or change to water shoes if wading
|
|
206
|
+
- Consider using a walking stick for balance when wading
|
|
207
|
+
|
|
208
|
+
5. **Cross with caution**
|
|
209
|
+
- Face upstream while crossing to better resist the current
|
|
210
|
+
- Move steadily and deliberately - don't rush
|
|
211
|
+
- Stay aware of changing conditions during the crossing
|
|
212
|
+
|
|
213
|
+
Remember that river crossings involve significantly greater risks than street crossings. When in doubt, seek an established crossing point or go around rather than risking a dangerous crossing.
|
|
214
|
+
type: text
|
|
215
|
+
id: msg_01T32uJ4PiazXZjT1tfhpP8g
|
|
216
|
+
model: claude-3-7-sonnet-20250219
|
|
217
|
+
role: assistant
|
|
218
|
+
stop_reason: end_turn
|
|
219
|
+
stop_sequence: null
|
|
220
|
+
type: message
|
|
221
|
+
usage:
|
|
222
|
+
cache_creation_input_tokens: 0
|
|
223
|
+
cache_read_input_tokens: 0
|
|
224
|
+
input_tokens: 303
|
|
225
|
+
output_tokens: 486
|
|
226
|
+
service_tier: standard
|
|
227
|
+
status:
|
|
228
|
+
code: 200
|
|
229
|
+
message: OK
|
|
230
|
+
version: 1
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
headers:
|
|
4
|
+
accept:
|
|
5
|
+
- application/json
|
|
6
|
+
accept-encoding:
|
|
7
|
+
- gzip, deflate
|
|
8
|
+
connection:
|
|
9
|
+
- keep-alive
|
|
10
|
+
content-length:
|
|
11
|
+
- '212'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
max_tokens: 2048
|
|
19
|
+
messages:
|
|
20
|
+
- content:
|
|
21
|
+
- text: How do I cross the street?
|
|
22
|
+
type: text
|
|
23
|
+
role: user
|
|
24
|
+
model: claude-3-7-sonnet-latest
|
|
25
|
+
stream: true
|
|
26
|
+
thinking:
|
|
27
|
+
budget_tokens: 1024
|
|
28
|
+
type: enabled
|
|
29
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
30
|
+
response:
|
|
31
|
+
body:
|
|
32
|
+
string: |+
|
|
33
|
+
event: message_start
|
|
34
|
+
data: {"type":"message_start","message":{"id":"msg_01K8dnhxH3xD11atV9TZWkNM","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":42,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5,"service_tier":"standard"}}}
|
|
35
|
+
|
|
36
|
+
event: content_block_start
|
|
37
|
+
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""} }
|
|
38
|
+
|
|
39
|
+
event: ping
|
|
40
|
+
data: {"type": "ping"}
|
|
41
|
+
|
|
42
|
+
event: content_block_delta
|
|
43
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"This question is asking"} }
|
|
44
|
+
|
|
45
|
+
event: content_block_delta
|
|
46
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" about how to cross a street"} }
|
|
47
|
+
|
|
48
|
+
event: content_block_delta
|
|
49
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" safely, which is a"} }
|
|
50
|
+
|
|
51
|
+
event: content_block_delta
|
|
52
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" basic pedestrian safety skill"} }
|
|
53
|
+
|
|
54
|
+
event: content_block_delta
|
|
55
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":". Let me provide a"} }
|
|
56
|
+
|
|
57
|
+
event: content_block_delta
|
|
58
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" clear, helpful answer"} }
|
|
59
|
+
|
|
60
|
+
event: content_block_delta
|
|
61
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" with the standard safety procedures for"} }
|
|
62
|
+
|
|
63
|
+
event: content_block_delta
|
|
64
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":" crossing a street."} }
|
|
65
|
+
|
|
66
|
+
event: content_block_delta
|
|
67
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"ErUBCkYIBBgCIkCvb+W28uqOVW1QcFdQfS4Qmlvhuf3Ji+y2HrT70+C+1Y3+bsJWI7TalhkbNqYrrsiwNiZD/V36NRWv13CwaLU0EgwKvWjc4TaALe+mux4aDBvydYDAXS63lck0WiIwe6i1uYVGUdtG2sDLh0hykB4CFO8QKO2jguCYqNxB3XMC0f/6zTQOsCIGqOUxaDRqKh0Wa/4Poohf60tzp4tl4c3ft1J+02/lKjVXEg28PhgC"}}
|
|
68
|
+
|
|
69
|
+
event: content_block_stop
|
|
70
|
+
data: {"type":"content_block_stop","index":0 }
|
|
71
|
+
|
|
72
|
+
event: content_block_start
|
|
73
|
+
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""} }
|
|
74
|
+
|
|
75
|
+
event: content_block_delta
|
|
76
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"# How to Cross a Street Safely"}}
|
|
77
|
+
|
|
78
|
+
event: content_block_delta
|
|
79
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n\n1. **Fin"} }
|
|
80
|
+
|
|
81
|
+
event: content_block_delta
|
|
82
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"d a designated crossing point** if"} }
|
|
83
|
+
|
|
84
|
+
event: content_block_delta
|
|
85
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" possible:\n -"} }
|
|
86
|
+
|
|
87
|
+
event: content_block_delta
|
|
88
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Crosswalks"} }
|
|
89
|
+
|
|
90
|
+
event: content_block_delta
|
|
91
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n - Pedestrian signals\n -"} }
|
|
92
|
+
|
|
93
|
+
event: content_block_delta
|
|
94
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Pedestrian bridges"} }
|
|
95
|
+
|
|
96
|
+
event: content_block_delta
|
|
97
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n - Inters"} }
|
|
98
|
+
|
|
99
|
+
event: content_block_delta
|
|
100
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"ections\n\n2. **Before"} }
|
|
101
|
+
|
|
102
|
+
event: content_block_delta
|
|
103
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" crossing:**\n - Stop"} }
|
|
104
|
+
|
|
105
|
+
event: content_block_delta
|
|
106
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" at the curb or edge of the road"} }
|
|
107
|
+
|
|
108
|
+
event: content_block_delta
|
|
109
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n - Look left,"} }
|
|
110
|
+
|
|
111
|
+
event: content_block_delta
|
|
112
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" right, then left again ("} }
|
|
113
|
+
|
|
114
|
+
event: content_block_delta
|
|
115
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"or right, left, right again"} }
|
|
116
|
+
|
|
117
|
+
event: content_block_delta
|
|
118
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" in countries with left"} }
|
|
119
|
+
|
|
120
|
+
event: content_block_delta
|
|
121
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"-side driving)\n -"} }
|
|
122
|
+
|
|
123
|
+
event: content_block_delta
|
|
124
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Make eye contact with nearby"} }
|
|
125
|
+
|
|
126
|
+
event: content_block_delta
|
|
127
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" drivers if possible\n "} }
|
|
128
|
+
|
|
129
|
+
event: content_block_delta
|
|
130
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"- Listen for approaching vehicles\n\n3. **"} }
|
|
131
|
+
|
|
132
|
+
event: content_block_delta
|
|
133
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"When crossing:**\n -"} }
|
|
134
|
+
|
|
135
|
+
event: content_block_delta
|
|
136
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Walk, don't run"} }
|
|
137
|
+
|
|
138
|
+
event: content_block_delta
|
|
139
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n - Continue looking in"} }
|
|
140
|
+
|
|
141
|
+
event: content_block_delta
|
|
142
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" both directions as you cross\n -"} }
|
|
143
|
+
|
|
144
|
+
event: content_block_delta
|
|
145
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" Use the crosswalk if available"} }
|
|
146
|
+
|
|
147
|
+
event: content_block_delta
|
|
148
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n - Cross in"} }
|
|
149
|
+
|
|
150
|
+
event: content_block_delta
|
|
151
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" a straight line, not"}}
|
|
152
|
+
|
|
153
|
+
event: content_block_delta
|
|
154
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" diagonally"} }
|
|
155
|
+
|
|
156
|
+
event: content_block_delta
|
|
157
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n\n4. **If there"} }
|
|
158
|
+
|
|
159
|
+
event: content_block_delta
|
|
160
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" are pedestrian signals:**\n "} }
|
|
161
|
+
|
|
162
|
+
event: content_block_delta
|
|
163
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"- Wait for the \""} }
|
|
164
|
+
|
|
165
|
+
event: content_block_delta
|
|
166
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"WALK\" signal or"} }
|
|
167
|
+
|
|
168
|
+
event: content_block_delta
|
|
169
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" green walking figure\n - Don't"} }
|
|
170
|
+
|
|
171
|
+
event: content_block_delta
|
|
172
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" start crossing if the signal is flashing"} }
|
|
173
|
+
|
|
174
|
+
event: content_block_delta
|
|
175
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" or showing \"DON'"} }
|
|
176
|
+
|
|
177
|
+
event: content_block_delta
|
|
178
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"T WALK\""} }
|
|
179
|
+
|
|
180
|
+
event: content_block_delta
|
|
181
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n\n5. **Avoi"} }
|
|
182
|
+
|
|
183
|
+
event: content_block_delta
|
|
184
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"d distractions**"} }
|
|
185
|
+
|
|
186
|
+
event: content_block_delta
|
|
187
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" like texting, looking"} }
|
|
188
|
+
|
|
189
|
+
event: content_block_delta
|
|
190
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" at your phone, or"} }
|
|
191
|
+
|
|
192
|
+
event: content_block_delta
|
|
193
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" wearing headphones that prevent"} }
|
|
194
|
+
|
|
195
|
+
event: content_block_delta
|
|
196
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" you from hearing traffic."} }
|
|
197
|
+
|
|
198
|
+
event: content_block_delta
|
|
199
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"\n\nIs there a"} }
|
|
200
|
+
|
|
201
|
+
event: content_block_delta
|
|
202
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" specific situation or location"} }
|
|
203
|
+
|
|
204
|
+
event: content_block_delta
|
|
205
|
+
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":" you're asking about?"} }
|
|
206
|
+
|
|
207
|
+
event: content_block_stop
|
|
208
|
+
data: {"type":"content_block_stop","index":1 }
|
|
209
|
+
|
|
210
|
+
event: message_delta
|
|
211
|
+
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":305} }
|
|
212
|
+
|
|
213
|
+
event: message_stop
|
|
214
|
+
data: {"type":"message_stop" }
|
|
215
|
+
|
|
216
|
+
headers:
|
|
217
|
+
cache-control:
|
|
218
|
+
- no-cache
|
|
219
|
+
connection:
|
|
220
|
+
- keep-alive
|
|
221
|
+
content-type:
|
|
222
|
+
- text/event-stream; charset=utf-8
|
|
223
|
+
strict-transport-security:
|
|
224
|
+
- max-age=31536000; includeSubDomains; preload
|
|
225
|
+
transfer-encoding:
|
|
226
|
+
- chunked
|
|
227
|
+
status:
|
|
228
|
+
code: 200
|
|
229
|
+
message: OK
|
|
230
|
+
version: 1
|
|
231
|
+
...
|