symbolicai 0.20.2__py3-none-any.whl → 1.0.0__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 (123) hide show
  1. symai/__init__.py +96 -64
  2. symai/backend/base.py +93 -80
  3. symai/backend/engines/drawing/engine_bfl.py +12 -11
  4. symai/backend/engines/drawing/engine_gpt_image.py +108 -87
  5. symai/backend/engines/embedding/engine_llama_cpp.py +25 -28
  6. symai/backend/engines/embedding/engine_openai.py +3 -5
  7. symai/backend/engines/execute/engine_python.py +6 -5
  8. symai/backend/engines/files/engine_io.py +74 -67
  9. symai/backend/engines/imagecaptioning/engine_blip2.py +3 -3
  10. symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +54 -38
  11. symai/backend/engines/index/engine_pinecone.py +23 -24
  12. symai/backend/engines/index/engine_vectordb.py +16 -14
  13. symai/backend/engines/lean/engine_lean4.py +38 -34
  14. symai/backend/engines/neurosymbolic/__init__.py +41 -13
  15. symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +262 -182
  16. symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +263 -191
  17. symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +53 -49
  18. symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +212 -211
  19. symai/backend/engines/neurosymbolic/engine_groq.py +87 -63
  20. symai/backend/engines/neurosymbolic/engine_huggingface.py +21 -24
  21. symai/backend/engines/neurosymbolic/engine_llama_cpp.py +117 -48
  22. symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +256 -229
  23. symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +270 -150
  24. symai/backend/engines/ocr/engine_apilayer.py +6 -8
  25. symai/backend/engines/output/engine_stdout.py +1 -4
  26. symai/backend/engines/search/engine_openai.py +7 -7
  27. symai/backend/engines/search/engine_perplexity.py +5 -5
  28. symai/backend/engines/search/engine_serpapi.py +12 -14
  29. symai/backend/engines/speech_to_text/engine_local_whisper.py +20 -27
  30. symai/backend/engines/symbolic/engine_wolframalpha.py +3 -3
  31. symai/backend/engines/text_to_speech/engine_openai.py +5 -7
  32. symai/backend/engines/text_vision/engine_clip.py +7 -11
  33. symai/backend/engines/userinput/engine_console.py +3 -3
  34. symai/backend/engines/webscraping/engine_requests.py +81 -48
  35. symai/backend/mixin/__init__.py +13 -0
  36. symai/backend/mixin/anthropic.py +4 -2
  37. symai/backend/mixin/deepseek.py +2 -0
  38. symai/backend/mixin/google.py +2 -0
  39. symai/backend/mixin/openai.py +11 -3
  40. symai/backend/settings.py +83 -16
  41. symai/chat.py +101 -78
  42. symai/collect/__init__.py +7 -1
  43. symai/collect/dynamic.py +77 -69
  44. symai/collect/pipeline.py +35 -27
  45. symai/collect/stats.py +75 -63
  46. symai/components.py +198 -169
  47. symai/constraints.py +15 -12
  48. symai/core.py +698 -359
  49. symai/core_ext.py +32 -34
  50. symai/endpoints/api.py +80 -73
  51. symai/extended/.DS_Store +0 -0
  52. symai/extended/__init__.py +46 -12
  53. symai/extended/api_builder.py +11 -8
  54. symai/extended/arxiv_pdf_parser.py +13 -12
  55. symai/extended/bibtex_parser.py +2 -3
  56. symai/extended/conversation.py +101 -90
  57. symai/extended/document.py +17 -10
  58. symai/extended/file_merger.py +18 -13
  59. symai/extended/graph.py +18 -13
  60. symai/extended/html_style_template.py +2 -4
  61. symai/extended/interfaces/blip_2.py +1 -2
  62. symai/extended/interfaces/clip.py +1 -2
  63. symai/extended/interfaces/console.py +7 -1
  64. symai/extended/interfaces/dall_e.py +1 -1
  65. symai/extended/interfaces/flux.py +1 -1
  66. symai/extended/interfaces/gpt_image.py +1 -1
  67. symai/extended/interfaces/input.py +1 -1
  68. symai/extended/interfaces/llava.py +0 -1
  69. symai/extended/interfaces/naive_vectordb.py +7 -8
  70. symai/extended/interfaces/naive_webscraping.py +1 -1
  71. symai/extended/interfaces/ocr.py +1 -1
  72. symai/extended/interfaces/pinecone.py +6 -5
  73. symai/extended/interfaces/serpapi.py +1 -1
  74. symai/extended/interfaces/terminal.py +2 -3
  75. symai/extended/interfaces/tts.py +1 -1
  76. symai/extended/interfaces/whisper.py +1 -1
  77. symai/extended/interfaces/wolframalpha.py +1 -1
  78. symai/extended/metrics/__init__.py +11 -1
  79. symai/extended/metrics/similarity.py +11 -13
  80. symai/extended/os_command.py +17 -16
  81. symai/extended/packages/__init__.py +29 -3
  82. symai/extended/packages/symdev.py +19 -16
  83. symai/extended/packages/sympkg.py +12 -9
  84. symai/extended/packages/symrun.py +21 -19
  85. symai/extended/repo_cloner.py +11 -10
  86. symai/extended/seo_query_optimizer.py +1 -2
  87. symai/extended/solver.py +20 -23
  88. symai/extended/summarizer.py +4 -3
  89. symai/extended/taypan_interpreter.py +10 -12
  90. symai/extended/vectordb.py +99 -82
  91. symai/formatter/__init__.py +9 -1
  92. symai/formatter/formatter.py +12 -16
  93. symai/formatter/regex.py +62 -63
  94. symai/functional.py +176 -122
  95. symai/imports.py +136 -127
  96. symai/interfaces.py +56 -27
  97. symai/memory.py +14 -13
  98. symai/misc/console.py +49 -39
  99. symai/misc/loader.py +5 -3
  100. symai/models/__init__.py +17 -1
  101. symai/models/base.py +269 -181
  102. symai/models/errors.py +0 -1
  103. symai/ops/__init__.py +32 -22
  104. symai/ops/measures.py +11 -15
  105. symai/ops/primitives.py +348 -228
  106. symai/post_processors.py +32 -28
  107. symai/pre_processors.py +39 -41
  108. symai/processor.py +6 -4
  109. symai/prompts.py +59 -45
  110. symai/server/huggingface_server.py +23 -20
  111. symai/server/llama_cpp_server.py +7 -5
  112. symai/shell.py +3 -4
  113. symai/shellsv.py +499 -375
  114. symai/strategy.py +517 -287
  115. symai/symbol.py +111 -116
  116. symai/utils.py +42 -36
  117. {symbolicai-0.20.2.dist-info → symbolicai-1.0.0.dist-info}/METADATA +4 -2
  118. symbolicai-1.0.0.dist-info/RECORD +163 -0
  119. symbolicai-0.20.2.dist-info/RECORD +0 -162
  120. {symbolicai-0.20.2.dist-info → symbolicai-1.0.0.dist-info}/WHEEL +0 -0
  121. {symbolicai-0.20.2.dist-info → symbolicai-1.0.0.dist-info}/entry_points.txt +0 -0
  122. {symbolicai-0.20.2.dist-info → symbolicai-1.0.0.dist-info}/licenses/LICENSE +0 -0
  123. {symbolicai-0.20.2.dist-info → symbolicai-1.0.0.dist-info}/top_level.txt +0 -0
