agenta 0.17.5__tar.gz → 0.17.6a1__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.

Potentially problematic release.


This version of agenta might be problematic. Click here for more details.

Files changed (164) hide show
  1. {agenta-0.17.5 → agenta-0.17.6a1}/PKG-INFO +1 -1
  2. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/decorators/llm_entrypoint.py +2 -0
  3. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/decorators/tracing.py +26 -15
  4. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/callbacks.py +18 -6
  5. {agenta-0.17.5 → agenta-0.17.6a1}/pyproject.toml +2 -2
  6. {agenta-0.17.5 → agenta-0.17.6a1}/README.md +0 -0
  7. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/__init__.py +0 -0
  8. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/evaluation_commands.py +0 -0
  9. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/helper.py +0 -0
  10. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/main.py +0 -0
  11. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/telemetry.py +0 -0
  12. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/variant_commands.py +0 -0
  13. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/cli/variant_configs.py +0 -0
  14. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/Readme.md +0 -0
  15. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/__init__.py +0 -0
  16. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/api.py +0 -0
  17. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/api_models.py +0 -0
  18. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/__init__.py +0 -0
  19. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/client.py +0 -0
  20. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/__init__.py +0 -0
  21. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/api_error.py +0 -0
  22. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/client_wrapper.py +0 -0
  23. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/datetime_utils.py +0 -0
  24. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  25. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  26. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/errors/__init__.py +0 -0
  27. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  28. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/__init__.py +0 -0
  29. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/apps/__init__.py +0 -0
  30. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/apps/client.py +0 -0
  31. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/bases/__init__.py +0 -0
  32. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/bases/client.py +0 -0
  33. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/configs/__init__.py +0 -0
  34. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/configs/client.py +0 -0
  35. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/containers/__init__.py +0 -0
  36. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/containers/client.py +0 -0
  37. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/containers/types/__init__.py +0 -0
  38. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/containers/types/container_templates_response.py +0 -0
  39. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/environments/__init__.py +0 -0
  40. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/environments/client.py +0 -0
  41. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/evaluations/__init__.py +0 -0
  42. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/evaluations/client.py +0 -0
  43. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/evaluators/__init__.py +0 -0
  44. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/evaluators/client.py +0 -0
  45. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/observability/__init__.py +0 -0
  46. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/observability/client.py +0 -0
  47. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/testsets/__init__.py +0 -0
  48. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/testsets/client.py +0 -0
  49. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/variants/__init__.py +0 -0
  50. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/variants/client.py +0 -0
  51. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/variants/types/__init__.py +0 -0
  52. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/resources/variants/types/add_variant_from_base_and_config_response.py +0 -0
  53. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/__init__.py +0 -0
  54. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/aggregated_result.py +0 -0
  55. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  56. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/app.py +0 -0
  57. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/app_variant_response.py +0 -0
  58. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/app_variant_revision.py +0 -0
  59. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/base_output.py +0 -0
  60. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/body_import_testset.py +0 -0
  61. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/config_db.py +0 -0
  62. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/create_app_output.py +0 -0
  63. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/create_span.py +0 -0
  64. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/create_trace_response.py +0 -0
  65. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/docker_env_vars.py +0 -0
  66. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/environment_output.py +0 -0
  67. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/environment_output_extended.py +0 -0
  68. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/environment_revision.py +0 -0
  69. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/error.py +0 -0
  70. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation.py +0 -0
  71. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  72. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  73. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  74. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  75. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_scenario_score_update.py +0 -0
  76. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  77. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_type.py +0 -0
  78. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluation_webhook.py +0 -0
  79. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluator.py +0 -0
  80. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/evaluator_config.py +0 -0
  81. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/feedback.py +0 -0
  82. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/get_config_response.py +0 -0
  83. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/http_validation_error.py +0 -0
  84. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation.py +0 -0
  85. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  86. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  87. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  88. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation_scenario_update.py +0 -0
  89. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/human_evaluation_update.py +0 -0
  90. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/image.py +0 -0
  91. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/invite_request.py +0 -0
  92. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  93. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  94. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/llm_tokens.py +0 -0
  95. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/new_human_evaluation.py +0 -0
  96. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/new_testset.py +0 -0
  97. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/organization.py +0 -0
  98. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/organization_output.py +0 -0
  99. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/permission.py +0 -0
  100. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/result.py +0 -0
  101. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/score.py +0 -0
  102. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  103. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/span.py +0 -0
  104. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/span_detail.py +0 -0
  105. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/span_kind.py +0 -0
  106. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/span_status_code.py +0 -0
  107. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/span_variant.py +0 -0
  108. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/template.py +0 -0
  109. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/template_image_info.py +0 -0
  110. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/test_set_output_response.py +0 -0
  111. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/test_set_simple_response.py +0 -0
  112. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/trace_detail.py +0 -0
  113. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/uri.py +0 -0
  114. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/validation_error.py +0 -0
  115. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  116. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/variant_action.py +0 -0
  117. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/variant_action_enum.py +0 -0
  118. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/with_pagination.py +0 -0
  119. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/workspace_member_response.py +0 -0
  120. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/workspace_permission.py +0 -0
  121. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/workspace_response.py +0 -0
  122. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/workspace_role.py +0 -0
  123. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/backend/types/workspace_role_response.py +0 -0
  124. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/client.py +0 -0
  125. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/client/exceptions.py +0 -0
  126. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/config.py +0 -0
  127. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/config.toml +0 -0
  128. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/Dockerfile.cloud.template +0 -0
  129. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/Dockerfile.template +0 -0
  130. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/README.md +0 -0
  131. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/entrypoint.sh +0 -0
  132. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/lambda_function.py +0 -0
  133. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker-assets/main.py +0 -0
  134. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/docker/docker_utils.py +0 -0
  135. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/__init__.py +0 -0
  136. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/agenta_init.py +0 -0
  137. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/client.py +0 -0
  138. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/context.py +0 -0
  139. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/decorators/base.py +0 -0
  140. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/router.py +0 -0
  141. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/__init__.py +0 -0
  142. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/context_manager.py +0 -0
  143. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/llm_tracing.py +0 -0
  144. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/logger.py +0 -0
  145. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/tracing/tasks_manager.py +0 -0
  146. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/types.py +0 -0
  147. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/utils/globals.py +0 -0
  148. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/utils/helper/openai_cost.py +0 -0
  149. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/sdk/utils/preinit.py +0 -0
  150. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/compose_email/README.md +0 -0
  151. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/compose_email/app.py +0 -0
  152. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/compose_email/env.example +0 -0
  153. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/compose_email/requirements.txt +0 -0
  154. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/compose_email/template.toml +0 -0
  155. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/extract_data_to_json/README.md +0 -0
  156. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/extract_data_to_json/app.py +0 -0
  157. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/extract_data_to_json/env.example +0 -0
  158. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/extract_data_to_json/requirements.txt +0 -0
  159. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/extract_data_to_json/template.toml +0 -0
  160. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/simple_prompt/README.md +0 -0
  161. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/simple_prompt/app.py +0 -0
  162. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/simple_prompt/env.example +0 -0
  163. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/simple_prompt/requirements.txt +0 -0
  164. {agenta-0.17.5 → agenta-0.17.6a1}/agenta/templates/simple_prompt/template.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agenta
