openai-sdk-helpers 0.6.1__py3-none-any.whl → 0.6.4__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/agent/__init__.py +2 -0
- openai_sdk_helpers/agent/base.py +75 -7
- openai_sdk_helpers/agent/classifier.py +284 -102
- openai_sdk_helpers/agent/configuration.py +42 -0
- openai_sdk_helpers/agent/files.py +120 -0
- openai_sdk_helpers/agent/runner.py +9 -9
- openai_sdk_helpers/agent/translator.py +2 -2
- openai_sdk_helpers/files_api.py +46 -1
- openai_sdk_helpers/prompt/classifier.jinja +25 -10
- openai_sdk_helpers/structure/__init__.py +8 -2
- openai_sdk_helpers/structure/classification.py +240 -85
- {openai_sdk_helpers-0.6.1.dist-info → openai_sdk_helpers-0.6.4.dist-info}/METADATA +1 -1
- {openai_sdk_helpers-0.6.1.dist-info → openai_sdk_helpers-0.6.4.dist-info}/RECORD +16 -15
- {openai_sdk_helpers-0.6.1.dist-info → openai_sdk_helpers-0.6.4.dist-info}/WHEEL +0 -0
- {openai_sdk_helpers-0.6.1.dist-info → openai_sdk_helpers-0.6.4.dist-info}/entry_points.txt +0 -0
- {openai_sdk_helpers-0.6.1.dist-info → openai_sdk_helpers-0.6.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from enum import Enum
|
|
6
|
-
from typing import Any, Iterable, Optional, cast
|
|
6
|
+
from typing import Any, Iterable, Optional, Sequence, cast
|
|
7
|
+
|
|
8
|
+
PATH_DELIMITER = " > "
|
|
9
|
+
PATH_ESCAPE_TOKEN = "\\>"
|
|
7
10
|
|
|
8
11
|
from .base import StructureBase, spec_field
|
|
9
12
|
|
|
@@ -30,18 +33,26 @@ class TaxonomyNode(StructureBase):
|
|
|
30
33
|
Return True when the taxonomy node has no children.
|
|
31
34
|
child_by_path(path)
|
|
32
35
|
Return the child node matching the provided path.
|
|
36
|
+
path_identifier
|
|
37
|
+
Return the path identifier string for the node.
|
|
38
|
+
keywords
|
|
39
|
+
Return a list of keywords for the node.
|
|
40
|
+
computed_description
|
|
41
|
+
Return the computed description for the node.
|
|
42
|
+
flattened_nodes
|
|
43
|
+
Return a flattened list of all taxonomy nodes.
|
|
33
44
|
"""
|
|
34
45
|
|
|
35
46
|
label: str = spec_field(
|
|
36
|
-
"label", description="Human-readable label for the taxonomy node."
|
|
47
|
+
name="label", description="Human-readable label for the taxonomy node."
|
|
37
48
|
)
|
|
38
49
|
description: str | None = spec_field(
|
|
39
|
-
"description",
|
|
50
|
+
name="description",
|
|
40
51
|
description="Optional description of the taxonomy node.",
|
|
41
52
|
default=None,
|
|
42
53
|
)
|
|
43
54
|
children: list["TaxonomyNode"] = spec_field(
|
|
44
|
-
"children",
|
|
55
|
+
name="children",
|
|
45
56
|
description="Child nodes in the taxonomy.",
|
|
46
57
|
default_factory=list,
|
|
47
58
|
)
|
|
@@ -103,7 +114,7 @@ class TaxonomyNode(StructureBase):
|
|
|
103
114
|
if path is None:
|
|
104
115
|
return None
|
|
105
116
|
if isinstance(path, str):
|
|
106
|
-
path_segments =
|
|
117
|
+
path_segments = split_path_identifier(path)
|
|
107
118
|
else:
|
|
108
119
|
path_segments = list(path)
|
|
109
120
|
last_segment = path_segments[-1] if path_segments else None
|
|
@@ -114,8 +125,142 @@ class TaxonomyNode(StructureBase):
|
|
|
114
125
|
None,
|
|
115
126
|
)
|
|
116
127
|
|
|
128
|
+
@property
|
|
129
|
+
def path_identifier(self) -> str:
|
|
130
|
+
"""Return the path identifier string for this node.
|
|
131
|
+
|
|
132
|
+
Returns
|
|
133
|
+
-------
|
|
134
|
+
str
|
|
135
|
+
Delimited path identifier.
|
|
136
|
+
"""
|
|
137
|
+
return format_path_identifier(self.computed_path)
|
|
138
|
+
|
|
139
|
+
@property
|
|
140
|
+
def keywords(self) -> list[str]:
|
|
141
|
+
"""Return a list of keywords for this node.
|
|
142
|
+
|
|
143
|
+
Returns
|
|
144
|
+
-------
|
|
145
|
+
list[str]
|
|
146
|
+
Unique list of keywords derived from the node and descendants.
|
|
147
|
+
"""
|
|
148
|
+
keywords = [self.label]
|
|
149
|
+
for child in self.children:
|
|
150
|
+
keywords.extend(child.keywords)
|
|
151
|
+
return list(dict.fromkeys(filter(None, keywords)))
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def computed_description(self) -> str:
|
|
155
|
+
"""Return the computed description for this node.
|
|
156
|
+
|
|
157
|
+
Returns
|
|
158
|
+
-------
|
|
159
|
+
str
|
|
160
|
+
Node description with optional keyword context.
|
|
161
|
+
"""
|
|
162
|
+
keywords = self.keywords
|
|
163
|
+
base = self.description or self.label
|
|
164
|
+
if len(keywords) == 1 and keywords[0] == self.label:
|
|
165
|
+
return base
|
|
166
|
+
if keywords:
|
|
167
|
+
return f"{base}\nKeywords: {', '.join(keywords)}"
|
|
168
|
+
return base
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def flattened_nodes(self) -> list[TaxonomyNode]:
|
|
172
|
+
"""Return a flattened list of all taxonomy nodes.
|
|
173
|
+
|
|
174
|
+
Returns
|
|
175
|
+
-------
|
|
176
|
+
list[TaxonomyNode]
|
|
177
|
+
Depth-first list of taxonomy nodes.
|
|
178
|
+
"""
|
|
179
|
+
flattened: list[TaxonomyNode] = []
|
|
180
|
+
for node in self.children:
|
|
181
|
+
flattened.append(node)
|
|
182
|
+
flattened.extend(node.flattened_nodes)
|
|
183
|
+
return flattened
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class Taxonomy(TaxonomyNode):
|
|
187
|
+
"""Represent a taxonomy with metadata and root nodes.
|
|
188
|
+
|
|
189
|
+
Attributes
|
|
190
|
+
----------
|
|
191
|
+
label : str
|
|
192
|
+
Human-readable taxonomy name.
|
|
193
|
+
description : str | None
|
|
194
|
+
Optional description of the taxonomy.
|
|
195
|
+
children : list[TaxonomyNode]
|
|
196
|
+
Root taxonomy nodes.
|
|
197
|
+
|
|
198
|
+
Methods
|
|
199
|
+
-------
|
|
200
|
+
root(label, *children)
|
|
201
|
+
Create a taxonomy from root nodes.
|
|
202
|
+
build_path(parent_path)
|
|
203
|
+
Build a computed path using the provided parent path segments.
|
|
204
|
+
computed_path
|
|
205
|
+
Return the computed path for the node.
|
|
206
|
+
is_leaf
|
|
207
|
+
Return True when the taxonomy node has no children.
|
|
208
|
+
child_by_path(path)
|
|
209
|
+
Return the child node matching the provided path.
|
|
210
|
+
path_identifier
|
|
211
|
+
Return the path identifier string for the node.
|
|
212
|
+
keywords
|
|
213
|
+
Return a list of keywords for the node.
|
|
214
|
+
computed_description
|
|
215
|
+
Return the computed description for the node.
|
|
216
|
+
flattened_nodes
|
|
217
|
+
Return a flattened list of all taxonomy nodes.
|
|
218
|
+
"""
|
|
219
|
+
|
|
220
|
+
def __init__(
|
|
221
|
+
self,
|
|
222
|
+
*,
|
|
223
|
+
label: str,
|
|
224
|
+
description: str | None = None,
|
|
225
|
+
children: list[TaxonomyNode] | None = None,
|
|
226
|
+
) -> None:
|
|
227
|
+
"""Initialize a taxonomy with name and root nodes.
|
|
228
|
+
|
|
229
|
+
Parameters
|
|
230
|
+
----------
|
|
231
|
+
label : str
|
|
232
|
+
Human-readable taxonomy name.
|
|
233
|
+
description : str or None, default=None
|
|
234
|
+
Optional description of the taxonomy.
|
|
235
|
+
children : list[TaxonomyNode] or None, default=None
|
|
236
|
+
Root taxonomy nodes. Defaults to an empty list.
|
|
237
|
+
"""
|
|
238
|
+
super().__init__(
|
|
239
|
+
label=label,
|
|
240
|
+
description=description,
|
|
241
|
+
children=children or [],
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
@classmethod
|
|
245
|
+
def root(cls, label: str, *children: TaxonomyNode) -> "Taxonomy":
|
|
246
|
+
"""Create a taxonomy from root nodes.
|
|
247
|
+
|
|
248
|
+
Parameters
|
|
249
|
+
----------
|
|
250
|
+
label : str
|
|
251
|
+
Human-readable taxonomy name.
|
|
252
|
+
*children : TaxonomyNode
|
|
253
|
+
Root taxonomy nodes.
|
|
254
|
+
|
|
255
|
+
Returns
|
|
256
|
+
-------
|
|
257
|
+
Taxonomy
|
|
258
|
+
Taxonomy instance with provided root nodes.
|
|
259
|
+
"""
|
|
260
|
+
return cls(label=label, children=list(children))
|
|
261
|
+
|
|
117
262
|
|
|
118
|
-
def
|
|
263
|
+
def split_path_identifier(path: str) -> list[str]:
|
|
119
264
|
"""Split a path identifier into label segments.
|
|
120
265
|
|
|
121
266
|
Parameters
|
|
@@ -128,10 +273,27 @@ def _split_path_identifier(path: str) -> list[str]:
|
|
|
128
273
|
list[str]
|
|
129
274
|
Label segments extracted from the path identifier.
|
|
130
275
|
"""
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
276
|
+
segments = path.split(PATH_DELIMITER) if path else []
|
|
277
|
+
return [segment.replace(PATH_ESCAPE_TOKEN, PATH_DELIMITER) for segment in segments]
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def format_path_identifier(path_segments: Sequence[str]) -> str:
|
|
281
|
+
"""Format path segments into a safe identifier string.
|
|
282
|
+
|
|
283
|
+
Parameters
|
|
284
|
+
----------
|
|
285
|
+
path_segments : Sequence[str]
|
|
286
|
+
Path segments to format.
|
|
287
|
+
|
|
288
|
+
Returns
|
|
289
|
+
-------
|
|
290
|
+
str
|
|
291
|
+
Escaped path identifier string.
|
|
292
|
+
"""
|
|
293
|
+
escaped_segments = [
|
|
294
|
+
segment.replace(PATH_DELIMITER, PATH_ESCAPE_TOKEN) for segment in path_segments
|
|
295
|
+
]
|
|
296
|
+
return PATH_DELIMITER.join(escaped_segments)
|
|
135
297
|
|
|
136
298
|
|
|
137
299
|
class ClassificationStopReason(str, Enum):
|
|
@@ -171,8 +333,6 @@ class ClassificationStep(StructureBase):
|
|
|
171
333
|
|
|
172
334
|
Attributes
|
|
173
335
|
----------
|
|
174
|
-
selected_node : Enum or None
|
|
175
|
-
Enum value of the selected taxonomy node.
|
|
176
336
|
selected_nodes : list[Enum] or None
|
|
177
337
|
Enum values of selected taxonomy nodes for multi-class classification.
|
|
178
338
|
confidence : float or None
|
|
@@ -204,11 +364,6 @@ class ClassificationStep(StructureBase):
|
|
|
204
364
|
[<NodeEnum.BILLING: 'billing'>]
|
|
205
365
|
"""
|
|
206
366
|
|
|
207
|
-
selected_node: Enum | None = spec_field(
|
|
208
|
-
"selected_node",
|
|
209
|
-
description="Path identifier of the selected taxonomy node.",
|
|
210
|
-
default=None,
|
|
211
|
-
)
|
|
212
367
|
selected_nodes: list[Enum] | None = spec_field(
|
|
213
368
|
"selected_nodes",
|
|
214
369
|
description="Path identifiers of selected taxonomy nodes.",
|
|
@@ -247,14 +402,8 @@ class ClassificationStep(StructureBase):
|
|
|
247
402
|
"""
|
|
248
403
|
namespace: dict[str, Any] = {
|
|
249
404
|
"__annotations__": {
|
|
250
|
-
"selected_node": enum_cls | None,
|
|
251
405
|
"selected_nodes": list[enum_cls] | None,
|
|
252
406
|
},
|
|
253
|
-
"selected_node": spec_field(
|
|
254
|
-
"selected_node",
|
|
255
|
-
description="Path identifier of the selected taxonomy node.",
|
|
256
|
-
default=None,
|
|
257
|
-
),
|
|
258
407
|
"selected_nodes": spec_field(
|
|
259
408
|
"selected_nodes",
|
|
260
409
|
description="Path identifiers of selected taxonomy nodes.",
|
|
@@ -275,16 +424,14 @@ class ClassificationStep(StructureBase):
|
|
|
275
424
|
--------
|
|
276
425
|
>>> NodeEnum = Enum("NodeEnum", {"ROOT": "root"})
|
|
277
426
|
>>> StepEnum = ClassificationStep.build_for_enum(NodeEnum)
|
|
278
|
-
>>> step = StepEnum(
|
|
279
|
-
>>> step.as_summary()["
|
|
280
|
-
<NodeEnum.ROOT: 'root'>
|
|
427
|
+
>>> step = StepEnum(selected_nodes=[NodeEnum.ROOT])
|
|
428
|
+
>>> step.as_summary()["selected_nodes"]
|
|
429
|
+
[<NodeEnum.ROOT: 'root'>]
|
|
281
430
|
"""
|
|
282
|
-
selected_node = _normalize_enum_value(self.selected_node)
|
|
283
431
|
selected_nodes = [
|
|
284
432
|
_normalize_enum_value(item) for item in self.selected_nodes or []
|
|
285
433
|
]
|
|
286
434
|
return {
|
|
287
|
-
"selected_node": selected_node,
|
|
288
435
|
"selected_nodes": selected_nodes or None,
|
|
289
436
|
"confidence": self.confidence,
|
|
290
437
|
"stop_reason": self.stop_reason.value,
|
|
@@ -314,25 +461,25 @@ class ClassificationResult(StructureBase):
|
|
|
314
461
|
|
|
315
462
|
Attributes
|
|
316
463
|
----------
|
|
317
|
-
final_node : TaxonomyNode or None
|
|
318
|
-
Resolved taxonomy node for the final selection.
|
|
319
464
|
final_nodes : list[TaxonomyNode] or None
|
|
320
465
|
Resolved taxonomy nodes for the final selections across branches.
|
|
321
466
|
confidence : float or None
|
|
322
467
|
Confidence score for the final selection.
|
|
323
468
|
stop_reason : ClassificationStopReason
|
|
324
469
|
Reason the traversal ended.
|
|
325
|
-
|
|
470
|
+
steps : list[ClassificationStep]
|
|
326
471
|
Ordered list of classification steps.
|
|
327
|
-
path_nodes : list[TaxonomyNode]
|
|
328
|
-
Resolved taxonomy nodes selected across the path.
|
|
329
472
|
|
|
330
473
|
Methods
|
|
331
474
|
-------
|
|
332
475
|
depth
|
|
333
476
|
Return the number of classification steps recorded.
|
|
334
|
-
|
|
335
|
-
Return the
|
|
477
|
+
final_node
|
|
478
|
+
Return the first resolved taxonomy node, if available.
|
|
479
|
+
iter_selected_nodes
|
|
480
|
+
Yield selected identifiers across all steps.
|
|
481
|
+
selected_nodes
|
|
482
|
+
Return the selected identifiers across all steps.
|
|
336
483
|
|
|
337
484
|
Examples
|
|
338
485
|
--------
|
|
@@ -340,7 +487,6 @@ class ClassificationResult(StructureBase):
|
|
|
340
487
|
|
|
341
488
|
>>> node = TaxonomyNode(label="Tax")
|
|
342
489
|
>>> result = ClassificationResult(
|
|
343
|
-
... final_node=node,
|
|
344
490
|
... final_nodes=[node],
|
|
345
491
|
... confidence=0.91,
|
|
346
492
|
... stop_reason=ClassificationStopReason.STOP,
|
|
@@ -349,11 +495,6 @@ class ClassificationResult(StructureBase):
|
|
|
349
495
|
[TaxonomyNode(label='Tax', description=None, children=[])]
|
|
350
496
|
"""
|
|
351
497
|
|
|
352
|
-
final_node: TaxonomyNode | None = spec_field(
|
|
353
|
-
"final_node",
|
|
354
|
-
description="Resolved taxonomy node for the final selection.",
|
|
355
|
-
default=None,
|
|
356
|
-
)
|
|
357
498
|
final_nodes: list[TaxonomyNode] | None = spec_field(
|
|
358
499
|
"final_nodes",
|
|
359
500
|
description="Resolved taxonomy nodes for the final selections.",
|
|
@@ -369,16 +510,11 @@ class ClassificationResult(StructureBase):
|
|
|
369
510
|
description="Reason the traversal ended.",
|
|
370
511
|
default=ClassificationStopReason.STOP,
|
|
371
512
|
)
|
|
372
|
-
|
|
373
|
-
"
|
|
513
|
+
steps: list[ClassificationStep] = spec_field(
|
|
514
|
+
"steps",
|
|
374
515
|
description="Ordered list of classification steps.",
|
|
375
516
|
default_factory=list,
|
|
376
517
|
)
|
|
377
|
-
path_nodes: list[TaxonomyNode] = spec_field(
|
|
378
|
-
"path_nodes",
|
|
379
|
-
description="Resolved taxonomy nodes selected across the path.",
|
|
380
|
-
default_factory=list,
|
|
381
|
-
)
|
|
382
518
|
|
|
383
519
|
@property
|
|
384
520
|
def depth(self) -> int:
|
|
@@ -389,65 +525,84 @@ class ClassificationResult(StructureBase):
|
|
|
389
525
|
int
|
|
390
526
|
Count of classification steps.
|
|
391
527
|
"""
|
|
392
|
-
return len(self.
|
|
528
|
+
return len(self.steps)
|
|
393
529
|
|
|
394
530
|
@property
|
|
395
|
-
def
|
|
396
|
-
"""Return the
|
|
531
|
+
def final_node(self) -> TaxonomyNode | None:
|
|
532
|
+
"""Return the first resolved taxonomy node.
|
|
533
|
+
|
|
534
|
+
Returns
|
|
535
|
+
-------
|
|
536
|
+
TaxonomyNode or None
|
|
537
|
+
First resolved taxonomy node, if available.
|
|
538
|
+
"""
|
|
539
|
+
if not self.final_nodes:
|
|
540
|
+
return None
|
|
541
|
+
return self.final_nodes[0]
|
|
542
|
+
|
|
543
|
+
@property
|
|
544
|
+
def selected_nodes(self) -> list[str]:
|
|
545
|
+
"""Return the selected identifiers across all steps.
|
|
397
546
|
|
|
398
547
|
Returns
|
|
399
548
|
-------
|
|
400
549
|
list[str]
|
|
401
|
-
|
|
550
|
+
Selected identifiers in traversal order.
|
|
551
|
+
"""
|
|
552
|
+
return list(self.iter_selected_nodes())
|
|
402
553
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
... stop_reason=ClassificationStopReason.STOP,
|
|
411
|
-
... path=steps,
|
|
412
|
-
... ).path_identifiers
|
|
413
|
-
['Root', 'Root > Leaf', 'Root > Branch']
|
|
554
|
+
def iter_selected_nodes(self) -> Iterable[str]:
|
|
555
|
+
"""Yield selected identifiers across all steps.
|
|
556
|
+
|
|
557
|
+
Yields
|
|
558
|
+
------
|
|
559
|
+
str
|
|
560
|
+
Selected identifier in traversal order.
|
|
414
561
|
"""
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
)
|
|
421
|
-
elif step.selected_node:
|
|
422
|
-
identifiers.append(_normalize_enum_value(step.selected_node))
|
|
423
|
-
return [identifier for identifier in identifiers if identifier]
|
|
562
|
+
for step in self.steps:
|
|
563
|
+
for value in step.selected_nodes or []:
|
|
564
|
+
normalized = _normalize_enum_value(value)
|
|
565
|
+
if normalized:
|
|
566
|
+
yield normalized
|
|
424
567
|
|
|
425
568
|
|
|
426
|
-
def
|
|
427
|
-
"""Return
|
|
569
|
+
def taxonomy_enum_path(value: Enum | str | None) -> list[str]:
|
|
570
|
+
"""Return the taxonomy path segments for an enum value.
|
|
428
571
|
|
|
429
572
|
Parameters
|
|
430
573
|
----------
|
|
431
|
-
|
|
432
|
-
|
|
574
|
+
value : Enum or str or None
|
|
575
|
+
Enum member or path identifier string to split. If None, return an
|
|
576
|
+
empty list.
|
|
433
577
|
|
|
434
578
|
Returns
|
|
435
579
|
-------
|
|
436
|
-
list[
|
|
437
|
-
|
|
580
|
+
list[str]
|
|
581
|
+
Path segments extracted from the taxonomy identifier.
|
|
582
|
+
|
|
583
|
+
Examples
|
|
584
|
+
--------
|
|
585
|
+
>>> StepEnum = Enum("StepEnum", {"ROOT_LEAF": "Root > Leaf"})
|
|
586
|
+
>>> taxonomy_enum_path(StepEnum.ROOT_LEAF)
|
|
587
|
+
['Root', 'Leaf']
|
|
438
588
|
"""
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
589
|
+
if value is None:
|
|
590
|
+
return []
|
|
591
|
+
normalized_value = _normalize_enum_value(value)
|
|
592
|
+
if not normalized_value:
|
|
593
|
+
return []
|
|
594
|
+
if not isinstance(normalized_value, str):
|
|
595
|
+
normalized_value = str(normalized_value)
|
|
596
|
+
return split_path_identifier(normalized_value)
|
|
445
597
|
|
|
446
598
|
|
|
447
599
|
__all__ = [
|
|
448
600
|
"ClassificationResult",
|
|
449
601
|
"ClassificationStep",
|
|
450
602
|
"ClassificationStopReason",
|
|
603
|
+
"Taxonomy",
|
|
451
604
|
"TaxonomyNode",
|
|
452
|
-
"
|
|
605
|
+
"format_path_identifier",
|
|
606
|
+
"split_path_identifier",
|
|
607
|
+
"taxonomy_enum_path",
|
|
453
608
|
]
|
|
@@ -2,20 +2,21 @@ openai_sdk_helpers/__init__.py,sha256=8I469KuzrbAjhNX2A5UnYt_kSmjXqQbfHectTeUx7T
|
|
|
2
2
|
openai_sdk_helpers/cli.py,sha256=BDc08NqWVfL4GBekxMfN5IPPB4pmN1Od9sVpKtIJRZk,8025
|
|
3
3
|
openai_sdk_helpers/environment.py,sha256=mNoswzIdv37tTRhFwA2B6_Onxsm7vhfjPArfwhYuL7g,1825
|
|
4
4
|
openai_sdk_helpers/errors.py,sha256=ZclLp94o08fSsFNjFn_yrX9yTjw1RE0v7A5T1hBChUc,2925
|
|
5
|
-
openai_sdk_helpers/files_api.py,sha256=
|
|
5
|
+
openai_sdk_helpers/files_api.py,sha256=kn-A2pwiNkxMd035PkWDLi_EWzccuEnGyMpLQcY-aVY,14086
|
|
6
6
|
openai_sdk_helpers/logging.py,sha256=djtMo_R_88JjxJeUGU_hSlYCTRv3ffoSu1ocOKrUBIw,1153
|
|
7
7
|
openai_sdk_helpers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
openai_sdk_helpers/settings.py,sha256=9qTdEIWuvQfQEQI8MU6STUDvbOk-I9FdmAEDjb2Zwx8,13316
|
|
9
9
|
openai_sdk_helpers/tools.py,sha256=8hhcytpmDfoXV16UQbDmDVV0rhLOn8c_VjXO8XaTFLQ,19000
|
|
10
10
|
openai_sdk_helpers/types.py,sha256=ejCG0rYqJhjOQvKLoNnzq-TzcKCFt69GVfi7y805NkU,1451
|
|
11
|
-
openai_sdk_helpers/agent/__init__.py,sha256=
|
|
12
|
-
openai_sdk_helpers/agent/base.py,sha256=
|
|
13
|
-
openai_sdk_helpers/agent/classifier.py,sha256=
|
|
14
|
-
openai_sdk_helpers/agent/configuration.py,sha256=
|
|
11
|
+
openai_sdk_helpers/agent/__init__.py,sha256=qyzKzPhD8KsEl6d79XERK32AK5It_BZNOqChOpBdmhg,1199
|
|
12
|
+
openai_sdk_helpers/agent/base.py,sha256=vLs0oALhxsd_Xy5dGjSZTUFTug-YwZkF1LabQ2ruLxk,29508
|
|
13
|
+
openai_sdk_helpers/agent/classifier.py,sha256=PHUnA5dSDWBQeRxwo0Qe8xIe7Ren3xSRAOmsQrRK_oA,33241
|
|
14
|
+
openai_sdk_helpers/agent/configuration.py,sha256=ZeH4ErgVe-BZamjUeNONbQi60ViolgYAWh-c8hNAQTw,15810
|
|
15
15
|
openai_sdk_helpers/agent/coordinator.py,sha256=lVjA0yI-GhGKlqbNR_k9GOCrUjFoZ0QoqRaafHckyME,18052
|
|
16
|
-
openai_sdk_helpers/agent/
|
|
16
|
+
openai_sdk_helpers/agent/files.py,sha256=H7UfSZSjFUbv1cjRvNld9kZwIjc5wPq4vynqU8HgGJE,4478
|
|
17
|
+
openai_sdk_helpers/agent/runner.py,sha256=uNf8FiLIlZsbSvE-CopYhv5sPAyxU2te0OaBBxO9RWY,3613
|
|
17
18
|
openai_sdk_helpers/agent/summarizer.py,sha256=-yVm-KdTvGRXGj1MlEikTAFYVlPoovLNIL3Tc_WYIzs,3653
|
|
18
|
-
openai_sdk_helpers/agent/translator.py,sha256=
|
|
19
|
+
openai_sdk_helpers/agent/translator.py,sha256=Skke5wyZTpo_9gMcwHRyoBQl00zTBeXnIUujUIr2ZDE,6017
|
|
19
20
|
openai_sdk_helpers/agent/utils.py,sha256=DTD5foCqGYfXf13F2bZMYIQROl7SbDSy5GDPGi0Zl-0,1089
|
|
20
21
|
openai_sdk_helpers/agent/validator.py,sha256=krktzjaHhEprn76F7hD4cH6H2CwucmFN1KWJ_vjl01g,4774
|
|
21
22
|
openai_sdk_helpers/agent/search/__init__.py,sha256=LXXzEcX2MU7_htHRdRCGPw0hsr9CrZn0ESii7GZJMBw,806
|
|
@@ -29,7 +30,7 @@ openai_sdk_helpers/extract/extractor.py,sha256=vmRJyhKDEYAVfRk0KMgLH5hTqUfDAUyWB
|
|
|
29
30
|
openai_sdk_helpers/extract/generator.py,sha256=K9Euq0IaWs82oe5aRm73_18DelLKYyuH8VhfZ1_ZCEU,14695
|
|
30
31
|
openai_sdk_helpers/prompt/__init__.py,sha256=MOqgKwG9KLqKudoKRlUfLxiSmdOi2aD6hNrWDFqLHkk,418
|
|
31
32
|
openai_sdk_helpers/prompt/base.py,sha256=6X0zeopEvO0ba8207O8Nnj1QvFZEZier7kNNh4qkcmE,7782
|
|
32
|
-
openai_sdk_helpers/prompt/classifier.jinja,sha256=
|
|
33
|
+
openai_sdk_helpers/prompt/classifier.jinja,sha256=u4gTwImOdKHu9qRdnnhl2aX23ns2THYYh6l8bc2EeNo,1866
|
|
33
34
|
openai_sdk_helpers/prompt/extractor_config_agent_instructions.jinja,sha256=vCrsoUnsgHWSr7OS_ojMUjmPtHfbyv9bzKfaMaCJ99E,329
|
|
34
35
|
openai_sdk_helpers/prompt/extractor_config_generator.jinja,sha256=9rZ1PZdoQtnxDxFUlKRb0SooIEfNw4_Em99n9xvFyyU,960
|
|
35
36
|
openai_sdk_helpers/prompt/extractor_config_generator_instructions.jinja,sha256=GqV3DrGObyER_Fa-GMGGqhWBrQIH9FFlyKdgTjidyzg,534
|
|
@@ -54,10 +55,10 @@ openai_sdk_helpers/response/vector_store.py,sha256=HClp6O_g20uklQTY7trC4age3rtDm
|
|
|
54
55
|
openai_sdk_helpers/streamlit_app/__init__.py,sha256=3yAkl6qV71cqtT5YFZuC9Bkqit0NtffDV6jmMWpT1k4,812
|
|
55
56
|
openai_sdk_helpers/streamlit_app/app.py,sha256=kkjtdCKVwrJ9nZWuBArm3dhvcjMESX0TMqAiF61_JLM,17402
|
|
56
57
|
openai_sdk_helpers/streamlit_app/configuration.py,sha256=0KeJ4HqCNFthBHsedV6ptqHluAcTPBb5_TujFOGkIUU,16685
|
|
57
|
-
openai_sdk_helpers/structure/__init__.py,sha256
|
|
58
|
+
openai_sdk_helpers/structure/__init__.py,sha256=w27ezTYVLzZdDMFfA8mawE82h8zO53idFBCiCfYfh7s,4321
|
|
58
59
|
openai_sdk_helpers/structure/agent_blueprint.py,sha256=VyJWkgPNzAYKRDMeR1M4kE6qqQURnwqtrrEn0TRJf0g,9698
|
|
59
60
|
openai_sdk_helpers/structure/base.py,sha256=UrnNNU9qQ9mEES8MB9y6QESbDgPXH47XW8LVWSxYUYM,25280
|
|
60
|
-
openai_sdk_helpers/structure/classification.py,sha256=
|
|
61
|
+
openai_sdk_helpers/structure/classification.py,sha256=SYrrsv0Y2A2kXhL3jbn7lWnTb5jB_UE-cx-sJSRCxEA,17312
|
|
61
62
|
openai_sdk_helpers/structure/extraction.py,sha256=wODP0iLAhhsdQkMWRYPYTiLUMU8bFMKiBjPl3PKUleg,37335
|
|
62
63
|
openai_sdk_helpers/structure/prompt.py,sha256=ZfsaHdA0hj5zmZDrOdpXjCsC8U-jjzwFG4JBsWYiaH4,1535
|
|
63
64
|
openai_sdk_helpers/structure/responses.py,sha256=WUwh0DhXj24pkvgqH1FMkdx5V2ArdvdtrDN_fuMBtDU,4882
|
|
@@ -91,8 +92,8 @@ openai_sdk_helpers/vector_storage/__init__.py,sha256=L5LxO09puh9_yBB9IDTvc1CvVkA
|
|
|
91
92
|
openai_sdk_helpers/vector_storage/cleanup.py,sha256=sZ4ZSTlnjF52o9Cc8A9dTX37ZYXXDxS_fdIpoOBWvrg,3666
|
|
92
93
|
openai_sdk_helpers/vector_storage/storage.py,sha256=t_ukacaXRa9EXE4-3BxsrB4Rjhu6nTu7NA9IjCJBIpQ,24259
|
|
93
94
|
openai_sdk_helpers/vector_storage/types.py,sha256=jTCcOYMeOpZWvcse0z4T3MVs-RBOPC-fqWTBeQrgafU,1639
|
|
94
|
-
openai_sdk_helpers-0.6.
|
|
95
|
-
openai_sdk_helpers-0.6.
|
|
96
|
-
openai_sdk_helpers-0.6.
|
|
97
|
-
openai_sdk_helpers-0.6.
|
|
98
|
-
openai_sdk_helpers-0.6.
|
|
95
|
+
openai_sdk_helpers-0.6.4.dist-info/METADATA,sha256=l5XBsVFPOrOSDskGR0ZhgKHjJFLtO_-ZgWrRjXi1_bU,24622
|
|
96
|
+
openai_sdk_helpers-0.6.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
97
|
+
openai_sdk_helpers-0.6.4.dist-info/entry_points.txt,sha256=gEOD1ZeXe8d2OP-KzUlG-b_9D9yUZTCt-GFW3EDbIIY,63
|
|
98
|
+
openai_sdk_helpers-0.6.4.dist-info/licenses/LICENSE,sha256=CUhc1NrE50bs45tcXF7OcTQBKEvkUuLqeOHgrWQ5jaA,1067
|
|
99
|
+
openai_sdk_helpers-0.6.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|