agent-lab-sdk 0.1.17__tar.gz → 0.1.20__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.

Potentially problematic release.


This version of agent-lab-sdk might be problematic. Click here for more details.

Files changed (26) hide show
  1. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/PKG-INFO +25 -5
  2. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/README.md +24 -4
  3. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/llm/gigachat_token_manager.py +8 -8
  4. agent_lab_sdk-0.1.20/agent_lab_sdk/llm/llm.py +38 -0
  5. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/metrics/metrics.py +1 -1
  6. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk.egg-info/PKG-INFO +25 -5
  7. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/pyproject.toml +1 -1
  8. agent_lab_sdk-0.1.17/agent_lab_sdk/llm/llm.py +0 -28
  9. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/LICENSE +0 -0
  10. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/__init__.py +0 -0
  11. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/langgraph/checkpoint/__init__.py +0 -0
  12. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/langgraph/checkpoint/agw_saver.py +0 -0
  13. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/llm/__init__.py +0 -0
  14. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/llm/agw_token_manager.py +0 -0
  15. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/llm/throttled.py +0 -0
  16. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/metrics/__init__.py +0 -0
  17. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/schema/__init__.py +0 -0
  18. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/schema/input_types.py +0 -0
  19. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/schema/log_message.py +0 -0
  20. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/storage/__init__.py +0 -0
  21. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk/storage/storage.py +0 -0
  22. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk.egg-info/SOURCES.txt +0 -0
  23. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk.egg-info/dependency_links.txt +0 -0
  24. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk.egg-info/requires.txt +0 -0
  25. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/agent_lab_sdk.egg-info/top_level.txt +0 -0
  26. {agent_lab_sdk-0.1.17 → agent_lab_sdk-0.1.20}/setup.cfg +0 -0
@@ -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.20
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -37,6 +37,10 @@ Dynamic: license-file
37
37
  pip install agent_lab_sdk
38
38
  ```
39
39
 
40
+ ## Список изменений
41
+
42
+ Ознакомиться со списком изменений между версиями agent-lab-sdk можно по [ссылке](/CHANGELOG.md)
43
+
40
44
  ## Содержание
41
45
 
42
46
  1. [Модуль `agent_lab_sdk.llm`](#1-модуль-agent_lab_sdkllm)
@@ -58,7 +62,19 @@ from agent_lab_sdk.llm import get_model
58
62
  # Использует токен из окружения по умолчанию
59
63
  model = get_model()
60
64
 
61
- # Передача явных параметров
65
+ # Получить модель GigaChat, использует токен из окружения по умолчанию
66
+ model = get_model("chat")
67
+
68
+ # Получить модель ThrottledGigaChat, использует токен из окружения по умолчанию
69
+ model = get_model("chat", throttled=True)
70
+
71
+ # Получить модель EmbeddingsGigaChat, использует токен из окружения по умолчанию
72
+ model = get_model("embeddings")
73
+
74
+ # Получить модель ThrottledEmbeddingsGigaChat, использует токен из окружения по умолчанию
75
+ model = get_model("embeddings", throttled=True)
76
+
77
+ # Передача явных параметров GigaChat, токен из окружения не использует
62
78
  model = get_model(
63
79
  access_token="YOUR_TOKEN",
64
80
  timeout=60,
@@ -68,6 +84,8 @@ model = get_model(
68
84
 
69
85
  > если не передавать access_token, токен будет выбран через GigaChatTokenManager
70
86
 
87
+ > указание флага throttled=True включает ограничения и метрики для GigaChat и GigaChatEmbeddings. Подробнее [здесь](#2-модуль-agent_lab_sdkllmthrottled)
88
+
71
89
  ### 1.2. Менеджеры токенов
72
90
 
73
91
  | Класс | Описание | Пример использования |
@@ -80,13 +98,15 @@ model = get_model(
80
98
  | Переменная | Описание | Значение по умолчанию / Пример |
81
99
  | ---------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
82
100
  | `GIGACHAT_SCOPE` | Scope GigaChat API | `GIGACHAT_API_PERS` |
83
- | `GLOBAL_GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
84
- | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` | `true` |
101
+ | `GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
102
+ | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` для получения токена GigaChat | `true` |
85
103
  | `GIGACHAT_CREDENTIALS` | Базовые креды для GigaChat (`b64(clientId:secretId)`) | `Y2xpZW50SWQ6c2VjcmV0SWQ=` |
104
+ | `GIGACHAT_USER` | Имя пользователя GigaChat advanced | `user` |
105
+ | `GIGACHAT_PASSWORD` | Пароль пользователя GigaChat advanced) | `password` |
86
106
  | `GIGACHAT_TOKEN_PATH` | Путь к файлу кеша токена GigaChat | `/tmp/gigachat_token.json` |
87
107
  | `GIGACHAT_TOKEN_FETCH_RETRIES` | Количество попыток получения токена (GigaChat) | `3` |
88
108
  | `USE_GIGACHAT_ADVANCED` | Включает запрос токена GigaChat API в продвинутом режиме | `true` |
89
- | `GIGACHAT_BASE_URL` | Базовый URL GigaChat для расширенного режима | `https://ngw.devices.sberbank.ru:9443/api/v2/oauth` |
109
+ | `GIGACHAT_BASE_URL` | Базовый URL GigaChat (важно чтобы заканчивался на символ `/`) | `https://gigachat.sberdevices.ru/v1/` |
90
110
  | `TOKEN_PROVIDER_AGW_URL` | URL Agent Gateway для получения AGW-токена | `https://agent-gateway.apps.advosd.sberdevices.ru` |
