letta-client 0.1.0__py3-none-any.whl → 0.1.2__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.
- letta/__init__.py +293 -0
- letta/agents/__init__.py +28 -0
- letta/agents/archival_memory/__init__.py +2 -0
- letta/agents/archival_memory/client.py +591 -0
- letta/agents/client.py +2166 -0
- letta/agents/context/__init__.py +2 -0
- letta/agents/context/client.py +145 -0
- letta/agents/memory/__init__.py +5 -0
- letta/agents/memory/client.py +149 -0
- letta/agents/memory/messages/__init__.py +2 -0
- letta/agents/memory/messages/client.py +147 -0
- letta/agents/memory_blocks/__init__.py +2 -0
- letta/agents/memory_blocks/client.py +364 -0
- letta/agents/messages/__init__.py +5 -0
- letta/agents/messages/client.py +787 -0
- letta/agents/messages/types/__init__.py +7 -0
- letta/agents/messages/types/letta_streaming_response.py +20 -0
- letta/agents/messages/types/messages_list_response.py +7 -0
- letta/agents/messages/types/messages_list_response_item.py +13 -0
- letta/agents/recall_memory/__init__.py +2 -0
- letta/agents/recall_memory/client.py +147 -0
- letta/agents/sources/__init__.py +2 -0
- letta/agents/sources/client.py +145 -0
- letta/agents/tools/__init__.py +2 -0
- letta/agents/tools/client.py +408 -0
- letta/agents/types/__init__.py +13 -0
- letta/agents/types/agents_create_version_response.py +22 -0
- letta/agents/types/agents_migrate_response.py +19 -0
- letta/agents/types/create_agent_request_tool_rules_item.py +9 -0
- letta/agents/types/update_agent_tool_rules_item.py +9 -0
- letta/blocks/__init__.py +2 -0
- letta/blocks/client.py +1054 -0
- letta/client.py +164 -0
- letta/core/__init__.py +47 -0
- letta/core/api_error.py +15 -0
- letta/core/client_wrapper.py +76 -0
- letta/core/datetime_utils.py +28 -0
- letta/core/file.py +67 -0
- letta/core/http_client.py +499 -0
- letta/core/jsonable_encoder.py +101 -0
- letta/core/pydantic_utilities.py +296 -0
- letta/core/query_encoder.py +58 -0
- letta/core/remove_none_from_dict.py +11 -0
- letta/core/request_options.py +35 -0
- letta/core/serialization.py +272 -0
- letta/environment.py +8 -0
- letta/errors/__init__.py +8 -0
- letta/errors/conflict_error.py +9 -0
- letta/errors/internal_server_error.py +9 -0
- letta/errors/not_found_error.py +9 -0
- letta/errors/unprocessable_entity_error.py +9 -0
- letta/health/__init__.py +2 -0
- letta/health/client.py +108 -0
- letta/jobs/__init__.py +2 -0
- letta/jobs/client.py +503 -0
- letta/models/__init__.py +2 -0
- letta/models/client.py +201 -0
- letta/sources/__init__.py +5 -0
- letta/sources/client.py +1154 -0
- letta/sources/files/__init__.py +2 -0
- letta/sources/files/client.py +436 -0
- letta/sources/passages/__init__.py +2 -0
- letta/sources/passages/client.py +145 -0
- letta/tools/__init__.py +2 -0
- letta/tools/client.py +1823 -0
- letta/types/__init__.py +263 -0
- letta/types/action_model.py +36 -0
- letta/types/action_parameters_model.py +26 -0
- letta/types/action_response_model.py +26 -0
- letta/types/agent_state.py +139 -0
- letta/types/agent_state_tool_rules_item.py +9 -0
- letta/types/agent_type.py +8 -0
- letta/types/app_auth_scheme.py +34 -0
- letta/types/app_auth_scheme_auth_mode.py +7 -0
- letta/types/app_model.py +44 -0
- letta/types/archival_memory_summary.py +22 -0
- letta/types/assistant_file.py +33 -0
- letta/types/assistant_message_input.py +23 -0
- letta/types/assistant_message_output.py +23 -0
- letta/types/auth_request.py +22 -0
- letta/types/auth_response.py +29 -0
- letta/types/auth_scheme_field.py +30 -0
- letta/types/block.py +91 -0
- letta/types/block_update.py +60 -0
- letta/types/chat_completion_request.py +49 -0
- letta/types/chat_completion_request_function_call.py +6 -0
- letta/types/chat_completion_request_messages_item.py +11 -0
- letta/types/chat_completion_request_stop.py +5 -0
- letta/types/chat_completion_request_tool_choice.py +8 -0
- letta/types/chat_completion_response.py +32 -0
- letta/types/child_tool_rule.py +33 -0
- letta/types/choice.py +25 -0
- letta/types/conditional_tool_rule.py +43 -0
- letta/types/conflict_error_body.py +21 -0
- letta/types/context_window_overview.py +105 -0
- letta/types/create_assistant_file_request.py +22 -0
- letta/types/create_assistant_request.py +57 -0
- letta/types/create_block.py +56 -0
- letta/types/delete_assistant_file_response.py +28 -0
- letta/types/delete_assistant_response.py +28 -0
- letta/types/e_2_b_sandbox_config.py +32 -0
- letta/types/embedding_config.py +72 -0
- letta/types/embedding_config_embedding_endpoint_type.py +26 -0
- letta/types/file_metadata.py +82 -0
- letta/types/function_call_input.py +19 -0
- letta/types/function_call_output.py +20 -0
- letta/types/function_schema.py +21 -0
- letta/types/health.py +24 -0
- letta/types/http_validation_error.py +20 -0
- letta/types/init_tool_rule.py +29 -0
- letta/types/internal_server_error_body.py +19 -0
- letta/types/job.py +79 -0
- letta/types/job_status.py +5 -0
- letta/types/letta_request.py +33 -0
- letta/types/letta_response.py +125 -0
- letta/types/letta_response_assistant_message.py +23 -0
- letta/types/letta_response_letta_usage_statistics.py +47 -0
- letta/types/letta_response_reasoning_message.py +32 -0
- letta/types/letta_response_system_message.py +32 -0
- letta/types/letta_response_tool_call.py +21 -0
- letta/types/letta_response_tool_call_delta.py +21 -0
- letta/types/letta_response_tool_call_message.py +33 -0
- letta/types/letta_response_tool_call_message_tool_call.py +9 -0
- letta/types/letta_response_tool_call_message_tool_call_one.py +21 -0
- letta/types/letta_response_tool_call_message_tool_call_zero.py +21 -0
- letta/types/letta_response_tool_return_message.py +41 -0
- letta/types/letta_response_tool_return_message_status.py +5 -0
- letta/types/letta_response_usage_message.py +40 -0
- letta/types/letta_response_usage_message_usage.py +47 -0
- letta/types/letta_response_user_message.py +32 -0
- letta/types/letta_schemas_letta_message_tool_call.py +21 -0
- letta/types/letta_schemas_message_message.py +103 -0
- letta/types/letta_schemas_openai_chat_completion_request_tool.py +21 -0
- letta/types/letta_schemas_openai_chat_completion_request_tool_call.py +24 -0
- letta/types/letta_schemas_openai_chat_completion_request_tool_call_function.py +20 -0
- letta/types/letta_schemas_openai_chat_completion_response_message.py +24 -0
- letta/types/letta_schemas_openai_chat_completion_response_tool_call.py +22 -0
- letta/types/letta_schemas_openai_chat_completions_tool_call_function.py +27 -0
- letta/types/letta_schemas_openai_chat_completions_tool_call_input.py +29 -0
- letta/types/letta_schemas_openai_chat_completions_tool_call_output.py +29 -0
- letta/types/letta_schemas_tool_tool.py +88 -0
- letta/types/letta_usage_statistics.py +47 -0
- letta/types/llm_config.py +60 -0
- letta/types/llm_config_model_endpoint_type.py +26 -0
- letta/types/local_sandbox_config.py +32 -0
- letta/types/log_prob_token.py +21 -0
- letta/types/memory.py +32 -0
- letta/types/message_content_log_prob.py +23 -0
- letta/types/message_create.py +37 -0
- letta/types/message_create_role.py +5 -0
- letta/types/message_role.py +5 -0
- letta/types/not_found_error_body.py +20 -0
- letta/types/not_found_error_body_message.py +11 -0
- letta/types/open_ai_assistant.py +67 -0
- letta/types/organization.py +33 -0
- letta/types/organization_create.py +22 -0
- letta/types/passage.py +107 -0
- letta/types/reasoning_message.py +32 -0
- letta/types/recall_memory_summary.py +22 -0
- letta/types/response_format.py +19 -0
- letta/types/sandbox_config.py +59 -0
- letta/types/sandbox_config_create.py +23 -0
- letta/types/sandbox_config_create_config.py +7 -0
- letta/types/sandbox_config_update.py +27 -0
- letta/types/sandbox_config_update_config.py +7 -0
- letta/types/sandbox_environment_variable.py +68 -0
- letta/types/sandbox_environment_variable_create.py +32 -0
- letta/types/sandbox_environment_variable_update.py +36 -0
- letta/types/sandbox_type.py +5 -0
- letta/types/source.py +85 -0
- letta/types/system_message_input.py +21 -0
- letta/types/system_message_output.py +32 -0
- letta/types/terminal_tool_rule.py +29 -0
- letta/types/tool_call_delta.py +21 -0
- letta/types/tool_call_function_output.py +27 -0
- letta/types/tool_call_message.py +33 -0
- letta/types/tool_call_message_tool_call.py +7 -0
- letta/types/tool_create.py +57 -0
- letta/types/tool_function_choice.py +21 -0
- letta/types/tool_input.py +21 -0
- letta/types/tool_message.py +21 -0
- letta/types/tool_return_message.py +41 -0
- letta/types/tool_return_message_status.py +5 -0
- letta/types/tool_rule_type.py +10 -0
- letta/types/usage_message.py +31 -0
- letta/types/usage_statistics.py +21 -0
- letta/types/user.py +57 -0
- letta/types/user_create.py +27 -0
- letta/types/user_message_input.py +22 -0
- letta/types/user_message_input_content.py +5 -0
- letta/types/user_message_output.py +32 -0
- letta/types/user_update.py +32 -0
- letta/types/validation_error.py +22 -0
- letta/types/validation_error_loc_item.py +5 -0
- letta/version.py +3 -0
- letta_client-0.1.2.dist-info/METADATA +189 -0
- letta_client-0.1.2.dist-info/RECORD +199 -0
- {letta_client-0.1.0.dist-info → letta_client-0.1.2.dist-info}/WHEEL +1 -1
- letta_client-0.1.0.dist-info/METADATA +0 -15
- letta_client-0.1.0.dist-info/RECORD +0 -4
- /letta_client/__init__.py → /letta/py.typed +0 -0
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from ...core.client_wrapper import SyncClientWrapper
|
|
5
|
+
from ...core.request_options import RequestOptions
|
|
6
|
+
from ...types.archival_memory_summary import ArchivalMemorySummary
|
|
7
|
+
from ...core.jsonable_encoder import jsonable_encoder
|
|
8
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
9
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
|
10
|
+
from ...types.http_validation_error import HttpValidationError
|
|
11
|
+
from json.decoder import JSONDecodeError
|
|
12
|
+
from ...core.api_error import ApiError
|
|
13
|
+
from ...types.passage import Passage
|
|
14
|
+
from ...core.client_wrapper import AsyncClientWrapper
|
|
15
|
+
|
|
16
|
+
# this is used as the default value for optional parameters
|
|
17
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ArchivalMemoryClient:
|
|
21
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
22
|
+
self._client_wrapper = client_wrapper
|
|
23
|
+
|
|
24
|
+
def get_summary(
|
|
25
|
+
self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
26
|
+
) -> ArchivalMemorySummary:
|
|
27
|
+
"""
|
|
28
|
+
Retrieve the summary of the archival memory of a specific agent.
|
|
29
|
+
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
agent_id : str
|
|
33
|
+
|
|
34
|
+
request_options : typing.Optional[RequestOptions]
|
|
35
|
+
Request-specific configuration.
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
-------
|
|
39
|
+
ArchivalMemorySummary
|
|
40
|
+
Successful Response
|
|
41
|
+
|
|
42
|
+
Examples
|
|
43
|
+
--------
|
|
44
|
+
from letta import Letta
|
|
45
|
+
|
|
46
|
+
client = Letta(
|
|
47
|
+
token="YOUR_TOKEN",
|
|
48
|
+
)
|
|
49
|
+
client.agents.archival_memory.get_summary(
|
|
50
|
+
agent_id="agent_id",
|
|
51
|
+
)
|
|
52
|
+
"""
|
|
53
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
54
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/memory/archival",
|
|
55
|
+
method="GET",
|
|
56
|
+
request_options=request_options,
|
|
57
|
+
)
|
|
58
|
+
try:
|
|
59
|
+
if 200 <= _response.status_code < 300:
|
|
60
|
+
return typing.cast(
|
|
61
|
+
ArchivalMemorySummary,
|
|
62
|
+
parse_obj_as(
|
|
63
|
+
type_=ArchivalMemorySummary, # type: ignore
|
|
64
|
+
object_=_response.json(),
|
|
65
|
+
),
|
|
66
|
+
)
|
|
67
|
+
if _response.status_code == 422:
|
|
68
|
+
raise UnprocessableEntityError(
|
|
69
|
+
typing.cast(
|
|
70
|
+
HttpValidationError,
|
|
71
|
+
parse_obj_as(
|
|
72
|
+
type_=HttpValidationError, # type: ignore
|
|
73
|
+
object_=_response.json(),
|
|
74
|
+
),
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
_response_json = _response.json()
|
|
78
|
+
except JSONDecodeError:
|
|
79
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
80
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
81
|
+
|
|
82
|
+
def list(
|
|
83
|
+
self,
|
|
84
|
+
agent_id: str,
|
|
85
|
+
*,
|
|
86
|
+
after: typing.Optional[int] = None,
|
|
87
|
+
before: typing.Optional[int] = None,
|
|
88
|
+
limit: typing.Optional[int] = None,
|
|
89
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
90
|
+
) -> typing.List[Passage]:
|
|
91
|
+
"""
|
|
92
|
+
Retrieve the memories in an agent's archival memory store (paginated query).
|
|
93
|
+
|
|
94
|
+
Parameters
|
|
95
|
+
----------
|
|
96
|
+
agent_id : str
|
|
97
|
+
|
|
98
|
+
after : typing.Optional[int]
|
|
99
|
+
Unique ID of the memory to start the query range at.
|
|
100
|
+
|
|
101
|
+
before : typing.Optional[int]
|
|
102
|
+
Unique ID of the memory to end the query range at.
|
|
103
|
+
|
|
104
|
+
limit : typing.Optional[int]
|
|
105
|
+
How many results to include in the response.
|
|
106
|
+
|
|
107
|
+
request_options : typing.Optional[RequestOptions]
|
|
108
|
+
Request-specific configuration.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
typing.List[Passage]
|
|
113
|
+
Successful Response
|
|
114
|
+
|
|
115
|
+
Examples
|
|
116
|
+
--------
|
|
117
|
+
from letta import Letta
|
|
118
|
+
|
|
119
|
+
client = Letta(
|
|
120
|
+
token="YOUR_TOKEN",
|
|
121
|
+
)
|
|
122
|
+
client.agents.archival_memory.list(
|
|
123
|
+
agent_id="agent_id",
|
|
124
|
+
)
|
|
125
|
+
"""
|
|
126
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
127
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival",
|
|
128
|
+
method="GET",
|
|
129
|
+
params={
|
|
130
|
+
"after": after,
|
|
131
|
+
"before": before,
|
|
132
|
+
"limit": limit,
|
|
133
|
+
},
|
|
134
|
+
request_options=request_options,
|
|
135
|
+
)
|
|
136
|
+
try:
|
|
137
|
+
if 200 <= _response.status_code < 300:
|
|
138
|
+
return typing.cast(
|
|
139
|
+
typing.List[Passage],
|
|
140
|
+
parse_obj_as(
|
|
141
|
+
type_=typing.List[Passage], # type: ignore
|
|
142
|
+
object_=_response.json(),
|
|
143
|
+
),
|
|
144
|
+
)
|
|
145
|
+
if _response.status_code == 422:
|
|
146
|
+
raise UnprocessableEntityError(
|
|
147
|
+
typing.cast(
|
|
148
|
+
HttpValidationError,
|
|
149
|
+
parse_obj_as(
|
|
150
|
+
type_=HttpValidationError, # type: ignore
|
|
151
|
+
object_=_response.json(),
|
|
152
|
+
),
|
|
153
|
+
)
|
|
154
|
+
)
|
|
155
|
+
_response_json = _response.json()
|
|
156
|
+
except JSONDecodeError:
|
|
157
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
158
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
159
|
+
|
|
160
|
+
def create(
|
|
161
|
+
self, agent_id: str, *, text: str, request_options: typing.Optional[RequestOptions] = None
|
|
162
|
+
) -> typing.List[Passage]:
|
|
163
|
+
"""
|
|
164
|
+
Insert a memory into an agent's archival memory store.
|
|
165
|
+
|
|
166
|
+
Parameters
|
|
167
|
+
----------
|
|
168
|
+
agent_id : str
|
|
169
|
+
|
|
170
|
+
text : str
|
|
171
|
+
Text to write to archival memory.
|
|
172
|
+
|
|
173
|
+
request_options : typing.Optional[RequestOptions]
|
|
174
|
+
Request-specific configuration.
|
|
175
|
+
|
|
176
|
+
Returns
|
|
177
|
+
-------
|
|
178
|
+
typing.List[Passage]
|
|
179
|
+
Successful Response
|
|
180
|
+
|
|
181
|
+
Examples
|
|
182
|
+
--------
|
|
183
|
+
from letta import Letta
|
|
184
|
+
|
|
185
|
+
client = Letta(
|
|
186
|
+
token="YOUR_TOKEN",
|
|
187
|
+
)
|
|
188
|
+
client.agents.archival_memory.create(
|
|
189
|
+
agent_id="agent_id",
|
|
190
|
+
text="text",
|
|
191
|
+
)
|
|
192
|
+
"""
|
|
193
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
194
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival",
|
|
195
|
+
method="POST",
|
|
196
|
+
json={
|
|
197
|
+
"text": text,
|
|
198
|
+
},
|
|
199
|
+
headers={
|
|
200
|
+
"content-type": "application/json",
|
|
201
|
+
},
|
|
202
|
+
request_options=request_options,
|
|
203
|
+
omit=OMIT,
|
|
204
|
+
)
|
|
205
|
+
try:
|
|
206
|
+
if 200 <= _response.status_code < 300:
|
|
207
|
+
return typing.cast(
|
|
208
|
+
typing.List[Passage],
|
|
209
|
+
parse_obj_as(
|
|
210
|
+
type_=typing.List[Passage], # type: ignore
|
|
211
|
+
object_=_response.json(),
|
|
212
|
+
),
|
|
213
|
+
)
|
|
214
|
+
if _response.status_code == 422:
|
|
215
|
+
raise UnprocessableEntityError(
|
|
216
|
+
typing.cast(
|
|
217
|
+
HttpValidationError,
|
|
218
|
+
parse_obj_as(
|
|
219
|
+
type_=HttpValidationError, # type: ignore
|
|
220
|
+
object_=_response.json(),
|
|
221
|
+
),
|
|
222
|
+
)
|
|
223
|
+
)
|
|
224
|
+
_response_json = _response.json()
|
|
225
|
+
except JSONDecodeError:
|
|
226
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
227
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
228
|
+
|
|
229
|
+
def delete(
|
|
230
|
+
self, agent_id: str, memory_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
231
|
+
) -> typing.Optional[typing.Any]:
|
|
232
|
+
"""
|
|
233
|
+
Delete a memory from an agent's archival memory store.
|
|
234
|
+
|
|
235
|
+
Parameters
|
|
236
|
+
----------
|
|
237
|
+
agent_id : str
|
|
238
|
+
|
|
239
|
+
memory_id : str
|
|
240
|
+
|
|
241
|
+
request_options : typing.Optional[RequestOptions]
|
|
242
|
+
Request-specific configuration.
|
|
243
|
+
|
|
244
|
+
Returns
|
|
245
|
+
-------
|
|
246
|
+
typing.Optional[typing.Any]
|
|
247
|
+
Successful Response
|
|
248
|
+
|
|
249
|
+
Examples
|
|
250
|
+
--------
|
|
251
|
+
from letta import Letta
|
|
252
|
+
|
|
253
|
+
client = Letta(
|
|
254
|
+
token="YOUR_TOKEN",
|
|
255
|
+
)
|
|
256
|
+
client.agents.archival_memory.delete(
|
|
257
|
+
agent_id="agent_id",
|
|
258
|
+
memory_id="memory_id",
|
|
259
|
+
)
|
|
260
|
+
"""
|
|
261
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
262
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival/{jsonable_encoder(memory_id)}",
|
|
263
|
+
method="DELETE",
|
|
264
|
+
request_options=request_options,
|
|
265
|
+
)
|
|
266
|
+
try:
|
|
267
|
+
if 200 <= _response.status_code < 300:
|
|
268
|
+
return typing.cast(
|
|
269
|
+
typing.Optional[typing.Any],
|
|
270
|
+
parse_obj_as(
|
|
271
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
272
|
+
object_=_response.json(),
|
|
273
|
+
),
|
|
274
|
+
)
|
|
275
|
+
if _response.status_code == 422:
|
|
276
|
+
raise UnprocessableEntityError(
|
|
277
|
+
typing.cast(
|
|
278
|
+
HttpValidationError,
|
|
279
|
+
parse_obj_as(
|
|
280
|
+
type_=HttpValidationError, # type: ignore
|
|
281
|
+
object_=_response.json(),
|
|
282
|
+
),
|
|
283
|
+
)
|
|
284
|
+
)
|
|
285
|
+
_response_json = _response.json()
|
|
286
|
+
except JSONDecodeError:
|
|
287
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
288
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
class AsyncArchivalMemoryClient:
|
|
292
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
293
|
+
self._client_wrapper = client_wrapper
|
|
294
|
+
|
|
295
|
+
async def get_summary(
|
|
296
|
+
self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
297
|
+
) -> ArchivalMemorySummary:
|
|
298
|
+
"""
|
|
299
|
+
Retrieve the summary of the archival memory of a specific agent.
|
|
300
|
+
|
|
301
|
+
Parameters
|
|
302
|
+
----------
|
|
303
|
+
agent_id : str
|
|
304
|
+
|
|
305
|
+
request_options : typing.Optional[RequestOptions]
|
|
306
|
+
Request-specific configuration.
|
|
307
|
+
|
|
308
|
+
Returns
|
|
309
|
+
-------
|
|
310
|
+
ArchivalMemorySummary
|
|
311
|
+
Successful Response
|
|
312
|
+
|
|
313
|
+
Examples
|
|
314
|
+
--------
|
|
315
|
+
import asyncio
|
|
316
|
+
|
|
317
|
+
from letta import AsyncLetta
|
|
318
|
+
|
|
319
|
+
client = AsyncLetta(
|
|
320
|
+
token="YOUR_TOKEN",
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
async def main() -> None:
|
|
325
|
+
await client.agents.archival_memory.get_summary(
|
|
326
|
+
agent_id="agent_id",
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
asyncio.run(main())
|
|
331
|
+
"""
|
|
332
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
333
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/memory/archival",
|
|
334
|
+
method="GET",
|
|
335
|
+
request_options=request_options,
|
|
336
|
+
)
|
|
337
|
+
try:
|
|
338
|
+
if 200 <= _response.status_code < 300:
|
|
339
|
+
return typing.cast(
|
|
340
|
+
ArchivalMemorySummary,
|
|
341
|
+
parse_obj_as(
|
|
342
|
+
type_=ArchivalMemorySummary, # type: ignore
|
|
343
|
+
object_=_response.json(),
|
|
344
|
+
),
|
|
345
|
+
)
|
|
346
|
+
if _response.status_code == 422:
|
|
347
|
+
raise UnprocessableEntityError(
|
|
348
|
+
typing.cast(
|
|
349
|
+
HttpValidationError,
|
|
350
|
+
parse_obj_as(
|
|
351
|
+
type_=HttpValidationError, # type: ignore
|
|
352
|
+
object_=_response.json(),
|
|
353
|
+
),
|
|
354
|
+
)
|
|
355
|
+
)
|
|
356
|
+
_response_json = _response.json()
|
|
357
|
+
except JSONDecodeError:
|
|
358
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
359
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
360
|
+
|
|
361
|
+
async def list(
|
|
362
|
+
self,
|
|
363
|
+
agent_id: str,
|
|
364
|
+
*,
|
|
365
|
+
after: typing.Optional[int] = None,
|
|
366
|
+
before: typing.Optional[int] = None,
|
|
367
|
+
limit: typing.Optional[int] = None,
|
|
368
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
369
|
+
) -> typing.List[Passage]:
|
|
370
|
+
"""
|
|
371
|
+
Retrieve the memories in an agent's archival memory store (paginated query).
|
|
372
|
+
|
|
373
|
+
Parameters
|
|
374
|
+
----------
|
|
375
|
+
agent_id : str
|
|
376
|
+
|
|
377
|
+
after : typing.Optional[int]
|
|
378
|
+
Unique ID of the memory to start the query range at.
|
|
379
|
+
|
|
380
|
+
before : typing.Optional[int]
|
|
381
|
+
Unique ID of the memory to end the query range at.
|
|
382
|
+
|
|
383
|
+
limit : typing.Optional[int]
|
|
384
|
+
How many results to include in the response.
|
|
385
|
+
|
|
386
|
+
request_options : typing.Optional[RequestOptions]
|
|
387
|
+
Request-specific configuration.
|
|
388
|
+
|
|
389
|
+
Returns
|
|
390
|
+
-------
|
|
391
|
+
typing.List[Passage]
|
|
392
|
+
Successful Response
|
|
393
|
+
|
|
394
|
+
Examples
|
|
395
|
+
--------
|
|
396
|
+
import asyncio
|
|
397
|
+
|
|
398
|
+
from letta import AsyncLetta
|
|
399
|
+
|
|
400
|
+
client = AsyncLetta(
|
|
401
|
+
token="YOUR_TOKEN",
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
async def main() -> None:
|
|
406
|
+
await client.agents.archival_memory.list(
|
|
407
|
+
agent_id="agent_id",
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
asyncio.run(main())
|
|
412
|
+
"""
|
|
413
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
414
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival",
|
|
415
|
+
method="GET",
|
|
416
|
+
params={
|
|
417
|
+
"after": after,
|
|
418
|
+
"before": before,
|
|
419
|
+
"limit": limit,
|
|
420
|
+
},
|
|
421
|
+
request_options=request_options,
|
|
422
|
+
)
|
|
423
|
+
try:
|
|
424
|
+
if 200 <= _response.status_code < 300:
|
|
425
|
+
return typing.cast(
|
|
426
|
+
typing.List[Passage],
|
|
427
|
+
parse_obj_as(
|
|
428
|
+
type_=typing.List[Passage], # type: ignore
|
|
429
|
+
object_=_response.json(),
|
|
430
|
+
),
|
|
431
|
+
)
|
|
432
|
+
if _response.status_code == 422:
|
|
433
|
+
raise UnprocessableEntityError(
|
|
434
|
+
typing.cast(
|
|
435
|
+
HttpValidationError,
|
|
436
|
+
parse_obj_as(
|
|
437
|
+
type_=HttpValidationError, # type: ignore
|
|
438
|
+
object_=_response.json(),
|
|
439
|
+
),
|
|
440
|
+
)
|
|
441
|
+
)
|
|
442
|
+
_response_json = _response.json()
|
|
443
|
+
except JSONDecodeError:
|
|
444
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
445
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
446
|
+
|
|
447
|
+
async def create(
|
|
448
|
+
self, agent_id: str, *, text: str, request_options: typing.Optional[RequestOptions] = None
|
|
449
|
+
) -> typing.List[Passage]:
|
|
450
|
+
"""
|
|
451
|
+
Insert a memory into an agent's archival memory store.
|
|
452
|
+
|
|
453
|
+
Parameters
|
|
454
|
+
----------
|
|
455
|
+
agent_id : str
|
|
456
|
+
|
|
457
|
+
text : str
|
|
458
|
+
Text to write to archival memory.
|
|
459
|
+
|
|
460
|
+
request_options : typing.Optional[RequestOptions]
|
|
461
|
+
Request-specific configuration.
|
|
462
|
+
|
|
463
|
+
Returns
|
|
464
|
+
-------
|
|
465
|
+
typing.List[Passage]
|
|
466
|
+
Successful Response
|
|
467
|
+
|
|
468
|
+
Examples
|
|
469
|
+
--------
|
|
470
|
+
import asyncio
|
|
471
|
+
|
|
472
|
+
from letta import AsyncLetta
|
|
473
|
+
|
|
474
|
+
client = AsyncLetta(
|
|
475
|
+
token="YOUR_TOKEN",
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
async def main() -> None:
|
|
480
|
+
await client.agents.archival_memory.create(
|
|
481
|
+
agent_id="agent_id",
|
|
482
|
+
text="text",
|
|
483
|
+
)
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
asyncio.run(main())
|
|
487
|
+
"""
|
|
488
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
489
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival",
|
|
490
|
+
method="POST",
|
|
491
|
+
json={
|
|
492
|
+
"text": text,
|
|
493
|
+
},
|
|
494
|
+
headers={
|
|
495
|
+
"content-type": "application/json",
|
|
496
|
+
},
|
|
497
|
+
request_options=request_options,
|
|
498
|
+
omit=OMIT,
|
|
499
|
+
)
|
|
500
|
+
try:
|
|
501
|
+
if 200 <= _response.status_code < 300:
|
|
502
|
+
return typing.cast(
|
|
503
|
+
typing.List[Passage],
|
|
504
|
+
parse_obj_as(
|
|
505
|
+
type_=typing.List[Passage], # type: ignore
|
|
506
|
+
object_=_response.json(),
|
|
507
|
+
),
|
|
508
|
+
)
|
|
509
|
+
if _response.status_code == 422:
|
|
510
|
+
raise UnprocessableEntityError(
|
|
511
|
+
typing.cast(
|
|
512
|
+
HttpValidationError,
|
|
513
|
+
parse_obj_as(
|
|
514
|
+
type_=HttpValidationError, # type: ignore
|
|
515
|
+
object_=_response.json(),
|
|
516
|
+
),
|
|
517
|
+
)
|
|
518
|
+
)
|
|
519
|
+
_response_json = _response.json()
|
|
520
|
+
except JSONDecodeError:
|
|
521
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
522
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
523
|
+
|
|
524
|
+
async def delete(
|
|
525
|
+
self, agent_id: str, memory_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
526
|
+
) -> typing.Optional[typing.Any]:
|
|
527
|
+
"""
|
|
528
|
+
Delete a memory from an agent's archival memory store.
|
|
529
|
+
|
|
530
|
+
Parameters
|
|
531
|
+
----------
|
|
532
|
+
agent_id : str
|
|
533
|
+
|
|
534
|
+
memory_id : str
|
|
535
|
+
|
|
536
|
+
request_options : typing.Optional[RequestOptions]
|
|
537
|
+
Request-specific configuration.
|
|
538
|
+
|
|
539
|
+
Returns
|
|
540
|
+
-------
|
|
541
|
+
typing.Optional[typing.Any]
|
|
542
|
+
Successful Response
|
|
543
|
+
|
|
544
|
+
Examples
|
|
545
|
+
--------
|
|
546
|
+
import asyncio
|
|
547
|
+
|
|
548
|
+
from letta import AsyncLetta
|
|
549
|
+
|
|
550
|
+
client = AsyncLetta(
|
|
551
|
+
token="YOUR_TOKEN",
|
|
552
|
+
)
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
async def main() -> None:
|
|
556
|
+
await client.agents.archival_memory.delete(
|
|
557
|
+
agent_id="agent_id",
|
|
558
|
+
memory_id="memory_id",
|
|
559
|
+
)
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
asyncio.run(main())
|
|
563
|
+
"""
|
|
564
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
565
|
+
f"v1/agents/{jsonable_encoder(agent_id)}/archival/{jsonable_encoder(memory_id)}",
|
|
566
|
+
method="DELETE",
|
|
567
|
+
request_options=request_options,
|
|
568
|
+
)
|
|
569
|
+
try:
|
|
570
|
+
if 200 <= _response.status_code < 300:
|
|
571
|
+
return typing.cast(
|
|
572
|
+
typing.Optional[typing.Any],
|
|
573
|
+
parse_obj_as(
|
|
574
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
575
|
+
object_=_response.json(),
|
|
576
|
+
),
|
|
577
|
+
)
|
|
578
|
+
if _response.status_code == 422:
|
|
579
|
+
raise UnprocessableEntityError(
|
|
580
|
+
typing.cast(
|
|
581
|
+
HttpValidationError,
|
|
582
|
+
parse_obj_as(
|
|
583
|
+
type_=HttpValidationError, # type: ignore
|
|
584
|
+
object_=_response.json(),
|
|
585
|
+
),
|
|
586
|
+
)
|
|
587
|
+
)
|
|
588
|
+
_response_json = _response.json()
|
|
589
|
+
except JSONDecodeError:
|
|
590
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
591
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|