clarifai 11.5.5__tar.gz → 11.5.6__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.
Files changed (148) hide show
  1. {clarifai-11.5.5/clarifai.egg-info → clarifai-11.5.6}/PKG-INFO +1 -1
  2. clarifai-11.5.6/clarifai/__init__.py +1 -0
  3. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/model_builder.py +5 -0
  4. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/model_class.py +24 -9
  5. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/openai_class.py +1 -0
  6. {clarifai-11.5.5 → clarifai-11.5.6/clarifai.egg-info}/PKG-INFO +1 -1
  7. clarifai-11.5.5/clarifai/__init__.py +0 -1
  8. {clarifai-11.5.5 → clarifai-11.5.6}/LICENSE +0 -0
  9. {clarifai-11.5.5 → clarifai-11.5.6}/MANIFEST.in +0 -0
  10. {clarifai-11.5.5 → clarifai-11.5.6}/README.md +0 -0
  11. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/README.md +0 -0
  12. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/__init__.py +0 -0
  13. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/__main__.py +0 -0
  14. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/base.py +0 -0
  15. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/compute_cluster.py +0 -0
  16. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/deployment.py +0 -0
  17. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/model.py +0 -0
  18. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/nodepool.py +0 -0
  19. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/pipeline.py +0 -0
  20. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/pipeline_step.py +0 -0
  21. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/templates/__init__.py +0 -0
  22. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/templates/model_templates.py +0 -0
  23. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/templates/pipeline_step_templates.py +0 -0
  24. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli/templates/pipeline_templates.py +0 -0
  25. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/cli.py +0 -0
  26. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/__init__.py +0 -0
  27. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/app.py +0 -0
  28. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/auth/__init__.py +0 -0
  29. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/auth/helper.py +0 -0
  30. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/auth/register.py +0 -0
  31. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/auth/stub.py +0 -0
  32. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/base.py +0 -0
  33. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/compute_cluster.py +0 -0
  34. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/dataset.py +0 -0
  35. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/deployment.py +0 -0
  36. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/input.py +0 -0
  37. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/lister.py +0 -0
  38. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/model.py +0 -0
  39. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/model_client.py +0 -0
  40. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/module.py +0 -0
  41. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/nodepool.py +0 -0
  42. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/runner.py +0 -0
  43. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/search.py +0 -0
  44. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/user.py +0 -0
  45. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/client/workflow.py +0 -0
  46. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/base.py +0 -0
  47. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/dataset.py +0 -0
  48. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/input.py +0 -0
  49. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/model.py +0 -0
  50. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/rag.py +0 -0
  51. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/search.py +0 -0
  52. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/constants/workflow.py +0 -0
  53. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/__init__.py +0 -0
  54. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/export/__init__.py +0 -0
  55. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/export/inputs_annotations.py +0 -0
  56. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/__init__.py +0 -0
  57. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/base.py +0 -0
  58. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/features.py +0 -0
  59. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/image.py +0 -0
  60. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/README.md +0 -0
  61. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/__init__.py +0 -0
  62. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
  63. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
  64. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
  65. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/loaders/xview_detection.py +0 -0
  66. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/multimodal.py +0 -0
  67. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/text.py +0 -0
  68. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/datasets/upload/utils.py +0 -0
  69. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/errors.py +0 -0
  70. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/models/__init__.py +0 -0
  71. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/models/api.py +0 -0
  72. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/modules/README.md +0 -0
  73. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/modules/__init__.py +0 -0
  74. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/modules/css.py +0 -0
  75. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/modules/pages.py +0 -0
  76. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/modules/style.css +0 -0
  77. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/rag/__init__.py +0 -0
  78. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/rag/rag.py +0 -0
  79. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/rag/utils.py +0 -0
  80. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/__init__.py +0 -0
  81. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/dockerfile_template/Dockerfile.template +0 -0
  82. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/__init__.py +0 -0
  83. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/dummy_openai_model.py +0 -0
  84. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/mcp_class.py +0 -0
  85. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/model_run_locally.py +0 -0
  86. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/model_runner.py +0 -0
  87. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/model_servicer.py +0 -0
  88. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/visual_classifier_class.py +0 -0
  89. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/models/visual_detector_class.py +0 -0
  90. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/pipeline_steps/__init__.py +0 -0
  91. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/pipeline_steps/pipeline_step_builder.py +0 -0
  92. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/pipelines/__init__.py +0 -0
  93. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/pipelines/pipeline_builder.py +0 -0
  94. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/server.py +0 -0
  95. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/__init__.py +0 -0
  96. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/code_script.py +0 -0
  97. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/const.py +0 -0
  98. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/data_types/__init__.py +0 -0
  99. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/data_types/data_types.py +0 -0
  100. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/data_utils.py +0 -0
  101. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/loader.py +0 -0
  102. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/method_signatures.py +0 -0
  103. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/model_utils.py +0 -0
  104. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/openai_convertor.py +0 -0
  105. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/pipeline_validation.py +0 -0
  106. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/serializers.py +0 -0
  107. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/runners/utils/url_fetcher.py +0 -0
  108. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/schema/search.py +0 -0
  109. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/urls/helper.py +0 -0
  110. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/__init__.py +0 -0
  111. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/cli.py +0 -0
  112. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/config.py +0 -0
  113. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/constants.py +0 -0
  114. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/evaluation/__init__.py +0 -0
  115. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/evaluation/helpers.py +0 -0
  116. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/evaluation/main.py +0 -0
  117. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/evaluation/testset_annotation_parser.py +0 -0
  118. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/logging.py +0 -0
  119. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/misc.py +0 -0
  120. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/model_train.py +0 -0
  121. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/utils/protobuf.py +0 -0
  122. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/versions.py +0 -0
  123. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/workflows/__init__.py +0 -0
  124. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/workflows/export.py +0 -0
  125. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/workflows/utils.py +0 -0
  126. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai/workflows/validate.py +0 -0
  127. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai.egg-info/SOURCES.txt +0 -0
  128. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai.egg-info/dependency_links.txt +0 -0
  129. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai.egg-info/entry_points.txt +0 -0
  130. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai.egg-info/requires.txt +0 -0
  131. {clarifai-11.5.5 → clarifai-11.5.6}/clarifai.egg-info/top_level.txt +0 -0
  132. {clarifai-11.5.5 → clarifai-11.5.6}/pyproject.toml +0 -0
  133. {clarifai-11.5.5 → clarifai-11.5.6}/requirements.txt +0 -0
  134. {clarifai-11.5.5 → clarifai-11.5.6}/setup.cfg +0 -0
  135. {clarifai-11.5.5 → clarifai-11.5.6}/setup.py +0 -0
  136. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_app.py +0 -0
  137. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_async_stub.py +0 -0
  138. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_auth.py +0 -0
  139. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_data_upload.py +0 -0
  140. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_eval.py +0 -0
  141. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_list_models.py +0 -0
  142. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_misc.py +0 -0
  143. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_model_predict.py +0 -0
  144. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_model_train.py +0 -0
  145. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_modules.py +0 -0
  146. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_rag.py +0 -0
  147. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_search.py +0 -0
  148. {clarifai-11.5.5 → clarifai-11.5.6}/tests/test_stub.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clarifai
