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.

Files changed (64) hide show
  1. agenta/__init__.py +2 -0
  2. agenta/client/backend/__init__.py +35 -23
  3. agenta/client/backend/admin/__init__.py +1 -0
  4. agenta/client/backend/admin/client.py +576 -0
  5. agenta/client/backend/apps/client.py +384 -2
  6. agenta/client/backend/client.py +22 -40
  7. agenta/client/backend/core/http_client.py +3 -3
  8. agenta/client/backend/evaluations/client.py +0 -6
  9. agenta/client/backend/human_evaluations/client.py +2 -6
  10. agenta/client/backend/observability/__init__.py +4 -0
  11. agenta/client/backend/observability/client.py +221 -744
  12. agenta/client/backend/testsets/client.py +16 -180
  13. agenta/client/backend/types/__init__.py +32 -22
  14. agenta/client/backend/types/account_response.py +24 -0
  15. agenta/client/backend/types/app_variant_revision.py +2 -1
  16. agenta/client/backend/types/{create_trace_response.py → legacy_scope_request.py} +3 -4
  17. agenta/client/backend/types/legacy_scopes_response.py +29 -0
  18. agenta/client/backend/types/{span_variant.py → legacy_user_request.py} +4 -5
  19. agenta/client/backend/types/{llm_tokens.py → legacy_user_response.py} +2 -4
  20. agenta/client/backend/types/{with_pagination.py → organization_membership_request.py} +6 -7
  21. agenta/client/backend/types/organization_request.py +23 -0
  22. agenta/client/backend/types/permission.py +4 -0
  23. agenta/client/backend/types/project_membership_request.py +26 -0
  24. agenta/client/backend/types/project_request.py +26 -0
  25. agenta/client/backend/types/project_scope.py +29 -0
  26. agenta/client/backend/types/provider_kind.py +1 -1
  27. agenta/client/backend/types/reference.py +22 -0
  28. agenta/client/backend/types/role.py +15 -0
  29. agenta/client/backend/types/scopes_response_model.py +22 -0
  30. agenta/client/backend/types/score.py +1 -1
  31. agenta/client/backend/types/secret_response_dto.py +2 -2
  32. agenta/client/backend/types/user_request.py +22 -0
  33. agenta/client/backend/types/workspace_membership_request.py +26 -0
  34. agenta/client/backend/types/workspace_request.py +25 -0
  35. agenta/client/backend/variants/client.py +166 -12
  36. agenta/client/backend/vault/client.py +11 -9
  37. agenta/sdk/__init__.py +3 -0
  38. agenta/sdk/agenta_init.py +3 -1
  39. agenta/sdk/assets.py +4 -4
  40. agenta/sdk/decorators/routing.py +95 -13
  41. agenta/sdk/managers/apps.py +64 -0
  42. agenta/sdk/managers/shared.py +2 -2
  43. agenta/sdk/middleware/auth.py +156 -57
  44. agenta/sdk/middleware/config.py +18 -14
  45. agenta/sdk/middleware/inline.py +1 -1
  46. agenta/sdk/middleware/mock.py +1 -1
  47. agenta/sdk/middleware/otel.py +1 -1
  48. agenta/sdk/middleware/vault.py +1 -1
  49. {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/METADATA +19 -14
  50. {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/RECORD +56 -49
  51. agenta/client/backend/observability_v_1/__init__.py +0 -5
  52. agenta/client/backend/observability_v_1/client.py +0 -763
  53. agenta/client/backend/types/create_span.py +0 -45
  54. agenta/client/backend/types/outputs.py +0 -5
  55. agenta/client/backend/types/span.py +0 -42
  56. agenta/client/backend/types/span_detail.py +0 -44
  57. agenta/client/backend/types/span_status_code.py +0 -5
  58. agenta/client/backend/types/trace_detail.py +0 -44
  59. /agenta/client/backend/{observability_v_1 → observability}/types/__init__.py +0 -0
  60. /agenta/client/backend/{observability_v_1 → observability}/types/format.py +0 -0
  61. /agenta/client/backend/{observability_v_1 → observability}/types/query_analytics_response.py +0 -0
  62. /agenta/client/backend/{observability_v_1 → observability}/types/query_traces_response.py +0 -0
  63. {agenta-0.33.0a1.dist-info → agenta-0.33.1.dist-info}/WHEEL +0 -0
  64. {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
@@ -10,7 +10,7 @@ ProviderKind = typing.Union[
10
10
  "deepinfra",
11
11
  "alephalpha",
12
12
  "groq",
13
- "mistral",
13
+ "mistralai",
14
14
  "anthropic",
15
15
  "perplexityai",
16
16
  "togetherai",
@@ -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,15 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ Role = typing.Union[
6
+ typing.Literal[
7
+ "owner",
8
+ "viewer",
9
+ "editor",
10
+ "evaluator",
11
+ "workspace_admin",
12
+ "deployment_manager",
13
+ ],
14
+ typing.Any,
15
+ ]
@@ -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
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- Score = typing.Union[str, int]
5
+ Score = typing.Optional[typing.Any]
@@ -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: typing.Optional[HeaderDto] = None
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
- secret : SecretDto
79
+ header : HeaderDto
80
80
 
81
- header : typing.Optional[HeaderDto]
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
- secret : SecretDto
401
+ header : HeaderDto
401
402
 
402
- header : typing.Optional[HeaderDto]
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/pplx-7b-chat",
70
- "perplexity/pplx-70b-chat",
71
- "perplexity/pplx-7b-online",
72
- "perplexity/pplx-70b-online",
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",