openai-sdk-helpers 0.4.2__py3-none-any.whl → 0.4.3__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.
Files changed (43) hide show
  1. openai_sdk_helpers/__init__.py +6 -36
  2. openai_sdk_helpers/agent/__init__.py +3 -4
  3. openai_sdk_helpers/agent/base.py +34 -31
  4. openai_sdk_helpers/agent/{config.py → configuration.py} +13 -13
  5. openai_sdk_helpers/agent/{coordination.py → coordinator.py} +12 -10
  6. openai_sdk_helpers/agent/search/base.py +16 -16
  7. openai_sdk_helpers/agent/search/vector.py +25 -13
  8. openai_sdk_helpers/agent/search/web.py +5 -5
  9. openai_sdk_helpers/agent/summarizer.py +6 -4
  10. openai_sdk_helpers/agent/translator.py +9 -5
  11. openai_sdk_helpers/agent/{validation.py → validator.py} +6 -4
  12. openai_sdk_helpers/cli.py +8 -22
  13. openai_sdk_helpers/environment.py +8 -13
  14. openai_sdk_helpers/prompt/vector_planner.jinja +7 -0
  15. openai_sdk_helpers/prompt/vector_search.jinja +6 -0
  16. openai_sdk_helpers/prompt/vector_writer.jinja +7 -0
  17. openai_sdk_helpers/response/__init__.py +1 -1
  18. openai_sdk_helpers/response/base.py +4 -4
  19. openai_sdk_helpers/response/{config.py → configuration.py} +8 -8
  20. openai_sdk_helpers/response/planner.py +1 -1
  21. openai_sdk_helpers/response/prompter.py +1 -1
  22. openai_sdk_helpers/streamlit_app/__init__.py +1 -1
  23. openai_sdk_helpers/streamlit_app/app.py +16 -17
  24. openai_sdk_helpers/streamlit_app/{config.py → configuration.py} +13 -13
  25. openai_sdk_helpers/streamlit_app/streamlit_web_search.py +2 -2
  26. openai_sdk_helpers/types.py +3 -3
  27. openai_sdk_helpers/utils/__init__.py +2 -6
  28. openai_sdk_helpers/utils/json/base_model.py +1 -1
  29. openai_sdk_helpers/utils/json/data_class.py +1 -1
  30. openai_sdk_helpers/utils/registry.py +19 -15
  31. openai_sdk_helpers/vector_storage/storage.py +1 -1
  32. {openai_sdk_helpers-0.4.2.dist-info → openai_sdk_helpers-0.4.3.dist-info}/METADATA +8 -8
  33. {openai_sdk_helpers-0.4.2.dist-info → openai_sdk_helpers-0.4.3.dist-info}/RECORD +38 -40
  34. openai_sdk_helpers/agent/prompt_utils.py +0 -15
  35. openai_sdk_helpers/context_manager.py +0 -241
  36. openai_sdk_helpers/deprecation.py +0 -167
  37. openai_sdk_helpers/retry.py +0 -175
  38. openai_sdk_helpers/utils/deprecation.py +0 -167
  39. /openai_sdk_helpers/{logging_config.py → logging.py} +0 -0
  40. /openai_sdk_helpers/{config.py → settings.py} +0 -0
  41. {openai_sdk_helpers-0.4.2.dist-info → openai_sdk_helpers-0.4.3.dist-info}/WHEEL +0 -0
  42. {openai_sdk_helpers-0.4.2.dist-info → openai_sdk_helpers-0.4.3.dist-info}/entry_points.txt +0 -0
  43. {openai_sdk_helpers-0.4.2.dist-info → openai_sdk_helpers-0.4.3.dist-info}/licenses/LICENSE +0 -0
@@ -54,7 +54,7 @@ class StreamlitAppConfig(BaseModelJSONSerializable):
54
54
  Examples
55
55
  --------
56
56
  >>> from openai_sdk_helpers.streamlit_app import StreamlitAppConfig
