agent-lab-sdk 0.1.39__py3-none-any.whl → 0.1.40__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 agent-lab-sdk might be problematic. Click here for more details.

@@ -1,3 +1,4 @@
1
1
  from .storage import store_file_in_sd_asset
2
+ from .storage_v2 import upload_file, FileUploadResponse
2
3
 
3
- __all__ = ["store_file_in_sd_asset"]
4
+ __all__ = ["store_file_in_sd_asset", "upload_file", "FileUploadResponse"]
@@ -0,0 +1,66 @@
1
+ import os
2
+ from typing import Optional
3
+ import requests
4
+ from pydantic import BaseModel
5
+
6
+
7
+ class FileUploadResponse(BaseModel):
8
+ """Ответ от сервиса загрузки файлов"""
9
+ id: Optional[str] = None
10
+ bucket: Optional[str] = None
11
+ key: Optional[str] = None
12
+ storage: Optional[str] = None
13
+ absolute_path: str
14
+
15
+
16
+ def upload_file(filename: str, file_bytes: bytes) -> Optional[FileUploadResponse]:
17
+ """
18
+ Загружает файл в бинарном формате через v2 API и возвращает информацию о загруженном файле.
19
+
20
+ Args:
21
+ filename: имя файла
22
+ file_bytes: содержимое файла в виде байтов
23
+
24
+ Returns:
25
+ FileUploadResponse с информацией о файле или None в случае ошибки
26
+ """
27
+
28
+ ai_agent = os.getenv("AGENT_SERVICE_NAME")
29
+ if not ai_agent:
30
+ raise ValueError("AGENT_SERVICE_NAME environment variable is required")
31
+
32
+ gateway_url = os.getenv("STORAGE_PROVIDER_AGW_URL", "http://localhost")
33
+ url = f"{gateway_url}/files/v2/upload"
34
+
35
+ headers = {
36
+ "x-agent-id": ai_agent,
37
+ "Content-Type": "application/octet-stream"
38
+ }
39
+
40
+ params = {
41
+ "name": filename
42
+ }
43
+
44
+ try:
45
+ response = requests.post(
46
+ url,
47
+ headers=headers,
48
+ params=params,
49
+ data=file_bytes
50
+ )
51
+ response.raise_for_status()
52
+
53
+ if response.status_code == 200:
54
+ data = response.json()
55
+ return FileUploadResponse(
56
+ id=data.get("id", ""),
57
+ bucket=data.get("bucket", ""),
58
+ key=data.get("key", ""),
59
+ storage=data.get("storage", ""),
60
+ absolute_path=data.get("absolutePath", "")
61
+ )
62
+
63
+ except requests.exceptions.RequestException as e:
64
+ print(f"Ошибка при загрузке файла через v2 API: {e}")
65
+
66
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lab-sdk
3
- Version: 0.1.39
3
+ Version: 0.1.40
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -220,7 +220,32 @@ from agent_lab_sdk.storage import store_file_in_sd_asset
220
220
  store_file_in_storage("my-agent-name-filename.png", file_b64, "giga-agents")
221
221
  ```
222
222
 
223
- ### 4.2 AGW Checkpointer
223
+ ### 4.2 V2 File Upload
224
+
225
+ Новый v2 API для загрузки файлов через Agent Gateway с поддержкой бинарных данных и автоматическим выбором сервиса хранения.
226
+
227
+ ```python
228
+ from agent_lab_sdk.storage import upload_file, FileUploadResponse
229
+
230
+ # Загрузка из байтов
231
+ with open("document.pdf", "rb") as f:
232
+ file_bytes = f.read()
233
+ result: FileUploadResponse = upload_file("document.pdf", file_bytes)
234
+
235
+ # Результат - Pydantic модель с информацией о файле
236
+ print(f"File ID: {result.id}")
237
+ print(f"Absolute Path: {result.absolute_path}")
238
+ print(f"Storage: {result.storage}")
239
+ ```
240
+
241
+ #### Переменные окружения для V2 Upload
242
+
243
+ | Переменная | Описание | Значение по умолчанию |
244
+ | -------------------------- | ---------------------------------- | --------------------- |
245
+ | `AGENT_SERVICE_NAME` | Имя сервиса агента (обязательно) | - |
246
+ | `STORAGE_PROVIDER_AGW_URL` | URL Agent Gateway | `http://localhost` |
247
+
248
+ ### 4.3 AGW Checkpointer
224
249
 
225
250
  AGW поддерживает langgraph checkpoint API и в SDK представлен `AsyncAGWCheckpointSaver`, который позволяет сохранять состояние графа в AGW напрямую.
226
251
 
@@ -12,10 +12,11 @@ agent_lab_sdk/metrics/metrics.py,sha256=_XTT9vMG7T0u_D2pL371wm8GoBU5fodJ45D2RACn
12
12
  agent_lab_sdk/schema/__init__.py,sha256=bHSyXQYkcB9fWBlziWodXR_IzC5nKrdKzrCpyVWNY9o,521
13
13
  agent_lab_sdk/schema/input_types.py,sha256=e75nRW7Dz_RHk5Yia8DkFfbqMafsLQsQrJPfzQhpIBw,9123
14
14
  agent_lab_sdk/schema/log_message.py,sha256=nadi6lZGRuDSPmfbYs9QPpRJUT9Pfy8Y7pGCvyFF5Mw,638
15
- agent_lab_sdk/storage/__init__.py,sha256=ik1_v1DMTwehvcAEXIYxuvLuCjJCa3y5qAuJqoQpuSA,81
15
+ agent_lab_sdk/storage/__init__.py,sha256=HAtUoqg3k0irqPMewayadVA9aXJOmYSxRr6a5J1scT0,174
16
16
  agent_lab_sdk/storage/storage.py,sha256=ELpt7GRwFD-aWa6ctinfA_QwcvzWLvKS0Wz8FlxVqAs,2075
17
- agent_lab_sdk-0.1.39.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
18
- agent_lab_sdk-0.1.39.dist-info/METADATA,sha256=UdFdawrHLbhJShQ_DcUfVJzVRp5pdrTlZiZDSUsq4xk,17911
19
- agent_lab_sdk-0.1.39.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- agent_lab_sdk-0.1.39.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
21
- agent_lab_sdk-0.1.39.dist-info/RECORD,,
17
+ agent_lab_sdk/storage/storage_v2.py,sha256=ONseynX59xzWK17dfzxZvnii2rpz3Oo2Zo9Ck-lcGnw,1997
18
+ agent_lab_sdk-0.1.40.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
19
+ agent_lab_sdk-0.1.40.dist-info/METADATA,sha256=CnbGjkYor6CXT0xxc4PBCd1n14yNLmGeyGYaw_IAYVQ,19099
20
+ agent_lab_sdk-0.1.40.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ agent_lab_sdk-0.1.40.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
22
+ agent_lab_sdk-0.1.40.dist-info/RECORD,,