symai/ops/__init__.py CHANGED
@@ -1,25 +1,35 @@
1
- from .primitives import *
1
+ from . import primitives as _primitives
2
+
3
+ __all__ = getattr(_primitives, "__all__", None) # noqa
4
+ if __all__ is None:
5
+ __all__ = [name for name in dir(_primitives) if not name.startswith("_")]
6
+
7
+ for _name in __all__:
8
+ globals()[_name] = getattr(_primitives, _name)
2
9
 
3
10
  SYMBOL_PRIMITIVES = [
4
- OperatorPrimitives,
5
- IterationPrimitives,
6
- ValueHandlingPrimitives,
7
- StringHelperPrimitives,
8
- CastingPrimitives,
9
- ComparisonPrimitives,
10
- ExpressionHandlingPrimitives,
11
- DataHandlingPrimitives,
12
- UniquenessPrimitives,
13
- PatternMatchingPrimitives,
14
- DictHandlingPrimitives,
15
- QueryHandlingPrimitives,
16
- ExecutionControlPrimitives,
17
- TemplateStylingPrimitives,
18
- DataClusteringPrimitives,
19
- EmbeddingPrimitives,
20
- IndexingPrimitives,
21
- IOHandlingPrimitives,
22
- PersistencePrimitives,
23
- OutputHandlingPrimitives,
24
- FineTuningPrimitives,
11
+ _primitives.OperatorPrimitives,
12
+ _primitives.IterationPrimitives,
13
+ _primitives.ValueHandlingPrimitives,
14
+ _primitives.StringHelperPrimitives,
15
+ _primitives.CastingPrimitives,
16
+ _primitives.ComparisonPrimitives,
17
+ _primitives.ExpressionHandlingPrimitives,
18
+ _primitives.DataHandlingPrimitives,
19
+ _primitives.UniquenessPrimitives,
20
+ _primitives.PatternMatchingPrimitives,
21
+ _primitives.DictHandlingPrimitives,
22
+ _primitives.QueryHandlingPrimitives,
23
+ _primitives.ExecutionControlPrimitives,
24
+ _primitives.TemplateStylingPrimitives,
25
+ _primitives.DataClusteringPrimitives,
26
+ _primitives.EmbeddingPrimitives,
27
+ _primitives.IndexingPrimitives,
28
+ _primitives.IOHandlingPrimitives,
29
+ _primitives.PersistencePrimitives,
30
+ _primitives.OutputHandlingPrimitives,
31
+ _primitives.FineTuningPrimitives,
25
32
  ]
