symbolicai 0.21.0__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.
- symai/__init__.py +96 -64
- symai/backend/base.py +93 -80
- symai/backend/engines/drawing/engine_bfl.py +12 -11
- symai/backend/engines/drawing/engine_gpt_image.py +108 -87
- symai/backend/engines/embedding/engine_llama_cpp.py +20 -24
- symai/backend/engines/embedding/engine_openai.py +3 -5
- symai/backend/engines/execute/engine_python.py +6 -5
- symai/backend/engines/files/engine_io.py +74 -67
- symai/backend/engines/imagecaptioning/engine_blip2.py +3 -3
- symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +54 -38
- symai/backend/engines/index/engine_pinecone.py +23 -24
- symai/backend/engines/index/engine_vectordb.py +16 -14
- symai/backend/engines/lean/engine_lean4.py +38 -34
- symai/backend/engines/neurosymbolic/__init__.py +41 -13
- symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +262 -182
- symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +263 -191
- symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +53 -49
- symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +212 -211
- symai/backend/engines/neurosymbolic/engine_groq.py +87 -63
- symai/backend/engines/neurosymbolic/engine_huggingface.py +21 -24
- symai/backend/engines/neurosymbolic/engine_llama_cpp.py +44 -46
- symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +256 -229
- symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +270 -150
- symai/backend/engines/ocr/engine_apilayer.py +6 -8
- symai/backend/engines/output/engine_stdout.py +1 -4
- symai/backend/engines/search/engine_openai.py +7 -7
- symai/backend/engines/search/engine_perplexity.py +5 -5
- symai/backend/engines/search/engine_serpapi.py +12 -14
- symai/backend/engines/speech_to_text/engine_local_whisper.py +20 -27
- symai/backend/engines/symbolic/engine_wolframalpha.py +3 -3
- symai/backend/engines/text_to_speech/engine_openai.py +5 -7
- symai/backend/engines/text_vision/engine_clip.py +7 -11
- symai/backend/engines/userinput/engine_console.py +3 -3
- symai/backend/engines/webscraping/engine_requests.py +81 -48
- symai/backend/mixin/__init__.py +13 -0
- symai/backend/mixin/anthropic.py +4 -2
- symai/backend/mixin/deepseek.py +2 -0
- symai/backend/mixin/google.py +2 -0
- symai/backend/mixin/openai.py +11 -3
- symai/backend/settings.py +83 -16
- symai/chat.py +101 -78
- symai/collect/__init__.py +7 -1
- symai/collect/dynamic.py +77 -69
- symai/collect/pipeline.py +35 -27
- symai/collect/stats.py +75 -63
- symai/components.py +198 -169
- symai/constraints.py +15 -12
- symai/core.py +698 -359
- symai/core_ext.py +32 -34
- symai/endpoints/api.py +80 -73
- symai/extended/.DS_Store +0 -0
- symai/extended/__init__.py +46 -12
- symai/extended/api_builder.py +11 -8
- symai/extended/arxiv_pdf_parser.py +13 -12
- symai/extended/bibtex_parser.py +2 -3
- symai/extended/conversation.py +101 -90
- symai/extended/document.py +17 -10
- symai/extended/file_merger.py +18 -13
- symai/extended/graph.py +18 -13
- symai/extended/html_style_template.py +2 -4
- symai/extended/interfaces/blip_2.py +1 -2
- symai/extended/interfaces/clip.py +1 -2
- symai/extended/interfaces/console.py +7 -1
- symai/extended/interfaces/dall_e.py +1 -1
- symai/extended/interfaces/flux.py +1 -1
- symai/extended/interfaces/gpt_image.py +1 -1
- symai/extended/interfaces/input.py +1 -1
- symai/extended/interfaces/llava.py +0 -1
- symai/extended/interfaces/naive_vectordb.py +7 -8
- symai/extended/interfaces/naive_webscraping.py +1 -1
- symai/extended/interfaces/ocr.py +1 -1
- symai/extended/interfaces/pinecone.py +6 -5
- symai/extended/interfaces/serpapi.py +1 -1
- symai/extended/interfaces/terminal.py +2 -3
- symai/extended/interfaces/tts.py +1 -1
- symai/extended/interfaces/whisper.py +1 -1
- symai/extended/interfaces/wolframalpha.py +1 -1
- symai/extended/metrics/__init__.py +11 -1
- symai/extended/metrics/similarity.py +11 -13
- symai/extended/os_command.py +17 -16
- symai/extended/packages/__init__.py +29 -3
- symai/extended/packages/symdev.py +19 -16
- symai/extended/packages/sympkg.py +12 -9
- symai/extended/packages/symrun.py +21 -19
- symai/extended/repo_cloner.py +11 -10
- symai/extended/seo_query_optimizer.py +1 -2
- symai/extended/solver.py +20 -23
- symai/extended/summarizer.py +4 -3
- symai/extended/taypan_interpreter.py +10 -12
- symai/extended/vectordb.py +99 -82
- symai/formatter/__init__.py +9 -1
- symai/formatter/formatter.py +12 -16
- symai/formatter/regex.py +62 -63
- symai/functional.py +173 -122
- symai/imports.py +136 -127
- symai/interfaces.py +56 -27
- symai/memory.py +14 -13
- symai/misc/console.py +49 -39
- symai/misc/loader.py +5 -3
- symai/models/__init__.py +17 -1
- symai/models/base.py +269 -181
- symai/models/errors.py +0 -1
- symai/ops/__init__.py +32 -22
- symai/ops/measures.py +11 -15
- symai/ops/primitives.py +348 -228
- symai/post_processors.py +32 -28
- symai/pre_processors.py +39 -41
- symai/processor.py +6 -4
- symai/prompts.py +59 -45
- symai/server/huggingface_server.py +23 -20
- symai/server/llama_cpp_server.py +7 -5
- symai/shell.py +3 -4
- symai/shellsv.py +499 -375
- symai/strategy.py +517 -287
- symai/symbol.py +111 -116
- symai/utils.py +42 -36
- {symbolicai-0.21.0.dist-info → symbolicai-1.0.0.dist-info}/METADATA +4 -2
- symbolicai-1.0.0.dist-info/RECORD +163 -0
- symbolicai-0.21.0.dist-info/RECORD +0 -162
- {symbolicai-0.21.0.dist-info → symbolicai-1.0.0.dist-info}/WHEEL +0 -0
- {symbolicai-0.21.0.dist-info → symbolicai-1.0.0.dist-info}/entry_points.txt +0 -0
- {symbolicai-0.21.0.dist-info → symbolicai-1.0.0.dist-info}/licenses/LICENSE +0 -0
- {symbolicai-0.21.0.dist-info → symbolicai-1.0.0.dist-info}/top_level.txt +0 -0
symai/misc/console.py
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import re
|
|
2
|
-
import pygments
|
|
3
1
|
import logging
|
|
2
|
+
import re
|
|
4
3
|
|
|
5
4
|
#@TODO: refactor to use rich instead of prompt_toolkit
|
|
6
5
|
from html import escape as escape_html
|
|
7
|
-
from
|
|
8
|
-
|
|
6
|
+
from typing import ClassVar
|
|
7
|
+
|
|
8
|
+
import pygments
|
|
9
|
+
from prompt_toolkit import HTML, print_formatted_text
|
|
10
|
+
from prompt_toolkit.formatted_text import PygmentsTokens
|
|
9
11
|
from pygments.lexers.c_cpp import CppLexer
|
|
12
|
+
from pygments.lexers.javascript import JavascriptLexer
|
|
13
|
+
from pygments.lexers.python import PythonLexer
|
|
10
14
|
from pygments.lexers.shell import BashLexer
|
|
11
|
-
from prompt_toolkit import print_formatted_text
|
|
12
|
-
from prompt_toolkit import HTML
|
|
13
|
-
from prompt_toolkit.formatted_text import PygmentsTokens
|
|
14
|
-
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
|
-
print = print_formatted_text
|
|
17
|
+
print = print_formatted_text # noqa
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
class ConsoleStyle
|
|
21
|
-
style_types = {
|
|
20
|
+
class ConsoleStyle:
|
|
21
|
+
style_types: ClassVar[dict[str, str]] = {
|
|
22
22
|
'alert': 'orange',
|
|
23
23
|
'error': 'ansired',
|
|
24
24
|
'warn': 'ansiyellow',
|
|
@@ -55,32 +55,42 @@ class ConsoleStyle(object):
|
|
|
55
55
|
style = self.style_types.get(self.style_type, self.style_types['default'])
|
|
56
56
|
|
|
57
57
|
if style == self.style_types['code']:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
for segment in segments:
|
|
62
|
-
if segment == '```':
|
|
63
|
-
is_code = not is_code
|
|
64
|
-
continue
|
|
65
|
-
if is_code:
|
|
66
|
-
# Determine lexer
|
|
67
|
-
if 'python' in segment.lower():
|
|
68
|
-
lexer = PythonLexer()
|
|
69
|
-
elif 'javascript' in segment.lower() or 'typescript' in segment.lower():
|
|
70
|
-
lexer = JavascriptLexer()
|
|
71
|
-
elif 'c++' in segment.lower():
|
|
72
|
-
lexer = CppLexer()
|
|
73
|
-
else:
|
|
74
|
-
lexer = BashLexer()
|
|
75
|
-
# Print highlighted code
|
|
76
|
-
tokens = list(pygments.lex("```" + segment + "```", lexer))
|
|
77
|
-
print(PygmentsTokens(tokens), end='')
|
|
78
|
-
else:
|
|
79
|
-
# Print the segment normally
|
|
80
|
-
print(segment, end='\n')
|
|
81
|
-
elif style == self.style_types['default']:
|
|
58
|
+
self._print_code_message(message)
|
|
59
|
+
return
|
|
60
|
+
if style == self.style_types['default']:
|
|
82
61
|
print(message)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
62
|
+
return
|
|
63
|
+
if style == self.style_types['custom']:
|
|
64
|
+
self._print_html(self.color, content_for_html)
|
|
65
|
+
return
|
|
66
|
+
self._print_html(style, content_for_html)
|
|
67
|
+
|
|
68
|
+
def _print_code_message(self, message: str) -> None:
|
|
69
|
+
segments = re.split(r'(```)', message)
|
|
70
|
+
is_code_segment = False
|
|
71
|
+
for segment in segments:
|
|
72
|
+
if segment == '```':
|
|
73
|
+
is_code_segment = not is_code_segment
|
|
74
|
+
continue
|
|
75
|
+
if is_code_segment:
|
|
76
|
+
self._print_code_segment(segment)
|
|
77
|
+
continue
|
|
78
|
+
print(segment, end='\n')
|
|
79
|
+
|
|
80
|
+
def _print_code_segment(self, segment: str) -> None:
|
|
81
|
+
lexer = self._select_lexer(segment)
|
|
82
|
+
tokens = list(pygments.lex("```" + segment + "```", lexer))
|
|
83
|
+
print(PygmentsTokens(tokens), end='')
|
|
84
|
+
|
|
85
|
+
def _select_lexer(self, segment: str):
|
|
86
|
+
lowered_segment = segment.lower()
|
|
87
|
+
if 'python' in lowered_segment:
|
|
88
|
+
return PythonLexer()
|
|
89
|
+
if 'javascript' in lowered_segment or 'typescript' in lowered_segment:
|
|
90
|
+
return JavascriptLexer()
|
|
91
|
+
if 'c++' in lowered_segment:
|
|
92
|
+
return CppLexer()
|
|
93
|
+
return BashLexer()
|
|
94
|
+
|
|
95
|
+
def _print_html(self, color: str, content: str) -> None:
|
|
96
|
+
print(HTML(f'<style fg="{color}">{content}</style>'))
|
symai/misc/loader.py
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
from itertools import cycle
|
|
3
3
|
from shutil import get_terminal_size
|
|
4
|
-
from threading import
|
|
4
|
+
from threading import Event, Thread
|
|
5
5
|
from time import sleep
|
|
6
|
+
|
|
6
7
|
from prompt_toolkit import print_formatted_text
|
|
8
|
+
|
|
7
9
|
from .console import ConsoleStyle
|
|
8
10
|
|
|
9
|
-
print = print_formatted_text
|
|
11
|
+
print = print_formatted_text # noqa
|
|
10
12
|
|
|
11
13
|
class Loader:
|
|
12
14
|
def __init__(self, desc="Loading...", end="\n", timeout=0.1):
|
|
@@ -56,4 +58,4 @@ class Loader:
|
|
|
56
58
|
self.stop()
|
|
57
59
|
|
|
58
60
|
def print(self, message):
|
|
59
|
-
print(message, style=
|
|
61
|
+
print(message, style="ansigray")
|
symai/models/__init__.py
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
from .base import
|
|
1
|
+
from .base import (
|
|
2
|
+
Const,
|
|
3
|
+
CustomConstraint,
|
|
4
|
+
LengthConstraint,
|
|
5
|
+
LLMDataModel,
|
|
6
|
+
build_dynamic_llm_datamodel,
|
|
7
|
+
)
|
|
2
8
|
from .errors import ExceptionWithUsage, TypeValidationError
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"Const",
|
|
12
|
+
"CustomConstraint",
|
|
13
|
+
"ExceptionWithUsage",
|
|
14
|
+
"LLMDataModel",
|
|
15
|
+
"LengthConstraint",
|
|
16
|
+
"TypeValidationError",
|
|
17
|
+
"build_dynamic_llm_datamodel",
|
|
18
|
+
]
|