openai-sdk-helpers 0.5.2__tar.gz → 0.6.1__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.
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/PKG-INFO +12 -1
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/README.md +11 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/pyproject.toml +1 -1
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/__init__.py +2 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/base.py +13 -5
- openai_sdk_helpers-0.6.1/src/openai_sdk_helpers/agent/classifier.py +848 -0
- openai_sdk_helpers-0.6.1/src/openai_sdk_helpers/prompt/classifier.jinja +31 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/base.py +26 -7
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/settings.py +65 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/__init__.py +12 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/base.py +79 -55
- openai_sdk_helpers-0.6.1/src/openai_sdk_helpers/structure/classification.py +453 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/enum.py +4 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/.gitignore +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/LICENSE +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/configuration.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/coordinator.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/runner.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/search/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/search/base.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/search/vector.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/search/web.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/summarizer.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/translator.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/utils.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/validator.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/cli.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/enums/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/enums/base.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/environment.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/errors.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/extract/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/extract/extractor.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/extract/generator.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/files_api.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/logging.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/base.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/extractor_config_agent_instructions.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/extractor_config_generator.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/extractor_config_generator_instructions.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/extractor_prompt_optimizer_agent_instructions.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/extractor_prompt_optimizer_request.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/summarizer.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/translator.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/validator.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/vector_planner.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/vector_search.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/prompt/vector_writer.jinja +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/py.typed +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/configuration.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/files.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/messages.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/planner.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/prompter.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/runner.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/tool_call.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/response/vector_store.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/streamlit_app/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/streamlit_app/app.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/streamlit_app/configuration.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/agent_blueprint.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/extraction.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/helpers.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/plan.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/task.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/plan/types.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/prompt.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/responses.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/summary.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/translation.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/validation.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/vector_search.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/structure/web_search.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/tools.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/types.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/async_utils.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/coercion.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/encoding.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/instructions.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/json/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/json/base_model.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/json/data_class.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/json/ref.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/json/utils.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/langextract.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/output_validation.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/path_utils.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/registry.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/utils/validation.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/vector_storage/__init__.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/vector_storage/cleanup.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/vector_storage/storage.py +0 -0
- {openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/vector_storage/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-sdk-helpers
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: Composable helpers for OpenAI SDK agents, prompts, and storage
|
|
5
5
|
Author: openai-sdk-helpers maintainers
|
|
6
6
|
License: MIT
|
|
@@ -97,6 +97,7 @@ The `agent` module provides a higher-level abstraction for building agents, whil
|
|
|
97
97
|
- **SummarizerAgent**: Generate concise summaries from provided text
|
|
98
98
|
- **TranslatorAgent**: Translate text into target languages
|
|
99
99
|
- **ValidatorAgent**: Check inputs and outputs against safety guardrails
|
|
100
|
+
- **TaxonomyClassifierAgent**: Classify text into taxonomy-driven labels
|
|
100
101
|
|
|
101
102
|
#### Response Module (Built on `openai` SDK)
|
|
102
103
|
- **Response handling utilities** for direct API control with fine-grained message management
|
|
@@ -210,12 +211,18 @@ These use the `agent` module built on `openai-agents` SDK:
|
|
|
210
211
|
```python
|
|
211
212
|
from openai_sdk_helpers.agent import (
|
|
212
213
|
SummarizerAgent,
|
|
214
|
+
TaxonomyClassifierAgent,
|
|
213
215
|
TranslatorAgent,
|
|
214
216
|
ValidatorAgent,
|
|
215
217
|
)
|
|
218
|
+
from openai_sdk_helpers.structure import TaxonomyNode
|
|
216
219
|
|
|
217
220
|
# Initialize agents with a default model
|
|
218
221
|
summarizer = SummarizerAgent(default_model="gpt-4o-mini")
|
|
222
|
+
classifier = TaxonomyClassifierAgent(
|
|
223
|
+
model="gpt-4o-mini",
|
|
224
|
+
taxonomy=[TaxonomyNode(label="Billing"), TaxonomyNode(label="Support")],
|
|
225
|
+
)
|
|
219
226
|
translator = TranslatorAgent(default_model="gpt-4o-mini")
|
|
220
227
|
validator = ValidatorAgent(default_model="gpt-4o-mini")
|
|
221
228
|
|
|
@@ -227,6 +234,10 @@ print(summary.text)
|
|
|
227
234
|
translation = translator.run_sync("Bonjour", target_language="English")
|
|
228
235
|
print(translation)
|
|
229
236
|
|
|
237
|
+
# Classify text against a taxonomy
|
|
238
|
+
classification = classifier.run_sync("I need help with my invoice")
|
|
239
|
+
print(classification.final_node)
|
|
240
|
+
|
|
230
241
|
# Validate against guardrails
|
|
231
242
|
validation = validator.run_sync(
|
|
232
243
|
"Share meeting notes with names removed",
|
|
@@ -59,6 +59,7 @@ The `agent` module provides a higher-level abstraction for building agents, whil
|
|
|
59
59
|
- **SummarizerAgent**: Generate concise summaries from provided text
|
|
60
60
|
- **TranslatorAgent**: Translate text into target languages
|
|
61
61
|
- **ValidatorAgent**: Check inputs and outputs against safety guardrails
|
|
62
|
+
- **TaxonomyClassifierAgent**: Classify text into taxonomy-driven labels
|
|
62
63
|
|
|
63
64
|
#### Response Module (Built on `openai` SDK)
|
|
64
65
|
- **Response handling utilities** for direct API control with fine-grained message management
|
|
@@ -172,12 +173,18 @@ These use the `agent` module built on `openai-agents` SDK:
|
|
|
172
173
|
```python
|
|
173
174
|
from openai_sdk_helpers.agent import (
|
|
174
175
|
SummarizerAgent,
|
|
176
|
+
TaxonomyClassifierAgent,
|
|
175
177
|
TranslatorAgent,
|
|
176
178
|
ValidatorAgent,
|
|
177
179
|
)
|
|
180
|
+
from openai_sdk_helpers.structure import TaxonomyNode
|
|
178
181
|
|
|
179
182
|
# Initialize agents with a default model
|
|
180
183
|
summarizer = SummarizerAgent(default_model="gpt-4o-mini")
|
|
184
|
+
classifier = TaxonomyClassifierAgent(
|
|
185
|
+
model="gpt-4o-mini",
|
|
186
|
+
taxonomy=[TaxonomyNode(label="Billing"), TaxonomyNode(label="Support")],
|
|
187
|
+
)
|
|
181
188
|
translator = TranslatorAgent(default_model="gpt-4o-mini")
|
|
182
189
|
validator = ValidatorAgent(default_model="gpt-4o-mini")
|
|
183
190
|
|
|
@@ -189,6 +196,10 @@ print(summary.text)
|
|
|
189
196
|
translation = translator.run_sync("Bonjour", target_language="English")
|
|
190
197
|
print(translation)
|
|
191
198
|
|
|
199
|
+
# Classify text against a taxonomy
|
|
200
|
+
classification = classifier.run_sync("I need help with my invoice")
|
|
201
|
+
print(classification.final_node)
|
|
202
|
+
|
|
192
203
|
# Validate against guardrails
|
|
193
204
|
validation = validator.run_sync(
|
|
194
205
|
"Share meeting notes with names removed",
|
{openai_sdk_helpers-0.5.2 → openai_sdk_helpers-0.6.1}/src/openai_sdk_helpers/agent/__init__.py
RENAMED
|
@@ -7,6 +7,7 @@ from ..structure.plan.enum import AgentEnum
|
|
|
7
7
|
from .coordinator import CoordinatorAgent
|
|
8
8
|
from .runner import run_sync, run_async
|
|
9
9
|
from .search.base import SearchPlanner, SearchToolAgent, SearchWriter
|
|
10
|
+
from .classifier import TaxonomyClassifierAgent
|
|
10
11
|
from .summarizer import SummarizerAgent
|
|
11
12
|
from .translator import TranslatorAgent
|
|
12
13
|
from .validator import ValidatorAgent
|
|
@@ -27,6 +28,7 @@ __all__ = [
|
|
|
27
28
|
"SearchPlanner",
|
|
28
29
|
"SearchToolAgent",
|
|
29
30
|
"SearchWriter",
|
|
31
|
+
"TaxonomyClassifierAgent",
|
|
30
32
|
"SummarizerAgent",
|
|
31
33
|
"TranslatorAgent",
|
|
32
34
|
"ValidatorAgent",
|
|
@@ -429,9 +429,16 @@ class AgentBase(DataclassJSONSerializable):
|
|
|
429
429
|
"""
|
|
430
430
|
return self._session
|
|
431
431
|
|
|
432
|
-
def get_agent(
|
|
432
|
+
def get_agent(
|
|
433
|
+
self, output_structure: Optional[type[StructureBase]] = None
|
|
434
|
+
) -> Agent:
|
|
433
435
|
"""Construct and return the configured :class:`agents.Agent` instance.
|
|
434
436
|
|
|
437
|
+
Parameters
|
|
438
|
+
----------
|
|
439
|
+
output_structure : type[StructureBase] or None, default=None
|
|
440
|
+
Optional override for the agent output schema.
|
|
441
|
+
|
|
435
442
|
Returns
|
|
436
443
|
-------
|
|
437
444
|
Agent
|
|
@@ -442,8 +449,9 @@ class AgentBase(DataclassJSONSerializable):
|
|
|
442
449
|
"instructions": self._configuration.instructions_text or ".",
|
|
443
450
|
"model": self._model,
|
|
444
451
|
}
|
|
445
|
-
|
|
446
|
-
|
|
452
|
+
output_type = output_structure or self._configuration.output_structure
|
|
453
|
+
if output_type is not None:
|
|
454
|
+
agent_config["output_type"] = output_type
|
|
447
455
|
if self._configuration.tools:
|
|
448
456
|
agent_config["tools"] = self._configuration.tools
|
|
449
457
|
if self._model_settings:
|
|
@@ -490,7 +498,7 @@ class AgentBase(DataclassJSONSerializable):
|
|
|
490
498
|
session_to_use = session if session is not None else self._session
|
|
491
499
|
try:
|
|
492
500
|
return await run_async(
|
|
493
|
-
agent=self.get_agent(),
|
|
501
|
+
agent=self.get_agent(output_structure=output_structure),
|
|
494
502
|
input=input,
|
|
495
503
|
context=context,
|
|
496
504
|
output_structure=output_structure,
|
|
@@ -545,7 +553,7 @@ class AgentBase(DataclassJSONSerializable):
|
|
|
545
553
|
session_to_use = session if session is not None else self._session
|
|
546
554
|
try:
|
|
547
555
|
return run_sync(
|
|
548
|
-
agent=self.get_agent(),
|
|
556
|
+
agent=self.get_agent(output_structure=output_structure),
|
|
549
557
|
input=input,
|
|
550
558
|
context=context,
|
|
551
559
|
output_structure=output_structure,
|