athena-intelligence 0.1.117__tar.gz → 0.1.119__tar.gz
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.
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/PKG-INFO +1 -1
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/pyproject.toml +1 -1
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/__init__.py +14 -1
- athena_intelligence-0.1.119/src/athena/agents/__init__.py +5 -0
- athena_intelligence-0.1.119/src/athena/agents/athena_assistant/__init__.py +2 -0
- athena_intelligence-0.1.119/src/athena/agents/athena_assistant/client.py +353 -0
- athena_intelligence-0.1.119/src/athena/agents/client.py +19 -0
- athena_intelligence-0.1.119/src/athena/agents/structured_data_extractor/__init__.py +2 -0
- athena_intelligence-0.1.119/src/athena/agents/structured_data_extractor/client.py +150 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/base_client.py +3 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/client_wrapper.py +1 -1
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/tools/client.py +10 -10
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/__init__.py +12 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_config.py +36 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_config_enabled_tools_item.py +7 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_reponse.py +33 -0
- athena_intelligence-0.1.119/src/athena/types/athena_assistant_request.py +38 -0
- athena_intelligence-0.1.119/src/athena/types/structured_data_extractor_reponse.py +36 -0
- athena_intelligence-0.1.119/src/athena/types/tool.py +17 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/README.md +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/client.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/api_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/datetime_utils.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/file.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/http_client.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/jsonable_encoder.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/pydantic_utilities.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/query_encoder.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/remove_none_from_dict.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/request_options.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/environment.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/bad_request_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/content_too_large_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/internal_server_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/not_found_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/unauthorized_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/unprocessable_entity_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/unsupported_media_type_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/py.typed +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/query/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/query/client.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/query/types/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/query/types/query_execute_request_database_asset_ids.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/tools/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/tools/types/__init__.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/tools/types/tools_data_frame_request_columns_item.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/asset_not_found_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_columns_item.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_data_item_item.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/data_frame_request_out_index_item.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/data_frame_unknown_format_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/document_chunk.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/file_chunk_request_out.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/file_too_large_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/parent_folder_error.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/save_asset_request_out.py +0 -0
- {athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/version.py +0 -0
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
from .types import (
|
4
4
|
AssetNotFoundError,
|
5
|
+
AthenaAssistantConfig,
|
6
|
+
AthenaAssistantConfigEnabledToolsItem,
|
7
|
+
AthenaAssistantReponse,
|
8
|
+
AthenaAssistantRequest,
|
5
9
|
DataFrameRequestOut,
|
6
10
|
DataFrameRequestOutColumnsItem,
|
7
11
|
DataFrameRequestOutDataItemItem,
|
@@ -12,6 +16,8 @@ from .types import (
|
|
12
16
|
FileTooLargeError,
|
13
17
|
ParentFolderError,
|
14
18
|
SaveAssetRequestOut,
|
19
|
+
StructuredDataExtractorReponse,
|
20
|
+
Tool,
|
15
21
|
)
|
16
22
|
from .errors import (
|
17
23
|
BadRequestError,
|
@@ -22,7 +28,7 @@ from .errors import (
|
|
22
28
|
UnprocessableEntityError,
|
23
29
|
UnsupportedMediaTypeError,
|
24
30
|
)
|
25
|
-
from . import query, tools
|
31
|
+
from . import agents, query, tools
|
26
32
|
from .environment import AthenaEnvironment
|
27
33
|
from .query import QueryExecuteRequestDatabaseAssetIds
|
28
34
|
from .tools import ToolsDataFrameRequestColumnsItem
|
@@ -30,6 +36,10 @@ from .version import __version__
|
|
30
36
|
|
31
37
|
__all__ = [
|
32
38
|
"AssetNotFoundError",
|
39
|
+
"AthenaAssistantConfig",
|
40
|
+
"AthenaAssistantConfigEnabledToolsItem",
|
41
|
+
"AthenaAssistantReponse",
|
42
|
+
"AthenaAssistantRequest",
|
33
43
|
"AthenaEnvironment",
|
34
44
|
"BadRequestError",
|
35
45
|
"ContentTooLargeError",
|
@@ -46,11 +56,14 @@ __all__ = [
|
|
46
56
|
"ParentFolderError",
|
47
57
|
"QueryExecuteRequestDatabaseAssetIds",
|
48
58
|
"SaveAssetRequestOut",
|
59
|
+
"StructuredDataExtractorReponse",
|
60
|
+
"Tool",
|
49
61
|
"ToolsDataFrameRequestColumnsItem",
|
50
62
|
"UnauthorizedError",
|
51
63
|
"UnprocessableEntityError",
|
52
64
|
"UnsupportedMediaTypeError",
|
53
65
|
"__version__",
|
66
|
+
"agents",
|
54
67
|
"query",
|
55
68
|
"tools",
|
56
69
|
]
|
@@ -0,0 +1,353 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
from json.decoder import JSONDecodeError
|
5
|
+
|
6
|
+
from ...core.api_error import ApiError
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
|
+
from ...core.pydantic_utilities import pydantic_v1
|
9
|
+
from ...core.request_options import RequestOptions
|
10
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
11
|
+
from ...types.athena_assistant_reponse import AthenaAssistantReponse
|
12
|
+
from ...types.athena_assistant_request import AthenaAssistantRequest
|
13
|
+
|
14
|
+
# this is used as the default value for optional parameters
|
15
|
+
OMIT = typing.cast(typing.Any, ...)
|
16
|
+
|
17
|
+
|
18
|
+
class AthenaAssistantClient:
|
19
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
20
|
+
self._client_wrapper = client_wrapper
|
21
|
+
|
22
|
+
def batch(
|
23
|
+
self,
|
24
|
+
*,
|
25
|
+
request: typing.Sequence[AthenaAssistantRequest],
|
26
|
+
request_options: typing.Optional[RequestOptions] = None
|
27
|
+
) -> typing.List[AthenaAssistantReponse]:
|
28
|
+
"""
|
29
|
+
Call the Athena assistant with batched requests and return the results.
|
30
|
+
|
31
|
+
Parameters
|
32
|
+
----------
|
33
|
+
request : typing.Sequence[AthenaAssistantRequest]
|
34
|
+
|
35
|
+
request_options : typing.Optional[RequestOptions]
|
36
|
+
Request-specific configuration.
|
37
|
+
|
38
|
+
Returns
|
39
|
+
-------
|
40
|
+
typing.List[AthenaAssistantReponse]
|
41
|
+
Successful Response
|
42
|
+
|
43
|
+
Examples
|
44
|
+
--------
|
45
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
46
|
+
from athena.client import Athena
|
47
|
+
|
48
|
+
client = Athena(
|
49
|
+
api_key="YOUR_API_KEY",
|
50
|
+
)
|
51
|
+
client.agents.athena_assistant.batch(
|
52
|
+
request=[
|
53
|
+
AthenaAssistantRequest(
|
54
|
+
config=AthenaAssistantConfig(
|
55
|
+
enabled_tools=[Tool.SEARCH],
|
56
|
+
),
|
57
|
+
messages=[],
|
58
|
+
)
|
59
|
+
],
|
60
|
+
)
|
61
|
+
"""
|
62
|
+
_response = self._client_wrapper.httpx_client.request(
|
63
|
+
"api/v0/agents/athena-assistant/batch",
|
64
|
+
method="POST",
|
65
|
+
json=request,
|
66
|
+
request_options=request_options,
|
67
|
+
omit=OMIT,
|
68
|
+
)
|
69
|
+
if 200 <= _response.status_code < 300:
|
70
|
+
return pydantic_v1.parse_obj_as(typing.List[AthenaAssistantReponse], _response.json()) # type: ignore
|
71
|
+
if _response.status_code == 422:
|
72
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
73
|
+
try:
|
74
|
+
_response_json = _response.json()
|
75
|
+
except JSONDecodeError:
|
76
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
77
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
78
|
+
|
79
|
+
def invoke(
|
80
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
81
|
+
) -> AthenaAssistantReponse:
|
82
|
+
"""
|
83
|
+
Call the Athena Assistant agent synchronously.
|
84
|
+
|
85
|
+
Call the agent with the messages list, wait for the agent to complete,
|
86
|
+
and return the result.
|
87
|
+
|
88
|
+
Parameters
|
89
|
+
----------
|
90
|
+
request : AthenaAssistantRequest
|
91
|
+
|
92
|
+
request_options : typing.Optional[RequestOptions]
|
93
|
+
Request-specific configuration.
|
94
|
+
|
95
|
+
Returns
|
96
|
+
-------
|
97
|
+
AthenaAssistantReponse
|
98
|
+
Successful Response
|
99
|
+
|
100
|
+
Examples
|
101
|
+
--------
|
102
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
103
|
+
from athena.client import Athena
|
104
|
+
|
105
|
+
client = Athena(
|
106
|
+
api_key="YOUR_API_KEY",
|
107
|
+
)
|
108
|
+
client.agents.athena_assistant.invoke(
|
109
|
+
request=AthenaAssistantRequest(
|
110
|
+
config=AthenaAssistantConfig(
|
111
|
+
enabled_tools=[Tool.SEARCH],
|
112
|
+
),
|
113
|
+
messages=[],
|
114
|
+
),
|
115
|
+
)
|
116
|
+
"""
|
117
|
+
_response = self._client_wrapper.httpx_client.request(
|
118
|
+
"api/v0/agents/athena-assistant/invoke",
|
119
|
+
method="POST",
|
120
|
+
json=request,
|
121
|
+
request_options=request_options,
|
122
|
+
omit=OMIT,
|
123
|
+
)
|
124
|
+
if 200 <= _response.status_code < 300:
|
125
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
126
|
+
if _response.status_code == 422:
|
127
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
128
|
+
try:
|
129
|
+
_response_json = _response.json()
|
130
|
+
except JSONDecodeError:
|
131
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
132
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
133
|
+
|
134
|
+
def stream_events(
|
135
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
136
|
+
) -> AthenaAssistantReponse:
|
137
|
+
"""
|
138
|
+
Call the Athena assistant and stream events.
|
139
|
+
|
140
|
+
Parameters
|
141
|
+
----------
|
142
|
+
request : AthenaAssistantRequest
|
143
|
+
|
144
|
+
request_options : typing.Optional[RequestOptions]
|
145
|
+
Request-specific configuration.
|
146
|
+
|
147
|
+
Returns
|
148
|
+
-------
|
149
|
+
AthenaAssistantReponse
|
150
|
+
Successful Response
|
151
|
+
|
152
|
+
Examples
|
153
|
+
--------
|
154
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
155
|
+
from athena.client import Athena
|
156
|
+
|
157
|
+
client = Athena(
|
158
|
+
api_key="YOUR_API_KEY",
|
159
|
+
)
|
160
|
+
client.agents.athena_assistant.stream_events(
|
161
|
+
request=AthenaAssistantRequest(
|
162
|
+
config=AthenaAssistantConfig(
|
163
|
+
enabled_tools=[Tool.SEARCH],
|
164
|
+
),
|
165
|
+
messages=[],
|
166
|
+
),
|
167
|
+
)
|
168
|
+
"""
|
169
|
+
_response = self._client_wrapper.httpx_client.request(
|
170
|
+
"api/v0/agents/athena-assistant/stream_events",
|
171
|
+
method="POST",
|
172
|
+
json=request,
|
173
|
+
request_options=request_options,
|
174
|
+
omit=OMIT,
|
175
|
+
)
|
176
|
+
if 200 <= _response.status_code < 300:
|
177
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
178
|
+
if _response.status_code == 422:
|
179
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
180
|
+
try:
|
181
|
+
_response_json = _response.json()
|
182
|
+
except JSONDecodeError:
|
183
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
184
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
185
|
+
|
186
|
+
|
187
|
+
class AsyncAthenaAssistantClient:
|
188
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
189
|
+
self._client_wrapper = client_wrapper
|
190
|
+
|
191
|
+
async def batch(
|
192
|
+
self,
|
193
|
+
*,
|
194
|
+
request: typing.Sequence[AthenaAssistantRequest],
|
195
|
+
request_options: typing.Optional[RequestOptions] = None
|
196
|
+
) -> typing.List[AthenaAssistantReponse]:
|
197
|
+
"""
|
198
|
+
Call the Athena assistant with batched requests and return the results.
|
199
|
+
|
200
|
+
Parameters
|
201
|
+
----------
|
202
|
+
request : typing.Sequence[AthenaAssistantRequest]
|
203
|
+
|
204
|
+
request_options : typing.Optional[RequestOptions]
|
205
|
+
Request-specific configuration.
|
206
|
+
|
207
|
+
Returns
|
208
|
+
-------
|
209
|
+
typing.List[AthenaAssistantReponse]
|
210
|
+
Successful Response
|
211
|
+
|
212
|
+
Examples
|
213
|
+
--------
|
214
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
215
|
+
from athena.client import AsyncAthena
|
216
|
+
|
217
|
+
client = AsyncAthena(
|
218
|
+
api_key="YOUR_API_KEY",
|
219
|
+
)
|
220
|
+
await client.agents.athena_assistant.batch(
|
221
|
+
request=[
|
222
|
+
AthenaAssistantRequest(
|
223
|
+
config=AthenaAssistantConfig(
|
224
|
+
enabled_tools=[Tool.SEARCH],
|
225
|
+
),
|
226
|
+
messages=[],
|
227
|
+
)
|
228
|
+
],
|
229
|
+
)
|
230
|
+
"""
|
231
|
+
_response = await self._client_wrapper.httpx_client.request(
|
232
|
+
"api/v0/agents/athena-assistant/batch",
|
233
|
+
method="POST",
|
234
|
+
json=request,
|
235
|
+
request_options=request_options,
|
236
|
+
omit=OMIT,
|
237
|
+
)
|
238
|
+
if 200 <= _response.status_code < 300:
|
239
|
+
return pydantic_v1.parse_obj_as(typing.List[AthenaAssistantReponse], _response.json()) # type: ignore
|
240
|
+
if _response.status_code == 422:
|
241
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
242
|
+
try:
|
243
|
+
_response_json = _response.json()
|
244
|
+
except JSONDecodeError:
|
245
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
246
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
247
|
+
|
248
|
+
async def invoke(
|
249
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
250
|
+
) -> AthenaAssistantReponse:
|
251
|
+
"""
|
252
|
+
Call the Athena Assistant agent synchronously.
|
253
|
+
|
254
|
+
Call the agent with the messages list, wait for the agent to complete,
|
255
|
+
and return the result.
|
256
|
+
|
257
|
+
Parameters
|
258
|
+
----------
|
259
|
+
request : AthenaAssistantRequest
|
260
|
+
|
261
|
+
request_options : typing.Optional[RequestOptions]
|
262
|
+
Request-specific configuration.
|
263
|
+
|
264
|
+
Returns
|
265
|
+
-------
|
266
|
+
AthenaAssistantReponse
|
267
|
+
Successful Response
|
268
|
+
|
269
|
+
Examples
|
270
|
+
--------
|
271
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
272
|
+
from athena.client import AsyncAthena
|
273
|
+
|
274
|
+
client = AsyncAthena(
|
275
|
+
api_key="YOUR_API_KEY",
|
276
|
+
)
|
277
|
+
await client.agents.athena_assistant.invoke(
|
278
|
+
request=AthenaAssistantRequest(
|
279
|
+
config=AthenaAssistantConfig(
|
280
|
+
enabled_tools=[Tool.SEARCH],
|
281
|
+
),
|
282
|
+
messages=[],
|
283
|
+
),
|
284
|
+
)
|
285
|
+
"""
|
286
|
+
_response = await self._client_wrapper.httpx_client.request(
|
287
|
+
"api/v0/agents/athena-assistant/invoke",
|
288
|
+
method="POST",
|
289
|
+
json=request,
|
290
|
+
request_options=request_options,
|
291
|
+
omit=OMIT,
|
292
|
+
)
|
293
|
+
if 200 <= _response.status_code < 300:
|
294
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
295
|
+
if _response.status_code == 422:
|
296
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
297
|
+
try:
|
298
|
+
_response_json = _response.json()
|
299
|
+
except JSONDecodeError:
|
300
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
301
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
302
|
+
|
303
|
+
async def stream_events(
|
304
|
+
self, *, request: AthenaAssistantRequest, request_options: typing.Optional[RequestOptions] = None
|
305
|
+
) -> AthenaAssistantReponse:
|
306
|
+
"""
|
307
|
+
Call the Athena assistant and stream events.
|
308
|
+
|
309
|
+
Parameters
|
310
|
+
----------
|
311
|
+
request : AthenaAssistantRequest
|
312
|
+
|
313
|
+
request_options : typing.Optional[RequestOptions]
|
314
|
+
Request-specific configuration.
|
315
|
+
|
316
|
+
Returns
|
317
|
+
-------
|
318
|
+
AthenaAssistantReponse
|
319
|
+
Successful Response
|
320
|
+
|
321
|
+
Examples
|
322
|
+
--------
|
323
|
+
from athena import AthenaAssistantConfig, AthenaAssistantRequest, Tool
|
324
|
+
from athena.client import AsyncAthena
|
325
|
+
|
326
|
+
client = AsyncAthena(
|
327
|
+
api_key="YOUR_API_KEY",
|
328
|
+
)
|
329
|
+
await client.agents.athena_assistant.stream_events(
|
330
|
+
request=AthenaAssistantRequest(
|
331
|
+
config=AthenaAssistantConfig(
|
332
|
+
enabled_tools=[Tool.SEARCH],
|
333
|
+
),
|
334
|
+
messages=[],
|
335
|
+
),
|
336
|
+
)
|
337
|
+
"""
|
338
|
+
_response = await self._client_wrapper.httpx_client.request(
|
339
|
+
"api/v0/agents/athena-assistant/stream_events",
|
340
|
+
method="POST",
|
341
|
+
json=request,
|
342
|
+
request_options=request_options,
|
343
|
+
omit=OMIT,
|
344
|
+
)
|
345
|
+
if 200 <= _response.status_code < 300:
|
346
|
+
return pydantic_v1.parse_obj_as(AthenaAssistantReponse, _response.json()) # type: ignore
|
347
|
+
if _response.status_code == 422:
|
348
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
349
|
+
try:
|
350
|
+
_response_json = _response.json()
|
351
|
+
except JSONDecodeError:
|
352
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
353
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
4
|
+
from .athena_assistant.client import AsyncAthenaAssistantClient, AthenaAssistantClient
|
5
|
+
from .structured_data_extractor.client import AsyncStructuredDataExtractorClient, StructuredDataExtractorClient
|
6
|
+
|
7
|
+
|
8
|
+
class AgentsClient:
|
9
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
10
|
+
self._client_wrapper = client_wrapper
|
11
|
+
self.athena_assistant = AthenaAssistantClient(client_wrapper=self._client_wrapper)
|
12
|
+
self.structured_data_extractor = StructuredDataExtractorClient(client_wrapper=self._client_wrapper)
|
13
|
+
|
14
|
+
|
15
|
+
class AsyncAgentsClient:
|
16
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
17
|
+
self._client_wrapper = client_wrapper
|
18
|
+
self.athena_assistant = AsyncAthenaAssistantClient(client_wrapper=self._client_wrapper)
|
19
|
+
self.structured_data_extractor = AsyncStructuredDataExtractorClient(client_wrapper=self._client_wrapper)
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
from json.decoder import JSONDecodeError
|
5
|
+
|
6
|
+
from ...core.api_error import ApiError
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
|
+
from ...core.pydantic_utilities import pydantic_v1
|
9
|
+
from ...core.request_options import RequestOptions
|
10
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
11
|
+
from ...types.structured_data_extractor_reponse import StructuredDataExtractorReponse
|
12
|
+
|
13
|
+
# this is used as the default value for optional parameters
|
14
|
+
OMIT = typing.cast(typing.Any, ...)
|
15
|
+
|
16
|
+
|
17
|
+
class StructuredDataExtractorClient:
|
18
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
19
|
+
self._client_wrapper = client_wrapper
|
20
|
+
|
21
|
+
def invoke(
|
22
|
+
self,
|
23
|
+
*,
|
24
|
+
asset_ids: typing.Sequence[str],
|
25
|
+
json_schema: typing.Dict[str, typing.Any],
|
26
|
+
map_: typing.Optional[bool] = OMIT,
|
27
|
+
reduce: typing.Optional[bool] = OMIT,
|
28
|
+
request_options: typing.Optional[RequestOptions] = None
|
29
|
+
) -> StructuredDataExtractorReponse:
|
30
|
+
"""
|
31
|
+
Coming soon! Extract structured data from assets of arbitrary length.
|
32
|
+
|
33
|
+
Parameters
|
34
|
+
----------
|
35
|
+
asset_ids : typing.Sequence[str]
|
36
|
+
The IDs of the assets from which to extract structured data matching `json_schema`.
|
37
|
+
|
38
|
+
json_schema : typing.Dict[str, typing.Any]
|
39
|
+
The JSON schema to use for validation.
|
40
|
+
|
41
|
+
map_ : typing.Optional[bool]
|
42
|
+
Whether to split the asset into chunks and attempt to extract the schema from each chunk. Set to false if you know the asset is small.
|
43
|
+
|
44
|
+
reduce : typing.Optional[bool]
|
45
|
+
If `map`, whether to reduce the chunks to a single structured object (true) or return the full list (false). Use True unless you want to preserve duplicates from each page or expect the object to overflow the output context.
|
46
|
+
|
47
|
+
request_options : typing.Optional[RequestOptions]
|
48
|
+
Request-specific configuration.
|
49
|
+
|
50
|
+
Returns
|
51
|
+
-------
|
52
|
+
StructuredDataExtractorReponse
|
53
|
+
Successful Response
|
54
|
+
|
55
|
+
Examples
|
56
|
+
--------
|
57
|
+
from athena.client import Athena
|
58
|
+
|
59
|
+
client = Athena(
|
60
|
+
api_key="YOUR_API_KEY",
|
61
|
+
)
|
62
|
+
client.agents.structured_data_extractor.invoke(
|
63
|
+
asset_ids=["asset_ids"],
|
64
|
+
json_schema={"key": "value"},
|
65
|
+
)
|
66
|
+
"""
|
67
|
+
_response = self._client_wrapper.httpx_client.request(
|
68
|
+
"api/v0/agents/structured-data-extractor/invoke",
|
69
|
+
method="POST",
|
70
|
+
json={"asset_ids": asset_ids, "json_schema": json_schema, "map": map_, "reduce": reduce},
|
71
|
+
request_options=request_options,
|
72
|
+
omit=OMIT,
|
73
|
+
)
|
74
|
+
if 200 <= _response.status_code < 300:
|
75
|
+
return pydantic_v1.parse_obj_as(StructuredDataExtractorReponse, _response.json()) # type: ignore
|
76
|
+
if _response.status_code == 422:
|
77
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
78
|
+
try:
|
79
|
+
_response_json = _response.json()
|
80
|
+
except JSONDecodeError:
|
81
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
82
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
83
|
+
|
84
|
+
|
85
|
+
class AsyncStructuredDataExtractorClient:
|
86
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
87
|
+
self._client_wrapper = client_wrapper
|
88
|
+
|
89
|
+
async def invoke(
|
90
|
+
self,
|
91
|
+
*,
|
92
|
+
asset_ids: typing.Sequence[str],
|
93
|
+
json_schema: typing.Dict[str, typing.Any],
|
94
|
+
map_: typing.Optional[bool] = OMIT,
|
95
|
+
reduce: typing.Optional[bool] = OMIT,
|
96
|
+
request_options: typing.Optional[RequestOptions] = None
|
97
|
+
) -> StructuredDataExtractorReponse:
|
98
|
+
"""
|
99
|
+
Coming soon! Extract structured data from assets of arbitrary length.
|
100
|
+
|
101
|
+
Parameters
|
102
|
+
----------
|
103
|
+
asset_ids : typing.Sequence[str]
|
104
|
+
The IDs of the assets from which to extract structured data matching `json_schema`.
|
105
|
+
|
106
|
+
json_schema : typing.Dict[str, typing.Any]
|
107
|
+
The JSON schema to use for validation.
|
108
|
+
|
109
|
+
map_ : typing.Optional[bool]
|
110
|
+
Whether to split the asset into chunks and attempt to extract the schema from each chunk. Set to false if you know the asset is small.
|
111
|
+
|
112
|
+
reduce : typing.Optional[bool]
|
113
|
+
If `map`, whether to reduce the chunks to a single structured object (true) or return the full list (false). Use True unless you want to preserve duplicates from each page or expect the object to overflow the output context.
|
114
|
+
|
115
|
+
request_options : typing.Optional[RequestOptions]
|
116
|
+
Request-specific configuration.
|
117
|
+
|
118
|
+
Returns
|
119
|
+
-------
|
120
|
+
StructuredDataExtractorReponse
|
121
|
+
Successful Response
|
122
|
+
|
123
|
+
Examples
|
124
|
+
--------
|
125
|
+
from athena.client import AsyncAthena
|
126
|
+
|
127
|
+
client = AsyncAthena(
|
128
|
+
api_key="YOUR_API_KEY",
|
129
|
+
)
|
130
|
+
await client.agents.structured_data_extractor.invoke(
|
131
|
+
asset_ids=["asset_ids"],
|
132
|
+
json_schema={"key": "value"},
|
133
|
+
)
|
134
|
+
"""
|
135
|
+
_response = await self._client_wrapper.httpx_client.request(
|
136
|
+
"api/v0/agents/structured-data-extractor/invoke",
|
137
|
+
method="POST",
|
138
|
+
json={"asset_ids": asset_ids, "json_schema": json_schema, "map": map_, "reduce": reduce},
|
139
|
+
request_options=request_options,
|
140
|
+
omit=OMIT,
|
141
|
+
)
|
142
|
+
if 200 <= _response.status_code < 300:
|
143
|
+
return pydantic_v1.parse_obj_as(StructuredDataExtractorReponse, _response.json()) # type: ignore
|
144
|
+
if _response.status_code == 422:
|
145
|
+
raise UnprocessableEntityError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore
|
146
|
+
try:
|
147
|
+
_response_json = _response.json()
|
148
|
+
except JSONDecodeError:
|
149
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
150
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
@@ -4,6 +4,7 @@ import typing
|
|
4
4
|
|
5
5
|
import httpx
|
6
6
|
|
7
|
+
from .agents.client import AgentsClient, AsyncAgentsClient
|
7
8
|
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
8
9
|
from .environment import AthenaEnvironment
|
9
10
|
from .query.client import AsyncQueryClient, QueryClient
|
@@ -68,6 +69,7 @@ class BaseAthena:
|
|
68
69
|
else httpx.Client(timeout=_defaulted_timeout),
|
69
70
|
timeout=_defaulted_timeout,
|
70
71
|
)
|
72
|
+
self.agents = AgentsClient(client_wrapper=self._client_wrapper)
|
71
73
|
self.query = QueryClient(client_wrapper=self._client_wrapper)
|
72
74
|
self.tools = ToolsClient(client_wrapper=self._client_wrapper)
|
73
75
|
|
@@ -130,6 +132,7 @@ class AsyncBaseAthena:
|
|
130
132
|
else httpx.AsyncClient(timeout=_defaulted_timeout),
|
131
133
|
timeout=_defaulted_timeout,
|
132
134
|
)
|
135
|
+
self.agents = AsyncAgentsClient(client_wrapper=self._client_wrapper)
|
133
136
|
self.query = AsyncQueryClient(client_wrapper=self._client_wrapper)
|
134
137
|
self.tools = AsyncToolsClient(client_wrapper=self._client_wrapper)
|
135
138
|
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/client_wrapper.py
RENAMED
@@ -17,7 +17,7 @@ class BaseClientWrapper:
|
|
17
17
|
headers: typing.Dict[str, str] = {
|
18
18
|
"X-Fern-Language": "Python",
|
19
19
|
"X-Fern-SDK-Name": "athena-intelligence",
|
20
|
-
"X-Fern-SDK-Version": "0.1.
|
20
|
+
"X-Fern-SDK-Version": "0.1.119",
|
21
21
|
}
|
22
22
|
headers["X-API-KEY"] = self.api_key
|
23
23
|
return headers
|
@@ -32,7 +32,7 @@ class ToolsClient:
|
|
32
32
|
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
33
33
|
self._client_wrapper = client_wrapper
|
34
34
|
|
35
|
-
def
|
35
|
+
def get_asset_chunks(
|
36
36
|
self, *, asset_ids: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
|
37
37
|
) -> FileChunkRequestOut:
|
38
38
|
"""
|
@@ -58,7 +58,7 @@ class ToolsClient:
|
|
58
58
|
client = Athena(
|
59
59
|
api_key="YOUR_API_KEY",
|
60
60
|
)
|
61
|
-
client.tools.
|
61
|
+
client.tools.get_asset_chunks(
|
62
62
|
asset_ids=[
|
63
63
|
"asset_9249292-d118-42d3-96b4-00eccfe0754f",
|
64
64
|
"asset_9249292-d118-42d3-95b4-01eccfe0754f",
|
@@ -66,7 +66,7 @@ class ToolsClient:
|
|
66
66
|
)
|
67
67
|
"""
|
68
68
|
_response = self._client_wrapper.httpx_client.request(
|
69
|
-
"api/v0/tools/
|
69
|
+
"api/v0/tools/asset/chunks",
|
70
70
|
method="POST",
|
71
71
|
json={"asset_ids": asset_ids},
|
72
72
|
request_options=request_options,
|
@@ -95,7 +95,7 @@ class ToolsClient:
|
|
95
95
|
columns: typing.Optional[
|
96
96
|
typing.Union[ToolsDataFrameRequestColumnsItem, typing.Sequence[ToolsDataFrameRequestColumnsItem]]
|
97
97
|
] = None,
|
98
|
-
sheet_name: typing.Optional[
|
98
|
+
sheet_name: typing.Optional[int] = None,
|
99
99
|
separator: typing.Optional[str] = None,
|
100
100
|
request_options: typing.Optional[RequestOptions] = None
|
101
101
|
) -> DataFrameRequestOut:
|
@@ -111,7 +111,7 @@ class ToolsClient:
|
|
111
111
|
columns : typing.Optional[typing.Union[ToolsDataFrameRequestColumnsItem, typing.Sequence[ToolsDataFrameRequestColumnsItem]]]
|
112
112
|
should be a list of strings or a list of integers
|
113
113
|
|
114
|
-
sheet_name : typing.Optional[
|
114
|
+
sheet_name : typing.Optional[int]
|
115
115
|
only for excel files
|
116
116
|
|
117
117
|
separator : typing.Optional[str]
|
@@ -281,7 +281,7 @@ class AsyncToolsClient:
|
|
281
281
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
282
282
|
self._client_wrapper = client_wrapper
|
283
283
|
|
284
|
-
async def
|
284
|
+
async def get_asset_chunks(
|
285
285
|
self, *, asset_ids: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
|
286
286
|
) -> FileChunkRequestOut:
|
287
287
|
"""
|
@@ -307,7 +307,7 @@ class AsyncToolsClient:
|
|
307
307
|
client = AsyncAthena(
|
308
308
|
api_key="YOUR_API_KEY",
|
309
309
|
)
|
310
|
-
await client.tools.
|
310
|
+
await client.tools.get_asset_chunks(
|
311
311
|
asset_ids=[
|
312
312
|
"asset_9249292-d118-42d3-96b4-00eccfe0754f",
|
313
313
|
"asset_9249292-d118-42d3-95b4-01eccfe0754f",
|
@@ -315,7 +315,7 @@ class AsyncToolsClient:
|
|
315
315
|
)
|
316
316
|
"""
|
317
317
|
_response = await self._client_wrapper.httpx_client.request(
|
318
|
-
"api/v0/tools/
|
318
|
+
"api/v0/tools/asset/chunks",
|
319
319
|
method="POST",
|
320
320
|
json={"asset_ids": asset_ids},
|
321
321
|
request_options=request_options,
|
@@ -344,7 +344,7 @@ class AsyncToolsClient:
|
|
344
344
|
columns: typing.Optional[
|
345
345
|
typing.Union[ToolsDataFrameRequestColumnsItem, typing.Sequence[ToolsDataFrameRequestColumnsItem]]
|
346
346
|
] = None,
|
347
|
-
sheet_name: typing.Optional[
|
347
|
+
sheet_name: typing.Optional[int] = None,
|
348
348
|
separator: typing.Optional[str] = None,
|
349
349
|
request_options: typing.Optional[RequestOptions] = None
|
350
350
|
) -> DataFrameRequestOut:
|
@@ -360,7 +360,7 @@ class AsyncToolsClient:
|
|
360
360
|
columns : typing.Optional[typing.Union[ToolsDataFrameRequestColumnsItem, typing.Sequence[ToolsDataFrameRequestColumnsItem]]]
|
361
361
|
should be a list of strings or a list of integers
|
362
362
|
|
363
|
-
sheet_name : typing.Optional[
|
363
|
+
sheet_name : typing.Optional[int]
|
364
364
|
only for excel files
|
365
365
|
|
366
366
|
separator : typing.Optional[str]
|
@@ -1,6 +1,10 @@
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
2
2
|
|
3
3
|
from .asset_not_found_error import AssetNotFoundError
|
4
|
+
from .athena_assistant_config import AthenaAssistantConfig
|
5
|
+
from .athena_assistant_config_enabled_tools_item import AthenaAssistantConfigEnabledToolsItem
|
6
|
+
from .athena_assistant_reponse import AthenaAssistantReponse
|
7
|
+
from .athena_assistant_request import AthenaAssistantRequest
|
4
8
|
from .data_frame_request_out import DataFrameRequestOut
|
5
9
|
from .data_frame_request_out_columns_item import DataFrameRequestOutColumnsItem
|
6
10
|
from .data_frame_request_out_data_item_item import DataFrameRequestOutDataItemItem
|
@@ -11,9 +15,15 @@ from .file_chunk_request_out import FileChunkRequestOut
|
|
11
15
|
from .file_too_large_error import FileTooLargeError
|
12
16
|
from .parent_folder_error import ParentFolderError
|
13
17
|
from .save_asset_request_out import SaveAssetRequestOut
|
18
|
+
from .structured_data_extractor_reponse import StructuredDataExtractorReponse
|
19
|
+
from .tool import Tool
|
14
20
|
|
15
21
|
__all__ = [
|
16
22
|
"AssetNotFoundError",
|
23
|
+
"AthenaAssistantConfig",
|
24
|
+
"AthenaAssistantConfigEnabledToolsItem",
|
25
|
+
"AthenaAssistantReponse",
|
26
|
+
"AthenaAssistantRequest",
|
17
27
|
"DataFrameRequestOut",
|
18
28
|
"DataFrameRequestOutColumnsItem",
|
19
29
|
"DataFrameRequestOutDataItemItem",
|
@@ -24,4 +34,6 @@ __all__ = [
|
|
24
34
|
"FileTooLargeError",
|
25
35
|
"ParentFolderError",
|
26
36
|
"SaveAssetRequestOut",
|
37
|
+
"StructuredDataExtractorReponse",
|
38
|
+
"Tool",
|
27
39
|
]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
from .athena_assistant_config_enabled_tools_item import AthenaAssistantConfigEnabledToolsItem
|
9
|
+
|
10
|
+
|
11
|
+
class AthenaAssistantConfig(pydantic_v1.BaseModel):
|
12
|
+
"""
|
13
|
+
Configurable fields for the general agent.
|
14
|
+
"""
|
15
|
+
|
16
|
+
enabled_tools: typing.Optional[typing.List[AthenaAssistantConfigEnabledToolsItem]] = None
|
17
|
+
knowledge_base_asset_ids: typing.Optional[typing.List[str]] = None
|
18
|
+
system_prompt: typing.Optional[str] = None
|
19
|
+
|
20
|
+
def json(self, **kwargs: typing.Any) -> str:
|
21
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
22
|
+
return super().json(**kwargs_with_defaults)
|
23
|
+
|
24
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
25
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
26
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
27
|
+
|
28
|
+
return deep_union_pydantic_dicts(
|
29
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
30
|
+
)
|
31
|
+
|
32
|
+
class Config:
|
33
|
+
frozen = True
|
34
|
+
smart_union = True
|
35
|
+
extra = pydantic_v1.Extra.allow
|
36
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
|
9
|
+
|
10
|
+
class AthenaAssistantReponse(pydantic_v1.BaseModel):
|
11
|
+
"""
|
12
|
+
The response from the assistant.
|
13
|
+
"""
|
14
|
+
|
15
|
+
messages: typing.List[typing.Dict[str, typing.Any]]
|
16
|
+
|
17
|
+
def json(self, **kwargs: typing.Any) -> str:
|
18
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
19
|
+
return super().json(**kwargs_with_defaults)
|
20
|
+
|
21
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
22
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
23
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
24
|
+
|
25
|
+
return deep_union_pydantic_dicts(
|
26
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
27
|
+
)
|
28
|
+
|
29
|
+
class Config:
|
30
|
+
frozen = True
|
31
|
+
smart_union = True
|
32
|
+
extra = pydantic_v1.Extra.allow
|
33
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
from .athena_assistant_config import AthenaAssistantConfig
|
9
|
+
|
10
|
+
|
11
|
+
class AthenaAssistantRequest(pydantic_v1.BaseModel):
|
12
|
+
"""
|
13
|
+
A chat request for the Athena SDK.
|
14
|
+
"""
|
15
|
+
|
16
|
+
config: AthenaAssistantConfig
|
17
|
+
messages: typing.List[typing.Any] = pydantic_v1.Field()
|
18
|
+
"""
|
19
|
+
The messages to send to the assistant. Each message should be a string (for text inputs) or a list of multimodal content parts.
|
20
|
+
"""
|
21
|
+
|
22
|
+
def json(self, **kwargs: typing.Any) -> str:
|
23
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
24
|
+
return super().json(**kwargs_with_defaults)
|
25
|
+
|
26
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
27
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
28
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
29
|
+
|
30
|
+
return deep_union_pydantic_dicts(
|
31
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
32
|
+
)
|
33
|
+
|
34
|
+
class Config:
|
35
|
+
frozen = True
|
36
|
+
smart_union = True
|
37
|
+
extra = pydantic_v1.Extra.allow
|
38
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import typing
|
5
|
+
|
6
|
+
from ..core.datetime_utils import serialize_datetime
|
7
|
+
from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
8
|
+
|
9
|
+
|
10
|
+
class StructuredDataExtractorReponse(pydantic_v1.BaseModel):
|
11
|
+
"""
|
12
|
+
The agent's response.
|
13
|
+
"""
|
14
|
+
|
15
|
+
data: typing.Dict[str, typing.Any] = pydantic_v1.Field()
|
16
|
+
"""
|
17
|
+
The extracted structured data. Guaranteed to match `json_schema`.
|
18
|
+
"""
|
19
|
+
|
20
|
+
def json(self, **kwargs: typing.Any) -> str:
|
21
|
+
kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
22
|
+
return super().json(**kwargs_with_defaults)
|
23
|
+
|
24
|
+
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
25
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
26
|
+
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
27
|
+
|
28
|
+
return deep_union_pydantic_dicts(
|
29
|
+
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
30
|
+
)
|
31
|
+
|
32
|
+
class Config:
|
33
|
+
frozen = True
|
34
|
+
smart_union = True
|
35
|
+
extra = pydantic_v1.Extra.allow
|
36
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import enum
|
4
|
+
import typing
|
5
|
+
|
6
|
+
T_Result = typing.TypeVar("T_Result")
|
7
|
+
|
8
|
+
|
9
|
+
class Tool(str, enum.Enum):
|
10
|
+
SEARCH = "search"
|
11
|
+
BROWSE = "browse"
|
12
|
+
|
13
|
+
def visit(self, search: typing.Callable[[], T_Result], browse: typing.Callable[[], T_Result]) -> T_Result:
|
14
|
+
if self is Tool.SEARCH:
|
15
|
+
return search()
|
16
|
+
if self is Tool.BROWSE:
|
17
|
+
return browse()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/datetime_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/jsonable_encoder.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/pydantic_utilities.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/query_encoder.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/remove_none_from_dict.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/core/request_options.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/bad_request_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/not_found_error.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/errors/unauthorized_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/query/types/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/tools/types/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/document_chunk.py
RENAMED
File without changes
|
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/file_too_large_error.py
RENAMED
File without changes
|
{athena_intelligence-0.1.117 → athena_intelligence-0.1.119}/src/athena/types/parent_folder_error.py
RENAMED
File without changes
|
File without changes
|
File without changes
|