symbolicai 0.20.0__tar.gz → 0.20.1__tar.gz
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.
- {symbolicai-0.20.0 → symbolicai-0.20.1}/PKG-INFO +1 -1
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/__init__.py +1 -1
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_openai.py +67 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/PKG-INFO +1 -1
- {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/engines/search/openai_engine.py +26 -2
- {symbolicai-0.20.0 → symbolicai-0.20.1}/.gitbook.yaml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/.github/FUNDING.yml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/.gitignore +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/.symai/symsh.config.json +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/CITATION.cff +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/Dockerfile +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/LICENSE +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/MANIFEST.in +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/README.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/app.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/banner.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/cat.jpg +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/cat.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/contract_flow.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img1.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img10.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img2.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img3.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img4.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img5.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img6.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img7.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img8.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img9.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/preview.gif +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/screen1.jpeg +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/symai_logo.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/symsh.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid1.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid2.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid3.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid4.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid5.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid6.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news.html +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news_prev.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/bin/install.ps1 +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/bin/install.sh +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/build.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docker-compose.yml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/clip_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/custom_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/drawing_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/file_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/indexing_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/local_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/neurosymbolic_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/ocr_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/search_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/speech_to_text_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/symbolic_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/webscraping_engine.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/contracts.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/error_handling.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/expressions.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/import.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/operations.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/primitives.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/INSTALLATION.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/INTRODUCTION.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/QUICKSTART.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/SUMMARY.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/chatbot.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/packages.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/shell.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/chatbot.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/context.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/data_query.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/video_tutorials.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/environment.yml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/examples/contracts.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/examples/primitives.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/icon_converter.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/installer.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Basics.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/ChatBot.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Conversation.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Indexer.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/News.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Queries.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/TTS_Persona.ipynb +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/Lean engine.png +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/a_star.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/abstract.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/audio.mp3 +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples.jsonl +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples_prepared_train.jsonl +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples_prepared_valid.jsonl +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/demo.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/demo_strategy.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/docs.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/einsteins_puzzle.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/file.json +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/lean.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/news.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/paper.pdf +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/paper.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/sql.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/public/eai.svg +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/pyproject.toml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/pytest.ini +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/setup.cfg +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/setup.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/TERMS_OF_SERVICE.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/base.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/driver/webclient.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/drawing/engine_bfl.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/drawing/engine_gpt_image.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_llama_cpp.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_openai.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_plugin_embeddings.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/execute/engine_python.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/files/engine_io.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/imagecaptioning/engine_blip2.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/index/engine_pinecone.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/index/engine_vectordb.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/lean/engine_lean4.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_groq.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_huggingface.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_llama_cpp.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/ocr/engine_apilayer.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/output/engine_stdout.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_perplexity.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_serpapi.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/speech_to_text/engine_local_whisper.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/symbolic/engine_wolframalpha.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/text_to_speech/engine_openai.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/text_vision/engine_clip.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/userinput/engine_console.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/webscraping/engine_requests.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/anthropic.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/deepseek.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/google.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/groq.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/openai.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/settings.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/chat.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/dynamic.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/pipeline.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/stats.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/components.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/constraints.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/context.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/core.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/core_ext.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/endpoints/__init__py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/endpoints/api.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/exceptions.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/api_builder.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/arxiv_pdf_parser.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/bibtex_parser.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/conversation.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/document.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/file_merger.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/graph.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/html_style_template.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/blip_2.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/clip.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/console.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/dall_e.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/file.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/flux.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/gpt_image.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/input.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/llava.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/naive_vectordb.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/naive_webscraping.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/ocr.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/openai_search.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/perplexity.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/pinecone.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/python.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/serpapi.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/terminal.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/tts.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/whisper.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/wolframalpha.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/metrics/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/metrics/similarity.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/os_command.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/symdev.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/sympkg.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/symrun.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/builder.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/dialogue.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/persona.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/research/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/research/yann_lecun.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/sales/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/sales/erik_james.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/student/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/student/max_tenner.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/repo_cloner.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/seo_query_optimizer.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/solver.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/strategies/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/strategies/cot.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/summarizer.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/taypan_interpreter.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/vectordb.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/emoji.pytxt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/formatter.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/regex.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/functional.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/imports.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/interfaces.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/memory.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/menu/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/menu/screen.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/console.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/loader.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/base.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/errors.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/measures.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/primitives.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/post_processors.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/pre_processors.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/processor.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/prompts.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/__init__.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/huggingface_server.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/llama_cpp_server.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/shell.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/shellsv.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/strategy.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/symbol.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/symsh.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/utils.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/SOURCES.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/dependency_links.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/entry_points.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/requires.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/top_level.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/README.md +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/data/audio.mp3 +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/data/pg1727.txt +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/engines/search/perplexity_engine.py +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/trusted_repos.yml +0 -0
- {symbolicai-0.20.0 → symbolicai-0.20.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: symbolicai
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.1
|
|
4
4
|
Summary: A Neurosymbolic Perspective on Large Language Models
|
|
5
5
|
Author-email: Marius-Constantin Dinu <marius@extensity.ai>, Leoveanu-Condrei Claudiu <leo@extensity.ai>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -230,6 +230,8 @@ class SearchResult(Result):
|
|
|
230
230
|
|
|
231
231
|
|
|
232
232
|
class GPTXSearchEngine(Engine):
|
|
233
|
+
MAX_ALLOWED_DOMAINS = 20
|
|
234
|
+
|
|
233
235
|
def __init__(self, api_key: str | None = None, model: str | None = None):
|
|
234
236
|
super().__init__()
|
|
235
237
|
self.config = deepcopy(SYMAI_CONFIG)
|
|
@@ -250,6 +252,65 @@ class GPTXSearchEngine(Engine):
|
|
|
250
252
|
return 'search'
|
|
251
253
|
return super().id() # default to unregistered
|
|
252
254
|
|
|
255
|
+
def _extract_netloc(self, raw_domain: str | None) -> str | None:
|
|
256
|
+
if not isinstance(raw_domain, str):
|
|
257
|
+
return None
|
|
258
|
+
candidate = raw_domain.strip()
|
|
259
|
+
if not candidate:
|
|
260
|
+
return None
|
|
261
|
+
parsed = urlsplit(candidate if '://' in candidate else f"//{candidate}")
|
|
262
|
+
netloc = parsed.netloc or parsed.path
|
|
263
|
+
if not netloc:
|
|
264
|
+
return None
|
|
265
|
+
if '@' in netloc:
|
|
266
|
+
netloc = netloc.split('@', 1)[1]
|
|
267
|
+
if ':' in netloc:
|
|
268
|
+
netloc = netloc.split(':', 1)[0]
|
|
269
|
+
netloc = netloc.strip('.').strip()
|
|
270
|
+
if not netloc:
|
|
271
|
+
return None
|
|
272
|
+
return netloc.lower()
|
|
273
|
+
|
|
274
|
+
def _normalize_allowed_domains(self, domains: list[str] | None) -> list[str]:
|
|
275
|
+
if not domains or not isinstance(domains, list):
|
|
276
|
+
return []
|
|
277
|
+
|
|
278
|
+
normalized: list[str] = []
|
|
279
|
+
seen: set[str] = set()
|
|
280
|
+
for domain in domains:
|
|
281
|
+
netloc = self._extract_netloc(domain)
|
|
282
|
+
if not netloc or netloc in seen:
|
|
283
|
+
continue
|
|
284
|
+
# Validate that netloc is actually a valid domain
|
|
285
|
+
if not self._is_domain(netloc):
|
|
286
|
+
continue
|
|
287
|
+
normalized.append(netloc)
|
|
288
|
+
seen.add(netloc)
|
|
289
|
+
if len(normalized) >= self.MAX_ALLOWED_DOMAINS:
|
|
290
|
+
break
|
|
291
|
+
return normalized
|
|
292
|
+
|
|
293
|
+
def _is_domain(self, s: str) -> bool:
|
|
294
|
+
_label_re = re.compile(r"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$")
|
|
295
|
+
if not s:
|
|
296
|
+
return False
|
|
297
|
+
host = s.strip().rstrip(".")
|
|
298
|
+
# If the input might be a URL, extract the hostname via urllib:
|
|
299
|
+
if "://" in host or "/" in host or "@" in host:
|
|
300
|
+
host = urlsplit(host if "://" in host else f"//{host}").hostname or ""
|
|
301
|
+
if not host:
|
|
302
|
+
return False
|
|
303
|
+
try:
|
|
304
|
+
host_ascii = host.encode("idna").decode("ascii")
|
|
305
|
+
except Exception:
|
|
306
|
+
return False
|
|
307
|
+
if len(host_ascii) > 253:
|
|
308
|
+
return False
|
|
309
|
+
labels = host_ascii.split(".")
|
|
310
|
+
if len(labels) < 2: # require a dot (reject "google")
|
|
311
|
+
return False
|
|
312
|
+
return all(_label_re.fullmatch(lbl or "") for lbl in labels)
|
|
313
|
+
|
|
253
314
|
def command(self, *args, **kwargs):
|
|
254
315
|
super().command(*args, **kwargs)
|
|
255
316
|
if 'SEARCH_ENGINE_API_KEY' in kwargs:
|
|
@@ -266,6 +327,12 @@ class GPTXSearchEngine(Engine):
|
|
|
266
327
|
if user_location:
|
|
267
328
|
tool_definition['user_location'] = user_location
|
|
268
329
|
|
|
330
|
+
allowed_domains = self._normalize_allowed_domains(kwargs.get('allowed_domains'))
|
|
331
|
+
if allowed_domains:
|
|
332
|
+
tool_definition['filters'] = {
|
|
333
|
+
'allowed_domains': allowed_domains
|
|
334
|
+
}
|
|
335
|
+
|
|
269
336
|
self.model = kwargs.get('model', self.model) # Important for MetadataTracker to work correctly
|
|
270
337
|
payload = {
|
|
271
338
|
"model": self.model,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: symbolicai
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.1
|
|
4
4
|
Summary: A Neurosymbolic Perspective on Large Language Models
|
|
5
5
|
Author-email: Marius-Constantin Dinu <marius@extensity.ai>, Leoveanu-Condrei Claudiu <leo@extensity.ai>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import re
|
|
3
|
+
from urllib.parse import urlparse
|
|
3
4
|
|
|
4
5
|
import pytest
|
|
5
6
|
|
|
@@ -17,13 +18,12 @@ def _get_api_key():
|
|
|
17
18
|
)
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
@pytest.mark.parametrize("model", ["gpt-4.1-mini", "gpt-5-
|
|
21
|
+
@pytest.mark.parametrize("model", ["gpt-4.1-mini", "gpt-5-nano"])
|
|
21
22
|
def test_openai_search_citations_and_formatting_live(model):
|
|
22
23
|
api_key = _get_api_key()
|
|
23
24
|
if not api_key:
|
|
24
25
|
pytest.skip("OPENAI_API_KEY/SEARCH_ENGINE_API_KEY not set; live test skipped")
|
|
25
26
|
|
|
26
|
-
# Register a fresh engine instance with the provided API key and target model
|
|
27
27
|
engine = GPTXSearchEngine(api_key=api_key, model=model)
|
|
28
28
|
EngineRepository.register("search", engine, allow_engine_override=True)
|
|
29
29
|
|
|
@@ -56,3 +56,27 @@ def test_openai_search_citations_and_formatting_live(model):
|
|
|
56
56
|
|
|
57
57
|
# 3) Formatting: At least one marker pattern with newline is present
|
|
58
58
|
assert re.search(r"\[\d+\] \([^)]+\)\n", res.value)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@pytest.mark.parametrize("model", ["gpt-4.1", "gpt-5-nano"])
|
|
62
|
+
def test_openai_search_domain_filtering(model):
|
|
63
|
+
api_key = _get_api_key()
|
|
64
|
+
if not api_key:
|
|
65
|
+
pytest.skip("OPENAI_API_KEY/SEARCH_ENGINE_API_KEY not set; live test skipped")
|
|
66
|
+
|
|
67
|
+
engine = GPTXSearchEngine(api_key=api_key, model=model)
|
|
68
|
+
EngineRepository.register("search", engine, allow_engine_override=True)
|
|
69
|
+
|
|
70
|
+
domains = [
|
|
71
|
+
"tomshardware.com", # ok
|
|
72
|
+
"https://www.arstechnica.com", # ok, but the internal processing should yield the root domain
|
|
73
|
+
"tomshardware" # not ok
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
query = "what is the best gpu"
|
|
77
|
+
search = openai_search()
|
|
78
|
+
res = search(query, model=model, allowed_domains=domains)
|
|
79
|
+
|
|
80
|
+
allowed_netlocs = { "www.tomshardware.com", "www.arstechnica.com" }
|
|
81
|
+
citation_netlocs = { urlparse(c.url).netloc for c in res.get_citations() }
|
|
82
|
+
assert allowed_netlocs & citation_netlocs, "No citations from allowed domains found"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_plugin_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/imagecaptioning/engine_blip2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_huggingface.py
RENAMED
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_llama_cpp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/speech_to_text/engine_local_whisper.py
RENAMED
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/symbolic/engine_wolframalpha.py
RENAMED
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/text_to_speech/engine_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/webscraping/engine_requests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|