91
111
  | `TOKEN_PROVIDER_AGW_DEFAULT_MAX_RETRIES` | Макс. попыток запроса токена (AGW) | `3` |
92
112
  | `TOKEN_PROVIDER_AGW_TIMEOUT_SEC` | Таймаут запроса к AGW (секунды) | `5` |
@@ -8,6 +8,10 @@
8
8
  pip install agent_lab_sdk
9
9
  ```
10
10
 
11
+ ## Список изменений
12
+
13
+ Ознакомиться со списком изменений между версиями agent-lab-sdk можно по [ссылке](/CHANGELOG.md)
14
+
11
15
  ## Содержание
12
16
 
13
17
  1. [Модуль `agent_lab_sdk.llm`](#1-модуль-agent_lab_sdkllm)
@@ -29,7 +33,19 @@ from agent_lab_sdk.llm import get_model
29
33
  # Использует токен из окружения по умолчанию
30
34
  model = get_model()
31
35
 
32
- # Передача явных параметров
36
+ # Получить модель GigaChat, использует токен из окружения по умолчанию
37
+ model = get_model("chat")
38
+
39
+ # Получить модель ThrottledGigaChat, использует токен из окружения по умолчанию
40
+ model = get_model("chat", throttled=True)
41
+
42
+ # Получить модель EmbeddingsGigaChat, использует токен из окружения по умолчанию
43
+ model = get_model("embeddings")
44
+
45
+ # Получить модель ThrottledEmbeddingsGigaChat, использует токен из окружения по умолчанию
46
+ model = get_model("embeddings", throttled=True)
47
+
48
+ # Передача явных параметров GigaChat, токен из окружения не использует
33
49
  model = get_model(
34
50
  access_token="YOUR_TOKEN",
35
51
  timeout=60,
@@ -39,6 +55,8 @@ model = get_model(
39
55
 
40
56
  > если не передавать access_token, токен будет выбран через GigaChatTokenManager
41
57
 
58
+ > указание флага throttled=True включает ограничения и метрики для GigaChat и GigaChatEmbeddings. Подробнее [здесь](#2-модуль-agent_lab_sdkllmthrottled)
59
+
42
60
  ### 1.2. Менеджеры токенов
43
61
 
44
62
  | Класс | Описание | Пример использования |
@@ -51,13 +69,15 @@ model = get_model(
51
69
  | Переменная | Описание | Значение по умолчанию / Пример |
52
70
  | ---------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
53
71
  | `GIGACHAT_SCOPE` | Scope GigaChat API | `GIGACHAT_API_PERS` |
54
- | `GLOBAL_GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
55
- | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` | `true` |
72
+ | `GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
73
+ | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` для получения токена GigaChat | `true` |
56
74
  | `GIGACHAT_CREDENTIALS` | Базовые креды для GigaChat (`b64(clientId:secretId)`) | `Y2xpZW50SWQ6c2VjcmV0SWQ=` |
75
+ | `GIGACHAT_USER` | Имя пользователя GigaChat advanced | `user` |
76
+ | `GIGACHAT_PASSWORD` | Пароль пользователя GigaChat advanced) | `password` |
57
77
  | `GIGACHAT_TOKEN_PATH` | Путь к файлу кеша токена GigaChat | `/tmp/gigachat_token.json` |
58
78
  | `GIGACHAT_TOKEN_FETCH_RETRIES` | Количество попыток получения токена (GigaChat) | `3` |
59
79
  | `USE_GIGACHAT_ADVANCED` | Включает запрос токена GigaChat API в продвинутом режиме | `true` |
60
- | `GIGACHAT_BASE_URL` | Базовый URL GigaChat для расширенного режима | `https://ngw.devices.sberbank.ru:9443/api/v2/oauth` |
80
+ | `GIGACHAT_BASE_URL` | Базовый URL GigaChat (важно чтобы заканчивался на символ `/`) | `https://gigachat.sberdevices.ru/v1/` |
61
81
  | `TOKEN_PROVIDER_AGW_URL` | URL Agent Gateway для получения AGW-токена | `https://agent-gateway.apps.advosd.sberdevices.ru` |