57
- >>> config = StreamlitAppConfig(
57
+ >>> configuration = StreamlitAppConfig(
58
58
  ... response=MyResponse,
59
59
  ... display_title="My Assistant",
60
60
  ... description="A helpful AI assistant"
@@ -180,7 +180,7 @@ class StreamlitAppConfig(BaseModelJSONSerializable):
180
180
 
181
181
  Examples
182
182
  --------
183
- >>> config.normalized_vector_stores()
183
+ >>> configuration.normalized_vector_stores()
184
184
  ['docs', 'knowledge_base']
185
185
  """
186
186
  return list(self.system_vector_store or [])
@@ -224,7 +224,7 @@ class StreamlitAppConfig(BaseModelJSONSerializable):
224
224
 
225
225
  Examples
226
226
  --------
227
- >>> response = config.create_response()
227
+ >>> response = configuration.create_response()
228
228
  >>> result = response.run_sync("Hello")
229
229
  """
230
230
  return _instantiate_response(self.response)
@@ -238,7 +238,7 @@ class StreamlitAppRegistry(RegistryBase[StreamlitAppConfig]):
238
238
 
239
239
  Methods
240
240
  -------
241
- register(config)
241
+ register(configuration)
242
242
  Add a configuration to the registry.
243
243
  get(name)
244
244
  Retrieve a configuration by name.
@@ -256,9 +256,9 @@ class StreamlitAppRegistry(RegistryBase[StreamlitAppConfig]):
256
256
  Examples
257
257
  --------
258
258
  >>> registry = StreamlitAppRegistry()
259
- >>> config = StreamlitAppConfig(response=MyResponse)
260
- >>> registry.register(config)
261
- >>> registry.get(config.name)
259
+ >>> configuration = StreamlitAppConfig(response=MyResponse)
260
+ >>> registry.register(configuration)
261
+ >>> registry.get(configuration.name)
262
262
  StreamlitAppConfig(...)
263
263
  """
264
264
 
@@ -295,7 +295,7 @@ class StreamlitAppRegistry(RegistryBase[StreamlitAppConfig]):
295
295
  Examples
296
296
  --------
297
297
  >>> from pathlib import Path
298
- >>> config = StreamlitAppRegistry.load_app_config(
298
+ >>> configuration = StreamlitAppRegistry.load_app_config(
299
299
  ... Path("./my_config.py")
300
300
  ... )
301
301
  """
@@ -328,7 +328,7 @@ def _import_config_module(config_path: Path) -> ModuleType:
328
328
 
329
329
  Examples
330
330
  --------
331
- >>> module = _import_config_module(Path("./config.py"))
331
+ >>> module = _import_config_module(Path("./configuration.py"))
332
332
  >>> hasattr(module, 'APP_CONFIG')
333
333
  True
334
334
  """
@@ -349,7 +349,7 @@ def _extract_config(module: ModuleType) -> StreamlitAppConfig:
349
349
 
350
350
  Looks for APP_CONFIG in the module and converts it to a validated
351
351
  StreamlitAppConfig instance. Supports multiple input formats including
352
- dictionaries, ResponseBase instances, and existing config objects.
352
+ dictionaries, ResponseBase instances, and existing configuration objects.
353
353
 
354
354
  Parameters
355
355
  ----------
@@ -371,8 +371,8 @@ def _extract_config(module: ModuleType) -> StreamlitAppConfig:
371
371
 
372
372
  Examples
373
373
  --------
374
- >>> config = _extract_config(module)
375
- >>> isinstance(config, StreamlitAppConfig)
374
+ >>> configuration = _extract_config(module)
375
+ >>> isinstance(configuration, StreamlitAppConfig)
376
376
  True
377
377
  """
378
378
  if not hasattr(module, "APP_CONFIG"):
@@ -455,7 +455,7 @@ def _config_from_mapping(raw_config: dict) -> StreamlitAppConfig:
455
455
 
456
456
  Examples
457
457
  --------
458
- >>> config = _config_from_mapping({
458
+ >>> configuration = _config_from_mapping({
459
459
  ... 'response': MyResponse,
460
460
  ... 'display_title': 'My App'
461
461
  ... })
@@ -2,7 +2,7 @@
2
2
 
3
3
  import json
4
4
  from openai_sdk_helpers.agent.search.web import WebAgentSearch
5
- from openai_sdk_helpers.config import OpenAISettings
5
+ from openai_sdk_helpers.settings import OpenAISettings
6
6
  from openai_sdk_helpers.response.base import ResponseBase
7
7
  from openai_sdk_helpers.structure.web_search import WebSearchStructure
8
8
  from openai_sdk_helpers.structure.prompt import PromptStructure
@@ -56,7 +56,7 @@ async def perform_search(tool) -> str:
56
56
  APP_CONFIG = {
57
57
  "response": StreamlitWebSearch,
58
58
  "display_title": "Web Search Assistant",
59
- "description": "Config-driven chat experience for performing web searches.",
59
+ "description": "configuration-driven chat experience for performing web searches.",
60
60
  }
61
61
 
62
62
  if __name__ == "__main__":
@@ -21,7 +21,7 @@ from typing import Any, Protocol
21
21
  from openai import OpenAI
22
22
 
23
23
 
24
- class SupportsOpenAIClient(Protocol):
24
+ class OpenAIClientProtocol(Protocol):
25
25
  """Protocol describing the subset of the OpenAI client the SDK relies on.
26
26
 
27
27
  Defines the minimum interface required for OpenAI client compatibility.
@@ -46,7 +46,7 @@ class SupportsOpenAIClient(Protocol):
46
46
  files: Any
47
47
 
48
48
 
49
- OpenAIClient = OpenAI | SupportsOpenAIClient
49
+ OpenAIClient = OpenAI | OpenAIClientProtocol
50
50
  """Type alias for OpenAI client or compatible protocol implementation.
51
51
 
52
52
  Accepts either the official OpenAI client or any object satisfying the
@@ -54,4 +54,4 @@ SupportsOpenAIClient protocol.
54
54
  """
55
55
 
56
56
 
57
- __all__ = ["SupportsOpenAIClient", "OpenAIClient"]
57
+ __all__ = ["OpenAIClientProtocol", "OpenAIClient"]
@@ -58,7 +58,7 @@ from .json import (
58
58
  from .registry import RegistryBase
59
59
 
60
60
  from .path_utils import check_filepath, ensure_directory
61
- from openai_sdk_helpers.logging_config import log
61
+ from openai_sdk_helpers.logging import log
62
62
  from .validation import (
63
63
  validate_choice,
64
64
  validate_dict_mapping,
@@ -78,7 +78,7 @@ from .output_validation import (
78
78
  ValidationRule,
79
79
  validate_output,
80
80
  )
81
- from .deprecation import DeprecationHelper, deprecated, warn_deprecated
81
+
82
82
  from .encoding import (
83
83
  create_file_data_url,
84
84
  create_image_data_url,
@@ -123,10 +123,6 @@ __all__ = [
123
123
  "LengthValidator",
124
124
  "OutputValidator",
125
125
  "validate_output",
126
- # Deprecation
127
- "deprecated",
128
- "warn_deprecated",
129
- "DeprecationHelper",
130
126
  # Encoding
131
127
  "encode_image",
132
128
  "encode_file",
@@ -166,7 +166,7 @@ class BaseModelJSONSerializable(BaseModel):
166
166
 
167
167
  Examples
168
168
  --------
169
- >>> instance = MyConfig.from_json_file("config.json")
169
+ >>> instance = MyConfig.from_json_file("configuration.json")
170
170
  """
171
171
  target = Path(filepath)
172
172
  if not target.exists():
@@ -180,7 +180,7 @@ class DataclassJSONSerializable:
180
180
 
181
181
  Examples
182
182
  --------
183
- >>> instance = MyClass.from_json_file("config.json")
183
+ >>> instance = MyClass.from_json_file("configuration.json")
184
184
  """
185
185
  target = Path(filepath)
186
186
  if not target.exists():
@@ -4,13 +4,17 @@ from __future__ import annotations
4
4
 
5
5
  import warnings
6
6
  from pathlib import Path
7
- from typing import Generic, Protocol, TypeVar
8
- from typing_extensions import Self
7
+ from typing import Generic, TypeVar
8
+ from typing import Protocol
9
9
 
10
+ try:
11
+ from typing import Self # Python 3.11+
12
+ except ImportError:
13
+ from typing_extensions import Self # type: ignore[no-redef]
10
14
  from .path_utils import ensure_directory
11
15
 
12
16
 
13
- class RegistrySerializable(Protocol):
17
+ class RegistryProtocol(Protocol):
14
18
  """Protocol describing serializable registry entries.
15
19
 
16
20
  Methods
@@ -31,12 +35,12 @@ class RegistrySerializable(Protocol):
31
35
  ...
32
36
 
33
37
  @classmethod
34
- def from_json_file(cls, filepath: Path | str) -> Self:
38
+ def from_json_file(cls, filepath: Path | str) -> "Self":
35
39
  """Load an instance from a JSON file."""
36
40
  ...
37
41
 
38
42
 
39
- T = TypeVar("T", bound=RegistrySerializable)
43
+ T = TypeVar("T", bound=RegistryProtocol)
40
44
 
41
45
 
42
46
  class RegistryBase(Generic[T]):
@@ -53,7 +57,7 @@ class RegistryBase(Generic[T]):
53
57
 
54
58
  Methods
55
59
  -------
56
- register(config)
60
+ register(configuration)
57
61
  Add a configuration to the registry.
58
62
  get(name)
59
63
  Retrieve a configuration by name.
@@ -82,12 +86,12 @@ class RegistryBase(Generic[T]):
82
86
  """
83
87
  return self._configs
84
88
 
85
- def register(self, config: T) -> None:
89
+ def register(self, configuration: T) -> None:
86
90
  """Add a configuration to the registry.
87
91
 
88
92
  Parameters
89
93
  ----------
90
- config : T
94
+ configuration : T
91
95
  Configuration to register. Must have a 'name' attribute.
92
96
 
93
97
  Raises
@@ -95,13 +99,13 @@ class RegistryBase(Generic[T]):
95
99
  ValueError
96
100
  If a configuration with the same name is already registered.
97
101
  """
98
- name = getattr(config, "name")
102
+ name = getattr(configuration, "name")
99
103
  if name in self._configs:
100
104
  raise ValueError(
101
105
  f"Configuration '{name}' is already registered. "
102
106
  "Use a unique name or clear the registry first."
103
107
  )
104
- self._configs[name] = config
108
+ self._configs[name] = configuration
105
109
 
106
110
  def get(self, name: str) -> T:
107
111
  """Retrieve a configuration by name.
@@ -166,10 +170,10 @@ class RegistryBase(Generic[T]):
166
170
  return
167
171
 
168
172
  for config_name in config_names:
169
- config = self.get(config_name)
173
+ configuration = self.get(config_name)
170
174
  filename = f"{config_name}.json"
171
- filepath = dir_path / config.__class__.__name__ / filename
172
- config.to_json_file(filepath)
175
+ filepath = dir_path / configuration.__class__.__name__ / filename
176
+ configuration.to_json_file(filepath)
173
177
 
174
178
  def load_from_directory(self, path: Path | str, *, config_class: type[T]) -> int:
175
179
  """Load all configurations from JSON files in a directory.
@@ -208,8 +212,8 @@ class RegistryBase(Generic[T]):
208
212
  count = 0
209
213
  for json_file in sorted(dir_path.glob("*.json")):
210
214
  try:
211
- config = config_class.from_json_file(json_file)
212
- self.register(config)
215
+ configuration = config_class.from_json_file(json_file)
216
+ self.register(configuration)
213
217
  count += 1
214
218
  except Exception as exc:
215
219
  # Log warning but continue processing other files
@@ -21,7 +21,7 @@ from openai.types.vector_store import VectorStore
21
21
  from openai.types.vector_store_search_response import VectorStoreSearchResponse
22
22
  from tqdm import tqdm
23
23
 
24
- from ..config import OpenAISettings
24
+ from ..settings import OpenAISettings
25
25
  from ..errors import ConfigurationError, VectorStorageError
26
26
  from ..types import OpenAIClient
27
27
  from ..utils import ensure_list, ensure_directory, log
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openai-sdk-helpers
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Composable helpers for OpenAI SDK agents, prompts, and storage
5
5
  Author: openai-sdk-helpers maintainers
6
6
  License: MIT
@@ -193,10 +193,11 @@ report = vector_search.run_agent_sync("Explain quantum entanglement for beginner
193
193
  print(report.report)
194
194
  ```
195
195
 
196
- **Note**: The vector search workflow requires prompt templates for each agent
197
- (`vector_planner.jinja`, `vector_search.jinja`, and `vector_writer.jinja`).
198
- If your `prompt_dir` doesn't contain these files, agent construction will fail
199
- with a `FileNotFoundError`.
196
+ **Note**: The vector search workflow ships with default prompt templates
197
+ (`vector_planner.jinja`, `vector_search.jinja`, and `vector_writer.jinja`).
198
+ You only need to pass a `prompt_dir` when you want to override them; if the
199
+ directory you supply is missing any of the templates, agent construction will
200
+ fail with a `FileNotFoundError`.
200
201
 
201
202
  ### Text utilities
202
203
 
@@ -510,7 +511,7 @@ src/openai_sdk_helpers/
510
511
  │ ├── summary.py # Summary output structures
511
512
  │ └── validation.py # Validation result structures
512
513
  ├── vector_storage/ # Vector store abstraction layer
513
- ├── config.py # OpenAI settings and configuration
514
+ ├── configuration.py # OpenAI settings and configuration
514
515
  └── utils/ # JSON serialization, logging, and helpers
515
516
 
516
517
  tests/ # Comprehensive unit test suite
@@ -562,7 +563,7 @@ These modules use the standard `openai` SDK for direct API interactions with fin
562
563
 
563
564
  ### Configuration and Data Structures (Shared)
564
565
 
565
- - **`openai_sdk_helpers.config.OpenAISettings`**
566
+ - **`openai_sdk_helpers.settings.OpenAISettings`**
566
567
  Centralizes OpenAI API configuration with environment variable support.
567
568
  Creates configured OpenAI clients with consistent settings.
568
569
 
@@ -696,4 +697,3 @@ recognizing types:
696
697
  - Check the [Key Modules](#key-modules) section for API documentation
697
698
  - Review examples in the [Quickstart](#quickstart) and [Advanced Usage](#advanced-usage) sections
698
699
  - Open an issue on GitHub for bugs or feature requests
699
-
@@ -1,30 +1,26 @@
1
- openai_sdk_helpers/__init__.py,sha256=19MEuQFgMqr6YqEc0QdmNe5YTg5JJVVCIisrYLFbqGk,4766
2
- openai_sdk_helpers/cli.py,sha256=YnQz-IcAqcBdh8eCCxVYa7NHDuHgHaU-PJ4FWPvkz58,8278
3
- openai_sdk_helpers/config.py,sha256=xK_u0YNKgtPrLrZrVr4F4k0CvSuYbsmkqqw9mCMdyF8,10932
4
- openai_sdk_helpers/context_manager.py,sha256=QqlrtenwKoz2krY0IzuToKdTX1HptUYtIEylxieybgY,6633
5
- openai_sdk_helpers/deprecation.py,sha256=VF0VDDegawYhsu5f-vE6dop9ob-jv8egxsm0KsPvP9E,4753
6
- openai_sdk_helpers/environment.py,sha256=9SYGAgf6dp0aknDdvcnSD40vJWONZsVhO-i8Ayo3jpg,1906
1
+ openai_sdk_helpers/__init__.py,sha256=X3447C4KKq-SlGTiKsKdgwH0zXffqo-7vwrgjtz1Vdo,4034
2
+ openai_sdk_helpers/cli.py,sha256=BDc08NqWVfL4GBekxMfN5IPPB4pmN1Od9sVpKtIJRZk,8025
3
+ openai_sdk_helpers/environment.py,sha256=mNoswzIdv37tTRhFwA2B6_Onxsm7vhfjPArfwhYuL7g,1825
7
4
  openai_sdk_helpers/errors.py,sha256=0TLrcpRXPBvk2KlrU5I1VAQl-sYy-d15h_SMDkEawvI,2757
8
5
  openai_sdk_helpers/files_api.py,sha256=uMKHvGg1Od0J95Izl3AG9ofQYq8EDJXEty7zP0oKjJM,12569
9
- openai_sdk_helpers/logging_config.py,sha256=JcR0FTWht1tYdwD-bXH835pr0JV0RwHfY3poruiZGHM,795
6
+ openai_sdk_helpers/logging.py,sha256=JcR0FTWht1tYdwD-bXH835pr0JV0RwHfY3poruiZGHM,795
10
7
  openai_sdk_helpers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- openai_sdk_helpers/retry.py,sha256=J10oQYphfzDXm3BnLoXwxk7PAhN93TC2LQOv0VDGOwI,6533
8
+ openai_sdk_helpers/settings.py,sha256=xK_u0YNKgtPrLrZrVr4F4k0CvSuYbsmkqqw9mCMdyF8,10932
12
9
  openai_sdk_helpers/tools.py,sha256=Awj5htt1ImBbNToM1u6qdrIZ-7MiPZAXZ_oKKiWivy8,10547
13
- openai_sdk_helpers/types.py,sha256=xzldCRfwCZ3rZl18IBmfgA-PVdoZKSWNrlSIhirumSo,1451
14
- openai_sdk_helpers/agent/__init__.py,sha256=39nYVK8okZv_srC86HStwtKirkH1_FXkacoqfV73naA,1070
15
- openai_sdk_helpers/agent/base.py,sha256=iv14LURB5PFcbRHuP1lWyj8JbKvDqM1m1Tf1mOi6CA8,27080
16
- openai_sdk_helpers/agent/config.py,sha256=NlSE1T1T3fUOu4GJzwjmrVGxB1aI969yYg6sFXgwHCI,14611
17
- openai_sdk_helpers/agent/coordination.py,sha256=VTzyl4RV1q4ugiyFW4Fj7pOAVVO0bMRD63PfQRDwfoQ,18030
18
- openai_sdk_helpers/agent/prompt_utils.py,sha256=-1M66tqQxh9wWCFg6X-K7cCcqauca3yA04ZjvOpN3bA,337
10
+ openai_sdk_helpers/types.py,sha256=ejCG0rYqJhjOQvKLoNnzq-TzcKCFt69GVfi7y805NkU,1451
11
+ openai_sdk_helpers/agent/__init__.py,sha256=RilrkE6Qz1oV7FMedRDSbpH7p7D4cXYa7tJD6BAJrwE,1074
12
+ openai_sdk_helpers/agent/base.py,sha256=84mleMjJUDwi6wImHhzpL2Tl6PCtK1bE5n-tvcmWVQ0,27333
13
+ openai_sdk_helpers/agent/configuration.py,sha256=t2ZpWdpTcBRc_4UJFnEMyjxEmQuX_BffU1DHv1Z-SpY,14702
14
+ openai_sdk_helpers/agent/coordinator.py,sha256=Hb0o-pdoLJoM1MPOzBYY8KJkMxR3zWqV-GlpsCs9lqs,18052
19
15
  openai_sdk_helpers/agent/runner.py,sha256=aOVN1OYKK5_u7oFBqRCOOeTgcb-lLl4kZGxuPLmJrMw,4884
20
- openai_sdk_helpers/agent/summarizer.py,sha256=lg_PLB1DSHox3PNDgiCzvCPM5VoCUbKEMGy1gqUvl8Y,4168
21
- openai_sdk_helpers/agent/translator.py,sha256=3u7er1GhUGdy7OMa3A_vyqFFZfev3XBCZW_6w5OwYVc,6286
16
+ openai_sdk_helpers/agent/summarizer.py,sha256=w_E1-7b1nQwMDAJK_TFLNoUmxjoXNEYfaFINgxbCw-w,4221
17
+ openai_sdk_helpers/agent/translator.py,sha256=MTqRukv1RL8K8fnqfk1xhc_SgRCDo-pWAVfbdAMw8DA,6341
22
18
  openai_sdk_helpers/agent/utils.py,sha256=DTD5foCqGYfXf13F2bZMYIQROl7SbDSy5GDPGi0Zl-0,1089
23
- openai_sdk_helpers/agent/validation.py,sha256=6NHZIFaUOqRZeYqvRBnDc_uApAV3YHJnOhLHKbVUsi0,5094
19
+ openai_sdk_helpers/agent/validator.py,sha256=zWtmjdg4AGV8d6PNlUpuzH-KrofJAsOMazK5BxPeOMY,5147
24
20
  openai_sdk_helpers/agent/search/__init__.py,sha256=LXXzEcX2MU7_htHRdRCGPw0hsr9CrZn0ESii7GZJMBw,806
25
- openai_sdk_helpers/agent/search/base.py,sha256=VokTw3-V2yxGzm2WzlcvU100h3UaeyGslCFwIgMvJwI,10146
26
- openai_sdk_helpers/agent/search/vector.py,sha256=A1HskDI6YVd3D9IQncowgiWUy9ptlMlSJhrBRDyqroM,15167
27
- openai_sdk_helpers/agent/search/web.py,sha256=EQ0Rgcz21Rm9bDGPr8XPlDj34_nH2wnB7ER9rBy48Ak,11199
21
+ openai_sdk_helpers/agent/search/base.py,sha256=0LYbFdammTHzBbhhM1Vc4pFFRCQXvs65T2mDQ_lprjY,10279
22
+ openai_sdk_helpers/agent/search/vector.py,sha256=zs0pE2l8bVnsn7yrg04IXd0y9xHmtnLLkKOjt47njqU,15994
23
+ openai_sdk_helpers/agent/search/web.py,sha256=RzI30rUTn50k323VyG4fZ0se91qGM5TvJ2hRtvFpPIk,11234
28
24
  openai_sdk_helpers/enums/__init__.py,sha256=aFf79C4JBeLC3kMlJfSpehyjx5uNCtW6eK5rD6ZFfhM,322
29
25
  openai_sdk_helpers/enums/base.py,sha256=cNllDtzcgI0_eZYXxFko14yhxwicX6xbeDfz9gFE3qo,2753
30
26
  openai_sdk_helpers/prompt/__init__.py,sha256=MOqgKwG9KLqKudoKRlUfLxiSmdOi2aD6hNrWDFqLHkk,418
@@ -32,20 +28,23 @@ openai_sdk_helpers/prompt/base.py,sha256=6X0zeopEvO0ba8207O8Nnj1QvFZEZier7kNNh4q
32
28
  openai_sdk_helpers/prompt/summarizer.jinja,sha256=jliSetWDISbql1EkWi1RB8-L_BXUg8JMkRRsPRHuzbY,309
33
29
  openai_sdk_helpers/prompt/translator.jinja,sha256=SZhW8ipEzM-9IA4wyS_r2wIMTAclWrilmk1s46njoL0,291
34
30
  openai_sdk_helpers/prompt/validator.jinja,sha256=6t8q_IdxFd3mVBGX6SFKNOert1Wo3YpTOji2SNEbbtE,547
35
- openai_sdk_helpers/response/__init__.py,sha256=Rh3tBygneOhS-Er_4dtX4Xa69ukvxYv01brq26VpgwQ,1886
36
- openai_sdk_helpers/response/base.py,sha256=OA1p9h6EIzwt8VCWFXEalaQHOe0_eZDefqs5jQKu-vU,34844
37
- openai_sdk_helpers/response/config.py,sha256=ugZIP29krecf6JXiwkrc1nBDCdT_C9DSOCdPkLRN4wY,9305
31
+ openai_sdk_helpers/prompt/vector_planner.jinja,sha256=szzuJu6ZawYWuARgQn4DykBLigHfCd0lKYM-GRgoR30,282
32
+ openai_sdk_helpers/prompt/vector_search.jinja,sha256=KPEYQDRKsUesadSyQcBBiqYQEDL1NLN6BQsqw-GcKMA,249
33
+ openai_sdk_helpers/prompt/vector_writer.jinja,sha256=q5osfexGvt1xn8ZPtBWUP36n_1HK_Ziu8dkmCZDVamc,342
34
+ openai_sdk_helpers/response/__init__.py,sha256=Kizjl1wVQpPP6JN9_TOW7Auvidkfj1g5lNNGQDv438k,1893
35
+ openai_sdk_helpers/response/base.py,sha256=bhohz1lFskMohud43xIHkkq8Bqr4jODv_a_DkdOxTA0,34867
36
+ openai_sdk_helpers/response/configuration.py,sha256=G3gSxDYZI9XfqDUJRO-w9JfXAK39ZbbjTCdJuLAXSxI,9339
38
37
  openai_sdk_helpers/response/files.py,sha256=6iHXeNZg4R08ilQ7D53qIJDQGYPpTLcByAhNJlEwbZ4,13226
39
38
  openai_sdk_helpers/response/messages.py,sha256=qX3sW79rLuJEys28zyv5MovZikwGOaLevzdVN0VYMRE,10104
40
- openai_sdk_helpers/response/planner.py,sha256=OfqrANheofY2155kVVfAWPPAHlnSnhaF0MLUHwNgPBU,333
41
- openai_sdk_helpers/response/prompter.py,sha256=vaHrNAAB9Z5WYwQeTKfOkAoH6DaFx1aRcywngqr47Pc,337
39
+ openai_sdk_helpers/response/planner.py,sha256=AuNMZkd4TGnvybSJaf2iMbvfPINbusrWucWBk2uQN_g,340
40
+ openai_sdk_helpers/response/prompter.py,sha256=TLRLmNwPcxaaB_X76BbvwXlphducPKYVbn-afTqN2Rk,344
42
41
  openai_sdk_helpers/response/runner.py,sha256=Rg8XmxU5UwxJc3MjPlYlXWDimxy_cjxzefGiruNZK6s,4269
43
42
  openai_sdk_helpers/response/tool_call.py,sha256=c9Filh4IG5H_RWuJlYl6KUZDaF7mCjkabFRQMNiz7zM,7422
44
43
  openai_sdk_helpers/response/vector_store.py,sha256=cG5Mzdhjw5FsX1phgclIGz2MQ8f8uMKBaage1O2EZQU,3074
45
- openai_sdk_helpers/streamlit_app/__init__.py,sha256=DIXClgbzncsex2vnXUGjBwvykazx4-Bz089beZiq8vc,805
46
- openai_sdk_helpers/streamlit_app/app.py,sha256=jNkMQ4zkfojP501qk_vncyLN4TymiDXxA3cXkUvBfsw,17402
47
- openai_sdk_helpers/streamlit_app/config.py,sha256=t1fylt53eVmnNOfBXwpfDyG-Jji9JBUb0ZyrtUWBZ1s,16594
48
- openai_sdk_helpers/streamlit_app/streamlit_web_search.py,sha256=-5T22a7XbNDjQxC3pLySH85iAdlqSM2ZrR4ZIIYk_KA,2808
44
+ openai_sdk_helpers/streamlit_app/__init__.py,sha256=3yAkl6qV71cqtT5YFZuC9Bkqit0NtffDV6jmMWpT1k4,812
45
+ openai_sdk_helpers/streamlit_app/app.py,sha256=D5MtvvDoksE-uIQ4ci52zJnXXVNbX75nIOtZHZpzmWg,17505
46
+ openai_sdk_helpers/streamlit_app/configuration.py,sha256=0KeJ4HqCNFthBHsedV6ptqHluAcTPBb5_TujFOGkIUU,16685
47
+ openai_sdk_helpers/streamlit_app/streamlit_web_search.py,sha256=SNyToeeUzxriQKl9sGlDcHzejQiluvnR_PQnlww5NQc,2817
49
48
  openai_sdk_helpers/structure/__init__.py,sha256=jROw0IbXYVRD2Eb3dBMsB6amQZrX8X7XSgGh_zjsZWc,3469
50
49
  openai_sdk_helpers/structure/agent_blueprint.py,sha256=VyJWkgPNzAYKRDMeR1M4kE6qqQURnwqtrrEn0TRJf0g,9698
51
50
  openai_sdk_helpers/structure/base.py,sha256=7JuHxKkLR5gP0RWGQIjOQlvySfain6LrB4-zHb0oFxo,25298
@@ -62,27 +61,26 @@ openai_sdk_helpers/structure/plan/helpers.py,sha256=Vc6dBTMFrNWlsaCTpEImEIKjfFq4
62
61
  openai_sdk_helpers/structure/plan/plan.py,sha256=CStfSfCdcv7HfLWV_G09xElJvq_kAKi_6JDkB3I7cSI,9663
63
62
  openai_sdk_helpers/structure/plan/task.py,sha256=FSdt2OJ_arC60zMoWIUHMT3U1syWM_7svyTpOIwiRSM,4580
64
63
  openai_sdk_helpers/structure/plan/types.py,sha256=7y9QEVdZreQUXV7n-R4RoNZzw5HeOVbJGWx9QkSfuNY,418
65
- openai_sdk_helpers/utils/__init__.py,sha256=8SghfmiFhNhMj8Wuop1SAtEt1F8QJb_r4jhi5DtSCDE,3670
64
+ openai_sdk_helpers/utils/__init__.py,sha256=BVfxiZX-wLiPDUQiWCUHORqzR73bhni8StuummuaN7M,3508
66
65
  openai_sdk_helpers/utils/async_utils.py,sha256=9KbPEVfi6IXdbwkTUE0h5DleK8TI7I6P_VPL8UgUv98,3689
67
66
  openai_sdk_helpers/utils/coercion.py,sha256=Pq1u7tAbD7kTZ84lK-7Fb9CyYKKKQt4fypG5BlSI6oQ,3774
68
- openai_sdk_helpers/utils/deprecation.py,sha256=VF0VDDegawYhsu5f-vE6dop9ob-jv8egxsm0KsPvP9E,4753
69
67
  openai_sdk_helpers/utils/encoding.py,sha256=oDtlNGZ5p-edXiHW76REs-0-8NXkQNReKJdj6sHLkt8,4615
70
68
  openai_sdk_helpers/utils/instructions.py,sha256=trbjxjxv2otQR9VmBsPFk1_CJj8nA85Sgtj_5QmQOKI,942
71
69
  openai_sdk_helpers/utils/output_validation.py,sha256=3DC6Hr6vAFx_bQGaLsxkGN_LuKe_MugLpVogMBgG9tc,12621
72
70
  openai_sdk_helpers/utils/path_utils.py,sha256=NOSX7553cc8LqxbnvmdYjgDBi5Le2W2LuMINwFsTzyM,1969
73
- openai_sdk_helpers/utils/registry.py,sha256=m59q6qm2IqXRdvdeKB-7H5tiUs1SB-aXTuyhTsVH5E4,6499
71
+ openai_sdk_helpers/utils/registry.py,sha256=FJvQEZ19vmgfhd1QR5JHb-jIite5fB-bSEOMTGkY7iQ,6680
74
72
  openai_sdk_helpers/utils/validation.py,sha256=ZjnZNOy5AoFlszRxarNol6YZwfgw6LnwPtkCekZmwAU,7826
75
73
  openai_sdk_helpers/utils/json/__init__.py,sha256=wBm1DBgfy_n1uSUcnCPyqBn_cCq41mijjPigSMZJZqg,2118
76
- openai_sdk_helpers/utils/json/base_model.py,sha256=8j__oKly46RRekmRjwFZjAxBHhZkIjMADcJReKo-QsQ,5100
77
- openai_sdk_helpers/utils/json/data_class.py,sha256=hffMQQTNTwybuMTOtmKNzxd6kXrVyQen67F5BE_OGqE,6469
74
+ openai_sdk_helpers/utils/json/base_model.py,sha256=6sFZWEzqbKmsAf5ZR-RnX820iBWxmYBotYN2GGROwDc,5107
75
+ openai_sdk_helpers/utils/json/data_class.py,sha256=Bobc5yCZPMh093-0fiWaYNcEH7gUXUV2Itd-tPXH15w,6476
78
76
  openai_sdk_helpers/utils/json/ref.py,sha256=FqBIRWIw33Up3rFyTlLYljcuUjg43f6Nu5wX3tOXn54,2809
79
77
  openai_sdk_helpers/utils/json/utils.py,sha256=iyc25tnObqXQJWPKLZMVts932GArdKer59KuC8aQKsY,5948
80
78
  openai_sdk_helpers/vector_storage/__init__.py,sha256=L5LxO09puh9_yBB9IDTvc1CvVkARVkHqYY1KX3inB4c,975
81
79
  openai_sdk_helpers/vector_storage/cleanup.py,sha256=ImWIE-9lli-odD8qIARvmeaa0y8ZD4pYYP-kT0O3178,3552
82
- openai_sdk_helpers/vector_storage/storage.py,sha256=A6zJDicObdSOVSlzhHVxEGq_tKO2_bNcsYi94xsKDNI,23655
80
+ openai_sdk_helpers/vector_storage/storage.py,sha256=CcpATTNdeppmMfbQLnhv29hdEfE3wtAVsyKHNCrL-cI,23657
83
81
  openai_sdk_helpers/vector_storage/types.py,sha256=jTCcOYMeOpZWvcse0z4T3MVs-RBOPC-fqWTBeQrgafU,1639
84
- openai_sdk_helpers-0.4.2.dist-info/METADATA,sha256=h1-_VwnRxkgrCwRJMEwpqMe3TCeUuMQ0U-PwYoJrJkU,23557
85
- openai_sdk_helpers-0.4.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
86
- openai_sdk_helpers-0.4.2.dist-info/entry_points.txt,sha256=gEOD1ZeXe8d2OP-KzUlG-b_9D9yUZTCt-GFW3EDbIIY,63
87
- openai_sdk_helpers-0.4.2.dist-info/licenses/LICENSE,sha256=CUhc1NrE50bs45tcXF7OcTQBKEvkUuLqeOHgrWQ5jaA,1067
88
- openai_sdk_helpers-0.4.2.dist-info/RECORD,,
82
+ openai_sdk_helpers-0.4.3.dist-info/METADATA,sha256=q5i3RZC6CLUeT2vSy8FSpKjwyAqV8Nfy1MP7zyS-ibs,23638
83
+ openai_sdk_helpers-0.4.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
84
+ openai_sdk_helpers-0.4.3.dist-info/entry_points.txt,sha256=gEOD1ZeXe8d2OP-KzUlG-b_9D9yUZTCt-GFW3EDbIIY,63
85
+ openai_sdk_helpers-0.4.3.dist-info/licenses/LICENSE,sha256=CUhc1NrE50bs45tcXF7OcTQBKEvkUuLqeOHgrWQ5jaA,1067
86
+ openai_sdk_helpers-0.4.3.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- """Shared helpers for locating bundled prompt templates.
2
-
3
- Attributes
4
- ----------
5
- DEFAULT_PROMPT_DIR : Path
6
- Default directory containing bundled prompt templates.
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- from pathlib import Path
12
-
13
- DEFAULT_PROMPT_DIR = Path(__file__).resolve().parent.parent / "prompt"
14
-
15
- __all__ = ["DEFAULT_PROMPT_DIR"]