symbolicai 1.0.0__py3-none-any.whl → 1.1.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 (127) hide show
  1. symai/__init__.py +198 -134
  2. symai/backend/base.py +51 -51
  3. symai/backend/engines/drawing/engine_bfl.py +33 -33
  4. symai/backend/engines/drawing/engine_gpt_image.py +4 -10
  5. symai/backend/engines/embedding/engine_llama_cpp.py +50 -35
  6. symai/backend/engines/embedding/engine_openai.py +22 -16
  7. symai/backend/engines/execute/engine_python.py +16 -16
  8. symai/backend/engines/files/engine_io.py +51 -49
  9. symai/backend/engines/imagecaptioning/engine_blip2.py +27 -23
  10. symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +53 -46
  11. symai/backend/engines/index/engine_pinecone.py +116 -88
  12. symai/backend/engines/index/engine_qdrant.py +1011 -0
  13. symai/backend/engines/index/engine_vectordb.py +78 -52
  14. symai/backend/engines/lean/engine_lean4.py +65 -25
  15. symai/backend/engines/neurosymbolic/__init__.py +28 -28
  16. symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +137 -135
  17. symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +145 -152
  18. symai/backend/engines/neurosymbolic/engine_cerebras.py +328 -0
  19. symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +75 -49
  20. symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +199 -155
  21. symai/backend/engines/neurosymbolic/engine_groq.py +106 -72
  22. symai/backend/engines/neurosymbolic/engine_huggingface.py +100 -67
  23. symai/backend/engines/neurosymbolic/engine_llama_cpp.py +121 -93
  24. symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +213 -132
  25. symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +180 -137
  26. symai/backend/engines/ocr/engine_apilayer.py +18 -20
  27. symai/backend/engines/output/engine_stdout.py +9 -9
  28. symai/backend/engines/{webscraping → scrape}/engine_requests.py +25 -11
  29. symai/backend/engines/search/engine_openai.py +95 -83
  30. symai/backend/engines/search/engine_parallel.py +665 -0
  31. symai/backend/engines/search/engine_perplexity.py +40 -41
  32. symai/backend/engines/search/engine_serpapi.py +33 -28
  33. symai/backend/engines/speech_to_text/engine_local_whisper.py +37 -27
  34. symai/backend/engines/symbolic/engine_wolframalpha.py +14 -8
  35. symai/backend/engines/text_to_speech/engine_openai.py +15 -19
  36. symai/backend/engines/text_vision/engine_clip.py +34 -28
  37. symai/backend/engines/userinput/engine_console.py +3 -4
  38. symai/backend/mixin/anthropic.py +48 -40
  39. symai/backend/mixin/deepseek.py +4 -5
  40. symai/backend/mixin/google.py +5 -4
  41. symai/backend/mixin/groq.py +2 -4
  42. symai/backend/mixin/openai.py +132 -110
  43. symai/backend/settings.py +14 -14
  44. symai/chat.py +164 -94
  45. symai/collect/dynamic.py +13 -11
  46. symai/collect/pipeline.py +39 -31
  47. symai/collect/stats.py +109 -69
  48. symai/components.py +556 -238
  49. symai/constraints.py +14 -5
  50. symai/core.py +1495 -1210
  51. symai/core_ext.py +55 -50
  52. symai/endpoints/api.py +113 -58
  53. symai/extended/api_builder.py +22 -17
  54. symai/extended/arxiv_pdf_parser.py +13 -5
  55. symai/extended/bibtex_parser.py +8 -4
  56. symai/extended/conversation.py +88 -69
  57. symai/extended/document.py +40 -27
  58. symai/extended/file_merger.py +45 -7
  59. symai/extended/graph.py +38 -24
  60. symai/extended/html_style_template.py +17 -11
  61. symai/extended/interfaces/blip_2.py +1 -1
  62. symai/extended/interfaces/clip.py +4 -2
  63. symai/extended/interfaces/console.py +5 -3
  64. symai/extended/interfaces/dall_e.py +3 -1
  65. symai/extended/interfaces/file.py +2 -0
  66. symai/extended/interfaces/flux.py +3 -1
  67. symai/extended/interfaces/gpt_image.py +15 -6
  68. symai/extended/interfaces/input.py +2 -1
  69. symai/extended/interfaces/llava.py +1 -1
  70. symai/extended/interfaces/{naive_webscraping.py → naive_scrape.py} +3 -2
  71. symai/extended/interfaces/naive_vectordb.py +2 -2
  72. symai/extended/interfaces/ocr.py +4 -2
  73. symai/extended/interfaces/openai_search.py +2 -0
  74. symai/extended/interfaces/parallel.py +30 -0
  75. symai/extended/interfaces/perplexity.py +2 -0
  76. symai/extended/interfaces/pinecone.py +6 -4
  77. symai/extended/interfaces/python.py +2 -0
  78. symai/extended/interfaces/serpapi.py +2 -0
  79. symai/extended/interfaces/terminal.py +0 -1
  80. symai/extended/interfaces/tts.py +2 -1
  81. symai/extended/interfaces/whisper.py +2 -1
  82. symai/extended/interfaces/wolframalpha.py +1 -0
  83. symai/extended/metrics/__init__.py +1 -1
  84. symai/extended/metrics/similarity.py +5 -2
  85. symai/extended/os_command.py +31 -22
  86. symai/extended/packages/symdev.py +39 -34
  87. symai/extended/packages/sympkg.py +30 -27
  88. symai/extended/packages/symrun.py +46 -35
  89. symai/extended/repo_cloner.py +10 -9
  90. symai/extended/seo_query_optimizer.py +15 -12
  91. symai/extended/solver.py +104 -76
  92. symai/extended/summarizer.py +8 -7
  93. symai/extended/taypan_interpreter.py +10 -9
  94. symai/extended/vectordb.py +28 -15
  95. symai/formatter/formatter.py +39 -31
  96. symai/formatter/regex.py +46 -44
  97. symai/functional.py +184 -86
  98. symai/imports.py +85 -51
  99. symai/interfaces.py +1 -1
  100. symai/memory.py +33 -24
  101. symai/menu/screen.py +28 -19
  102. symai/misc/console.py +27 -27
  103. symai/misc/loader.py +4 -3
  104. symai/models/base.py +147 -76
  105. symai/models/errors.py +1 -1
  106. symai/ops/__init__.py +1 -1
  107. symai/ops/measures.py +17 -14
  108. symai/ops/primitives.py +933 -635
  109. symai/post_processors.py +28 -24
  110. symai/pre_processors.py +58 -52
  111. symai/processor.py +15 -9
  112. symai/prompts.py +714 -649
  113. symai/server/huggingface_server.py +115 -32
  114. symai/server/llama_cpp_server.py +14 -6
  115. symai/server/qdrant_server.py +206 -0
  116. symai/shell.py +98 -39
  117. symai/shellsv.py +307 -223
  118. symai/strategy.py +135 -81
  119. symai/symbol.py +276 -225
  120. symai/utils.py +62 -46
  121. {symbolicai-1.0.0.dist-info → symbolicai-1.1.0.dist-info}/METADATA +19 -9
  122. symbolicai-1.1.0.dist-info/RECORD +168 -0
  123. symbolicai-1.0.0.dist-info/RECORD +0 -163
  124. {symbolicai-1.0.0.dist-info → symbolicai-1.1.0.dist-info}/WHEEL +0 -0
  125. {symbolicai-1.0.0.dist-info → symbolicai-1.1.0.dist-info}/entry_points.txt +0 -0
  126. {symbolicai-1.0.0.dist-info → symbolicai-1.1.0.dist-info}/licenses/LICENSE +0 -0
  127. {symbolicai-1.0.0.dist-info → symbolicai-1.1.0.dist-info}/top_level.txt +0 -0
