agenta 0.13.7__py3-none-any.whl → 0.13.7a0__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.

@@ -399,12 +399,32 @@ 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
+
402
414
  result = loop.run_until_complete(
403
415
  execute_function(
404
416
  func, **{"params": args_func_params, "config_params": args_config_params}
405
417
  )
406
418
  )
407
- print(result)
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
+ )
408
428
 
409
429
 
410
430
  def override_schema(openapi_schema: dict, func_name: str, endpoint: str, params: dict):
agenta/sdk/agenta_init.py CHANGED
@@ -1,9 +1,8 @@
1
1
  import os
2
2
  import logging
3
- from typing import Any, Optional
4
-
5
- from .utils.globals import set_global
3
+ from typing import Optional
6
4
 
5
+ from agenta.sdk.utils.globals import set_global
7
6
  from agenta.client.backend.client import AgentaApi
8
7
  from agenta.sdk.tracing.llm_tracing import Tracing
9
8
  from agenta.client.exceptions import APIRequestError
@@ -13,16 +12,17 @@ logger = logging.getLogger(__name__)
13
12
  logger.setLevel(logging.DEBUG)
14
13
 
15
14
 
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")
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"
19
23
 
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
- )
24
+ def _build_sdk_client(self) -> AgentaApi:
25
+ return AgentaApi(base_url=self.host, api_key=self.api_key)
26
26
 
27
27
 
28
28
  class AgentaSingleton:
@@ -37,15 +37,22 @@ 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
+
40
51
  def init(
41
52
  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,
46
53
  app_id: Optional[str] = None,
47
54
  host: Optional[str] = None,
48
- **kwargs: Any,
55
+ api_key: Optional[str] = None,
49
56
  ) -> None:
50
57
  """Main function to initialize the singleton.
51
58
 
@@ -53,57 +60,44 @@ class AgentaSingleton:
53
60
  the function will look for them in environment variables.
54
61
 
55
62
  Args:
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.
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.
58
64
  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.
59
66
  kwargs (Any): Additional keyword arguments.
60
67
 
61
68
  Raises:
62
69
  ValueError: If `app_name`, `base_name`, or `host` are not specified either as arguments or in the environment variables.
63
70
  """
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."
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}"
79
91
  )
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
- )
88
92
 
93
+ self.app_id = app_id
89
94
  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
92
95
  self.variant_id = os.environ.get("AGENTA_VARIANT_ID")
93
96
  self.variant_name = os.environ.get("AGENTA_VARIANT_NAME")
94
- self.api_key = api_key
95
97
  self.config = Config(base_id=base_id, host=host)
96
98
 
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
-
105
99
  def get_app_base(self, app_id: str, base_name: str) -> str:
106
- bases = client.bases.list_bases(app_id=app_id, base_name=base_name)
100
+ bases = self.client.bases.list_bases(app_id=app_id, base_name=base_name)
107
101
  if len(bases) == 0:
108
102
  raise APIRequestError(f"No base was found for the app {app_id}")
109
103
  return bases[0].base_id
@@ -122,11 +116,23 @@ class Config:
122
116
  def __init__(self, base_id, host):
123
117
  self.base_id = base_id
124
118
  self.host = host
119
+
125
120
  if base_id is None or host is None:
126
121
  self.persist = False
127
122
  else:
128
123
  self.persist = True
129
124
 
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
+
130
136
  def register_default(self, overwrite=False, **kwargs):
131
137
  """alias for default"""
132
138
  return self.default(overwrite=overwrite, **kwargs)
@@ -157,7 +163,7 @@ class Config:
157
163
  if not self.persist:
158
164
  return
159
165
  try:
160
- client.configs.save_config(
166
+ self.client.configs.save_config(
161
167
  base_id=self.base_id,
162
168
  config_name=config_name,
163
169
  parameters=kwargs,
@@ -168,7 +174,9 @@ class Config:
168
174
  "Failed to push the configuration to the server with error: " + str(ex)
169
175
  )
170
176
 
171
- def pull(self, config_name: str = "default", environment_name: str = None):
177
+ def pull(
178
+ self, config_name: str = "default", environment_name: Optional[str] = None
179
+ ):
172
180
  """Pulls the parameters for the app variant from the server and sets them to the config"""
173
181
  if not self.persist and (
174
182
  config_name != "default" or environment_name is not None
@@ -179,12 +187,12 @@ class Config:
179
187
  if self.persist:
180
188
  try:
181
189
  if environment_name:
182
- config = client.configs.get_config(
190
+ config = self.client.configs.get_config(
183
191
  base_id=self.base_id, environment_name=environment_name
184
192
  )
185
193
 
186
194
  else:
187
- config = client.configs.get_config(
195
+ config = self.client.configs.get_config(
188
196
  base_id=self.base_id,
189
197
  config_name=config_name,
190
198
  )
@@ -218,15 +226,22 @@ class Config:
218
226
  setattr(self, key, value)
219
227
 
220
228
 
221
- def init(app_name=None, base_name=None, **kwargs):
229
+ def init(
230
+ app_id: Optional[str] = None,
231
+ host: Optional[str] = None,
232
+ api_key: Optional[str] = None,
233
+ ):
222
234
  """Main function to be called by the user to initialize the sdk.
223
235
 
224
236
  Args:
225
- app_name: _description_. Defaults to None.
226
- base_name: _description_. Defaults to None.
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.
227
240
  """
241
+
228
242
  singleton = AgentaSingleton()
229
- singleton.init(app_name=app_name, base_name=base_name, **kwargs)
243
+
244
+ singleton.init(app_id=app_id, host=host, api_key=api_key)
230
245
  set_global(setup=singleton.setup, config=singleton.config)
231
246
 
232
247
 
@@ -235,7 +250,7 @@ def llm_tracing(max_workers: Optional[int] = None) -> Tracing:
235
250
 
236
251
  singleton = AgentaSingleton()
237
252
  return Tracing(
238
- base_url=singleton.host,
253
+ base_url=singleton.host, # type: ignore
239
254
  app_id=singleton.app_id, # type: ignore
240
255
  variant_id=singleton.variant_id, # type: ignore
241
256
  variant_name=singleton.variant_name,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agenta
3
- Version: 0.13.7
3
+ Version: 0.13.7a0
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
@@ -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=6vz0G3YCRKRzK8JrQFyy8c2RIXy2kVMwyxTS093_8vQ,17296
131
- agenta/sdk/agenta_init.py,sha256=wDfStpe8_3ZXRLtikarwDKI_VpA1YW4eIz_3fXq39is,9044
130
+ agenta/sdk/agenta_decorator.py,sha256=cU43p0k8-KZKKuAgNMTkPRMeH9WuZ69UpOmtECKBygE,17819
131
+ agenta/sdk/agenta_init.py,sha256=APcEklQrRkFw0tssX1IXf3D-aCay5k4utekYLf-wSbk,9005
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.7.dist-info/METADATA,sha256=YEDnJ0_e1mvclbQJduXLPJzGD5kYh5L-XVAZ9-N9EX8,26431
159
- agenta-0.13.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
160
- agenta-0.13.7.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
161
- agenta-0.13.7.dist-info/RECORD,,
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,,