3
- Version: 0.17.5
3
+ Version: 0.17.6a1
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Home-page: https://agenta.ai
6
6
  Keywords: LLMOps,LLM,evaluation,prompt engineering
@@ -83,9 +83,11 @@ class entrypoint(BaseDecorator):
83
83
  {"config": config_params, "environment": "playground"}
84
84
  )
85
85
 
86
+ # Exceptions are all handled inside self.execute_function()
86
87
  llm_result = await self.execute_function(
87
88
  func, *args, params=func_params, config_params=config_params
88
89
  )
90
+
89
91
  return llm_result
90
92
 
91
93
  @functools.wraps(func)
@@ -58,19 +58,24 @@ class instrument(BaseDecorator):
58
58
  try:
59
59
  result = await func(*args, **kwargs)
60
60
  self.tracing.update_span_status(span=span, value="OK")
61
- except Exception as e:
62
- result = str(e)
63
- self.tracing.set_span_attribute(
64
- {"traceback_exception": traceback.format_exc()}
65
- )
66
- self.tracing.update_span_status(span=span, value="ERROR")
67
- finally:
68
61
  self.tracing.end_span(
69
62
  outputs=(
70
63
  {"message": result} if not isinstance(result, dict) else result
71
64
  )
72
65
  )
73
- return result
66
+ return result
67
+
68
+ except Exception as e:
69
+ result = {
70
+ "message": str(e),
71
+ "stacktrace": traceback.format_exc(),
72
+ }
73
+ self.tracing.set_span_attribute(
74
+ {"traceback_exception": traceback.format_exc()}
75
+ )
76
+ self.tracing.update_span_status(span=span, value="ERROR")
77
+ self.tracing.end_span(outputs=result)
78
+ raise e
74
79
 
75
80
  @wraps(func)
76
81
  def sync_wrapper(*args, **kwargs):
@@ -89,17 +94,23 @@ class instrument(BaseDecorator):
89
94
  try:
90
95
  result = func(*args, **kwargs)
91
96
  self.tracing.update_span_status(span=span, value="OK")
