agenta 0.13.7a0__py3-none-any.whl → 0.13.8__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.

@@ -27,6 +27,7 @@ class Evaluation(pydantic.BaseModel):
27
27
  status: Result
28
28
  aggregated_results: typing.List[AggregatedResult]
29
29
  average_cost: typing.Optional[Result]
30
+ total_cost: typing.Optional[Result]
30
31
  average_latency: typing.Optional[Result]
31
32
  created_at: dt.datetime
32
33
  updated_at: dt.datetime
@@ -399,32 +399,12 @@ def handle_terminal_run(
399
399
  agenta.config.set(**args_config_params)
400
400
 
401
401
  loop = asyncio.get_event_loop()
402
-
403
- # Initialize tracing
404
- tracing = agenta.llm_tracing()
405
-
406
- # Start tracing
407
- tracing.start_parent_span(
408
- name=func.__name__,
409
- inputs=args_func_params,
410
- config=args_config_params,
411
- environment="shell", # type: ignore
412
- )
413
-
414
402
  result = loop.run_until_complete(
415
403
  execute_function(
416
404
  func, **{"params": args_func_params, "config_params": args_config_params}
417
405
  )
418
406
  )
419
-
420
- # End trace recording
421
- tracing.end_recording(
422
- outputs=result.dict(),
423
- span=tracing.active_trace, # type: ignore
424
- )
425
- print(
426
- f"\n========== Result ==========\n\nMessage: {result.message}\nCost: {result.cost}\nToken Usage: {result.usage}"
427
- )
407
+ print(result)
428
408
 
429
409
 
430
410
  def override_schema(openapi_schema: dict, func_name: str, endpoint: str, params: dict):
agenta/sdk/agenta_init.py CHANGED
@@ -1,8 +1,9 @@
1
1
  import os
2
2
  import logging
3
- from typing import Optional
3
+ from typing import Any, Optional
4
+
5
+ from .utils.globals import set_global
4
6
 
5
- from agenta.sdk.utils.globals import set_global
6
7
  from agenta.client.backend.client import AgentaApi
7
8
  from agenta.sdk.tracing.llm_tracing import Tracing
8
9
  from agenta.client.exceptions import APIRequestError
@@ -12,17 +13,16 @@ logger = logging.getLogger(__name__)
12
13
  logger.setLevel(logging.DEBUG)
13
14
 
14
15
 
15
- class SDKClient(object):
16
- """
17
- Class to build SDK client instance.
18
- """
19
-
20
- def __init__(self, api_key: str, host: str):
21
- self.api_key = api_key
22
- self.host = host + "/api"
16
+ BACKEND_URL_SUFFIX = os.environ.get("BACKEND_URL_SUFFIX", "api")
17
+ CLIENT_API_KEY = os.environ.get("AGENTA_API_KEY")
18
+ CLIENT_HOST = os.environ.get("AGENTA_HOST", "http://localhost")
23
19
 
24
- def _build_sdk_client(self) -> AgentaApi:
25
- return AgentaApi(base_url=self.host, api_key=self.api_key)
20
+ # initialize the client with the backend url and api key
21
+ backend_url = f"{CLIENT_HOST}/{BACKEND_URL_SUFFIX}"
22
+ client = AgentaApi(
23
+ base_url=backend_url,
24
+ api_key=CLIENT_API_KEY if CLIENT_API_KEY else "",
25
+ )
26
26
 
27
27
 
28
28
  class AgentaSingleton:
@@ -37,22 +37,15 @@ class AgentaSingleton:
37
37
  cls._instance = super(AgentaSingleton, cls).__new__(cls)
38
38
  return cls._instance
39
39
 
40
- @property
41
- def client(self):
42
- """Builds sdk client instance.
43
-
44
- Returns:
45
- AgentaAPI: instance of agenta api backend
46
- """
47
-
48
- sdk_client = SDKClient(api_key=self.api_key, host=self.host) # type: ignore
49
- return sdk_client._build_sdk_client()
50
-
51
40
  def init(
52
41
  self,
42
+ app_name: Optional[str] = None,
43
+ base_name: Optional[str] = None,
44
+ api_key: Optional[str] = None,
45
+ base_id: Optional[str] = None,
53
46
  app_id: Optional[str] = None,
54
47
  host: Optional[str] = None,
55
- api_key: Optional[str] = None,
48
+ **kwargs: Any,
56
49
  ) -> None:
57
50
  """Main function to initialize the singleton.
58
51
 
@@ -60,44 +53,57 @@ class AgentaSingleton:
60
53
  the function will look for them in environment variables.
61
54
 
62
55
  Args:
63
- app_id (Optional[str]): ID of the Agenta application. Defaults to None. If not provided, will look for "AGENTA_APP_NAME" in environment variables.
56
+ app_name (Optional[str]): Name of the Agenta application. Defaults to None. If not provided, will look for "AGENTA_APP_NAME" in environment variables.
57
+ base_name (Optional[str]): Base name for the Agenta setup. Defaults to None. If not provided, will look for "AGENTA_BASE_NAME" in environment variables.
64
58
  host (Optional[str]): Host name of the backend server. Defaults to None. If not provided, will look for "AGENTA_HOST" in environment variables.
65
- api_key (Optional[str]): API Key to use with the host of the backend server.
66
59
  kwargs (Any): Additional keyword arguments.
67
60
 
68
61
  Raises:
69
62
  ValueError: If `app_name`, `base_name`, or `host` are not specified either as arguments or in the environment variables.
70
63
  """
71
-
72
- self.api_key = api_key or os.environ.get("AGENTA_API_KEY")
73
- self.host = host or os.environ.get("AGENTA_HOST", "http://localhost")
74
-
75
- app_id = app_id or os.environ.get("AGENTA_APP_ID")
76
- if not app_id:
77
- raise ValueError("App ID must be specified.")
78
-
79
- base_id = os.environ.get("AGENTA_BASE_ID")
80
- base_name = os.environ.get("AGENTA_BASE_NAME")
81
- if base_id is None and (app_id is None or base_name is None):
82
- print(
83
- f"Warning: Your configuration will not be saved permanently since app_name and base_name are not provided."
84
- )
85
- else:
86
- try:
87
- base_id = self.get_app_base(app_id, base_name) # type: ignore
88
- except Exception as ex:
89
- raise APIRequestError(
90
- f"Failed to get base id and/or app_id from the server with error: {ex}"
64
+ if app_name is None:
65
+ app_name = os.environ.get("AGENTA_APP_NAME")
66
+ if base_name is None:
67
+ base_name = os.environ.get("AGENTA_BASE_NAME")
68
+ if api_key is None:
69
+ api_key = os.environ.get("AGENTA_API_KEY")
70
+ if base_id is None:
71
+ base_id = os.environ.get("AGENTA_BASE_ID")
72
+ if host is None:
73
+ host = os.environ.get("AGENTA_HOST", "http://localhost")
74
+
75
+ if base_id is None:
76
+ if app_name is None or base_name is None:
77
+ print(
78
+ f"Warning: Your configuration will not be saved permanently since app_name and base_name are not provided."
91
79
  )
80
+ else:
81
+ try:
82
+ app_id = self.get_app(app_name)
83
+ base_id = self.get_app_base(app_id, base_name)
84
+ except Exception as ex:
85
+ raise APIRequestError(
86
+ f"Failed to get base id and/or app_id from the server with error: {ex}"
87
+ )
92
88
 
93
- self.app_id = app_id
94
89
  self.base_id = base_id
90
+ self.host = host
91
+ self.app_id = os.environ.get("AGENTA_APP_ID") if app_id is None else app_id
95
92
  self.variant_id = os.environ.get("AGENTA_VARIANT_ID")
96
93
  self.variant_name = os.environ.get("AGENTA_VARIANT_NAME")
94
+ self.api_key = api_key
97
95
  self.config = Config(base_id=base_id, host=host)
98
96
 
97
+ def get_app(self, app_name: str) -> str:
98
+ apps = client.apps.list_apps(app_name=app_name)
99
+ if len(apps) == 0:
100
+ raise APIRequestError(f"App with name {app_name} not found")
101
+
102
+ app_id = apps[0].app_id
103
+ return app_id
104
+
99
105
  def get_app_base(self, app_id: str, base_name: str) -> str:
100
- bases = self.client.bases.list_bases(app_id=app_id, base_name=base_name)
106
+ bases = client.bases.list_bases(app_id=app_id, base_name=base_name)
101
107
  if len(bases) == 0:
102
108
  raise APIRequestError(f"No base was found for the app {app_id}")
103
109
  return bases[0].base_id
@@ -116,23 +122,11 @@ class Config:
116
122
  def __init__(self, base_id, host):
117
123
  self.base_id = base_id
118
124
  self.host = host
119
-
120
125
  if base_id is None or host is None:
121
126
  self.persist = False
122
127
  else:
123
128
  self.persist = True
124
129
 
125
- @property
126
- def client(self):
127
- """Builds sdk client instance.
128
-
129
- Returns:
130
- AgentaAPI: instance of agenta api backend
131
- """
132
-
133
- sdk_client = SDKClient(api_key=self.api_key, host=self.host) # type: ignore
134
- return sdk_client._build_sdk_client()
135
-
136
130
  def register_default(self, overwrite=False, **kwargs):
137
131
  """alias for default"""
138
132
  return self.default(overwrite=overwrite, **kwargs)
@@ -163,7 +157,7 @@ class Config:
163
157
  if not self.persist:
164
158
  return
165
159
  try:
166
- self.client.configs.save_config(
160
+ client.configs.save_config(
167
161
  base_id=self.base_id,
168
162
  config_name=config_name,
169
163
  parameters=kwargs,
@@ -174,9 +168,7 @@ class Config:
174
168
  "Failed to push the configuration to the server with error: " + str(ex)
175
169
  )
176
170
 
177
- def pull(
178
- self, config_name: str = "default", environment_name: Optional[str] = None
179
- ):
171
+ def pull(self, config_name: str = "default", environment_name: str = None):
180
172
  """Pulls the parameters for the app variant from the server and sets them to the config"""
181
173
  if not self.persist and (
182
174
  config_name != "default" or environment_name is not None
@@ -187,12 +179,12 @@ class Config:
187
179
  if self.persist:
188
180
  try:
189
181
  if environment_name:
190
- config = self.client.configs.get_config(
182
+ config = client.configs.get_config(
191
183
  base_id=self.base_id, environment_name=environment_name
192
184
  )
193
185
 
194
186
  else:
195
- config = self.client.configs.get_config(
187
+ config = client.configs.get_config(
196
188
  base_id=self.base_id,
197
189
  config_name=config_name,
198
190
  )
@@ -226,22 +218,15 @@ class Config:
226
218
  setattr(self, key, value)
227
219
 
228
220
 
229
- def init(
230
- app_id: Optional[str] = None,
231
- host: Optional[str] = None,
232
- api_key: Optional[str] = None,
233
- ):
221
+ def init(app_name=None, base_name=None, **kwargs):
234
222
  """Main function to be called by the user to initialize the sdk.
235
223
 
236
224
  Args:
237
- app_id (str): The Id of the app.
238
- host (str): The host of the backend server.
239
- api_key (str): The API key to use for the backend server.
225
+ app_name: _description_. Defaults to None.
226
+ base_name: _description_. Defaults to None.
240
227
  """
241
-
242
228
  singleton = AgentaSingleton()
243
-
244
- singleton.init(app_id=app_id, host=host, api_key=api_key)
229
+ singleton.init(app_name=app_name, base_name=base_name, **kwargs)
245
230
  set_global(setup=singleton.setup, config=singleton.config)
246
231
 
247
232
 
@@ -250,7 +235,7 @@ def llm_tracing(max_workers: Optional[int] = None) -> Tracing:
250
235
 
251
236
  singleton = AgentaSingleton()
252
237
  return Tracing(
253
- base_url=singleton.host, # type: ignore
238
+ base_url=singleton.host,
254
239
  app_id=singleton.app_id, # type: ignore
255
240
  variant_id=singleton.variant_id, # type: ignore
256
241
  variant_name=singleton.variant_name,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agenta
3
- Version: 0.13.7a0
3
+ Version: 0.13.8
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Home-page: https://agenta.ai
6
6
  Keywords: LLMOps,LLM,evaluation,prompt engineering
@@ -61,7 +61,7 @@ agenta/client/backend/types/environment_output.py,sha256=dl0GKodeqB7kWK5mH6Y4iBp
61
61
  agenta/client/backend/types/environment_output_extended.py,sha256=WL1tA7HGax33eFL_ijPPYBJnbyz5NqTds2hnxxdgDQ8,1367
62
62
  agenta/client/backend/types/environment_revision.py,sha256=mSxckq5BtuJzQXBdxMKisdG3taGFi8MoVerkhmpIsjA,1128
63
63
  agenta/client/backend/types/error.py,sha256=iX_uV31o59d19V6-8yEAVC9RJanHGS8QvY8EC7HsIAk,996
64
- agenta/client/backend/types/evaluation.py,sha256=tVXTXDryqk3L7Dhl4zqSlczwcKlUIe0WgsqXGJ3ino0,1527
64
+ agenta/client/backend/types/evaluation.py,sha256=9sVWkGPMr2mgHe2AKHsF7Gs5O-aTQEYdJdiJI-W8FYI,1567
65
65
  agenta/client/backend/types/evaluation_scenario.py,sha256=MqxMVliNQCGu1LCq2HMlx7YuZ1UQn4KJQtHZI6TsXoU,1497
66
66
  agenta/client/backend/types/evaluation_scenario_input.py,sha256=cf562ry0rYNvLWx3hvQu9uNPrdrI3lRZ0IAIiCn4-Fs,1027
67
67
  agenta/client/backend/types/evaluation_scenario_output.py,sha256=g4UjTs-c5pfEPyeCD2Jgf871Exxqy0a7iTy3eymjFQo,1076
@@ -127,8 +127,8 @@ agenta/docker/docker-assets/lambda_function.py,sha256=h4UZSSfqwpfsCgERv6frqwm_4J
127
127
  agenta/docker/docker-assets/main.py,sha256=7MI-21n81U7N7A0GxebNi0cmGWtJKcR2sPB6FcH2QfA,251
128
128
  agenta/docker/docker_utils.py,sha256=5uHMCzXkCvIsDdEiwbnnn97KkzsFbBvyMwogCsv_Z5U,3509
129
129
  agenta/sdk/__init__.py,sha256=jmeLRuXrew02ZruODZYIu4kpw0S8vV6JhMPQWFGtj30,648
130
- agenta/sdk/agenta_decorator.py,sha256=cU43p0k8-KZKKuAgNMTkPRMeH9WuZ69UpOmtECKBygE,17819
131
- agenta/sdk/agenta_init.py,sha256=APcEklQrRkFw0tssX1IXf3D-aCay5k4utekYLf-wSbk,9005
130
+ agenta/sdk/agenta_decorator.py,sha256=6vz0G3YCRKRzK8JrQFyy8c2RIXy2kVMwyxTS093_8vQ,17296
131
+ agenta/sdk/agenta_init.py,sha256=wDfStpe8_3ZXRLtikarwDKI_VpA1YW4eIz_3fXq39is,9044
132
132
  agenta/sdk/context.py,sha256=q-PxL05-I84puunUAs9LGsffEXcYhDxhQxjuOz2vK90,901
133
133
  agenta/sdk/router.py,sha256=0sbajvn5C7t18anH6yNo7-oYxldHnYfwcbmQnIXBePw,269
134
134
  agenta/sdk/tracing/context_manager.py,sha256=HskDaiORoOhjeN375gm05wYnieQzh5UnoIsnSAHkAyc,252
@@ -155,7 +155,7 @@ agenta/templates/simple_prompt/app.py,sha256=kODgF6lhzsaJPdgL5b21bUki6jkvqjWZzWR
155
155
  agenta/templates/simple_prompt/env.example,sha256=g9AE5bYcGPpxawXMJ96gh8oenEPCHTabsiOnfQo3c5k,70
156
156
  agenta/templates/simple_prompt/requirements.txt,sha256=ywRglRy7pPkw8bljmMEJJ4aOOQKrt9FGKULZ-DGkoBU,23
157
157
  agenta/templates/simple_prompt/template.toml,sha256=DQBtRrF4GU8LBEXOZ-GGuINXMQDKGTEG5y37tnvIUIE,60
158
- agenta-0.13.7a0.dist-info/METADATA,sha256=6iiHRWDBO3XhVyIfq7bn8jFN7TG5BqwRTLLvFVClFN4,26433
159
- agenta-0.13.7a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
160
- agenta-0.13.7a0.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
161
- agenta-0.13.7a0.dist-info/RECORD,,
158
+ agenta-0.13.8.dist-info/METADATA,sha256=770aElNz-Xpy004G7vSZyuazow8Ckk0y9mB3ZhNxYTA,26431
159
+ agenta-0.13.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
160
+ agenta-0.13.8.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
161
+ agenta-0.13.8.dist-info/RECORD,,