agenta 0.33.0a1__py3-none-any.whl → 0.33.1__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.
- agenta/__init__.py +2 -0
- agenta/client/backend/__init__.py +35 -23
- agenta/client/backend/admin/__init__.py +1 -0
- agenta/client/backend/admin/client.py +576 -0
- agenta/client/backend/apps/client.py +384 -2
- agenta/client/backend/client.py +22 -40
- agenta/client/backend/core/http_client.py +3 -3
- agenta/client/backend/evaluations/client.py +0 -6
- agenta/client/backend/human_evaluations/client.py +2 -6
- agenta/client/backend/observability/__init__.py +4 -0
- agenta/client/backend/observability/client.py +221 -744
- agenta/client/backend/testsets/client.py +16 -180
- agenta/client/backend/types/__init__.py +32 -22
- agenta/client/backend/types/account_response.py +24 -0
- agenta/client/backend/types/app_variant_revision.py +2 -1
- agenta/client/backend/types/{create_trace_response.py → legacy_scope_request.py} +3 -4
- agenta/client/backend/types/legacy_scopes_response.py +29 -0
- agenta/client/backend/types/{span_variant.py → legacy_user_request.py} +4 -5
- agenta/client/backend/types/{llm_tokens.py → legacy_user_response.py} +2 -4
- agenta/client/backend/types/{with_pagination.py → organization_membership_request.py} +6 -7
- agenta/client/backend/types/organization_request.py +23 -0
- agenta/client/backend/types/permission.py +4 -0
- agenta/client/backend/types/project_membership_request.py +26 -0
- agenta/client/backend/types/project_request.py +26 -0
- agenta/client/backend/types/project_scope.py +29 -0
- agenta/client/backend/types/provider_kind.py +1 -1
- agenta/client/backend/types/reference.py +22 -0
- agenta/client/backend/types/role.py +15 -0
- agenta/client/backend/types/scopes_response_model.py +22 -0
- agenta/client/backend/types/score.py +1 -1
- agenta/client/backend/types/secret_response_dto.py +2 -2
- agenta/client/backend/types/user_request.py +22 -0
- agenta/client/backend/types/workspace_membership_request.py +26 -0
- agenta/client/backend/types/workspace_request.py +25 -0
- agenta/client/backend/variants/client.py +166 -12
- agenta/client/backend/vault/client.py +11 -9
- agenta/sdk/__init__.py +3 -0
- agenta/sdk/agenta_init.py +3 -1
- agenta/sdk/assets.py +4 -4
- agenta/sdk/decorators/routing.py +95 -13
- agenta/sdk/managers/apps.py +64 -0
- agenta/sdk/managers/shared.py +2 -2
- agenta/sdk/middleware/auth.py +156 -57
- agenta/sdk/middleware/config.py +18 -14
- agenta/sdk/middleware/inline.py +1 -1
- agenta/sdk/middleware/mock.py +1 -1
- agenta/sdk/middleware/otel.py +1 -1
- agenta/sdk/middleware/vault.py +1 -1
- {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/METADATA +19 -14
- {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/RECORD +56 -49
- agenta/client/backend/observability_v_1/__init__.py +0 -5
- agenta/client/backend/observability_v_1/client.py +0 -763
- agenta/client/backend/types/create_span.py +0 -45
- agenta/client/backend/types/outputs.py +0 -5
- agenta/client/backend/types/span.py +0 -42
- agenta/client/backend/types/span_detail.py +0 -44
- agenta/client/backend/types/span_status_code.py +0 -5
- agenta/client/backend/types/trace_detail.py +0 -44
- /agenta/client/backend/{observability_v_1 → observability}/types/__init__.py +0 -0
- /agenta/client/backend/{observability_v_1 → observability}/types/format.py +0 -0
- /agenta/client/backend/{observability_v_1 → observability}/types/query_analytics_response.py +0 -0
- /agenta/client/backend/{observability_v_1 → observability}/types/query_traces_response.py +0 -0
- {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/WHEEL +0 -0
- {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
+
from .reference import Reference
|
|
5
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import typing
|
|
7
|
+
import pydantic
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ProjectRequest(UniversalBaseModel):
|
|
11
|
+
name: str
|
|
12
|
+
description: str
|
|
13
|
+
is_default: bool
|
|
14
|
+
workspace_ref: Reference
|
|
15
|
+
organization_ref: Reference
|
|
16
|
+
|
|
17
|
+
if IS_PYDANTIC_V2:
|
|
18
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
19
|
+
extra="allow", frozen=True
|
|
20
|
+
) # type: ignore # Pydantic v2
|
|
21
|
+
else:
|
|
22
|
+
|
|
23
|
+
class Config:
|
|
24
|
+
frozen = True
|
|
25
|
+
smart_union = True
|
|
26
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
+
from .role import Role
|
|
5
|
+
from .reference import Reference
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
7
|
+
import typing
|
|
8
|
+
import pydantic
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProjectScope(UniversalBaseModel):
|
|
12
|
+
credentials: str
|
|
13
|
+
role: Role
|
|
14
|
+
tier: str
|
|
15
|
+
user: Reference
|
|
16
|
+
project: Reference
|
|
17
|
+
workspace: Reference
|
|
18
|
+
organization: Reference
|
|
19
|
+
|
|
20
|
+
if IS_PYDANTIC_V2:
|
|
21
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
22
|
+
extra="allow", frozen=True
|
|
23
|
+
) # type: ignore # Pydantic v2
|
|
24
|
+
else:
|
|
25
|
+
|
|
26
|
+
class Config:
|
|
27
|
+
frozen = True
|
|
28
|
+
smart_union = True
|
|
29
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
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 ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import pydantic
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Reference(UniversalBaseModel):
|
|
10
|
+
id: typing.Optional[str] = None
|
|
11
|
+
slug: typing.Optional[str] = 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
|
|
@@ -0,0 +1,22 @@
|
|
|
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 .project_scope import ProjectScope
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
7
|
+
import pydantic
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ScopesResponseModel(UniversalBaseModel):
|
|
11
|
+
projects: typing.Optional[typing.Dict[str, typing.Dict[str, ProjectScope]]] = 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,16 +1,16 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
3
|
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
-
import typing
|
|
5
4
|
from .header_dto import HeaderDto
|
|
6
5
|
from .secret_dto import SecretDto
|
|
6
|
+
import typing
|
|
7
7
|
from .lifecycle_dto import LifecycleDto
|
|
8
8
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
9
9
|
import pydantic
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class SecretResponseDto(UniversalBaseModel):
|
|
13
|
-
header:
|
|
13
|
+
header: HeaderDto
|
|
14
14
|
secret: SecretDto
|
|
15
15
|
id: str
|
|
16
16
|
lifecycle: typing.Optional[LifecycleDto] = None
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
5
|
+
import typing
|
|
6
|
+
import pydantic
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UserRequest(UniversalBaseModel):
|
|
10
|
+
name: str
|
|
11
|
+
email: str
|
|
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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
+
from .role import Role
|
|
5
|
+
from .reference import Reference
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
7
|
+
import typing
|
|
8
|
+
import pydantic
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WorkspaceMembershipRequest(UniversalBaseModel):
|
|
12
|
+
role: Role
|
|
13
|
+
is_demo: bool
|
|
14
|
+
user_ref: Reference
|
|
15
|
+
workspace_ref: Reference
|
|
16
|
+
|
|
17
|
+
if IS_PYDANTIC_V2:
|
|
18
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
19
|
+
extra="allow", frozen=True
|
|
20
|
+
) # type: ignore # Pydantic v2
|
|
21
|
+
else:
|
|
22
|
+
|
|
23
|
+
class Config:
|
|
24
|
+
frozen = True
|
|
25
|
+
smart_union = True
|
|
26
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.pydantic_utilities import UniversalBaseModel
|
|
4
|
+
from .reference import Reference
|
|
5
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import typing
|
|
7
|
+
import pydantic
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class WorkspaceRequest(UniversalBaseModel):
|
|
11
|
+
name: str
|
|
12
|
+
description: str
|
|
13
|
+
is_default: bool
|
|
14
|
+
organization_ref: Reference
|
|
15
|
+
|
|
16
|
+
if IS_PYDANTIC_V2:
|
|
17
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
18
|
+
extra="allow", frozen=True
|
|
19
|
+
) # type: ignore # Pydantic v2
|
|
20
|
+
else:
|
|
21
|
+
|
|
22
|
+
class Config:
|
|
23
|
+
frozen = True
|
|
24
|
+
smart_union = True
|
|
25
|
+
extra = pydantic.Extra.allow
|
|
@@ -293,15 +293,9 @@ class VariantsClient:
|
|
|
293
293
|
In the case it's the last variant using the image, stop the container and remove the image.
|
|
294
294
|
|
|
295
295
|
Arguments:
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
296
|
app_variant -- AppVariant to remove
|
|
300
297
|
|
|
301
298
|
Raises:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
299
|
HTTPException: If there is a problem removing the app variant
|
|
306
300
|
|
|
307
301
|
Parameters
|
|
@@ -538,6 +532,85 @@ class VariantsClient:
|
|
|
538
532
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
539
533
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
540
534
|
|
|
535
|
+
def update_variant_url(
|
|
536
|
+
self,
|
|
537
|
+
variant_id: str,
|
|
538
|
+
*,
|
|
539
|
+
url: str,
|
|
540
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
541
|
+
) -> typing.Optional[typing.Any]:
|
|
542
|
+
"""
|
|
543
|
+
Updates the URL used in an app variant.
|
|
544
|
+
|
|
545
|
+
Args:
|
|
546
|
+
variant_id (str): The ID of the app variant to update.
|
|
547
|
+
url (str): The URL to update.
|
|
548
|
+
|
|
549
|
+
Raises:
|
|
550
|
+
HTTPException: If an error occurs while trying to update the app variant.
|
|
551
|
+
|
|
552
|
+
Returns:
|
|
553
|
+
JSONResponse: A JSON response indicating whether the update was successful or not.
|
|
554
|
+
|
|
555
|
+
Parameters
|
|
556
|
+
----------
|
|
557
|
+
variant_id : str
|
|
558
|
+
|
|
559
|
+
url : str
|
|
560
|
+
|
|
561
|
+
request_options : typing.Optional[RequestOptions]
|
|
562
|
+
Request-specific configuration.
|
|
563
|
+
|
|
564
|
+
Returns
|
|
565
|
+
-------
|
|
566
|
+
typing.Optional[typing.Any]
|
|
567
|
+
Successful Response
|
|
568
|
+
|
|
569
|
+
Examples
|
|
570
|
+
--------
|
|
571
|
+
from agenta import AgentaApi
|
|
572
|
+
|
|
573
|
+
client = AgentaApi(
|
|
574
|
+
api_key="YOUR_API_KEY",
|
|
575
|
+
base_url="https://yourhost.com/path/to/api",
|
|
576
|
+
)
|
|
577
|
+
client.variants.update_variant_url(
|
|
578
|
+
variant_id="variant_id",
|
|
579
|
+
url="url",
|
|
580
|
+
)
|
|
581
|
+
"""
|
|
582
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
583
|
+
f"variants/{jsonable_encoder(variant_id)}/service",
|
|
584
|
+
method="PUT",
|
|
585
|
+
params={
|
|
586
|
+
"url": url,
|
|
587
|
+
},
|
|
588
|
+
request_options=request_options,
|
|
589
|
+
)
|
|
590
|
+
try:
|
|
591
|
+
if 200 <= _response.status_code < 300:
|
|
592
|
+
return typing.cast(
|
|
593
|
+
typing.Optional[typing.Any],
|
|
594
|
+
parse_obj_as(
|
|
595
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
596
|
+
object_=_response.json(),
|
|
597
|
+
),
|
|
598
|
+
)
|
|
599
|
+
if _response.status_code == 422:
|
|
600
|
+
raise UnprocessableEntityError(
|
|
601
|
+
typing.cast(
|
|
602
|
+
HttpValidationError,
|
|
603
|
+
parse_obj_as(
|
|
604
|
+
type_=HttpValidationError, # type: ignore
|
|
605
|
+
object_=_response.json(),
|
|
606
|
+
),
|
|
607
|
+
)
|
|
608
|
+
)
|
|
609
|
+
_response_json = _response.json()
|
|
610
|
+
except JSONDecodeError:
|
|
611
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
612
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
613
|
+
|
|
541
614
|
def retrieve_variant_logs(
|
|
542
615
|
self,
|
|
543
616
|
variant_id: str,
|
|
@@ -1648,15 +1721,9 @@ class AsyncVariantsClient:
|
|
|
1648
1721
|
In the case it's the last variant using the image, stop the container and remove the image.
|
|
1649
1722
|
|
|
1650
1723
|
Arguments:
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
1724
|
app_variant -- AppVariant to remove
|
|
1655
1725
|
|
|
1656
1726
|
Raises:
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
1727
|
HTTPException: If there is a problem removing the app variant
|
|
1661
1728
|
|
|
1662
1729
|
Parameters
|
|
@@ -1917,6 +1984,93 @@ class AsyncVariantsClient:
|
|
|
1917
1984
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1918
1985
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
1919
1986
|
|
|
1987
|
+
async def update_variant_url(
|
|
1988
|
+
self,
|
|
1989
|
+
variant_id: str,
|
|
1990
|
+
*,
|
|
1991
|
+
url: str,
|
|
1992
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1993
|
+
) -> typing.Optional[typing.Any]:
|
|
1994
|
+
"""
|
|
1995
|
+
Updates the URL used in an app variant.
|
|
1996
|
+
|
|
1997
|
+
Args:
|
|
1998
|
+
variant_id (str): The ID of the app variant to update.
|
|
1999
|
+
url (str): The URL to update.
|
|
2000
|
+
|
|
2001
|
+
Raises:
|
|
2002
|
+
HTTPException: If an error occurs while trying to update the app variant.
|
|
2003
|
+
|
|
2004
|
+
Returns:
|
|
2005
|
+
JSONResponse: A JSON response indicating whether the update was successful or not.
|
|
2006
|
+
|
|
2007
|
+
Parameters
|
|
2008
|
+
----------
|
|
2009
|
+
variant_id : str
|
|
2010
|
+
|
|
2011
|
+
url : str
|
|
2012
|
+
|
|
2013
|
+
request_options : typing.Optional[RequestOptions]
|
|
2014
|
+
Request-specific configuration.
|
|
2015
|
+
|
|
2016
|
+
Returns
|
|
2017
|
+
-------
|
|
2018
|
+
typing.Optional[typing.Any]
|
|
2019
|
+
Successful Response
|
|
2020
|
+
|
|
2021
|
+
Examples
|
|
2022
|
+
--------
|
|
2023
|
+
import asyncio
|
|
2024
|
+
|
|
2025
|
+
from agenta import AsyncAgentaApi
|
|
2026
|
+
|
|
2027
|
+
client = AsyncAgentaApi(
|
|
2028
|
+
api_key="YOUR_API_KEY",
|
|
2029
|
+
base_url="https://yourhost.com/path/to/api",
|
|
2030
|
+
)
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
async def main() -> None:
|
|
2034
|
+
await client.variants.update_variant_url(
|
|
2035
|
+
variant_id="variant_id",
|
|
2036
|
+
url="url",
|
|
2037
|
+
)
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
asyncio.run(main())
|
|
2041
|
+
"""
|
|
2042
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2043
|
+
f"variants/{jsonable_encoder(variant_id)}/service",
|
|
2044
|
+
method="PUT",
|
|
2045
|
+
params={
|
|
2046
|
+
"url": url,
|
|
2047
|
+
},
|
|
2048
|
+
request_options=request_options,
|
|
2049
|
+
)
|
|
2050
|
+
try:
|
|
2051
|
+
if 200 <= _response.status_code < 300:
|
|
2052
|
+
return typing.cast(
|
|
2053
|
+
typing.Optional[typing.Any],
|
|
2054
|
+
parse_obj_as(
|
|
2055
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2056
|
+
object_=_response.json(),
|
|
2057
|
+
),
|
|
2058
|
+
)
|
|
2059
|
+
if _response.status_code == 422:
|
|
2060
|
+
raise UnprocessableEntityError(
|
|
2061
|
+
typing.cast(
|
|
2062
|
+
HttpValidationError,
|
|
2063
|
+
parse_obj_as(
|
|
2064
|
+
type_=HttpValidationError, # type: ignore
|
|
2065
|
+
object_=_response.json(),
|
|
2066
|
+
),
|
|
2067
|
+
)
|
|
2068
|
+
)
|
|
2069
|
+
_response_json = _response.json()
|
|
2070
|
+
except JSONDecodeError:
|
|
2071
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
2072
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
2073
|
+
|
|
1920
2074
|
async def retrieve_variant_logs(
|
|
1921
2075
|
self,
|
|
1922
2076
|
variant_id: str,
|
|
@@ -7,8 +7,8 @@ from ..types.secret_response_dto import SecretResponseDto
|
|
|
7
7
|
from ..core.pydantic_utilities import parse_obj_as
|
|
8
8
|
from json.decoder import JSONDecodeError
|
|
9
9
|
from ..core.api_error import ApiError
|
|
10
|
-
from ..types.secret_dto import SecretDto
|
|
11
10
|
from ..types.header_dto import HeaderDto
|
|
11
|
+
from ..types.secret_dto import SecretDto
|
|
12
12
|
from ..core.serialization import convert_and_respect_annotation_metadata
|
|
13
13
|
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
|
14
14
|
from ..types.http_validation_error import HttpValidationError
|
|
@@ -69,16 +69,16 @@ class VaultClient:
|
|
|
69
69
|
def create_secret(
|
|
70
70
|
self,
|
|
71
71
|
*,
|
|
72
|
+
header: HeaderDto,
|
|
72
73
|
secret: SecretDto,
|
|
73
|
-
header: typing.Optional[HeaderDto] = OMIT,
|
|
74
74
|
request_options: typing.Optional[RequestOptions] = None,
|
|
75
75
|
) -> SecretResponseDto:
|
|
76
76
|
"""
|
|
77
77
|
Parameters
|
|
78
78
|
----------
|
|
79
|
-
|
|
79
|
+
header : HeaderDto
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
secret : SecretDto
|
|
82
82
|
|
|
83
83
|
request_options : typing.Optional[RequestOptions]
|
|
84
84
|
Request-specific configuration.
|
|
@@ -90,13 +90,14 @@ class VaultClient:
|
|
|
90
90
|
|
|
91
91
|
Examples
|
|
92
92
|
--------
|
|
93
|
-
from agenta import AgentaApi, ProviderKeyDto, SecretDto
|
|
93
|
+
from agenta import AgentaApi, HeaderDto, ProviderKeyDto, SecretDto
|
|
94
94
|
|
|
95
95
|
client = AgentaApi(
|
|
96
96
|
api_key="YOUR_API_KEY",
|
|
97
97
|
base_url="https://yourhost.com/path/to/api",
|
|
98
98
|
)
|
|
99
99
|
client.vault.create_secret(
|
|
100
|
+
header=HeaderDto(),
|
|
100
101
|
secret=SecretDto(
|
|
101
102
|
data=ProviderKeyDto(
|
|
102
103
|
provider="openai",
|
|
@@ -390,16 +391,16 @@ class AsyncVaultClient:
|
|
|
390
391
|
async def create_secret(
|
|
391
392
|
self,
|
|
392
393
|
*,
|
|
394
|
+
header: HeaderDto,
|
|
393
395
|
secret: SecretDto,
|
|
394
|
-
header: typing.Optional[HeaderDto] = OMIT,
|
|
395
396
|
request_options: typing.Optional[RequestOptions] = None,
|
|
396
397
|
) -> SecretResponseDto:
|
|
397
398
|
"""
|
|
398
399
|
Parameters
|
|
399
400
|
----------
|
|
400
|
-
|
|
401
|
+
header : HeaderDto
|
|
401
402
|
|
|
402
|
-
|
|
403
|
+
secret : SecretDto
|
|
403
404
|
|
|
404
405
|
request_options : typing.Optional[RequestOptions]
|
|
405
406
|
Request-specific configuration.
|
|
@@ -413,7 +414,7 @@ class AsyncVaultClient:
|
|
|
413
414
|
--------
|
|
414
415
|
import asyncio
|
|
415
416
|
|
|
416
|
-
from agenta import AsyncAgentaApi, ProviderKeyDto, SecretDto
|
|
417
|
+
from agenta import AsyncAgentaApi, HeaderDto, ProviderKeyDto, SecretDto
|
|
417
418
|
|
|
418
419
|
client = AsyncAgentaApi(
|
|
419
420
|
api_key="YOUR_API_KEY",
|
|
@@ -423,6 +424,7 @@ class AsyncVaultClient:
|
|
|
423
424
|
|
|
424
425
|
async def main() -> None:
|
|
425
426
|
await client.vault.create_secret(
|
|
427
|
+
header=HeaderDto(),
|
|
426
428
|
secret=SecretDto(
|
|
427
429
|
data=ProviderKeyDto(
|
|
428
430
|
provider="openai",
|
agenta/sdk/__init__.py
CHANGED
|
@@ -26,11 +26,14 @@ from .tracing.conventions import Reference
|
|
|
26
26
|
from .decorators.routing import entrypoint, app, route
|
|
27
27
|
from .agenta_init import Config, AgentaSingleton, init as _init
|
|
28
28
|
from .utils.costs import calculate_token_usage
|
|
29
|
+
from .managers.apps import AppManager
|
|
29
30
|
from .managers.vault import VaultManager
|
|
30
31
|
from .managers.secrets import SecretsManager
|
|
31
32
|
from .managers.config import ConfigManager
|
|
32
33
|
from .managers.variant import VariantManager
|
|
33
34
|
from .managers.deployment import DeploymentManager
|
|
35
|
+
from ..client.exceptions import APIRequestError
|
|
36
|
+
|
|
34
37
|
|
|
35
38
|
config = PreInitObject("agenta.config", Config)
|
|
36
39
|
DEFAULT_AGENTA_SINGLETON_INSTANCE = AgentaSingleton()
|
agenta/sdk/agenta_init.py
CHANGED
|
@@ -74,6 +74,8 @@ class AgentaSingleton:
|
|
|
74
74
|
or "https://cloud.agenta.ai"
|
|
75
75
|
)
|
|
76
76
|
|
|
77
|
+
log.info("Agenta - Host: %s", self.host)
|
|
78
|
+
|
|
77
79
|
self.app_id = app_id or config.get("app_id") or getenv("AGENTA_APP_ID")
|
|
78
80
|
# if not self.app_id:
|
|
79
81
|
# raise ValueError(
|
|
@@ -87,7 +89,7 @@ class AgentaSingleton:
|
|
|
87
89
|
|
|
88
90
|
self.base_id = getenv("AGENTA_BASE_ID")
|
|
89
91
|
|
|
90
|
-
self.service_id = getenv("AGENTA_SERVICE_ID") or self.base_id
|
|
92
|
+
self.service_id = getenv("AGENTA_SERVICE_ID") or self.base_id or None
|
|
91
93
|
|
|
92
94
|
log.info("Agenta - Service ID: %s", self.service_id)
|
|
93
95
|
log.info("Agenta - Application ID: %s", self.app_id)
|
agenta/sdk/assets.py
CHANGED
|
@@ -66,10 +66,10 @@ supported_llm_models = {
|
|
|
66
66
|
"openrouter/meta-llama/llama-2-70b-chat",
|
|
67
67
|
],
|
|
68
68
|
"Perplexity AI": [
|
|
69
|
-
"perplexity/
|
|
70
|
-
"perplexity/
|
|
71
|
-
"perplexity/
|
|
72
|
-
"perplexity/
|
|
69
|
+
"perplexity/sonar",
|
|
70
|
+
"perplexity/sonar-pro",
|
|
71
|
+
"perplexity/sonar-reasoning",
|
|
72
|
+
"perplexity/sonar-reasoning-pro",
|
|
73
73
|
],
|
|
74
74
|
"Together AI": [
|
|
75
75
|
"together_ai/togethercomputer/llama-2-70b-chat",
|