openai-sdk-helpers 0.1.0__py3-none-any.whl → 0.1.2__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.
- openai_sdk_helpers/__init__.py +44 -7
- openai_sdk_helpers/agent/base.py +5 -1
- openai_sdk_helpers/agent/coordination.py +4 -5
- openai_sdk_helpers/agent/runner.py +4 -1
- openai_sdk_helpers/agent/search/base.py +1 -0
- openai_sdk_helpers/agent/search/vector.py +2 -0
- openai_sdk_helpers/cli.py +265 -0
- openai_sdk_helpers/config.py +93 -2
- openai_sdk_helpers/context_manager.py +1 -1
- openai_sdk_helpers/deprecation.py +167 -0
- openai_sdk_helpers/environment.py +3 -2
- openai_sdk_helpers/errors.py +0 -12
- openai_sdk_helpers/files_api.py +373 -0
- openai_sdk_helpers/logging_config.py +24 -95
- openai_sdk_helpers/prompt/base.py +1 -1
- openai_sdk_helpers/response/__init__.py +7 -3
- openai_sdk_helpers/response/base.py +217 -147
- openai_sdk_helpers/response/config.py +16 -1
- openai_sdk_helpers/response/files.py +392 -0
- openai_sdk_helpers/response/messages.py +1 -0
- openai_sdk_helpers/retry.py +1 -1
- openai_sdk_helpers/streamlit_app/app.py +97 -7
- openai_sdk_helpers/streamlit_app/streamlit_web_search.py +15 -8
- openai_sdk_helpers/structure/base.py +6 -6
- openai_sdk_helpers/structure/plan/helpers.py +1 -0
- openai_sdk_helpers/structure/plan/task.py +7 -7
- openai_sdk_helpers/tools.py +116 -13
- openai_sdk_helpers/utils/__init__.py +100 -35
- openai_sdk_helpers/{async_utils.py → utils/async_utils.py} +5 -6
- openai_sdk_helpers/utils/coercion.py +138 -0
- openai_sdk_helpers/utils/deprecation.py +167 -0
- openai_sdk_helpers/utils/encoding.py +189 -0
- openai_sdk_helpers/utils/json_utils.py +98 -0
- openai_sdk_helpers/utils/output_validation.py +448 -0
- openai_sdk_helpers/utils/path_utils.py +46 -0
- openai_sdk_helpers/{validation.py → utils/validation.py} +7 -3
- openai_sdk_helpers/vector_storage/storage.py +59 -28
- {openai_sdk_helpers-0.1.0.dist-info → openai_sdk_helpers-0.1.2.dist-info}/METADATA +152 -3
- openai_sdk_helpers-0.1.2.dist-info/RECORD +79 -0
- openai_sdk_helpers-0.1.2.dist-info/entry_points.txt +2 -0
- openai_sdk_helpers/utils/core.py +0 -596
- openai_sdk_helpers-0.1.0.dist-info/RECORD +0 -69
- {openai_sdk_helpers-0.1.0.dist-info → openai_sdk_helpers-0.1.2.dist-info}/WHEEL +0 -0
- {openai_sdk_helpers-0.1.0.dist-info → openai_sdk_helpers-0.1.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,105 +1,34 @@
|
|
|
1
|
-
"""Centralized logging configuration for openai-sdk-helpers.
|
|
2
|
-
|
|
3
|
-
Provides a centralized factory for creating and configuring loggers
|
|
4
|
-
with consistent formatting and handler management.
|
|
5
|
-
"""
|
|
1
|
+
"""Centralized logging configuration for openai-sdk-helpers."""
|
|
6
2
|
|
|
7
3
|
import logging
|
|
8
|
-
import threading
|
|
9
|
-
from typing import Any
|
|
10
|
-
|
|
11
4
|
|
|
12
|
-
class LoggerFactory:
|
|
13
|
-
"""Centralized logger creation and configuration.
|
|
14
5
|
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
def log(
|
|
7
|
+
message: str,
|
|
8
|
+
level: int = logging.INFO,
|
|
9
|
+
*,
|
|
10
|
+
logger_name: str = "openai_sdk_helpers",
|
|
11
|
+
) -> None:
|
|
12
|
+
"""Log a message using Python's standard logging.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
message : str
|
|
17
|
+
The message to log.
|
|
18
|
+
level : int
|
|
19
|
+
Logging level (e.g., logging.DEBUG, logging.INFO).
|
|
20
|
+
Default is logging.INFO.
|
|
21
|
+
logger_name : str
|
|
22
|
+
Name of the logger. Default is "openai_sdk_helpers".
|
|
17
23
|
|
|
18
24
|
Examples
|
|
19
25
|
--------
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
>>>
|
|
23
|
-
>>> import logging
|
|
24
|
-
>>> LoggerFactory.configure(
|
|
25
|
-
... level=logging.DEBUG,
|
|
26
|
-
... handlers=[logging.StreamHandler()],
|
|
27
|
-
... )
|
|
28
|
-
|
|
29
|
-
Get a logger instance in your module:
|
|
30
|
-
|
|
31
|
-
>>> logger = LoggerFactory.get_logger("openai_sdk_helpers.agent")
|
|
32
|
-
>>> logger.debug("Debug message")
|
|
26
|
+
>>> from openai_sdk_helpers.logging_config import log
|
|
27
|
+
>>> log("Operation completed")
|
|
28
|
+
>>> log("Debug info", level=logging.DEBUG)
|
|
33
29
|
"""
|
|
30
|
+
logger = logging.getLogger(logger_name)
|
|
31
|
+
logger.log(level, message)
|
|
34
32
|
|
|
35
|
-
_initialized = False
|
|
36
|
-
_log_level = logging.INFO
|
|
37
|
-
_handlers: list[logging.Handler] = []
|
|
38
|
-
_lock = threading.Lock()
|
|
39
|
-
|
|
40
|
-
@classmethod
|
|
41
|
-
def configure(
|
|
42
|
-
cls,
|
|
43
|
-
level: int = logging.INFO,
|
|
44
|
-
handlers: list[logging.Handler] | None = None,
|
|
45
|
-
) -> None:
|
|
46
|
-
"""Configure logging globally.
|
|
47
|
-
|
|
48
|
-
Parameters
|
|
49
|
-
----------
|
|
50
|
-
level : int
|
|
51
|
-
Logging level (e.g., logging.DEBUG, logging.INFO).
|
|
52
|
-
Default is logging.INFO.
|
|
53
|
-
handlers : list[logging.Handler] | None
|
|
54
|
-
List of logging handlers. If None, a default
|
|
55
|
-
StreamHandler is created. Default is None.
|
|
56
|
-
|
|
57
|
-
Notes
|
|
58
|
-
-----
|
|
59
|
-
This method is thread-safe and can be called multiple times.
|
|
60
|
-
"""
|
|
61
|
-
with cls._lock:
|
|
62
|
-
cls._log_level = level
|
|
63
|
-
if handlers:
|
|
64
|
-
cls._handlers = handlers
|
|
65
|
-
else:
|
|
66
|
-
handler = logging.StreamHandler()
|
|
67
|
-
handler.setLevel(level)
|
|
68
|
-
formatter = logging.Formatter(
|
|
69
|
-
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
70
|
-
)
|
|
71
|
-
handler.setFormatter(formatter)
|
|
72
|
-
cls._handlers = [handler]
|
|
73
|
-
cls._initialized = True
|
|
74
|
-
|
|
75
|
-
@classmethod
|
|
76
|
-
def get_logger(cls, name: str) -> logging.Logger:
|
|
77
|
-
"""Get configured logger instance.
|
|
78
|
-
|
|
79
|
-
Parameters
|
|
80
|
-
----------
|
|
81
|
-
name : str
|
|
82
|
-
Logger name, typically __name__ of calling module.
|
|
83
|
-
|
|
84
|
-
Returns
|
|
85
|
-
-------
|
|
86
|
-
logging.Logger
|
|
87
|
-
Configured logger instance.
|
|
88
|
-
"""
|
|
89
|
-
logger = logging.getLogger(name)
|
|
90
|
-
|
|
91
|
-
# Skip configuration if already configured
|
|
92
|
-
if logger.handlers:
|
|
93
|
-
return logger
|
|
94
|
-
|
|
95
|
-
with cls._lock:
|
|
96
|
-
if not cls._initialized:
|
|
97
|
-
cls.configure()
|
|
98
|
-
|
|
99
|
-
for handler in cls._handlers:
|
|
100
|
-
logger.addHandler(handler)
|
|
101
|
-
|
|
102
|
-
logger.setLevel(cls._log_level)
|
|
103
|
-
logger.propagate = False
|
|
104
33
|
|
|
105
|
-
|
|
34
|
+
__all__ = ["log"]
|
|
@@ -176,7 +176,7 @@ class PromptRenderer:
|
|
|
176
176
|
... context={"key": "value"}
|
|
177
177
|
... )
|
|
178
178
|
"""
|
|
179
|
-
from openai_sdk_helpers.validation import validate_safe_path
|
|
179
|
+
from openai_sdk_helpers.utils.validation import validate_safe_path
|
|
180
180
|
|
|
181
181
|
path = Path(template_path)
|
|
182
182
|
if path.is_absolute():
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"""Response handling for OpenAI API interactions.
|
|
2
2
|
|
|
3
3
|
This module provides comprehensive support for managing OpenAI API responses,
|
|
4
|
-
including message handling, tool execution, vector store attachments,
|
|
5
|
-
structured output parsing. It serves as the foundation for
|
|
6
|
-
sophisticated AI agents with persistent conversation state.
|
|
4
|
+
including message handling, tool execution, vector store attachments, file
|
|
5
|
+
processing, and structured output parsing. It serves as the foundation for
|
|
6
|
+
building sophisticated AI agents with persistent conversation state.
|
|
7
7
|
|
|
8
8
|
Classes
|
|
9
9
|
-------
|
|
@@ -28,12 +28,15 @@ run_streamed
|
|
|
28
28
|
Execute a response workflow and return the asynchronous result.
|
|
29
29
|
attach_vector_store
|
|
30
30
|
Attach vector stores to a response's file_search tool.
|
|
31
|
+
process_files
|
|
32
|
+
Process file attachments with automatic type detection.
|
|
31
33
|
"""
|
|
32
34
|
|
|
33
35
|
from __future__ import annotations
|
|
34
36
|
|
|
35
37
|
from .base import BaseResponse
|
|
36
38
|
from .config import ResponseConfiguration, ResponseRegistry, get_default_registry
|
|
39
|
+
from .files import process_files
|
|
37
40
|
from .messages import ResponseMessage, ResponseMessages
|
|
38
41
|
from .runner import run_async, run_streamed, run_sync
|
|
39
42
|
from .tool_call import ResponseToolCall, parse_tool_arguments
|
|
@@ -52,4 +55,5 @@ __all__ = [
|
|
|
52
55
|
"ResponseToolCall",
|
|
53
56
|
"parse_tool_arguments",
|
|
54
57
|
"attach_vector_store",
|
|
58
|
+
"process_files",
|
|
55
59
|
]
|