mirascope 2.0.0a0__tar.gz → 2.0.0a2__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.
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/PKG-INFO +11 -1
- mirascope-2.0.0a2/examples/intro/context/decorator.py +40 -0
- mirascope-2.0.0a2/examples/intro/context/model.py +41 -0
- mirascope-2.0.0a2/examples/intro/decorator/async.py +17 -0
- mirascope-2.0.0a2/examples/intro/decorator/async_stream.py +18 -0
- mirascope-2.0.0a2/examples/intro/decorator/stream.py +15 -0
- mirascope-2.0.0a2/examples/intro/decorator/sync.py +14 -0
- mirascope-2.0.0a2/examples/intro/format/decorator.py +22 -0
- mirascope-2.0.0a2/examples/intro/format/model.py +26 -0
- mirascope-2.0.0a2/examples/intro/model/async.py +18 -0
- mirascope-2.0.0a2/examples/intro/model/async_stream.py +19 -0
- mirascope-2.0.0a2/examples/intro/model/stream.py +16 -0
- mirascope-2.0.0a2/examples/intro/model/sync.py +15 -0
- mirascope-2.0.0a2/examples/intro/override/decorator.py +16 -0
- mirascope-2.0.0a2/examples/intro/override/model.py +18 -0
- mirascope-2.0.0a2/examples/intro/parameters/decorator.py +18 -0
- mirascope-2.0.0a2/examples/intro/parameters/model.py +19 -0
- mirascope-2.0.0a2/examples/intro/resume/decorator.py +17 -0
- mirascope-2.0.0a2/examples/intro/resume/model.py +18 -0
- mirascope-2.0.0a2/examples/intro/system_messages/decorator.py +18 -0
- mirascope-2.0.0a2/examples/intro/system_messages/model.py +20 -0
- mirascope-2.0.0a2/examples/intro/tool_call/decorator.py +36 -0
- mirascope-2.0.0a2/examples/intro/tool_call/model.py +36 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/lint-staged.ts +1 -1
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/__init__.py +5 -1
- mirascope-2.0.0a2/mirascope/llm/clients/_missing_import_stubs.py +47 -0
- mirascope-2.0.0a2/mirascope/llm/clients/anthropic/__init__.py +25 -0
- mirascope-2.0.0a2/mirascope/llm/clients/google/__init__.py +20 -0
- mirascope-2.0.0a2/mirascope/llm/clients/openai/completions/__init__.py +28 -0
- mirascope-2.0.0a2/mirascope/llm/clients/openai/responses/__init__.py +26 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/decorator.py +10 -10
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/tools.py +2 -2
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/pyproject.toml +11 -4
- mirascope-2.0.0a2/tests/e2e/input/cassettes/test_resume_with_override/openai_completions_gpt_4o.yaml +171 -0
- mirascope-2.0.0a2/tests/e2e/input/cassettes/test_resume_with_override/openai_responses_gpt_4o.yaml +170 -0
- mirascope-2.0.0a2/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/openai_completions_gpt_4o.yaml +180 -0
- mirascope-2.0.0a2/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/openai_responses_gpt_4o.yaml +181 -0
- mirascope-2.0.0a2/tests/e2e/input/snapshots/test_resume_with_override/openai_completions_gpt_4o_snapshots.py +62 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override/openai_responses_gpt_4o_snapshots.py +22 -11
- mirascope-2.0.0a2/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/openai_completions_gpt_4o_snapshots.py +125 -0
- mirascope-2.0.0a2/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/openai_responses_gpt_4o_snapshots.py +136 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_resume_with_override.py +3 -24
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_resume_with_override_thinking_and_tools.py +3 -3
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/tool.py +2 -2
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/uv.lock +1149 -1136
- mirascope-2.0.0a0/mirascope/llm/clients/anthropic/__init__.py +0 -11
- mirascope-2.0.0a0/mirascope/llm/clients/google/__init__.py +0 -6
- mirascope-2.0.0a0/mirascope/llm/clients/openai/completions/__init__.py +0 -9
- mirascope-2.0.0a0/mirascope/llm/clients/openai/responses/__init__.py +0 -9
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override/openai_completions_gpt_4o.yaml +0 -213
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override/openai_responses_gpt_4o.yaml +0 -210
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_context/anthropic_claude_sonnet_4_0.yaml +0 -170
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_context/google_gemini_2_5_flash.yaml +0 -168
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_context/openai_completions_gpt_4o.yaml +0 -214
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_context/openai_responses_gpt_4o.yaml +0 -211
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/openai_completions_gpt_4o.yaml +0 -231
- mirascope-2.0.0a0/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/openai_responses_gpt_4o.yaml +0 -228
- mirascope-2.0.0a0/tests/e2e/input/snapshots/test_resume_with_override/openai_completions_gpt_4o_snapshots.py +0 -51
- mirascope-2.0.0a0/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/openai_completions_gpt_4o_snapshots.py +0 -106
- mirascope-2.0.0a0/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/openai_responses_gpt_4o_snapshots.py +0 -111
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/.coveragerc +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/.env.example +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/.gitignore +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/LICENSE +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/README.md +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/misc/anthropic_redacted_thinking.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/misc/openai_responses_reasoning.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_tools_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_tools_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_stream_tools_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_tools_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_tools_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_async_tools_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_tools_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_tools_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_stream_tools_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_tools_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_tools_context_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/examples/sazed/sazed_tools_structured.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/graphs/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/graphs/finite_state_machine.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/agents/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/agents/agent.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/agents/agent_template.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/agents/decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/calls/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/calls/base_call.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/calls/calls.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/calls/decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/anthropic/_utils/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/anthropic/_utils/decode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/anthropic/_utils/encode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/anthropic/clients.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/anthropic/model_ids.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/base/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/base/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/base/client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/base/kwargs.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/base/params.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/_utils/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/_utils/decode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/_utils/encode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/clients.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/message.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/google/model_ids.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/_utils/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/_utils/decode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/_utils/encode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/_utils/model_features.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/clients.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/completions/model_ids.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/_utils/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/_utils/decode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/_utils/encode.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/_utils/model_features.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/clients.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/responses/model_ids.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/shared/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/openai/shared/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/clients/providers.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/audio.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/document.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/image.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/text.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/thought.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/tool_call.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/content/tool_output.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/context/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/context/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/context/context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/exceptions.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/format.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/from_call_args.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/partial.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/formatting/types.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/mcp/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/mcp/client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/messages/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/messages/message.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/models/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/models/models.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/prompts/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/prompts/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/prompts/decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/prompts/protocols.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/base_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/base_stream_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/finish_reason.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/root_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/stream_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/responses/streams.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/protocols.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/tool_schema.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/tools/toolkit.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/types/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/types/dataclass.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/types/jsonable.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/mirascope/llm/types/type_vars.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/scripts/example_generator.ts +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/scripts/regenerate_examples.ts +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/scripts/update_openai_completions_model_features.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/scripts/update_openai_responses_model_features.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/conftest.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/README.md +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/assets/audio/tagline.mp3 +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/assets/images/wikipedia.png +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/conftest.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/README.md +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_audio/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_audio/openai_completions_gpt_audio.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_content/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_content/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_content/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_content/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_url/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_url/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_image_url/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_params/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_params/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_params/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_params/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_text_encoded_thoughts/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_text_encoded_thoughts/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_text_encoded_thoughts/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_call_with_text_encoded_thoughts/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_resume_with_override/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_resume_with_override/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_resume_with_override_thinking_and_tools/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/json/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/json/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/json/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/json/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/strict/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/strict/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/strict/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/tool/anthropic_claude_sonnet_4_0.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/tool/google_gemini_2_5_flash.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/tool/openai_completions_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/cassettes/test_structured_output_with_formatting_instructions/tool/openai_responses_gpt_4o.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/conftest.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_audio/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_audio/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_audio/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_audio/openai_completions_gpt_audio_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_audio/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_content/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_content/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_content/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_content/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_url/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_url/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_url/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_image_url/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_params/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_params/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_params/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_params/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_text_encoded_thoughts/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_text_encoded_thoughts/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_text_encoded_thoughts/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_call_with_text_encoded_thoughts/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_context/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_context/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_context/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_context/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_resume_with_override_thinking_and_tools/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/json/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/json/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/json/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/json/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/strict/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/strict/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/strict/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/strict/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/tool/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/tool/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/tool/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/snapshots/test_structured_output_with_formatting_instructions/tool/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_call_with_audio.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_call_with_image.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_call_with_params.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_call_with_text_encoded_thoughts.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/input/test_structured_output_with_formatting_instructions.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/README.md +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/openai_responses_gpt_5/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/openai_responses_gpt_5/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/openai_responses_gpt_5/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_thinking_true/openai_responses_gpt_5/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_call_with_tools/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_max_tokens/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_refusal/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/json/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/strict/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output/tool/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/json/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/strict/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/anthropic_claude_sonnet_4_0/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/anthropic_claude_sonnet_4_0/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/anthropic_claude_sonnet_4_0/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/anthropic_claude_sonnet_4_0/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/google_gemini_2_5_flash/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/google_gemini_2_5_flash/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/google_gemini_2_5_flash/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/google_gemini_2_5_flash/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_completions_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_completions_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_completions_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_completions_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_responses_gpt_4o/async.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_responses_gpt_4o/async_stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_responses_gpt_4o/stream.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/cassettes/test_structured_output_with_tools/tool/openai_responses_gpt_4o/sync.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/conftest.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_thinking_true/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_thinking_true/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_thinking_true/openai_responses_gpt_5_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_tools/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_tools/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_tools/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_call_with_tools/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_max_tokens/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_max_tokens/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_max_tokens/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_max_tokens/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_refusal/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_refusal/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_refusal/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_refusal/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/json/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/json/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/json/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/json/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/strict/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/strict/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/strict/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/strict/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/tool/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/tool/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/tool/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output/tool/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/json/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/json/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/json/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/json/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/strict/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/strict/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/strict/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/strict/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/tool/anthropic_claude_sonnet_4_0_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/tool/google_gemini_2_5_flash_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/tool/openai_completions_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/snapshots/test_structured_output_with_tools/tool/openai_responses_gpt_4o_snapshots.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_call.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_call_with_thinking_true.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_call_with_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_max_tokens.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_refusal.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_structured_output.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/e2e/output/test_structured_output_with_tools.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/calls/cassettes/TestCall.test_call_decorator_e2e_model_override.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/calls/cassettes/TestContextCall.test_context_call_decorator_e2e_model_override.yaml +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/calls/test_decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/anthropic/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/anthropic/test_client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/base/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/base/test_params.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/base/test_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/google/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/google/test_client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/openai/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/openai/test_completions_client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/openai/test_responses_client.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/clients/test_providers.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/content/test_audio_content.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/content/test_image_content.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/context/test_context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/formatting/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/formatting/test_format.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/messages/test_messages.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/models/test_model.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/prompts/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/prompts/test_decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/responses/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/responses/test_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/responses/test_stream_response.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/responses/test_utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/tools/__init__.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/tools/test_decorator.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/tools/test_tool_schema.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/llm/tools/test_toolkit.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/test_imports.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/tests/utils.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/agent.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/call.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/context.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/format.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/streams.py +0 -0
- {mirascope-2.0.0a0 → mirascope-2.0.0a2}/typechecking/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mirascope
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0a2
|
|
4
4
|
Summary: LLM abstractions that aren't obstructions
|
|
5
5
|
Project-URL: Homepage, https://mirascope.com
|
|
6
6
|
Project-URL: Documentation, https://mirascope.com/docs/mirascope/v2
|
|
@@ -40,13 +40,23 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
40
40
|
Classifier: Programming Language :: Python :: 3.11
|
|
41
41
|
Classifier: Programming Language :: Python :: 3.12
|
|
42
42
|
Classifier: Programming Language :: Python :: 3.13
|
|
43
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
43
44
|
Classifier: Topic :: File Formats :: JSON
|
|
44
45
|
Classifier: Topic :: File Formats :: JSON :: JSON Schema
|
|
45
46
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
46
47
|
Classifier: Topic :: Software Development :: Libraries
|
|
47
48
|
Requires-Python: >=3.10
|
|
48
49
|
Requires-Dist: docstring-parser>=0.17.0
|
|
50
|
+
Requires-Dist: httpx>=0.27.0
|
|
51
|
+
Requires-Dist: pydantic>=2.0.0
|
|
49
52
|
Requires-Dist: typing-extensions>=4.10.0
|
|
53
|
+
Provides-Extra: all
|
|
54
|
+
Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'all'
|
|
55
|
+
Requires-Dist: google-genai<2,>=1.48.0; extra == 'all'
|
|
56
|
+
Requires-Dist: mcp<2,>=1.0.0; extra == 'all'
|
|
57
|
+
Requires-Dist: openai<3,>=2.7.1; extra == 'all'
|
|
58
|
+
Requires-Dist: pillow<11,>=10.4.0; extra == 'all'
|
|
59
|
+
Requires-Dist: proto-plus>=1.24.0; extra == 'all'
|
|
50
60
|
Provides-Extra: anthropic
|
|
51
61
|
Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'anthropic'
|
|
52
62
|
Provides-Extra: google
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Library:
|
|
5
|
+
available_books: list[str]
|
|
6
|
+
detailed_book_info: dict[str, str]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@llm.tool()
|
|
10
|
+
# [!code highlight:2]
|
|
11
|
+
def get_book_info(ctx: llm.Context[Library], book: str) -> str:
|
|
12
|
+
return ctx.deps.detailed_book_info.get(book, "Book not found")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@llm.call(provider="openai", model_id="gpt-5", tools=[get_book_info])
|
|
16
|
+
# [!code highlight:2]
|
|
17
|
+
def librarian(ctx: llm.Context[Library], query: str):
|
|
18
|
+
book_list = "\n".join(ctx.deps.available_books)
|
|
19
|
+
return [
|
|
20
|
+
llm.messages.system(
|
|
21
|
+
f"You are a librarian, with access to these books: ${book_list}"
|
|
22
|
+
),
|
|
23
|
+
query,
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def main():
|
|
28
|
+
library = Library()
|
|
29
|
+
query = "Please recommend a mind-bending book from the library."
|
|
30
|
+
ctx = llm.Context(deps=library) # [!code highlight]
|
|
31
|
+
response: llm.ContextResponse[Library] = librarian(ctx, query) # [!code highlight]
|
|
32
|
+
|
|
33
|
+
while response.tool_calls:
|
|
34
|
+
tool_outputs = response.execute_tools(ctx) # [!code highlight]
|
|
35
|
+
response = response.resume(ctx, tool_outputs) # [!code highlight]
|
|
36
|
+
|
|
37
|
+
print(response.pretty())
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
main()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Library:
|
|
5
|
+
available_books: list[str]
|
|
6
|
+
detailed_book_info: dict[str, str]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@llm.tool()
|
|
10
|
+
# [!code highlight:2]
|
|
11
|
+
def get_book_info(ctx: llm.Context[Library], book: str) -> str:
|
|
12
|
+
return ctx.deps.detailed_book_info.get(book, "Book not found")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# [!code highlight:2]
|
|
16
|
+
def librarian(ctx: llm.Context[Library], query: str):
|
|
17
|
+
model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
18
|
+
book_list = "\n".join(ctx.deps.available_books)
|
|
19
|
+
messages = [
|
|
20
|
+
llm.messages.system(
|
|
21
|
+
f"You are a librarian, with access to these books: ${book_list}"
|
|
22
|
+
),
|
|
23
|
+
query,
|
|
24
|
+
]
|
|
25
|
+
# [!code highlight:2]
|
|
26
|
+
return model.context_call(ctx=ctx, messages=messages, tools=[get_book_info])
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def main():
|
|
30
|
+
query = "Please recommend a mind-bending book from the library."
|
|
31
|
+
ctx = llm.Context(deps=Library()) # [!code highlight]
|
|
32
|
+
response: llm.ContextResponse[Library] = librarian(ctx, query) # [!code highlight]
|
|
33
|
+
|
|
34
|
+
while response.tool_calls:
|
|
35
|
+
tool_outputs = response.execute_tools(ctx) # [!code highlight]
|
|
36
|
+
response = response.resume(ctx, tool_outputs) # [!code highlight]
|
|
37
|
+
|
|
38
|
+
print(response.pretty())
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
main()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
7
|
+
async def recommend_book(genre: str):
|
|
8
|
+
return f"Please recommend a book in {genre}."
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async def main():
|
|
12
|
+
response: llm.AsyncResponse = await recommend_book("fantasy")
|
|
13
|
+
print(response.pretty())
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
if __name__ == "__main__":
|
|
17
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
7
|
+
async def recommend_book(genre: str):
|
|
8
|
+
return f"Please recommend a book in {genre}."
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async def main():
|
|
12
|
+
response: llm.AsyncStreamResponse = await recommend_book.stream("fantasy")
|
|
13
|
+
async for chunk in response.pretty_stream():
|
|
14
|
+
print(chunk, flush=True, end="")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
5
|
+
def recommend_book(genre: str):
|
|
6
|
+
return f"Please recommend a book in {genre}."
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def main():
|
|
10
|
+
response: llm.StreamResponse = recommend_book.stream("fantasy")
|
|
11
|
+
for chunk in response.pretty_stream():
|
|
12
|
+
print(chunk, flush=True, end="")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
main()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
5
|
+
def recommend_book(genre: str):
|
|
6
|
+
return f"Please recommend a book in {genre}."
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def main():
|
|
10
|
+
response: llm.Response = recommend_book("fantasy")
|
|
11
|
+
print(response.pretty())
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
main()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from pydantic import BaseModel
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Book(BaseModel):
|
|
7
|
+
title: str
|
|
8
|
+
author: str
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@llm.call(provider="openai", model_id="gpt-5", format=Book)
|
|
12
|
+
def recommend_book(genre: str):
|
|
13
|
+
return f"Please recommend a book in {genre}."
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def main():
|
|
17
|
+
response: llm.Response[Book] = recommend_book("fantasy")
|
|
18
|
+
book: Book = response.parse()
|
|
19
|
+
print(f"{book.title} by {book.author}")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
main()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from pydantic import BaseModel
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Book(BaseModel):
|
|
7
|
+
title: str
|
|
8
|
+
author: str
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def recommend_book(genre: str) -> llm.Response[Book]:
|
|
12
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
13
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
14
|
+
return model.call(
|
|
15
|
+
messages=[message],
|
|
16
|
+
format=Book, # [!code highlight]
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def main():
|
|
21
|
+
response: llm.Response[Book] = recommend_book("fantasy")
|
|
22
|
+
book: Book = response.parse()
|
|
23
|
+
print(f"{book.title} by {book.author}")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async def recommend_book(genre: str) -> llm.AsyncResponse:
|
|
7
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
8
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
9
|
+
return await model.call_async(messages=[message])
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def main():
|
|
13
|
+
response: llm.AsyncResponse = await recommend_book("fantasy")
|
|
14
|
+
print(response.pretty())
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
from mirascope import llm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async def recommend_book(genre: str) -> llm.AsyncStreamResponse:
|
|
7
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
8
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
9
|
+
return await model.stream_async(messages=[message])
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def main():
|
|
13
|
+
response: llm.AsyncStreamResponse = await recommend_book("fantasy")
|
|
14
|
+
async for chunk in response.pretty_stream():
|
|
15
|
+
print(chunk, flush=True, end="")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
if __name__ == "__main__":
|
|
19
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.StreamResponse:
|
|
5
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
6
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
7
|
+
return model.stream(messages=[message])
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def main():
|
|
11
|
+
response: llm.StreamResponse = recommend_book("fantasy")
|
|
12
|
+
for chunk in response.pretty_stream():
|
|
13
|
+
print(chunk, flush=True, end="")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.Response:
|
|
5
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
6
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
7
|
+
return model.call(messages=[message])
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def main():
|
|
11
|
+
response: llm.Response = recommend_book("fantasy")
|
|
12
|
+
print(response.pretty())
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
main()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
5
|
+
def recommend_book(genre: str):
|
|
6
|
+
return f"Please recommend a book in {genre}."
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def main():
|
|
10
|
+
# [!code highlight:2]
|
|
11
|
+
with llm.model(provider="anthropic", model_id="claude-sonnet-4-0", temperature=1):
|
|
12
|
+
response: llm.Response = recommend_book("fantasy")
|
|
13
|
+
print(response.pretty())
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.Response:
|
|
5
|
+
# [!code highlight:2]
|
|
6
|
+
model = llm.use_model(provider="openai", model_id="gpt-4o-mini")
|
|
7
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
8
|
+
return model.call(messages=[message])
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def main():
|
|
12
|
+
# [!code highlight:2]
|
|
13
|
+
with llm.model(provider="anthropic", model_id="claude-sonnet-4-0", temperature=1):
|
|
14
|
+
response: llm.Response = recommend_book("fantasy")
|
|
15
|
+
print(response.pretty())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(
|
|
5
|
+
provider="openai",
|
|
6
|
+
model_id="gpt-5",
|
|
7
|
+
temperature=1, # [!code highlight]
|
|
8
|
+
)
|
|
9
|
+
def recommend_book(genre: str):
|
|
10
|
+
return f"Please recommend a book in {genre}."
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def main():
|
|
14
|
+
response: llm.Response = recommend_book("fantasy")
|
|
15
|
+
print(response.pretty())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
main()
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.Response:
|
|
5
|
+
model = llm.use_model(
|
|
6
|
+
provider="openai",
|
|
7
|
+
model_id="gpt-5",
|
|
8
|
+
temperature=1, # [!code highlight]
|
|
9
|
+
)
|
|
10
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
11
|
+
return model.call(messages=[message])
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def main():
|
|
15
|
+
response: llm.Response = recommend_book("fantasy")
|
|
16
|
+
print(response.pretty())
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
main()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
5
|
+
def recommend_book(genre: str):
|
|
6
|
+
return f"Please recommend a book in {genre}."
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def main():
|
|
10
|
+
response: llm.Response = recommend_book("fantasy")
|
|
11
|
+
print(response.pretty())
|
|
12
|
+
# [!code highlight:2]
|
|
13
|
+
continuation: llm.Response = response.resume("Please explain your choice.")
|
|
14
|
+
print(continuation.pretty())
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.Response:
|
|
5
|
+
model: llm.Model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
6
|
+
message = llm.messages.user(f"Please recommend a book in {genre}.")
|
|
7
|
+
return model.call(messages=[message])
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def main():
|
|
11
|
+
response: llm.Response = recommend_book("fantasy")
|
|
12
|
+
print(response.pretty())
|
|
13
|
+
# [!code highlight:2]
|
|
14
|
+
continuation: llm.Response = response.resume("Please explain your choice.")
|
|
15
|
+
print(continuation.pretty())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.call(provider="openai", model_id="gpt-5")
|
|
5
|
+
def recommend_book(genre: str):
|
|
6
|
+
return [
|
|
7
|
+
# [!code highlight]
|
|
8
|
+
llm.messages.system("Always recommend kid-friendly books."),
|
|
9
|
+
llm.messages.user(f"Please recommend a book in {genre}."),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def main():
|
|
14
|
+
response: llm.Response = recommend_book("fantasy")
|
|
15
|
+
print(response.pretty())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
main()
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def recommend_book(genre: str) -> llm.Response:
|
|
5
|
+
model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
6
|
+
return model.call(
|
|
7
|
+
messages=[
|
|
8
|
+
# [!code highlight]
|
|
9
|
+
llm.messages.system("Always recommend kid-friendly books."),
|
|
10
|
+
llm.messages.user(f"Please recommend a book in {genre}."),
|
|
11
|
+
]
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def main():
|
|
16
|
+
response: llm.Response = recommend_book("fantasy")
|
|
17
|
+
print(response.pretty())
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
main()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.tool() # [!code highlight]
|
|
5
|
+
def available_library_books() -> list[str]: # [!code highlight]
|
|
6
|
+
return [
|
|
7
|
+
"Mistborn by Brandon Sanderson",
|
|
8
|
+
"The Name of the Wind by Patrick Rothfuss",
|
|
9
|
+
"Too Like the Lightning by Ada Palmer",
|
|
10
|
+
"Wild Seed by Octavia Butler",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@llm.call(
|
|
15
|
+
provider="openai",
|
|
16
|
+
model_id="gpt-5",
|
|
17
|
+
tools=[available_library_books],
|
|
18
|
+
)
|
|
19
|
+
def librarian(query: str):
|
|
20
|
+
return query
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def main():
|
|
24
|
+
response: llm.Response = librarian(
|
|
25
|
+
"Please recommend a mind-bending book that's available in the library."
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# [!code highlight:4]
|
|
29
|
+
while response.tool_calls:
|
|
30
|
+
tool_outputs = response.execute_tools()
|
|
31
|
+
response = response.resume(tool_outputs)
|
|
32
|
+
|
|
33
|
+
print(response.pretty())
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
main()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from mirascope import llm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@llm.tool() # [!code highlight]
|
|
5
|
+
def available_library_books() -> list[str]: # [!code highlight]
|
|
6
|
+
return [
|
|
7
|
+
"Mistborn by Brandon Sanderson",
|
|
8
|
+
"The Name of the Wind by Patrick Rothfuss",
|
|
9
|
+
"Too Like the Lightning by Ada Palmer",
|
|
10
|
+
"Wild Seed by Octavia Butler",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def librarian(query: str) -> llm.Response:
|
|
15
|
+
model = llm.use_model(provider="openai", model_id="gpt-5")
|
|
16
|
+
message = llm.messages.user(query)
|
|
17
|
+
return model.call(
|
|
18
|
+
messages=[message],
|
|
19
|
+
tools=[available_library_books], # [!code highlight]
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def main():
|
|
24
|
+
response: llm.Response = librarian(
|
|
25
|
+
"Please recommend a mind-bending book that's available in the library."
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# [!code highlight:4]
|
|
29
|
+
while response.tool_calls:
|
|
30
|
+
tool_outputs = response.execute_tools()
|
|
31
|
+
response = response.resume(tool_outputs)
|
|
32
|
+
|
|
33
|
+
print(response.pretty())
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
main()
|
|
@@ -8,13 +8,14 @@ code that works with multiple LLM providers without changing your application lo
|
|
|
8
8
|
# TODO: Across the API, audit docstrings to ensure they are compliant Google-style docstrings
|
|
9
9
|
# (Write some tooling to ensure this happens consistently + in CI)
|
|
10
10
|
|
|
11
|
+
from contextlib import suppress
|
|
12
|
+
|
|
11
13
|
from . import (
|
|
12
14
|
calls,
|
|
13
15
|
clients,
|
|
14
16
|
content,
|
|
15
17
|
exceptions,
|
|
16
18
|
formatting,
|
|
17
|
-
mcp,
|
|
18
19
|
messages,
|
|
19
20
|
models,
|
|
20
21
|
prompts,
|
|
@@ -22,6 +23,9 @@ from . import (
|
|
|
22
23
|
tools,
|
|
23
24
|
types,
|
|
24
25
|
)
|
|
26
|
+
|
|
27
|
+
with suppress(ImportError):
|
|
28
|
+
from . import mcp
|
|
25
29
|
from .calls import call
|
|
26
30
|
from .clients import ModelId, Params, Provider, client, get_client
|
|
27
31
|
from .content import (
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Utilities for handling optional provider dependencies."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def create_import_error_stub(
|
|
7
|
+
package_name: str, client_name: str
|
|
8
|
+
) -> Callable: # pragma: no cover
|
|
9
|
+
"""Create a stub that raises ImportError when called.
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
package_name: The package/extra name (e.g., "anthropic", "openai", "google")
|
|
13
|
+
client_name: The client name for the error message (e.g., "AnthropicClient")
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
A callable that raises `ImportError` with helpful message.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
def _raise_not_installed() -> None:
|
|
20
|
+
raise ImportError(
|
|
21
|
+
f"The '{package_name}' package is required to use {client_name}. "
|
|
22
|
+
f"Install it with: `uv add 'mirascope[{package_name}]'`. "
|
|
23
|
+
"Or use `uv add 'mirascope[all]'` to support all providers."
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
return _raise_not_installed
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def create_client_stub(package_name: str, client_name: str) -> type: # pragma: no cover
|
|
30
|
+
"""Create a stub client class that raises ImportError when instantiated.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
package_name: The package/extra name (e.g., "anthropic", "openai", "google")
|
|
34
|
+
client_name: The client name for the error message (e.g., "AnthropicClient")
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
A stub class that raises `ImportError` on instantiation.
|
|
38
|
+
"""
|
|
39
|
+
error_fn = create_import_error_stub(package_name, client_name)
|
|
40
|
+
|
|
41
|
+
class _ClientStub:
|
|
42
|
+
"""Stub client that raises `ImportError` when instantiated."""
|
|
43
|
+
|
|
44
|
+
def __init__(self) -> None:
|
|
45
|
+
error_fn()
|
|
46
|
+
|
|
47
|
+
return _ClientStub
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Anthropic client implementation."""
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any
|
|
4
|
+
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from .clients import AnthropicClient, client, get_client
|
|
7
|
+
from .model_ids import AnthropicModelId
|
|
8
|
+
else:
|
|
9
|
+
try:
|
|
10
|
+
from .clients import AnthropicClient, client, get_client
|
|
11
|
+
from .model_ids import AnthropicModelId
|
|
12
|
+
except ImportError: # pragma: no cover
|
|
13
|
+
from .._missing_import_stubs import create_client_stub, create_import_error_stub
|
|
14
|
+
|
|
15
|
+
AnthropicClient = create_client_stub("anthropic", "AnthropicClient")
|
|
16
|
+
AnthropicModelId = str
|
|
17
|
+
client = create_import_error_stub("anthropic", "AnthropicClient")
|
|
18
|
+
get_client = create_import_error_stub("anthropic", "AnthropicClient")
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"AnthropicClient",
|
|
22
|
+
"AnthropicModelId",
|
|
23
|
+
"client",
|
|
24
|
+
"get_client",
|
|
25
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Google client implementation."""
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from .clients import GoogleClient, client, get_client
|
|
7
|
+
from .model_ids import GoogleModelId
|
|
8
|
+
else:
|
|
9
|
+
try:
|
|
10
|
+
from .clients import GoogleClient, client, get_client
|
|
11
|
+
from .model_ids import GoogleModelId
|
|
12
|
+
except ImportError: # pragma: no cover
|
|
13
|
+
from .._missing_import_stubs import create_client_stub, create_import_error_stub
|
|
14
|
+
|
|
15
|
+
GoogleClient = create_client_stub("google", "GoogleClient")
|
|
16
|
+
GoogleModelId = str
|
|
17
|
+
client = create_import_error_stub("google", "GoogleClient")
|
|
18
|
+
get_client = create_import_error_stub("google", "GoogleClient")
|
|
19
|
+
|
|
20
|
+
__all__ = ["GoogleClient", "GoogleModelId", "client", "get_client"]
|