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

@@ -7,6 +7,7 @@ import requests
7
7
  import fcntl
8
8
  import random
9
9
  import time
10
+ import base64
10
11
  import threading
11
12
  from datetime import datetime, timedelta, timezone
12
13
  from .agw_token_manager import AgwTokenManager
@@ -29,10 +30,6 @@ BACKOFF_MAX = 5
29
30
  # Случайный порог обновления токена: от 0 до 300 секунд (5 минут)
30
31
  REFRESH_WINDOW_MAX = 300
31
32
 
32
- #1. поддержка переменных GIGACHAT_USER, GIGACHAT_PASSWORD => ?
33
- #2. поддержка переменной GIGACHAT_AUTH_URL
34
- #3. скоп не требуется при авторизации по токену advanced
35
-
36
33
  class GigaChatTokenManager:
37
34
  # Лок для синхронизации между потоками в одном процессе
38
35
  _thread_lock = threading.Lock()
@@ -45,14 +42,17 @@ class GigaChatTokenManager:
45
42
  data = None
46
43
  else:
47
44
  gigachat_scope = os.environ.get("GIGACHAT_SCOPE", "GIGACHAT_API_PERS")
48
-
49
- url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
45
+ url = os.getenv("GIGACHAT_AUTH_URL", "https://ngw.devices.sberbank.ru:9443/api/v2/oauth")
50
46
  data = {"scope": gigachat_scope}
51
47
 
52
- print(url)
53
48
  gigachat_credentials = os.environ.get("GIGACHAT_CREDENTIALS")
54
49
  if not gigachat_credentials:
