agenta 0.15.0__tar.gz → 0.15.0a1__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.15.0 → agenta-0.15.0a1}/PKG-INFO +1 -1
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/Dockerfile.cloud.template +1 -1
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker_utils.py +1 -1
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/agenta_init.py +72 -78
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/decorators/llm_entrypoint.py +23 -16
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/decorators/tracing.py +2 -10
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/tracing/llm_tracing.py +11 -13
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/tracing/logger.py +1 -1
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/types.py +2 -3
- {agenta-0.15.0 → agenta-0.15.0a1}/pyproject.toml +2 -2
- {agenta-0.15.0 → agenta-0.15.0a1}/README.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/evaluation_commands.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/helper.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/main.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/telemetry.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/variant_commands.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/cli/variant_configs.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/Readme.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/api.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/api_models.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/api_error.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/client_wrapper.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/datetime_utils.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/jsonable_encoder.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/errors/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/apps/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/apps/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/bases/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/bases/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/configs/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/configs/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/containers/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/containers/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/containers/types/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/containers/types/container_templates_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/environments/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/environments/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/evaluations/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/evaluations/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/evaluators/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/evaluators/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/observability/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/observability/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/testsets/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/testsets/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/variants/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/variants/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/variants/types/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/variants/types/add_variant_from_base_and_config_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/aggregated_result.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/app.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/app_variant_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/app_variant_revision.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/base_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/body_import_testset.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/config_db.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/create_app_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/create_span.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/create_trace_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/docker_env_vars.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/environment_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/environment_output_extended.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/environment_revision.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/error.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_scenario.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_scenario_score_update.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_type.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluation_webhook.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluator.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/evaluator_config.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/feedback.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/get_config_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/http_validation_error.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario_update.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_update.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/image.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/invite_request.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/list_api_keys_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/llm_tokens.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/new_human_evaluation.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/new_testset.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/organization.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/organization_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/permission.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/result.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/score.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/span.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/span_detail.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/span_kind.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/span_status_code.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/span_variant.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/template.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/template_image_info.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/test_set_output_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/test_set_simple_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/trace_detail.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/uri.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/validation_error.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/variant_action.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/variant_action_enum.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/with_pagination.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/workspace_member_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/workspace_permission.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/workspace_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/workspace_role.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/workspace_role_response.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/exceptions.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/config.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/config.toml +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/Dockerfile.template +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/README.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/entrypoint.sh +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/lambda_function.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/docker/docker-assets/main.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/__init__.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/client.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/context.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/decorators/base.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/router.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/tracing/context_manager.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/tracing/tasks_manager.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/utils/globals.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/utils/helper/openai_cost.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/sdk/utils/preinit.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/compose_email/README.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/compose_email/app.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/compose_email/env.example +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/compose_email/requirements.txt +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/compose_email/template.toml +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/extract_data_to_json/README.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/extract_data_to_json/app.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/extract_data_to_json/env.example +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/extract_data_to_json/requirements.txt +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/extract_data_to_json/template.toml +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/simple_prompt/README.md +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/simple_prompt/app.py +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/simple_prompt/env.example +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/simple_prompt/requirements.txt +0 -0
- {agenta-0.15.0 → agenta-0.15.0a1}/agenta/templates/simple_prompt/template.toml +0 -0
|
@@ -2,7 +2,7 @@ FROM public.ecr.aws/s2t9a1r1/agentaai/lambda_templates_public:main
|
|
|
2
2
|
|
|
3
3
|
COPY requirements.txt ${LAMBDA_TASK_ROOT}
|
|
4
4
|
RUN pip install --no-cache-dir --disable-pip-version-check -U agenta
|
|
5
|
-
RUN pip install --no-cache-dir --disable-pip-version-check -
|
|
5
|
+
RUN pip install --no-cache-dir --disable-pip-version-check -r requirements.txt
|
|
6
6
|
RUN pip install --no-cache-dir --disable-pip-version-check mangum
|
|
7
7
|
COPY . ${LAMBDA_TASK_ROOT}
|
|
8
8
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import logging
|
|
3
|
-
import toml
|
|
4
3
|
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from agenta.sdk.utils.globals import set_global
|
|
@@ -41,69 +40,85 @@ class AgentaSingleton:
|
|
|
41
40
|
app_id: Optional[str] = None,
|
|
42
41
|
host: Optional[str] = None,
|
|
43
42
|
api_key: Optional[str] = None,
|
|
44
|
-
config_fname: Optional[str] = None,
|
|
45
43
|
) -> None:
|
|
46
44
|
"""Main function to initialize the singleton.
|
|
47
45
|
|
|
48
|
-
Initializes the singleton with the given `
|
|
49
|
-
|
|
50
|
-
2. Value from the configuration file specified by `config_fname`.
|
|
51
|
-
3. Environment variables.
|
|
52
|
-
|
|
53
|
-
Examples:
|
|
54
|
-
ag.init(app_id="xxxx", api_key="xxx")
|
|
55
|
-
ag.init(config_fname="config.toml")
|
|
56
|
-
ag.init() #assuming env vars are set
|
|
46
|
+
Initializes the singleton with the given `app_name`, `base_name`, and `host`. If any of these arguments are not provided,
|
|
47
|
+
the function will look for them in environment variables.
|
|
57
48
|
|
|
58
49
|
Args:
|
|
59
|
-
app_id (Optional[str]): ID of the Agenta application. Defaults to None. If not provided, will look for "
|
|
60
|
-
host (Optional[str]): Host name of the backend server. Defaults to None. If not provided, will look for "
|
|
61
|
-
api_key (Optional[str]): API Key to use with the host of the backend server.
|
|
62
|
-
|
|
50
|
+
app_id (Optional[str]): ID of the Agenta application. Defaults to None. If not provided, will look for "AGENTA_APP_NAME" in environment variables.
|
|
51
|
+
host (Optional[str]): Host name of the backend server. Defaults to None. If not provided, will look for "AGENTA_HOST" in environment variables.
|
|
52
|
+
api_key (Optional[str]): API Key to use with the host of the backend server.
|
|
53
|
+
kwargs (Any): Additional keyword arguments.
|
|
63
54
|
|
|
64
55
|
Raises:
|
|
65
|
-
ValueError: If `
|
|
56
|
+
ValueError: If `app_name`, `base_name`, or `host` are not specified either as arguments or in the environment variables.
|
|
66
57
|
"""
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
api_key or config.get("api_key") or os.environ.get("AGENTA_API_KEY")
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
if not self.app_id:
|
|
82
|
-
raise ValueError(
|
|
83
|
-
"App ID must be specified. You can provide it in one of the following ways:\n"
|
|
84
|
-
"1. As an argument when calling ag.init(app_id='your_app_id').\n"
|
|
85
|
-
"2. In the configuration file specified by config_fname.\n"
|
|
86
|
-
"3. As an environment variable 'AGENTA_APP_ID'."
|
|
87
|
-
)
|
|
88
|
-
self.base_id = os.environ.get("AGENTA_BASE_ID")
|
|
89
|
-
if self.base_id is None:
|
|
58
|
+
|
|
59
|
+
self.api_key = api_key or os.environ.get("AGENTA_API_KEY")
|
|
60
|
+
self.host = host or os.environ.get("AGENTA_HOST", "http://localhost")
|
|
61
|
+
|
|
62
|
+
app_id = app_id or os.environ.get("AGENTA_APP_ID")
|
|
63
|
+
if not app_id:
|
|
64
|
+
raise ValueError("App ID must be specified.")
|
|
65
|
+
|
|
66
|
+
base_id = os.environ.get("AGENTA_BASE_ID")
|
|
67
|
+
base_name = os.environ.get("AGENTA_BASE_NAME")
|
|
68
|
+
if base_id is None and (app_id is None or base_name is None):
|
|
90
69
|
print(
|
|
91
|
-
"Warning: Your configuration will not be saved permanently since
|
|
70
|
+
f"Warning: Your configuration will not be saved permanently since app_name and base_name are not provided."
|
|
92
71
|
)
|
|
72
|
+
else:
|
|
73
|
+
try:
|
|
74
|
+
base_id = self.get_app_base(app_id, base_name) # type: ignore
|
|
75
|
+
except Exception as ex:
|
|
76
|
+
raise APIRequestError(
|
|
77
|
+
f"Failed to get base id and/or app_id from the server with error: {ex}"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
self.app_id = app_id
|
|
81
|
+
self.base_id = base_id
|
|
82
|
+
self.variant_id = os.environ.get("AGENTA_VARIANT_ID")
|
|
83
|
+
self.variant_name = os.environ.get("AGENTA_VARIANT_NAME")
|
|
84
|
+
self.config = Config(base_id=self.base_id, host=self.host, api_key=self.api_key) # type: ignore
|
|
85
|
+
|
|
86
|
+
def get_app_base(self, app_id: str, base_name: str) -> str:
|
|
87
|
+
bases = self.client.bases.list_bases(app_id=app_id, base_name=base_name)
|
|
88
|
+
if len(bases) == 0:
|
|
89
|
+
raise APIRequestError(f"No base was found for the app {app_id}")
|
|
90
|
+
return bases[0].base_id
|
|
91
|
+
|
|
92
|
+
def get_current_config(self):
|
|
93
|
+
"""
|
|
94
|
+
Retrieves the current active configuration
|
|
95
|
+
"""
|
|
93
96
|
|
|
94
|
-
|
|
97
|
+
if self._config_data is None:
|
|
98
|
+
raise RuntimeError("AgentaSingleton has not been initialized")
|
|
99
|
+
return self._config_data
|
|
95
100
|
|
|
96
101
|
|
|
97
102
|
class Config:
|
|
98
|
-
def __init__(self, base_id: str, host: str, api_key: str
|
|
103
|
+
def __init__(self, base_id: str, host: str, api_key: str):
|
|
99
104
|
self.base_id = base_id
|
|
100
105
|
self.host = host
|
|
106
|
+
self.api_key = api_key
|
|
101
107
|
|
|
102
108
|
if base_id is None or host is None:
|
|
103
109
|
self.persist = False
|
|
104
110
|
else:
|
|
105
111
|
self.persist = True
|
|
106
|
-
|
|
112
|
+
|
|
113
|
+
@property
|
|
114
|
+
def client(self):
|
|
115
|
+
"""API Backend client.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
AgentaAPI: instance of agenta api backend
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
return AgentaApi(base_url=self.host + "/api", api_key=self.api_key)
|
|
107
122
|
|
|
108
123
|
def register_default(self, overwrite=False, **kwargs):
|
|
109
124
|
"""alias for default"""
|
|
@@ -122,7 +137,7 @@ class Config:
|
|
|
122
137
|
self.push(config_name="default", overwrite=overwrite, **kwargs)
|
|
123
138
|
except Exception as ex:
|
|
124
139
|
logger.warning(
|
|
125
|
-
"Unable to push the default configuration to the server.
|
|
140
|
+
"Unable to push the default configuration to the server." + str(ex)
|
|
126
141
|
)
|
|
127
142
|
|
|
128
143
|
def push(self, config_name: str, overwrite=True, **kwargs):
|
|
@@ -143,7 +158,7 @@ class Config:
|
|
|
143
158
|
)
|
|
144
159
|
except Exception as ex:
|
|
145
160
|
logger.warning(
|
|
146
|
-
"Failed to push the configuration to the server with error:
|
|
161
|
+
"Failed to push the configuration to the server with error: " + str(ex)
|
|
147
162
|
)
|
|
148
163
|
|
|
149
164
|
def pull(
|
|
@@ -153,7 +168,7 @@ class Config:
|
|
|
153
168
|
if not self.persist and (
|
|
154
169
|
config_name != "default" or environment_name is not None
|
|
155
170
|
):
|
|
156
|
-
raise
|
|
171
|
+
raise Exception(
|
|
157
172
|
"Cannot pull the configuration from the server since the app_name and base_name are not provided."
|
|
158
173
|
)
|
|
159
174
|
if self.persist:
|
|
@@ -170,13 +185,13 @@ class Config:
|
|
|
170
185
|
)
|
|
171
186
|
except Exception as ex:
|
|
172
187
|
logger.warning(
|
|
173
|
-
"Failed to pull the configuration from the server with error:
|
|
174
|
-
str(ex)
|
|
188
|
+
"Failed to pull the configuration from the server with error: "
|
|
189
|
+
+ str(ex)
|
|
175
190
|
)
|
|
176
191
|
try:
|
|
177
192
|
self.set(**{"current_version": config.current_version, **config.parameters})
|
|
178
193
|
except Exception as ex:
|
|
179
|
-
logger.warning("Failed to set the configuration with error:
|
|
194
|
+
logger.warning("Failed to set the configuration with error: " + str(ex))
|
|
180
195
|
|
|
181
196
|
def all(self):
|
|
182
197
|
"""Returns all the parameters for the app variant"""
|
|
@@ -184,15 +199,7 @@ class Config:
|
|
|
184
199
|
k: v
|
|
185
200
|
for k, v in self.__dict__.items()
|
|
186
201
|
if k
|
|
187
|
-
not in [
|
|
188
|
-
"app_name",
|
|
189
|
-
"base_name",
|
|
190
|
-
"host",
|
|
191
|
-
"base_id",
|
|
192
|
-
"api_key",
|
|
193
|
-
"persist",
|
|
194
|
-
"client",
|
|
195
|
-
]
|
|
202
|
+
not in ["app_name", "base_name", "host", "base_id", "api_key", "persist"]
|
|
196
203
|
}
|
|
197
204
|
|
|
198
205
|
# function to set the parameters for the app variant
|
|
@@ -219,37 +226,24 @@ def init(
|
|
|
219
226
|
app_id: Optional[str] = None,
|
|
220
227
|
host: Optional[str] = None,
|
|
221
228
|
api_key: Optional[str] = None,
|
|
222
|
-
config_fname: Optional[str] = None,
|
|
223
229
|
max_workers: Optional[int] = None,
|
|
224
230
|
):
|
|
225
|
-
"""Main function to initialize the
|
|
226
|
-
|
|
227
|
-
Initializes agenta with the given `app_id`, `host`, and `api_key`. The order of precedence for these variables is:
|
|
228
|
-
1. Explicit argument provided in the function call.
|
|
229
|
-
2. Value from the configuration file specified by `config_fname`.
|
|
230
|
-
3. Environment variables.
|
|
231
|
-
|
|
232
|
-
- `app_id` is a required parameter (to be specified in one of the above ways)
|
|
233
|
-
- `host` is optional and defaults to "https://cloud.agenta.ai"
|
|
234
|
-
- `api_key` is optional and defaults to "". It is required only when using cloud or enterprise version of agenta.
|
|
235
|
-
|
|
231
|
+
"""Main function to be called by the user to initialize the sdk.
|
|
236
232
|
|
|
237
233
|
Args:
|
|
238
|
-
app_id (
|
|
239
|
-
host (
|
|
240
|
-
api_key (
|
|
241
|
-
config_fname (Optional[str]): Path to the configuration file. Defaults to None.
|
|
242
|
-
|
|
243
|
-
Raises:
|
|
244
|
-
ValueError: If `app_id` is not specified either as an argument, in the config file, or in the environment variables.
|
|
234
|
+
app_id (str): The Id of the app.
|
|
235
|
+
host (str): The host of the backend server.
|
|
236
|
+
api_key (str): The API key to use for the backend server.
|
|
245
237
|
"""
|
|
246
238
|
|
|
247
239
|
singleton = AgentaSingleton()
|
|
248
240
|
|
|
249
|
-
singleton.init(app_id=app_id, host=host, api_key=api_key
|
|
241
|
+
singleton.init(app_id=app_id, host=host, api_key=api_key)
|
|
250
242
|
tracing = Tracing(
|
|
251
243
|
host=singleton.host, # type: ignore
|
|
252
244
|
app_id=singleton.app_id, # type: ignore
|
|
245
|
+
variant_id=singleton.variant_id, # type: ignore
|
|
246
|
+
variant_name=singleton.variant_name,
|
|
253
247
|
api_key=singleton.api_key,
|
|
254
248
|
max_workers=max_workers,
|
|
255
249
|
)
|
|
@@ -55,18 +55,20 @@ app.include_router(router, prefix="")
|
|
|
55
55
|
class entrypoint(BaseDecorator):
|
|
56
56
|
"""Decorator class to wrap a function for HTTP POST, terminal exposure and enable tracing.
|
|
57
57
|
|
|
58
|
+
Args:
|
|
59
|
+
BaseDecorator (object): base decorator class
|
|
58
60
|
|
|
59
61
|
Example:
|
|
60
62
|
```python
|
|
61
63
|
import agenta as ag
|
|
62
64
|
|
|
63
|
-
@ag.entrypoint
|
|
65
|
+
@ag.entrypoint(enable_tracing=True) # Defaults to False
|
|
64
66
|
async def chain_of_prompts_llm(prompt: str):
|
|
65
67
|
return ...
|
|
66
68
|
```
|
|
67
69
|
"""
|
|
68
70
|
|
|
69
|
-
def
|
|
71
|
+
def __call__(self, func: Callable[..., Any]):
|
|
70
72
|
endpoint_name = "generate"
|
|
71
73
|
func_signature = inspect.signature(func)
|
|
72
74
|
config_params = agenta.config.all()
|
|
@@ -80,7 +82,7 @@ class entrypoint(BaseDecorator):
|
|
|
80
82
|
|
|
81
83
|
# Set the configuration and environment of the LLM app parent span at run-time
|
|
82
84
|
agenta.tracing.set_span_attribute(
|
|
83
|
-
|
|
85
|
+
{"config": config_params, "environment": "playground"}
|
|
84
86
|
)
|
|
85
87
|
|
|
86
88
|
llm_result = await self.execute_function(
|
|
@@ -103,7 +105,7 @@ class entrypoint(BaseDecorator):
|
|
|
103
105
|
|
|
104
106
|
# Set the configuration and environment of the LLM app parent span at run-time
|
|
105
107
|
agenta.tracing.set_span_attribute(
|
|
106
|
-
|
|
108
|
+
{"config": config_params, "environment": kwargs["environment"]}
|
|
107
109
|
)
|
|
108
110
|
|
|
109
111
|
llm_result = await self.execute_function(
|
|
@@ -132,12 +134,13 @@ class entrypoint(BaseDecorator):
|
|
|
132
134
|
)
|
|
133
135
|
|
|
134
136
|
if self.is_main_script(func):
|
|
135
|
-
self.handle_terminal_run(
|
|
137
|
+
result = self.handle_terminal_run(
|
|
136
138
|
func,
|
|
137
139
|
func_signature.parameters, # type: ignore
|
|
138
140
|
config_params,
|
|
139
141
|
ingestible_files,
|
|
140
142
|
)
|
|
143
|
+
return result
|
|
141
144
|
|
|
142
145
|
def extract_ingestible_files(
|
|
143
146
|
self,
|
|
@@ -202,16 +205,9 @@ class entrypoint(BaseDecorator):
|
|
|
202
205
|
return FuncResponse(**result, latency=round(latency, 4))
|
|
203
206
|
if isinstance(result, str):
|
|
204
207
|
return FuncResponse(message=result, latency=round(latency, 4)) # type: ignore
|
|
205
|
-
if isinstance(result, int) or isinstance(result, float):
|
|
206
|
-
return FuncResponse(message=str(result), latency=round(latency, 4))
|
|
207
|
-
if result is None:
|
|
208
|
-
return FuncResponse(
|
|
209
|
-
message="Function executed successfully, but did return None. \n Are you sure you did not forget to return a value?",
|
|
210
|
-
latency=round(latency, 4),
|
|
211
|
-
)
|
|
212
208
|
except Exception as e:
|
|
213
209
|
self.handle_exception(e)
|
|
214
|
-
return FuncResponse(message="Unexpected error occurred
|
|
210
|
+
return FuncResponse(message="Unexpected error occurred", latency=0) # type: ignore
|
|
215
211
|
|
|
216
212
|
def handle_exception(self, e: Exception):
|
|
217
213
|
"""Handle exceptions."""
|
|
@@ -326,7 +322,17 @@ class entrypoint(BaseDecorator):
|
|
|
326
322
|
if is_main_script(my_function):
|
|
327
323
|
print("This is the main script.")
|
|
328
324
|
"""
|
|
329
|
-
|
|
325
|
+
|
|
326
|
+
# this ensures that when we call main.py, it starts the fastapi server
|
|
327
|
+
if os.path.splitext(os.path.basename(sys.argv[0]))[0] == "main":
|
|
328
|
+
return False
|
|
329
|
+
|
|
330
|
+
# the function that gets passed to entrypoint will always be called from sdk/decorators/tracing.py
|
|
331
|
+
if os.path.splitext(os.path.basename(inspect.getfile(func)))[0] == "tracing":
|
|
332
|
+
return True
|
|
333
|
+
|
|
334
|
+
# same behaviour as the first single-line comment above
|
|
335
|
+
return False
|
|
330
336
|
|
|
331
337
|
def handle_terminal_run(
|
|
332
338
|
self,
|
|
@@ -385,8 +391,8 @@ class entrypoint(BaseDecorator):
|
|
|
385
391
|
|
|
386
392
|
# Set the configuration and environment of the LLM app parent span at run-time
|
|
387
393
|
agenta.tracing.set_span_attribute(
|
|
388
|
-
|
|
389
|
-
|
|
394
|
+
{"config": agenta.config.all(), "environment": "bash"}
|
|
395
|
+
)
|
|
390
396
|
|
|
391
397
|
loop = asyncio.get_event_loop()
|
|
392
398
|
result = loop.run_until_complete(
|
|
@@ -398,6 +404,7 @@ class entrypoint(BaseDecorator):
|
|
|
398
404
|
print(
|
|
399
405
|
f"\n========== Result ==========\n\nMessage: {result.message}\nCost: {result.cost}\nToken Usage: {result.usage}"
|
|
400
406
|
)
|
|
407
|
+
return result
|
|
401
408
|
|
|
402
409
|
def override_schema(
|
|
403
410
|
self, openapi_schema: dict, func_name: str, endpoint: str, params: dict
|
|
@@ -43,13 +43,9 @@ class instrument(BaseDecorator):
|
|
|
43
43
|
@wraps(func)
|
|
44
44
|
async def async_wrapper(*args, **kwargs):
|
|
45
45
|
result = None
|
|
46
|
-
func_args = inspect.getfullargspec(func).args
|
|
47
|
-
input_dict = {name: value for name, value in zip(func_args, args)}
|
|
48
|
-
input_dict.update(kwargs)
|
|
49
|
-
|
|
50
46
|
span = self.tracing.start_span(
|
|
51
47
|
name=func.__name__,
|
|
52
|
-
input=
|
|
48
|
+
input=kwargs,
|
|
53
49
|
spankind=self.spankind,
|
|
54
50
|
config=self.config,
|
|
55
51
|
)
|
|
@@ -71,13 +67,9 @@ class instrument(BaseDecorator):
|
|
|
71
67
|
@wraps(func)
|
|
72
68
|
def sync_wrapper(*args, **kwargs):
|
|
73
69
|
result = None
|
|
74
|
-
func_args = inspect.getfullargspec(func).args
|
|
75
|
-
input_dict = {name: value for name, value in zip(func_args, args)}
|
|
76
|
-
input_dict.update(kwargs)
|
|
77
|
-
|
|
78
70
|
span = self.tracing.start_span(
|
|
79
71
|
name=func.__name__,
|
|
80
|
-
input=
|
|
72
|
+
input=kwargs,
|
|
81
73
|
spankind=self.spankind,
|
|
82
74
|
config=self.config,
|
|
83
75
|
)
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
# Stdlib Imports
|
|
1
2
|
import os
|
|
2
3
|
from threading import Lock
|
|
3
4
|
from datetime import datetime, timezone
|
|
4
5
|
from typing import Optional, Dict, Any, List, Union
|
|
5
6
|
|
|
7
|
+
# Own Imports
|
|
6
8
|
from agenta.sdk.tracing.logger import llm_logger
|
|
7
9
|
from agenta.sdk.tracing.tasks_manager import TaskQueue
|
|
8
10
|
from agenta.client.backend.client import AsyncAgentaApi
|
|
9
11
|
from agenta.client.backend.client import AsyncObservabilityClient
|
|
10
12
|
from agenta.client.backend.types.create_span import CreateSpan, SpanKind, SpanStatusCode
|
|
11
13
|
|
|
14
|
+
# Third Party Imports
|
|
12
15
|
from bson.objectid import ObjectId
|
|
13
16
|
|
|
14
|
-
VARIANT_TRACKING_FEATURE_FLAG = False
|
|
15
|
-
|
|
16
17
|
|
|
17
18
|
class SingletonMeta(type):
|
|
18
19
|
"""
|
|
@@ -57,6 +58,8 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
57
58
|
self,
|
|
58
59
|
host: str,
|
|
59
60
|
app_id: str,
|
|
61
|
+
variant_id: Optional[str] = None,
|
|
62
|
+
variant_name: Optional[str] = None,
|
|
60
63
|
api_key: Optional[str] = None,
|
|
61
64
|
max_workers: Optional[int] = None,
|
|
62
65
|
):
|
|
@@ -64,6 +67,8 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
64
67
|
self.api_key = api_key if api_key is not None else ""
|
|
65
68
|
self.llm_logger = llm_logger
|
|
66
69
|
self.app_id = app_id
|
|
70
|
+
self.variant_id = variant_id
|
|
71
|
+
self.variant_name = variant_name
|
|
67
72
|
self.tasks_manager = TaskQueue(
|
|
68
73
|
max_workers if max_workers else 4, logger=llm_logger
|
|
69
74
|
)
|
|
@@ -71,9 +76,7 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
71
76
|
self.active_trace_id: Optional[str] = None
|
|
72
77
|
self.pending_spans: List[CreateSpan] = []
|
|
73
78
|
self.tags: List[str] = []
|
|
74
|
-
self.trace_config_cache: Dict[
|
|
75
|
-
str, Any
|
|
76
|
-
] = {} # used to save the trace configuration before starting the first span
|
|
79
|
+
self.trace_config_cache: Dict[str, Any] = {} # used to save the trace configuration before starting the first span
|
|
77
80
|
self.span_dict: Dict[str, CreateSpan] = {} # type: ignore
|
|
78
81
|
|
|
79
82
|
@property
|
|
@@ -92,9 +95,7 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
92
95
|
self,
|
|
93
96
|
attributes: Dict[str, Any] = {},
|
|
94
97
|
):
|
|
95
|
-
if
|
|
96
|
-
self.active_span is None
|
|
97
|
-
): # This is the case where entrypoint wants to save the trace information but the parent span has not been initialized yet
|
|
98
|
+
if self.active_span is None: # This is the case where entrypoint wants to save the trace information but the parent span has not been initialized yet
|
|
98
99
|
for key, value in attributes.items():
|
|
99
100
|
self.trace_config_cache[key] = value
|
|
100
101
|
else:
|
|
@@ -121,6 +122,8 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
121
122
|
inputs=input,
|
|
122
123
|
name=name,
|
|
123
124
|
app_id=self.app_id,
|
|
125
|
+
variant_id=self.variant_id,
|
|
126
|
+
variant_name=self.variant_name,
|
|
124
127
|
config=config,
|
|
125
128
|
spankind=spankind.upper(),
|
|
126
129
|
attributes={},
|
|
@@ -148,11 +151,6 @@ class Tracing(metaclass=SingletonMeta):
|
|
|
148
151
|
if not config and self.trace_config_cache is not None
|
|
149
152
|
else None
|
|
150
153
|
)
|
|
151
|
-
if VARIANT_TRACKING_FEATURE_FLAG:
|
|
152
|
-
# TODO: we should get the variant_id and variant_name (and environment) from the config object
|
|
153
|
-
span.variant_id = config.variant_id
|
|
154
|
-
span.variant_name = (config.variant_name,)
|
|
155
|
-
|
|
156
154
|
else:
|
|
157
155
|
span.parent_span_id = self.active_span.id
|
|
158
156
|
self.span_dict[span.id] = span
|
|
@@ -131,9 +131,8 @@ class GroupedMultipleChoiceParam(str):
|
|
|
131
131
|
def __new__(cls, default: str = None, choices: Dict[str, List[str]] = None):
|
|
132
132
|
if choices is None:
|
|
133
133
|
choices = {}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
):
|
|
134
|
+
|
|
135
|
+
if default and not any(default in choices for choices in choices.values()):
|
|
137
136
|
if not choices:
|
|
138
137
|
print(
|
|
139
138
|
f"Warning: Default value {default} provided but choices are empty."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "agenta"
|
|
3
|
-
version = "0.15.
|
|
3
|
+
version = "0.15.0a1"
|
|
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 = "^
|
|
37
|
+
setuptools = "^69.5.1"
|
|
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
|
|
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.15.0 → agenta-0.15.0a1}/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.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/containers/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
|
{agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/resources/variants/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/aggregated_result_evaluator_config.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
|
{agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/environment_output_extended.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
|
{agenta-0.15.0 → agenta-0.15.0a1}/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
|
|
File without changes
|
{agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario_input.py
RENAMED
|
File without changes
|
{agenta-0.15.0 → agenta-0.15.0a1}/agenta/client/backend/types/human_evaluation_scenario_output.py
RENAMED
|
File without changes
|
{agenta-0.15.0 → agenta-0.15.0a1}/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
|
|
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
|