92
- except Exception as e:
93
- result = str(e)
94
- self.tracing.set_span_attribute(
95
- {"traceback_exception": traceback.format_exc()}
96
- )
97
- self.tracing.update_span_status(span=span, value="ERROR")
98
- finally:
99
97
  self.tracing.end_span(
100
98
  outputs=(
101
99
  {"message": result} if not isinstance(result, dict) else result
102
100
  )
103
101
  )
102
+ return result
103
+
104
+ except Exception as e:
105
+ result = {
106
+ "message": str(e),
107
+ "stacktrace": traceback.format_exc(),
108
+ }
109
+ self.tracing.set_span_attribute(
110
+ {"traceback_exception": traceback.format_exc()}
111
+ )
112
+ self.tracing.update_span_status(span=span, value="ERROR")
113
+ self.tracing.end_span(outputs=result)
114
+ raise e
104
115
 
105
116
  return async_wrapper if is_coroutine_function else sync_wrapper
@@ -55,7 +55,9 @@ def litellm_handler():
55
55
  "message": kwargs.get(
56
56
  "complete_streaming_response"
57
57
  ), # the complete streamed response (only set if `completion(..stream=True)`)
58
- "usage": response_obj.usage.dict(), # litellm calculates usage
58
+ "usage": response_obj.usage.dict()
59
+ if hasattr(response_obj, "usage")
60
+ else None, # litellm calculates usage
59
61
  "cost": kwargs.get(
60
62
  "response_cost"
61
63
  ), # litellm calculates response cost
@@ -69,7 +71,9 @@ def litellm_handler():
69
71
  self._trace.end_span(
70
72
  outputs={
71
73
  "message": response_obj.choices[0].message.content,
72
- "usage": response_obj.usage.dict(), # litellm calculates usage
74
+ "usage": response_obj.usage.dict()
75
+ if hasattr(response_obj, "usage")
76
+ else None, # litellm calculates usage
73
77
  "cost": kwargs.get(
74
78
  "response_cost"
75
79
  ), # litellm calculates response cost
@@ -93,7 +97,9 @@ def litellm_handler():
93
97
  self._trace.end_span(
94
98
  outputs={
95
99
  "message": kwargs["exception"], # the Exception raised
96
- "usage": response_obj.usage.dict(), # litellm calculates usage
100
+ "usage": response_obj.usage.dict()
101
+ if hasattr(response_obj, "usage")
102
+ else None, # litellm calculates usage
97
103
  "cost": kwargs.get(
98
104
  "response_cost"
99
105
  ), # litellm calculates response cost
@@ -109,7 +115,9 @@ def litellm_handler():
109
115
  "message": kwargs.get(
110
116
  "complete_streaming_response"
111
117
  ), # the complete streamed response (only set if `completion(..stream=True)`)
112
- "usage": response_obj.usage.dict(), # litellm calculates usage
118
+ "usage": response_obj.usage.dict()
119
+ if hasattr(response_obj, "usage")
120
+ else None, # litellm calculates usage
113
121
  "cost": kwargs.get(
114
122
  "response_cost"
115
123
  ), # litellm calculates response cost
@@ -123,7 +131,9 @@ def litellm_handler():
123
131
  self._trace.end_span(
124
132
  outputs={
125
133
  "message": response_obj.choices[0].message.content,
126
- "usage": response_obj.usage.dict(), # litellm calculates usage
134
+ "usage": response_obj.usage.dict()
135
+ if hasattr(response_obj, "usage")
136
+ else None, # litellm calculates usage
127
137
  "cost": kwargs.get(
128
138
  "response_cost"
129
139
  ), # litellm calculates response cost
@@ -147,7 +157,9 @@ def litellm_handler():
147
157
  self._trace.end_span(
148
158
  outputs={
149
159
  "message": kwargs["exception"], # the Exception raised
150
- "usage": response_obj.usage.dict(), # litellm calculates usage
160
+ "usage": response_obj.usage.dict()
161
+ if hasattr(response_obj, "usage")
162
+ else None, # litellm calculates usage
151
163
  "cost": kwargs.get(
152
164
  "response_cost"
153
165
  ), # litellm calculates response cost
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "agenta"
3
- version = "0.17.5"
3
+ version = "0.17.6a1"
4
4
  description = "The SDK for agenta is an open-source LLMOps platform."
5
5
  readme = "README.md"
6
6
  authors = ["Mahmoud Mabrouk <mahmoud@agenta.ai>"]
@@ -34,7 +34,7 @@ cachetools = "^5.3.3"
34
34
 
35
35
  [tool.poetry.dev-dependencies]
36
36
  pytest = "^8.2"
37
- setuptools = "^70.1.0"
37
+ setuptools = "^70.2.0"
38
38
 
39
39
  [build-system]
40
40
  requires = ["poetry-core"]
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