33
+
34
+ del _name
35
+ del _primitives
symai/ops/measures.py CHANGED
@@ -1,7 +1,8 @@
1
1
  import numpy as np
2
-
3
2
  from scipy import linalg
4
3
 
4
+ from ..utils import UserMessage
5
+
5
6
 
6
7
  def calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=1e-6):
7
8
  """Numpy implementation of the Frechet Distance.
@@ -42,8 +43,8 @@ def calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=1e-6):
42
43
  covmean, _ = linalg.sqrtm(sigma1.dot(sigma2), disp=False)
43
44
  if not np.isfinite(covmean).all():
44
45
  msg = ('fid calculation produces singular product; '
45
- 'adding %s to diagonal of cov estimates') % eps
46
- print(msg)
46
+ f'adding {eps} to diagonal of cov estimates')
47
+ UserMessage(msg)
47
48
  offset = np.eye(sigma1.shape[0]) * eps
48
49
  covmean = linalg.sqrtm((sigma1 + offset).dot(sigma2 + offset))
49
50
 
@@ -51,12 +52,11 @@ def calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=1e-6):
51
52
  if np.iscomplexobj(covmean):
52
53
  if not np.allclose(np.diagonal(covmean).imag, 0, atol=1e-3):
53
54
  m = np.max(np.abs(covmean.imag))
54
- raise ValueError('Imaginary component {}'.format(m))
55
+ UserMessage(f'Imaginary component {m}', raise_with=ValueError)
55
56
  covmean = covmean.real
56
57
 
57
58
  tr_covmean = np.trace(covmean)
58
- val = diff.dot(diff) + np.trace(sigma1) + np.trace(sigma2) - 2 * tr_covmean
59
- return val
59
+ return diff.dot(diff) + np.trace(sigma1) + np.trace(sigma2) - 2 * tr_covmean
60
60
 
61
61
 
62
62
  def calculate_mmd(x, y, kernel='rbf', kernel_mul=2.0, kernel_num=5, fix_sigma=None, eps=1e-9):
@@ -67,10 +67,7 @@ def calculate_mmd(x, y, kernel='rbf', kernel_mul=2.0, kernel_num=5, fix_sigma=No
67
67
  total1 = np.expand_dims(total, 1)
68
68
  L2_distance = np.sum((total0 - total1) ** 2, axis=2)
69
69
 
70
- if fix_sigma:
71
- bandwidth = fix_sigma
72
- else:
73
- bandwidth = np.sum(L2_distance) / (n_samples ** 2 - n_samples + eps)
70
+ bandwidth = fix_sigma or np.sum(L2_distance) / (n_samples ** 2 - n_samples + eps)
74
71
  bandwidth /= kernel_mul ** (kernel_num // 2)
75
72
  bandwidth_list = [bandwidth * (kernel_mul ** i) for i in range(kernel_num)]
76
73
  kernel_val = [np.exp(-L2_distance / (bandwidth_temp + eps)) for bandwidth_temp in bandwidth_list]
@@ -78,17 +75,16 @@ def calculate_mmd(x, y, kernel='rbf', kernel_mul=2.0, kernel_num=5, fix_sigma=No
78
75
 
79
76
  def linear_mmd2(f_of_X, f_of_Y):
80
77
  delta = f_of_X.mean(axis=0) - f_of_Y.mean(axis=0)
81
- loss = np.dot(delta, delta.T)
82
- return loss
78
+ return np.dot(delta, delta.T)
83
79
 
84
80
  if kernel == 'linear':
85
81
  return linear_mmd2(x, y)
86
- elif kernel == 'rbf':
82
+ if kernel == 'rbf':
87
83
  batch_size = x.shape[0]
88
84
  kernels = gaussian_kernel(x, y, kernel_mul=kernel_mul, kernel_num=kernel_num, fix_sigma=fix_sigma)
89
85
  xx = np.mean(kernels[:batch_size, :batch_size])
90
86
  yy = np.mean(kernels[batch_size:, batch_size:])
91
87
  xy = np.mean(kernels[:batch_size, batch_size:])
92
88
  yx = np.mean(kernels[batch_size:, :batch_size])
93
- loss = xx + yy - xy - yx
94
- return loss
89
+ return xx + yy - xy - yx
90
+ return None