sycommon-python-lib 0.2.2a19__py3-none-any.whl → 0.2.3a0__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.
@@ -108,7 +108,7 @@ class AgentConfig(BaseModel):
108
108
 
109
109
  # 沙箱配置
110
110
  sandbox_service_name: str = "shengye-platform-sandbox"
111
- sandbox_timeout: int = 60
111
+ sandbox_timeout: int = 300
112
112
  skills_dir: Optional[str] = None
113
113
  memory_dir: Optional[str] = None
114
114
 
@@ -490,6 +490,8 @@ class DeepAgent:
490
490
  from openai import APIConnectionError, APIError, APITimeoutError
491
491
 
492
492
  last_error = None
493
+ sandbox_retries = 0
494
+ max_sandbox_retries = 3
493
495
 
494
496
  while True:
495
497
  for attempt in range(max_retries):
@@ -512,8 +514,9 @@ class DeepAgent:
512
514
  else:
513
515
  raise last_error
514
516
  except RuntimeError as e:
515
- if "沙箱服务不可用" in str(e) and self.recovery_manager:
516
- SYLogger.warning("[DeepAgent] 沙箱服务不可用,尝试恢复...")
517
+ if "沙箱服务不可用" in str(e) and self.recovery_manager and sandbox_retries < max_sandbox_retries:
518
+ sandbox_retries += 1
519
+ SYLogger.warning(f"[DeepAgent] 沙箱服务不可用,尝试恢复 ({sandbox_retries}/{max_sandbox_retries})...")
517
520
  recovered = await self.recovery_manager.recover()
518
521
  if recovered:
519
522
  SYLogger.info("[DeepAgent] 沙箱已恢复,继续执行")
@@ -166,7 +166,7 @@ class TeamConfig(BaseModel):
166
166
  coordinator_name: str = "项目经理"
167
167
 
168
168
  sandbox_service_name: str = "shengye-platform-sandbox"
169
- sandbox_timeout: int = 60
169
+ sandbox_timeout: int = 300
170
170
  skills_dir: Optional[str] = None
171
171
  memory_dir: Optional[str] = None
172
172
 