55
- raise ValueError("Переменная окружения GIGACHAT_CREDENTIALS не установлена.")
50
+ user = os.getenv("GIGACHAT_USER")
51
+ password = os.getenv("GIGACHAT_PASSWORD")
52
+ if user and password:
53
+ gigachat_credentials = base64.b64encode(f"{user}:{password}")
54
+ if not gigachat_credentials:
55
+ raise ValueError("Переменная окружения GIGACHAT_CREDENTIALS (или GIGACHAT_USER в комбинации с GIGACHAT_PASSWORD) не установлена.")
56
56
  headers = {
57
57
  "Content-Type": "application/x-www-form-urlencoded",
58
58
  "Accept": "application/json",
agent_lab_sdk/llm/llm.py CHANGED
@@ -1,28 +1,38 @@
1
1
  from langchain_gigachat.chat_models import GigaChat
2
+ from langchain_gigachat.embeddings import GigaChatEmbeddings
2
3
  from agent_lab_sdk.llm.gigachat_token_manager import GigaChatTokenManager
4
+ from agent_lab_sdk.llm.throttled import ThrottledGigaChat, ThrottledGigaChatEmbeddings
5
+ from typing import Union
3
6
  import os
4
7
 
5
- def get_model(**kwargs) -> GigaChat:
8
+ def get_model(type="chat", throttled = False, **kwargs) -> Union[GigaChat, GigaChatEmbeddings, ThrottledGigaChat, ThrottledGigaChatEmbeddings]:
9
+ """
10
+ * type - определяет тип моледи : chat | embeddings
11
+ * throttled - оборачивает модель в класс обертку с дополнительным регулированием через семафор
12
+ * kwargs - прокидываются в модель
13
+ """
6
14
  access_token = kwargs.pop("access_token", None)
7
15
  if not access_token:
8
- access_token = GigaChatTokenManager.get_token()
9
- timeout = kwargs.pop("timeout", None)
10
- if not timeout:
11
- timeout=int(os.getenv("GLOBAL_GIGACHAT_TIMEOUT", "120"))
12
-
13
- scope = kwargs.pop("scope", None)
14
- if not scope:
15
- scope = os.getenv("GIGACHAT_SCOPE")
16
+ user = kwargs.get("user", None)
17
+ password = kwargs.get("password", None)
18
+ if not user and not password:
19
+ access_token = GigaChatTokenManager.get_token()
16
20
 
17
21
  verify_ssl_certs = kwargs.pop("verify_ssl_certs", False)
22
+ verify_ssl_certs = os.getenv("GIGACHAT_VERIFY_SSL_CERTS", verify_ssl_certs)
18
23
 
19
- if not scope:
20
- raise ValueError("GIGACHAT_SCOPE environment variable is not set.")
21
-
22
- return GigaChat(
24
+ if type == "chat":
25
+ _class = GigaChat
26
+ if throttled:
27
+ _class = ThrottledGigaChat
28
+ elif type == "embeddings":
29
+ _class = GigaChatEmbeddings
30
+ if throttled:
31
+ _class = ThrottledGigaChatEmbeddings
32
+ else:
33
+ raise ValueError(f"unsupported type {type}. possible values: chat, embeddings")
34
+ return _class(
23
35
  access_token=access_token,
24
36
  verify_ssl_certs=verify_ssl_certs,
25
- scope=scope,
26
- timeout=timeout,
27
37
  **kwargs
28
38
  )
@@ -34,7 +34,7 @@ def get_metric(
34
34
  buckets: Optional[List[float]] = None,
35
35
  states: Optional[List[str]] = None,
36
36
  **kwargs
37
- ) -> Any:
37
+ ) -> MetricType:
38
38
  """
39
39
  Возвращает метрику по name, создаёт её при первом запросе.
40
40
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lab-sdk
3
- Version: 0.1.17
3
+ Version: 0.1.18
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -58,7 +58,19 @@ from agent_lab_sdk.llm import get_model
58
58
  # Использует токен из окружения по умолчанию
59
59
  model = get_model()
60
60
 
61
- # Передача явных параметров
61
+ # Получить модель GigaChat, использует токен из окружения по умолчанию
62
+ model = get_model("chat")
63
+
64
+ # Получить модель ThrottledGigaChat, использует токен из окружения по умолчанию
65
+ model = get_model("chat", throttled=True)
66
+
67
+ # Получить модель EmbeddingsGigaChat, использует токен из окружения по умолчанию
68
+ model = get_model("embeddings")
69
+
70
+ # Получить модель ThrottledEmbeddingsGigaChat, использует токен из окружения по умолчанию
71
+ model = get_model("embeddings", throttled=True)
72
+
73
+ # Передача явных параметров GigaChat, токен из окружения не использует
62
74
  model = get_model(
63
75
  access_token="YOUR_TOKEN",
64
76
  timeout=60,
@@ -68,6 +80,8 @@ model = get_model(
68
80
 
69
81
  > если не передавать access_token, токен будет выбран через GigaChatTokenManager
70
82
 
83
+ > указание флага throttled=True включает ограничения и метрики для GigaChat и GigaChatEmbeddings. Подробнее [здесь](#2-модуль-agent_lab_sdkllmthrottled)
84
+
71
85
  ### 1.2. Менеджеры токенов
72
86
 
73
87
  | Класс | Описание | Пример использования |
@@ -80,13 +94,15 @@ model = get_model(
80
94
  | Переменная | Описание | Значение по умолчанию / Пример |
81
95
  | ---------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
82
96
  | `GIGACHAT_SCOPE` | Scope GigaChat API | `GIGACHAT_API_PERS` |
83
- | `GLOBAL_GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
84
- | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` | `true` |
97
+ | `GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
98
+ | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` для получения токена GigaChat | `true` |
85
99
  | `GIGACHAT_CREDENTIALS` | Базовые креды для GigaChat (`b64(clientId:secretId)`) | `Y2xpZW50SWQ6c2VjcmV0SWQ=` |
100
+ | `GIGACHAT_USER` | Имя пользователя GigaChat advanced | `user` |
101
+ | `GIGACHAT_PASSWORD` | Пароль пользователя GigaChat advanced) | `password` |
86
102
  | `GIGACHAT_TOKEN_PATH` | Путь к файлу кеша токена GigaChat | `/tmp/gigachat_token.json` |
87
103
  | `GIGACHAT_TOKEN_FETCH_RETRIES` | Количество попыток получения токена (GigaChat) | `3` |
88
104
  | `USE_GIGACHAT_ADVANCED` | Включает запрос токена GigaChat API в продвинутом режиме | `true` |
89
- | `GIGACHAT_BASE_URL` | Базовый URL GigaChat для расширенного режима | `https://ngw.devices.sberbank.ru:9443/api/v2/oauth` |
105
+ | `GIGACHAT_BASE_URL` | Базовый URL GigaChat (важно чтобы заканчивался на символ `/`) | `https://gigachat.sberdevices.ru/v1/` |
90
106
  | `TOKEN_PROVIDER_AGW_URL` | URL Agent Gateway для получения AGW-токена | `https://agent-gateway.apps.advosd.sberdevices.ru` |
91
107
  | `TOKEN_PROVIDER_AGW_DEFAULT_MAX_RETRIES` | Макс. попыток запроса токена (AGW) | `3` |
92
108
  | `TOKEN_PROVIDER_AGW_TIMEOUT_SEC` | Таймаут запроса к AGW (секунды) | `5` |
@@ -3,18 +3,18 @@ agent_lab_sdk/langgraph/checkpoint/__init__.py,sha256=DnKwR1LwbaQ3qhb124lE-tnojr
3
3
  agent_lab_sdk/langgraph/checkpoint/agw_saver.py,sha256=K4ni4x6bMibkC9PphEll7RLtbKbaHCGTz0uM6ouQaV0,13763
4
4
  agent_lab_sdk/llm/__init__.py,sha256=Yo9MbYdHS1iX05A9XiJGwWN1Hm4IARGav9mNFPrtDeA,376
5
5
  agent_lab_sdk/llm/agw_token_manager.py,sha256=_bPPI8muaEa6H01P8hHQOJHiiivaLd8N_d3OT9UT_80,4787
6
- agent_lab_sdk/llm/gigachat_token_manager.py,sha256=hN4ypi2dRVYTZoI2cU6F1QQRmXmmteoL9b-FTpxuy8M,8161
7
- agent_lab_sdk/llm/llm.py,sha256=NOEH9TOH66EIJXGevxPm6w6px7Z0cZl9DJ-9A7jOnd0,873
6
+ agent_lab_sdk/llm/gigachat_token_manager.py,sha256=Py4qP79p59vSg3SRrgCoH1oZzpZcLdAw9TADnxf1-Mk,8264
7
+ agent_lab_sdk/llm/llm.py,sha256=cPZll_NoovPXztyGnXthwBxK0YBZ5bRfHe5VI_Z-2jM,1648
8
8
  agent_lab_sdk/llm/throttled.py,sha256=9_nm1i3Uuep0VEWsY1KNCllZA-vM202XVdlgXhgC8BA,7005
9
9
  agent_lab_sdk/metrics/__init__.py,sha256=G4VSlzKwupPMM4c6vZaF1rnd0KusKarezDMjli9pVFw,57
10
- agent_lab_sdk/metrics/metrics.py,sha256=2e0c7BanThUNtCxpS6BUlAIDoLSidQsuaaBP5EB48Yo,3432
10
+ agent_lab_sdk/metrics/metrics.py,sha256=_XTT9vMG7T0u_D2pL371wm8GoBU5fodJ45D2RACnBJw,3439
11
11
  agent_lab_sdk/schema/__init__.py,sha256=RJW9WaZyyF4TT-rxHJMb9iq40yYYZoCcmUWVtOefQz4,427
12
12
  agent_lab_sdk/schema/input_types.py,sha256=mL-gkZ0SohdzWzHZyemomG0NIl3NcnJ2UAuXAFTnhLY,6097
13
13
  agent_lab_sdk/schema/log_message.py,sha256=nadi6lZGRuDSPmfbYs9QPpRJUT9Pfy8Y7pGCvyFF5Mw,638
14
14
  agent_lab_sdk/storage/__init__.py,sha256=ik1_v1DMTwehvcAEXIYxuvLuCjJCa3y5qAuJqoQpuSA,81
15
15
  agent_lab_sdk/storage/storage.py,sha256=ELpt7GRwFD-aWa6ctinfA_QwcvzWLvKS0Wz8FlxVqAs,2075
16
- agent_lab_sdk-0.1.17.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
17
- agent_lab_sdk-0.1.17.dist-info/METADATA,sha256=akM50sSB3tF_mU2q1fXdGtDl1V1e3bQ9kvjI6g3YM1Q,15942
18
- agent_lab_sdk-0.1.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
- agent_lab_sdk-0.1.17.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
20
- agent_lab_sdk-0.1.17.dist-info/RECORD,,
16
+ agent_lab_sdk-0.1.18.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
17
+ agent_lab_sdk-0.1.18.dist-info/METADATA,sha256=nNmD2p15o_-NVrLWo904AW-3ia60I8_Ykk7q7cIBWBY,17253
18
+ agent_lab_sdk-0.1.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
+ agent_lab_sdk-0.1.18.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
20
+ agent_lab_sdk-0.1.18.dist-info/RECORD,,