symai/shell.py CHANGED
@@ -44,18 +44,22 @@ $> New-Item -ItemType Directory -Path <path> EOF
44
44
  --------------
45
45
  """
46
46
 
47
+
47
48
  class ShellPreProcessor(PreProcessor):
48
49
  def __call__(self, argument):
49
- return f'// {argument.prop.instance!s}\n$>'
50
+ return f"// {argument.prop.instance!s}\n$>"
50
51
 
51
52
 
52
53
  class Shell(Expression):
53
54
  def forward(self, **kwargs) -> str:
54
- @few_shot(prompt="Convert a user query to a shell command:\n",
55
- examples=[],
56
- pre_processors=[ShellPreProcessor()],
57
- post_processors=[StripPostProcessor()],
58
- stop=['EOF'], **kwargs)
55
+ @few_shot(
56
+ prompt="Convert a user query to a shell command:\n",
57
+ examples=[],
58
+ pre_processors=[ShellPreProcessor()],
59
+ post_processors=[StripPostProcessor()],
60
+ stop=["EOF"],
61
+ **kwargs,
62
+ )
59
63
  def _func(_) -> str:
60
64
  return "Sorry, something went wrong. Please check if your backend is available and try again or report an issue to the devs. :("
61
65
 
@@ -68,17 +72,19 @@ class Shell(Expression):
68
72
 
69
73
  def process_query(args) -> None:
70
74
  if args.version:
71
- with ConsoleStyle('extensity') as console:
75
+ with ConsoleStyle("extensity") as console:
72
76
  console.print(f"ExtensityAI: Symbolic Shell v{SYMAI_VERSION}")
73
77
  return
74
78
 
75
79
  query = args.query
76
80
  if query is None or len(query) == 0:
77
- with ConsoleStyle('extensity') as console:
81
+ with ConsoleStyle("extensity") as console:
78
82
  console.print(f"Starting ExtensityAI: Symbolic Shell v{SYMAI_VERSION}")
79
- shellsv_run(auto_query_on_error=args.auto,
80
- conversation_style=args.style if args.style is not None and args.style != '' else None,
81
- verbose=args.verbose)
83
+ shellsv_run(
84
+ auto_query_on_error=args.auto,
85
+ conversation_style=args.style if args.style is not None and args.style != "" else None,
86
+ verbose=args.verbose,
87
+ )
82
88
  return
83
89
 
84
90
  shell = Shell(query)
@@ -95,44 +101,97 @@ def process_query(args) -> None:
95
101
  if args.delete:
96
102
  msg = msg - args.delete
97
103
  if args.exec:
98
- msg = str(msg).strip().replace('EOF', '')
104
+ msg = str(msg).strip().replace("EOF", "")
99
105
  os.system(msg)
100
106
  if args.more:
101
- cmd = msg.extract('the main command used')
102
- cmd_help = cmd << 'get manual for the command'
103
- expr = Try(expr=Lambda(lambda kwargs: os.system(str(kwargs['args'][0]))))
107
+ cmd = msg.extract("the main command used")
108
+ cmd_help = cmd << "get manual for the command"
109
+ expr = Try(expr=Lambda(lambda kwargs: os.system(str(kwargs["args"][0]))))
104
110
  with Loader(desc="Inference ...", end=""):
105
111
  expr(cmd_help)
106
112
 
107
- with ConsoleStyle('code') as console:
108
- msg = str(msg).strip().replace('EOF', '')
113
+ with ConsoleStyle("code") as console:
114
+ msg = str(msg).strip().replace("EOF", "")
109
115
  console.print(msg)
110
116
 
111
117
 
112
118
  def run() -> None:
113
119
  # All the logic of argparse goes in this function
114
- parser = argparse.ArgumentParser(description='Welcome to the Symbolic<AI/> Shell support tool!')
115
- parser.add_argument('query', type=str, nargs='?', help='The prompt for the shell query.')
116
- parser.add_argument('--add', dest='add', default="", required=False, type=str,
117
- help='integrate the added text to the query.')
118
- parser.add_argument('--convert', dest='convert', default="", required=False, type=str,
119
- help='convert a command to another shell. (e.g. --convert=windows or --convert=linux)')
120
- parser.add_argument('--edit', dest='edit', default="", required=False, type=str,
121
- help='edit the added text to the query.')
122
- parser.add_argument('--del', dest='delete', default="", required=False, type=str,
123
- help='remove the added text to the query.')
124
- parser.add_argument('--more', dest='more', default=False, required=False, action=argparse.BooleanOptionalAction,
125
- help='add more context to the generated command.')
126
- parser.add_argument('--exec', dest='exec', default=False, required=False, action=argparse.BooleanOptionalAction,
127
- help='execute command after creation (ATTENTION: Executing a generated command without verification may be risky!).')
128
- parser.add_argument('--auto', dest='auto', default=False, required=False, action=argparse.BooleanOptionalAction,
129
- help='query the the LLM if a command resulted unsuccessfully.')
130
- parser.add_argument('--style', dest='style', default=None, required=False, type=str,
131
- help='add speech style to the shell.')
132
- parser.add_argument('--version', dest='version', default=False, required=False, action=argparse.BooleanOptionalAction,
133
- help='show the version of the shell.')
134
- parser.add_argument('--verbose', action='store_true',
135
- help='Print verbose errors.')
120
+ parser = argparse.ArgumentParser(description="Welcome to the Symbolic<AI/> Shell support tool!")
121
+ parser.add_argument("query", type=str, nargs="?", help="The prompt for the shell query.")
122
+ parser.add_argument(
123
+ "--add",
124
+ dest="add",
125
+ default="",
126
+ required=False,
127
+ type=str,
128
+ help="integrate the added text to the query.",
129
+ )
130
+ parser.add_argument(
131
+ "--convert",
132
+ dest="convert",
133
+ default="",
134
+ required=False,
135
+ type=str,
136
+ help="convert a command to another shell. (e.g. --convert=windows or --convert=linux)",
137
+ )
138
+ parser.add_argument(
139
+ "--edit",
140
+ dest="edit",
141
+ default="",
142
+ required=False,
143
+ type=str,
144
+ help="edit the added text to the query.",
145
+ )
146
+ parser.add_argument(
147
+ "--del",
148
+ dest="delete",
149
+ default="",
150
+ required=False,
151
+ type=str,
152
+ help="remove the added text to the query.",
153
+ )
154
+ parser.add_argument(
155
+ "--more",
156
+ dest="more",
157
+ default=False,
158
+ required=False,
159
+ action=argparse.BooleanOptionalAction,
160
+ help="add more context to the generated command.",
161
+ )
162
+ parser.add_argument(
163
+ "--exec",
164
+ dest="exec",
165
+ default=False,
166
+ required=False,
167
+ action=argparse.BooleanOptionalAction,
168
+ help="execute command after creation (ATTENTION: Executing a generated command without verification may be risky!).",
169
+ )
170
+ parser.add_argument(
171
+ "--auto",
172
+ dest="auto",
173
+ default=False,
174
+ required=False,
175
+ action=argparse.BooleanOptionalAction,
176
+ help="query the the LLM if a command resulted unsuccessfully.",
177
+ )
178
+ parser.add_argument(
179
+ "--style",
180
+ dest="style",
181
+ default=None,
182
+ required=False,
183
+ type=str,
184
+ help="add speech style to the shell.",
185
+ )
186
+ parser.add_argument(
187
+ "--version",
188
+ dest="version",
189
+ default=False,
190
+ required=False,
191
+ action=argparse.BooleanOptionalAction,
192
+ help="show the version of the shell.",
193
+ )
194
+ parser.add_argument("--verbose", action="store_true", help="Print verbose errors.")
136
195
 
137
196
  args = parser.parse_args()
138
197
  process_query(args)