clarifai 11.7.5__tar.gz → 11.7.5rc1__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.
- {clarifai-11.7.5/clarifai.egg-info → clarifai-11.7.5rc1}/PKG-INFO +1 -1
- clarifai-11.7.5rc1/clarifai/__init__.py +1 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/errors.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/errors.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/versions.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/__pycache__/versions.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/compute_cluster.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/compute_cluster.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/deployment.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/deployment.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/model.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/nodepool.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/nodepool.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/pipeline.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/__pycache__/pipeline_step.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/base.py +2 -2
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/model.py +261 -139
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/pipeline.py +31 -11
- clarifai-11.7.5rc1/clarifai/cli/templates/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/cli/templates/__pycache__/pipeline_templates.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/templates/pipeline_templates.py +34 -28
- clarifai-11.7.5rc1/clarifai/client/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/app.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/app.cpython-312.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/compute_cluster.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/dataset.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/dataset.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/deployment.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/deployment.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/input.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/input.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/lister.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/lister.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/model.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/model_client.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/model_client.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/module.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/nodepool.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/pipeline.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/pipeline_step.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/runner.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/user.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/__pycache__/workflow.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/helper.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/helper.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/register.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/register.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/stub.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/client/auth/__pycache__/stub.cpython-39.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/pipeline.py +20 -4
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/user.py +172 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/dataset.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/dataset.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/input.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/input.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/model.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/model.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/rag.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/constants/__pycache__/workflow.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/export/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/export/__pycache__/inputs_annotations.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/export/__pycache__/inputs_annotations.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/base.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/base.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/features.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/features.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/image.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/image.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/multimodal.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/multimodal.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/text.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/text.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/utils.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/__pycache__/utils.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/loaders/__pycache__/coco_detection.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/datasets/upload/loaders/__pycache__/imagenet_classification.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/rag/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/rag/__pycache__/rag.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/rag/__pycache__/utils.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/dummy_openai_model.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/mcp_class.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_builder.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_builder.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_class.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_run_locally.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_runner.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/model_servicer.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/models/__pycache__/openai_class.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/model_builder.py +274 -10
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/model_runner.py +93 -76
- clarifai-11.7.5rc1/clarifai/runners/pipeline_steps/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/pipeline_steps/__pycache__/pipeline_step_builder.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/pipeline_steps/pipeline_step_builder.py +10 -1
- clarifai-11.7.5rc1/clarifai/runners/pipelines/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/pipelines/__pycache__/pipeline_builder.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/server.py +1 -1
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/code_script.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/code_script.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/const.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/data_utils.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/loader.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/method_signatures.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/model_utils.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/openai_convertor.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/pipeline_validation.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/serializers.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/__pycache__/url_fetcher.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/data_types/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/data_types/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/data_types/__pycache__/data_types.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/runners/utils/data_types/__pycache__/data_types.cpython-39.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/loader.py +24 -4
- clarifai-11.7.5rc1/clarifai/schema/__pycache__/search.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/urls/__pycache__/helper.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/urls/__pycache__/helper.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/cli.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/cli.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/config.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/config.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/constants.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/constants.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/logging.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/logging.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/misc.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/misc.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/model_train.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/protobuf.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/protobuf.cpython-39.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/__pycache__/secrets.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/evaluation/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/evaluation/__pycache__/helpers.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/evaluation/__pycache__/main.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/utils/evaluation/__pycache__/testset_annotation_parser.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/misc.py +20 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/secrets.py +96 -1
- clarifai-11.7.5rc1/clarifai/workflows/__pycache__/__init__.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/workflows/__pycache__/export.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/workflows/__pycache__/utils.cpython-311.pyc +0 -0
- clarifai-11.7.5rc1/clarifai/workflows/__pycache__/validate.cpython-311.pyc +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1/clarifai.egg-info}/PKG-INFO +1 -1
- clarifai-11.7.5rc1/clarifai.egg-info/SOURCES.txt +309 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_pipeline_client.py +66 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_secrets.py +206 -0
- clarifai-11.7.5/clarifai/__init__.py +0 -1
- clarifai-11.7.5/clarifai.egg-info/SOURCES.txt +0 -150
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/LICENSE +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/MANIFEST.in +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/README.md +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/README.md +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/__main__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/compute_cluster.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/deployment.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/nodepool.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/pipeline_step.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/templates/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/templates/model_templates.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli/templates/pipeline_step_templates.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/cli.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/app.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/auth/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/auth/helper.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/auth/register.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/auth/stub.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/base.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/compute_cluster.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/dataset.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/deployment.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/input.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/lister.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/model.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/model_client.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/module.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/nodepool.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/pipeline_step.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/runner.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/search.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/client/workflow.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/base.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/dataset.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/input.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/model.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/rag.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/search.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/constants/workflow.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/export/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/export/inputs_annotations.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/base.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/features.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/image.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/README.md +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/loaders/xview_detection.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/multimodal.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/text.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/datasets/upload/utils.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/errors.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/models/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/models/api.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/modules/README.md +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/modules/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/modules/css.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/modules/pages.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/modules/style.css +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/rag/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/rag/rag.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/rag/utils.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/dockerfile_template/Dockerfile.template +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/dummy_openai_model.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/mcp_class.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/model_class.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/model_run_locally.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/model_servicer.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/openai_class.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/visual_classifier_class.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/models/visual_detector_class.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/pipeline_steps/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/pipelines/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/pipelines/pipeline_builder.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/code_script.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/const.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/data_types/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/data_types/data_types.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/data_utils.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/method_signatures.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/model_utils.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/openai_convertor.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/pipeline_validation.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/serializers.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/runners/utils/url_fetcher.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/schema/search.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/urls/helper.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/cli.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/config.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/constants.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/evaluation/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/evaluation/helpers.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/evaluation/main.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/evaluation/testset_annotation_parser.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/logging.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/model_train.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/utils/protobuf.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/versions.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/workflows/__init__.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/workflows/export.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/workflows/utils.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai/workflows/validate.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai.egg-info/dependency_links.txt +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai.egg-info/entry_points.txt +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai.egg-info/requires.txt +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/clarifai.egg-info/top_level.txt +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/pyproject.toml +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/requirements.txt +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/setup.cfg +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/setup.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_app.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_async_stub.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_auth.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_data_upload.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_eval.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_list_models.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_misc.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_model_predict.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_model_train.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_modules.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_rag.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_search.py +0 -0
- {clarifai-11.7.5 → clarifai-11.7.5rc1}/tests/test_stub.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "11.7.5rc1"
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -304,8 +304,8 @@ def view(ctx, output_format):
|
|
304
304
|
def run(ctx, script, context=None):
|
305
305
|
"""Execute a script with the current context's environment"""
|
306
306
|
context = ctx.obj.current if not context else context
|
307
|
-
cmd = f'CLARIFAI_USER_ID={context.user_id} CLARIFAI_API_BASE={context.
|
308
|
-
cmd += ' '.join([f'{k}={v}' for k, v in context.
|
307
|
+
cmd = f'CLARIFAI_USER_ID={context.user_id} CLARIFAI_API_BASE={context.api_base} CLARIFAI_PAT={context.pat} '
|
308
|
+
cmd += ' '.join([f'{k}={v}' for k, v in context.to_serializable_dict().items()])
|
309
309
|
cmd += f' {script}'
|
310
310
|
os.system(cmd)
|
311
311
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import json
|
1
2
|
import os
|
2
3
|
import shutil
|
3
4
|
import tempfile
|
@@ -25,7 +26,12 @@ from clarifai.utils.constants import (
|
|
25
26
|
DEFAULT_OLLAMA_MODEL_REPO_BRANCH,
|
26
27
|
)
|
27
28
|
from clarifai.utils.logging import logger
|
28
|
-
from clarifai.utils.misc import
|
29
|
+
from clarifai.utils.misc import (
|
30
|
+
GitHubDownloader,
|
31
|
+
clone_github_repo,
|
32
|
+
format_github_repo_url,
|
33
|
+
get_list_of_files_to_download,
|
34
|
+
)
|
29
35
|
|
30
36
|
|
31
37
|
@cli.group(
|
@@ -150,16 +156,27 @@ def init(
|
|
150
156
|
branch = DEFAULT_OLLAMA_MODEL_REPO_BRANCH
|
151
157
|
|
152
158
|
if github_url:
|
159
|
+
downloader = GitHubDownloader(
|
160
|
+
max_retries=3,
|
161
|
+
github_token=github_pat,
|
162
|
+
)
|
163
|
+
if toolkit:
|
164
|
+
owner, repo, _, folder_path = downloader.parse_github_url(url=github_url)
|
165
|
+
else:
|
166
|
+
owner, repo, branch, folder_path = downloader.parse_github_url(url=github_url)
|
167
|
+
logger.info(
|
168
|
+
f"Parsed GitHub repository: owner={owner}, repo={repo}, branch={branch}, folder_path={folder_path}"
|
169
|
+
)
|
170
|
+
files_to_download = get_list_of_files_to_download(
|
171
|
+
downloader, owner, repo, folder_path, branch, []
|
172
|
+
)
|
173
|
+
for i, file in enumerate(files_to_download):
|
174
|
+
files_to_download[i] = f"{i + 1}. {file}"
|
175
|
+
files_to_download = '\n'.join(files_to_download)
|
176
|
+
logger.info(f"Files to be downloaded are:\n{files_to_download}")
|
177
|
+
input("Press Enter to continue...")
|
153
178
|
if not toolkit:
|
154
|
-
owner, repo, branch, folder_path = GitHubDownloader().parse_github_url(url=github_url)
|
155
|
-
logger.info(
|
156
|
-
f"Parsed GitHub repository: owner={owner}, repo={repo}, branch={branch}, folder_path={folder_path}"
|
157
|
-
)
|
158
179
|
if folder_path != "":
|
159
|
-
downloader = GitHubDownloader(
|
160
|
-
max_retries=3,
|
161
|
-
github_token=github_pat,
|
162
|
-
)
|
163
180
|
try:
|
164
181
|
downloader.download_github_folder(
|
165
182
|
url=github_url,
|
@@ -168,6 +185,10 @@ def init(
|
|
168
185
|
)
|
169
186
|
logger.info(f"Successfully downloaded folder contents to {model_path}")
|
170
187
|
logger.info("Model initialization complete with GitHub folder download")
|
188
|
+
logger.info("Next steps:")
|
189
|
+
logger.info("1. Review the model configuration")
|
190
|
+
logger.info("2. Install any required dependencies manually")
|
191
|
+
logger.info("3. Test the model locally using 'clarifai model local-test'")
|
171
192
|
return
|
172
193
|
|
173
194
|
except Exception as e:
|
@@ -235,6 +256,9 @@ def init(
|
|
235
256
|
|
236
257
|
# Fall back to template-based initialization if no GitHub repo or if GitHub repo failed
|
237
258
|
if not github_url:
|
259
|
+
logger.info("Initializing model with default templates...")
|
260
|
+
input("Press Enter to continue...")
|
261
|
+
|
238
262
|
from clarifai.cli.templates.model_templates import (
|
239
263
|
get_config_template,
|
240
264
|
get_model_template,
|
@@ -725,24 +749,39 @@ def local_runner(ctx, model_path, pool_size, verbose):
|
|
725
749
|
|
726
750
|
# Now we need to create a version for the model if no version exists. Only need one version that
|
727
751
|
# mentions it's a local runner.
|
728
|
-
model_versions =
|
752
|
+
model_versions = list(model.list_versions())
|
729
753
|
method_signatures = builder.get_method_signatures(mocking=False)
|
754
|
+
|
755
|
+
create_new_version = False
|
730
756
|
if len(model_versions) == 0:
|
731
757
|
logger.warning("No model versions found. Creating a new version for local runner.")
|
758
|
+
create_new_version = True
|
759
|
+
else:
|
760
|
+
# Try to patch the latest version, and fallback to creating a new one if that fails.
|
761
|
+
latest_version = model_versions[0]
|
762
|
+
logger.warning(f"Attempting to patch latest version: {latest_version.model_version.id}")
|
763
|
+
|
764
|
+
try:
|
765
|
+
patched_model = model.patch_version(
|
766
|
+
version_id=latest_version.model_version.id,
|
767
|
+
pretrained_model_config={"local_dev": True},
|
768
|
+
method_signatures=method_signatures,
|
769
|
+
)
|
770
|
+
patched_model.load_info()
|
771
|
+
version = patched_model.model_version
|
772
|
+
logger.info(f"Successfully patched version {version.id}")
|
773
|
+
ctx.obj.current.CLARIFAI_MODEL_VERSION_ID = version.id
|
774
|
+
ctx.obj.to_yaml() # save to yaml file.
|
775
|
+
except Exception as e:
|
776
|
+
logger.warning(f"Failed to patch model version: {e}. Creating a new version instead.")
|
777
|
+
create_new_version = True
|
778
|
+
|
779
|
+
if create_new_version:
|
732
780
|
version = model.create_version(
|
733
781
|
pretrained_model_config={"local_dev": True}, method_signatures=method_signatures
|
734
782
|
).model_version
|
735
783
|
ctx.obj.current.CLARIFAI_MODEL_VERSION_ID = version.id
|
736
784
|
ctx.obj.to_yaml()
|
737
|
-
else:
|
738
|
-
model.patch_version(
|
739
|
-
version_id=model_versions[0].model_version.id,
|
740
|
-
pretrained_model_config={"local_dev": True},
|
741
|
-
method_signatures=method_signatures,
|
742
|
-
)
|
743
|
-
version = model_versions[0].model_version
|
744
|
-
ctx.obj.current.CLARIFAI_MODEL_VERSION_ID = version.id
|
745
|
-
ctx.obj.to_yaml() # save to yaml file.
|
746
785
|
|
747
786
|
logger.info(f"Current model version {version.id}")
|
748
787
|
|
@@ -907,6 +946,114 @@ def local_runner(ctx, model_path, pool_size, verbose):
|
|
907
946
|
)
|
908
947
|
|
909
948
|
|
949
|
+
def _parse_json_param(param_value, param_name):
|
950
|
+
"""Parse JSON parameter with error handling.
|
951
|
+
|
952
|
+
Args:
|
953
|
+
param_value: The JSON string to parse
|
954
|
+
param_name: Name of the parameter for error messages
|
955
|
+
|
956
|
+
Returns:
|
957
|
+
dict: Parsed JSON dictionary
|
958
|
+
|
959
|
+
Raises:
|
960
|
+
ValueError: If JSON parsing fails
|
961
|
+
"""
|
962
|
+
if not param_value or param_value == '{}':
|
963
|
+
return {}
|
964
|
+
try:
|
965
|
+
return json.loads(param_value)
|
966
|
+
except json.JSONDecodeError as e:
|
967
|
+
logger.error(f"ValueError: Invalid JSON in --{param_name} parameter: {e}")
|
968
|
+
raise click.Abort()
|
969
|
+
|
970
|
+
|
971
|
+
def _process_multimodal_inputs(inputs_dict):
|
972
|
+
"""Process inputs to convert URLs and file paths to appropriate data types.
|
973
|
+
|
974
|
+
Args:
|
975
|
+
inputs_dict: Dictionary of input parameters
|
976
|
+
|
977
|
+
Returns:
|
978
|
+
dict: Processed inputs with Image/Video/Audio objects where appropriate
|
979
|
+
"""
|
980
|
+
from clarifai.runners.utils.data_types import Audio, Image, Video
|
981
|
+
|
982
|
+
for key, value in list(inputs_dict.items()):
|
983
|
+
if not isinstance(value, str):
|
984
|
+
continue
|
985
|
+
|
986
|
+
if value.startswith(("http://", "https://")):
|
987
|
+
# Convert URL strings to appropriate data types
|
988
|
+
if "image" in key.lower():
|
989
|
+
inputs_dict[key] = Image(url=value)
|
990
|
+
elif "video" in key.lower():
|
991
|
+
inputs_dict[key] = Video(url=value)
|
992
|
+
elif "audio" in key.lower():
|
993
|
+
inputs_dict[key] = Audio(url=value)
|
994
|
+
elif os.path.isfile(value):
|
995
|
+
# Convert file paths to appropriate data types
|
996
|
+
try:
|
997
|
+
with open(value, "rb") as f:
|
998
|
+
file_bytes = f.read()
|
999
|
+
if "image" in key.lower():
|
1000
|
+
inputs_dict[key] = Image(bytes=file_bytes)
|
1001
|
+
elif "video" in key.lower():
|
1002
|
+
inputs_dict[key] = Video(bytes=file_bytes)
|
1003
|
+
elif "audio" in key.lower():
|
1004
|
+
inputs_dict[key] = Audio(bytes=file_bytes)
|
1005
|
+
except IOError as e:
|
1006
|
+
logger.error(f"ValueError: Failed to read file {value}: {e}")
|
1007
|
+
raise click.Abort()
|
1008
|
+
|
1009
|
+
return inputs_dict
|
1010
|
+
|
1011
|
+
|
1012
|
+
def _validate_model_params(model_id, user_id, app_id, model_url):
|
1013
|
+
"""Validate model identification parameters.
|
1014
|
+
|
1015
|
+
Args:
|
1016
|
+
model_id: Model ID
|
1017
|
+
user_id: User ID
|
1018
|
+
app_id: App ID
|
1019
|
+
model_url: Model URL
|
1020
|
+
|
1021
|
+
Raises:
|
1022
|
+
ValueError: If validation fails
|
1023
|
+
"""
|
1024
|
+
# Check if we have either (model_id, user_id, app_id) or model_url
|
1025
|
+
has_triple = all([model_id, user_id, app_id])
|
1026
|
+
has_url = bool(model_url)
|
1027
|
+
|
1028
|
+
if not (has_triple or has_url):
|
1029
|
+
logger.error(
|
1030
|
+
"ValueError: Either --model_id & --user_id & --app_id or --model_url must be provided."
|
1031
|
+
)
|
1032
|
+
raise click.Abort()
|
1033
|
+
|
1034
|
+
|
1035
|
+
def _validate_compute_params(compute_cluster_id, nodepool_id, deployment_id):
|
1036
|
+
"""Validate compute cluster parameters.
|
1037
|
+
|
1038
|
+
Args:
|
1039
|
+
compute_cluster_id: Compute cluster ID
|
1040
|
+
nodepool_id: Nodepool ID
|
1041
|
+
deployment_id: Deployment ID
|
1042
|
+
|
1043
|
+
Raises:
|
1044
|
+
ValueError: If validation fails
|
1045
|
+
"""
|
1046
|
+
if any([compute_cluster_id, nodepool_id, deployment_id]):
|
1047
|
+
has_cluster_nodepool = bool(compute_cluster_id) and bool(nodepool_id)
|
1048
|
+
has_deployment = bool(deployment_id)
|
1049
|
+
|
1050
|
+
if not (has_cluster_nodepool or has_deployment):
|
1051
|
+
logger.error(
|
1052
|
+
"ValueError: Either --compute_cluster_id & --nodepool_id or --deployment_id must be provided."
|
1053
|
+
)
|
1054
|
+
raise click.Abort()
|
1055
|
+
|
1056
|
+
|
910
1057
|
@model.command(help="Perform a prediction using the model.")
|
911
1058
|
@click.option(
|
912
1059
|
'--config',
|
@@ -918,10 +1065,6 @@ def local_runner(ctx, model_path, pool_size, verbose):
|
|
918
1065
|
@click.option('--user_id', required=False, help='User ID of the model used to predict.')
|
919
1066
|
@click.option('--app_id', required=False, help='App ID of the model used to predict.')
|
920
1067
|
@click.option('--model_url', required=False, help='Model URL of the model used to predict.')
|
921
|
-
@click.option('--file_path', required=False, help='File path of file for the model to predict')
|
922
|
-
@click.option('--url', required=False, help='URL to the file for the model to predict')
|
923
|
-
@click.option('--bytes', required=False, help='Bytes to the file for the model to predict')
|
924
|
-
@click.option('--input_type', required=False, help='Type of input')
|
925
1068
|
@click.option(
|
926
1069
|
'-cc_id',
|
927
1070
|
'--compute_cluster_id',
|
@@ -933,9 +1076,17 @@ def local_runner(ctx, model_path, pool_size, verbose):
|
|
933
1076
|
'-dpl_id', '--deployment_id', required=False, help='Deployment ID to use for the model'
|
934
1077
|
)
|
935
1078
|
@click.option(
|
936
|
-
'
|
1079
|
+
'-dpl_usr_id',
|
1080
|
+
'--deployment_user_id',
|
1081
|
+
required=False,
|
1082
|
+
help='User ID to use for runner selector (organization or user). If not provided, defaults to PAT owner user_id.',
|
937
1083
|
)
|
938
|
-
@click.option(
|
1084
|
+
@click.option(
|
1085
|
+
'--inputs',
|
1086
|
+
required=False,
|
1087
|
+
help='JSON string of input parameters for pythonic models (e.g., \'{"prompt": "Hello", "max_tokens": 100}\')',
|
1088
|
+
)
|
1089
|
+
@click.option('--method', required=False, default='predict', help='Method to call on the model.')
|
939
1090
|
@click.pass_context
|
940
1091
|
def predict(
|
941
1092
|
ctx,
|
@@ -944,133 +1095,104 @@ def predict(
|
|
944
1095
|
user_id,
|
945
1096
|
app_id,
|
946
1097
|
model_url,
|
947
|
-
file_path,
|
948
|
-
url,
|
949
|
-
bytes,
|
950
|
-
input_type,
|
951
1098
|
compute_cluster_id,
|
952
1099
|
nodepool_id,
|
953
1100
|
deployment_id,
|
954
|
-
|
955
|
-
|
1101
|
+
deployment_user_id,
|
1102
|
+
inputs,
|
1103
|
+
method,
|
956
1104
|
):
|
957
|
-
"""Predict using
|
958
|
-
|
1105
|
+
"""Predict using a Clarifai model.
|
1106
|
+
|
1107
|
+
\b
|
1108
|
+
Model Identification:
|
1109
|
+
Use either --model_url OR the combination of --model_id, --user_id, and --app_id
|
1110
|
+
|
1111
|
+
\b
|
1112
|
+
Input Methods:
|
1113
|
+
--inputs: JSON string with parameters (e.g., '{"prompt": "Hello", "max_tokens": 100}')
|
1114
|
+
--method: Method to call on the model (default is 'predict')
|
1115
|
+
|
1116
|
+
\b
|
1117
|
+
Compute Options:
|
1118
|
+
Use either --deployment_id OR both --compute_cluster_id and --nodepool_id
|
959
1119
|
|
1120
|
+
\b
|
1121
|
+
Examples:
|
1122
|
+
Text model:
|
1123
|
+
clarifai model predict --model_url <url> --inputs '{"prompt": "Hello world"}'
|
1124
|
+
|
1125
|
+
With compute cluster:
|
1126
|
+
clarifai model predict --model_id <id> --user_id <uid> --app_id <aid> \\
|
1127
|
+
--compute_cluster_id <cc_id> --nodepool_id <np_id> \\
|
1128
|
+
--inputs '{"prompt": "Hello"}'
|
1129
|
+
"""
|
960
1130
|
from clarifai.client.model import Model
|
1131
|
+
from clarifai.urls.helper import ClarifaiUrlHelper
|
961
1132
|
from clarifai.utils.cli import from_yaml, validate_context
|
962
1133
|
|
963
1134
|
validate_context(ctx)
|
1135
|
+
|
1136
|
+
# Load configuration from file if provided
|
964
1137
|
if config:
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
('model_url', model_url),
|
987
|
-
('file_path', file_path),
|
988
|
-
('url', url),
|
989
|
-
('bytes', bytes),
|
990
|
-
('input_type', input_type),
|
991
|
-
('compute_cluster_id', compute_cluster_id),
|
992
|
-
('nodepool_id', nodepool_id),
|
993
|
-
('deployment_id', deployment_id),
|
994
|
-
('inference_params', inference_params),
|
995
|
-
('output_config', output_config),
|
996
|
-
]
|
997
|
-
)
|
998
|
-
if (
|
999
|
-
sum(
|
1000
|
-
[
|
1001
|
-
opt[1]
|
1002
|
-
for opt in [(model_id, 1), (user_id, 1), (app_id, 1), (model_url, 3)]
|
1003
|
-
if opt[0]
|
1004
|
-
]
|
1005
|
-
)
|
1006
|
-
!= 3
|
1007
|
-
):
|
1008
|
-
raise ValueError(
|
1009
|
-
"Either --model_id & --user_id & --app_id or --model_url must be provided."
|
1010
|
-
)
|
1011
|
-
if compute_cluster_id or nodepool_id or deployment_id:
|
1012
|
-
if (
|
1013
|
-
sum(
|
1014
|
-
[
|
1015
|
-
opt[1]
|
1016
|
-
for opt in [(compute_cluster_id, 0.5), (nodepool_id, 0.5), (deployment_id, 1)]
|
1017
|
-
if opt[0]
|
1018
|
-
]
|
1019
|
-
)
|
1020
|
-
!= 1
|
1021
|
-
):
|
1022
|
-
raise ValueError(
|
1023
|
-
"Either --compute_cluster_id & --nodepool_id or --deployment_id must be provided."
|
1024
|
-
)
|
1025
|
-
if model_url:
|
1026
|
-
model = Model(
|
1027
|
-
url=model_url,
|
1028
|
-
pat=ctx.obj['pat'],
|
1029
|
-
base_url=ctx.obj['base_url'],
|
1030
|
-
compute_cluster_id=compute_cluster_id,
|
1031
|
-
nodepool_id=nodepool_id,
|
1032
|
-
deployment_id=deployment_id,
|
1138
|
+
config_data = from_yaml(config)
|
1139
|
+
# Override None values with config data
|
1140
|
+
model_id = model_id or config_data.get('model_id')
|
1141
|
+
user_id = user_id or config_data.get('user_id')
|
1142
|
+
app_id = app_id or config_data.get('app_id')
|
1143
|
+
model_url = model_url or config_data.get('model_url')
|
1144
|
+
compute_cluster_id = compute_cluster_id or config_data.get('compute_cluster_id')
|
1145
|
+
nodepool_id = nodepool_id or config_data.get('nodepool_id')
|
1146
|
+
deployment_id = deployment_id or config_data.get('deployment_id')
|
1147
|
+
deployment_user_id = deployment_user_id or config_data.get('deployment_user_id')
|
1148
|
+
inputs = inputs or config_data.get('inputs')
|
1149
|
+
method = method or config_data.get('method', 'predict')
|
1150
|
+
|
1151
|
+
# Validate parameters
|
1152
|
+
_validate_model_params(model_id, user_id, app_id, model_url)
|
1153
|
+
_validate_compute_params(compute_cluster_id, nodepool_id, deployment_id)
|
1154
|
+
|
1155
|
+
# Generate model URL if not provided
|
1156
|
+
if not model_url:
|
1157
|
+
model_url = ClarifaiUrlHelper.clarifai_url(
|
1158
|
+
user_id=user_id, app_id=app_id, resource_type="models", resource_id=model_id
|
1033
1159
|
)
|
1160
|
+
logger.debug(f"Using model at URL: {model_url}")
|
1161
|
+
|
1162
|
+
# Create model instance
|
1163
|
+
model = Model(
|
1164
|
+
url=model_url,
|
1165
|
+
pat=ctx.obj.current.pat,
|
1166
|
+
base_url=ctx.obj.current.api_base,
|
1167
|
+
compute_cluster_id=compute_cluster_id,
|
1168
|
+
nodepool_id=nodepool_id,
|
1169
|
+
deployment_id=deployment_id,
|
1170
|
+
deployment_user_id=deployment_user_id,
|
1171
|
+
)
|
1172
|
+
|
1173
|
+
model_methods = model.client.available_methods()
|
1174
|
+
stream_method = (
|
1175
|
+
model.client.method_signature(method).split()[-1][:-1].lower().startswith('iter')
|
1176
|
+
)
|
1177
|
+
|
1178
|
+
# Determine prediction method and execute
|
1179
|
+
if inputs and (method in model_methods):
|
1180
|
+
# Pythonic model prediction with JSON inputs
|
1181
|
+
inputs_dict = _parse_json_param(inputs, "inputs")
|
1182
|
+
inputs_dict = _process_multimodal_inputs(inputs_dict)
|
1183
|
+
model_prediction = getattr(model, method)(**inputs_dict)
|
1034
1184
|
else:
|
1035
|
-
|
1036
|
-
|
1037
|
-
user_id=user_id,
|
1038
|
-
app_id=app_id,
|
1039
|
-
pat=ctx.obj['pat'],
|
1040
|
-
base_url=ctx.obj['base_url'],
|
1041
|
-
compute_cluster_id=compute_cluster_id,
|
1042
|
-
nodepool_id=nodepool_id,
|
1043
|
-
deployment_id=deployment_id,
|
1185
|
+
logger.error(
|
1186
|
+
f"ValueError: The model does not support the '{method}' method. Please check the model's capabilities."
|
1044
1187
|
)
|
1188
|
+
raise click.Abort()
|
1045
1189
|
|
1046
|
-
if
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
model_prediction = model.predict_by_filepath(
|
1053
|
-
filepath=file_path,
|
1054
|
-
input_type=input_type,
|
1055
|
-
inference_params=inference_params,
|
1056
|
-
output_config=output_config,
|
1057
|
-
)
|
1058
|
-
elif url:
|
1059
|
-
model_prediction = model.predict_by_url(
|
1060
|
-
url=url,
|
1061
|
-
input_type=input_type,
|
1062
|
-
inference_params=inference_params,
|
1063
|
-
output_config=output_config,
|
1064
|
-
)
|
1065
|
-
elif bytes:
|
1066
|
-
bytes = str.encode(bytes)
|
1067
|
-
model_prediction = model.predict_by_bytes(
|
1068
|
-
input_bytes=bytes,
|
1069
|
-
input_type=input_type,
|
1070
|
-
inference_params=inference_params,
|
1071
|
-
output_config=output_config,
|
1072
|
-
) ## TO DO: Add support for input_id
|
1073
|
-
click.echo(model_prediction)
|
1190
|
+
if stream_method:
|
1191
|
+
for chunk in model_prediction:
|
1192
|
+
click.echo(chunk, nl=False)
|
1193
|
+
click.echo() # Ensure a newline after the stream ends
|
1194
|
+
else:
|
1195
|
+
click.echo(model_prediction)
|
1074
1196
|
|
1075
1197
|
|
1076
1198
|
@model.command(name="list")
|
@@ -1096,7 +1218,7 @@ def list_model(ctx, user_id, app_id):
|
|
1096
1218
|
from clarifai.client import User
|
1097
1219
|
|
1098
1220
|
try:
|
1099
|
-
pat = ctx.obj.
|
1221
|
+
pat = ctx.obj.current.pat
|
1100
1222
|
except Exception as e:
|
1101
1223
|
pat = None
|
1102
1224
|
|
@@ -229,12 +229,34 @@ def init(pipeline_path):
|
|
229
229
|
# Create the pipeline directory if it doesn't exist
|
230
230
|
os.makedirs(pipeline_path, exist_ok=True)
|
231
231
|
|
232
|
+
# Prompt for user inputs
|
233
|
+
click.echo("Welcome to Clarifai Pipeline Initialization!")
|
234
|
+
click.echo("Please provide the following information:")
|
235
|
+
|
236
|
+
user_id = click.prompt("User ID", type=str)
|
237
|
+
app_id = click.prompt("App ID", type=str)
|
238
|
+
pipeline_id = click.prompt("Pipeline ID", default="hello-world-pipeline", type=str)
|
239
|
+
num_steps = click.prompt("Number of pipeline steps", default=2, type=int)
|
240
|
+
|
241
|
+
# Get step names
|
242
|
+
step_names = []
|
243
|
+
default_names = ["stepA", "stepB", "stepC", "stepD", "stepE", "stepF"]
|
244
|
+
|
245
|
+
for i in range(num_steps):
|
246
|
+
default_name = default_names[i] if i < len(default_names) else f"step{i + 1}"
|
247
|
+
step_name = click.prompt(f"Name for step {i + 1}", default=default_name, type=str)
|
248
|
+
step_names.append(step_name)
|
249
|
+
|
250
|
+
click.echo(f"\nCreating pipeline '{pipeline_id}' with steps: {', '.join(step_names)}")
|
251
|
+
|
232
252
|
# Create pipeline config.yaml
|
233
253
|
config_path = os.path.join(pipeline_path, "config.yaml")
|
234
254
|
if os.path.exists(config_path):
|
235
255
|
logger.warning(f"File {config_path} already exists, skipping...")
|
236
256
|
else:
|
237
|
-
config_template = get_pipeline_config_template(
|
257
|
+
config_template = get_pipeline_config_template(
|
258
|
+
pipeline_id=pipeline_id, user_id=user_id, app_id=app_id, step_names=step_names
|
259
|
+
)
|
238
260
|
with open(config_path, 'w', encoding='utf-8') as f:
|
239
261
|
f.write(config_template)
|
240
262
|
logger.info(f"Created {config_path}")
|
@@ -249,8 +271,8 @@ def init(pipeline_path):
|
|
249
271
|
f.write(readme_template)
|
250
272
|
logger.info(f"Created {readme_path}")
|
251
273
|
|
252
|
-
# Create pipeline steps
|
253
|
-
for step_id in
|
274
|
+
# Create pipeline steps
|
275
|
+
for step_id in step_names:
|
254
276
|
step_dir = os.path.join(pipeline_path, step_id)
|
255
277
|
os.makedirs(step_dir, exist_ok=True)
|
256
278
|
|
@@ -263,7 +285,9 @@ def init(pipeline_path):
|
|
263
285
|
if os.path.exists(step_config_path):
|
264
286
|
logger.warning(f"File {step_config_path} already exists, skipping...")
|
265
287
|
else:
|
266
|
-
step_config_template = get_pipeline_step_config_template(
|
288
|
+
step_config_template = get_pipeline_step_config_template(
|
289
|
+
step_id=step_id, user_id=user_id, app_id=app_id
|
290
|
+
)
|
267
291
|
with open(step_config_path, 'w', encoding='utf-8') as f:
|
268
292
|
f.write(step_config_template)
|
269
293
|
logger.info(f"Created {step_config_path}")
|
@@ -290,13 +314,9 @@ def init(pipeline_path):
|
|
290
314
|
|
291
315
|
logger.info(f"Pipeline initialization complete in {pipeline_path}")
|
292
316
|
logger.info("Next steps:")
|
293
|
-
logger.info("1.
|
294
|
-
logger.info("2.
|
295
|
-
logger.info(
|
296
|
-
"3. Implement your pipeline step logic in stepA/1/pipeline_step.py and stepB/1/pipeline_step.py"
|
297
|
-
)
|
298
|
-
logger.info("4. Add dependencies to requirements.txt files as needed")
|
299
|
-
logger.info("5. Run 'clarifai pipeline upload config.yaml' to upload your pipeline")
|
317
|
+
logger.info("1. Implement your pipeline step logic in the generated pipeline_step.py files")
|
318
|
+
logger.info("2. Add dependencies to requirements.txt files as needed")
|
319
|
+
logger.info("3. Run 'clarifai pipeline upload config.yaml' to upload your pipeline")
|
300
320
|
|
301
321
|
|
302
322
|
@pipeline.command(['ls'])
|