pydantic-ai 0.2.6__tar.gz → 0.2.8__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.
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/PKG-INFO +4 -3
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/README.md +1 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +6 -3
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +11 -5
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +8 -6
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +12 -9
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +16 -11
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +22 -16
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +11 -8
- pydantic_ai-0.2.8/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +67 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +34 -36
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +21 -14
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_anthropic.py +166 -154
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_bedrock.py +5 -3
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_groq.py +1 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_model_function.py +2 -1
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_openai.py +1 -4
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_mcp.py +63 -6
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_parts_manager.py +61 -10
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_tools.py +61 -1
- pydantic_ai-0.2.6/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -2856
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/.gitignore +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/LICENSE +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/Makefile +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/pyproject.toml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/conftest.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/fasta2a/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/fasta2a/test_applications.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/import_examples.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_agent.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_cli.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_deps.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_direct.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_examples.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_live.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_logfire.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_messages.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_settings.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/test_utils.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.2.6 → pydantic_ai-0.2.8}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.8
|
|
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.2.
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.2.8
|
|
32
32
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.2.
|
|
33
|
+
Requires-Dist: pydantic-ai-examples==0.2.8; extra == 'examples'
|
|
34
34
|
Provides-Extra: logfire
|
|
35
35
|
Requires-Dist: logfire>=3.11.0; extra == 'logfire'
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
@@ -52,6 +52,7 @@ Description-Content-Type: text/markdown
|
|
|
52
52
|
<a href="https://pypi.python.org/pypi/pydantic-ai"><img src="https://img.shields.io/pypi/v/pydantic-ai.svg" alt="PyPI"></a>
|
|
53
53
|
<a href="https://github.com/pydantic/pydantic-ai"><img src="https://img.shields.io/pypi/pyversions/pydantic-ai.svg" alt="versions"></a>
|
|
54
54
|
<a href="https://github.com/pydantic/pydantic-ai/blob/main/LICENSE"><img src="https://img.shields.io/github/license/pydantic/pydantic-ai.svg?v" alt="license"></a>
|
|
55
|
+
<a href="https://logfire.pydantic.dev/docs/join-slack/"><img src="https://img.shields.io/badge/Slack-Join%20Slack-4A154B?logo=slack" alt="Join Slack" /></a>
|
|
55
56
|
</div>
|
|
56
57
|
|
|
57
58
|
---
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
<a href="https://pypi.python.org/pypi/pydantic-ai"><img src="https://img.shields.io/pypi/v/pydantic-ai.svg" alt="PyPI"></a>
|
|
16
16
|
<a href="https://github.com/pydantic/pydantic-ai"><img src="https://img.shields.io/pypi/pyversions/pydantic-ai.svg" alt="versions"></a>
|
|
17
17
|
<a href="https://github.com/pydantic/pydantic-ai/blob/main/LICENSE"><img src="https://img.shields.io/github/license/pydantic/pydantic-ai.svg?v" alt="license"></a>
|
|
18
|
+
<a href="https://logfire.pydantic.dev/docs/join-slack/"><img src="https://img.shields.io/badge/Slack-Join%20Slack-4A154B?logo=slack" alt="Join Slack" /></a>
|
|
18
19
|
</div>
|
|
19
20
|
|
|
20
21
|
---
|
|
@@ -25,22 +25,24 @@ interactions:
|
|
|
25
25
|
stop_sequences:
|
|
26
26
|
- Paris
|
|
27
27
|
stream: false
|
|
28
|
-
uri: https://api.anthropic.com/v1/messages
|
|
28
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
29
29
|
response:
|
|
30
30
|
headers:
|
|
31
31
|
connection:
|
|
32
32
|
- keep-alive
|
|
33
33
|
content-length:
|
|
34
|
-
- '
|
|
34
|
+
- '359'
|
|
35
35
|
content-type:
|
|
36
36
|
- application/json
|
|
37
|
+
strict-transport-security:
|
|
38
|
+
- max-age=31536000; includeSubDomains; preload
|
|
37
39
|
transfer-encoding:
|
|
38
40
|
- chunked
|
|
39
41
|
parsed_body:
|
|
40
42
|
content:
|
|
41
43
|
- text: 'The capital of France is '
|
|
42
44
|
type: text
|
|
43
|
-
id:
|
|
45
|
+
id: msg_01SVFZqkSLhUPkAA4w6rhzFD
|
|
44
46
|
model: claude-3-5-sonnet-20241022
|
|
45
47
|
role: assistant
|
|
46
48
|
stop_reason: stop_sequence
|
|
@@ -51,6 +53,7 @@ interactions:
|
|
|
51
53
|
cache_read_input_tokens: 0
|
|
52
54
|
input_tokens: 14
|
|
53
55
|
output_tokens: 6
|
|
56
|
+
service_tier: standard
|
|
54
57
|
status:
|
|
55
58
|
code: 200
|
|
56
59
|
message: OK
|
|
@@ -8,7 +8,7 @@ interactions:
|
|
|
8
8
|
connection:
|
|
9
9
|
- keep-alive
|
|
10
10
|
content-length:
|
|
11
|
-
- '
|
|
11
|
+
- '206'
|
|
12
12
|
content-type:
|
|
13
13
|
- application/json
|
|
14
14
|
host:
|
|
@@ -23,23 +23,27 @@ interactions:
|
|
|
23
23
|
role: user
|
|
24
24
|
model: claude-3-opus-latest
|
|
25
25
|
stream: false
|
|
26
|
-
system:
|
|
27
|
-
|
|
26
|
+
system: |+
|
|
27
|
+
You are a helpful assistant.
|
|
28
|
+
|
|
29
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
28
30
|
response:
|
|
29
31
|
headers:
|
|
30
32
|
connection:
|
|
31
33
|
- keep-alive
|
|
32
34
|
content-length:
|
|
33
|
-
- '
|
|
35
|
+
- '354'
|
|
34
36
|
content-type:
|
|
35
37
|
- application/json
|
|
38
|
+
strict-transport-security:
|
|
39
|
+
- max-age=31536000; includeSubDomains; preload
|
|
36
40
|
transfer-encoding:
|
|
37
41
|
- chunked
|
|
38
42
|
parsed_body:
|
|
39
43
|
content:
|
|
40
44
|
- text: The capital of France is Paris.
|
|
41
45
|
type: text
|
|
42
|
-
id:
|
|
46
|
+
id: msg_01BznVNBje2zyfpCfNQCD5en
|
|
43
47
|
model: claude-3-opus-20240229
|
|
44
48
|
role: assistant
|
|
45
49
|
stop_reason: end_turn
|
|
@@ -50,7 +54,9 @@ interactions:
|
|
|
50
54
|
cache_read_input_tokens: 0
|
|
51
55
|
input_tokens: 20
|
|
52
56
|
output_tokens: 10
|
|
57
|
+
service_tier: standard
|
|
53
58
|
status:
|
|
54
59
|
code: 200
|
|
55
60
|
message: OK
|
|
56
61
|
version: 1
|
|
62
|
+
...
|
|
@@ -28,23 +28,24 @@ interactions:
|
|
|
28
28
|
role: user
|
|
29
29
|
model: claude-3-5-sonnet-latest
|
|
30
30
|
stream: false
|
|
31
|
-
uri: https://api.anthropic.com/v1/messages
|
|
31
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
32
32
|
response:
|
|
33
33
|
headers:
|
|
34
34
|
connection:
|
|
35
35
|
- keep-alive
|
|
36
36
|
content-length:
|
|
37
|
-
- '
|
|
37
|
+
- '433'
|
|
38
38
|
content-type:
|
|
39
39
|
- application/json
|
|
40
|
+
strict-transport-security:
|
|
41
|
+
- max-age=31536000; includeSubDomains; preload
|
|
40
42
|
transfer-encoding:
|
|
41
43
|
- chunked
|
|
42
44
|
parsed_body:
|
|
43
45
|
content:
|
|
44
|
-
- text: The document
|
|
45
|
-
to be mostly blank otherwise, likely serving as a template or placeholder document.
|
|
46
|
+
- text: The document shows only the text "Dummy PDF file" at the top of what appears to be a blank white page.
|
|
46
47
|
type: text
|
|
47
|
-
id:
|
|
48
|
+
id: msg_01Jr6x34UmKgzgrJE96jaYpm
|
|
48
49
|
model: claude-3-5-sonnet-20241022
|
|
49
50
|
role: assistant
|
|
50
51
|
stop_reason: end_turn
|
|
@@ -54,7 +55,8 @@ interactions:
|
|
|
54
55
|
cache_creation_input_tokens: 0
|
|
55
56
|
cache_read_input_tokens: 0
|
|
56
57
|
input_tokens: 1615
|
|
57
|
-
output_tokens:
|
|
58
|
+
output_tokens: 28
|
|
59
|
+
service_tier: standard
|
|
58
60
|
status:
|
|
59
61
|
code: 200
|
|
60
62
|
message: OK
|
|
@@ -27,26 +27,28 @@ interactions:
|
|
|
27
27
|
role: user
|
|
28
28
|
model: claude-3-5-sonnet-latest
|
|
29
29
|
stream: false
|
|
30
|
-
uri: https://api.anthropic.com/v1/messages
|
|
30
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
31
31
|
response:
|
|
32
32
|
headers:
|
|
33
33
|
connection:
|
|
34
34
|
- keep-alive
|
|
35
35
|
content-length:
|
|
36
|
-
- '
|
|
36
|
+
- '813'
|
|
37
37
|
content-type:
|
|
38
38
|
- application/json
|
|
39
|
+
strict-transport-security:
|
|
40
|
+
- max-age=31536000; includeSubDomains; preload
|
|
39
41
|
transfer-encoding:
|
|
40
42
|
- chunked
|
|
41
43
|
parsed_body:
|
|
42
44
|
content:
|
|
43
|
-
- text: This document appears to be a sample PDF file that
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
- text: This document appears to be a sample PDF file that contains Lorem ipsum text, which is placeholder text commonly
|
|
46
|
+
used in design and publishing. The document starts with "Sample PDF" and includes the line "This is a simple PDF
|
|
47
|
+
file. Fun fun fun." followed by several paragraphs of Lorem ipsum text. Lorem ipsum is dummy text that has no meaningful
|
|
48
|
+
content - it's typically used to demonstrate the visual form of a document or typeface without the distraction of
|
|
49
|
+
meaningful content.
|
|
48
50
|
type: text
|
|
49
|
-
id:
|
|
51
|
+
id: msg_015t94iUurjyZ7Jvi7kvDe5b
|
|
50
52
|
model: claude-3-5-sonnet-20241022
|
|
51
53
|
role: assistant
|
|
52
54
|
stop_reason: end_turn
|
|
@@ -56,7 +58,8 @@ interactions:
|
|
|
56
58
|
cache_creation_input_tokens: 0
|
|
57
59
|
cache_read_input_tokens: 0
|
|
58
60
|
input_tokens: 2682
|
|
59
|
-
output_tokens:
|
|
61
|
+
output_tokens: 98
|
|
62
|
+
service_tier: standard
|
|
60
63
|
status:
|
|
61
64
|
code: 200
|
|
62
65
|
message: OK
|
|
@@ -8,13 +8,13 @@ interactions:
|
|
|
8
8
|
connection:
|
|
9
9
|
- keep-alive
|
|
10
10
|
content-length:
|
|
11
|
-
- '
|
|
11
|
+
- '169'
|
|
12
12
|
content-type:
|
|
13
13
|
- application/json
|
|
14
|
+
extra-header-key:
|
|
15
|
+
- Extra-Header-Value
|
|
14
16
|
host:
|
|
15
17
|
- api.anthropic.com
|
|
16
|
-
xProxy-Limit-IDs:
|
|
17
|
-
- monthly_budget
|
|
18
18
|
method: POST
|
|
19
19
|
parsed_body:
|
|
20
20
|
max_tokens: 1024
|
|
@@ -23,25 +23,29 @@ interactions:
|
|
|
23
23
|
- text: hello
|
|
24
24
|
type: text
|
|
25
25
|
role: user
|
|
26
|
-
|
|
26
|
+
metadata:
|
|
27
|
+
user_id: '123'
|
|
28
|
+
model: claude-3-5-haiku-latest
|
|
27
29
|
stream: false
|
|
28
|
-
uri: https://api.anthropic.com/v1/messages
|
|
30
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
29
31
|
response:
|
|
30
32
|
headers:
|
|
31
33
|
connection:
|
|
32
34
|
- keep-alive
|
|
33
35
|
content-length:
|
|
34
|
-
- '
|
|
36
|
+
- '398'
|
|
35
37
|
content-type:
|
|
36
38
|
- application/json
|
|
39
|
+
strict-transport-security:
|
|
40
|
+
- max-age=31536000; includeSubDomains; preload
|
|
37
41
|
transfer-encoding:
|
|
38
42
|
- chunked
|
|
39
43
|
parsed_body:
|
|
40
44
|
content:
|
|
41
|
-
- text:
|
|
45
|
+
- text: Hi there! How are you doing today? Is there anything I can help you with?
|
|
42
46
|
type: text
|
|
43
|
-
id:
|
|
44
|
-
model: claude-3-5-haiku-
|
|
47
|
+
id: msg_016xQfqVwNtY1LLF1xHTN5Sk
|
|
48
|
+
model: claude-3-5-haiku-20241022
|
|
45
49
|
role: assistant
|
|
46
50
|
stop_reason: end_turn
|
|
47
51
|
stop_sequence: null
|
|
@@ -49,8 +53,9 @@ interactions:
|
|
|
49
53
|
usage:
|
|
50
54
|
cache_creation_input_tokens: 0
|
|
51
55
|
cache_read_input_tokens: 0
|
|
52
|
-
input_tokens:
|
|
53
|
-
output_tokens:
|
|
56
|
+
input_tokens: 8
|
|
57
|
+
output_tokens: 21
|
|
58
|
+
service_tier: standard
|
|
54
59
|
status:
|
|
55
60
|
code: 200
|
|
56
61
|
message: OK
|
|
@@ -32,26 +32,28 @@ interactions:
|
|
|
32
32
|
properties: {}
|
|
33
33
|
type: object
|
|
34
34
|
name: get_image
|
|
35
|
-
uri: https://api.anthropic.com/v1/messages
|
|
35
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
36
36
|
response:
|
|
37
37
|
headers:
|
|
38
38
|
connection:
|
|
39
39
|
- keep-alive
|
|
40
40
|
content-length:
|
|
41
|
-
- '
|
|
41
|
+
- '447'
|
|
42
42
|
content-type:
|
|
43
43
|
- application/json
|
|
44
|
+
strict-transport-security:
|
|
45
|
+
- max-age=31536000; includeSubDomains; preload
|
|
44
46
|
transfer-encoding:
|
|
45
47
|
- chunked
|
|
46
48
|
parsed_body:
|
|
47
49
|
content:
|
|
48
|
-
- text: Let me get the image and check
|
|
50
|
+
- text: Let me get the image and check.
|
|
49
51
|
type: text
|
|
50
|
-
- id:
|
|
52
|
+
- id: toolu_01YJiJ82nETV7aRdJr9f6Np7
|
|
51
53
|
input: {}
|
|
52
54
|
name: get_image
|
|
53
55
|
type: tool_use
|
|
54
|
-
id:
|
|
56
|
+
id: msg_01CC59GmUmYXKCV26rHfr32m
|
|
55
57
|
model: claude-3-5-sonnet-20241022
|
|
56
58
|
role: assistant
|
|
57
59
|
stop_reason: tool_use
|
|
@@ -61,7 +63,8 @@ interactions:
|
|
|
61
63
|
cache_creation_input_tokens: 0
|
|
62
64
|
cache_read_input_tokens: 0
|
|
63
65
|
input_tokens: 372
|
|
64
|
-
output_tokens:
|
|
66
|
+
output_tokens: 45
|
|
67
|
+
service_tier: standard
|
|
65
68
|
status:
|
|
66
69
|
code: 200
|
|
67
70
|
message: OK
|
|
@@ -74,7 +77,7 @@ interactions:
|
|
|
74
77
|
connection:
|
|
75
78
|
- keep-alive
|
|
76
79
|
content-length:
|
|
77
|
-
- '
|
|
80
|
+
- '2780281'
|
|
78
81
|
content-type:
|
|
79
82
|
- application/json
|
|
80
83
|
host:
|
|
@@ -88,9 +91,9 @@ interactions:
|
|
|
88
91
|
type: text
|
|
89
92
|
role: user
|
|
90
93
|
- content:
|
|
91
|
-
- text: Let me get the image and check
|
|
94
|
+
- text: Let me get the image and check.
|
|
92
95
|
type: text
|
|
93
|
-
- id:
|
|
96
|
+
- id: toolu_01YJiJ82nETV7aRdJr9f6Np7
|
|
94
97
|
input: {}
|
|
95
98
|
name: get_image
|
|
96
99
|
type: tool_use
|
|
@@ -98,7 +101,7 @@ interactions:
|
|
|
98
101
|
- content:
|
|
99
102
|
- content: See file 1c8566
|
|
100
103
|
is_error: false
|
|
101
|
-
tool_use_id:
|
|
104
|
+
tool_use_id: toolu_01YJiJ82nETV7aRdJr9f6Np7
|
|
102
105
|
type: tool_result
|
|
103
106
|
- text: 'This is file 1c8566:'
|
|
104
107
|
type: text
|
|
@@ -119,24 +122,26 @@ interactions:
|
|
|
119
122
|
properties: {}
|
|
120
123
|
type: object
|
|
121
124
|
name: get_image
|
|
122
|
-
uri: https://api.anthropic.com/v1/messages
|
|
125
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
123
126
|
response:
|
|
124
127
|
headers:
|
|
125
128
|
connection:
|
|
126
129
|
- keep-alive
|
|
127
130
|
content-length:
|
|
128
|
-
- '
|
|
131
|
+
- '592'
|
|
129
132
|
content-type:
|
|
130
133
|
- application/json
|
|
134
|
+
strict-transport-security:
|
|
135
|
+
- max-age=31536000; includeSubDomains; preload
|
|
131
136
|
transfer-encoding:
|
|
132
137
|
- chunked
|
|
133
138
|
parsed_body:
|
|
134
139
|
content:
|
|
135
140
|
- text: The image shows a kiwi fruit that has been cut in half, displaying its characteristic bright green flesh with
|
|
136
|
-
small black seeds arranged in a circular pattern around a white center core. The
|
|
137
|
-
around the edges of the slice.
|
|
141
|
+
small black seeds arranged in a circular pattern around a white center core. The fruit's thin, fuzzy brown skin
|
|
142
|
+
is visible around the edges of the slice.
|
|
138
143
|
type: text
|
|
139
|
-
id:
|
|
144
|
+
id: msg_014MJqSsWD1pUC23Vvi57LoY
|
|
140
145
|
model: claude-3-5-sonnet-20241022
|
|
141
146
|
role: assistant
|
|
142
147
|
stop_reason: end_turn
|
|
@@ -145,8 +150,9 @@ interactions:
|
|
|
145
150
|
usage:
|
|
146
151
|
cache_creation_input_tokens: 0
|
|
147
152
|
cache_read_input_tokens: 0
|
|
148
|
-
input_tokens:
|
|
153
|
+
input_tokens: 2021
|
|
149
154
|
output_tokens: 57
|
|
155
|
+
service_tier: standard
|
|
150
156
|
status:
|
|
151
157
|
code: 200
|
|
152
158
|
message: OK
|
|
@@ -27,25 +27,27 @@ interactions:
|
|
|
27
27
|
role: user
|
|
28
28
|
model: claude-3-5-haiku-latest
|
|
29
29
|
stream: false
|
|
30
|
-
uri: https://api.anthropic.com/v1/messages
|
|
30
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
31
31
|
response:
|
|
32
32
|
headers:
|
|
33
33
|
connection:
|
|
34
34
|
- keep-alive
|
|
35
35
|
content-length:
|
|
36
|
-
- '
|
|
36
|
+
- '736'
|
|
37
37
|
content-type:
|
|
38
38
|
- application/json
|
|
39
|
+
strict-transport-security:
|
|
40
|
+
- max-age=31536000; includeSubDomains; preload
|
|
39
41
|
transfer-encoding:
|
|
40
42
|
- chunked
|
|
41
43
|
parsed_body:
|
|
42
44
|
content:
|
|
43
|
-
- text: This is a potato. It's a yellow-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
and
|
|
45
|
+
- text: This is a potato. It's a yellow/golden-colored potato with a characteristic oblong, slightly irregular shape
|
|
46
|
+
and a skin covered in small eyes or indentations. Potatoes are a starchy root vegetable that belongs to the nightshade
|
|
47
|
+
family and are a staple food in many cuisines around the world. This particular potato looks like it's in good condition,
|
|
48
|
+
with a smooth, unblemished skin and a uniform yellow color.
|
|
47
49
|
type: text
|
|
48
|
-
id:
|
|
50
|
+
id: msg_01ARmKzMzXFrmzKbSgShSuGw
|
|
49
51
|
model: claude-3-5-haiku-20241022
|
|
50
52
|
role: assistant
|
|
51
53
|
stop_reason: end_turn
|
|
@@ -55,7 +57,8 @@ interactions:
|
|
|
55
57
|
cache_creation_input_tokens: 0
|
|
56
58
|
cache_read_input_tokens: 0
|
|
57
59
|
input_tokens: 296
|
|
58
|
-
output_tokens:
|
|
60
|
+
output_tokens: 95
|
|
61
|
+
service_tier: standard
|
|
59
62
|
status:
|
|
60
63
|
code: 200
|
|
61
64
|
message: OK
|
pydantic_ai-0.2.8/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
- '385'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
max_tokens: 1024
|
|
19
|
+
messages:
|
|
20
|
+
- content:
|
|
21
|
+
- text: What animal is this?
|
|
22
|
+
type: text
|
|
23
|
+
- source:
|
|
24
|
+
type: url
|
|
25
|
+
url: https://lh3.googleusercontent.com/proxy/YngsuS8jQJysXxeucAgVBcSgIdwZlSQ-HvsNxGjHS0SrUKXI161bNKh6SOcMsNUGsnxoOrS3AYX--MT4T3S3SoCgSD1xKrtBwwItcgexaX_7W-qHo-VupmYgjjzWO-BuORLp9-pj8Kjr
|
|
26
|
+
type: image
|
|
27
|
+
role: user
|
|
28
|
+
model: claude-3-5-haiku-latest
|
|
29
|
+
stream: false
|
|
30
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
31
|
+
response:
|
|
32
|
+
headers:
|
|
33
|
+
connection:
|
|
34
|
+
- keep-alive
|
|
35
|
+
content-length:
|
|
36
|
+
- '931'
|
|
37
|
+
content-type:
|
|
38
|
+
- application/json
|
|
39
|
+
strict-transport-security:
|
|
40
|
+
- max-age=31536000; includeSubDomains; preload
|
|
41
|
+
transfer-encoding:
|
|
42
|
+
- chunked
|
|
43
|
+
parsed_body:
|
|
44
|
+
content:
|
|
45
|
+
- text: This is a Great Horned Owl (Bubo virginianus), a large and powerful owl species native to the Americas. The
|
|
46
|
+
owl is shown sitting on a branch surrounded by yellow-green foliage, with its distinctive mottled gray-brown feathers
|
|
47
|
+
and prominent ear tufts (often called "horns"). It has striking yellow eyes that are looking directly at the camera,
|
|
48
|
+
giving it an intense and alert appearance. Great Horned Owls are known for their excellent camouflage, powerful
|
|
49
|
+
talons, and nocturnal hunting habits. They are widespread across North and South America and are one of the most
|
|
50
|
+
common and adaptable owl species.
|
|
51
|
+
type: text
|
|
52
|
+
id: msg_012D6XGmU2dfH7Qu5oKWV1cf
|
|
53
|
+
model: claude-3-5-haiku-20241022
|
|
54
|
+
role: assistant
|
|
55
|
+
stop_reason: end_turn
|
|
56
|
+
stop_sequence: null
|
|
57
|
+
type: message
|
|
58
|
+
usage:
|
|
59
|
+
cache_creation_input_tokens: 0
|
|
60
|
+
cache_read_input_tokens: 0
|
|
61
|
+
input_tokens: 335
|
|
62
|
+
output_tokens: 141
|
|
63
|
+
service_tier: standard
|
|
64
|
+
status:
|
|
65
|
+
code: 200
|
|
66
|
+
message: OK
|
|
67
|
+
version: 1
|