praisonaiagents 0.0.145__tar.gz → 0.0.147__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.
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/PKG-INFO +9 -3
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/__init__.py +8 -22
- praisonaiagents-0.0.147/praisonaiagents/_logging.py +134 -0
- praisonaiagents-0.0.147/praisonaiagents/_warning_patch.py +73 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/agent.py +358 -48
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/llm/__init__.py +3 -22
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/llm/llm.py +724 -153
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/llm/openai_client.py +98 -16
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/main.py +1 -5
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/memory/memory.py +45 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/telemetry/__init__.py +63 -3
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/telemetry/integration.py +78 -10
- praisonaiagents-0.0.147/praisonaiagents/telemetry/performance_cli.py +397 -0
- praisonaiagents-0.0.147/praisonaiagents/telemetry/performance_monitor.py +573 -0
- praisonaiagents-0.0.147/praisonaiagents/telemetry/performance_utils.py +571 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/telemetry/telemetry.py +35 -11
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents.egg-info/PKG-INFO +9 -3
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents.egg-info/SOURCES.txt +6 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents.egg-info/requires.txt +9 -2
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/pyproject.toml +12 -4
- praisonaiagents-0.0.147/tests/test_gemini_streaming_fix.py +88 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/README.md +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/context_agent.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/handoff.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/image_agent.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agent/router_agent.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agents/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agents/agents.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/agents/autoagents.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/approval.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/guardrails/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/guardrails/guardrail_result.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/guardrails/llm_guardrail.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/knowledge/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/knowledge/chunking.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/knowledge/knowledge.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/llm/model_capabilities.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/llm/model_router.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/mcp/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/mcp/mcp.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/mcp/mcp_http_stream.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/mcp/mcp_sse.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/memory/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/process/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/process/process.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/session.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/task/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/task/task.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/README.md +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/__init__.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/arxiv_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/calculator_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/csv_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/duckdb_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/duckduckgo_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/excel_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/file_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/json_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/mongodb_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/newspaper_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/pandas_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/python_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/searxng_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/shell_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/spider_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/test.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/train/data/generatecot.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/wikipedia_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/xml_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/yaml_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents/tools/yfinance_tools.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents.egg-info/dependency_links.txt +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/praisonaiagents.egg-info/top_level.txt +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/setup.cfg +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test-graph-memory.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_context_agent.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_embedding_logging.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_fix_comprehensive.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_handoff_compatibility.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_http_stream_basic.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_llm_self_reflection_direct.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_ollama_async_fix.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_ollama_fix.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_ollama_sequential_fix.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_posthog_fixed.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_self_reflection_comprehensive.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_self_reflection_fix_simple.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_self_reflection_fix_verification.py +0 -0
- {praisonaiagents-0.0.145 → praisonaiagents-0.0.147}/tests/test_validation_feedback.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: praisonaiagents
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.147
|
4
4
|
Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
|
5
5
|
Author: Mervin Praison
|
6
6
|
Requires-Python: >=3.10
|
@@ -15,7 +15,7 @@ Requires-Dist: fastapi>=0.115.0; extra == "mcp"
|
|
15
15
|
Requires-Dist: uvicorn>=0.34.0; extra == "mcp"
|
16
16
|
Provides-Extra: memory
|
17
17
|
Requires-Dist: chromadb>=1.0.0; extra == "memory"
|
18
|
-
Requires-Dist: litellm>=1.72.
|
18
|
+
Requires-Dist: litellm>=1.72.6; extra == "memory"
|
19
19
|
Provides-Extra: knowledge
|
20
20
|
Requires-Dist: mem0ai>=0.1.0; extra == "knowledge"
|
21
21
|
Requires-Dist: chromadb>=1.0.0; extra == "knowledge"
|
@@ -25,7 +25,7 @@ Provides-Extra: graph
|
|
25
25
|
Requires-Dist: mem0ai[graph]>=0.1.0; extra == "graph"
|
26
26
|
Requires-Dist: chromadb>=1.0.0; extra == "graph"
|
27
27
|
Provides-Extra: llm
|
28
|
-
Requires-Dist: litellm>=1.72.
|
28
|
+
Requires-Dist: litellm>=1.72.6; extra == "llm"
|
29
29
|
Requires-Dist: pydantic>=2.4.2; extra == "llm"
|
30
30
|
Provides-Extra: api
|
31
31
|
Requires-Dist: fastapi>=0.115.0; extra == "api"
|
@@ -35,6 +35,11 @@ Requires-Dist: posthog>=3.0.0; extra == "telemetry"
|
|
35
35
|
Provides-Extra: mongodb
|
36
36
|
Requires-Dist: pymongo>=4.6.3; extra == "mongodb"
|
37
37
|
Requires-Dist: motor>=3.4.0; extra == "mongodb"
|
38
|
+
Provides-Extra: auth
|
39
|
+
Requires-Dist: PyJWT>=2.8.0; extra == "auth"
|
40
|
+
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "auth"
|
41
|
+
Requires-Dist: python-jose[cryptography]>=3.3.0; extra == "auth"
|
42
|
+
Requires-Dist: python-multipart>=0.0.6; extra == "auth"
|
38
43
|
Provides-Extra: all
|
39
44
|
Requires-Dist: praisonaiagents[memory]; extra == "all"
|
40
45
|
Requires-Dist: praisonaiagents[knowledge]; extra == "all"
|
@@ -44,3 +49,4 @@ Requires-Dist: praisonaiagents[mcp]; extra == "all"
|
|
44
49
|
Requires-Dist: praisonaiagents[api]; extra == "all"
|
45
50
|
Requires-Dist: praisonaiagents[telemetry]; extra == "all"
|
46
51
|
Requires-Dist: praisonaiagents[mongodb]; extra == "all"
|
52
|
+
Requires-Dist: praisonaiagents[auth]; extra == "all"
|
@@ -2,30 +2,16 @@
|
|
2
2
|
Praison AI Agents - A package for hierarchical AI agent task execution
|
3
3
|
"""
|
4
4
|
|
5
|
-
#
|
6
|
-
import
|
7
|
-
import logging
|
8
|
-
from rich.logging import RichHandler
|
5
|
+
# Apply warning patch BEFORE any imports to intercept warnings at the source
|
6
|
+
from . import _warning_patch
|
9
7
|
|
10
|
-
#
|
11
|
-
|
8
|
+
# Import centralized logging configuration FIRST
|
9
|
+
from . import _logging
|
12
10
|
|
13
|
-
# Configure root logger
|
14
|
-
|
15
|
-
level=getattr(logging, LOGLEVEL, logging.INFO),
|
16
|
-
format="%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s",
|
17
|
-
datefmt="[%X]",
|
18
|
-
handlers=[RichHandler(rich_tracebacks=True)]
|
19
|
-
)
|
20
|
-
|
21
|
-
# Suppress specific noisy loggers
|
22
|
-
logging.getLogger("litellm").setLevel(logging.WARNING)
|
23
|
-
logging.getLogger("litellm.utils").setLevel(logging.WARNING)
|
24
|
-
logging.getLogger("markdown_it").setLevel(logging.WARNING)
|
25
|
-
logging.getLogger("rich.markdown").setLevel(logging.WARNING)
|
26
|
-
logging.getLogger("httpx").setLevel(logging.WARNING)
|
27
|
-
logging.getLogger("httpcore").setLevel(logging.WARNING)
|
11
|
+
# Configure root logger after logging is initialized
|
12
|
+
_logging.configure_root_logger()
|
28
13
|
|
14
|
+
# Now import everything else
|
29
15
|
from .agent.agent import Agent
|
30
16
|
from .agent.image_agent import ImageAgent
|
31
17
|
from .agent.context_agent import ContextAgent, create_context_agent
|
@@ -149,4 +135,4 @@ __all__ = [
|
|
149
135
|
|
150
136
|
# Add MCP to __all__ if available
|
151
137
|
if _mcp_available:
|
152
|
-
__all__.append('MCP')
|
138
|
+
__all__.append('MCP')
|
@@ -0,0 +1,134 @@
|
|
1
|
+
"""
|
2
|
+
Centralized logging configuration for PraisonAI Agents.
|
3
|
+
This module consolidates all logging configuration in one place to avoid duplication.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import os
|
7
|
+
import logging
|
8
|
+
from typing import List
|
9
|
+
|
10
|
+
# ========================================================================
|
11
|
+
# ENVIRONMENT CONFIGURATION
|
12
|
+
# ========================================================================
|
13
|
+
def _configure_environment():
|
14
|
+
"""Set environment variables to suppress debug messages at the source."""
|
15
|
+
env_vars = {
|
16
|
+
# LiteLLM configuration
|
17
|
+
"LITELLM_TELEMETRY": "False",
|
18
|
+
"LITELLM_DROP_PARAMS": "True",
|
19
|
+
"LITELLM_LOG": "ERROR",
|
20
|
+
"LITELLM_DEBUG": "False",
|
21
|
+
"LITELLM_SUPPRESS_DEBUG_INFO": "True",
|
22
|
+
"LITELLM_VERBOSE": "False",
|
23
|
+
"LITELLM_SET_VERBOSE": "False",
|
24
|
+
# HTTPX configuration
|
25
|
+
"HTTPX_DISABLE_WARNINGS": "True",
|
26
|
+
"HTTPX_LOG_LEVEL": "ERROR",
|
27
|
+
# Pydantic configuration
|
28
|
+
"PYDANTIC_WARNINGS_ENABLED": "False",
|
29
|
+
}
|
30
|
+
|
31
|
+
for key, value in env_vars.items():
|
32
|
+
os.environ[key] = value
|
33
|
+
|
34
|
+
|
35
|
+
# ========================================================================
|
36
|
+
# LOGGER CONFIGURATION
|
37
|
+
# ========================================================================
|
38
|
+
def _get_all_noisy_loggers() -> List[str]:
|
39
|
+
"""Get list of all loggers that should be suppressed."""
|
40
|
+
return [
|
41
|
+
# LiteLLM and variants
|
42
|
+
"litellm", "LiteLLM", "LiteLLM Router", "LiteLLM Proxy",
|
43
|
+
# HTTP libraries
|
44
|
+
"httpx", "httpx._trace", "httpx._client",
|
45
|
+
"httpcore", "httpcore._trace",
|
46
|
+
# OpenAI
|
47
|
+
"openai._base_client", "openai._client",
|
48
|
+
# Markdown
|
49
|
+
"markdown_it", "rich.markdown",
|
50
|
+
# System
|
51
|
+
"asyncio", "selector_events", "pydantic",
|
52
|
+
"praisonaiagents.telemetry.telemetry",
|
53
|
+
]
|
54
|
+
|
55
|
+
|
56
|
+
def _configure_loggers():
|
57
|
+
"""Configure all loggers based on LOGLEVEL environment variable."""
|
58
|
+
loglevel = os.environ.get('LOGLEVEL', 'INFO').upper()
|
59
|
+
|
60
|
+
# When DEBUG is set, allow some HTTP logging for API endpoints
|
61
|
+
if loglevel == 'DEBUG':
|
62
|
+
allowed_debug_loggers = {"httpx._client", "openai._client"}
|
63
|
+
|
64
|
+
for logger_name in _get_all_noisy_loggers():
|
65
|
+
if logger_name not in allowed_debug_loggers:
|
66
|
+
logger = logging.getLogger(logger_name)
|
67
|
+
logger.setLevel(logging.CRITICAL)
|
68
|
+
logger.handlers = []
|
69
|
+
logger.propagate = False
|
70
|
+
|
71
|
+
# Ensure allowed loggers are at INFO level to show API calls
|
72
|
+
for logger_name in allowed_debug_loggers:
|
73
|
+
logger = logging.getLogger(logger_name)
|
74
|
+
logger.setLevel(logging.INFO)
|
75
|
+
else:
|
76
|
+
# Suppress all noisy loggers when not in DEBUG mode
|
77
|
+
for logger_name in _get_all_noisy_loggers():
|
78
|
+
logger = logging.getLogger(logger_name)
|
79
|
+
logger.setLevel(logging.CRITICAL)
|
80
|
+
logger.handlers = []
|
81
|
+
logger.propagate = False
|
82
|
+
|
83
|
+
|
84
|
+
# ========================================================================
|
85
|
+
# LITELLM CONFIGURATION
|
86
|
+
# ========================================================================
|
87
|
+
def _configure_litellm():
|
88
|
+
"""Configure litellm after it's imported."""
|
89
|
+
try:
|
90
|
+
import litellm
|
91
|
+
litellm.telemetry = False
|
92
|
+
litellm.drop_params = True
|
93
|
+
litellm.suppress_debug_info = True
|
94
|
+
|
95
|
+
if hasattr(litellm, '_logging_obj'):
|
96
|
+
litellm._logging_obj.setLevel(logging.CRITICAL)
|
97
|
+
|
98
|
+
if hasattr(litellm, 'set_verbose'):
|
99
|
+
litellm.set_verbose = False
|
100
|
+
|
101
|
+
except (ImportError, AttributeError):
|
102
|
+
pass
|
103
|
+
|
104
|
+
|
105
|
+
# ========================================================================
|
106
|
+
# ROOT LOGGER CONFIGURATION
|
107
|
+
# ========================================================================
|
108
|
+
def configure_root_logger():
|
109
|
+
"""Configure the root logger with RichHandler."""
|
110
|
+
from rich.logging import RichHandler
|
111
|
+
|
112
|
+
loglevel = os.environ.get('LOGLEVEL', 'INFO').upper()
|
113
|
+
|
114
|
+
logging.basicConfig(
|
115
|
+
level=getattr(logging, loglevel, logging.INFO),
|
116
|
+
format="%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s",
|
117
|
+
datefmt="[%X]",
|
118
|
+
handlers=[RichHandler(rich_tracebacks=True)],
|
119
|
+
force=True
|
120
|
+
)
|
121
|
+
|
122
|
+
|
123
|
+
# ========================================================================
|
124
|
+
# INITIALIZATION
|
125
|
+
# ========================================================================
|
126
|
+
def initialize_logging():
|
127
|
+
"""Initialize all logging configuration."""
|
128
|
+
_configure_environment()
|
129
|
+
_configure_loggers()
|
130
|
+
_configure_litellm()
|
131
|
+
|
132
|
+
|
133
|
+
# Auto-initialize on import
|
134
|
+
initialize_logging()
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"""
|
2
|
+
Minimal warning patch to suppress specific third-party warnings.
|
3
|
+
This module patches the warnings module to intercept specific messages.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import warnings
|
7
|
+
import functools
|
8
|
+
import sys
|
9
|
+
|
10
|
+
# Apply aggressive warning filters first
|
11
|
+
warnings.filterwarnings("ignore", message=".*Pydantic serializer warnings.*")
|
12
|
+
warnings.filterwarnings("ignore", message=".*PydanticSerializationUnexpectedValue.*")
|
13
|
+
warnings.filterwarnings("ignore", message=".*Expected 9 fields but got.*")
|
14
|
+
warnings.filterwarnings("ignore", message=".*Expected `StreamingChoices` but got.*")
|
15
|
+
warnings.filterwarnings("ignore", message=".*serialized value may not be as expected.*")
|
16
|
+
warnings.filterwarnings("ignore", message=".*Use 'content=<...>' to upload raw bytes/text content.*")
|
17
|
+
warnings.filterwarnings("ignore", message=".*The `dict` method is deprecated.*")
|
18
|
+
warnings.filterwarnings("ignore", category=UserWarning, module="pydantic.*")
|
19
|
+
|
20
|
+
# Store the original warn function
|
21
|
+
_original_warn = warnings.warn
|
22
|
+
_original_warn_explicit = warnings.warn_explicit
|
23
|
+
|
24
|
+
# Messages to suppress (partial matches)
|
25
|
+
SUPPRESSED_PATTERNS = [
|
26
|
+
"Use 'content=<...>' to upload raw bytes/text content",
|
27
|
+
"The `dict` method is deprecated; use `model_dump` instead",
|
28
|
+
"Pydantic serializer warnings",
|
29
|
+
"PydanticSerializationUnexpectedValue",
|
30
|
+
"Expected 9 fields but got 5 for type `Message`",
|
31
|
+
"Expected `StreamingChoices` but got `Choices`",
|
32
|
+
"serialized value may not be as expected"
|
33
|
+
]
|
34
|
+
|
35
|
+
@functools.wraps(_original_warn)
|
36
|
+
def _patched_warn(message, category=None, stacklevel=1, source=None):
|
37
|
+
"""Patched warn function that suppresses specific messages."""
|
38
|
+
msg_str = str(message)
|
39
|
+
|
40
|
+
for pattern in SUPPRESSED_PATTERNS:
|
41
|
+
if pattern in msg_str:
|
42
|
+
return
|
43
|
+
|
44
|
+
if category == UserWarning and "pydantic" in msg_str.lower():
|
45
|
+
return
|
46
|
+
|
47
|
+
_original_warn(message, category, stacklevel, source)
|
48
|
+
|
49
|
+
@functools.wraps(_original_warn_explicit)
|
50
|
+
def _patched_warn_explicit(message, category, filename, lineno, module=None, registry=None, module_globals=None, source=None):
|
51
|
+
"""Patched warn_explicit function that suppresses specific messages."""
|
52
|
+
msg_str = str(message)
|
53
|
+
|
54
|
+
for pattern in SUPPRESSED_PATTERNS:
|
55
|
+
if pattern in msg_str:
|
56
|
+
return
|
57
|
+
|
58
|
+
if category == UserWarning and "pydantic" in msg_str.lower():
|
59
|
+
return
|
60
|
+
|
61
|
+
if module and "pydantic" in str(module):
|
62
|
+
return
|
63
|
+
|
64
|
+
_original_warn_explicit(message, category, filename, lineno, module, registry, module_globals, source)
|
65
|
+
|
66
|
+
# Apply the patches
|
67
|
+
warnings.warn = _patched_warn
|
68
|
+
warnings.warn_explicit = _patched_warn_explicit
|
69
|
+
|
70
|
+
# Also patch sys.modules warnings if it exists
|
71
|
+
if 'warnings' in sys.modules:
|
72
|
+
sys.modules['warnings'].warn = _patched_warn
|
73
|
+
sys.modules['warnings'].warn_explicit = _patched_warn_explicit
|