62
82
  | `TOKEN_PROVIDER_AGW_DEFAULT_MAX_RETRIES` | Макс. попыток запроса токена (AGW) | `3` |
63
83
  | `TOKEN_PROVIDER_AGW_TIMEOUT_SEC` | Таймаут запроса к AGW (секунды) | `5` |
@@ -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",
@@ -0,0 +1,38 @@
1
+ from langchain_gigachat.chat_models import GigaChat
2
+ from langchain_gigachat.embeddings import GigaChatEmbeddings
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
6
+ import os
7
+
8
+ def get_model(type="chat", throttled = False, **kwargs) -> Union[GigaChat, GigaChatEmbeddings, ThrottledGigaChat, ThrottledGigaChatEmbeddings]:
9
+ """
10
+ * type - определяет тип моледи : chat | embeddings
11
+ * throttled - оборачивает модель в класс обертку с дополнительным регулированием через семафор
12
+ * kwargs - прокидываются в модель
13
+ """
14
+ access_token = kwargs.pop("access_token", None)
15
+ if not access_token:
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()
20
+
21
+ verify_ssl_certs = kwargs.pop("verify_ssl_certs", False)
22
+ verify_ssl_certs = os.getenv("GIGACHAT_VERIFY_SSL_CERTS", verify_ssl_certs)
23
+
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(
35
+ access_token=access_token,
36
+ verify_ssl_certs=verify_ssl_certs,
37
+ **kwargs
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.20
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -37,6 +37,10 @@ Dynamic: license-file
37
37
  pip install agent_lab_sdk
38
38
  ```
39
39
 
40
+ ## Список изменений
41
+
42
+ Ознакомиться со списком изменений между версиями agent-lab-sdk можно по [ссылке](/CHANGELOG.md)
43
+
40
44
  ## Содержание
41
45
 
42
46
  1. [Модуль `agent_lab_sdk.llm`](#1-модуль-agent_lab_sdkllm)
@@ -58,7 +62,19 @@ from agent_lab_sdk.llm import get_model
58
62
  # Использует токен из окружения по умолчанию
59
63
  model = get_model()
60
64
 
61
- # Передача явных параметров
65
+ # Получить модель GigaChat, использует токен из окружения по умолчанию
66
+ model = get_model("chat")
67
+
68
+ # Получить модель ThrottledGigaChat, использует токен из окружения по умолчанию
69
+ model = get_model("chat", throttled=True)
70
+
71
+ # Получить модель EmbeddingsGigaChat, использует токен из окружения по умолчанию
72
+ model = get_model("embeddings")
73
+
74
+ # Получить модель ThrottledEmbeddingsGigaChat, использует токен из окружения по умолчанию
75
+ model = get_model("embeddings", throttled=True)
76
+
77
+ # Передача явных параметров GigaChat, токен из окружения не использует
62
78
  model = get_model(
63
79
  access_token="YOUR_TOKEN",
64
80
  timeout=60,
@@ -68,6 +84,8 @@ model = get_model(
68
84
 
69
85
  > если не передавать access_token, токен будет выбран через GigaChatTokenManager
70
86
 
87
+ > указание флага throttled=True включает ограничения и метрики для GigaChat и GigaChatEmbeddings. Подробнее [здесь](#2-модуль-agent_lab_sdkllmthrottled)
88
+
71
89
  ### 1.2. Менеджеры токенов
72
90
 
73
91
  | Класс | Описание | Пример использования |
@@ -80,13 +98,15 @@ model = get_model(
80
98
  | Переменная | Описание | Значение по умолчанию / Пример |
81
99
  | ---------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
82
100
  | `GIGACHAT_SCOPE` | Scope GigaChat API | `GIGACHAT_API_PERS` |
83
- | `GLOBAL_GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
84
- | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` | `true` |
101
+ | `GIGACHAT_TIMEOUT` | Таймаут запросов к GigaChat (секунды) | `120` |
102
+ | `USE_TOKEN_PROVIDER_AGW` | Использовать `AgwTokenManager` для получения токена GigaChat | `true` |
85
103
  | `GIGACHAT_CREDENTIALS` | Базовые креды для GigaChat (`b64(clientId:secretId)`) | `Y2xpZW50SWQ6c2VjcmV0SWQ=` |
104
+ | `GIGACHAT_USER` | Имя пользователя GigaChat advanced | `user` |
105
+ | `GIGACHAT_PASSWORD` | Пароль пользователя GigaChat advanced) | `password` |
86
106
  | `GIGACHAT_TOKEN_PATH` | Путь к файлу кеша токена GigaChat | `/tmp/gigachat_token.json` |
87
107
  | `GIGACHAT_TOKEN_FETCH_RETRIES` | Количество попыток получения токена (GigaChat) | `3` |
88
108
  | `USE_GIGACHAT_ADVANCED` | Включает запрос токена GigaChat API в продвинутом режиме | `true` |
89
- | `GIGACHAT_BASE_URL` | Базовый URL GigaChat для расширенного режима | `https://ngw.devices.sberbank.ru:9443/api/v2/oauth` |
109
+ | `GIGACHAT_BASE_URL` | Базовый URL GigaChat (важно чтобы заканчивался на символ `/`) | `https://gigachat.sberdevices.ru/v1/` |
90
110
  | `TOKEN_PROVIDER_AGW_URL` | URL Agent Gateway для получения AGW-токена | `https://agent-gateway.apps.advosd.sberdevices.ru` |
91
111
  | `TOKEN_PROVIDER_AGW_DEFAULT_MAX_RETRIES` | Макс. попыток запроса токена (AGW) | `3` |
92
112
  | `TOKEN_PROVIDER_AGW_TIMEOUT_SEC` | Таймаут запроса к AGW (секунды) | `5` |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lab-sdk"
7
- version = "0.1.17"
7
+ version = "0.1.20"
8
8
  description = "SDK для работы с Agent Lab"
9
9
  readme = "README.md"
10
10
  license = { text = "Proprietary and Confidential — All Rights Reserved" }
@@ -1,28 +0,0 @@
1
- from langchain_gigachat.chat_models import GigaChat
2
- from agent_lab_sdk.llm.gigachat_token_manager import GigaChatTokenManager
3
- import os
4
-
5
- def get_model(**kwargs) -> GigaChat:
6
- access_token = kwargs.pop("access_token", None)
7
- 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
-
17
- verify_ssl_certs = kwargs.pop("verify_ssl_certs", False)
18
-
19
- if not scope:
20
- raise ValueError("GIGACHAT_SCOPE environment variable is not set.")
21
-
22
- return GigaChat(
23
- access_token=access_token,
24
- verify_ssl_certs=verify_ssl_certs,
25
- scope=scope,
26
- timeout=timeout,
27
- **kwargs
28
- )
File without changes
File without changes