agent-lab-sdk 0.1.14__py3-none-any.whl → 0.1.15__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.

@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-lab-sdk
3
+ Version: 0.1.15
4
+ Summary: SDK для работы с Agent Lab
5
+ Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
+ License: Proprietary and Confidential — All Rights Reserved
7
+ Keywords: agent,lab,sdk
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Topic :: Software Development :: Libraries
11
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: License :: Other/Proprietary License
17
+ Classifier: Operating System :: OS Independent
18
+ Requires-Python: <4.0,>=3.11
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: requests
22
+ Requires-Dist: langgraph~=0.4.1
23
+ Requires-Dist: langchain_gigachat
24
+ Requires-Dist: prometheus-client
25
+ Requires-Dist: langchain
26
+ Requires-Dist: httpx~=0.27.2
27
+ Requires-Dist: orjson>=3.9.7
28
+ Dynamic: license-file
29
+
30
+ # Agent Lab SDK
31
+
32
+ Набор утилит и обёрток для упрощённой работы с LLM, Agent Gateway и метриками в проектах Giga Labs.
33
+
34
+ ## Установка
35
+
36
+ ```bash
37
+ pip install agent_lab_sdk
38
+ ```
39
+
40
+ ## Содержание
41
+
42
+ 1. [Модуль `agent_lab_sdk.llm`](#1-модуль-agent_lab_sdkllm)
43
+ 2. [Модуль `agent_lab_sdk.llm.throttled`](#2-модуль-agent_lab_sdkllmthrottled)
44
+ 3. [Модуль `agent_lab_sdk.metrics`](#3-модуль-agent_lab_sdkmetrics)
45
+ 4. [Хранилище](#4-хранилище)
46
+ 5. [Схема](#5-схема)
47
+ 6. [Сборка и публикация](#6-сборка-и-публикация)
48
+
49
+ ---
50
+
51
+ ## 1. Модуль `agent_lab_sdk.llm`
52
+
53
+ ### 1.1. Получение модели
54
+
55
+ ```python
56
+ from agent_lab_sdk.llm import get_model
57
+
58
+ # Использует токен из окружения по умолчанию
59
+ model = get_model()
60
+
61
+ # Передача явных параметров
62
+ model = get_model(
63
+ access_token="YOUR_TOKEN",
64
+ timeout=60,
65
+ scope="GIGACHAT_API_CORP"
66
+ )
67
+ ```
68
+
69
+ > если не передавать access_token, токен будет выбран через GigaChatTokenManager
70
+
71
+ > планы на ближайшее будущее: get_model оборачивает внутри себя throttled классы.
72
+
73
+ ### 1.2. Менеджеры токенов
74
+
75
+ | Класс | Описание | Пример использования |
76
+ | ---------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------- |
77
+ | `AgwTokenManager` | Кеширование + получение токена через Agent Gateway | `token = AgwTokenManager.get_token("provider")` |
78
+ | `GigaChatTokenManager` | Кеширование + получение через GigaChat OAuth с использованием пользовательских секретов | `token = GigaChatTokenManager.get_token()` |
79
+
80
+ ### 1.3. Переменные окружения
81
+
82
+ | Переменная | Описание | Значение по умолчанию / Пример |
83
+ | ---------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
84
+ | `GIGACHAT_SCOPE` | Scope GigaChat API | `GIGACHAT_API_PERS` |
85
+ | `GLOBAL_GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
86
+ | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` | `true` |
87
+ | `GIGACHAT_CREDENTIALS` | Базовые креды для GigaChat (`b64(clientId:secretId)`) | `Y2xpZW50SWQ6c2VjcmV0SWQ=` |
88
+ | `GIGACHAT_TOKEN_PATH` | Путь к файлу кеша токена GigaChat | `/tmp/gigachat_token.json` |
89
+ | `GIGACHAT_TOKEN_FETCH_RETRIES` | Количество попыток получения токена (GigaChat) | `3` |
90
+ | `USE_GIGACHAT_ADVANCED` | Включает запрос токена GigaChat API в продвинутом режиме | `true` |
91
+ | `GIGACHAT_BASE_URL` | Базовый URL GigaChat для расширенного режима | `https://ngw.devices.sberbank.ru:9443/api/v2/oauth` |
92
+ | `TOKEN_PROVIDER_AGW_URL` | URL Agent Gateway для получения AGW-токена | `https://agent-gateway.apps.advosd.sberdevices.ru` |
93
+ | `TOKEN_PROVIDER_AGW_DEFAULT_MAX_RETRIES` | Макс. попыток запроса токена (AGW) | `3` |
94
+ | `TOKEN_PROVIDER_AGW_TIMEOUT_SEC` | Таймаут запроса к AGW (секунды) | `5` |
95
+
96
+ ---
97
+
98
+ <a name="throttled"></a>
99
+
100
+ ## 2. Модуль `agent_lab_sdk.llm.throttled`
101
+
102
+ Позволяет ограничивать число одновременных вызовов к GigaChat и сервису эмбеддингов, автоматически собирая соответствующие метрики.
103
+
104
+ ```python
105
+ from agent_lab_sdk.llm import GigaChatTokenManager
106
+ from agent_lab_sdk.llm.throttled import ThrottledGigaChat, ThrottledGigaChatEmbeddings
107
+
108
+ access_token = GigaChatTokenManager.get_token()
109
+
110
+ # Чат с учётом ограничений
111
+ chat = ThrottledGigaChat(access_token=access_token)
112
+ response = chat.invoke("Привет!")
113
+
114
+ # Эмбеддинги с учётом ограничений
115
+ emb = ThrottledGigaChatEmbeddings(access_token=access_token)
116
+ vectors = emb.embed_documents(["Text1", "Text2"])
117
+ ```
118
+
119
+ ### 2.1. Переменные окружения для ограничения
120
+
121
+ | Переменная | Описание | Значение по умолчанию |
122
+ | --------------------------------- | ------------------------------------------- | --------------------- |
123
+ | `MAX_CHAT_CONCURRENCY` | Максимум одновременных чат-запросов | `100000` |
124
+ | `MAX_EMBED_CONCURRENCY` | Максимум одновременных запросов эмбеддингов | `100000` |
125
+ | `EMBEDDINGS_MAX_BATCH_SIZE_PARTS` | Макс. размер батча частей для эмбеддингов | `90` |
126
+
127
+ ### 2.2. Метрики
128
+
129
+ Метрики доступны через `agent_lab_sdk.metrics.get_metric`:
130
+
131
+ | Метрика | Описание | Тип |
132
+ | ------------------------- | ---------------------------------------------- | --------- |
133
+ | `chat_slots_in_use` | Число занятых слотов для чата | Gauge |
134
+ | `chat_waiting_tasks` | Число задач, ожидающих освобождения слота чата | Gauge |
135
+ | `chat_wait_time_seconds` | Время ожидания слота чата (секунды) | Histogram |
136
+ | `embed_slots_in_use` | Число занятых слотов для эмбеддингов | Gauge |
137
+ | `embed_waiting_tasks` | Число задач, ожидающих слота эмбеддингов | Gauge |
138
+ | `embed_wait_time_seconds` | Время ожидания слота эмбеддингов (секунды) | Histogram |
139
+
140
+ ---
141
+
142
+ <a name="metrics"></a>
143
+
144
+ ## 3. Модуль `agent_lab_sdk.metrics`
145
+
146
+ Предоставляет удобный интерфейс для создания и управления метриками через Prometheus-клиент.
147
+
148
+ ### 3.1. Основные функции
149
+
150
+ ```python
151
+ from agent_lab_sdk.metrics import get_metric
152
+
153
+ # Создать метрику
154
+ g = get_metric(
155
+ metric_type="gauge", # тип: "gauge", "counter" или "histogram"
156
+ name="my_gauge", # имя метрики в Prometheus
157
+ documentation="Моя метрика gauge" # описание
158
+ )
159
+
160
+ # Увеличить счётчик
161
+ g.inc()
162
+
163
+ # Установить конкретное значение
164
+ g.set(42)
165
+ ```
166
+
167
+ ### 3.2. Пример использования в коде
168
+
169
+ ```python
170
+ from agent_lab_sdk.metrics import get_metric
171
+ import time
172
+
173
+ # Счётчик HTTP-запросов с метками
174
+ reqs = get_metric(
175
+ metric_type="counter",
176
+ name="http_requests_total",
177
+ documentation="Всего HTTP-запросов",
178
+ labelnames=["method", "endpoint"]
179
+ )
180
+ reqs.labels("GET", "/api").inc()
181
+
182
+ # Гистограмма задержек
183
+ lat = get_metric(
184
+ metric_type="histogram",
185
+ name="http_request_latency_seconds",
186
+ documentation="Длительность HTTP-запроса",
187
+ buckets=[0.1, 0.5, 1.0, 5.0]
188
+ )
189
+ with lat.time():
190
+ time.sleep(0.5)
191
+
192
+ print(reqs.collect())
193
+ print(lat.collect())
194
+ ```
195
+
196
+ ## 4. Хранилище
197
+
198
+ ### 4.1 SD Ассетница
199
+
200
+ функция `store_file_in_sd_asset` сохраняет base64‑файл в хранилище S3 и отдаёт публичную ссылку на файл
201
+
202
+ ```python
203
+ from agent_lab_sdk.storage import store_file_in_sd_asset
204
+
205
+ store_file_in_storage("my-agent-name-filename.png", file_b64, "giga-agents")
206
+ ```
207
+
208
+ ### 4.2 AGW Checkpointer
209
+
210
+ AGW поддерживает langgraph checkpoint API и в SDK представлен `AsyncAGWCheckpointSaver`, который позволяет сохранять состояние графа в AGW напрямую.
211
+
212
+ ## 5. Схема
213
+
214
+ TODO: описание LogMessage
215
+
216
+ ## 6. Сборка и публикация
217
+
218
+ 1. Установка twine
219
+
220
+ ```bash
221
+ pip install --upgrade build twine
222
+ ```
223
+
224
+ 2. Собрать и загрузить в pypi
225
+
226
+ перед обновлением сборки нужно не забыть поменять версию в [pyproject.toml](/pyproject.toml)
227
+ ```bash
228
+ python -m build && python -m twine upload dist/*
229
+ ```
230
+
231
+ 3. Ссылка на проект pypi
232
+
233
+ > https://pypi.org/project/agent-lab-sdk/
234
+
235
+ 4. установка локально в editable mode. Предварительно может потребоваться выбрать необходимое окружение
236
+ ```bash
237
+ pip install -e .
238
+ ```
239
+
240
+ # Примеры использования
241
+
242
+ TBD
@@ -12,8 +12,8 @@ agent_lab_sdk/schema/__init__.py,sha256=s91PH3Fj1eOq75gtOTiObSDiQdtpixg5Nhs3isBm
12
12
  agent_lab_sdk/schema/log_message.py,sha256=nadi6lZGRuDSPmfbYs9QPpRJUT9Pfy8Y7pGCvyFF5Mw,638
13
13
  agent_lab_sdk/storage/__init__.py,sha256=ik1_v1DMTwehvcAEXIYxuvLuCjJCa3y5qAuJqoQpuSA,81
14
14
  agent_lab_sdk/storage/storage.py,sha256=ELpt7GRwFD-aWa6ctinfA_QwcvzWLvKS0Wz8FlxVqAs,2075
15
- agent_lab_sdk-0.1.14.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
16
- agent_lab_sdk-0.1.14.dist-info/METADATA,sha256=AOkSRrbxFhZCnRxVJbg3lFLTVTK8NdqZNeRLSCTMfHQ,1807
17
- agent_lab_sdk-0.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
18
- agent_lab_sdk-0.1.14.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
19
- agent_lab_sdk-0.1.14.dist-info/RECORD,,
15
+ agent_lab_sdk-0.1.15.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
16
+ agent_lab_sdk-0.1.15.dist-info/METADATA,sha256=tgGSu9j2n4CtdKRBCguzfxmVc1XvoSyfGTdkgVtNe_I,11098
17
+ agent_lab_sdk-0.1.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
18
+ agent_lab_sdk-0.1.15.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
19
+ agent_lab_sdk-0.1.15.dist-info/RECORD,,
@@ -1,65 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: agent-lab-sdk
3
- Version: 0.1.14
4
- Summary: SDK для работы с Agent Lab
5
- Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
- License: Proprietary and Confidential — All Rights Reserved
7
- Keywords: agent,lab,sdk
8
- Classifier: Development Status :: 4 - Beta
9
- Classifier: Intended Audience :: Developers
10
- Classifier: Topic :: Software Development :: Libraries
11
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Programming Language :: Python :: 3.13
16
- Classifier: License :: Other/Proprietary License
17
- Classifier: Operating System :: OS Independent
18
- Requires-Python: <4.0,>=3.11
19
- Description-Content-Type: text/markdown
20
- License-File: LICENSE
21
- Requires-Dist: requests
22
- Requires-Dist: langgraph~=0.4.1
23
- Requires-Dist: langchain_gigachat
24
- Requires-Dist: prometheus-client
25
- Requires-Dist: langchain
26
- Requires-Dist: httpx~=0.27.2
27
- Requires-Dist: orjson>=3.9.7
28
- Dynamic: license-file
29
-
30
- # Agent Lab SDK
31
-
32
- Набор утилит и обёрток для работы с LLM, AGW и метриками в проектах Agent Lab.
33
-
34
- ---
35
-
36
- 1. Установка twine
37
-
38
- ```
39
- pip install --upgrade build twine
40
- ```
41
-
42
- 2. Собрать и загрузить в pypi
43
-
44
- перед обновлением сборки нужно не забыть поменять версию в pyproject.toml
45
- ```
46
- python -m build && python -m twine upload dist/*
47
- ```
48
-
49
- 3. Ссылка на проект pypi
50
-
51
- > https://pypi.org/project/agent-lab-sdk/
52
-
53
- 4. установка локально
54
- ```
55
- pip install -e .
56
- ```
57
-
58
- 5. установка из интернета
59
- ```
60
- pip install agent-lab-sdk
61
- ```
62
-
63
- # Примеры использования
64
-
65
- TBD