dashscope 1.27.2__tar.gz → 1.27.3__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.
- {dashscope-1.27.2 → dashscope-1.27.3}/PKG-INFO +30 -13
- {dashscope-1.27.2 → dashscope-1.27.3}/README.md +11 -5
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/__init__.py +6 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/repl.py +4 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/runners.py +4 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/tongyi.py +6 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/browser.py +3 -2
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/camera.py +2 -2
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/registry.py +1 -0
- dashscope-1.27.3/dashscope/acli/tools/vision.py +263 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/tui.py +5 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/transport.py +2 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/video_synthesis.py +25 -1
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/api_request_factory.py +5 -1
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/base_request.py +2 -1
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/__init__.py +3 -1
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/utils.py +18 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/__init__.py +10 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/version.py +1 -1
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/PKG-INFO +30 -13
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/SOURCES.txt +1 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/requires.txt +22 -7
- dashscope-1.27.3/requirements.txt +10 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/setup.py +20 -0
- dashscope-1.27.2/requirements.txt +0 -15
- {dashscope-1.27.2 → dashscope-1.27.3}/LICENSE +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/LICENSE.certifi +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/MANIFEST.in +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/NOTICE +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/__init__.pyi +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/__main__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/agent.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/agents/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/agents/delegate.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/agents/subagent.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/agents/subagents.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/audit.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/capabilities/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/capabilities/local_memory.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/completer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/constants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/dispatch.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/examples.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_capability.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_config.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_device.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_key.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_misc.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_profile.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_provider.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_session.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_setup.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/handlers_skill.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/mcp.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/multimodal.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/startup.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/cli/streaming.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/commands.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/compression.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/config.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/debuglog.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/deliverable.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/dev.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/eval/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/config.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/custom-extensions.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/hooks.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/skills/explain-code.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/skills/research-topic.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/skills/translate.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/skills/write-poem.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/.acli/system-prompt.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/basic-chat/README.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/config.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/custom-extensions.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/hooks.toml +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/agent.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/api-doc.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/cli.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/diagnose.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/error-code.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/explain-code.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/fine-tuning.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/multimodal.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/retrieval.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/sdk-example.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/speech.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/text-generation.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/skills/translate.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/.acli/system-prompt.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/examples/dashscope-sdk-expert/README.md +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/executor.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/extensions.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/hooks.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/mcp_server.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/mcp_stdio.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/directives_learning.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/experience.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/manager.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/plan.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/reflection.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/skill_evolution.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/tool_chains.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/memory/trace.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/permission.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/bailian/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/bailian/cli.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/bailian/mcp.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/base.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/local/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/local/history.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/platforms/local/memory.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/prompt.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/prompt_pipeline.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/adapter.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/anthropic.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/base.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/hardening.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/openai.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/providers/profile.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/sandbox.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/scheduler.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/sdk.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/session.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/session_events.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/skills/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/skills/base.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/skills/manager.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/skills/package.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/skills/store.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/checkpoint.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/evolution.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/filesystem.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/platform.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/session.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/shell.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/skills.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/tools/web_search.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/camera.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/embedded.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/tts.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/ui/voice.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/clipboard.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/crypto.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/exceptions.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/ids.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/images.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/keywords.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/messages.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/paths.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/sanitizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/spinner.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/template.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/text.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/toml.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/acli/utils/validation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/client.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/constants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/exceptions.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/pagination.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/_helpers.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/agents.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/deployments.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/environments.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/files.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/session_events.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/sessions.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/skills.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/resources/vaults.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/streaming.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/types/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/types/models.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/agentstudio/types/params.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/chat_completion.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/code_generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/conversation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/image_generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/image_synthesis.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/aigc/multimodal_conversation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/aio_session.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/aiohttp_request.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/api_request_data.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/chat_completion_types.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/dashscope_response.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/encryption.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/http_request.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/api_entities/websocket_request.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/app/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/app/application.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/app/application_response.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/assistants/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/assistants/assistant_types.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/assistants/assistants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/assistants/files.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/asr_phrase_manager.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/recognition.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/transcription.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/translation_recognizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/asr/vocabulary.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/http_tts/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/http_tts/http_speech_synthesizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_asr/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_asr/qwen_transcription.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_omni/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_omni/omni_realtime.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_tts/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_tts/speech_synthesizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_tts_realtime/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/qwen_tts_realtime/qwen_tts_realtime.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/tts/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/tts/speech_synthesizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/tts_v2/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/tts_v2/enrollment.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/audio/tts_v2/speech_synthesizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/__main__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/agentic_rl.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/application.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/auth.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/code_generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/common.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/deployments.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/embeddings.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/files.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/fine_tunes.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/image_generation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/image_synthesis.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/models.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/multimodal_conversation.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/multimodal_embedding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/oss.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/rerank.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/speech_synthesis.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/tokenization.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/transcription.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/understanding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/cli/video_synthesis.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/client/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/client/base_api.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/api_key.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/base_type.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/constants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/env.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/error.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/logging.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/common/message_manager.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/embeddings/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/embeddings/batch_text_embedding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/embeddings/batch_text_embedding_response.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/embeddings/multimodal_embedding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/embeddings/text_embedding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/files.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/agentic_rl.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/customize_types.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/deployments.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/finetunes.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/constants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/errors.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/log.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/model.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/model_types.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/common/utils.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/base_data_model.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/group_reward_input.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/group_reward_output.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/reward_input.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/reward_output.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/rollout_input.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/data/rollout_output.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/demo/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/demo/group_reward_processor_demo.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/demo/reward_processor_demo.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/demo/rollout_processor_demo.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/func_decorator.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/func_manager.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/_core.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/llm_dashscope.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/llm_openai.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/llm_span.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/messages.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/genai/tools.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/processor_span.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/observability/tracing.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/parser/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/parser/base_parser.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/parser/group_reward_parser.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/parser/reward_parser.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/parser/rollout_parser.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/processor/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/processor/abstract_group_reward_processor.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/processor/abstract_processor.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/processor/abstract_reward_processor.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/processor/abstract_rollout_processor.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/server/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/finetune/reinforcement/component/server/server.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/io/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/io/input_output.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/model.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/models.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/dialog_state.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/multimodal_constants.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/multimodal_dialog.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/multimodal_request_params.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/tingwu/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/tingwu/tingwu.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/multimodal/tingwu/tingwu_realtime.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/nlp/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/nlp/understanding.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/protocol/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/protocol/websocket.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/py.typed +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/rerank/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/rerank/text_rerank.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/resources/qwen.tiktoken +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/messages/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/messages/files.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/messages/messages.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/runs/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/runs/runs.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/runs/steps.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/thread_types.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/threads/threads.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/tokenizers/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/tokenizers/qwen_tokenizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/tokenizers/tokenization.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/tokenizers/tokenizer.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/tokenizers/tokenizer_base.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/utils/__init__.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/utils/message_utils.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/utils/oss_utils.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope/utils/param_utils.py +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/dependency_links.txt +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/entry_points.txt +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/not-zip-safe +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/dashscope.egg-info/top_level.txt +0 -0
- {dashscope-1.27.2 → dashscope-1.27.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dashscope
|
|
3
|
-
Version: 1.27.
|
|
3
|
+
Version: 1.27.3
|
|
4
4
|
Summary: dashscope client sdk library
|
|
5
5
|
Home-page: https://dashscope.aliyun.com/
|
|
6
6
|
Author: Alibaba Cloud
|
|
@@ -28,16 +28,16 @@ Requires-Dist: cryptography
|
|
|
28
28
|
Requires-Dist: certifi
|
|
29
29
|
Requires-Dist: typer>=0.9.0
|
|
30
30
|
Requires-Dist: rich>=13.0.0
|
|
31
|
-
Requires-Dist: httpx>=0.
|
|
31
|
+
Requires-Dist: httpx>=0.25.0
|
|
32
32
|
Requires-Dist: httpx-sse>=0.4.0
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: pydantic>=2.0
|
|
35
|
-
Requires-Dist: tenacity
|
|
36
|
-
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
37
|
-
Requires-Dist: PyYAML>=6.0
|
|
38
|
-
Requires-Dist: textual>=0.50
|
|
33
|
+
Requires-Dist: typing_extensions>=4.0
|
|
39
34
|
Provides-Extra: tokenizer
|
|
40
35
|
Requires-Dist: tiktoken; extra == "tokenizer"
|
|
36
|
+
Provides-Extra: acli
|
|
37
|
+
Requires-Dist: prompt-toolkit>=3.0; extra == "acli"
|
|
38
|
+
Requires-Dist: textual>=0.50; extra == "acli"
|
|
39
|
+
Requires-Dist: PyYAML>=6.0; extra == "acli"
|
|
40
|
+
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "acli"
|
|
41
41
|
Provides-Extra: acli-anthropic
|
|
42
42
|
Requires-Dist: anthropic>=0.40; extra == "acli-anthropic"
|
|
43
43
|
Provides-Extra: acli-openai
|
|
@@ -48,11 +48,22 @@ Requires-Dist: numpy>=1.20; extra == "acli-voice"
|
|
|
48
48
|
Provides-Extra: acli-camera
|
|
49
49
|
Requires-Dist: opencv-python>=4.5; extra == "acli-camera"
|
|
50
50
|
Provides-Extra: acli-all
|
|
51
|
+
Requires-Dist: prompt-toolkit>=3.0; extra == "acli-all"
|
|
52
|
+
Requires-Dist: textual>=0.50; extra == "acli-all"
|
|
53
|
+
Requires-Dist: PyYAML>=6.0; extra == "acli-all"
|
|
54
|
+
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "acli-all"
|
|
51
55
|
Requires-Dist: anthropic>=0.40; extra == "acli-all"
|
|
52
56
|
Requires-Dist: openai>=1.30; extra == "acli-all"
|
|
53
57
|
Requires-Dist: sounddevice>=0.4; extra == "acli-all"
|
|
54
58
|
Requires-Dist: numpy>=1.20; extra == "acli-all"
|
|
55
59
|
Requires-Dist: opencv-python>=4.5; extra == "acli-all"
|
|
60
|
+
Provides-Extra: rl
|
|
61
|
+
Requires-Dist: pydantic>=2.0; extra == "rl"
|
|
62
|
+
Requires-Dist: tenacity; extra == "rl"
|
|
63
|
+
Requires-Dist: PyYAML>=6.0; extra == "rl"
|
|
64
|
+
Requires-Dist: fastapi>=0.100; extra == "rl"
|
|
65
|
+
Requires-Dist: uvicorn>=0.20; extra == "rl"
|
|
66
|
+
Requires-Dist: opentelemetry-sdk>=1.20; extra == "rl"
|
|
56
67
|
Dynamic: author
|
|
57
68
|
Dynamic: author-email
|
|
58
69
|
Dynamic: classifier
|
|
@@ -69,6 +80,8 @@ Dynamic: summary
|
|
|
69
80
|
|
|
70
81
|
# DashScope Python SDK
|
|
71
82
|
|
|
83
|
+
> **English** | [中文](README_zh.md)
|
|
84
|
+
|
|
72
85
|
The DashScope Python SDK provides a comprehensive interface to [Alibaba Cloud Model Studio (Bailian)](https://www.alibabacloud.com/help/en/model-studio/) APIs, covering text generation, multi-modal understanding, embeddings, reranking, image/video generation, speech synthesis & recognition, and more.
|
|
73
86
|
|
|
74
87
|
## What is New
|
|
@@ -81,16 +94,20 @@ To install the DashScope Python SDK, simply run:
|
|
|
81
94
|
pip install dashscope
|
|
82
95
|
```
|
|
83
96
|
|
|
97
|
+
The base install covers SDK API calls and the `dashscope` CLI command.
|
|
98
|
+
Optional feature groups are available as extras:
|
|
99
|
+
|
|
100
|
+
| Extra | Provides | Install |
|
|
101
|
+
|-------|----------|---------|
|
|
102
|
+
| `acli` | Interactive AI assistant (DashScope SDK Expert) | `pip install "dashscope[acli]"` |
|
|
103
|
+
| `rl` | Agentic RL fine-tuning | `pip install "dashscope[rl]"` |
|
|
104
|
+
| `tokenizer` | Local tokenizer without downloads | `pip install "dashscope[tokenizer]"` |
|
|
105
|
+
|
|
84
106
|
If you clone the code from github, you can install from source by running:
|
|
85
107
|
```shell
|
|
86
108
|
pip install -e .
|
|
87
109
|
```
|
|
88
110
|
|
|
89
|
-
To use tokenizer in local mode without downloading any files, run:
|
|
90
|
-
```shell
|
|
91
|
-
pip install dashscope[tokenizer]
|
|
92
|
-
```
|
|
93
|
-
|
|
94
111
|
|
|
95
112
|
## Quick Start
|
|
96
113
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# DashScope Python SDK
|
|
2
2
|
|
|
3
|
+
> **English** | [中文](README_zh.md)
|
|
4
|
+
|
|
3
5
|
The DashScope Python SDK provides a comprehensive interface to [Alibaba Cloud Model Studio (Bailian)](https://www.alibabacloud.com/help/en/model-studio/) APIs, covering text generation, multi-modal understanding, embeddings, reranking, image/video generation, speech synthesis & recognition, and more.
|
|
4
6
|
|
|
5
7
|
## What is New
|
|
@@ -12,16 +14,20 @@ To install the DashScope Python SDK, simply run:
|
|
|
12
14
|
pip install dashscope
|
|
13
15
|
```
|
|
14
16
|
|
|
17
|
+
The base install covers SDK API calls and the `dashscope` CLI command.
|
|
18
|
+
Optional feature groups are available as extras:
|
|
19
|
+
|
|
20
|
+
| Extra | Provides | Install |
|
|
21
|
+
|-------|----------|---------|
|
|
22
|
+
| `acli` | Interactive AI assistant (DashScope SDK Expert) | `pip install "dashscope[acli]"` |
|
|
23
|
+
| `rl` | Agentic RL fine-tuning | `pip install "dashscope[rl]"` |
|
|
24
|
+
| `tokenizer` | Local tokenizer without downloads | `pip install "dashscope[tokenizer]"` |
|
|
25
|
+
|
|
15
26
|
If you clone the code from github, you can install from source by running:
|
|
16
27
|
```shell
|
|
17
28
|
pip install -e .
|
|
18
29
|
```
|
|
19
30
|
|
|
20
|
-
To use tokenizer in local mode without downloading any files, run:
|
|
21
|
-
```shell
|
|
22
|
-
pip install dashscope[tokenizer]
|
|
23
|
-
```
|
|
24
|
-
|
|
25
31
|
|
|
26
32
|
## Quick Start
|
|
27
33
|
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
|
+
import uuid
|
|
5
|
+
|
|
4
6
|
__version__ = "0.6.2"
|
|
5
7
|
|
|
8
|
+
# Per-process identifier sent as x-dashscope-sdk-session-id so the
|
|
9
|
+
# backend can group multi-turn requests from one CLI run.
|
|
10
|
+
SDK_SESSION_ID = uuid.uuid4().hex
|
|
11
|
+
|
|
6
12
|
# Expose the lightweight programmatic SDK at the package root.
|
|
7
13
|
try:
|
|
8
14
|
from dashscope.acli.sdk import (
|
|
@@ -195,6 +195,10 @@ async def _run_loop(config: Config):
|
|
|
195
195
|
get_mcp_clients_fn=lambda: _mcp_clients,
|
|
196
196
|
)
|
|
197
197
|
|
|
198
|
+
from dashscope.acli.tools.vision import register_vision_tools
|
|
199
|
+
|
|
200
|
+
register_vision_tools(config, get_provider_fn=get_provider)
|
|
201
|
+
|
|
198
202
|
from dashscope.acli.tools.evolution import register_evolution_tools
|
|
199
203
|
|
|
200
204
|
register_evolution_tools(get_agent=lambda: agent)
|
|
@@ -358,6 +358,10 @@ def _run_tui_mode(config: Config):
|
|
|
358
358
|
get_mcp_clients_fn=lambda: _mcp_clients,
|
|
359
359
|
)
|
|
360
360
|
|
|
361
|
+
from dashscope.acli.tools.vision import register_vision_tools
|
|
362
|
+
|
|
363
|
+
register_vision_tools(config, get_provider_fn=get_provider)
|
|
364
|
+
|
|
361
365
|
from dashscope.acli.tools.evolution import register_evolution_tools
|
|
362
366
|
|
|
363
367
|
register_evolution_tools(get_agent=lambda: agent)
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import json
|
|
6
|
+
import os
|
|
6
7
|
from typing import AsyncIterator
|
|
7
8
|
|
|
8
9
|
import httpx
|
|
9
10
|
|
|
11
|
+
from dashscope.acli import SDK_SESSION_ID, __version__
|
|
10
12
|
from dashscope.acli.providers.base import LLMChunk, LLMResponse, ToolCall
|
|
11
13
|
|
|
12
14
|
DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
|
@@ -123,6 +125,10 @@ class TongyiProvider:
|
|
|
123
125
|
headers = {"Content-Type": "application/json"}
|
|
124
126
|
if self.api_key:
|
|
125
127
|
headers["Authorization"] = f"Bearer {self.api_key}"
|
|
128
|
+
if not os.environ.get("DASHSCOPE_DISABLE_SDK_HEADERS"):
|
|
129
|
+
headers["x-dashscope-sdk-client"] = "acli"
|
|
130
|
+
headers["x-dashscope-sdk-version"] = __version__
|
|
131
|
+
headers["x-dashscope-sdk-session-id"] = SDK_SESSION_ID
|
|
126
132
|
return headers
|
|
127
133
|
|
|
128
134
|
async def chat(
|
|
@@ -488,6 +488,7 @@ async def scrape_web_screenshot(
|
|
|
488
488
|
return f"Error: screenshot failed — {e}"
|
|
489
489
|
|
|
490
490
|
return (
|
|
491
|
-
f"Screenshot saved to {output_path}.
|
|
492
|
-
f"to
|
|
491
|
+
f"Screenshot saved to {output_path}. Call the view_image tool "
|
|
492
|
+
f"with this path to analyze it (the user can also attach it "
|
|
493
|
+
f"via @path)."
|
|
493
494
|
)
|
|
@@ -11,8 +11,8 @@ from dashscope.acli.tools.registry import PermissionLevel, tool
|
|
|
11
11
|
name="camera_capture",
|
|
12
12
|
description=(
|
|
13
13
|
"Take a photo with the webcam and save it to the given path. "
|
|
14
|
-
"The
|
|
15
|
-
"
|
|
14
|
+
"The photo can then be analyzed with the view_image tool (the "
|
|
15
|
+
"user can also attach it via @path)."
|
|
16
16
|
),
|
|
17
17
|
permission=PermissionLevel.CONFIRM,
|
|
18
18
|
)
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Built-in vision tool — let the agent analyze local images itself.
|
|
3
|
+
|
|
4
|
+
Previously the only multimodal entry point was user-input ``@path``
|
|
5
|
+
expansion, so after ``scrape_web_screenshot`` / ``camera_capture`` the
|
|
6
|
+
model could not see the saved image and sometimes echoed the
|
|
7
|
+
user-facing ``@path`` hint verbatim, ending the turn prematurely.
|
|
8
|
+
``view_image`` closes that gap by routing the image to a
|
|
9
|
+
vision-capable model on the active provider.
|
|
10
|
+
|
|
11
|
+
Very tall/wide images (e.g. a long announcement table) get downscaled
|
|
12
|
+
or truncated by vision-model backends until text is illegible, so
|
|
13
|
+
``view_image`` auto-slices them with Pillow (when installed) and runs
|
|
14
|
+
one vision call per slice. Without Pillow it falls back to sending the
|
|
15
|
+
whole image as-is.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import asyncio
|
|
21
|
+
import base64
|
|
22
|
+
import io
|
|
23
|
+
import math
|
|
24
|
+
from typing import Callable
|
|
25
|
+
|
|
26
|
+
from dashscope.acli.config import Config, is_vision_model
|
|
27
|
+
from dashscope.acli.tools.registry import (
|
|
28
|
+
PermissionLevel,
|
|
29
|
+
ToolDefinition,
|
|
30
|
+
registry,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
_FALLBACK_VISION_MODELS = {
|
|
34
|
+
"tongyi": "qwen-vl-max",
|
|
35
|
+
"openai": "gpt-4o",
|
|
36
|
+
"anthropic": "claude-sonnet-4-20250514",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
# Slicing triggers: beyond these the model backend downscales or
|
|
40
|
+
# truncates the image and fine text becomes unreadable.
|
|
41
|
+
_SLICE_MAX_LONG_SIDE = 8000
|
|
42
|
+
_SLICE_MAX_RATIO = 4.0
|
|
43
|
+
_SLICE_STEP = 2000
|
|
44
|
+
_SLICE_OVERLAP = 100
|
|
45
|
+
_SLICE_MAX_COUNT = 32
|
|
46
|
+
_SLICE_JPEG_QUALITY = 88
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def pick_vision_model(config: Config) -> str:
|
|
50
|
+
"""Choose a vision-capable model on the active provider.
|
|
51
|
+
|
|
52
|
+
Preference: the active model when it accepts images, then the first
|
|
53
|
+
vision model declared on the provider's extension block, then a
|
|
54
|
+
per-provider built-in fallback.
|
|
55
|
+
"""
|
|
56
|
+
if is_vision_model(config.model):
|
|
57
|
+
return config.model
|
|
58
|
+
|
|
59
|
+
from dashscope.acli.extensions import find_provider
|
|
60
|
+
|
|
61
|
+
ext = find_provider(config.provider)
|
|
62
|
+
if ext and ext.vision_models:
|
|
63
|
+
return ext.vision_models[0]
|
|
64
|
+
return _FALLBACK_VISION_MODELS.get(config.provider, "qwen-vl-max")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def plan_slices(width: int, height: int):
|
|
68
|
+
"""Return crop boxes for an oversized image, or None if it fits.
|
|
69
|
+
|
|
70
|
+
Slices run along the long axis with a small overlap so rows cut at
|
|
71
|
+
a box boundary still appear complete in one of the two neighbors.
|
|
72
|
+
"""
|
|
73
|
+
long_side = max(width, height)
|
|
74
|
+
short_side = max(min(width, height), 1)
|
|
75
|
+
if (
|
|
76
|
+
long_side <= _SLICE_MAX_LONG_SIDE
|
|
77
|
+
and long_side / short_side <= _SLICE_MAX_RATIO
|
|
78
|
+
):
|
|
79
|
+
return None
|
|
80
|
+
|
|
81
|
+
step = _SLICE_STEP
|
|
82
|
+
overlap = _SLICE_OVERLAP
|
|
83
|
+
count = math.ceil((long_side - overlap) / (step - overlap))
|
|
84
|
+
if count > _SLICE_MAX_COUNT:
|
|
85
|
+
# Re-derive a coarser step; drop the overlap so the cap holds.
|
|
86
|
+
step = math.ceil(long_side / _SLICE_MAX_COUNT)
|
|
87
|
+
overlap = 0
|
|
88
|
+
|
|
89
|
+
boxes = []
|
|
90
|
+
if height >= width:
|
|
91
|
+
y = 0
|
|
92
|
+
while y < height:
|
|
93
|
+
y2 = min(y + step, height)
|
|
94
|
+
boxes.append((0, y, width, y2))
|
|
95
|
+
if y2 == height:
|
|
96
|
+
break
|
|
97
|
+
y = y2 - overlap
|
|
98
|
+
else:
|
|
99
|
+
x = 0
|
|
100
|
+
while x < width:
|
|
101
|
+
x2 = min(x + step, width)
|
|
102
|
+
boxes.append((x, 0, x2, height))
|
|
103
|
+
if x2 == width:
|
|
104
|
+
break
|
|
105
|
+
x = x2 - overlap
|
|
106
|
+
return boxes
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def _slice_data_urls(image, boxes) -> list:
|
|
110
|
+
"""Crop ``boxes`` out of a PIL image, JPEG-encode as data URLs."""
|
|
111
|
+
urls = []
|
|
112
|
+
for box in boxes:
|
|
113
|
+
crop = image.crop(box)
|
|
114
|
+
if crop.mode not in ("RGB", "L"):
|
|
115
|
+
crop = crop.convert("RGB")
|
|
116
|
+
buf = io.BytesIO()
|
|
117
|
+
crop.save(buf, format="JPEG", quality=_SLICE_JPEG_QUALITY)
|
|
118
|
+
b64 = base64.b64encode(buf.getvalue()).decode()
|
|
119
|
+
urls.append(f"data:image/jpeg;base64,{b64}")
|
|
120
|
+
return urls
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
async def _ask_vision(provider, data_url: str, text: str) -> str:
|
|
124
|
+
messages = [
|
|
125
|
+
{
|
|
126
|
+
"role": "user",
|
|
127
|
+
"content": [
|
|
128
|
+
{"type": "text", "text": text},
|
|
129
|
+
{"type": "image_url", "image_url": {"url": data_url}},
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
]
|
|
133
|
+
response = await provider.chat(messages)
|
|
134
|
+
return response.content or "(vision model returned no content)"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def register_vision_tools(config: Config, *, get_provider_fn: Callable):
|
|
138
|
+
"""Register ``view_image``; called once after agent construction."""
|
|
139
|
+
|
|
140
|
+
async def view_image(
|
|
141
|
+
image_path: str,
|
|
142
|
+
question: str = (
|
|
143
|
+
"Describe this image in detail. If it contains text or "
|
|
144
|
+
"tables, transcribe them verbatim."
|
|
145
|
+
),
|
|
146
|
+
slice_mode: str = "auto",
|
|
147
|
+
) -> str:
|
|
148
|
+
from dashscope.acli.utils.paths import validate_path
|
|
149
|
+
|
|
150
|
+
try:
|
|
151
|
+
safe_path = validate_path(image_path)
|
|
152
|
+
except (ValueError, OSError) as e:
|
|
153
|
+
return f"Error: failed to read image: {e}"
|
|
154
|
+
|
|
155
|
+
model = pick_vision_model(config)
|
|
156
|
+
provider = get_provider_fn(
|
|
157
|
+
config.provider,
|
|
158
|
+
model,
|
|
159
|
+
config.api_key,
|
|
160
|
+
base_url=config.base_url or None,
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
boxes = None
|
|
164
|
+
image = None
|
|
165
|
+
if slice_mode != "never":
|
|
166
|
+
try:
|
|
167
|
+
from PIL import Image
|
|
168
|
+
|
|
169
|
+
image = Image.open(safe_path)
|
|
170
|
+
image.load()
|
|
171
|
+
boxes = plan_slices(*image.size)
|
|
172
|
+
except Exception: # pylint: disable=broad-except
|
|
173
|
+
# No Pillow, or not a decodable image: fall back to the
|
|
174
|
+
# whole-image path and let it report the real error.
|
|
175
|
+
boxes = None
|
|
176
|
+
image = None
|
|
177
|
+
|
|
178
|
+
if boxes:
|
|
179
|
+
axis = (
|
|
180
|
+
"top-to-bottom"
|
|
181
|
+
if image.height >= image.width
|
|
182
|
+
else ("left-to-right")
|
|
183
|
+
)
|
|
184
|
+
urls = _slice_data_urls(image, boxes)
|
|
185
|
+
image.close()
|
|
186
|
+
total = len(urls)
|
|
187
|
+
tasks = [
|
|
188
|
+
_ask_vision(
|
|
189
|
+
provider,
|
|
190
|
+
url,
|
|
191
|
+
(
|
|
192
|
+
f"Slice {i + 1}/{total} ({axis}) of one large "
|
|
193
|
+
"image. " + question
|
|
194
|
+
),
|
|
195
|
+
)
|
|
196
|
+
for i, url in enumerate(urls)
|
|
197
|
+
]
|
|
198
|
+
results = await asyncio.gather(*tasks, return_exceptions=True)
|
|
199
|
+
parts = [
|
|
200
|
+
f"(Image auto-split into {total} slices {axis}; "
|
|
201
|
+
"results per slice below.)",
|
|
202
|
+
]
|
|
203
|
+
for i, r in enumerate(results, start=1):
|
|
204
|
+
if isinstance(r, BaseException):
|
|
205
|
+
parts.append(f"--- slice {i}/{total} ---\nError: {r}")
|
|
206
|
+
else:
|
|
207
|
+
parts.append(f"--- slice {i}/{total} ---\n{r}")
|
|
208
|
+
return "\n\n".join(parts)
|
|
209
|
+
|
|
210
|
+
try:
|
|
211
|
+
from dashscope.acli.utils.images import image_to_data_url
|
|
212
|
+
|
|
213
|
+
data_url = image_to_data_url(safe_path)
|
|
214
|
+
except (ValueError, OSError) as e:
|
|
215
|
+
return f"Error: failed to read image: {e}"
|
|
216
|
+
try:
|
|
217
|
+
return await _ask_vision(provider, data_url, question)
|
|
218
|
+
except Exception as e: # pylint: disable=broad-except
|
|
219
|
+
return f"Error: vision call failed: {e}"
|
|
220
|
+
|
|
221
|
+
registry.register(
|
|
222
|
+
ToolDefinition(
|
|
223
|
+
name="view_image",
|
|
224
|
+
description=(
|
|
225
|
+
"Analyze a local image file (screenshot, photo, chart) "
|
|
226
|
+
"with a vision model: OCR/transcribe text, describe "
|
|
227
|
+
"layout or content. Very tall/wide images are split "
|
|
228
|
+
"automatically. Use after scrape_web_screenshot or "
|
|
229
|
+
"camera_capture, or whenever you need to read an image."
|
|
230
|
+
),
|
|
231
|
+
permission=PermissionLevel.AUTO,
|
|
232
|
+
func=view_image,
|
|
233
|
+
parameters={
|
|
234
|
+
"type": "object",
|
|
235
|
+
"properties": {
|
|
236
|
+
"image_path": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"description": (
|
|
239
|
+
"Path to the image file (relative to the "
|
|
240
|
+
"workspace or absolute)"
|
|
241
|
+
),
|
|
242
|
+
},
|
|
243
|
+
"question": {
|
|
244
|
+
"type": "string",
|
|
245
|
+
"description": (
|
|
246
|
+
"What to extract from the image; defaults "
|
|
247
|
+
"to a full description + verbatim OCR"
|
|
248
|
+
),
|
|
249
|
+
},
|
|
250
|
+
"slice_mode": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"enum": ["auto", "never"],
|
|
253
|
+
"description": (
|
|
254
|
+
"auto (default): split oversized images "
|
|
255
|
+
"into slices; never: always send the whole "
|
|
256
|
+
"image in one call"
|
|
257
|
+
),
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
"required": ["image_path"],
|
|
261
|
+
},
|
|
262
|
+
),
|
|
263
|
+
)
|
|
@@ -2651,6 +2651,11 @@ class AgenticCLIApp(App):
|
|
|
2651
2651
|
except Exception as e:
|
|
2652
2652
|
output.write(Text(f"Error: {e}", style="red"))
|
|
2653
2653
|
|
|
2654
|
+
# Commands like /model switch the model inside the executor
|
|
2655
|
+
# thread, after the post-submission hint refresh already ran;
|
|
2656
|
+
# re-read agent.model_name so the status line is current.
|
|
2657
|
+
self._refresh_hint_label()
|
|
2658
|
+
|
|
2654
2659
|
try:
|
|
2655
2660
|
input_widget = self.query_one("#command-input", CommandInput)
|
|
2656
2661
|
input_widget.focus()
|
|
@@ -32,6 +32,7 @@ from dashscope.agentstudio.constants import (
|
|
|
32
32
|
AGENTSTUDIO_DEFAULT_TIMEOUT,
|
|
33
33
|
AGENTSTUDIO_MAX_RETRIES,
|
|
34
34
|
)
|
|
35
|
+
from dashscope.common.utils import get_sdk_headers
|
|
35
36
|
|
|
36
37
|
logger = logging.getLogger("dashscope.agentstudio")
|
|
37
38
|
|
|
@@ -229,6 +230,7 @@ def build_headers(
|
|
|
229
230
|
HEADER_AUTHORIZATION: f"Bearer {api_key}",
|
|
230
231
|
HEADER_USER_AGENT: user_agent,
|
|
231
232
|
}
|
|
233
|
+
headers.update(get_sdk_headers())
|
|
232
234
|
if json_body:
|
|
233
235
|
headers["Content-Type"] = "application/json"
|
|
234
236
|
headers["Accept"] = "application/json"
|
|
@@ -47,9 +47,12 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
47
47
|
REFERENCE_IMAGE = "reference_image"
|
|
48
48
|
REFERENCE_VIDEO = "reference_video"
|
|
49
49
|
REFERENCE_VOICE = "reference_voice"
|
|
50
|
+
REFERENCE_AUDIO = "reference_audio"
|
|
50
51
|
VIDEO = "video"
|
|
51
52
|
FIRST_CLIP = "first_clip"
|
|
52
53
|
DRIVING_AUDIO = "driving_audio"
|
|
54
|
+
FILE = "file"
|
|
55
|
+
LINK = "link"
|
|
53
56
|
|
|
54
57
|
@classmethod
|
|
55
58
|
def call( # type: ignore[override]
|
|
@@ -84,6 +87,7 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
84
87
|
ratio: Optional[str] = None,
|
|
85
88
|
shot_type: Optional[str] = None,
|
|
86
89
|
audio_setting: Optional[str] = None,
|
|
90
|
+
enable_thinking: Optional[bool] = None,
|
|
87
91
|
**kwargs,
|
|
88
92
|
) -> VideoSynthesisResponse:
|
|
89
93
|
"""Call video synthesis service and get result.
|
|
@@ -126,6 +130,7 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
126
130
|
shot_type (str, optional): Shot type for video generation.
|
|
127
131
|
audio_setting (str, optional): Audio setting for video,
|
|
128
132
|
"auto" or "origin".
|
|
133
|
+
enable_thinking (bool, optional): Whether to use Agentic PE.
|
|
129
134
|
**kwargs: Additional parameters passed to the API.
|
|
130
135
|
|
|
131
136
|
Raises:
|
|
@@ -152,6 +157,8 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
152
157
|
kwargs["shot_type"] = shot_type
|
|
153
158
|
if audio_setting is not None:
|
|
154
159
|
kwargs["audio_setting"] = audio_setting
|
|
160
|
+
if enable_thinking is not None:
|
|
161
|
+
kwargs["enable_thinking"] = enable_thinking
|
|
155
162
|
return super().call( # type: ignore[return-value]
|
|
156
163
|
model,
|
|
157
164
|
prompt,
|
|
@@ -263,7 +270,8 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
263
270
|
if media:
|
|
264
271
|
for i, m_file in enumerate(media):
|
|
265
272
|
if isinstance(m_file, dict):
|
|
266
|
-
|
|
273
|
+
# exclude when media is a link
|
|
274
|
+
if m_file.get("url") and m_file.get("type") != "link":
|
|
267
275
|
tasks.append(
|
|
268
276
|
{
|
|
269
277
|
"type": "media",
|
|
@@ -397,6 +405,7 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
397
405
|
ratio: Optional[str] = None,
|
|
398
406
|
shot_type: Optional[str] = None,
|
|
399
407
|
audio_setting: Optional[str] = None,
|
|
408
|
+
enable_thinking: Optional[bool] = None,
|
|
400
409
|
**kwargs,
|
|
401
410
|
) -> VideoSynthesisResponse:
|
|
402
411
|
"""Create a video synthesis task, and return task information.
|
|
@@ -435,6 +444,7 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
435
444
|
shot_type (str, optional): Shot type for video generation.
|
|
436
445
|
audio_setting (str, optional): Audio setting for video,
|
|
437
446
|
"auto" or "origin".
|
|
447
|
+
enable_thinking (bool, optional): Whether to use Agentic PE.
|
|
438
448
|
**kwargs: Additional parameters passed to the API.
|
|
439
449
|
|
|
440
450
|
Raises:
|
|
@@ -462,6 +472,8 @@ class VideoSynthesis(BaseAsyncApi):
|
|
|
462
472
|
kwargs["shot_type"] = shot_type
|
|
463
473
|
if audio_setting is not None:
|
|
464
474
|
kwargs["audio_setting"] = audio_setting
|
|
475
|
+
if enable_thinking is not None:
|
|
476
|
+
kwargs["enable_thinking"] = enable_thinking
|
|
465
477
|
task_group, function = _get_task_group_and_task(__name__)
|
|
466
478
|
|
|
467
479
|
inputs, kwargs, task = cls._get_input(
|
|
@@ -656,6 +668,7 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
656
668
|
ratio: str = None,
|
|
657
669
|
shot_type: str = None,
|
|
658
670
|
audio_setting: str = None,
|
|
671
|
+
enable_thinking: bool = None,
|
|
659
672
|
**kwargs,
|
|
660
673
|
) -> VideoSynthesisResponse:
|
|
661
674
|
"""Call video synthesis service and get result.
|
|
@@ -694,6 +707,7 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
694
707
|
shot_type (str, optional): Shot type for video generation.
|
|
695
708
|
audio_setting (str, optional): Audio setting for video,
|
|
696
709
|
"auto" or "origin".
|
|
710
|
+
enable_thinking (bool, optional): Whether to use Agentic PE.
|
|
697
711
|
**kwargs: Additional parameters passed to the API.
|
|
698
712
|
|
|
699
713
|
Raises:
|
|
@@ -720,6 +734,8 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
720
734
|
kwargs["shot_type"] = shot_type
|
|
721
735
|
if audio_setting is not None:
|
|
722
736
|
kwargs["audio_setting"] = audio_setting
|
|
737
|
+
if enable_thinking is not None:
|
|
738
|
+
kwargs["enable_thinking"] = enable_thinking
|
|
723
739
|
task_group, f = _get_task_group_and_task(__name__)
|
|
724
740
|
# pylint: disable=protected-access
|
|
725
741
|
inputs, kwargs, task = VideoSynthesis._get_input(
|
|
@@ -792,6 +808,8 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
792
808
|
resolution: str = None,
|
|
793
809
|
ratio: str = None,
|
|
794
810
|
shot_type: str = None,
|
|
811
|
+
audio_setting: str = None,
|
|
812
|
+
enable_thinking: bool = None,
|
|
795
813
|
**kwargs,
|
|
796
814
|
) -> VideoSynthesisResponse:
|
|
797
815
|
"""Create a video synthesis task, and return task information.
|
|
@@ -828,6 +846,8 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
828
846
|
resolution (str, optional): Output resolution.
|
|
829
847
|
ratio (str, optional): Aspect ratio, e.g. "16:9".
|
|
830
848
|
shot_type (str, optional): Shot type for video generation.
|
|
849
|
+
enable_thinking (bool, optional): Whether to use Agentic PE.
|
|
850
|
+
audio_setting (str, optional): Audio setting for video,
|
|
831
851
|
**kwargs: Additional parameters passed to the API.
|
|
832
852
|
|
|
833
853
|
Raises:
|
|
@@ -853,6 +873,10 @@ class AioVideoSynthesis(BaseAsyncAioApi):
|
|
|
853
873
|
kwargs["ratio"] = ratio
|
|
854
874
|
if shot_type is not None:
|
|
855
875
|
kwargs["shot_type"] = shot_type
|
|
876
|
+
if audio_setting is not None:
|
|
877
|
+
kwargs["audio_setting"] = audio_setting
|
|
878
|
+
if enable_thinking is not None:
|
|
879
|
+
kwargs["enable_thinking"] = enable_thinking
|
|
856
880
|
task_group, function = _get_task_group_and_task(__name__)
|
|
857
881
|
|
|
858
882
|
# pylint: disable=protected-access
|
|
@@ -18,6 +18,7 @@ from dashscope.common.constants import (
|
|
|
18
18
|
)
|
|
19
19
|
from dashscope.common.error import InputDataRequired, UnsupportedApiProtocol
|
|
20
20
|
from dashscope.common.logging import logger
|
|
21
|
+
from dashscope.common.utils import get_sdk_headers
|
|
21
22
|
from dashscope.protocol.websocket import WebsocketStreamingMode
|
|
22
23
|
|
|
23
24
|
|
|
@@ -191,8 +192,11 @@ def _build_api_request( # pylint: disable=too-many-branches
|
|
|
191
192
|
"websocket]",
|
|
192
193
|
)
|
|
193
194
|
|
|
195
|
+
merged_headers = dict(get_sdk_headers())
|
|
194
196
|
if headers is not None:
|
|
195
|
-
|
|
197
|
+
merged_headers.update(headers)
|
|
198
|
+
if merged_headers:
|
|
199
|
+
request.add_headers(headers=merged_headers)
|
|
196
200
|
|
|
197
201
|
if input is None and form is None:
|
|
198
202
|
raise InputDataRequired("There is no input data and form data")
|
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
|
|
7
7
|
from dashscope.common.constants import DASHSCOPE_DISABLE_DATA_INSPECTION_ENV
|
|
8
|
-
from dashscope.common.utils import get_user_agent
|
|
8
|
+
from dashscope.common.utils import get_sdk_headers, get_user_agent
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class BaseRequest(ABC):
|
|
@@ -17,6 +17,7 @@ class BaseRequest(ABC):
|
|
|
17
17
|
ua += "; " + user_agent
|
|
18
18
|
|
|
19
19
|
self.headers = {"user-agent": ua}
|
|
20
|
+
self.headers.update(get_sdk_headers())
|
|
20
21
|
disable_data_inspection = os.environ.get(
|
|
21
22
|
DASHSCOPE_DISABLE_DATA_INSPECTION_ENV,
|
|
22
23
|
"true",
|