openai-sdk-helpers 0.3.0__py3-none-any.whl → 0.4.1__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 (58) hide show
  1. openai_sdk_helpers/__init__.py +6 -6
  2. openai_sdk_helpers/agent/__init__.py +4 -4
  3. openai_sdk_helpers/agent/base.py +254 -113
  4. openai_sdk_helpers/agent/config.py +91 -37
  5. openai_sdk_helpers/agent/coordination.py +64 -28
  6. openai_sdk_helpers/agent/runner.py +16 -15
  7. openai_sdk_helpers/agent/search/base.py +94 -45
  8. openai_sdk_helpers/agent/search/vector.py +86 -58
  9. openai_sdk_helpers/agent/search/web.py +71 -40
  10. openai_sdk_helpers/agent/summarizer.py +32 -7
  11. openai_sdk_helpers/agent/translator.py +57 -24
  12. openai_sdk_helpers/agent/validation.py +34 -4
  13. openai_sdk_helpers/cli.py +42 -0
  14. openai_sdk_helpers/config.py +0 -1
  15. openai_sdk_helpers/environment.py +3 -2
  16. openai_sdk_helpers/files_api.py +35 -3
  17. openai_sdk_helpers/prompt/base.py +6 -0
  18. openai_sdk_helpers/response/__init__.py +3 -3
  19. openai_sdk_helpers/response/base.py +142 -73
  20. openai_sdk_helpers/response/config.py +63 -58
  21. openai_sdk_helpers/response/files.py +5 -5
  22. openai_sdk_helpers/response/messages.py +3 -3
  23. openai_sdk_helpers/response/runner.py +7 -7
  24. openai_sdk_helpers/response/tool_call.py +94 -4
  25. openai_sdk_helpers/response/vector_store.py +3 -3
  26. openai_sdk_helpers/streamlit_app/__init__.py +4 -4
  27. openai_sdk_helpers/streamlit_app/app.py +16 -16
  28. openai_sdk_helpers/streamlit_app/config.py +82 -70
  29. openai_sdk_helpers/streamlit_app/streamlit_web_search.py +2 -2
  30. openai_sdk_helpers/structure/__init__.py +6 -2
  31. openai_sdk_helpers/structure/agent_blueprint.py +2 -2
  32. openai_sdk_helpers/structure/base.py +8 -99
  33. openai_sdk_helpers/structure/plan/plan.py +2 -2
  34. openai_sdk_helpers/structure/plan/task.py +9 -9
  35. openai_sdk_helpers/structure/prompt.py +2 -2
  36. openai_sdk_helpers/structure/responses.py +15 -15
  37. openai_sdk_helpers/structure/summary.py +3 -3
  38. openai_sdk_helpers/structure/translation.py +32 -0
  39. openai_sdk_helpers/structure/validation.py +2 -2
  40. openai_sdk_helpers/structure/vector_search.py +7 -7
  41. openai_sdk_helpers/structure/web_search.py +6 -6
  42. openai_sdk_helpers/tools.py +41 -15
  43. openai_sdk_helpers/utils/__init__.py +19 -5
  44. openai_sdk_helpers/utils/json/__init__.py +55 -0
  45. openai_sdk_helpers/utils/json/base_model.py +181 -0
  46. openai_sdk_helpers/utils/{json_utils.py → json/data_class.py} +33 -68
  47. openai_sdk_helpers/utils/json/ref.py +113 -0
  48. openai_sdk_helpers/utils/json/utils.py +203 -0
  49. openai_sdk_helpers/utils/output_validation.py +21 -1
  50. openai_sdk_helpers/utils/path_utils.py +34 -1
  51. openai_sdk_helpers/utils/registry.py +46 -8
  52. openai_sdk_helpers/vector_storage/storage.py +10 -0
  53. {openai_sdk_helpers-0.3.0.dist-info → openai_sdk_helpers-0.4.1.dist-info}/METADATA +7 -7
  54. openai_sdk_helpers-0.4.1.dist-info/RECORD +86 -0
  55. openai_sdk_helpers-0.3.0.dist-info/RECORD +0 -81
  56. {openai_sdk_helpers-0.3.0.dist-info → openai_sdk_helpers-0.4.1.dist-info}/WHEEL +0 -0
  57. {openai_sdk_helpers-0.3.0.dist-info → openai_sdk_helpers-0.4.1.dist-info}/entry_points.txt +0 -0
  58. {openai_sdk_helpers-0.3.0.dist-info → openai_sdk_helpers-0.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -24,6 +24,18 @@ def check_filepath(
24
24
  -------
25
25
  Path
26
26
  Path object representing the validated file path.
27
+
28
+ Raises
29
+ ------
30
+ ValueError
31
+ If both or neither of filepath and fullfilepath are provided.
32
+ IOError
33
+ If the directory cannot be created.
34
+
35
+ Examples
36
+ --------
37
+ >>> check_filepath(fullfilepath="/tmp/my_app/data.json")
38
+ Path('/tmp/my_app/data.json')
27
39
  """
28
40
  if filepath is None and fullfilepath is None:
29
41
  raise ValueError("filepath or fullfilepath is required.")
@@ -38,7 +50,28 @@ def check_filepath(
38
50
 
39
51
 
40
52
  def ensure_directory(path: Path) -> Path:
41
- """Ensure a directory exists and return it."""
53
+ """Ensure a directory exists and return it.
54
+
55
+ Parameters
56
+ ----------
57
+ path : Path
58
+ The directory path to check and create if necessary.
59
+
60
+ Returns
61
+ -------
62
+ Path
63
+ The validated Path object for the directory.
64
+
65
+ Raises
66
+ ------
67
+ IOError
68
+ If the directory cannot be created.
69
+
70
+ Examples
71
+ --------
72
+ >>> ensure_directory(Path("/tmp/my_app"))
73
+ Path('/tmp/my_app')
74
+ """
42
75
  path.mkdir(parents=True, exist_ok=True)
43
76
  return path
44
77
 
@@ -4,14 +4,42 @@ from __future__ import annotations
4
4
 
5
5
  import warnings
6
6
  from pathlib import Path
7
- from typing import Generic, TypeVar
7
+ from typing import Generic, Protocol, TypeVar
8
+ from typing_extensions import Self
8
9
 
9
10
  from .path_utils import ensure_directory
10
11
 
11
- T = TypeVar("T")
12
12
 
13
+ class RegistrySerializable(Protocol):
14
+ """Protocol describing serializable registry entries.
13
15
 
14
- class BaseRegistry(Generic[T]):
16
+ Methods
17
+ -------
18
+ to_json_file(filepath)
19
+ Write the instance to a JSON file path.
20
+ from_json_file(filepath)
21
+ Load an instance from a JSON file path.
22
+ """
23
+
24
+ @property
25
+ def name(self) -> str:
26
+ """Return the configuration name."""
27
+ ...
28
+
29
+ def to_json_file(self, filepath: Path | str) -> str:
30
+ """Write serialized JSON data to a file path."""
31
+ ...
32
+
33
+ @classmethod
34
+ def from_json_file(cls, filepath: Path | str) -> Self:
35
+ """Load an instance from a JSON file."""
36
+ ...
37
+
38
+
39
+ T = TypeVar("T", bound=RegistrySerializable)
40
+
41
+
42
+ class RegistryBase(Generic[T]):
15
43
  """Base registry for managing configuration instances.
16
44
 
17
45
  Provides centralized storage and retrieval of configurations,
@@ -43,6 +71,17 @@ class BaseRegistry(Generic[T]):
43
71
  """Initialize an empty registry."""
44
72
  self._configs: dict[str, T] = {}
45
73
 
74
+ @property
75
+ def configs(self) -> dict[str, T]:
76
+ """Return the internal configuration mapping.
77
+
78
+ Returns
79
+ -------
80
+ dict[str, T]
81
+ Mapping of configuration names to instances.
82
+ """
83
+ return self._configs
84
+
46
85
  def register(self, config: T) -> None:
47
86
  """Add a configuration to the registry.
48
87
 
@@ -121,7 +160,7 @@ class BaseRegistry(Generic[T]):
121
160
  If the directory cannot be created or files cannot be written.
122
161
  """
123
162
  dir_path = ensure_directory(Path(path))
124
- config_names = self.list_names()
163
+ config_names = self.configs
125
164
 
126
165
  if not config_names:
127
166
  return
@@ -129,9 +168,8 @@ class BaseRegistry(Generic[T]):
129
168
  for config_name in config_names:
130
169
  config = self.get(config_name)
131
170
  filename = f"{config_name}.json"
132
- filepath = dir_path / filename
133
- # Call to_json_file on the config
134
- getattr(config, "to_json_file")(filepath)
171
+ filepath = dir_path / config.__class__.__name__ / filename
172
+ config.to_json_file(filepath)
135
173
 
136
174
  def load_from_directory(self, path: Path | str, *, config_class: type[T]) -> int:
137
175
  """Load all configurations from JSON files in a directory.
@@ -170,7 +208,7 @@ class BaseRegistry(Generic[T]):
170
208
  count = 0
171
209
  for json_file in sorted(dir_path.glob("*.json")):
172
210
  try:
173
- config = getattr(config_class, "from_json_file")(json_file)
211
+ config = config_class.from_json_file(json_file)
174
212
  self.register(config)
175
213
  count += 1
176
214
  except Exception as exc:
@@ -56,6 +56,16 @@ class VectorStorage:
56
56
  including file uploads, deletions, and semantic search operations. It handles
57
57
  file caching, concurrent uploads, and automatic store creation.
58
58
 
59
+ Parameters
60
+ ----------
61
+ store_name : str
62
+ Name of the vector store to create or connect to.
63
+ client : OpenAIClient or None, optional
64
+ Preconfigured OpenAI-compatible client, by default None.
65
+ model : str or None, optional
66
+ Embedding model identifier. Reads OPENAI_MODEL env var if None,
67
+ by default None.
68
+
59
69
  Examples
60
70
  --------
61
71
  Basic usage:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openai-sdk-helpers
3
- Version: 0.3.0
3
+ Version: 0.4.1
4
4
  Summary: Composable helpers for OpenAI SDK agents, prompts, and storage
5
5
  Author: openai-sdk-helpers maintainers
6
6
  License: MIT
@@ -277,14 +277,14 @@ when instantiating `OpenAISettings`.
277
277
  For more fine-grained control over API interactions, use the `response` module built on the standard `openai` SDK. This gives you direct access to message history, tool handlers, and custom response parsing:
278
278
 
279
279
  ```python
280
- from openai_sdk_helpers.response import BaseResponse
280
+ from openai_sdk_helpers.response import ResponseBase
281
281
  from openai_sdk_helpers import OpenAISettings
282
282
 
283
283
  # Configure OpenAI settings
284
284
  settings = OpenAISettings.from_env()
285
285
 
286
286
  # Create a response handler with custom instructions
287
- response = BaseResponse(
287
+ response = ResponseBase(
288
288
  instructions="You are a helpful code review assistant.",
289
289
  tools=None, # Or provide custom tool definitions
290
290
  output_structure=None, # Or a Pydantic model for structured output
@@ -311,12 +311,12 @@ response.close()
311
311
  The `response` module automatically detects file types and handles them appropriately:
312
312
 
313
313
  ```python
314
- from openai_sdk_helpers.response import BaseResponse
314
+ from openai_sdk_helpers.response import ResponseBase
315
315
  from openai_sdk_helpers import OpenAISettings
316
316
 
317
317
  settings = OpenAISettings.from_env()
318
318
 
319
- with BaseResponse(
319
+ with ResponseBase(
320
320
  name="analyzer",
321
321
  instructions="You are a helpful assistant that can analyze files.",
322
322
  tools=None,
@@ -550,7 +550,7 @@ These modules use the `openai-agents` SDK for high-level agent workflows with au
550
550
 
551
551
  These modules use the standard `openai` SDK for direct API interactions with fine-grained control over request/response cycles.
552
552
 
553
- - **`openai_sdk_helpers.response.base.BaseResponse`**
553
+ - **`openai_sdk_helpers.response.base.ResponseBase`**
554
554
  Manages complete OpenAI API interaction lifecycle including input construction,
555
555
  tool execution, message history, and structured output parsing. Uses the
556
556
  `client.responses.create()` API (from the OpenAI Responses API, distinct from
@@ -566,7 +566,7 @@ These modules use the standard `openai` SDK for direct API interactions with fin
566
566
  Centralizes OpenAI API configuration with environment variable support.
567
567
  Creates configured OpenAI clients with consistent settings.
568
568
 
569
- - **`openai_sdk_helpers.structure.BaseStructure`**
569
+ - **`openai_sdk_helpers.structure.StructureBase`**
570
570
  Pydantic-based foundation for all structured outputs. Provides JSON schema
571
571
  generation, validation, and serialization helpers.
572
572
 
@@ -0,0 +1,86 @@
1
+ openai_sdk_helpers/__init__.py,sha256=ZvcdJWHP7oMRxSGemxgO7CIpF0dc6oBTh4oftZAYv3c,4640
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=PqH9viiGIgRAiwU8xPPWlE25KbgSBLmE6nj7S8izCV4,1491
7
+ openai_sdk_helpers/errors.py,sha256=0TLrcpRXPBvk2KlrU5I1VAQl-sYy-d15h_SMDkEawvI,2757
8
+ openai_sdk_helpers/files_api.py,sha256=uMKHvGg1Od0J95Izl3AG9ofQYq8EDJXEty7zP0oKjJM,12569
9
+ openai_sdk_helpers/logging_config.py,sha256=JcR0FTWht1tYdwD-bXH835pr0JV0RwHfY3poruiZGHM,795
10
+ openai_sdk_helpers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ openai_sdk_helpers/retry.py,sha256=J10oQYphfzDXm3BnLoXwxk7PAhN93TC2LQOv0VDGOwI,6533
12
+ 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=vEI4LG7WJaP6WwCcO_5lE7CEOHOl2vUhY5Ai4El2Syk,1060
15
+ openai_sdk_helpers/agent/base.py,sha256=BZ9EImXFeM9x_79T9tla8cD7CzYDstZBkv4mQkZ7XYk,21635
16
+ openai_sdk_helpers/agent/config.py,sha256=tTw2f0VZmIl8MQrJzdsYFZ-daSrm9mpTdZ1RxFON9Yc,15848
17
+ openai_sdk_helpers/agent/coordination.py,sha256=VTzyl4RV1q4ugiyFW4Fj7pOAVVO0bMRD63PfQRDwfoQ,18030
18
+ openai_sdk_helpers/agent/prompt_utils.py,sha256=-1M66tqQxh9wWCFg6X-K7cCcqauca3yA04ZjvOpN3bA,337
19
+ 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
22
+ openai_sdk_helpers/agent/utils.py,sha256=DTD5foCqGYfXf13F2bZMYIQROl7SbDSy5GDPGi0Zl-0,1089
23
+ openai_sdk_helpers/agent/validation.py,sha256=6NHZIFaUOqRZeYqvRBnDc_uApAV3YHJnOhLHKbVUsi0,5094
24
+ openai_sdk_helpers/agent/search/__init__.py,sha256=xqosfzH4HcBs9IFZks9msG_694rS5q6Ea4_qNeRQRmU,798
25
+ openai_sdk_helpers/agent/search/base.py,sha256=VokTw3-V2yxGzm2WzlcvU100h3UaeyGslCFwIgMvJwI,10146
26
+ openai_sdk_helpers/agent/search/vector.py,sha256=i5nWUvEE9eAv41FwbMT52uORZ7OHCEc8d4F6qH-klCc,14282
27
+ openai_sdk_helpers/agent/search/web.py,sha256=7rYvFAZ1S00IaFPcneEOP2yY2vKIvYdnJvAbVTRbESc,10767
28
+ openai_sdk_helpers/enums/__init__.py,sha256=aFf79C4JBeLC3kMlJfSpehyjx5uNCtW6eK5rD6ZFfhM,322
29
+ openai_sdk_helpers/enums/base.py,sha256=cNllDtzcgI0_eZYXxFko14yhxwicX6xbeDfz9gFE3qo,2753
30
+ openai_sdk_helpers/prompt/__init__.py,sha256=MOqgKwG9KLqKudoKRlUfLxiSmdOi2aD6hNrWDFqLHkk,418
31
+ openai_sdk_helpers/prompt/base.py,sha256=6X0zeopEvO0ba8207O8Nnj1QvFZEZier7kNNh4qkcmE,7782
32
+ openai_sdk_helpers/prompt/summarizer.jinja,sha256=jliSetWDISbql1EkWi1RB8-L_BXUg8JMkRRsPRHuzbY,309
33
+ openai_sdk_helpers/prompt/translator.jinja,sha256=SZhW8ipEzM-9IA4wyS_r2wIMTAclWrilmk1s46njoL0,291
34
+ 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=nVEf4KSlBmKHa9Yl78nNi-t60BIwkGqBC2bCRu_q_xQ,9304
38
+ openai_sdk_helpers/response/files.py,sha256=6iHXeNZg4R08ilQ7D53qIJDQGYPpTLcByAhNJlEwbZ4,13226
39
+ openai_sdk_helpers/response/messages.py,sha256=qX3sW79rLuJEys28zyv5MovZikwGOaLevzdVN0VYMRE,10104
40
+ openai_sdk_helpers/response/runner.py,sha256=Rg8XmxU5UwxJc3MjPlYlXWDimxy_cjxzefGiruNZK6s,4269
41
+ openai_sdk_helpers/response/tool_call.py,sha256=c9Filh4IG5H_RWuJlYl6KUZDaF7mCjkabFRQMNiz7zM,7422
42
+ openai_sdk_helpers/response/vector_store.py,sha256=cG5Mzdhjw5FsX1phgclIGz2MQ8f8uMKBaage1O2EZQU,3074
43
+ openai_sdk_helpers/streamlit_app/__init__.py,sha256=DIXClgbzncsex2vnXUGjBwvykazx4-Bz089beZiq8vc,805
44
+ openai_sdk_helpers/streamlit_app/app.py,sha256=jNkMQ4zkfojP501qk_vncyLN4TymiDXxA3cXkUvBfsw,17402
45
+ openai_sdk_helpers/streamlit_app/config.py,sha256=t1fylt53eVmnNOfBXwpfDyG-Jji9JBUb0ZyrtUWBZ1s,16594
46
+ openai_sdk_helpers/streamlit_app/streamlit_web_search.py,sha256=21xhBhdTsqK6ybPcLzSKSLOVeK8a3x9y_rRNvNBOAGM,2812
47
+ openai_sdk_helpers/structure/__init__.py,sha256=jROw0IbXYVRD2Eb3dBMsB6amQZrX8X7XSgGh_zjsZWc,3469
48
+ openai_sdk_helpers/structure/agent_blueprint.py,sha256=VyJWkgPNzAYKRDMeR1M4kE6qqQURnwqtrrEn0TRJf0g,9698
49
+ openai_sdk_helpers/structure/base.py,sha256=7JuHxKkLR5gP0RWGQIjOQlvySfain6LrB4-zHb0oFxo,25298
50
+ openai_sdk_helpers/structure/prompt.py,sha256=Pp3j-fOG0SWQO5Ts9zS86n8cveSB6kWzSGHW6J9MlcY,1075
51
+ openai_sdk_helpers/structure/responses.py,sha256=eqCcW4d8lwhUF5kzHMA4FR9uNkaBHl8CuZk7a8YrenI,4868
52
+ openai_sdk_helpers/structure/summary.py,sha256=iP1uffqve18B9HXceP4rV0Ho5AaDZXMmC66tRKDNx3c,3143
53
+ openai_sdk_helpers/structure/translation.py,sha256=rBSzGBX6hGaETD43340z9MbKGsxWekjRD4xEZz67SnI,712
54
+ openai_sdk_helpers/structure/validation.py,sha256=D03rlyBDn22qNjTGaGsjhsk3g50oPmzYMFqycYF2_CU,2409
55
+ openai_sdk_helpers/structure/vector_search.py,sha256=XNQsG6_-c7X6TpXjqWOdKCmqXatX1gwd0zq-hII3cz4,5782
56
+ openai_sdk_helpers/structure/web_search.py,sha256=8ETWc2G1eO3dWkNQrs5rsxvHHyhyG1puEYUVRNCLUYI,4572
57
+ openai_sdk_helpers/structure/plan/__init__.py,sha256=IGr0Tk4inN_8o7fT2N02_FTi6U6l2T9_npcQHAlBwKA,1076
58
+ openai_sdk_helpers/structure/plan/enum.py,sha256=seESSwH-IeeW-9BqIMUQyk3qjtchfU3TDhF9HPDB1OM,3079
59
+ openai_sdk_helpers/structure/plan/helpers.py,sha256=Vc6dBTMFrNWlsaCTpEImEIKjfFq4BSSxNjB4K8dywOQ,5139
60
+ openai_sdk_helpers/structure/plan/plan.py,sha256=CStfSfCdcv7HfLWV_G09xElJvq_kAKi_6JDkB3I7cSI,9663
61
+ openai_sdk_helpers/structure/plan/task.py,sha256=FSdt2OJ_arC60zMoWIUHMT3U1syWM_7svyTpOIwiRSM,4580
62
+ openai_sdk_helpers/structure/plan/types.py,sha256=7y9QEVdZreQUXV7n-R4RoNZzw5HeOVbJGWx9QkSfuNY,418
63
+ openai_sdk_helpers/utils/__init__.py,sha256=8SghfmiFhNhMj8Wuop1SAtEt1F8QJb_r4jhi5DtSCDE,3670
64
+ openai_sdk_helpers/utils/async_utils.py,sha256=9KbPEVfi6IXdbwkTUE0h5DleK8TI7I6P_VPL8UgUv98,3689
65
+ openai_sdk_helpers/utils/coercion.py,sha256=Pq1u7tAbD7kTZ84lK-7Fb9CyYKKKQt4fypG5BlSI6oQ,3774
66
+ openai_sdk_helpers/utils/deprecation.py,sha256=VF0VDDegawYhsu5f-vE6dop9ob-jv8egxsm0KsPvP9E,4753
67
+ openai_sdk_helpers/utils/encoding.py,sha256=oDtlNGZ5p-edXiHW76REs-0-8NXkQNReKJdj6sHLkt8,4615
68
+ openai_sdk_helpers/utils/instructions.py,sha256=trbjxjxv2otQR9VmBsPFk1_CJj8nA85Sgtj_5QmQOKI,942
69
+ openai_sdk_helpers/utils/output_validation.py,sha256=3DC6Hr6vAFx_bQGaLsxkGN_LuKe_MugLpVogMBgG9tc,12621
70
+ openai_sdk_helpers/utils/path_utils.py,sha256=NOSX7553cc8LqxbnvmdYjgDBi5Le2W2LuMINwFsTzyM,1969
71
+ openai_sdk_helpers/utils/registry.py,sha256=m59q6qm2IqXRdvdeKB-7H5tiUs1SB-aXTuyhTsVH5E4,6499
72
+ openai_sdk_helpers/utils/validation.py,sha256=ZjnZNOy5AoFlszRxarNol6YZwfgw6LnwPtkCekZmwAU,7826
73
+ openai_sdk_helpers/utils/json/__init__.py,sha256=wBm1DBgfy_n1uSUcnCPyqBn_cCq41mijjPigSMZJZqg,2118
74
+ openai_sdk_helpers/utils/json/base_model.py,sha256=8j__oKly46RRekmRjwFZjAxBHhZkIjMADcJReKo-QsQ,5100
75
+ openai_sdk_helpers/utils/json/data_class.py,sha256=hffMQQTNTwybuMTOtmKNzxd6kXrVyQen67F5BE_OGqE,6469
76
+ openai_sdk_helpers/utils/json/ref.py,sha256=jIzv3M96G1b9x2tW8JZBqKBxAsE3bUhVmMADBFH6Jb4,2806
77
+ openai_sdk_helpers/utils/json/utils.py,sha256=iyc25tnObqXQJWPKLZMVts932GArdKer59KuC8aQKsY,5948
78
+ openai_sdk_helpers/vector_storage/__init__.py,sha256=L5LxO09puh9_yBB9IDTvc1CvVkARVkHqYY1KX3inB4c,975
79
+ openai_sdk_helpers/vector_storage/cleanup.py,sha256=ImWIE-9lli-odD8qIARvmeaa0y8ZD4pYYP-kT0O3178,3552
80
+ openai_sdk_helpers/vector_storage/storage.py,sha256=A6zJDicObdSOVSlzhHVxEGq_tKO2_bNcsYi94xsKDNI,23655
81
+ openai_sdk_helpers/vector_storage/types.py,sha256=jTCcOYMeOpZWvcse0z4T3MVs-RBOPC-fqWTBeQrgafU,1639
82
+ openai_sdk_helpers-0.4.1.dist-info/METADATA,sha256=AHH6lc1N3igZSpnjxss0wQpxz8EjP-qLY7IBWRRg93g,23557
83
+ openai_sdk_helpers-0.4.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
84
+ openai_sdk_helpers-0.4.1.dist-info/entry_points.txt,sha256=gEOD1ZeXe8d2OP-KzUlG-b_9D9yUZTCt-GFW3EDbIIY,63
85
+ openai_sdk_helpers-0.4.1.dist-info/licenses/LICENSE,sha256=CUhc1NrE50bs45tcXF7OcTQBKEvkUuLqeOHgrWQ5jaA,1067
86
+ openai_sdk_helpers-0.4.1.dist-info/RECORD,,
@@ -1,81 +0,0 @@
1
- openai_sdk_helpers/__init__.py,sha256=uqVd5iDoSo5_jlL9xX8sVRpZZhmc4isna7cr6RTP2Gc,4640
2
- openai_sdk_helpers/cli.py,sha256=J62XKPkGgYzYHKHfnkFy53Dp4rvBXf9cPEl1hrev3ZU,7400
3
- openai_sdk_helpers/config.py,sha256=pjBzjYM9Fs4DQqwio387lBt_4IwWKct_VNZBSe-bMqg,10972
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=RBYpRFamclaom07msipJ7jnnPkfVqjl1PRhDE5phZdg,1401
7
- openai_sdk_helpers/errors.py,sha256=0TLrcpRXPBvk2KlrU5I1VAQl-sYy-d15h_SMDkEawvI,2757
8
- openai_sdk_helpers/files_api.py,sha256=cNZObACSDX52kUvUOwanPyFqXcqRJe8D8_iB6AFqC2c,11810
9
- openai_sdk_helpers/logging_config.py,sha256=JcR0FTWht1tYdwD-bXH835pr0JV0RwHfY3poruiZGHM,795
10
- openai_sdk_helpers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- openai_sdk_helpers/retry.py,sha256=J10oQYphfzDXm3BnLoXwxk7PAhN93TC2LQOv0VDGOwI,6533
12
- openai_sdk_helpers/tools.py,sha256=C2xl0euovFyrDVh0qf1pEyuaicmrTmoZcJu9CxCKqic,9534
13
- openai_sdk_helpers/types.py,sha256=xzldCRfwCZ3rZl18IBmfgA-PVdoZKSWNrlSIhirumSo,1451
14
- openai_sdk_helpers/agent/__init__.py,sha256=Dst1jjP5a-iLItis0B-RMMYiHB_yw_2ZusU38u7YQyE,1086
15
- openai_sdk_helpers/agent/base.py,sha256=RotgsaCXVfxhrEE_7fyiR3ekhGunecTdwJ6p8lAyEM8,17348
16
- openai_sdk_helpers/agent/config.py,sha256=dY76c5Tqn_MYe7huN_1HIDQCVkerEJwqaFGvPaXF8kQ,13773
17
- openai_sdk_helpers/agent/coordination.py,sha256=rxUWhdgdEvPOrab6CbQIquzpOZDsIVXgFLNJEe_nVaY,16720
18
- openai_sdk_helpers/agent/prompt_utils.py,sha256=-1M66tqQxh9wWCFg6X-K7cCcqauca3yA04ZjvOpN3bA,337
19
- openai_sdk_helpers/agent/runner.py,sha256=w7gBFEuYGn7aKPpf9KNULboNY3pM2yLcoRcl_w80Wr4,4662
20
- openai_sdk_helpers/agent/summarizer.py,sha256=gmQlzhL4DaSzItlqLMfqFC4Xns0imPG3OIaIzjDVDrQ,3327
21
- openai_sdk_helpers/agent/translator.py,sha256=PbwfC6sbLkaU4bHwY5LdBqn5gMzYzKazZwJwk5nDLSo,5143
22
- openai_sdk_helpers/agent/utils.py,sha256=DTD5foCqGYfXf13F2bZMYIQROl7SbDSy5GDPGi0Zl-0,1089
23
- openai_sdk_helpers/agent/validation.py,sha256=uQBi1irE7sX2B_tvkpTpOX97Yz9oVdCXXIUTCyhM37o,4252
24
- openai_sdk_helpers/agent/search/__init__.py,sha256=xqosfzH4HcBs9IFZks9msG_694rS5q6Ea4_qNeRQRmU,798
25
- openai_sdk_helpers/agent/search/base.py,sha256=lSfh7kMphmGRLrmBzDLprs_Owm7tL9moYbKhkU1tZ0M,8704
26
- openai_sdk_helpers/agent/search/vector.py,sha256=bkd6OJT0FSioWaVgp1ZOLaHYV33HNrOyfCSCkFbhBtk,13833
27
- openai_sdk_helpers/agent/search/web.py,sha256=81qPBmwj7HnMqJW0g3f_9_OoPOiVlKAy-gEUM92WROk,10225
28
- openai_sdk_helpers/enums/__init__.py,sha256=aFf79C4JBeLC3kMlJfSpehyjx5uNCtW6eK5rD6ZFfhM,322
29
- openai_sdk_helpers/enums/base.py,sha256=cNllDtzcgI0_eZYXxFko14yhxwicX6xbeDfz9gFE3qo,2753
30
- openai_sdk_helpers/prompt/__init__.py,sha256=MOqgKwG9KLqKudoKRlUfLxiSmdOi2aD6hNrWDFqLHkk,418
31
- openai_sdk_helpers/prompt/base.py,sha256=o-O5S-et4mE30_LkFPzL3o67Z_3KrLFG55gQDlL4vqE,7575
32
- openai_sdk_helpers/prompt/summarizer.jinja,sha256=jliSetWDISbql1EkWi1RB8-L_BXUg8JMkRRsPRHuzbY,309
33
- openai_sdk_helpers/prompt/translator.jinja,sha256=SZhW8ipEzM-9IA4wyS_r2wIMTAclWrilmk1s46njoL0,291
34
- openai_sdk_helpers/prompt/validator.jinja,sha256=6t8q_IdxFd3mVBGX6SFKNOert1Wo3YpTOji2SNEbbtE,547
35
- openai_sdk_helpers/response/__init__.py,sha256=td-HTSPLtl1d5AkUFZ0rrUBUfsacM_CGtZQNj1_GWB8,1886
36
- openai_sdk_helpers/response/base.py,sha256=oX2uIjRDVEOSJVp3_WkJrBI6a2DPVaEBiKSrRj-oD-4,32869
37
- openai_sdk_helpers/response/config.py,sha256=bbl1kCvOhAS1vIoN60c-gNRavXZHO1kY_RqYztPqN30,9150
38
- openai_sdk_helpers/response/files.py,sha256=ANCoedNHXmpTXSaaGUvesAGq2DIUXT7SKZDCIJlXOv8,13226
39
- openai_sdk_helpers/response/messages.py,sha256=AbxLy2Q3sDHFLhhhoKfCcrRVlA8M7Ts9SuYx0PODi54,10061
40
- openai_sdk_helpers/response/runner.py,sha256=Rf13cQGsR7sN9gA81Y5th1tfH2DCCAwQ6RMs3bVgjnk,4269
41
- openai_sdk_helpers/response/tool_call.py,sha256=VYPvKUR-Ren0Y_nYS4jUSinhTyXKzFwQLxu-d3r_YuM,4506
42
- openai_sdk_helpers/response/vector_store.py,sha256=MyHUu6P9ueNsd9erbBkyVqq3stLK6qVuehdvmFAHq9E,3074
43
- openai_sdk_helpers/streamlit_app/__init__.py,sha256=RjJbnBDS5_YmAmxvaa3phB5u9UcXsXDEk_jMlY_pa5Q,793
44
- openai_sdk_helpers/streamlit_app/app.py,sha256=ejJGuy5WNuUXapxlZnYkPWz0gyQdF77l-gOFOzzDtyA,17402
45
- openai_sdk_helpers/streamlit_app/config.py,sha256=EK6LWACo7YIkDko1oesvupOx56cTuWWnwnXRiu8EYbs,15986
46
- openai_sdk_helpers/streamlit_app/streamlit_web_search.py,sha256=0RjB545dIvEeZiiLWM7C4CufbD3DITOWLZEVgxAL6mo,2812
47
- openai_sdk_helpers/structure/__init__.py,sha256=QUvRdJMbKsumjwJdWq9ihfcOED4ZbJMBQbmA1nmYJVw,3339
48
- openai_sdk_helpers/structure/agent_blueprint.py,sha256=2W-RBM5G3ZefMcYHqqoV6Y1witcSbMlUpdU1CA9n3tg,9698
49
- openai_sdk_helpers/structure/base.py,sha256=i937ZjMqTcdFd8UQXcA1sv-Lz1WJZlweGd-qLdD8TQE,28322
50
- openai_sdk_helpers/structure/prompt.py,sha256=7DBdLu6WDvXy2RkEBayDiX2Jn8T4-hJuohsOaKEoqJs,1075
51
- openai_sdk_helpers/structure/responses.py,sha256=iYJBT_4VFifzQqPnTpRWTcB0o7xkhPIQ2ugedivrpto,4868
52
- openai_sdk_helpers/structure/summary.py,sha256=MyZzMuqHP9F8B4rYYxCGJwojy5RavWUkMiRZ6yMQzvU,3143
53
- openai_sdk_helpers/structure/validation.py,sha256=vsilA3Qs3fjWLeYlnZnMEGj9i_bOJtXc2J3mSIEHncg,2409
54
- openai_sdk_helpers/structure/vector_search.py,sha256=A0w2AR0r6aIFoYbNkscUAGT7VzTe6WuvxrqUsWT2PMQ,5782
55
- openai_sdk_helpers/structure/web_search.py,sha256=S8OdllBWqEGXaKf6Alocl89ZuG7BlvXK5ra1Lm7lfjE,4572
56
- openai_sdk_helpers/structure/plan/__init__.py,sha256=IGr0Tk4inN_8o7fT2N02_FTi6U6l2T9_npcQHAlBwKA,1076
57
- openai_sdk_helpers/structure/plan/enum.py,sha256=seESSwH-IeeW-9BqIMUQyk3qjtchfU3TDhF9HPDB1OM,3079
58
- openai_sdk_helpers/structure/plan/helpers.py,sha256=Vc6dBTMFrNWlsaCTpEImEIKjfFq4BSSxNjB4K8dywOQ,5139
59
- openai_sdk_helpers/structure/plan/plan.py,sha256=LtfwWwZiHGe06nFCXSbT8p3x3w9hhI0wXS7hTeeWXvY,9663
60
- openai_sdk_helpers/structure/plan/task.py,sha256=R2MInXiOWvs5zFGVOfAhVivRxXWTBp8NrmVpZ7aUmM8,4580
61
- openai_sdk_helpers/structure/plan/types.py,sha256=7y9QEVdZreQUXV7n-R4RoNZzw5HeOVbJGWx9QkSfuNY,418
62
- openai_sdk_helpers/utils/__init__.py,sha256=UauMvn_2klGxXlz2Sn0RwJB1tIEkg7p0Qm9J8zaZFlM,3289
63
- openai_sdk_helpers/utils/async_utils.py,sha256=9KbPEVfi6IXdbwkTUE0h5DleK8TI7I6P_VPL8UgUv98,3689
64
- openai_sdk_helpers/utils/coercion.py,sha256=Pq1u7tAbD7kTZ84lK-7Fb9CyYKKKQt4fypG5BlSI6oQ,3774
65
- openai_sdk_helpers/utils/deprecation.py,sha256=VF0VDDegawYhsu5f-vE6dop9ob-jv8egxsm0KsPvP9E,4753
66
- openai_sdk_helpers/utils/encoding.py,sha256=oDtlNGZ5p-edXiHW76REs-0-8NXkQNReKJdj6sHLkt8,4615
67
- openai_sdk_helpers/utils/instructions.py,sha256=trbjxjxv2otQR9VmBsPFk1_CJj8nA85Sgtj_5QmQOKI,942
68
- openai_sdk_helpers/utils/json_utils.py,sha256=g8x497URz0bNYHgdcYM_3kNzj9QKsN5xionH1yh5nMk,7674
69
- openai_sdk_helpers/utils/output_validation.py,sha256=O9Adt-fxL5DtnMd1GuZ9E2YxX3yj4uzSZuBNKVH2GkI,12152
70
- openai_sdk_helpers/utils/path_utils.py,sha256=qGGDpuDnY5EODOACzH23MYECQOE2rKhrQ3sbDvefwEg,1307
71
- openai_sdk_helpers/utils/registry.py,sha256=qezdmsCRokrV9snXNyUG2rJ-jBG-UCCkp7-rRBE9LFY,5565
72
- openai_sdk_helpers/utils/validation.py,sha256=ZjnZNOy5AoFlszRxarNol6YZwfgw6LnwPtkCekZmwAU,7826
73
- openai_sdk_helpers/vector_storage/__init__.py,sha256=L5LxO09puh9_yBB9IDTvc1CvVkARVkHqYY1KX3inB4c,975
74
- openai_sdk_helpers/vector_storage/cleanup.py,sha256=ImWIE-9lli-odD8qIARvmeaa0y8ZD4pYYP-kT0O3178,3552
75
- openai_sdk_helpers/vector_storage/storage.py,sha256=1juu3Qq6hy33afvVfQeI5A35fQzIPjVZumZ-aP_MxhU,23305
76
- openai_sdk_helpers/vector_storage/types.py,sha256=jTCcOYMeOpZWvcse0z4T3MVs-RBOPC-fqWTBeQrgafU,1639
77
- openai_sdk_helpers-0.3.0.dist-info/METADATA,sha256=7KeZYCdLQTmtvQj0mZVWzimqkA0hNzU9RNnN_25z2CY,23557
78
- openai_sdk_helpers-0.3.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
79
- openai_sdk_helpers-0.3.0.dist-info/entry_points.txt,sha256=gEOD1ZeXe8d2OP-KzUlG-b_9D9yUZTCt-GFW3EDbIIY,63
80
- openai_sdk_helpers-0.3.0.dist-info/licenses/LICENSE,sha256=CUhc1NrE50bs45tcXF7OcTQBKEvkUuLqeOHgrWQ5jaA,1067
81
- openai_sdk_helpers-0.3.0.dist-info/RECORD,,