3
- Version: 11.5.5
3
+ Version: 11.5.6
4
4
  Home-page: https://github.com/Clarifai/clarifai-python
5
5
  Author: Clarifai
6
6
  Author-email: support@clarifai.com
@@ -0,0 +1 @@
1
+ __version__ = "11.5.6"
@@ -550,6 +550,11 @@ class ModelBuilder:
550
550
  "inference_compute_info not found in the config file"
551
551
  )
552
552
  inference_compute_info = self.config.get('inference_compute_info')
553
+ # Ensure cpu_limit is a string if it exists and is an int
554
+ if 'cpu_limit' in inference_compute_info and isinstance(
555
+ inference_compute_info['cpu_limit'], int
556
+ ):
557
+ inference_compute_info['cpu_limit'] = str(inference_compute_info['cpu_limit'])
553
558
  return json_format.ParseDict(inference_compute_info, resources_pb2.ComputeInfo())
554
559
 
555
560
  def check_model_exists(self):
@@ -1,6 +1,7 @@
1
1
  import inspect
2
2
  import itertools
3
3
  import os
4
+ import threading
4
5
  import traceback
5
6
  from abc import ABC
6
7
  from collections import abc
@@ -59,15 +60,22 @@ class ModelClass(ABC):
59
60
  yield item.x + ' ' + str(item.y)
