prompture 1.1.3.dev1__tar.gz → 1.1.3.dev2__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.
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/PKG-INFO +104 -226
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/README.md +103 -225
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/_version.py +2 -2
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/PKG-INFO +104 -226
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-driver/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-driver/references/driver-template.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-example/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-field/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-persona/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-test/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/add-tool/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/create-pr/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/run-tests/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.claude/skills/update-pricing/SKILL.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.env.copy +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/FUNDING.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/scripts/update_docs_version.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/scripts/update_wrapper_version.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/workflows/dev.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/workflows/documentation.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/workflows/pricing-freshness.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/workflows/publish.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.github/workflows/security.yml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/.safety-project.ini +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/AGENTS.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/BREAKING_CHANGES.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/CLAUDE.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/CONTRIBUTING.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/LICENSE +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/MANIFEST.in +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/ROADMAP.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/SECURITY.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/dev.ps1 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/dev.sh +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/mypy_errors.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/README.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_json/README.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_json/pyproject.toml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_json/test.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_toon/README.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_toon/pyproject.toml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/packages/llm_to_toon/test.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/agent.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/async_agent.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/async_conversation.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/async_deep_agent.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/conversation.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep/planner.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep/subagents.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep/summarizer.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep/vfs.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep_agent.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep_prompts.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/deep_state.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/persona.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/simulated_tools.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/skills.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/tools_schema.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/agents/types.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/aio/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/bridges/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/bridges/tukuy_backend.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/cli/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/cli/cli.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/cli/formatters.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/cli/runner.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/cli/server.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/dataset/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/dataset/formats.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/dataset/schemas.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/dataset/synth.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/airllm_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/assemblyai_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_airllm_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_azure_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_bedrock_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_cachibot_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_claude_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_deepseek_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_embedding_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_google_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_google_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_google_vertexai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_groq_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_hugging_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_img_gen_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_jina_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_jina_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_lmstudio_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_local_http_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_minimax_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_mistral_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_modelscope_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_moonshot_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_ollama_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_compatible_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_moderation_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_openrouter_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_stt_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_tts_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_video_gen_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/async_zai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/audio_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/azure_config.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/azure_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/bedrock_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/bfl_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/cachibot_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/cartesia_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/claude_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/cohere_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/cohere_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/cohere_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/deepgram_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/deepgram_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/deepseek_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/driver_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/embedding_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/embedding_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/fal_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/fal_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/google_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/google_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/google_vertexai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/grok_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/grok_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/grok_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/groq_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/hugging_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/img_gen_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/img_gen_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/jina_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/jina_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/kling_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/kling_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/lmstudio_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/local_http_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/luma_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/minimax_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/minimax_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/mistral_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/mistral_moderation_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/modelscope_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/moderation_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/moderation_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/moonshot_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/mxbai_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/mxbai_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/nomic_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/ollama_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/ollama_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_compatible_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_moderation_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_stt_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openai_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/openrouter_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/pika_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/provider_descriptors.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/rerank_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/rerank_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/runway_audio_transform_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/runway_capabilities.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/runway_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/runway_tts_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/runway_video_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/stability_img_gen_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/stt_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/tts_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/video_gen_base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/video_gen_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/vision_helpers.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/voyage_embedding_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/voyage_rerank_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/drivers/zai_driver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/exceptions.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/async_core.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/core.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/fields.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/reasoning.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/strategy.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/tools.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/tukuy_bridge.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/extraction/validator.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/async_groups.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/consensus.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/debate.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/groups.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/groups/types.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/budget.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/cache.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/callbacks.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/capabilities.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/coding_agent_events.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/coding_agent_specs.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/coding_agents.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/cost_mixin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/discovery.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/ledger.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/logging.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/model_rates.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/pricing.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/provider_env.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/anthropic.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/azure.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/bedrock.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/cerebras.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/cohere.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/deepinfra.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/deepseek.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/fireworks.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/google.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/google_vertexai.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/groq.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/jina.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/mistral.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/mixedbread.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/moonshot.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/nomic.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/nvidia.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/openai.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/openrouter.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/perplexity.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/sambanova.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/siliconflow.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/together.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/voyage.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/rates/xai.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/session.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/settings.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/tracker.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/infra/tukuy_backend.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/chunking.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/detect.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/document.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/csv_parser.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/docx.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/html.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/markdown.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/pdf.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/xlsx.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/integrations/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/integrations/tukuy_bridge.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/media/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/media/audio.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/media/image.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/media/video.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/01-why-prompture.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/02-installation.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/03-quickstart.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/04-toon-input.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/05-test-harness.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/06-stability.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pages/07-migration.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/persistence/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/persistence/history.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/persistence/serialization.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/persistence/store.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pipeline/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pipeline/pipeline.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pipeline/resolver.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/pipeline/routing.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/_aliases.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/audio_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/cloud_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/extras_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/google_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/image_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/local_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/openai_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/builtins/video_plugin.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/plugins/discovery.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/py.typed +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/character.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/chunker_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/markdown.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/recursive.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/semantic.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/chunkers/token.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/documents.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loader_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/csv_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/docx_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/epub_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/html_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/json_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/markdown_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/pdf_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/text_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/loaders/xlsx_loader.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/pipeline.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/hybrid.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/mmr.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/retriever_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/retrievers/similarity.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/base.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/chroma.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/faiss.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/pgvector.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/pinecone.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/qdrant.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/weaviate.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/refusal/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/refusal/detector.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/refusal/evaluator.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/refusal/markers.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/generator.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/README.md.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/config.py.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/env.example.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/main.py.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/models.py.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/security/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/security/injection.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/security/redaction.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/testing/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/testing/driver_contract.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/tools/__init__.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/tools/code_exec.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture/tools/web_search.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/SOURCES.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/dependency_links.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/entry_points.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/requires.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture.egg-info/top_level.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/prompture_cost_tracking.md +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/pyproject.toml +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/requirements.txt +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/scripts/check_pricing_freshness.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/setup.cfg +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/specs/basic_extraction.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/specs/schema_validation.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/specs/strategy_comparison.json +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/test.py +0 -0
- {prompture-1.1.3.dev1 → prompture-1.1.3.dev2}/test_version_diagnosis.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: prompture
|
|
3
|
-
Version: 1.1.3.
|
|
3
|
+
Version: 1.1.3.dev2
|
|
4
4
|
Summary: Ask LLMs to return structured JSON and run cross-model tests. API-first.
|
|
5
5
|
Author-email: Juan Denis <juan@vene.co>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -134,29 +134,37 @@ print(person.name) # Maria
|
|
|
134
134
|
|
|
135
135
|
## Key Features
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
137
|
+
**Structured extraction**
|
|
138
|
+
- JSON schema enforcement and direct Pydantic model population
|
|
139
|
+
- Stepwise per-field extraction with smart type coercion (shorthand numbers, multilingual booleans, dates)
|
|
140
|
+
- Field registry — 50+ predefined fields with template variables and Pydantic integration
|
|
141
|
+
- Strategy cascade — auto-selects provider-native JSON mode, tool-call extraction, or prompted repair
|
|
142
|
+
- Multi-model fallback with per-attempt cost, token, and capability accounting
|
|
143
|
+
- Optional auto-repair pass for malformed JSON
|
|
144
|
+
|
|
145
|
+
**Providers & modalities**
|
|
146
|
+
- 36+ providers under a unified `provider/model` string — see [Providers](#providers)
|
|
147
|
+
- Multi-modal drivers for embeddings, rerank, moderation, image, video, TTS, STT, and audio transforms — see [Multi-Modal](#multi-modal)
|
|
148
|
+
- TOON input conversion for 45–60% token savings on structured input ([python-toon](https://github.com/jhd3197/python-toon))
|
|
149
|
+
|
|
150
|
+
**Agents, tools, RAG**
|
|
151
|
+
- Stateful conversations with sync + async support
|
|
152
|
+
- Function calling and streaming across providers, with prompt-based simulation for models without native tool use
|
|
153
|
+
- Drop-in tools: sandboxed `python_execute` (Tukuy), `web_search` (Tavily / Serper / Brave / SearXNG)
|
|
154
|
+
- `DeepAgent` with planning, virtual filesystem, sub-agents, and auto-summarization — no LangChain
|
|
155
|
+
- Full RAG stack — loaders, chunkers, vector stores, hybrid dense+BM25 retrieval, end-to-end `RAGPipeline` — see [RAG](#rag)
|
|
156
|
+
|
|
157
|
+
**Safety & evaluation**
|
|
158
|
+
- `PromptInjectionDetector` + `PIIRedactor` for input-side defense
|
|
159
|
+
- `RefusalDetector` / `RefusalEvaluator` for cross-provider alignment scoring
|
|
160
|
+
- `generate_qa_dataset()` — synthetic JSONL datasets ready for Unsloth, Axolotl, TRL
|
|
161
|
+
|
|
162
|
+
**Ops**
|
|
163
|
+
- `prompture serve` — OpenAI-compatible server (`/v1/chat/completions`, `/v1/embeddings`, `/v1/coding-agents`, …) routes any client to any provider
|
|
164
|
+
- Usage tracking — tokens + cost on every call
|
|
165
|
+
- Response cache — memory, SQLite, Redis backends
|
|
166
|
+
- Plugin system — register custom drivers via entry points
|
|
167
|
+
- Spec-driven batch testing for cross-model comparison
|
|
160
168
|
|
|
161
169
|
## Built With Prompture
|
|
162
170
|
|
|
@@ -171,34 +179,70 @@ Projects powered by Prompture at their core:
|
|
|
171
179
|
pip install prompture
|
|
172
180
|
```
|
|
173
181
|
|
|
174
|
-
|
|
182
|
+
That's all you need for the core driver system, structured extraction, and
|
|
183
|
+
agent loop. Everything below is **opt-in** — install only what you'll actually
|
|
184
|
+
use.
|
|
185
|
+
|
|
186
|
+
> **TL;DR** — Building a RAG app? `pip install prompture[rag]` and skip the
|
|
187
|
+
> rest of this section. Just doing structured extraction or agents? You don't
|
|
188
|
+
> need any extras.
|
|
189
|
+
|
|
190
|
+
### Core extras
|
|
191
|
+
|
|
192
|
+
| Extra | Adds | Install |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| `redis` | Redis cache backend | `pip install prompture[redis]` |
|
|
195
|
+
| `serve` | FastAPI server mode (`prompture serve`) | `pip install prompture[serve]` |
|
|
196
|
+
| `airllm` | AirLLM local inference | `pip install prompture[airllm]` |
|
|
197
|
+
| `bedrock` | AWS Bedrock driver (`boto3`) | `pip install prompture[bedrock]` |
|
|
198
|
+
| `sandbox` | Sandboxed Python execution tool (`tukuy`) | `pip install prompture[sandbox]` |
|
|
199
|
+
|
|
200
|
+
### RAG — the easy path
|
|
175
201
|
|
|
176
202
|
```bash
|
|
177
|
-
pip install prompture[
|
|
178
|
-
pip install prompture[serve] # FastAPI server mode
|
|
179
|
-
pip install prompture[airllm] # AirLLM local inference
|
|
180
|
-
pip install prompture[bedrock] # AWS Bedrock driver (boto3)
|
|
181
|
-
pip install prompture[sandbox] # Sandboxed Python execution tool (tukuy)
|
|
182
|
-
pip install prompture[rag] # Full RAG stack (all loaders, chunkers, vector stores, hybrid retrieval)
|
|
203
|
+
pip install prompture[rag]
|
|
183
204
|
```
|
|
184
205
|
|
|
185
|
-
|
|
206
|
+
Pulls in every loader, chunker, hybrid retrieval, and all vector-store
|
|
207
|
+
backends. Use this unless you need to keep the dependency footprint small.
|
|
208
|
+
|
|
209
|
+
### RAG — à la carte
|
|
210
|
+
|
|
211
|
+
Pick only the pieces you need.
|
|
212
|
+
|
|
213
|
+
**Loaders** — one per document format:
|
|
214
|
+
|
|
215
|
+
| Extra | Format | Backed by |
|
|
216
|
+
|---|---|---|
|
|
217
|
+
| `rag-pdf` | PDF | `pypdf` |
|
|
218
|
+
| `rag-docx` | DOCX | `python-docx` |
|
|
219
|
+
| `rag-html` | HTML | `beautifulsoup4` + `markdownify` + `lxml` |
|
|
220
|
+
| `rag-epub` | EPUB | `ebooklib` |
|
|
221
|
+
| `rag-xlsx` | XLSX | `openpyxl` |
|
|
222
|
+
|
|
223
|
+
**Chunking & retrieval:**
|
|
224
|
+
|
|
225
|
+
| Extra | What it adds | Backed by |
|
|
226
|
+
|---|---|---|
|
|
227
|
+
| `rag-token` | Token-aware chunker | `tiktoken` |
|
|
228
|
+
| `rag-semantic` | Semantic chunker | `numpy` |
|
|
229
|
+
| `rag-hybrid` | Hybrid retriever (BM25 + vectors) | `rank-bm25` |
|
|
230
|
+
|
|
231
|
+
**Vector stores** — pick whichever you deploy against:
|
|
232
|
+
|
|
233
|
+
| Extra | Vector store |
|
|
234
|
+
|---|---|
|
|
235
|
+
| `rag-vs-chroma` | Chroma |
|
|
236
|
+
| `rag-vs-pinecone` | Pinecone |
|
|
237
|
+
| `rag-vs-qdrant` | Qdrant |
|
|
238
|
+
| `rag-vs-pgvector` | pgvector / PostgreSQL |
|
|
239
|
+
| `rag-vs-faiss` | FAISS (CPU build) |
|
|
240
|
+
| `rag-vs-weaviate` | Weaviate |
|
|
241
|
+
|
|
242
|
+
Combine them as needed, e.g.:
|
|
186
243
|
|
|
187
244
|
```bash
|
|
188
|
-
pip install prompture[rag-pdf]
|
|
189
|
-
pip install prompture[rag-docx] # DOCX loader (python-docx)
|
|
190
|
-
pip install prompture[rag-html] # HTML loader (beautifulsoup4 + markdownify + lxml)
|
|
191
|
-
pip install prompture[rag-epub] # EPUB loader (ebooklib)
|
|
192
|
-
pip install prompture[rag-xlsx] # XLSX loader (openpyxl)
|
|
193
|
-
pip install prompture[rag-token] # Token-aware chunker (tiktoken)
|
|
194
|
-
pip install prompture[rag-semantic] # Semantic chunker (numpy)
|
|
195
|
-
pip install prompture[rag-hybrid] # Hybrid retriever with BM25 (rank-bm25)
|
|
196
|
-
pip install prompture[rag-vs-chroma] # Chroma vector store
|
|
197
|
-
pip install prompture[rag-vs-pinecone] # Pinecone vector store
|
|
198
|
-
pip install prompture[rag-vs-qdrant] # Qdrant vector store
|
|
199
|
-
pip install prompture[rag-vs-pgvector] # pgvector / PostgreSQL
|
|
200
|
-
pip install prompture[rag-vs-faiss] # FAISS vector store (CPU build)
|
|
201
|
-
pip install prompture[rag-vs-weaviate] # Weaviate vector store
|
|
245
|
+
pip install "prompture[rag-pdf,rag-token,rag-vs-qdrant]"
|
|
202
246
|
```
|
|
203
247
|
|
|
204
248
|
## Configuration
|
|
@@ -247,17 +291,23 @@ Model strings use `"provider/model"` format. The provider prefix routes to the c
|
|
|
247
291
|
| `openai` | `openai/gpt-4` | Automatic |
|
|
248
292
|
| `claude` | `claude/claude-3` | Automatic |
|
|
249
293
|
| `google` | `google/gemini-1.5-pro` | Automatic |
|
|
250
|
-
| `google_vertexai` | `google_vertexai/gemini-1.5-pro` | Automatic |
|
|
251
294
|
| `groq` | `groq/llama2-70b-4096` | Automatic |
|
|
295
|
+
| `openrouter` | `openrouter/anthropic/claude-2` | Automatic |
|
|
296
|
+
| `ollama` | `ollama/llama3.1:8b` | Free (local) |
|
|
297
|
+
|
|
298
|
+
<details>
|
|
299
|
+
<summary><b>Show all 30+ providers</b></summary>
|
|
300
|
+
|
|
301
|
+
| Provider | Example Model | Cost |
|
|
302
|
+
|---|---|---|
|
|
303
|
+
| `google_vertexai` | `google_vertexai/gemini-1.5-pro` | Automatic |
|
|
252
304
|
| `grok` | `grok/grok-4-fast-reasoning` | Automatic |
|
|
253
305
|
| `azure` | `azure/deployed-name` | Automatic |
|
|
254
306
|
| `bedrock` | `bedrock/anthropic.claude-3-5-haiku-20241022-v1:0` (requires `pip install prompture[bedrock]`) | Automatic |
|
|
255
|
-
| `openrouter` | `openrouter/anthropic/claude-2` | Automatic |
|
|
256
307
|
| `moonshot` | `moonshot/kimi-k2` | Automatic |
|
|
257
308
|
| `modelscope` | `modelscope/Qwen2.5-72B-Instruct` | Automatic |
|
|
258
309
|
| `zai` | `zai/glm-4` | Automatic |
|
|
259
310
|
| `cachibot` | `cachibot/openai/gpt-4o-mini` | Automatic |
|
|
260
|
-
| `ollama` | `ollama/llama3.1:8b` | Free (local) |
|
|
261
311
|
| `lmstudio` | `lmstudio/local-model` | Free (local) |
|
|
262
312
|
| `huggingface` | `hf/model-name` | Free (local) |
|
|
263
313
|
| `airllm` | `airllm/Qwen2-7B` | Free (local) |
|
|
@@ -277,6 +327,8 @@ Model strings use `"provider/model"` format. The provider prefix routes to the c
|
|
|
277
327
|
| `mixedbread` | `mixedbread/mxbai-embed-large-v1` (embedding), `mixedbread/mxbai-rerank-large-v1` (rerank) | Automatic |
|
|
278
328
|
| `openai_compatible` | `openai_compatible/<profile>/<model>` — 9 curated profiles: `fireworks`, `together`, `cerebras`, `sambanova`, `perplexity`, `nvidia`, `deepinfra`, `siliconflow`, `github_models` (or pass an explicit `endpoint=` for anything else) | Automatic where pricing is known |
|
|
279
329
|
|
|
330
|
+
</details>
|
|
331
|
+
|
|
280
332
|
Aliases (`anthropic`, `gemini`, `chatgpt`, `xai`, `lm_studio`, `zhipu`, `hf`, `dalle`, `runwayml`, `hailuo`, `mistralai`, `flux`, `mxbai`) route to their canonical providers.
|
|
281
333
|
|
|
282
334
|
## Multi-Modal
|
|
@@ -1592,184 +1644,10 @@ Selected flags:
|
|
|
1592
1644
|
|
|
1593
1645
|
Full example walkthrough: [`examples/openai_server_example.md`](examples/openai_server_example.md).
|
|
1594
1646
|
|
|
1595
|
-
## Integrating
|
|
1596
|
-
|
|
1597
|
-
### FastAPI + AsyncAgent with Tools
|
|
1598
|
-
|
|
1599
|
-
The most common integration pattern — an AI chat endpoint with database-backed tools:
|
|
1600
|
-
|
|
1601
|
-
```python
|
|
1602
|
-
from fastapi import APIRouter, Depends
|
|
1603
|
-
from prompture import AsyncAgent, ToolRegistry, ProviderEnvironment, BudgetExceededError
|
|
1604
|
-
|
|
1605
|
-
router = APIRouter()
|
|
1606
|
-
|
|
1607
|
-
def build_tools(db) -> ToolRegistry:
|
|
1608
|
-
registry = ToolRegistry()
|
|
1609
|
-
|
|
1610
|
-
@registry.tool
|
|
1611
|
-
async def search_records(query: str) -> str:
|
|
1612
|
-
"""Search the database for matching records."""
|
|
1613
|
-
results = await db.execute(...)
|
|
1614
|
-
return format_results(results)
|
|
1615
|
-
|
|
1616
|
-
return registry
|
|
1617
|
-
|
|
1618
|
-
@router.post("/chat")
|
|
1619
|
-
async def chat(message: str, db=Depends(get_db)):
|
|
1620
|
-
env = ProviderEnvironment(openai_api_key=get_api_key_from_db(db))
|
|
1621
|
-
|
|
1622
|
-
agent = AsyncAgent(
|
|
1623
|
-
"openai/gpt-4o",
|
|
1624
|
-
env=env,
|
|
1625
|
-
tools=build_tools(db),
|
|
1626
|
-
system_prompt="You are a helpful assistant with database access.",
|
|
1627
|
-
max_cost=0.25,
|
|
1628
|
-
budget_policy="hard_stop",
|
|
1629
|
-
)
|
|
1630
|
-
|
|
1631
|
-
try:
|
|
1632
|
-
result = await agent.run(message)
|
|
1633
|
-
return {"reply": result.output_text, "usage": result.usage}
|
|
1634
|
-
except BudgetExceededError:
|
|
1635
|
-
return {"error": "Cost limit exceeded"}, 429
|
|
1636
|
-
```
|
|
1637
|
-
|
|
1638
|
-
### SSE Streaming Endpoint
|
|
1647
|
+
## Integrating & Extending
|
|
1639
1648
|
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
```python
|
|
1643
|
-
from fastapi.responses import StreamingResponse
|
|
1644
|
-
from prompture import AsyncAgent, StreamEventType
|
|
1645
|
-
|
|
1646
|
-
@router.post("/chat/stream")
|
|
1647
|
-
async def chat_stream(message: str):
|
|
1648
|
-
agent = AsyncAgent("claude/claude-sonnet-4-6", env=env, system_prompt="...")
|
|
1649
|
-
|
|
1650
|
-
async def event_stream():
|
|
1651
|
-
async for event in agent.run_stream(message):
|
|
1652
|
-
match event.event_type:
|
|
1653
|
-
case StreamEventType.text_delta:
|
|
1654
|
-
yield f"data: {json.dumps({'type': 'text', 'content': event.data})}\n\n"
|
|
1655
|
-
case StreamEventType.tool_call:
|
|
1656
|
-
yield f"data: {json.dumps({'type': 'tool_call', 'name': event.data['name']})}\n\n"
|
|
1657
|
-
case StreamEventType.output:
|
|
1658
|
-
yield f"data: {json.dumps({'type': 'done'})}\n\n"
|
|
1659
|
-
|
|
1660
|
-
return StreamingResponse(event_stream(), media_type="text/event-stream")
|
|
1661
|
-
```
|
|
1662
|
-
|
|
1663
|
-
### Structured Extraction in Endpoints
|
|
1664
|
-
|
|
1665
|
-
Use `AsyncConversation.ask_for_json()` for one-shot structured data extraction:
|
|
1666
|
-
|
|
1667
|
-
```python
|
|
1668
|
-
from prompture import AsyncConversation
|
|
1669
|
-
|
|
1670
|
-
@router.get("/insights")
|
|
1671
|
-
async def get_insights():
|
|
1672
|
-
conv = AsyncConversation("openai/gpt-4o", system_prompt="You analyze data.")
|
|
1673
|
-
result = await conv.ask_for_json(
|
|
1674
|
-
f"Analyze this data and produce insights:\n\n{context}",
|
|
1675
|
-
{"type": "object", "properties": {
|
|
1676
|
-
"insights": {"type": "array", "items": {"type": "object", ...}},
|
|
1677
|
-
"summary": {"type": "string"},
|
|
1678
|
-
}},
|
|
1679
|
-
)
|
|
1680
|
-
return result["json_object"]
|
|
1681
|
-
```
|
|
1682
|
-
|
|
1683
|
-
### Error Handling
|
|
1684
|
-
|
|
1685
|
-
Key exceptions to catch in production:
|
|
1686
|
-
|
|
1687
|
-
```python
|
|
1688
|
-
from prompture import BudgetExceededError, DriverError, ExtractionError, ValidationError
|
|
1689
|
-
|
|
1690
|
-
try:
|
|
1691
|
-
result = await agent.run(message)
|
|
1692
|
-
except BudgetExceededError:
|
|
1693
|
-
# Cost or token limit exceeded — return 429
|
|
1694
|
-
pass
|
|
1695
|
-
except DriverError:
|
|
1696
|
-
# Provider API error (auth, rate limit, network) — return 502
|
|
1697
|
-
pass
|
|
1698
|
-
except ExtractionError:
|
|
1699
|
-
# JSON parsing/validation failed — return 422
|
|
1700
|
-
pass
|
|
1701
|
-
except ValidationError:
|
|
1702
|
-
# Schema validation failed — return 422
|
|
1703
|
-
pass
|
|
1704
|
-
```
|
|
1705
|
-
|
|
1706
|
-
## Extending Prompture
|
|
1707
|
-
|
|
1708
|
-
Prompture's provider registry is plugin-based. Every built-in provider
|
|
1709
|
-
(OpenAI, Claude, Google, etc.) is contributed by a `ProviderPlugin`
|
|
1710
|
-
instance registered in `prompture.plugins.builtins`. Third-party packages
|
|
1711
|
-
can register their own providers via the `prompture.providers` Python
|
|
1712
|
-
entry-point group — no fork required.
|
|
1713
|
-
|
|
1714
|
-
### Plugin Architecture
|
|
1715
|
-
|
|
1716
|
-
At import time, `prompture` discovers plugins from two sources:
|
|
1717
|
-
|
|
1718
|
-
1. **Built-in plugins** — loaded from `prompture.plugins.builtins` directly.
|
|
1719
|
-
2. **External plugins** — discovered through the `prompture.providers`
|
|
1720
|
-
entry-point group via `importlib.metadata.entry_points()`.
|
|
1721
|
-
|
|
1722
|
-
Each plugin returns one or more `ProviderDescriptor` instances. Prompture
|
|
1723
|
-
then wires them up to the LLM, audio, image, video, embedding, rerank,
|
|
1724
|
-
and moderation driver registries.
|
|
1725
|
-
|
|
1726
|
-
### Writing a Plugin
|
|
1727
|
-
|
|
1728
|
-
Create a Python file that subclasses `ProviderPlugin`:
|
|
1729
|
-
|
|
1730
|
-
```python
|
|
1731
|
-
# my_package/plugin.py
|
|
1732
|
-
from prompture.plugins import ProviderPlugin
|
|
1733
|
-
from prompture.drivers.provider_descriptors import (
|
|
1734
|
-
ProviderDescriptor,
|
|
1735
|
-
DriverSpec,
|
|
1736
|
-
)
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
class MyProviderPlugin(ProviderPlugin):
|
|
1740
|
-
name = "my_provider"
|
|
1741
|
-
version = "0.1.0"
|
|
1742
|
-
|
|
1743
|
-
def descriptors(self):
|
|
1744
|
-
return [
|
|
1745
|
-
ProviderDescriptor(
|
|
1746
|
-
name="my_provider",
|
|
1747
|
-
llm_sync=DriverSpec(
|
|
1748
|
-
cls_path="my_package.driver.MyDriver",
|
|
1749
|
-
kwarg_map={"api_key": "my_provider_api_key"},
|
|
1750
|
-
default_model="my-model-1",
|
|
1751
|
-
),
|
|
1752
|
-
display_name="My Provider",
|
|
1753
|
-
is_configured_check="my_provider_api_key",
|
|
1754
|
-
),
|
|
1755
|
-
]
|
|
1756
|
-
```
|
|
1757
|
-
|
|
1758
|
-
Then declare the entry point in your package's `pyproject.toml`:
|
|
1759
|
-
|
|
1760
|
-
```toml
|
|
1761
|
-
[project.entry-points."prompture.providers"]
|
|
1762
|
-
my_provider = "my_package.plugin:MyProviderPlugin"
|
|
1763
|
-
```
|
|
1764
|
-
|
|
1765
|
-
Once `pip install`-ed alongside Prompture, your provider becomes
|
|
1766
|
-
available automatically:
|
|
1767
|
-
|
|
1768
|
-
```python
|
|
1769
|
-
from prompture import get_driver_for_model
|
|
1770
|
-
|
|
1771
|
-
driver = get_driver_for_model("my_provider/my-model-1")
|
|
1772
|
-
```
|
|
1649
|
+
- **FastAPI integration patterns** (AsyncAgent + tools, SSE streaming, structured endpoints, error handling) — see [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md#integrating-prompture-into-your-project)
|
|
1650
|
+
- **Custom provider plugins** (architecture + a complete `ProviderPlugin` walkthrough) — see [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md#extending-prompture)
|
|
1773
1651
|
|
|
1774
1652
|
## Development
|
|
1775
1653
|
|