agenta 0.20.0a4__tar.gz → 0.20.0a7__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.
- {agenta-0.20.0a4 → agenta-0.20.0a7}/PKG-INFO +1 -1
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/span.py +2 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/decorators/llm_entrypoint.py +22 -21
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/decorators/tracing.py +30 -20
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/callbacks.py +28 -80
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/llm_tracing.py +24 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/types.py +2 -2
- {agenta-0.20.0a4 → agenta-0.20.0a7}/pyproject.toml +1 -1
- {agenta-0.20.0a4 → agenta-0.20.0a7}/README.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/evaluation_commands.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/helper.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/main.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/telemetry.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/variant_commands.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/cli/variant_configs.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/Readme.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/api.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/api_models.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/api_error.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/client_wrapper.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/datetime_utils.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/jsonable_encoder.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/errors/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/apps/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/apps/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/bases/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/bases/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/configs/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/configs/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/containers/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/containers/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/containers/types/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/containers/types/container_templates_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/environments/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/environments/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/evaluations/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/evaluations/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/evaluators/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/evaluators/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/observability/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/observability/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/testsets/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/testsets/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/variants/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/variants/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/variants/types/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/variants/types/add_variant_from_base_and_config_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/aggregated_result.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/app.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/app_variant_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/app_variant_revision.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/base_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/body_import_testset.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/config_db.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/create_app_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/create_span.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/create_trace_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/docker_env_vars.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/environment_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/environment_output_extended.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/environment_revision.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/error.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_score_update.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_type.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_webhook.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluator.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluator_config.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/feedback.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/get_config_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/http_validation_error.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_update.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_update.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/image.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/invite_request.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/list_api_keys_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/llm_tokens.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/new_human_evaluation.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/new_testset.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/organization.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/organization_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/permission.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/result.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/score.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/span_detail.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/span_kind.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/span_status_code.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/span_variant.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/template.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/template_image_info.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/test_set_output_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/test_set_simple_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/trace_detail.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/uri.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/validation_error.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/variant_action.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/variant_action_enum.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/with_pagination.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_member_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_permission.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_role.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_role_response.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/exceptions.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/config.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/config.toml +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/Dockerfile.cloud.template +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/Dockerfile.template +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/README.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/entrypoint.sh +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/lambda_function.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker-assets/main.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/docker/docker_utils.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/agenta_init.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/client.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/context.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/decorators/base.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/router.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/__init__.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/context_manager.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/logger.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/tasks_manager.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/tracing/tracing_context.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/utils/debug.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/utils/globals.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/utils/helper/openai_cost.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/sdk/utils/preinit.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/compose_email/README.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/compose_email/app.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/compose_email/env.example +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/compose_email/requirements.txt +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/compose_email/template.toml +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/extract_data_to_json/README.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/extract_data_to_json/app.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/extract_data_to_json/env.example +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/extract_data_to_json/requirements.txt +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/extract_data_to_json/template.toml +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/simple_prompt/README.md +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/simple_prompt/app.py +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/simple_prompt/env.example +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/simple_prompt/requirements.txt +0 -0
- {agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/templates/simple_prompt/template.toml +0 -0
|
@@ -26,7 +26,9 @@ class Span(pydantic.BaseModel):
|
|
|
26
26
|
spankind: str
|
|
27
27
|
status: SpanStatusCode
|
|
28
28
|
metadata: typing.Dict[str, typing.Any]
|
|
29
|
+
trace_id: str
|
|
29
30
|
user_id: typing.Optional[str]
|
|
31
|
+
content: typing.Dict[str, typing.Any]
|
|
30
32
|
children: typing.Optional[typing.List[Span]]
|
|
31
33
|
|
|
32
34
|
def json(self, **kwargs: typing.Any) -> str:
|
|
@@ -12,6 +12,7 @@ import functools
|
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
from tempfile import NamedTemporaryFile
|
|
14
14
|
from typing import Any, Callable, Dict, Optional, Tuple, List
|
|
15
|
+
from importlib.metadata import version
|
|
15
16
|
|
|
16
17
|
from fastapi.middleware.cors import CORSMiddleware
|
|
17
18
|
from fastapi import Body, FastAPI, UploadFile, HTTPException
|
|
@@ -119,6 +120,8 @@ class entrypoint(BaseDecorator):
|
|
|
119
120
|
routes = list()
|
|
120
121
|
|
|
121
122
|
def __init__(self, func: Callable[..., Any], route_path=""):
|
|
123
|
+
print(f"Using Agenta Python SDK version {version("agenta")}")
|
|
124
|
+
|
|
122
125
|
DEFAULT_PATH = "generate"
|
|
123
126
|
PLAYGROUND_PATH = "/playground"
|
|
124
127
|
RUN_PATH = "/run"
|
|
@@ -233,9 +236,6 @@ class entrypoint(BaseDecorator):
|
|
|
233
236
|
params=route["params"],
|
|
234
237
|
)
|
|
235
238
|
### ---------------------- #
|
|
236
|
-
|
|
237
|
-
print(entrypoint.routes)
|
|
238
|
-
|
|
239
239
|
if self.is_main_script(func) and route_path == "":
|
|
240
240
|
self.handle_terminal_run(
|
|
241
241
|
func,
|
|
@@ -293,6 +293,8 @@ class entrypoint(BaseDecorator):
|
|
|
293
293
|
For synchronous functions, it calls them directly, while for asynchronous functions,
|
|
294
294
|
it awaits their execution.
|
|
295
295
|
"""
|
|
296
|
+
print(f"Using Agenta Python SDK version {version("agenta")}")
|
|
297
|
+
|
|
296
298
|
WAIT_FOR_SPANS = True
|
|
297
299
|
TIMEOUT = 10
|
|
298
300
|
TIMESTEP = 0.01
|
|
@@ -331,32 +333,31 @@ class entrypoint(BaseDecorator):
|
|
|
331
333
|
if isinstance(result, Context):
|
|
332
334
|
save_context(result)
|
|
333
335
|
|
|
334
|
-
|
|
336
|
+
data = result
|
|
335
337
|
|
|
336
|
-
if
|
|
338
|
+
# PATCH : if result is not a dict, make it a dict
|
|
339
|
+
if not isinstance(result, dict):
|
|
337
340
|
data = result
|
|
338
|
-
|
|
339
|
-
#
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
elif isinstance(result, str):
|
|
348
|
-
data = {DEFAULT_KEY: result}
|
|
349
|
-
elif isinstance(result, int) or isinstance(result, float):
|
|
350
|
-
data = {DEFAULT_KEY: str(result)}
|
|
341
|
+
else:
|
|
342
|
+
# PATCH : if result is a legacy dict, clean it up
|
|
343
|
+
if (
|
|
344
|
+
"message" in result.keys()
|
|
345
|
+
and "cost" in result.keys()
|
|
346
|
+
and "usage" in result.keys()
|
|
347
|
+
):
|
|
348
|
+
data = {"message": result["message"]}
|
|
349
|
+
# END OF PATH
|
|
351
350
|
|
|
352
351
|
if data is None:
|
|
353
|
-
|
|
352
|
+
data = (
|
|
354
353
|
"Function executed successfully, but did return None. \n Are you sure you did not forget to return a value?",
|
|
355
354
|
)
|
|
356
355
|
|
|
357
|
-
|
|
356
|
+
response = BaseResponse(data=data, trace=trace)
|
|
357
|
+
|
|
358
|
+
logging.debug(response)
|
|
358
359
|
|
|
359
|
-
return
|
|
360
|
+
return response
|
|
360
361
|
|
|
361
362
|
except Exception as e:
|
|
362
363
|
self.handle_exception(e)
|
|
@@ -65,19 +65,24 @@ class instrument(BaseDecorator):
|
|
|
65
65
|
):
|
|
66
66
|
result = await func(*args, **kwargs)
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
TRACE_DEFAULT_KEY = "__default__"
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
# PATCH : if result is not a dict, make it a dict, in span
|
|
72
|
-
DEFAULT_KEY = "message"
|
|
70
|
+
outputs = result
|
|
73
71
|
|
|
72
|
+
# PATCH : if result is not a dict, make it a dict
|
|
74
73
|
if not isinstance(result, dict):
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if result
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
outputs = {TRACE_DEFAULT_KEY: result}
|
|
75
|
+
else:
|
|
76
|
+
# PATCH : if result is a legacy dict, clean it up
|
|
77
|
+
if (
|
|
78
|
+
"message" in result.keys()
|
|
79
|
+
and "cost" in result.keys()
|
|
80
|
+
and "usage" in result.keys()
|
|
81
|
+
):
|
|
82
|
+
outputs = {"message": result["message"]}
|
|
83
|
+
|
|
84
|
+
ag.tracing.store_cost(result["cost"])
|
|
85
|
+
ag.tracing.store_usage(result["usage"])
|
|
81
86
|
# END OF PATH
|
|
82
87
|
|
|
83
88
|
ag.tracing.store_outputs(outputs)
|
|
@@ -97,19 +102,24 @@ class instrument(BaseDecorator):
|
|
|
97
102
|
):
|
|
98
103
|
result = func(*args, **kwargs)
|
|
99
104
|
|
|
100
|
-
|
|
105
|
+
TRACE_DEFAULT_KEY = "__default__"
|
|
101
106
|
|
|
102
|
-
|
|
103
|
-
# PATCH : if result is not a dict, make it a dict, in span
|
|
104
|
-
DEFAULT_KEY = "message"
|
|
107
|
+
outputs = result
|
|
105
108
|
|
|
109
|
+
# PATCH : if result is not a dict, make it a dict
|
|
106
110
|
if not isinstance(result, dict):
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if result
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
outputs = {TRACE_DEFAULT_KEY: result}
|
|
112
|
+
else:
|
|
113
|
+
# PATCH : if result is a legacy dict, clean it up
|
|
114
|
+
if (
|
|
115
|
+
"message" in result.keys()
|
|
116
|
+
and "cost" in result.keys()
|
|
117
|
+
and "usage" in result.keys()
|
|
118
|
+
):
|
|
119
|
+
outputs = {"message": result["message"]}
|
|
120
|
+
|
|
121
|
+
ag.tracing.store_cost(result["cost"])
|
|
122
|
+
ag.tracing.store_usage(result["usage"])
|
|
113
123
|
# END OF PATH
|
|
114
124
|
|
|
115
125
|
ag.tracing.store_outputs(outputs)
|
|
@@ -59,51 +59,30 @@ def litellm_handler():
|
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
@debug()
|
|
62
|
-
def log_stream_event(self, kwargs,
|
|
62
|
+
def log_stream_event(self, kwargs, res: ModelResponse, start_time, end_time):
|
|
63
63
|
ag.tracing.set_status(status="OK", span_id=self.span.id)
|
|
64
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
65
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
64
66
|
ag.tracing.store_outputs(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"complete_streaming_response"
|
|
68
|
-
), # the complete streamed response (only set if `completion(..stream=True)`)
|
|
69
|
-
"usage": (
|
|
70
|
-
response_obj.usage.dict()
|
|
71
|
-
if hasattr(response_obj, "usage")
|
|
72
|
-
else None
|
|
73
|
-
), # litellm calculates usage
|
|
74
|
-
"cost": kwargs.get(
|
|
75
|
-
"response_cost"
|
|
76
|
-
), # litellm calculates response cost
|
|
77
|
-
},
|
|
67
|
+
# the complete streamed response (only set if `completion(..stream=True)`
|
|
68
|
+
outputs={"message": kwargs.get("complete_streaming_response")},
|
|
78
69
|
span_id=self.span.id,
|
|
79
70
|
)
|
|
80
71
|
ag.tracing.close_span(span_id=self.span.id)
|
|
81
72
|
|
|
82
73
|
@debug()
|
|
83
|
-
def log_success_event(
|
|
84
|
-
self, kwargs, response_obj: ModelResponse, start_time, end_time
|
|
85
|
-
):
|
|
74
|
+
def log_success_event(self, kwargs, res: ModelResponse, start_time, end_time):
|
|
86
75
|
ag.tracing.set_status(status="OK", span_id=self.span.id)
|
|
76
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
77
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
87
78
|
ag.tracing.store_outputs(
|
|
88
|
-
outputs={
|
|
89
|
-
"message": response_obj.choices[0].message.content,
|
|
90
|
-
"usage": (
|
|
91
|
-
response_obj.usage.dict()
|
|
92
|
-
if hasattr(response_obj, "usage")
|
|
93
|
-
else None
|
|
94
|
-
), # litellm calculates usage
|
|
95
|
-
"cost": kwargs.get(
|
|
96
|
-
"response_cost"
|
|
97
|
-
), # litellm calculates response cost
|
|
98
|
-
},
|
|
79
|
+
outputs={"message": res.choices[0].message.content},
|
|
99
80
|
span_id=self.span.id,
|
|
100
81
|
)
|
|
101
82
|
ag.tracing.close_span(span_id=self.span.id)
|
|
102
83
|
|
|
103
84
|
@debug()
|
|
104
|
-
def log_failure_event(
|
|
105
|
-
self, kwargs, response_obj: ModelResponse, start_time, end_time
|
|
106
|
-
):
|
|
85
|
+
def log_failure_event(self, kwargs, res: ModelResponse, start_time, end_time):
|
|
107
86
|
ag.tracing.set_status(status="ERROR", span_id=self.span.id)
|
|
108
87
|
ag.tracing.set_attributes(
|
|
109
88
|
{
|
|
@@ -116,69 +95,45 @@ def litellm_handler():
|
|
|
116
95
|
},
|
|
117
96
|
span_id=self.span.id,
|
|
118
97
|
)
|
|
98
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
99
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
119
100
|
ag.tracing.store_outputs(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
"usage": (
|
|
123
|
-
response_obj.usage.dict()
|
|
124
|
-
if hasattr(response_obj, "usage")
|
|
125
|
-
else None
|
|
126
|
-
), # litellm calculates usage
|
|
127
|
-
"cost": kwargs.get(
|
|
128
|
-
"response_cost"
|
|
129
|
-
), # litellm calculates response cost
|
|
130
|
-
},
|
|
101
|
+
# the Exception raised
|
|
102
|
+
outputs={"message": repr(kwargs["exception"])},
|
|
131
103
|
span_id=self.span.id,
|
|
132
104
|
)
|
|
133
105
|
ag.tracing.close_span(span_id=self.span.id)
|
|
134
106
|
|
|
135
107
|
@debug()
|
|
136
108
|
async def async_log_stream_event(
|
|
137
|
-
self, kwargs,
|
|
109
|
+
self, kwargs, res: ModelResponse, start_time, end_time
|
|
138
110
|
):
|
|
139
111
|
ag.tracing.set_status(status="OK", span_id=self.span.id)
|
|
112
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
113
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
140
114
|
ag.tracing.store_outputs(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"complete_streaming_response"
|
|
144
|
-
), # the complete streamed response (only set if `completion(..stream=True)`)
|
|
145
|
-
"usage": (
|
|
146
|
-
response_obj.usage.dict()
|
|
147
|
-
if hasattr(response_obj, "usage")
|
|
148
|
-
else None
|
|
149
|
-
), # litellm calculates usage
|
|
150
|
-
"cost": kwargs.get(
|
|
151
|
-
"response_cost"
|
|
152
|
-
), # litellm calculates response cost
|
|
153
|
-
},
|
|
115
|
+
# the complete streamed response (only set if `completion(..stream=True)`)
|
|
116
|
+
outputs={"message": kwargs.get("complete_streaming_response")},
|
|
154
117
|
span_id=self.span.id,
|
|
155
118
|
)
|
|
156
119
|
ag.tracing.close_span(span_id=self.span.id)
|
|
157
120
|
|
|
158
121
|
@debug()
|
|
159
122
|
async def async_log_success_event(
|
|
160
|
-
self, kwargs,
|
|
123
|
+
self, kwargs, res: ModelResponse, start_time, end_time
|
|
161
124
|
):
|
|
162
125
|
ag.tracing.set_status(status="OK", span_id=self.span.id)
|
|
126
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
127
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
163
128
|
ag.tracing.store_outputs(
|
|
164
|
-
outputs={
|
|
165
|
-
"message": response_obj.choices[0].message.content,
|
|
166
|
-
"usage": (
|
|
167
|
-
response_obj.usage.dict()
|
|
168
|
-
if hasattr(response_obj, "usage")
|
|
169
|
-
else None
|
|
170
|
-
), # litellm calculates usage
|
|
171
|
-
"cost": kwargs.get(
|
|
172
|
-
"response_cost"
|
|
173
|
-
), # litellm calculates response cost
|
|
174
|
-
},
|
|
129
|
+
outputs={"message": res.choices[0].message.content},
|
|
175
130
|
span_id=self.span.id,
|
|
176
131
|
)
|
|
177
132
|
ag.tracing.close_span(span_id=self.span.id)
|
|
178
133
|
|
|
179
134
|
@debug()
|
|
180
135
|
async def async_log_failure_event(
|
|
181
|
-
self, kwargs,
|
|
136
|
+
self, kwargs, res: ModelResponse, start_time, end_time
|
|
182
137
|
):
|
|
183
138
|
ag.tracing.set_status(status="ERROR", span_id=self.span.id)
|
|
184
139
|
ag.tracing.set_attributes(
|
|
@@ -192,18 +147,11 @@ def litellm_handler():
|
|
|
192
147
|
},
|
|
193
148
|
span_id=self.span.id,
|
|
194
149
|
)
|
|
150
|
+
ag.tracing.store_cost(kwargs.get("response_cost"))
|
|
151
|
+
ag.tracing.store_usage(res.usage.dict() if hasattr(res, "usage") else None)
|
|
195
152
|
ag.tracing.store_outputs(
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
"usage": (
|
|
199
|
-
response_obj.usage.dict()
|
|
200
|
-
if hasattr(response_obj, "usage")
|
|
201
|
-
else None
|
|
202
|
-
), # litellm calculates usage
|
|
203
|
-
"cost": kwargs.get(
|
|
204
|
-
"response_cost"
|
|
205
|
-
), # litellm calculates response cost
|
|
206
|
-
},
|
|
153
|
+
# the Exception raised
|
|
154
|
+
outputs={"message": repr(kwargs["exception"])},
|
|
207
155
|
span_id=self.span.id,
|
|
208
156
|
)
|
|
209
157
|
ag.tracing.close_span(span_id=self.span.id)
|
|
@@ -414,6 +414,30 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
414
414
|
|
|
415
415
|
span.outputs = outputs
|
|
416
416
|
|
|
417
|
+
@debug()
|
|
418
|
+
def store_cost(self, cost: float = 0.0, span_id: Optional[str] = None) -> None:
|
|
419
|
+
"""
|
|
420
|
+
...
|
|
421
|
+
"""
|
|
422
|
+
span = self._get_target_span(span_id)
|
|
423
|
+
|
|
424
|
+
logging.info(f"Setting span {span.id} {span.spankind.upper()} cost={cost}")
|
|
425
|
+
|
|
426
|
+
self._update_span_cost(span, cost)
|
|
427
|
+
|
|
428
|
+
@debug()
|
|
429
|
+
def store_usage(self, tokens: dict = {}, span_id: Optional[str] = None) -> None:
|
|
430
|
+
"""
|
|
431
|
+
...
|
|
432
|
+
"""
|
|
433
|
+
span = self._get_target_span(span_id)
|
|
434
|
+
|
|
435
|
+
logging.info(
|
|
436
|
+
f"Setting span {span.id} {span.spankind.upper()} tokens={repr(tokens)}"
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
self._update_span_tokens(span, tokens)
|
|
440
|
+
|
|
417
441
|
@debug()
|
|
418
442
|
def dump_trace(self):
|
|
419
443
|
"""
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from typing import Dict, List, Optional, Any
|
|
2
|
+
from typing import Dict, List, Optional, Any, Union
|
|
3
3
|
|
|
4
4
|
from pydantic import ConfigDict, BaseModel, HttpUrl
|
|
5
5
|
|
|
@@ -18,7 +18,7 @@ class LLMTokenUsage(BaseModel):
|
|
|
18
18
|
|
|
19
19
|
class BaseResponse(BaseModel):
|
|
20
20
|
version: Optional[str] = "2.0"
|
|
21
|
-
data: Optional[Dict[str, Any]]
|
|
21
|
+
data: Optional[Union[str, Dict[str, Any]]]
|
|
22
22
|
trace: Optional[Dict[str, Any]]
|
|
23
23
|
|
|
24
24
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/errors/unprocessable_entity_error.py
RENAMED
|
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
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/containers/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/environments/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/observability/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/resources/variants/types/__init__.py
RENAMED
|
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
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/environment_output_extended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_input.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_output.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_result.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/evaluation_scenario_score_update.py
RENAMED
|
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
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_input.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_output.py
RENAMED
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/human_evaluation_scenario_update.py
RENAMED
|
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
|
|
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
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/validation_error_loc_item.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.20.0a4 → agenta-0.20.0a7}/agenta/client/backend/types/workspace_member_response.py
RENAMED
|
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
|
|
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
|
|
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
|