symbolicai 0.20.0__tar.gz → 0.20.2__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.
Files changed (265) hide show
  1. {symbolicai-0.20.0 → symbolicai-0.20.2}/PKG-INFO +1 -1
  2. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/search_engine.md +12 -0
  3. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/__init__.py +1 -1
  4. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/search/engine_openai.py +72 -0
  5. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/PKG-INFO +1 -1
  6. {symbolicai-0.20.0 → symbolicai-0.20.2}/tests/engines/search/openai_engine.py +26 -2
  7. {symbolicai-0.20.0 → symbolicai-0.20.2}/.gitbook.yaml +0 -0
  8. {symbolicai-0.20.0 → symbolicai-0.20.2}/.github/FUNDING.yml +0 -0
  9. {symbolicai-0.20.0 → symbolicai-0.20.2}/.gitignore +0 -0
  10. {symbolicai-0.20.0 → symbolicai-0.20.2}/.symai/symsh.config.json +0 -0
  11. {symbolicai-0.20.0 → symbolicai-0.20.2}/CITATION.cff +0 -0
  12. {symbolicai-0.20.0 → symbolicai-0.20.2}/Dockerfile +0 -0
  13. {symbolicai-0.20.0 → symbolicai-0.20.2}/LICENSE +0 -0
  14. {symbolicai-0.20.0 → symbolicai-0.20.2}/MANIFEST.in +0 -0
  15. {symbolicai-0.20.0 → symbolicai-0.20.2}/README.md +0 -0
  16. {symbolicai-0.20.0 → symbolicai-0.20.2}/app.py +0 -0
  17. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/banner.png +0 -0
  18. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/cat.jpg +0 -0
  19. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/cat.png +0 -0
  20. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/contract_flow.png +0 -0
  21. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img1.png +0 -0
  22. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img10.png +0 -0
  23. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img2.png +0 -0
  24. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img3.png +0 -0
  25. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img4.png +0 -0
  26. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img5.png +0 -0
  27. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img6.png +0 -0
  28. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img7.png +0 -0
  29. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img8.png +0 -0
  30. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/img9.png +0 -0
  31. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/preview.gif +0 -0
  32. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/screen1.jpeg +0 -0
  33. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/symai_logo.png +0 -0
  34. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/symsh.png +0 -0
  35. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid1.png +0 -0
  36. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid2.png +0 -0
  37. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid3.png +0 -0
  38. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid4.png +0 -0
  39. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid5.png +0 -0
  40. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/images/vid6.png +0 -0
  41. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/results/news.html +0 -0
  42. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/results/news.png +0 -0
  43. {symbolicai-0.20.0 → symbolicai-0.20.2}/assets/results/news_prev.png +0 -0
  44. {symbolicai-0.20.0 → symbolicai-0.20.2}/bin/install.ps1 +0 -0
  45. {symbolicai-0.20.0 → symbolicai-0.20.2}/bin/install.sh +0 -0
  46. {symbolicai-0.20.0 → symbolicai-0.20.2}/build.py +0 -0
  47. {symbolicai-0.20.0 → symbolicai-0.20.2}/docker-compose.yml +0 -0
  48. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/clip_engine.md +0 -0
  49. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/custom_engine.md +0 -0
  50. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/drawing_engine.md +0 -0
  51. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/file_engine.md +0 -0
  52. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/indexing_engine.md +0 -0
  53. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/local_engine.md +0 -0
  54. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/neurosymbolic_engine.md +0 -0
  55. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/ocr_engine.md +0 -0
  56. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/speech_to_text_engine.md +0 -0
  57. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/symbolic_engine.md +0 -0
  58. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/ENGINES/webscraping_engine.md +0 -0
  59. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/contracts.md +0 -0
  60. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/error_handling.md +0 -0
  61. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/expressions.md +0 -0
  62. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/import.md +0 -0
  63. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/operations.md +0 -0
  64. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/FEATURES/primitives.md +0 -0
  65. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/INSTALLATION.md +0 -0
  66. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/INTRODUCTION.md +0 -0
  67. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/QUICKSTART.md +0 -0
  68. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/SUMMARY.md +0 -0
  69. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TOOLS/chatbot.md +0 -0
  70. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TOOLS/packages.md +0 -0
  71. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TOOLS/shell.md +0 -0
  72. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TUTORIALS/chatbot.md +0 -0
  73. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TUTORIALS/context.md +0 -0
  74. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TUTORIALS/data_query.md +0 -0
  75. {symbolicai-0.20.0 → symbolicai-0.20.2}/docs/source/TUTORIALS/video_tutorials.md +0 -0
  76. {symbolicai-0.20.0 → symbolicai-0.20.2}/environment.yml +0 -0
  77. {symbolicai-0.20.0 → symbolicai-0.20.2}/examples/contracts.ipynb +0 -0
  78. {symbolicai-0.20.0 → symbolicai-0.20.2}/examples/primitives.ipynb +0 -0
  79. {symbolicai-0.20.0 → symbolicai-0.20.2}/icon_converter.py +0 -0
  80. {symbolicai-0.20.0 → symbolicai-0.20.2}/installer.py +0 -0
  81. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/Basics.ipynb +0 -0
  82. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/ChatBot.ipynb +0 -0
  83. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/Conversation.ipynb +0 -0
  84. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/Indexer.ipynb +0 -0
  85. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/News.ipynb +0 -0
  86. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/Queries.ipynb +0 -0
  87. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/TTS_Persona.ipynb +0 -0
  88. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/Lean engine.png +0 -0
  89. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/a_star.txt +0 -0
  90. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/abstract.py +0 -0
  91. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/audio.mp3 +0 -0
  92. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/dbpedia_samples.jsonl +0 -0
  93. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/dbpedia_samples_prepared_train.jsonl +0 -0
  94. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/dbpedia_samples_prepared_valid.jsonl +0 -0
  95. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/demo.py +0 -0
  96. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/demo_strategy.py +0 -0
  97. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/docs.py +0 -0
  98. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/einsteins_puzzle.txt +0 -0
  99. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/file.json +0 -0
  100. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/lean.py +0 -0
  101. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/news.py +0 -0
  102. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/paper.pdf +0 -0
  103. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/paper.py +0 -0
  104. {symbolicai-0.20.0 → symbolicai-0.20.2}/legacy/notebooks/examples/sql.py +0 -0
  105. {symbolicai-0.20.0 → symbolicai-0.20.2}/public/eai.svg +0 -0
  106. {symbolicai-0.20.0 → symbolicai-0.20.2}/pyproject.toml +0 -0
  107. {symbolicai-0.20.0 → symbolicai-0.20.2}/pytest.ini +0 -0
  108. {symbolicai-0.20.0 → symbolicai-0.20.2}/setup.cfg +0 -0
  109. {symbolicai-0.20.0 → symbolicai-0.20.2}/setup.py +0 -0
  110. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/TERMS_OF_SERVICE.md +0 -0
  111. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/__init__.py +0 -0
  112. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/base.py +0 -0
  113. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/driver/webclient.py +0 -0
  114. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/__init__.py +0 -0
  115. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/drawing/engine_bfl.py +0 -0
  116. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/drawing/engine_gpt_image.py +0 -0
  117. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/embedding/engine_llama_cpp.py +0 -0
  118. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/embedding/engine_openai.py +0 -0
  119. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/embedding/engine_plugin_embeddings.py +0 -0
  120. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/execute/engine_python.py +0 -0
  121. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/files/engine_io.py +0 -0
  122. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/imagecaptioning/engine_blip2.py +0 -0
  123. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +0 -0
  124. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/index/engine_pinecone.py +0 -0
  125. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/index/engine_vectordb.py +0 -0
  126. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/lean/engine_lean4.py +0 -0
  127. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/__init__.py +0 -0
  128. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +0 -0
  129. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +0 -0
  130. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +0 -0
  131. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +0 -0
  132. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_groq.py +0 -0
  133. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_huggingface.py +0 -0
  134. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_llama_cpp.py +0 -0
  135. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +0 -0
  136. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +0 -0
  137. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/ocr/engine_apilayer.py +0 -0
  138. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/output/engine_stdout.py +0 -0
  139. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/search/engine_perplexity.py +0 -0
  140. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/search/engine_serpapi.py +0 -0
  141. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/speech_to_text/engine_local_whisper.py +0 -0
  142. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/symbolic/engine_wolframalpha.py +0 -0
  143. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/text_to_speech/engine_openai.py +0 -0
  144. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/text_vision/engine_clip.py +0 -0
  145. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/userinput/engine_console.py +0 -0
  146. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/engines/webscraping/engine_requests.py +0 -0
  147. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/__init__.py +0 -0
  148. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/anthropic.py +0 -0
  149. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/deepseek.py +0 -0
  150. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/google.py +0 -0
  151. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/groq.py +0 -0
  152. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/mixin/openai.py +0 -0
  153. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/backend/settings.py +0 -0
  154. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/chat.py +0 -0
  155. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/collect/__init__.py +0 -0
  156. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/collect/dynamic.py +0 -0
  157. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/collect/pipeline.py +0 -0
  158. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/collect/stats.py +0 -0
  159. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/components.py +0 -0
  160. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/constraints.py +0 -0
  161. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/context.py +0 -0
  162. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/core.py +0 -0
  163. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/core_ext.py +0 -0
  164. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/endpoints/__init__py +0 -0
  165. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/endpoints/api.py +0 -0
  166. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/exceptions.py +0 -0
  167. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/__init__.py +0 -0
  168. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/api_builder.py +0 -0
  169. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/arxiv_pdf_parser.py +0 -0
  170. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/bibtex_parser.py +0 -0
  171. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/conversation.py +0 -0
  172. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/document.py +0 -0
  173. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/file_merger.py +0 -0
  174. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/graph.py +0 -0
  175. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/html_style_template.py +0 -0
  176. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/__init__.py +0 -0
  177. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/blip_2.py +0 -0
  178. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/clip.py +0 -0
  179. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/console.py +0 -0
  180. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/dall_e.py +0 -0
  181. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/file.py +0 -0
  182. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/flux.py +0 -0
  183. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/gpt_image.py +0 -0
  184. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/input.py +0 -0
  185. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/llava.py +0 -0
  186. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/naive_vectordb.py +0 -0
  187. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/naive_webscraping.py +0 -0
  188. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/ocr.py +0 -0
  189. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/openai_search.py +0 -0
  190. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/perplexity.py +0 -0
  191. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/pinecone.py +0 -0
  192. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/python.py +0 -0
  193. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/serpapi.py +0 -0
  194. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/terminal.py +0 -0
  195. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/tts.py +0 -0
  196. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/whisper.py +0 -0
  197. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/interfaces/wolframalpha.py +0 -0
  198. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/metrics/__init__.py +0 -0
  199. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/metrics/similarity.py +0 -0
  200. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/os_command.py +0 -0
  201. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/packages/__init__.py +0 -0
  202. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/packages/symdev.py +0 -0
  203. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/packages/sympkg.py +0 -0
  204. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/packages/symrun.py +0 -0
  205. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/__init__.py +0 -0
  206. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/builder.py +0 -0
  207. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/dialogue.py +0 -0
  208. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/persona.py +0 -0
  209. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/research/__init__.py +0 -0
  210. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/research/yann_lecun.py +0 -0
  211. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/sales/__init__.py +0 -0
  212. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/sales/erik_james.py +0 -0
  213. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/student/__init__.py +0 -0
  214. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/personas/student/max_tenner.py +0 -0
  215. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/repo_cloner.py +0 -0
  216. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/seo_query_optimizer.py +0 -0
  217. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/solver.py +0 -0
  218. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/strategies/__init__.py +0 -0
  219. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/strategies/cot.py +0 -0
  220. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/summarizer.py +0 -0
  221. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/taypan_interpreter.py +0 -0
  222. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/extended/vectordb.py +0 -0
  223. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/formatter/__init__.py +0 -0
  224. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/formatter/emoji.pytxt +0 -0
  225. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/formatter/formatter.py +0 -0
  226. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/formatter/regex.py +0 -0
  227. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/functional.py +0 -0
  228. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/imports.py +0 -0
  229. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/interfaces.py +0 -0
  230. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/memory.py +0 -0
  231. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/menu/__init__.py +0 -0
  232. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/menu/screen.py +0 -0
  233. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/misc/__init__.py +0 -0
  234. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/misc/console.py +0 -0
  235. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/misc/loader.py +0 -0
  236. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/models/__init__.py +0 -0
  237. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/models/base.py +0 -0
  238. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/models/errors.py +0 -0
  239. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/ops/__init__.py +0 -0
  240. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/ops/measures.py +0 -0
  241. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/ops/primitives.py +0 -0
  242. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/post_processors.py +0 -0
  243. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/pre_processors.py +0 -0
  244. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/processor.py +0 -0
  245. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/prompts.py +0 -0
  246. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/server/__init__.py +0 -0
  247. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/server/huggingface_server.py +0 -0
  248. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/server/llama_cpp_server.py +0 -0
  249. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/shell.py +0 -0
  250. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/shellsv.py +0 -0
  251. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/strategy.py +0 -0
  252. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/symbol.py +0 -0
  253. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/symsh.md +0 -0
  254. {symbolicai-0.20.0 → symbolicai-0.20.2}/symai/utils.py +0 -0
  255. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/SOURCES.txt +0 -0
  256. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/dependency_links.txt +0 -0
  257. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/entry_points.txt +0 -0
  258. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/requires.txt +0 -0
  259. {symbolicai-0.20.0 → symbolicai-0.20.2}/symbolicai.egg-info/top_level.txt +0 -0
  260. {symbolicai-0.20.0 → symbolicai-0.20.2}/tests/README.md +0 -0
  261. {symbolicai-0.20.0 → symbolicai-0.20.2}/tests/data/audio.mp3 +0 -0
  262. {symbolicai-0.20.0 → symbolicai-0.20.2}/tests/data/pg1727.txt +0 -0
  263. {symbolicai-0.20.0 → symbolicai-0.20.2}/tests/engines/search/perplexity_engine.py +0 -0
  264. {symbolicai-0.20.0 → symbolicai-0.20.2}/trusted_repos.yml +0 -0
  265. {symbolicai-0.20.0 → symbolicai-0.20.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: symbolicai
3
- Version: 0.20.0
3
+ Version: 0.20.2
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
@@ -79,6 +79,16 @@ res = search("What local events are happening today?",
79
79
 
80
80
  # Control the amount of search context
81
81
  res = search("Explain quantum computing developments")
82
+
83
+ # Enable a reasoning model via the Responses API
84
+ res = search(
85
+ "Summarize the latest research on quantum error correction",
86
+ model="o4-mini",
87
+ reasoning={
88
+ "effort": "medium",
89
+ "summary": "auto"
90
+ }
91
+ )
82
92
  ```
83
93
 
84
94
  Here's how to configure the OpenAI search engine:
@@ -91,3 +101,5 @@ Here's how to configure the OpenAI search engine:
91
101
 
92
102
  }
93
103
  ```
104
+
105
+ This engine calls the OpenAI Responses API under the hood. When you target a reasoning-capable model, pass a `reasoning` dictionary matching the Responses payload schema (for example `{"effort": "low", "summary": "auto"}`). If omitted, the engine falls back to the default effort/summary settings shown above.
@@ -33,7 +33,7 @@ os.environ['TOKENIZERS_PARALLELISM'] = "false"
33
33
  # Create singleton instance
34
34
  config_manager = settings.SymAIConfig()
35
35
 
36
- SYMAI_VERSION = "0.20.0"
36
+ SYMAI_VERSION = "0.20.2"
37
37
  __version__ = SYMAI_VERSION
38
38
  __root_dir__ = config_manager.config_dir
39
39
 
@@ -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,7 +327,14 @@ 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
337
+
270
338
  payload = {
271
339
  "model": self.model,
272
340
  "input": messages,
@@ -274,6 +342,10 @@ class GPTXSearchEngine(Engine):
274
342
  "tool_choice": {"type": "web_search"} if self.model not in OPENAI_REASONING_MODELS else "auto" # force the use of web search tool for non-reasoning models
275
343
  }
276
344
 
345
+ if self.model in OPENAI_REASONING_MODELS:
346
+ reasoning = kwargs.get('reasoning', { "effort": "low", "summary": "auto" })
347
+ payload['reasoning'] = reasoning
348
+
277
349
  try:
278
350
  res = self.client.responses.create(**payload)
279
351
  res = SearchResult(res.dict())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: symbolicai
3
- Version: 0.20.0
3
+ Version: 0.20.2
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-mini"])
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