hamtaa-texttools 1.1.17__py3-none-any.whl → 1.1.18__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.
@@ -4,19 +4,20 @@ from collections.abc import Callable
4
4
 
5
5
  from openai import OpenAI
6
6
 
7
- from texttools.tools.internals.sync_operator import Operator
8
- import texttools.tools.internals.models as Models
7
+ from texttools.internals.sync_operator import Operator
8
+ import texttools.internals.models as Models
9
+ from texttools.internals.exceptions import (
10
+ TextToolsError,
11
+ PromptError,
12
+ LLMError,
13
+ ValidationError,
14
+ )
9
15
 
10
16
 
11
17
  class TheTool:
12
18
  """
13
19
  Each method configures the operator with a specific YAML prompt,
14
20
  output schema, and flags, then delegates execution to `operator.run()`.
15
-
16
- Usage:
17
- client = OpenAI(...)
18
- tool = TheTool(client, model="model-name")
19
- result = tool.categorize("text ...", with_analysis=True)
20
21
  """
21
22
 
22
23
  def __init__(
@@ -66,41 +67,97 @@ class TheTool:
66
67
  - errors (list(str) | None): Errors occured during tool call
67
68
 
68
69
  """
69
- start = datetime.now()
70
-
71
- if mode == "category_tree":
72
- # Initializations
73
- output = Models.ToolOutput()
74
- levels = categories.get_level_count()
75
- parent_id = 0
76
- final_output = []
77
-
78
- for _ in range(levels):
79
- # Get child nodes for current parent
80
- parent_node = categories.get_node(parent_id)
81
- children = categories.get_children(parent_node)
82
-
83
- # Check if child nodes exist
84
- if not children:
85
- output.errors.append(
86
- f"No categories found for parent_id {parent_id} in the tree"
70
+ output = Models.ToolOutput()
71
+
72
+ try:
73
+ start = datetime.now()
74
+
75
+ if mode == "category_tree":
76
+ # Initializations
77
+ output = Models.ToolOutput()
78
+ levels = categories.get_level_count()
79
+ parent_id = 0
80
+ final_output = []
81
+
82
+ for _ in range(levels):
83
+ # Get child nodes for current parent
84
+ parent_node = categories.get_node(parent_id)
85
+ children = categories.get_children(parent_node)
86
+
87
+ # Check if child nodes exist
88
+ if not children:
89
+ output.errors.append(
90
+ f"No categories found for parent_id {parent_id} in the tree"
91
+ )
92
+ end = datetime.now()
93
+ output.execution_time = (end - start).total_seconds()
94
+ return output
95
+
96
+ # Extract category names and descriptions
97
+ category_list = [
98
+ f"Category Name: {node.name}, Description: {node.description}"
99
+ for node in children
100
+ ]
101
+ category_names = [node.name for node in children]
102
+
103
+ # Run categorization for this level
104
+ level_output = self._operator.run(
105
+ # User parameters
106
+ text=text,
107
+ category_list=category_list,
108
+ with_analysis=with_analysis,
109
+ user_prompt=user_prompt,
110
+ temperature=temperature,
111
+ logprobs=logprobs,
112
+ top_logprobs=top_logprobs,
113
+ mode=mode,
114
+ validator=validator,
115
+ max_validation_retries=max_validation_retries,
116
+ priority=priority,
117
+ # Internal parameters
118
+ prompt_file="categorize.yaml",
119
+ output_model=Models.create_dynamic_model(category_names),
120
+ output_lang=None,
87
121
  )
88
- end = datetime.now()
89
- output.execution_time = (end - start).total_seconds()
90
- return output
91
-
92
- # Extract category names and descriptions
93
- category_list = [
94
- f"Category Name: {node.name}, Description: {node.description}"
95
- for node in children
96
- ]
97
- category_names = [node.name for node in children]
98
-
99
- # Run categorization for this level
100
- level_output = self._operator.run(
122
+
123
+ # Check for errors from operator
124
+ if level_output.errors:
125
+ output.errors.extend(level_output.errors)
126
+ end = datetime.now()
127
+ output.execution_time = (end - start).total_seconds()
128
+ return output
129
+
130
+ # Get the chosen category
131
+ chosen_category = level_output.result
132
+
133
+ # Find the corresponding node
134
+ parent_node = categories.get_node(chosen_category)
135
+ if parent_node is None:
136
+ output.errors.append(
137
+ f"Category '{chosen_category}' not found in tree after selection"
138
+ )
139
+ end = datetime.now()
140
+ output.execution_time = (end - start).total_seconds()
141
+ return output
142
+
143
+ parent_id = parent_node.node_id
144
+ final_output.append(parent_node.name)
145
+
146
+ # Copy analysis/logprobs/process from the last level's output
147
+ output.analysis = level_output.analysis
148
+ output.logprobs = level_output.logprobs
149
+ output.process = level_output.process
150
+
151
+ output.result = final_output
152
+ end = datetime.now()
153
+ output.execution_time = (end - start).total_seconds()
154
+ return output
155
+
156
+ else:
157
+ output = self._operator.run(
101
158
  # User parameters
102
159
  text=text,
103
- category_list=category_list,
160
+ category_list=categories,
104
161
  with_analysis=with_analysis,
105
162
  user_prompt=user_prompt,
106
163
  temperature=temperature,
@@ -112,65 +169,25 @@ class TheTool:
112
169
  priority=priority,
113
170
  # Internal parameters
114
171
  prompt_file="categorize.yaml",
115
- output_model=Models.create_dynamic_model(category_names),
172
+ output_model=Models.create_dynamic_model(categories),
116
173
  output_lang=None,
117
174
  )
175
+ end = datetime.now()
176
+ output.execution_time = (end - start).total_seconds()
177
+ return output
118
178
 
119
- # Check for errors from operator
120
- if level_output.errors:
121
- output.errors.extend(level_output.errors)
122
- end = datetime.now()
123
- output.execution_time = (end - start).total_seconds()
124
- return output
125
-
126
- # Get the chosen category
127
- chosen_category = level_output.result
128
-
129
- # Find the corresponding node
130
- parent_node = categories.get_node(chosen_category)
131
- if parent_node is None:
132
- output.errors.append(
133
- f"Category '{chosen_category}' not found in tree after selection"
134
- )
135
- end = datetime.now()
136
- output.execution_time = (end - start).total_seconds()
137
- return output
138
-
139
- parent_id = parent_node.node_id
140
- final_output.append(parent_node.name)
141
-
142
- # Copy analysis/logprobs/process from the last level's output
143
- output.analysis = level_output.analysis
144
- output.logprobs = level_output.logprobs
145
- output.process = level_output.process
179
+ except PromptError as e:
180
+ output.errors.append(f"Prompt error: {e}")
181
+ except LLMError as e:
182
+ output.errors.append(f"LLM error: {e}")
183
+ except ValidationError as e:
184
+ output.errors.append(f"Validation error: {e}")
185
+ except TextToolsError as e:
186
+ output.errors.append(f"TextTools error: {e}")
187
+ except Exception as e:
188
+ output.errors.append(f"Unexpected error: {e}")
146
189
 
147
- output.result = final_output
148
- end = datetime.now()
149
- output.execution_time = (end - start).total_seconds()
150
- return output
151
-
152
- else:
153
- output = self._operator.run(
154
- # User parameters
155
- text=text,
156
- category_list=categories,
157
- with_analysis=with_analysis,
158
- user_prompt=user_prompt,
159
- temperature=temperature,
160
- logprobs=logprobs,
161
- top_logprobs=top_logprobs,
162
- mode=mode,
163
- validator=validator,
164
- max_validation_retries=max_validation_retries,
165
- priority=priority,
166
- # Internal parameters
167
- prompt_file="categorize.yaml",
168
- output_model=Models.create_dynamic_model(categories),
169
- output_lang=None,
170
- )
171
- end = datetime.now()
172
- output.execution_time = (end - start).total_seconds()
173
- return output
190
+ return output
174
191
 
175
192
  def extract_keywords(
176
193
  self,
@@ -212,27 +229,43 @@ class TheTool:
212
229
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
213
230
  - errors (list(str) | None): Errors occured during tool call
214
231
  """
215
- start = datetime.now()
216
- output = self._operator.run(
217
- # User parameters
218
- text=text,
219
- with_analysis=with_analysis,
220
- output_lang=output_lang,
221
- user_prompt=user_prompt,
222
- temperature=temperature,
223
- logprobs=logprobs,
224
- top_logprobs=top_logprobs,
225
- mode=mode,
226
- number_of_keywords=number_of_keywords,
227
- validator=validator,
228
- max_validation_retries=max_validation_retries,
229
- priority=priority,
230
- # Internal parameters
231
- prompt_file="extract_keywords.yaml",
232
- output_model=Models.ListStrOutput,
233
- )
234
- end = datetime.now()
235
- output.execution_time = (end - start).total_seconds()
232
+ output = Models.ToolOutput()
233
+
234
+ try:
235
+ start = datetime.now()
236
+ output = self._operator.run(
237
+ # User parameters
238
+ text=text,
239
+ with_analysis=with_analysis,
240
+ output_lang=output_lang,
241
+ user_prompt=user_prompt,
242
+ temperature=temperature,
243
+ logprobs=logprobs,
244
+ top_logprobs=top_logprobs,
245
+ mode=mode,
246
+ number_of_keywords=number_of_keywords,
247
+ validator=validator,
248
+ max_validation_retries=max_validation_retries,
249
+ priority=priority,
250
+ # Internal parameters
251
+ prompt_file="extract_keywords.yaml",
252
+ output_model=Models.ListStrOutput,
253
+ )
254
+ end = datetime.now()
255
+ output.execution_time = (end - start).total_seconds()
256
+ return output
257
+
258
+ except PromptError as e:
259
+ output.errors.append(f"Prompt error: {e}")
260
+ except LLMError as e:
261
+ output.errors.append(f"LLM error: {e}")
262
+ except ValidationError as e:
263
+ output.errors.append(f"Validation error: {e}")
264
+ except TextToolsError as e:
265
+ output.errors.append(f"TextTools error: {e}")
266
+ except Exception as e:
267
+ output.errors.append(f"Unexpected error: {e}")
268
+
236
269
  return output
237
270
 
238
271
  def extract_entities(
@@ -273,26 +306,42 @@ class TheTool:
273
306
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
274
307
  - errors (list(str) | None): Errors occured during tool call
275
308
  """
276
- start = datetime.now()
277
- output = self._operator.run(
278
- # User parameters
279
- text=text,
280
- with_analysis=with_analysis,
281
- output_lang=output_lang,
282
- user_prompt=user_prompt,
283
- temperature=temperature,
284
- logprobs=logprobs,
285
- top_logprobs=top_logprobs,
286
- validator=validator,
287
- max_validation_retries=max_validation_retries,
288
- priority=priority,
289
- # Internal parameters
290
- prompt_file="extract_entities.yaml",
291
- output_model=Models.ListDictStrStrOutput,
292
- mode=None,
293
- )
294
- end = datetime.now()
295
- output.execution_time = (end - start).total_seconds()
309
+ output = Models.ToolOutput()
310
+
311
+ try:
312
+ start = datetime.now()
313
+ output = self._operator.run(
314
+ # User parameters
315
+ text=text,
316
+ with_analysis=with_analysis,
317
+ output_lang=output_lang,
318
+ user_prompt=user_prompt,
319
+ temperature=temperature,
320
+ logprobs=logprobs,
321
+ top_logprobs=top_logprobs,
322
+ validator=validator,
323
+ max_validation_retries=max_validation_retries,
324
+ priority=priority,
325
+ # Internal parameters
326
+ prompt_file="extract_entities.yaml",
327
+ output_model=Models.ListDictStrStrOutput,
328
+ mode=None,
329
+ )
330
+ end = datetime.now()
331
+ output.execution_time = (end - start).total_seconds()
332
+ return output
333
+
334
+ except PromptError as e:
335
+ output.errors.append(f"Prompt error: {e}")
336
+ except LLMError as e:
337
+ output.errors.append(f"LLM error: {e}")
338
+ except ValidationError as e:
339
+ output.errors.append(f"Validation error: {e}")
340
+ except TextToolsError as e:
341
+ output.errors.append(f"TextTools error: {e}")
342
+ except Exception as e:
343
+ output.errors.append(f"Unexpected error: {e}")
344
+
296
345
  return output
297
346
 
298
347
  def is_question(
@@ -331,26 +380,42 @@ class TheTool:
331
380
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
332
381
  - errors (list(str) | None): Errors occured during tool call
333
382
  """
334
- start = datetime.now()
335
- output = self._operator.run(
336
- # User parameters
337
- text=text,
338
- with_analysis=with_analysis,
339
- user_prompt=user_prompt,
340
- temperature=temperature,
341
- logprobs=logprobs,
342
- top_logprobs=top_logprobs,
343
- validator=validator,
344
- max_validation_retries=max_validation_retries,
345
- priority=priority,
346
- # Internal parameters
347
- prompt_file="is_question.yaml",
348
- output_model=Models.BoolOutput,
349
- mode=None,
350
- output_lang=None,
351
- )
352
- end = datetime.now()
353
- output.execution_time = (end - start).total_seconds()
383
+ output = Models.ToolOutput()
384
+
385
+ try:
386
+ start = datetime.now()
387
+ output = self._operator.run(
388
+ # User parameters
389
+ text=text,
390
+ with_analysis=with_analysis,
391
+ user_prompt=user_prompt,
392
+ temperature=temperature,
393
+ logprobs=logprobs,
394
+ top_logprobs=top_logprobs,
395
+ validator=validator,
396
+ max_validation_retries=max_validation_retries,
397
+ priority=priority,
398
+ # Internal parameters
399
+ prompt_file="is_question.yaml",
400
+ output_model=Models.BoolOutput,
401
+ mode=None,
402
+ output_lang=None,
403
+ )
404
+ end = datetime.now()
405
+ output.execution_time = (end - start).total_seconds()
406
+ return output
407
+
408
+ except PromptError as e:
409
+ output.errors.append(f"Prompt error: {e}")
410
+ except LLMError as e:
411
+ output.errors.append(f"LLM error: {e}")
412
+ except ValidationError as e:
413
+ output.errors.append(f"Validation error: {e}")
414
+ except TextToolsError as e:
415
+ output.errors.append(f"TextTools error: {e}")
416
+ except Exception as e:
417
+ output.errors.append(f"Unexpected error: {e}")
418
+
354
419
  return output
355
420
 
356
421
  def text_to_question(
@@ -391,26 +456,42 @@ class TheTool:
391
456
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
392
457
  - errors (list(str) | None): Errors occured during tool call
393
458
  """
394
- start = datetime.now()
395
- output = self._operator.run(
396
- # User parameters
397
- text=text,
398
- with_analysis=with_analysis,
399
- output_lang=output_lang,
400
- user_prompt=user_prompt,
401
- temperature=temperature,
402
- logprobs=logprobs,
403
- top_logprobs=top_logprobs,
404
- validator=validator,
405
- max_validation_retries=max_validation_retries,
406
- priority=priority,
407
- # Internal parameters
408
- prompt_file="text_to_question.yaml",
409
- output_model=Models.StrOutput,
410
- mode=None,
411
- )
412
- end = datetime.now()
413
- output.execution_time = (end - start).total_seconds()
459
+ output = Models.ToolOutput()
460
+
461
+ try:
462
+ start = datetime.now()
463
+ output = self._operator.run(
464
+ # User parameters
465
+ text=text,
466
+ with_analysis=with_analysis,
467
+ output_lang=output_lang,
468
+ user_prompt=user_prompt,
469
+ temperature=temperature,
470
+ logprobs=logprobs,
471
+ top_logprobs=top_logprobs,
472
+ validator=validator,
473
+ max_validation_retries=max_validation_retries,
474
+ priority=priority,
475
+ # Internal parameters
476
+ prompt_file="text_to_question.yaml",
477
+ output_model=Models.StrOutput,
478
+ mode=None,
479
+ )
480
+ end = datetime.now()
481
+ output.execution_time = (end - start).total_seconds()
482
+ return output
483
+
484
+ except PromptError as e:
485
+ output.errors.append(f"Prompt error: {e}")
486
+ except LLMError as e:
487
+ output.errors.append(f"LLM error: {e}")
488
+ except ValidationError as e:
489
+ output.errors.append(f"Validation error: {e}")
490
+ except TextToolsError as e:
491
+ output.errors.append(f"TextTools error: {e}")
492
+ except Exception as e:
493
+ output.errors.append(f"Unexpected error: {e}")
494
+
414
495
  return output
415
496
 
416
497
  def merge_questions(
@@ -453,27 +534,43 @@ class TheTool:
453
534
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
454
535
  - errors (list(str) | None): Errors occured during tool call
455
536
  """
456
- start = datetime.now()
457
- text = ", ".join(text)
458
- output = self._operator.run(
459
- # User parameters
460
- text=text,
461
- with_analysis=with_analysis,
462
- output_lang=output_lang,
463
- user_prompt=user_prompt,
464
- temperature=temperature,
465
- logprobs=logprobs,
466
- top_logprobs=top_logprobs,
467
- validator=validator,
468
- max_validation_retries=max_validation_retries,
469
- priority=priority,
470
- # Internal parameters
471
- prompt_file="merge_questions.yaml",
472
- output_model=Models.StrOutput,
473
- mode=mode,
474
- )
475
- end = datetime.now()
476
- output.execution_time = (end - start).total_seconds()
537
+ output = Models.ToolOutput()
538
+
539
+ try:
540
+ start = datetime.now()
541
+ text = ", ".join(text)
542
+ output = self._operator.run(
543
+ # User parameters
544
+ text=text,
545
+ with_analysis=with_analysis,
546
+ output_lang=output_lang,
547
+ user_prompt=user_prompt,
548
+ temperature=temperature,
549
+ logprobs=logprobs,
550
+ top_logprobs=top_logprobs,
551
+ validator=validator,
552
+ max_validation_retries=max_validation_retries,
553
+ priority=priority,
554
+ # Internal parameters
555
+ prompt_file="merge_questions.yaml",
556
+ output_model=Models.StrOutput,
557
+ mode=mode,
558
+ )
559
+ end = datetime.now()
560
+ output.execution_time = (end - start).total_seconds()
561
+ return output
562
+
563
+ except PromptError as e:
564
+ output.errors.append(f"Prompt error: {e}")
565
+ except LLMError as e:
566
+ output.errors.append(f"LLM error: {e}")
567
+ except ValidationError as e:
568
+ output.errors.append(f"Validation error: {e}")
569
+ except TextToolsError as e:
570
+ output.errors.append(f"TextTools error: {e}")
571
+ except Exception as e:
572
+ output.errors.append(f"Unexpected error: {e}")
573
+
477
574
  return output
478
575
 
479
576
  def rewrite(
@@ -516,26 +613,42 @@ class TheTool:
516
613
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
517
614
  - errors (list(str) | None): Errors occured during tool call
518
615
  """
519
- start = datetime.now()
520
- output = self._operator.run(
521
- # User parameters
522
- text=text,
523
- with_analysis=with_analysis,
524
- output_lang=output_lang,
525
- user_prompt=user_prompt,
526
- temperature=temperature,
527
- logprobs=logprobs,
528
- top_logprobs=top_logprobs,
529
- validator=validator,
530
- max_validation_retries=max_validation_retries,
531
- priority=priority,
532
- # Internal parameters
533
- prompt_file="rewrite.yaml",
534
- output_model=Models.StrOutput,
535
- mode=mode,
536
- )
537
- end = datetime.now()
538
- output.execution_time = (end - start).total_seconds()
616
+ output = Models.ToolOutput()
617
+
618
+ try:
619
+ start = datetime.now()
620
+ output = self._operator.run(
621
+ # User parameters
622
+ text=text,
623
+ with_analysis=with_analysis,
624
+ output_lang=output_lang,
625
+ user_prompt=user_prompt,
626
+ temperature=temperature,
627
+ logprobs=logprobs,
628
+ top_logprobs=top_logprobs,
629
+ validator=validator,
630
+ max_validation_retries=max_validation_retries,
631
+ priority=priority,
632
+ # Internal parameters
633
+ prompt_file="rewrite.yaml",
634
+ output_model=Models.StrOutput,
635
+ mode=mode,
636
+ )
637
+ end = datetime.now()
638
+ output.execution_time = (end - start).total_seconds()
639
+ return output
640
+
641
+ except PromptError as e:
642
+ output.errors.append(f"Prompt error: {e}")
643
+ except LLMError as e:
644
+ output.errors.append(f"LLM error: {e}")
645
+ except ValidationError as e:
646
+ output.errors.append(f"Validation error: {e}")
647
+ except TextToolsError as e:
648
+ output.errors.append(f"TextTools error: {e}")
649
+ except Exception as e:
650
+ output.errors.append(f"Unexpected error: {e}")
651
+
539
652
  return output
540
653
 
541
654
  def subject_to_question(
@@ -578,27 +691,43 @@ class TheTool:
578
691
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
579
692
  - errors (list(str) | None): Errors occured during tool call
580
693
  """
581
- start = datetime.now()
582
- output = self._operator.run(
583
- # User parameters
584
- text=text,
585
- number_of_questions=number_of_questions,
586
- with_analysis=with_analysis,
587
- output_lang=output_lang,
588
- user_prompt=user_prompt,
589
- temperature=temperature,
590
- logprobs=logprobs,
591
- top_logprobs=top_logprobs,
592
- validator=validator,
593
- max_validation_retries=max_validation_retries,
594
- priority=priority,
595
- # Internal parameters
596
- prompt_file="subject_to_question.yaml",
597
- output_model=Models.ReasonListStrOutput,
598
- mode=None,
599
- )
600
- end = datetime.now()
601
- output.execution_time = (end - start).total_seconds()
694
+ output = Models.ToolOutput()
695
+
696
+ try:
697
+ start = datetime.now()
698
+ output = self._operator.run(
699
+ # User parameters
700
+ text=text,
701
+ number_of_questions=number_of_questions,
702
+ with_analysis=with_analysis,
703
+ output_lang=output_lang,
704
+ user_prompt=user_prompt,
705
+ temperature=temperature,
706
+ logprobs=logprobs,
707
+ top_logprobs=top_logprobs,
708
+ validator=validator,
709
+ max_validation_retries=max_validation_retries,
710
+ priority=priority,
711
+ # Internal parameters
712
+ prompt_file="subject_to_question.yaml",
713
+ output_model=Models.ReasonListStrOutput,
714
+ mode=None,
715
+ )
716
+ end = datetime.now()
717
+ output.execution_time = (end - start).total_seconds()
718
+ return output
719
+
720
+ except PromptError as e:
721
+ output.errors.append(f"Prompt error: {e}")
722
+ except LLMError as e:
723
+ output.errors.append(f"LLM error: {e}")
724
+ except ValidationError as e:
725
+ output.errors.append(f"Validation error: {e}")
726
+ except TextToolsError as e:
727
+ output.errors.append(f"TextTools error: {e}")
728
+ except Exception as e:
729
+ output.errors.append(f"Unexpected error: {e}")
730
+
602
731
  return output
603
732
 
604
733
  def summarize(
@@ -639,26 +768,42 @@ class TheTool:
639
768
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
640
769
  - errors (list(str) | None): Errors occured during tool call
641
770
  """
642
- start = datetime.now()
643
- output = self._operator.run(
644
- # User parameters
645
- text=text,
646
- with_analysis=with_analysis,
647
- output_lang=output_lang,
648
- user_prompt=user_prompt,
649
- temperature=temperature,
650
- logprobs=logprobs,
651
- top_logprobs=top_logprobs,
652
- validator=validator,
653
- max_validation_retries=max_validation_retries,
654
- priority=priority,
655
- # Internal parameters
656
- prompt_file="summarize.yaml",
657
- output_model=Models.StrOutput,
658
- mode=None,
659
- )
660
- end = datetime.now()
661
- output.execution_time = (end - start).total_seconds()
771
+ output = Models.ToolOutput()
772
+
773
+ try:
774
+ start = datetime.now()
775
+ output = self._operator.run(
776
+ # User parameters
777
+ text=text,
778
+ with_analysis=with_analysis,
779
+ output_lang=output_lang,
780
+ user_prompt=user_prompt,
781
+ temperature=temperature,
782
+ logprobs=logprobs,
783
+ top_logprobs=top_logprobs,
784
+ validator=validator,
785
+ max_validation_retries=max_validation_retries,
786
+ priority=priority,
787
+ # Internal parameters
788
+ prompt_file="summarize.yaml",
789
+ output_model=Models.StrOutput,
790
+ mode=None,
791
+ )
792
+ end = datetime.now()
793
+ output.execution_time = (end - start).total_seconds()
794
+ return output
795
+
796
+ except PromptError as e:
797
+ output.errors.append(f"Prompt error: {e}")
798
+ except LLMError as e:
799
+ output.errors.append(f"LLM error: {e}")
800
+ except ValidationError as e:
801
+ output.errors.append(f"Validation error: {e}")
802
+ except TextToolsError as e:
803
+ output.errors.append(f"TextTools error: {e}")
804
+ except Exception as e:
805
+ output.errors.append(f"Unexpected error: {e}")
806
+
662
807
  return output
663
808
 
664
809
  def translate(
@@ -699,27 +844,43 @@ class TheTool:
699
844
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
700
845
  - errors (list(str) | None): Errors occured during tool call
701
846
  """
702
- start = datetime.now()
703
- output = self._operator.run(
704
- # User parameters
705
- text=text,
706
- target_language=target_language,
707
- with_analysis=with_analysis,
708
- user_prompt=user_prompt,
709
- temperature=temperature,
710
- logprobs=logprobs,
711
- top_logprobs=top_logprobs,
712
- validator=validator,
713
- max_validation_retries=max_validation_retries,
714
- priority=priority,
715
- # Internal parameters
716
- prompt_file="translate.yaml",
717
- output_model=Models.StrOutput,
718
- mode=None,
719
- output_lang=None,
720
- )
721
- end = datetime.now()
722
- output.execution_time = (end - start).total_seconds()
847
+ output = Models.ToolOutput()
848
+
849
+ try:
850
+ start = datetime.now()
851
+ output = self._operator.run(
852
+ # User parameters
853
+ text=text,
854
+ target_language=target_language,
855
+ with_analysis=with_analysis,
856
+ user_prompt=user_prompt,
857
+ temperature=temperature,
858
+ logprobs=logprobs,
859
+ top_logprobs=top_logprobs,
860
+ validator=validator,
861
+ max_validation_retries=max_validation_retries,
862
+ priority=priority,
863
+ # Internal parameters
864
+ prompt_file="translate.yaml",
865
+ output_model=Models.StrOutput,
866
+ mode=None,
867
+ output_lang=None,
868
+ )
869
+ end = datetime.now()
870
+ output.execution_time = (end - start).total_seconds()
871
+ return output
872
+
873
+ except PromptError as e:
874
+ output.errors.append(f"Prompt error: {e}")
875
+ except LLMError as e:
876
+ output.errors.append(f"LLM error: {e}")
877
+ except ValidationError as e:
878
+ output.errors.append(f"Validation error: {e}")
879
+ except TextToolsError as e:
880
+ output.errors.append(f"TextTools error: {e}")
881
+ except Exception as e:
882
+ output.errors.append(f"Unexpected error: {e}")
883
+
723
884
  return output
724
885
 
725
886
  def detect_entity(
@@ -760,26 +921,42 @@ class TheTool:
760
921
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
761
922
  - errors (list(str) | None): Errors occured during tool call
762
923
  """
763
- start = datetime.now()
764
- output = self._operator.run(
765
- # User parameters
766
- text=text,
767
- with_analysis=with_analysis,
768
- output_lang=output_lang,
769
- user_prompt=user_prompt,
770
- temperature=temperature,
771
- logprobs=logprobs,
772
- top_logprobs=top_logprobs,
773
- validator=validator,
774
- max_validation_retries=max_validation_retries,
775
- priority=priority,
776
- # Internal parameters
777
- prompt_file="detect_entity.yaml",
778
- output_model=Models.EntityDetectorOutput,
779
- mode=None,
780
- )
781
- end = datetime.now()
782
- output.execution_time = (end - start).total_seconds()
924
+ output = Models.ToolOutput()
925
+
926
+ try:
927
+ start = datetime.now()
928
+ output = self._operator.run(
929
+ # User parameters
930
+ text=text,
931
+ with_analysis=with_analysis,
932
+ output_lang=output_lang,
933
+ user_prompt=user_prompt,
934
+ temperature=temperature,
935
+ logprobs=logprobs,
936
+ top_logprobs=top_logprobs,
937
+ validator=validator,
938
+ max_validation_retries=max_validation_retries,
939
+ priority=priority,
940
+ # Internal parameters
941
+ prompt_file="detect_entity.yaml",
942
+ output_model=Models.EntityDetectorOutput,
943
+ mode=None,
944
+ )
945
+ end = datetime.now()
946
+ output.execution_time = (end - start).total_seconds()
947
+ return output
948
+
949
+ except PromptError as e:
950
+ output.errors.append(f"Prompt error: {e}")
951
+ except LLMError as e:
952
+ output.errors.append(f"LLM error: {e}")
953
+ except ValidationError as e:
954
+ output.errors.append(f"Validation error: {e}")
955
+ except TextToolsError as e:
956
+ output.errors.append(f"TextTools error: {e}")
957
+ except Exception as e:
958
+ output.errors.append(f"Unexpected error: {e}")
959
+
783
960
  return output
784
961
 
785
962
  def propositionize(
@@ -820,26 +997,42 @@ class TheTool:
820
997
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
821
998
  - errors (list(str) | None): Errors occured during tool call
822
999
  """
823
- start = datetime.now()
824
- output = self._operator.run(
825
- # User parameters
826
- text=text,
827
- with_analysis=with_analysis,
828
- output_lang=output_lang,
829
- user_prompt=user_prompt,
830
- temperature=temperature,
831
- logprobs=logprobs,
832
- top_logprobs=top_logprobs,
833
- validator=validator,
834
- max_validation_retries=max_validation_retries,
835
- priority=priority,
836
- # Internal parameters
837
- prompt_file="propositionize.yaml",
838
- output_model=Models.ListStrOutput,
839
- mode=None,
840
- )
841
- end = datetime.now()
842
- output.execution_time = (end - start).total_seconds()
1000
+ output = Models.ToolOutput()
1001
+
1002
+ try:
1003
+ start = datetime.now()
1004
+ output = self._operator.run(
1005
+ # User parameters
1006
+ text=text,
1007
+ with_analysis=with_analysis,
1008
+ output_lang=output_lang,
1009
+ user_prompt=user_prompt,
1010
+ temperature=temperature,
1011
+ logprobs=logprobs,
1012
+ top_logprobs=top_logprobs,
1013
+ validator=validator,
1014
+ max_validation_retries=max_validation_retries,
1015
+ priority=priority,
1016
+ # Internal parameters
1017
+ prompt_file="propositionize.yaml",
1018
+ output_model=Models.ListStrOutput,
1019
+ mode=None,
1020
+ )
1021
+ end = datetime.now()
1022
+ output.execution_time = (end - start).total_seconds()
1023
+ return output
1024
+
1025
+ except PromptError as e:
1026
+ output.errors.append(f"Prompt error: {e}")
1027
+ except LLMError as e:
1028
+ output.errors.append(f"LLM error: {e}")
1029
+ except ValidationError as e:
1030
+ output.errors.append(f"Validation error: {e}")
1031
+ except TextToolsError as e:
1032
+ output.errors.append(f"TextTools error: {e}")
1033
+ except Exception as e:
1034
+ output.errors.append(f"Unexpected error: {e}")
1035
+
843
1036
  return output
844
1037
 
845
1038
  def run_custom(
@@ -877,25 +1070,41 @@ class TheTool:
877
1070
  - execution_time (float): Time taken for execution in seconds (-1.0 if not measured)
878
1071
  - errors (list(str) | None): Errors occured during tool call
879
1072
  """
880
- start = datetime.now()
881
- output = self._operator.run(
882
- # User paramaeters
883
- text=prompt,
884
- output_model=output_model,
885
- output_model_str=output_model.model_json_schema(),
886
- output_lang=output_lang,
887
- temperature=temperature,
888
- logprobs=logprobs,
889
- top_logprobs=top_logprobs,
890
- validator=validator,
891
- max_validation_retries=max_validation_retries,
892
- priority=priority,
893
- # Internal parameters
894
- prompt_file="run_custom.yaml",
895
- user_prompt=None,
896
- with_analysis=False,
897
- mode=None,
898
- )
899
- end = datetime.now()
900
- output.execution_time = (end - start).total_seconds()
1073
+ output = Models.ToolOutput()
1074
+
1075
+ try:
1076
+ start = datetime.now()
1077
+ output = self._operator.run(
1078
+ # User paramaeters
1079
+ text=prompt,
1080
+ output_model=output_model,
1081
+ output_model_str=output_model.model_json_schema(),
1082
+ output_lang=output_lang,
1083
+ temperature=temperature,
1084
+ logprobs=logprobs,
1085
+ top_logprobs=top_logprobs,
1086
+ validator=validator,
1087
+ max_validation_retries=max_validation_retries,
1088
+ priority=priority,
1089
+ # Internal parameters
1090
+ prompt_file="run_custom.yaml",
1091
+ user_prompt=None,
1092
+ with_analysis=False,
1093
+ mode=None,
1094
+ )
1095
+ end = datetime.now()
1096
+ output.execution_time = (end - start).total_seconds()
1097
+ return output
1098
+
1099
+ except PromptError as e:
1100
+ output.errors.append(f"Prompt error: {e}")
1101
+ except LLMError as e:
1102
+ output.errors.append(f"LLM error: {e}")
1103
+ except ValidationError as e:
1104
+ output.errors.append(f"Validation error: {e}")
1105
+ except TextToolsError as e:
1106
+ output.errors.append(f"TextTools error: {e}")
1107
+ except Exception as e:
1108
+ output.errors.append(f"Unexpected error: {e}")
1109
+
901
1110
  return output