sycommon/llm/get_llm.py CHANGED
@@ -153,7 +153,7 @@ def get_llm(
153
153
 
154
154
  # 根据 wrap_structured 决定默认超时
155
155
  if timeout is _TIMEOUT_UNSET:
156
- timeout = 180 if wrap_structured else None
156
+ timeout = 180 if wrap_structured else 300
157
157
 
158
158
  init_params = {
159
159
  "model_provider": llmConfig.provider,
@@ -165,7 +165,7 @@ def get_llm(
165
165
  "streaming": streaming,
166
166
  "timeout": timeout,
167
167
  "max_retries": max_retries,
168
- "stream_chunk_timeout": None,
168
+ "stream_chunk_timeout": 180,
169
169
  }
170
170
 
171
171
  # 合并其他透传参数(包括 presence_penalty, extra_body, top_p 等)
@@ -3,11 +3,26 @@ from typing import Tuple, List, Optional, Any, Dict
3
3
  from langfuse import Langfuse, get_client
4
4
  from sycommon.config.Config import Config, SingletonMeta
5
5
  from sycommon.logging.kafka_log import SYLogger
6
- from langfuse.langchain import CallbackHandler
6
+ from langfuse.langchain import CallbackHandler as _LangfuseCallbackHandler
7
7
  from sycommon.tools.env import get_env_var
8
8
  from sycommon.tools.merge_headers import get_header_value
9
9
 
10
10
 
11
+ class SafeLangfuseCallbackHandler(_LangfuseCallbackHandler):
12
+ """Wraps Langfuse CallbackHandler to handle unpicklable error objects.
13
+
14
+ LangGraph errors (e.g. Command/Interrupt dataclasses) may hold
15
+ _asyncio.Task references. When Langfuse calls str(error) → asdict() →
16
+ deepcopy(), this raises TypeError: cannot pickle '_asyncio.Task' object.
17
+ """
18
+
19
+ def on_chain_error(self, error, **kwargs):
20
+ try:
21
+ super().on_chain_error(error, **kwargs)
22
+ except (TypeError, ValueError):
23
+ pass
24
+
25
+
11
26
  class LangfuseInitializer(metaclass=SingletonMeta):
12
27
  """
13
28
  Langfuse 初始化管理器
@@ -53,7 +68,7 @@ class LangfuseInitializer(metaclass=SingletonMeta):
53
68
 
54
69
  self._langfuse_client = get_client()
55
70
 
56
- langfuse_handler = CallbackHandler()
71
+ langfuse_handler = SafeLangfuseCallbackHandler()
57
72
  self._base_callbacks.append(langfuse_handler)
58
73
 
59
74
  SYLogger.info(f"Langfuse 初始化成功 [Service: {server_name}]")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.2a19
3
+ Version: 0.2.3a0
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -129,8 +129,8 @@ sycommon/services.py,sha256=N6Z4D-qmdyGBZ5z72j2dtSfpXnrnWjEuSyKCgSIY0Cs,21332
129
129
  sycommon/agent/__init__.py,sha256=PXxUiDwdzxv3WQfD8R5MKXtV7qZPvbRc0wPxnS-ZsNQ,3752
130
130
  sycommon/agent/agent_manager.py,sha256=UhhaekEumT7g4v_Z1UB4jTp13X0n8M8erYaQdkGGWkA,13620
131
131
  sycommon/agent/chat_events.py,sha256=bWAMWYIZ2L_yqUcn5jq9ius_lQxLHEv4zQLEqX6UaeM,13190
132
- sycommon/agent/deep_agent.py,sha256=CgYobp42S4QLRtV1CgQoo5dX62UsTuvJdWX2sw-Pzgo,28460
133
- sycommon/agent/multi_agent_team.py,sha256=crySbjFyERezUNE419RUzJZwLp7b-dTvX4rtNydRY3M,26465
132
+ sycommon/agent/deep_agent.py,sha256=b09KJbtf-mb33GgKjRkENRv6VN494kA3n4dBqEY_mmA,28651
133
+ sycommon/agent/multi_agent_team.py,sha256=zsJNjVx0U5qPXlQO-tgAbKotsfL1LMPZvvouxUQGbwY,26466
134
134
  sycommon/agent/summarization_utils.py,sha256=Fz6xY6DkLXoUfqQVsz8uZrMvxTtEYEJBcDl6pqFJnRk,2242
135
135
  sycommon/agent/sandbox/__init__.py,sha256=jR7LlkD4J4Y6QYyRXQClkwmqDBCCPmycV_hQV9p9YHw,4621
136
136
  sycommon/agent/sandbox/file_ops.py,sha256=2LJNm0bQZj_l1FtpcDUtOBSQUK-Sd2vVZyc1JbNBhXk,22779
@@ -171,14 +171,14 @@ sycommon/heartbeat_process/heartbeat_process_manager.py,sha256=24qUKs8qegdWHqcox
171
171
  sycommon/heartbeat_process/heartbeat_process_worker.py,sha256=duuAEFwda43Y6pZE8tOOspitlyxecaFsg1n1iH9jQDQ,16863
172
172
  sycommon/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
173
  sycommon/llm/embedding.py,sha256=Xwmg1HcgbdW7OcpYyzu8k7U-27rC5lzjIqbg221CcyY,19129
174
- sycommon/llm/get_llm.py,sha256=472LbzRH6TGCz2p3MH1UH2BE0PJ33knSKSY6s2JNs70,7378
174
+ sycommon/llm/get_llm.py,sha256=RHfZlbZeuTju9yfWiSIuzwvOyceWICETzZMuAyqwkgo,7376
175
175
  sycommon/llm/llm_logger.py,sha256=LLXiESwDP5f8dB50nFabShVoLKv8UCf2ll69zo1FOso,3365
176
176
  sycommon/llm/llm_tokens.py,sha256=yGEessxfk5wRMrPGyWHhiiIIQFDVT23FSaqnwqHGCoY,4712
177
177
  sycommon/llm/llm_with_token_tracking.py,sha256=flGN3dbsjw1enal-p5Wh2Fq14F9Z9_O84aOd6kdq4kc,12377
178
178
  sycommon/llm/native_with_fallback_runnable.py,sha256=8g2q8cRqJv2miY7GrZz_f-zNmHxdb_5WSujD3frqObQ,8035
179
179
  sycommon/llm/output_fixing_runnable.py,sha256=wGHBKRpUjDz4ONJulTvG5UzJxZr1iK3ULkosaKqjF0w,8113
180
180
  sycommon/llm/struct_token.py,sha256=nXNcncRu3HfXxPXaJoG6AFAdFSNb3oJ4t0mz_TLL6Ow,19809
181
- sycommon/llm/sy_langfuse.py,sha256=kFkGWektS4vv92oj9tQS9xSU8T2Oi0Fa-TgFtNU7nA4,3879
181
+ sycommon/llm/sy_langfuse.py,sha256=fkfPxXhz65GcCRPNm202xxCNzgCODNh-QNmlDdTU4kM,4459
182
182
  sycommon/llm/token_usage_es_service.py,sha256=-RBCwZ8jS436n8DBUBm3Lf5O6TsQMaQgIj5oYBLO4Ss,19909
183
183
  sycommon/llm/token_usage_mysql_service.py,sha256=1WhdpZ8M4v4UNP5W0ui3A-Cx5yfZiX73l77FTJvL_d8,32644
184
184
  sycommon/llm/usage_token.py,sha256=E_umP6qjN5AZU_2XLXGpWdLxQ8VVKSf74B5RmqBQk2A,7780
@@ -257,8 +257,8 @@ sycommon/tools/syemail.py,sha256=BDFhgf7WDOQeTcjxJEQdu0dQhnHFPO_p3eI0-Ni3LhQ,561
257
257
  sycommon/tools/timing.py,sha256=OiiE7P07lRoMzX9kzb8sZU9cDb0zNnqIlY5pWqHcnkY,2064
258
258
  sycommon/xxljob/__init__.py,sha256=7eoBlQxv-B39IfRSCY2bkqdGYs1QRe1umAWd88VMEEM,86
259
259
  sycommon/xxljob/xxljob_service.py,sha256=JIEJaGXhqrTLcyxlyynSrsHg9bBnDNzX-D4qIWLRPUE,6815
260
- sycommon_python_lib-0.2.2a19.dist-info/METADATA,sha256=vlPiuftmIGq2Gzm0cqBkuqhZwezoDU8i4r5nYvbM2aY,7741
261
- sycommon_python_lib-0.2.2a19.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
262
- sycommon_python_lib-0.2.2a19.dist-info/entry_points.txt,sha256=gsR4SssKxDWjRU8ggidzNcdMXDPRSKRS7UaGyNP84Qg,92
263
- sycommon_python_lib-0.2.2a19.dist-info/top_level.txt,sha256=RgphKrg7nJyZ7irJqbxFr-5H2LUYTvI7ivoWZH2hcD0,29
264
- sycommon_python_lib-0.2.2a19.dist-info/RECORD,,
260
+ sycommon_python_lib-0.2.3a0.dist-info/METADATA,sha256=VusXz0MfTQ622eAN2iRy9I16ZjZTrxQN3cPO5rcDe7M,7740
261
+ sycommon_python_lib-0.2.3a0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
262
+ sycommon_python_lib-0.2.3a0.dist-info/entry_points.txt,sha256=gsR4SssKxDWjRU8ggidzNcdMXDPRSKRS7UaGyNP84Qg,92
263
+ sycommon_python_lib-0.2.3a0.dist-info/top_level.txt,sha256=RgphKrg7nJyZ7irJqbxFr-5H2LUYTvI7ivoWZH2hcD0,29
264
+ sycommon_python_lib-0.2.3a0.dist-info/RECORD,,