agenta 0.32.0a1__py3-none-any.whl → 0.33.0a1__py3-none-any.whl

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 (31) hide show
  1. agenta/client/backend/__init__.py +4 -8
  2. agenta/client/backend/apps/client.py +68 -68
  3. agenta/client/backend/bases/client.py +10 -10
  4. agenta/client/backend/client.py +96 -88
  5. agenta/client/backend/containers/client.py +70 -28
  6. agenta/client/backend/environments/client.py +8 -8
  7. agenta/client/backend/evaluations/client.py +46 -46
  8. agenta/client/backend/evaluators/client.py +32 -32
  9. agenta/client/backend/human_evaluations/__init__.py +1 -0
  10. agenta/client/backend/human_evaluations/client.py +1696 -0
  11. agenta/client/backend/testsets/client.py +28 -28
  12. agenta/client/backend/types/__init__.py +3 -7
  13. agenta/client/backend/types/{evaluation_scenario_score_update.py → delete_evaluation.py} +3 -3
  14. agenta/client/backend/variants/client.py +54 -42
  15. agenta/sdk/decorators/routing.py +32 -10
  16. agenta/sdk/decorators/tracing.py +16 -4
  17. agenta/sdk/litellm/litellm.py +44 -8
  18. agenta/sdk/litellm/mockllm.py +2 -2
  19. agenta/sdk/litellm/mocks/__init__.py +9 -3
  20. agenta/sdk/middleware/auth.py +5 -1
  21. agenta/sdk/middleware/config.py +10 -2
  22. agenta/sdk/tracing/exporters.py +0 -1
  23. agenta/sdk/tracing/inline.py +26 -30
  24. agenta/sdk/types.py +12 -9
  25. {agenta-0.32.0a1.dist-info → agenta-0.33.0a1.dist-info}/METADATA +9 -11
  26. {agenta-0.32.0a1.dist-info → agenta-0.33.0a1.dist-info}/RECORD +28 -29
  27. agenta/client/backend/types/human_evaluation_scenario_update.py +0 -30
  28. agenta/client/backend/types/human_evaluation_update.py +0 -22
  29. agenta/client/backend/types/new_human_evaluation.py +0 -27
  30. {agenta-0.32.0a1.dist-info → agenta-0.33.0a1.dist-info}/WHEEL +0 -0
  31. {agenta-0.32.0a1.dist-info → agenta-0.33.0a1.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,5 @@
1
+ from typing import Callable
2
+
1
3
  from pydantic import BaseModel
2
4
 
3
5
 
@@ -13,8 +15,8 @@ class MockResponseModel(BaseModel):
13
15
  choices: list[MockChoiceModel]
14
16
 
15
17
 
16
- MOCKS = {
17
- "hello": MockResponseModel(
18
+ def hello_mock_response(*args, **kwargs) -> MockResponseModel:
19
+ return MockResponseModel(
18
20
  choices=[
19
21
  MockChoiceModel(
20
22
  message=MockMessageModel(
@@ -22,5 +24,9 @@ MOCKS = {
22
24
  )
23
25
  )
24
26
  ],
25
- ),
27
+ )
28
+
29
+
30
+ MOCKS: dict[str, Callable[..., MockResponseModel]] = {
31
+ "hello": hello_mock_response,
26
32
  }
@@ -98,7 +98,11 @@ class AuthMiddleware(BaseHTTPMiddleware):
98
98
 
99
99
  cookies = {"sAccessToken": access_token} if access_token else None
100
100
 
101
- baggage = request.state.otel.get("baggage") if request.state.otel else {}
101
+ baggage = (
102
+ getattr(request.state.otel, "baggage")
103
+ if hasattr(request.state, "otel")
104
+ else {}
105
+ )
102
106
 
103
107
  project_id = (
104
108
  # CLEANEST
@@ -123,7 +123,7 @@ class ConfigMiddleware(BaseHTTPMiddleware):
123
123
  ref_part = refs.get(ref_part_key)
124
124
 
125
125
  if ref_part:
126
- references[ref_prefix + "." + ref_part_key] = ref_part
126
+ references[ref_prefix + "." + ref_part_key] = str(ref_part)
127
127
 
128
128
  _cache.put(_hash, {"parameters": parameters, "references": references})
129
129
 
@@ -160,12 +160,20 @@ class ConfigMiddleware(BaseHTTPMiddleware):
160
160
  or body.get("app")
161
161
  )
162
162
 
163
- if not any([application_id, application_slug]):
163
+ application_version = (
164
+ # CLEANEST
165
+ baggage.get("application_version")
166
+ # ALTERNATIVE
167
+ or request.query_params.get("application_version")
168
+ )
169
+
170
+ if not any([application_id, application_slug, application_version]):
164
171
  return None
165
172
 
166
173
  return Reference(
167
174
  id=application_id,
168
175
  slug=application_slug,
176
+ version=application_version,
169
177
  )
170
178
 
171
179
  async def _parse_variant_ref(
@@ -48,7 +48,6 @@ class InlineTraceExporter(SpanExporter):
48
48
  trace_id: int,
49
49
  ) -> bool:
50
50
  is_ready = trace_id in self._registry
51
-
52
51
  return is_ready
53
52
 
54
53
  def fetch(
@@ -701,15 +701,6 @@ def _parse_from_semconv(
701
701
  def _parse_from_links(
702
702
  otel_span_dto: OTelSpanDTO,
703
703
  ) -> dict:
704
- # TESTING
705
- otel_span_dto.links = [
706
- OTelLinkDTO(
707
- context=otel_span_dto.context,
708
- attributes={"ag.type.link": "testcase"},
709
- )
710
- ]
711
- # -------
712
-
713
704
  # LINKS
714
705
  links = None
715
706
  otel_links = None
@@ -926,8 +917,9 @@ def parse_to_agenta_span_dto(
926
917
  if span_dto.refs:
927
918
  span_dto.refs = _unmarshal_attributes(span_dto.refs)
928
919
 
929
- for link in span_dto.links:
930
- link.tree_id = None
920
+ if isinstance(span_dto.links, list):
921
+ for link in span_dto.links:
922
+ link.tree_id = None
931
923
 
932
924
  if span_dto.nodes:
933
925
  for v in span_dto.nodes.values():
@@ -1030,6 +1022,24 @@ def _parse_readable_spans(
1030
1022
  otel_span_dtos = list()
1031
1023
 
1032
1024
  for span in spans:
1025
+ otel_events = [
1026
+ OTelEventDTO(
1027
+ name=event.name,
1028
+ timestamp=_timestamp_ns_to_datetime(event.timestamp),
1029
+ attributes=event.attributes,
1030
+ )
1031
+ for event in span.events
1032
+ ]
1033
+ otel_links = [
1034
+ OTelLinkDTO(
1035
+ context=OTelContextDTO(
1036
+ trace_id=_int_to_hex(link.context.trace_id, 128),
1037
+ span_id=_int_to_hex(link.context.span_id, 64),
1038
+ ),
1039
+ attributes=link.attributes,
1040
+ )
1041
+ for link in span.links
1042
+ ]
1033
1043
  otel_span_dto = OTelSpanDTO(
1034
1044
  context=OTelContextDTO(
1035
1045
  trace_id=_int_to_hex(span.get_span_context().trace_id, 128),
@@ -1045,14 +1055,7 @@ def _parse_readable_spans(
1045
1055
  status_code=OTelStatusCode("STATUS_CODE_" + span.status.status_code.name),
1046
1056
  status_message=span.status.description,
1047
1057
  attributes=span.attributes,
1048
- events=[
1049
- OTelEventDTO(
1050
- name=event.name,
1051
- timestamp=_timestamp_ns_to_datetime(event.timestamp),
1052
- attributes=event.attributes,
1053
- )
1054
- for event in span.events
1055
- ],
1058
+ events=otel_events if len(otel_events) > 0 else None,
1056
1059
  parent=(
1057
1060
  OTelContextDTO(
1058
1061
  trace_id=_int_to_hex(span.parent.trace_id, 128),
@@ -1061,16 +1064,7 @@ def _parse_readable_spans(
1061
1064
  if span.parent
1062
1065
  else None
1063
1066
  ),
1064
- links=[
1065
- OTelLinkDTO(
1066
- context=OTelContextDTO(
1067
- trace_id=_int_to_hex(link.context.trace_id, 128),
1068
- span_id=_int_to_hex(link.context.span_id, 64),
1069
- ),
1070
- attributes=link.attributes,
1071
- )
1072
- for link in span.links
1073
- ],
1067
+ links=otel_links if len(otel_links) > 0 else None,
1074
1068
  )
1075
1069
 
1076
1070
  otel_span_dtos.append(otel_span_dto)
@@ -1121,7 +1115,9 @@ def calculate_costs(span_idx: Dict[str, SpanDTO]):
1121
1115
  and span.meta
1122
1116
  and span.metrics
1123
1117
  ):
1124
- model = span.meta.get("response.model")
1118
+ model = span.meta.get("response.model") or span.meta.get(
1119
+ "configuration.model"
1120
+ )
1125
1121
  prompt_tokens = span.metrics.get("unit.tokens.prompt", 0.0)
1126
1122
  completion_tokens = span.metrics.get("unit.tokens.completion", 0.0)
1127
1123
 
agenta/sdk/types.py CHANGED
@@ -7,7 +7,7 @@ from pydantic import ConfigDict, BaseModel, HttpUrl
7
7
  from agenta.client.backend.types.agenta_node_dto import AgentaNodeDto
8
8
  from agenta.client.backend.types.agenta_nodes_response import AgentaNodesResponse
9
9
  from typing import Annotated, List, Union, Optional, Dict, Literal, Any
10
- from pydantic import BaseModel, Field, root_validator
10
+ from pydantic import BaseModel, Field, model_validator
11
11
  from agenta.sdk.assets import supported_llm_models
12
12
 
13
13
 
@@ -36,12 +36,14 @@ class LLMTokenUsage(BaseModel):
36
36
 
37
37
 
38
38
  class BaseResponse(BaseModel):
39
- version: Optional[str] = "3.1"
39
+ version: Optional[str] = "3.0"
40
40
  data: Optional[Union[str, Dict[str, Any]]] = None
41
41
  content_type: Optional[str] = "string"
42
42
  tree: Optional[AgentaNodesResponse] = None
43
43
  tree_id: Optional[str] = None
44
44
 
45
+ model_config = ConfigDict(use_enum_values=True, exclude_none=True)
46
+
45
47
 
46
48
  class DictInput(dict):
47
49
  def __new__(cls, default_keys: Optional[List[str]] = None):
@@ -327,30 +329,31 @@ class ModelConfig(BaseModel):
327
329
  )
328
330
 
329
331
  temperature: Optional[float] = Field(
330
- default=1,
332
+ default=None,
331
333
  ge=0.0,
332
334
  le=2.0,
333
335
  description="What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic",
334
336
  )
335
337
  max_tokens: Optional[int] = Field(
336
- default=-1,
338
+ default=None,
337
339
  ge=0,
340
+ le=4000,
338
341
  description="The maximum number of tokens that can be generated in the chat completion",
339
342
  )
340
343
  top_p: Optional[float] = Field(
341
- default=0.5,
344
+ default=None,
342
345
  ge=0.0,
343
346
  le=1.0,
344
347
  description="An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass",
345
348
  )
346
349
  frequency_penalty: Optional[float] = Field(
347
- default=0,
350
+ default=None,
348
351
  ge=-2.0,
349
352
  le=2.0,
350
353
  description="Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far",
351
354
  )
352
355
  presence_penalty: Optional[float] = Field(
353
- default=0,
356
+ default=None,
354
357
  ge=-2.0,
355
358
  le=2.0,
356
359
  description="Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far",
@@ -405,7 +408,7 @@ class PromptTemplate(BaseModel):
405
408
  system_prompt: Optional[str] = None
406
409
  user_prompt: Optional[str] = None
407
410
  template_format: Literal["fstring", "jinja2", "curly"] = Field(
408
- default="fstring",
411
+ default="curly",
409
412
  description="Format type for template variables: fstring {var}, jinja2 {{ var }}, or curly {{var}}",
410
413
  )
411
414
  input_keys: Optional[List[str]] = Field(
@@ -425,7 +428,7 @@ class PromptTemplate(BaseModel):
425
428
  }
426
429
  }
427
430
 
428
- @root_validator(pre=True)
431
+ @model_validator(mode="before")
429
432
  def init_messages(cls, values):
430
433
  if "messages" not in values:
431
434
  messages = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agenta
3
- Version: 0.32.0a1
3
+ Version: 0.33.0a1
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Keywords: LLMOps,LLM,evaluation,prompt engineering
6
6
  Author: Mahmoud Mabrouk
@@ -19,12 +19,9 @@ Requires-Dist: cachetools (>=5.3.3,<6.0.0)
19
19
  Requires-Dist: click (>=8.1.3,<9.0.0)
20
20
  Requires-Dist: docker (>=6.1.1,<8.0.0)
21
21
  Requires-Dist: fastapi (>=0.100.0)
22
- Requires-Dist: google-generativeai (>=0.8.3,<0.9.0)
23
22
  Requires-Dist: httpx (>=0.24,<0.28)
24
23
  Requires-Dist: importlib-metadata (>=8.0.0,<9.0)
25
24
  Requires-Dist: litellm (>=1.48.0,<2.0.0)
26
- Requires-Dist: mangum (>=0.19.0,<0.20.0)
27
- Requires-Dist: openai (>=1.59.7,<2.0.0)
28
25
  Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0)
29
26
  Requires-Dist: opentelemetry-exporter-otlp (>=1.27.0,<2.0.0)
30
27
  Requires-Dist: opentelemetry-sdk (>=1.27.0,<2.0.0)
@@ -51,7 +48,7 @@ Description-Content-Type: text/markdown
51
48
  <p align="center">
52
49
  <a href="https://docs.agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">Documentation</a> |
53
50
  <a href="https://agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">Website</a> |
54
- <a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">Slack</a>
51
+ <a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-2yewk6o2b-DmhyA4h_lkKwecDtIsj1AQ">Slack</a>
55
52
  </p>
56
53
  <div align="center">
57
54
  <strong> <h2> The Open source LLMOps Platform </h2></strong>
@@ -78,7 +75,7 @@ Description-Content-Type: text/markdown
78
75
  </p>
79
76
 
80
77
  <p align="center">
81
- <a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">
78
+ <a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-2yewk6o2b-DmhyA4h_lkKwecDtIsj1AQ">
82
79
  <img src="https://img.shields.io/badge/JOIN US ON SLACK-4A154B?style=for-the-badge&logo=slack&logoColor=white" />
83
80
  </a>
84
81
  <a href="https://www.linkedin.com/company/agenta-ai/">
@@ -160,7 +157,9 @@ mkdir agenta && cd agenta
160
157
  curl -L https://raw.githubusercontent.com/agenta-ai/agenta/main/docker-compose.gh.yml -o docker-compose.gh.yml
161
158
  docker compose -f docker-compose.gh.yml up -d
162
159
  ```
163
-
160
+ - Agenta uses port 80, to use a different port set the env var AGENTA_PORT. For instance `export AGENTA_PORT=90`
161
+ - Add `--pull always` to the last command to upgrade your version of Agenta.
162
+
164
163
  # Disabling Anonymized Tracking
165
164
 
166
165
  By default, Agenta automatically reports anonymized basic usage statistics. This helps us understand how Agenta is used and track its overall usage and growth. This data does not include any sensitive information. To disable anonymized telemetry, follow these steps:
@@ -173,16 +172,14 @@ By default, Agenta automatically reports anonymized basic usage statistics. This
173
172
 
174
173
  We warmly welcome contributions to Agenta. Feel free to submit issues, fork the repository, and send pull requests.
175
174
 
176
- We are usually hanging in our Slack. Feel free to [join our Slack and ask us anything](https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA)
175
+ We are usually hanging in our Slack. Feel free to [join our Slack and ask us anything](https://join.slack.com/t/agenta-hq/shared_invite/zt-2yewk6o2b-DmhyA4h_lkKwecDtIsj1AQ)
177
176
 
178
177
  Check out our [Contributing Guide](https://docs.agenta.ai/misc/contributing/getting-started?utm_source=github&utm_medium=referral&utm_campaign=readme) for more information.
179
178
 
180
179
  ## Contributors ✨
181
180
 
182
181
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
183
-
184
- [![All Contributors](https://img.shields.io/badge/all_contributors-48-orange.svg?style=flat-square)](#contributors-)
185
-
182
+ [![All Contributors](https://img.shields.io/badge/all_contributors-49-orange.svg?style=flat-square)](#contributors-)
186
183
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
187
184
 
188
185
  Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
@@ -253,6 +250,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
253
250
  <td align="center" valign="top" width="14.28%"><a href="https://ashrafchowdury.me"><img src="https://avatars.githubusercontent.com/u/87828904?v=4?s=100" width="100px;" alt="Ashraf Chowdury"/><br /><sub><b>Ashraf Chowdury</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Aashrafchowdury" title="Bug reports">🐛</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=ashrafchowdury" title="Code">💻</a></td>
254
251
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/jp-agenta"><img src="https://avatars.githubusercontent.com/u/174311389?v=4?s=100" width="100px;" alt="jp-agenta"/><br /><sub><b>jp-agenta</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=jp-agenta" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Ajp-agenta" title="Bug reports">🐛</a></td>
255
252
  <td align="center" valign="top" width="14.28%"><a href="https://mrunhap.github.io"><img src="https://avatars.githubusercontent.com/u/24653356?v=4?s=100" width="100px;" alt="Mr Unhappy"/><br /><sub><b>Mr Unhappy</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Amrunhap" title="Bug reports">🐛</a> <a href="#infra-mrunhap" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
253
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/morenobonaventura"><img src="https://avatars.githubusercontent.com/u/2118854?v=4?s=100" width="100px;" alt="Moreno Bonaventura"/><br /><sub><b>Moreno Bonaventura</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Amorenobonaventura" title="Bug reports">🐛</a></td>
256
254
  </tr>
257
255
  </tbody>
258
256
  </table>
@@ -9,18 +9,18 @@ agenta/client/Readme.md,sha256=K-By3bNRzUIN5VgQ98pKjw4DgCM-JlcxbW0Fsj02P6M,2903
9
9
  agenta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  agenta/client/api.py,sha256=r5pwYD8DWppDrV4xaNYwUmwMLjWVNfVzxK_clIboEWg,2434
11
11
  agenta/client/api_models.py,sha256=zebfE2-0-SW1SvzyarzmSJMXqyiCLKrX2sHpzoX-RnU,623
12
- agenta/client/backend/__init__.py,sha256=5QDiyaf-uSCgTUUhGQHfPPPIkaRLImGO1nFQbrplASg,6229
12
+ agenta/client/backend/__init__.py,sha256=M6yuPBFMJbbVnqyJ-AlU-hNy9nu7KRax3DArWtll_fM,6073
13
13
  agenta/client/backend/access_control/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
14
14
  agenta/client/backend/access_control/client.py,sha256=yu5RrcXizig6zVVNPghrd4K6MHFj26-2hRIPCjS3QnY,5467
15
15
  agenta/client/backend/apps/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
16
- agenta/client/backend/apps/client.py,sha256=_Jf5yctdCpX4QCArwai70L8cz7VMJQRpTmZGngj3MUg,54674
16
+ agenta/client/backend/apps/client.py,sha256=6ZGBcR37ILwS2VNp8BZR4Tz09W2MlaSChPQ7it0tWoE,54946
17
17
  agenta/client/backend/bases/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
18
- agenta/client/backend/bases/client.py,sha256=BZsz5eXaa2voZdJXqgd5J5hPUuYvWwIcPCWyl49w-oY,6028
19
- agenta/client/backend/client.py,sha256=oxsa_-JKAVE0HryrmBRNjMnHo7vVE8VI8VzJmO8HtCQ,104577
18
+ agenta/client/backend/bases/client.py,sha256=s8EAwrdxNkOjhDSP2-HIbqp51vNlvhXxS4nGb8YoWPk,6068
19
+ agenta/client/backend/client.py,sha256=psZK0A7dZJLyQfXXSDEjxPeLXn3svvTGmx04Px_23sE,105267
20
20
  agenta/client/backend/configs/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
21
21
  agenta/client/backend/configs/client.py,sha256=_nuh5K5D5SuCOeckXcGv6P4ZtVdTGWQ7JhcoIclmWfY,19267
22
22
  agenta/client/backend/containers/__init__.py,sha256=Haw2PwiPhNvM26PLQN57jY0bN-QqPoDG4VA-P_uGL3A,153
23
- agenta/client/backend/containers/client.py,sha256=10N3reiZmBB8539fnu58zPtaasyMfQcc48UixxWqI34,20457
23
+ agenta/client/backend/containers/client.py,sha256=8yqtMI3Pkt25iSRCr6E70WsvUVLhxHKxdEGWq4UJnkY,21445
24
24
  agenta/client/backend/containers/types/__init__.py,sha256=b6yQ-p_vsI5cpKh-Qa8xNE-M5nLHjfBvfgD4JIhqEkY,176
25
25
  agenta/client/backend/containers/types/container_templates_response.py,sha256=IFmEkCII_FebAt3ENZByzAYXMB1vgQEeIaSPTLSzG5M,189
26
26
  agenta/client/backend/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
@@ -36,13 +36,15 @@ agenta/client/backend/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4
36
36
  agenta/client/backend/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxpcg,1681
37
37
  agenta/client/backend/core/serialization.py,sha256=1VIoFHrJZZgjx5kxsUnUDbgr2v66GFgMJ_J1mqexBXA,9643
38
38
  agenta/client/backend/environments/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
39
- agenta/client/backend/environments/client.py,sha256=AFgo2TwCq1ABPagto5c_3GuCT7YDEr86D82WqgJfC28,6216
39
+ agenta/client/backend/environments/client.py,sha256=Mq5EtUxUiKbMm33IF9OXt-eDAS9G_qOnvYmTLrTSemc,6248
40
40
  agenta/client/backend/errors/__init__.py,sha256=pbbVUFtB9LCocA1RMWMMF_RKjsy5YkOKX5BAuE49w6g,170
41
41
  agenta/client/backend/errors/unprocessable_entity_error.py,sha256=FvR7XPlV3Xx5nu8HNlmLhBRdk4so_gCHjYT5PyZe6sM,313
42
42
  agenta/client/backend/evaluations/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
43
- agenta/client/backend/evaluations/client.py,sha256=51MkQv8b1GXrJaoDvf0cJbfAt7v_jbARcCIAY2ax5Ko,46838
43
+ agenta/client/backend/evaluations/client.py,sha256=pBK75233P6pil8DJRdArW_nHFpj78wa_GYhkOSdNO_M,47022
44
44
  agenta/client/backend/evaluators/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
45
- agenta/client/backend/evaluators/client.py,sha256=ZYj-WMIG7ax3qoDlmVv5Pg1mOzGVuonJkOVqmJ_bUFA,41117
45
+ agenta/client/backend/evaluators/client.py,sha256=Opm0eMoQoQw2OUWivOY2b4jJSe7UAgoAV2A1Lo3IQws,41245
46
+ agenta/client/backend/human_evaluations/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
47
+ agenta/client/backend/human_evaluations/client.py,sha256=tneQDoSxk1ISA4ZoMbnXw6iJTfHEc1k7KZ78YvkDwhU,55166
46
48
  agenta/client/backend/observability/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
47
49
  agenta/client/backend/observability/client.py,sha256=mVGRIde53T_9j7kH0fwp2Xk8zzStv6HnVK5Op3HaTXw,39877
48
50
  agenta/client/backend/observability_v_1/__init__.py,sha256=wAH4GHiT4W6l9j0IsC6w7wJ2GbRPcj4KsefGxvsGSrI,207
@@ -54,8 +56,8 @@ agenta/client/backend/observability_v_1/types/query_traces_response.py,sha256=0-
54
56
  agenta/client/backend/scopes/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
55
57
  agenta/client/backend/scopes/client.py,sha256=ZMHXj0GRS-xNOLAbnjo4SNpHjOvHa-xZn8-caC508Qk,3617
56
58
  agenta/client/backend/testsets/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
57
- agenta/client/backend/testsets/client.py,sha256=sBRmbWNk9aBM87X0ZYI_JWVy-RzQyRhIXL8AWbnw-a0,39665
58
- agenta/client/backend/types/__init__.py,sha256=Ea5Pxoyp4EcNmiRQ5jxrDHmkS-lyuzHBqyeaftDqhc0,8226
59
+ agenta/client/backend/testsets/client.py,sha256=YgoT5raIqOPA28msrbOsnkjLKwKRiYlA-crJsAxJZvI,39735
60
+ agenta/client/backend/types/__init__.py,sha256=cibRwwo8JrwSpedebFbPCoG3eme2A2NjIgQxqyoPtlU,7932
59
61
  agenta/client/backend/types/agenta_node_dto.py,sha256=DLZltD_ueVOfdiSZ1u2i3mu1C3kshxhcggQFFfybBdY,1747
60
62
  agenta/client/backend/types/agenta_node_dto_nodes_value.py,sha256=ifG7dBYLphFoCgQ70ivvDXkTSlxX8w5x_9S-Glh8FlI,180
61
63
  agenta/client/backend/types/agenta_nodes_response.py,sha256=1EoxaqN3ioELS_9rg5Bo6Y0PqqNdX2YNRCIsdO4Q-aQ,902
@@ -80,6 +82,7 @@ agenta/client/backend/types/correct_answer.py,sha256=khEHspf9nszpzhswc7rSruCrcmv
80
82
  agenta/client/backend/types/create_app_output.py,sha256=0_avs1u3pIU14P5ut1WOUrravDwpg2GkSj8kYsAMK9Y,600
81
83
  agenta/client/backend/types/create_span.py,sha256=ZMWlTli2MNowD66D1O2e5ZKOE0BGD_-J36_A_a3rsxE,1609
82
84
  agenta/client/backend/types/create_trace_response.py,sha256=Pr1NM9nLHiPVzCP8m7VQ1NIb92fOhJTmMlEUK6FrykI,643
85
+ agenta/client/backend/types/delete_evaluation.py,sha256=XL7GGP1_84_hOXwBiKxSrb7wJBOSvjZPXF8gos6tR-k,605
83
86
  agenta/client/backend/types/docker_env_vars.py,sha256=td2vhkHyYCwIC_TjlUu7hDuIXsfSJH2L7J_wGaNvw_c,600
84
87
  agenta/client/backend/types/environment_output.py,sha256=L0KSiTXy4tFrrplV-YnyrsBzRB25E8QSEPTQC9BWBd0,933
85
88
  agenta/client/backend/types/environment_output_extended.py,sha256=Sr5cVBZAKekddwQPOIsMmt9diaPTsOWpyzZzOFOFxLs,1043
@@ -90,7 +93,6 @@ agenta/client/backend/types/evaluation_scenario.py,sha256=AAEZS19leBYMF5ZTlXFCD5
90
93
  agenta/client/backend/types/evaluation_scenario_input.py,sha256=KQYQIL6RXa2C2K6JNwZXXlW9nFYw-xqCJqY5qlp8mco,648
91
94
  agenta/client/backend/types/evaluation_scenario_output.py,sha256=-XoVgjhJryWb3XrFuEQ0s0O3TV3BsHQltehYUnxThzA,704
92
95
  agenta/client/backend/types/evaluation_scenario_result.py,sha256=wOs3-2ucAL6rizTzhHfzIPiXIWhFX9hQn44sMgqWUv8,647
93
- agenta/client/backend/types/evaluation_scenario_score_update.py,sha256=xkyk7DKj99WkuWcOTOmTZ67G_GIaBVTrGUuy7Erfjec,597
94
96
  agenta/client/backend/types/evaluation_status_enum.py,sha256=U0yabhF9EZqb0MU13MhLsuOa2wQmUQHGWDS0qawwvfE,370
95
97
  agenta/client/backend/types/evaluation_type.py,sha256=FaI9rLp1QBUl5EE9xKtlxFhCDdcKGOx8NPcAWn3ct5o,186
96
98
  agenta/client/backend/types/evaluator.py,sha256=Ye9m3jEg65hKsJlqWVDxNnlSNXCJAzxFX-KG7qGCPTM,843
@@ -105,8 +107,6 @@ agenta/client/backend/types/human_evaluation.py,sha256=jUNYGW6zp4UWB-SOY1oOB6FX_
105
107
  agenta/client/backend/types/human_evaluation_scenario.py,sha256=GZFGdki4Rlfly7RUhNrWpS2x8N0fHelHdk55YtxY3l0,1127
106
108
  agenta/client/backend/types/human_evaluation_scenario_input.py,sha256=4iT1sH_hM6gOFmVicewPONFOvz_cW-Dh6HoNU-tCC0E,620
107
109
  agenta/client/backend/types/human_evaluation_scenario_output.py,sha256=yVEFImNXK3qSy83AL3X5qypUOgJ__fumLj1bNgXgPXk,624
108
- agenta/client/backend/types/human_evaluation_scenario_update.py,sha256=eh33QTkJNZ5tdA-zPT5jeP_RAzhhtweNiduIscdB8bo,1122
109
- agenta/client/backend/types/human_evaluation_update.py,sha256=PDtYJDYLEfYRaJuG6eqavgXpNhE-LDK81i9qNo7QD7s,686
110
110
  agenta/client/backend/types/image.py,sha256=Q8mnZynlIHHwlu3XRarjJAzgfadl87qPJ-fqH2WqQBw,722
111
111
  agenta/client/backend/types/invite_request.py,sha256=ZYcO4_O5Jjnz6uDwcFUoQ1Bn-A0F9t2S3rQTx9arwJc,607
112
112
  agenta/client/backend/types/legacy_analytics_response.py,sha256=-dyG9jk3OwdsGiNere46p9n7BWst1orhBR_BWVxaY6g,814
@@ -117,7 +117,6 @@ agenta/client/backend/types/list_api_keys_response.py,sha256=av8nz-yhcOYiLZEfnJD
117
117
  agenta/client/backend/types/llm_run_rate_limit.py,sha256=XiPGznCpdS-lPDiswj6pX5aIxhMuOfGCOda7IPcB0q8,659
118
118
  agenta/client/backend/types/llm_tokens.py,sha256=-DLWHVU6spcBAkMjRQaI7QH3D3h6w3iOeHK8RXZcuqI,704
119
119
  agenta/client/backend/types/metrics_dto.py,sha256=2J58QUiXllp6rkgHMYfk_jXg9gddqgzg7F0OKByj4FI,724
120
- agenta/client/backend/types/new_human_evaluation.py,sha256=Rp_cu_ApObG7QBT-Hkvwer604gO6P3QnVwpIfLv0Q38,764
121
120
  agenta/client/backend/types/new_testset.py,sha256=S8ENb_fu5CeyxTvjN5ojXuVoaauNKgfwE738svFhWNY,647
122
121
  agenta/client/backend/types/node_dto.py,sha256=-4oC4IPdsndGEaRK2woQpcuZ33GdqsM-i4MGzh90I7w,659
123
122
  agenta/client/backend/types/node_type.py,sha256=ofQdliqdM9dBYu8_A8Uc3ALco6UkJYvnD69bePqCA2o,330
@@ -175,7 +174,7 @@ agenta/client/backend/types/workspace_response.py,sha256=n1884dwY4C9Gm-JCyprnLfO
175
174
  agenta/client/backend/types/workspace_role.py,sha256=k-ltfq7aAWGg85tTPIf8HpFMMf4gu02_X8R2fFPmB7U,286
176
175
  agenta/client/backend/types/workspace_role_response.py,sha256=6hlRcsMmpf6Q0ejLzRKJiZo_9rygazcbJfpPq2jQZVw,693
177
176
  agenta/client/backend/variants/__init__.py,sha256=BMR4SvsrqXC9FU8nPVzY8M9xGrBEhEGrmbgvy3iM1aE,171
178
- agenta/client/backend/variants/client.py,sha256=qSPvtGxaYD69DAwQxgMc_fHhLjlMnx2kYNvaWFPUe50,92699
177
+ agenta/client/backend/variants/client.py,sha256=RNIWcNdUrfjKx14RSXzD4NP5eVx-lFwAI0MidHz9slY,92879
179
178
  agenta/client/backend/variants/types/__init__.py,sha256=TrRUAyPsJ1bKg2gfW0d_S1rEu6eaYnHmr2g_URTuwPU,216
180
179
  agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py,sha256=nbcakmo3eZpWmyX_DhS6F4jyhfV2t5zN-zOgDtM2rKQ,247
181
180
  agenta/client/backend/vault/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
@@ -200,12 +199,12 @@ agenta/sdk/context/exporting.py,sha256=16X8fgMhl58gehSlqANX97FiKxx4TkGiG4d2B0-7Z
200
199
  agenta/sdk/context/routing.py,sha256=FEsjw8EttI1SMyUo96ptcUsvHJnhoKwdr1szlkxxJNU,598
201
200
  agenta/sdk/context/tracing.py,sha256=zp7T_wLVkR-V1c0k7UAN69rwH9VV7MhoZD_IdNu-_RE,649
202
201
  agenta/sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
- agenta/sdk/decorators/routing.py,sha256=yaSunGmK1i6QBxBkvjdA1fNff38kiDzkuMVlnwVsdRE,20325
204
- agenta/sdk/decorators/tracing.py,sha256=n5tsbZ2z1G7aIPQEJjvsuVGxbNSstdf4fXUx9bOASEY,8705
202
+ agenta/sdk/decorators/routing.py,sha256=6auINyIdIS7mO7KTDDlaWDjl9iZJ4S2vobPdQVf4nvw,20874
203
+ agenta/sdk/decorators/tracing.py,sha256=Wf7KWR1NknXlQEdB2sjMFrcSI-tSSvO9XubN-Ro5tkU,9216
205
204
  agenta/sdk/litellm/__init__.py,sha256=Bpz1gfHQc0MN1yolWcjifLWznv6GjHggvRGQSpxpihM,37
206
- agenta/sdk/litellm/litellm.py,sha256=Ke0It-jA1z0KQ2770gIlWIEgramZGmt1k0GjmpEnFV4,8793
207
- agenta/sdk/litellm/mockllm.py,sha256=8PcORVRqyLLsXAbYy28-6bxuVkBEW4ehfeWl7GEK9P0,661
208
- agenta/sdk/litellm/mocks/__init__.py,sha256=8wknx4kXyr8ESXrNuECPT8FTeO6qG80c7alXcCaVeK4,446
205
+ agenta/sdk/litellm/litellm.py,sha256=Xx_YJu05BYkmIe6uObjS6DwzjgwfNytGWf807Zh0vcU,10153
206
+ agenta/sdk/litellm/mockllm.py,sha256=8V6dqdv8eA4P-VoXIwHNYlIjHG189P14POSfSfluVw0,678
207
+ agenta/sdk/litellm/mocks/__init__.py,sha256=c-afSm0YkiHyyaLegvtFs6WuWZTl2Q7Fq_iUoxqBbQc,616
209
208
  agenta/sdk/managers/__init__.py,sha256=SN-LRwG0pRRDV3u2Q4JiiSTigN3-mYpzGNM35RzT4mc,238
210
209
  agenta/sdk/managers/config.py,sha256=8-TJn56SssNjfxCY7NhDwqL4in5gtPeMrsvyEf-W_u4,7421
211
210
  agenta/sdk/managers/deployment.py,sha256=SEokjZeh6n7HRKZ92Y0WncdG49hIFx-Z3B3HAl2kmUg,1174
@@ -214,9 +213,9 @@ agenta/sdk/managers/shared.py,sha256=e53jckQq5PIMpjdxADOonUj7o8aGfzmSvdeH5f43rGs
214
213
  agenta/sdk/managers/variant.py,sha256=A5ga3mq3b0weUTXa9HO72MGaspthGcu1uK9K5OnP738,4172
215
214
  agenta/sdk/managers/vault.py,sha256=054ce9X_xKa2M4NtQWz-GugO6q_pYVWCP3IxbAJJcRw,337
216
215
  agenta/sdk/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
- agenta/sdk/middleware/auth.py,sha256=SoVnzdm5ygP03bQgXDd86aTvIdeTfr4uIoeJsPxN7No,5491
216
+ agenta/sdk/middleware/auth.py,sha256=2jV32_JdjaOZFI9VGy3OGVg6tOvgEN64RUpM71AqVZ0,5572
218
217
  agenta/sdk/middleware/cache.py,sha256=-_e3_6f4cPfpuUpGRK_ZQvUx_54ez68db4SnBwfuESk,1078
219
- agenta/sdk/middleware/config.py,sha256=hOIOH0aZtSPbFWAphrpe3_Bx8UMUjLT--SilWdRG_6g,7308
218
+ agenta/sdk/middleware/config.py,sha256=_oBj9XNzxiMyoLo1DLh7Tck5s05H6_udaNCGYe5orZA,7577
220
219
  agenta/sdk/middleware/cors.py,sha256=q3r7lGkrIdMcT_vuhsburMcjG7pyl7w0ycxrIrGJ2e8,921
221
220
  agenta/sdk/middleware/inline.py,sha256=1bNBEoen9NRF2O3ZAP7z-izaEFUI1hBT22xLPIvof3A,937
222
221
  agenta/sdk/middleware/mock.py,sha256=G028gYDMzaHtjULl2yU-zqXrEueMNC9JYmnIqRmjtYM,794
@@ -226,12 +225,12 @@ agenta/sdk/router.py,sha256=mOguvtOwl2wmyAgOuWTsf98pQwpNiUILKIo67W_hR3A,119
226
225
  agenta/sdk/tracing/__init__.py,sha256=rQNe5-zT5Kt7_CDhq-lnUIi1EYTBVzVf_MbfcIxVD98,41
227
226
  agenta/sdk/tracing/attributes.py,sha256=zh8JQZSeYCLBeIRSopKJx6QQ-WEgw08Cr64DS_WOcT8,3833
228
227
  agenta/sdk/tracing/conventions.py,sha256=JBtznBXZ3aRkGKkLl7cPwdMNh3w1G-H2Ta2YrAxbr38,950
229
- agenta/sdk/tracing/exporters.py,sha256=5njI08ezWp2mUXL5mPZFU8qwM9E3RYyQlGvY5iHvEKo,2688
230
- agenta/sdk/tracing/inline.py,sha256=x9volUnQItmbc19aA0_cmFy4VCbdgvXviVhQ_nhEv4o,31284
228
+ agenta/sdk/tracing/exporters.py,sha256=PuSbamuLa4e9eGBM6tp7Smh5R41Jz07VBoBtMnkbtz8,2687
229
+ agenta/sdk/tracing/inline.py,sha256=BQecJkZDlR85aodfvye-LuDhouee3RjLuUl7GMpfsSw,31282
231
230
  agenta/sdk/tracing/processors.py,sha256=d7MvJ_DRAP0RAlp8V8XrrY-m8pJ03nLxKoq15RnjedA,3334
232
231
  agenta/sdk/tracing/spans.py,sha256=nqUOjjirBxB8Eacv8Qj4Ra_6rknGi3lbJdNyKmk5ODQ,3707
233
232
  agenta/sdk/tracing/tracing.py,sha256=iZCIggUkR5f2zVcq0o7T8-to7pcFO349gUEBYXnBMzg,6888
234
- agenta/sdk/types.py,sha256=KhYwB0A58f8ldKufExSgwxvXSRIhSgK6XIODKzVF71c,19014
233
+ agenta/sdk/types.py,sha256=HvFok4lEFxWow6WT71OrJ23WhTsj_FqqMyzlKByAqYk,19120
235
234
  agenta/sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
235
  agenta/sdk/utils/constants.py,sha256=zW3R4rjXOo2L5lz6q84l_zYuOM9u4mpPRHw_B1Dr_hI,67
237
236
  agenta/sdk/utils/costs.py,sha256=i8C7ud__pThLS55XkN4YW8czXtGeXr2mx7jjcOFeiXg,5955
@@ -257,7 +256,7 @@ agenta/templates/simple_prompt/app.py,sha256=kODgF6lhzsaJPdgL5b21bUki6jkvqjWZzWR
257
256
  agenta/templates/simple_prompt/env.example,sha256=g9AE5bYcGPpxawXMJ96gh8oenEPCHTabsiOnfQo3c5k,70
258
257
  agenta/templates/simple_prompt/requirements.txt,sha256=ywRglRy7pPkw8bljmMEJJ4aOOQKrt9FGKULZ-DGkoBU,23
259
258
  agenta/templates/simple_prompt/template.toml,sha256=DQBtRrF4GU8LBEXOZ-GGuINXMQDKGTEG5y37tnvIUIE,60
260
- agenta-0.32.0a1.dist-info/METADATA,sha256=icmKvNYRhzbVMwHorcgLmQjkm99MJfkkcgarUbot9i0,29189
261
- agenta-0.32.0a1.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
262
- agenta-0.32.0a1.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
263
- agenta-0.32.0a1.dist-info/RECORD,,
259
+ agenta-0.33.0a1.dist-info/METADATA,sha256=mAYndXu9dls8hPOv8ouS5Z7YxjPPNbWTq2_VcMYM6Ho,29625
260
+ agenta-0.33.0a1.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
261
+ agenta-0.33.0a1.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
262
+ agenta-0.33.0a1.dist-info/RECORD,,
@@ -1,30 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- from ..core.pydantic_utilities import UniversalBaseModel
4
- import typing
5
- from .score import Score
6
- from .human_evaluation_scenario_output import HumanEvaluationScenarioOutput
7
- from .human_evaluation_scenario_input import HumanEvaluationScenarioInput
8
- from ..core.pydantic_utilities import IS_PYDANTIC_V2
9
- import pydantic
10
-
11
-
12
- class HumanEvaluationScenarioUpdate(UniversalBaseModel):
13
- vote: typing.Optional[str] = None
14
- score: typing.Optional[Score] = None
15
- correct_answer: typing.Optional[str] = None
16
- outputs: typing.Optional[typing.List[HumanEvaluationScenarioOutput]] = None
17
- inputs: typing.Optional[typing.List[HumanEvaluationScenarioInput]] = None
18
- is_pinned: typing.Optional[bool] = None
19
- note: typing.Optional[str] = None
20
-
21
- if IS_PYDANTIC_V2:
22
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
23
- extra="allow", frozen=True
24
- ) # type: ignore # Pydantic v2
25
- else:
26
-
27
- class Config:
28
- frozen = True
29
- smart_union = True
30
- extra = pydantic.Extra.allow
@@ -1,22 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- from ..core.pydantic_utilities import UniversalBaseModel
4
- import typing
5
- from .evaluation_status_enum import EvaluationStatusEnum
6
- from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
- import pydantic
8
-
9
-
10
- class HumanEvaluationUpdate(UniversalBaseModel):
11
- status: typing.Optional[EvaluationStatusEnum] = None
12
-
13
- if IS_PYDANTIC_V2:
14
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
15
- extra="allow", frozen=True
16
- ) # type: ignore # Pydantic v2
17
- else:
18
-
19
- class Config:
20
- frozen = True
21
- smart_union = True
22
- extra = pydantic.Extra.allow
@@ -1,27 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- from ..core.pydantic_utilities import UniversalBaseModel
4
- import typing
5
- from .evaluation_type import EvaluationType
6
- from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
- import pydantic
8
-
9
-
10
- class NewHumanEvaluation(UniversalBaseModel):
11
- app_id: str
12
- variant_ids: typing.List[str]
13
- evaluation_type: EvaluationType
14
- inputs: typing.List[str]
15
- testset_id: str
16
- status: str
17
-
18
- if IS_PYDANTIC_V2:
19
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
20
- extra="allow", frozen=True
21
- ) # type: ignore # Pydantic v2
22
- else:
23
-
24
- class Config:
25
- frozen = True
26
- smart_union = True
27
- extra = pydantic.Extra.allow