agent-lab-sdk 0.1.11__tar.gz → 0.1.12__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 (24) hide show
  1. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/PKG-INFO +3 -1
  2. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/langgraph/checkpoint/agw_saver.py +22 -21
  3. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk.egg-info/PKG-INFO +3 -1
  4. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk.egg-info/requires.txt +2 -0
  5. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/pyproject.toml +2 -2
  6. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/LICENSE +0 -0
  7. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/README.md +0 -0
  8. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/__init__.py +0 -0
  9. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/langgraph/checkpoint/__init__.py +0 -0
  10. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/llm/__init__.py +0 -0
  11. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/llm/agw_token_manager.py +0 -0
  12. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/llm/gigachat_token_manager.py +0 -0
  13. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/llm/llm.py +0 -0
  14. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/llm/throttled.py +0 -0
  15. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/metrics/__init__.py +0 -0
  16. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/metrics/metrics.py +0 -0
  17. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/schema/__init__.py +0 -0
  18. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/schema/log_message.py +0 -0
  19. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/storage/__init__.py +0 -0
  20. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk/storage/storage.py +0 -0
  21. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk.egg-info/SOURCES.txt +0 -0
  22. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk.egg-info/dependency_links.txt +0 -0
  23. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/agent_lab_sdk.egg-info/top_level.txt +0 -0
  24. {agent_lab_sdk-0.1.11 → agent_lab_sdk-0.1.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lab-sdk
3
- Version: 0.1.11
3
+ Version: 0.1.12
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -23,6 +23,8 @@ Requires-Dist: langgraph~=0.4.1
23
23
  Requires-Dist: langchain_gigachat
24
24
  Requires-Dist: prometheus-client
25
25
  Requires-Dist: langchain
26
+ Requires-Dist: httpx~=0.27.2
27
+ Requires-Dist: orjson>=3.9.7
26
28
  Dynamic: license-file
27
29
 
28
30
  # Agent Lab SDK
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- import json
3
+ import orjson
4
4
  from random import random
5
5
  from langgraph.checkpoint.serde.types import ChannelProtocol
6
6
  import asyncio
@@ -9,7 +9,7 @@ from contextlib import asynccontextmanager
9
9
  from typing import Any, AsyncIterator, Dict, Iterator, Optional, Sequence, Tuple
10
10
  import logging
11
11
 
12
- import requests
12
+ import httpx
13
13
  from langchain_core.runnables import RunnableConfig
14
14
 
15
15
  from langgraph.checkpoint.base import (
@@ -40,7 +40,7 @@ except NameError: # pragma: no cover
40
40
 
41
41
 
42
42
  class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
43
- """Persist checkpoints in Agent-Gateway с помощью `requests` + threads."""
43
+ """Persist checkpoints in Agent-Gateway с помощью `httpx` async client."""
44
44
 
45
45
  # ---------------------------- init / ctx -------------------------
46
46
  def __init__(
@@ -51,13 +51,12 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
51
51
  timeout: int | float = 10,
52
52
  api_key: str | None = None,
53
53
  extra_headers: Dict[str, str] | None = None,
54
+ verify: bool = True,
54
55
  ):
55
56
  super().__init__(serde=serde)
56
57
  self.base_url = base_url.rstrip("/")
57
58
  self.timeout = timeout
58
- self._session = requests.Session()
59
- self.loop = asyncio.get_running_loop()
60
-
59
+
61
60
  self.headers: Dict[str, str] = {
62
61
  "Accept": "application/json",
63
62
  "Content-Type": "application/json",
@@ -66,12 +65,20 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
66
65
  self.headers.update(extra_headers)
67
66
  if api_key:
68
67
  self.headers["Authorization"] = f"Bearer {api_key}"
68
+
69
+ self._client = httpx.AsyncClient(
70
+ base_url=self.base_url,
71
+ headers=self.headers,
72
+ timeout=self.timeout,
73
+ verify=verify,
74
+ trust_env=True
75
+ )
69
76
 
70
77
  async def __aenter__(self): # noqa: D401
71
78
  return self
72
79
 
73
80
  async def __aexit__(self, exc_type, exc, tb): # noqa: D401
74
- await asyncio.to_thread(self._session.close)
81
+ await self._client.aclose()
75
82
 
76
83
  # ----------------------- universal dump/load ---------------------
77
84
  # def _safe_dump(self, obj: Any) -> Any:
@@ -89,15 +96,15 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
89
96
  # 1) bytes → str
90
97
  s = dumped.decode()
91
98
  # 2) str JSON → python (list/dict/scalar)
92
- return json.loads(s)
93
- except (UnicodeDecodeError, json.JSONDecodeError):
99
+ return orjson.loads(s)
100
+ except (UnicodeDecodeError, orjson.JSONDecodeError):
94
101
  # не UTF-8 или не JSON → base64
95
102
  return base64.b64encode(dumped).decode()
96
103
  return dumped
97
104
 
98
105
  def _safe_load(self, obj: Any) -> Any:
99
106
  if isinstance(obj, (dict, list)): # уже распакованный JSON
100
- return self.serde.loads(json.dumps(obj, ensure_ascii=False).encode())
107
+ return self.serde.loads(orjson.dumps(obj))
101
108
  if isinstance(obj, str):
102
109
  # сначала plain JSON-строка
103
110
  try:
@@ -195,18 +202,12 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
195
202
  return self._safe_load(md)
196
203
 
197
204
  # ------------------------ HTTP wrapper ---------------------------
198
- async def _http(self, m: str, path: str, **kw) -> requests.Response:
199
- url = f"{self.base_url}{path}"
200
- hdr = {**self.headers, **kw.pop("headers", {})}
201
-
205
+ async def _http(self, method: str, path: str, **kw) -> httpx.Response:
202
206
  if "json" in kw:
203
207
  payload = kw.pop("json")
204
- kw["data"] = json.dumps(payload, ensure_ascii=False, separators=(",", ":"))
205
- logger.info(kw["data"])
206
-
207
- return await asyncio.to_thread(
208
- self._session.request, m, url, headers=hdr, timeout=self.timeout, **kw
209
- )
208
+ logger.info(orjson.dumps(payload).decode())
209
+
210
+ return await self._client.request(method, path, **kw)
210
211
 
211
212
  # -------------------- api -> CheckpointTuple ----------------------
212
213
  def _to_tuple(self, node: Dict[str, Any]) -> CheckpointTuple:
@@ -378,4 +379,4 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
378
379
  try:
379
380
  yield saver
380
381
  finally:
381
- await asyncio.to_thread(saver._session.close)
382
+ await saver._client.aclose()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lab-sdk
3
- Version: 0.1.11
3
+ Version: 0.1.12
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -23,6 +23,8 @@ Requires-Dist: langgraph~=0.4.1
23
23
  Requires-Dist: langchain_gigachat
24
24
  Requires-Dist: prometheus-client
25
25
  Requires-Dist: langchain
26
+ Requires-Dist: httpx~=0.27.2
27
+ Requires-Dist: orjson>=3.9.7
26
28
  Dynamic: license-file
27
29
 
28
30
  # Agent Lab SDK
@@ -3,3 +3,5 @@ langgraph~=0.4.1
3
3
  langchain_gigachat
4
4
  prometheus-client
5
5
  langchain
6
+ httpx~=0.27.2
7
+ orjson>=3.9.7
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lab-sdk"
7
- version = "0.1.11"
7
+ version = "0.1.12"
8
8
  description = "SDK для работы с Agent Lab"
9
9
  readme = "README.md"
10
10
  license = { text = "Proprietary and Confidential — All Rights Reserved" }
@@ -13,7 +13,7 @@ authors = [
13
13
  ]
14
14
  requires-python = ">=3.11,<4.0"
15
15
  dependencies = [
16
- "requests", "langgraph~=0.4.1", "langchain_gigachat", "prometheus-client", "langchain"
16
+ "requests", "langgraph~=0.4.1", "langchain_gigachat", "prometheus-client", "langchain", "httpx~=0.27.2", "orjson>=3.9.7"
17
17
  ]
18
18
  keywords = ["agent", "lab", "sdk"]
19
19
  classifiers = [
File without changes
File without changes
File without changes