60
61
  '''
61
62
 
63
+ def __init__(self):
64
+ super().__init__()
65
+ self._thread_local = threading.local()
66
+
62
67
  @staticmethod
63
68
  def method(func):
64
69
  setattr(func, _METHOD_INFO_ATTR, _MethodInfo(func))
65
70
  return func
66
71
 
67
72
  def set_output_context(self, prompt_tokens=None, completion_tokens=None):
68
- """This is used to set the prompt and completion tokens in the Output proto"""
69
- self._prompt_tokens = prompt_tokens
70
- self._completion_tokens = completion_tokens
73
+ """Set the prompt and completion tokens for the Output proto.
74
+ In batch mode, call this once per output, in order, before returning each output.
75
+ """
76
+ if not hasattr(self._thread_local, 'token_contexts'):
77
+ self._thread_local.token_contexts = []
78
+ self._thread_local.token_contexts.append((prompt_tokens, completion_tokens))
71
79
 
72
80
  def load_model(self):
73
81
  """Load the model."""
@@ -213,6 +221,7 @@ class ModelClass(ABC):
213
221
  self, request: service_pb2.PostModelOutputsRequest
214
222
  ) -> Iterator[service_pb2.MultiOutputResponse]:
215
223
  try:
224
+ assert len(request.inputs) == 1, "Generate requires exactly one input"
216
225
  method_name = 'generate'
217
226
  if len(request.inputs) > 0 and '_method_name' in request.inputs[0].data.metadata:
218
227
  method_name = request.inputs[0].data.metadata['_method_name']
@@ -385,12 +394,18 @@ class ModelClass(ABC):
385
394
  data = DataConverter.convert_output_data_to_old_format(proto.data)
386
395
  proto.data.CopyFrom(data)
387
396
  proto.status.code = status_code_pb2.SUCCESS
388
- if hasattr(self, "_prompt_tokens") and self._prompt_tokens is not None:
389
- proto.prompt_tokens = self._prompt_tokens
390
- if hasattr(self, "_completion_tokens") and self._completion_tokens is not None:
391
- proto.completion_tokens = self._completion_tokens
392
- self._prompt_tokens = None
393
- self._completion_tokens = None
397
+ # Per-output token context support
398
+ token_contexts = getattr(self._thread_local, 'token_contexts', None)
399
+ prompt_tokens = completion_tokens = None
400
+ if token_contexts and len(token_contexts) > 0:
401
+ prompt_tokens, completion_tokens = token_contexts.pop(0)
402
+ # If this was the last, clean up
403
+ if len(token_contexts) == 0:
404
+ del self._thread_local.token_contexts
405
+ if prompt_tokens is not None:
406
+ proto.prompt_tokens = prompt_tokens
407
+ if completion_tokens is not None:
408
+ proto.completion_tokens = completion_tokens
394
409
  return proto
395
410
 
396
411
  @classmethod
@@ -34,6 +34,7 @@ class OpenAIModelClass(ModelClass):
34
34
  model = None
35
35
 
36
36
  def __init__(self) -> None:
37
+ super().__init__()
37
38
  if self.client is None:
38
39
  raise NotImplementedError("Subclasses must set the 'client' class attribute")
39
40
  if self.model is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clarifai
3
- Version: 11.5.5
3
+ Version: 11.5.6
4
4
  Home-page: https://github.com/Clarifai/clarifai-python
5
5
  Author: Clarifai
6
6
  Author-email: support@clarifai.com
@@ -1 +0,0 @@
1
- __version__ = "11.5.5"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes