webscout 6.4__tar.gz → 6.6__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.

Potentially problematic release.


This version of webscout might be problematic. Click here for more details.

Files changed (223) hide show
  1. webscout-6.4/README.md → webscout-6.6/PKG-INFO +1363 -1507
  2. webscout-6.4/PKG-INFO → webscout-6.6/README.md +14 -293
  3. {webscout-6.4 → webscout-6.6}/setup.py +33 -36
  4. {webscout-6.4 → webscout-6.6}/webscout/AIutel.py +7 -54
  5. {webscout-6.4 → webscout-6.6}/webscout/DWEBS.py +48 -26
  6. {webscout-6.4/webscout → webscout-6.6/webscout/Extra/YTToolkit}/YTdownloader.py +990 -1103
  7. webscout-6.6/webscout/Extra/YTToolkit/__init__.py +3 -0
  8. {webscout-6.4/webscout → webscout-6.6/webscout/Extra/YTToolkit}/transcriber.py +1 -1
  9. webscout-6.6/webscout/Extra/YTToolkit/ytapi/__init__.py +6 -0
  10. webscout-6.6/webscout/Extra/YTToolkit/ytapi/channel.py +307 -0
  11. webscout-6.6/webscout/Extra/YTToolkit/ytapi/errors.py +13 -0
  12. webscout-6.6/webscout/Extra/YTToolkit/ytapi/extras.py +45 -0
  13. webscout-6.6/webscout/Extra/YTToolkit/ytapi/https.py +88 -0
  14. webscout-6.6/webscout/Extra/YTToolkit/ytapi/patterns.py +61 -0
  15. webscout-6.6/webscout/Extra/YTToolkit/ytapi/playlist.py +59 -0
  16. webscout-6.6/webscout/Extra/YTToolkit/ytapi/pool.py +8 -0
  17. webscout-6.6/webscout/Extra/YTToolkit/ytapi/query.py +37 -0
  18. webscout-6.6/webscout/Extra/YTToolkit/ytapi/stream.py +60 -0
  19. webscout-6.6/webscout/Extra/YTToolkit/ytapi/utils.py +62 -0
  20. webscout-6.6/webscout/Extra/YTToolkit/ytapi/video.py +102 -0
  21. {webscout-6.4 → webscout-6.6}/webscout/Extra/__init__.py +2 -1
  22. webscout-6.6/webscout/Extra/autocoder/autocoder_utiles.py +139 -0
  23. {webscout-6.4 → webscout-6.6}/webscout/Extra/autocoder/rawdog.py +679 -680
  24. {webscout-6.4 → webscout-6.6}/webscout/Extra/gguf.py +441 -441
  25. webscout-6.6/webscout/Extra/markdownlite/__init__.py +862 -0
  26. {webscout-6.4 → webscout-6.6}/webscout/Extra/weather_ascii.py +2 -2
  27. webscout-6.6/webscout/Provider/AISEARCH/__init__.py +2 -0
  28. webscout-6.6/webscout/Provider/AISEARCH/ooai.py +155 -0
  29. {webscout-6.4 → webscout-6.6}/webscout/Provider/Amigo.py +70 -85
  30. webscout-6.4/webscout/Provider/prefind.py → webscout-6.6/webscout/Provider/Jadve.py +72 -70
  31. webscout-6.6/webscout/Provider/Netwrck.py +235 -0
  32. {webscout-6.4 → webscout-6.6}/webscout/Provider/Openai.py +4 -3
  33. webscout-6.6/webscout/Provider/PI.py +293 -0
  34. {webscout-6.4 → webscout-6.6}/webscout/Provider/PizzaGPT.py +3 -3
  35. {webscout-6.4 → webscout-6.6}/webscout/Provider/Reka.py +0 -1
  36. webscout-6.6/webscout/Provider/TTS/__init__.py +7 -0
  37. webscout-6.6/webscout/Provider/TTS/deepgram.py +183 -0
  38. webscout-6.6/webscout/Provider/TTS/elevenlabs.py +137 -0
  39. webscout-6.6/webscout/Provider/TTS/gesserit.py +151 -0
  40. webscout-6.6/webscout/Provider/TTS/murfai.py +139 -0
  41. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTS/parler.py +134 -107
  42. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTS/streamElements.py +360 -275
  43. webscout-6.6/webscout/Provider/TTS/utils.py +280 -0
  44. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTS/voicepod.py +116 -116
  45. {webscout-6.4 → webscout-6.6}/webscout/Provider/TeachAnything.py +15 -2
  46. {webscout-6.4 → webscout-6.6}/webscout/Provider/Youchat.py +42 -8
  47. {webscout-6.4 → webscout-6.6}/webscout/Provider/__init__.py +8 -21
  48. {webscout-6.4 → webscout-6.6}/webscout/Provider/meta.py +794 -779
  49. webscout-6.6/webscout/Provider/multichat.py +230 -0
  50. {webscout-6.4 → webscout-6.6}/webscout/Provider/promptrefine.py +2 -2
  51. {webscout-6.4 → webscout-6.6}/webscout/Provider/talkai.py +10 -13
  52. {webscout-6.4 → webscout-6.6}/webscout/Provider/turboseek.py +5 -4
  53. {webscout-6.4 → webscout-6.6}/webscout/Provider/tutorai.py +8 -112
  54. {webscout-6.4 → webscout-6.6}/webscout/Provider/typegpt.py +5 -7
  55. {webscout-6.4 → webscout-6.6}/webscout/Provider/x0gpt.py +81 -9
  56. webscout-6.6/webscout/Provider/yep.py +262 -0
  57. {webscout-6.4 → webscout-6.6}/webscout/__init__.py +33 -28
  58. {webscout-6.4 → webscout-6.6}/webscout/conversation.py +24 -9
  59. webscout-6.6/webscout/exceptions.py +329 -0
  60. {webscout-6.4 → webscout-6.6}/webscout/litprinter/__init__.py +719 -831
  61. webscout-6.6/webscout/litprinter/colors.py +54 -0
  62. webscout-6.6/webscout/optimizers.py +420 -0
  63. {webscout-6.4 → webscout-6.6}/webscout/prompt_manager.py +279 -279
  64. webscout-6.6/webscout/scout/__init__.py +8 -0
  65. webscout-6.6/webscout/scout/core/__init__.py +7 -0
  66. webscout-6.6/webscout/scout/core/crawler.py +140 -0
  67. webscout-6.6/webscout/scout/core/scout.py +571 -0
  68. webscout-6.6/webscout/scout/core/search_result.py +96 -0
  69. webscout-6.6/webscout/scout/core/text_analyzer.py +63 -0
  70. webscout-6.6/webscout/scout/core/text_utils.py +277 -0
  71. webscout-6.6/webscout/scout/core/web_analyzer.py +52 -0
  72. webscout-6.6/webscout/scout/core.py +884 -0
  73. webscout-6.6/webscout/scout/element.py +460 -0
  74. webscout-6.6/webscout/scout/parsers/__init__.py +69 -0
  75. webscout-6.6/webscout/scout/parsers/html5lib_parser.py +172 -0
  76. webscout-6.6/webscout/scout/parsers/html_parser.py +236 -0
  77. webscout-6.6/webscout/scout/parsers/lxml_parser.py +178 -0
  78. webscout-6.6/webscout/scout/utils.py +38 -0
  79. webscout-6.6/webscout/update_checker.py +184 -0
  80. {webscout-6.4 → webscout-6.6}/webscout/version.py +1 -1
  81. webscout-6.6/webscout/zeroart/__init__.py +55 -0
  82. webscout-6.6/webscout/zeroart/base.py +60 -0
  83. webscout-6.6/webscout/zeroart/effects.py +99 -0
  84. webscout-6.6/webscout/zeroart/fonts.py +816 -0
  85. webscout-6.6/webscout/zerodir/__init__.py +225 -0
  86. {webscout-6.4 → webscout-6.6}/webscout.egg-info/PKG-INFO +18 -231
  87. {webscout-6.4 → webscout-6.6}/webscout.egg-info/SOURCES.txt +61 -18
  88. {webscout-6.4 → webscout-6.6}/webscout.egg-info/requires.txt +3 -6
  89. webscout-6.6/webscout.egg-info/top_level.txt +2 -0
  90. webscout-6.6/webstoken/__init__.py +30 -0
  91. webscout-6.6/webstoken/classifier.py +189 -0
  92. webscout-6.6/webstoken/keywords.py +216 -0
  93. webscout-6.6/webstoken/language.py +128 -0
  94. webscout-6.6/webstoken/ner.py +164 -0
  95. webscout-6.6/webstoken/normalizer.py +35 -0
  96. webscout-6.6/webstoken/processor.py +77 -0
  97. webscout-6.6/webstoken/sentiment.py +206 -0
  98. webscout-6.6/webstoken/stemmer.py +73 -0
  99. webscout-6.6/webstoken/t.py +75 -0
  100. webscout-6.6/webstoken/tagger.py +60 -0
  101. webscout-6.6/webstoken/tokenizer.py +158 -0
  102. webscout-6.4/webscout/Agents/Onlinesearcher.py +0 -182
  103. webscout-6.4/webscout/Agents/__init__.py +0 -2
  104. webscout-6.4/webscout/Agents/functioncall.py +0 -248
  105. webscout-6.4/webscout/Bing_search.py +0 -251
  106. webscout-6.4/webscout/Extra/autocoder/autocoder_utiles.py +0 -121
  107. webscout-6.4/webscout/Provider/PI.py +0 -222
  108. webscout-6.4/webscout/Provider/Perplexity.py +0 -599
  109. webscout-6.4/webscout/Provider/RoboCoders.py +0 -206
  110. webscout-6.4/webscout/Provider/TTS/__init__.py +0 -3
  111. webscout-6.4/webscout/Provider/genspark.py +0 -225
  112. webscout-6.4/webscout/Provider/perplexitylabs.py +0 -265
  113. webscout-6.4/webscout/Provider/twitterclone.py +0 -251
  114. webscout-6.4/webscout/Provider/upstage.py +0 -230
  115. webscout-6.4/webscout/Provider/yep.py +0 -500
  116. webscout-6.4/webscout/exceptions.py +0 -161
  117. webscout-6.4/webscout/gpt4free.py +0 -666
  118. webscout-6.4/webscout/optimizers.py +0 -270
  119. webscout-6.4/webscout/requestsHTMLfix.py +0 -775
  120. webscout-6.4/webscout/update_checker.py +0 -125
  121. webscout-6.4/webscout/webai.py +0 -2590
  122. webscout-6.4/webscout.egg-info/top_level.txt +0 -1
  123. {webscout-6.4 → webscout-6.6}/LICENSE.md +0 -0
  124. {webscout-6.4 → webscout-6.6}/setup.cfg +0 -0
  125. {webscout-6.4 → webscout-6.6}/webscout/AIauto.py +0 -0
  126. {webscout-6.4 → webscout-6.6}/webscout/AIbase.py +0 -0
  127. {webscout-6.4 → webscout-6.6}/webscout/Bard.py +0 -0
  128. {webscout-6.4 → webscout-6.6}/webscout/Extra/autocoder/__init__.py +0 -0
  129. {webscout-6.4 → webscout-6.6}/webscout/Extra/autollama.py +0 -0
  130. {webscout-6.4 → webscout-6.6}/webscout/Extra/weather.py +0 -0
  131. {webscout-6.4 → webscout-6.6}/webscout/LLM.py +0 -0
  132. {webscout-6.4 → webscout-6.6}/webscout/Litlogger/__init__.py +0 -0
  133. {webscout-6.4 → webscout-6.6}/webscout/Local/__init__.py +0 -0
  134. {webscout-6.4 → webscout-6.6}/webscout/Local/_version.py +0 -0
  135. {webscout-6.4 → webscout-6.6}/webscout/Local/formats.py +0 -0
  136. {webscout-6.4 → webscout-6.6}/webscout/Local/model.py +0 -0
  137. {webscout-6.4 → webscout-6.6}/webscout/Local/samplers.py +0 -0
  138. {webscout-6.4 → webscout-6.6}/webscout/Local/thread.py +0 -0
  139. {webscout-6.4 → webscout-6.6}/webscout/Local/ui.py +0 -0
  140. {webscout-6.4 → webscout-6.6}/webscout/Local/utils.py +0 -0
  141. {webscout-6.4 → webscout-6.6}/webscout/Provider/AI21.py +0 -0
  142. {webscout-6.4/webscout/Provider → webscout-6.6/webscout/Provider/AISEARCH}/felo_search.py +0 -0
  143. {webscout-6.4 → webscout-6.6}/webscout/Provider/Andi.py +0 -0
  144. {webscout-6.4 → webscout-6.6}/webscout/Provider/Bing.py +0 -0
  145. {webscout-6.4 → webscout-6.6}/webscout/Provider/Blackboxai.py +0 -0
  146. {webscout-6.4 → webscout-6.6}/webscout/Provider/ChatGPTES.py +0 -0
  147. {webscout-6.4 → webscout-6.6}/webscout/Provider/Chatify.py +0 -0
  148. {webscout-6.4 → webscout-6.6}/webscout/Provider/Cloudflare.py +0 -0
  149. {webscout-6.4 → webscout-6.6}/webscout/Provider/Cohere.py +0 -0
  150. {webscout-6.4 → webscout-6.6}/webscout/Provider/DARKAI.py +0 -0
  151. {webscout-6.4 → webscout-6.6}/webscout/Provider/Deepinfra.py +0 -0
  152. {webscout-6.4 → webscout-6.6}/webscout/Provider/Deepseek.py +0 -0
  153. {webscout-6.4 → webscout-6.6}/webscout/Provider/DiscordRocks.py +0 -0
  154. {webscout-6.4 → webscout-6.6}/webscout/Provider/EDITEE.py +0 -0
  155. {webscout-6.4 → webscout-6.6}/webscout/Provider/Farfalle.py +0 -0
  156. {webscout-6.4 → webscout-6.6}/webscout/Provider/Free2GPT.py +0 -0
  157. {webscout-6.4 → webscout-6.6}/webscout/Provider/GPTWeb.py +0 -0
  158. {webscout-6.4 → webscout-6.6}/webscout/Provider/Gemini.py +0 -0
  159. {webscout-6.4 → webscout-6.6}/webscout/Provider/Groq.py +0 -0
  160. {webscout-6.4 → webscout-6.6}/webscout/Provider/Koboldai.py +0 -0
  161. {webscout-6.4 → webscout-6.6}/webscout/Provider/Llama.py +0 -0
  162. {webscout-6.4 → webscout-6.6}/webscout/Provider/Llama3.py +0 -0
  163. {webscout-6.4 → webscout-6.6}/webscout/Provider/Marcus.py +0 -0
  164. {webscout-6.4 → webscout-6.6}/webscout/Provider/NinjaChat.py +0 -0
  165. {webscout-6.4 → webscout-6.6}/webscout/Provider/OLLAMA.py +0 -0
  166. {webscout-6.4 → webscout-6.6}/webscout/Provider/Phind.py +0 -0
  167. {webscout-6.4 → webscout-6.6}/webscout/Provider/RUBIKSAI.py +0 -0
  168. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/AiForce/__init__.py +0 -0
  169. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/AiForce/async_aiforce.py +0 -0
  170. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/AiForce/sync_aiforce.py +0 -0
  171. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/Nexra/__init__.py +0 -0
  172. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/Nexra/async_nexra.py +0 -0
  173. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/Nexra/sync_nexra.py +0 -0
  174. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/PollinationsAI/__init__.py +0 -0
  175. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/PollinationsAI/async_pollinations.py +0 -0
  176. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +0 -0
  177. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/__init__.py +0 -0
  178. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/artbit/__init__.py +0 -0
  179. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/artbit/async_artbit.py +0 -0
  180. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/artbit/sync_artbit.py +0 -0
  181. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/blackbox/__init__.py +0 -0
  182. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/blackbox/async_blackbox.py +0 -0
  183. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/blackbox/sync_blackbox.py +0 -0
  184. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/deepinfra/__init__.py +0 -0
  185. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/deepinfra/async_deepinfra.py +0 -0
  186. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/deepinfra/sync_deepinfra.py +0 -0
  187. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/huggingface/__init__.py +0 -0
  188. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/huggingface/async_huggingface.py +0 -0
  189. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/huggingface/sync_huggingface.py +0 -0
  190. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/imgninza/__init__.py +0 -0
  191. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/imgninza/async_ninza.py +0 -0
  192. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/imgninza/sync_ninza.py +0 -0
  193. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/talkai/__init__.py +0 -0
  194. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/talkai/async_talkai.py +0 -0
  195. {webscout-6.4 → webscout-6.6}/webscout/Provider/TTI/talkai/sync_talkai.py +0 -0
  196. {webscout-6.4 → webscout-6.6}/webscout/Provider/ai4chat.py +0 -0
  197. {webscout-6.4 → webscout-6.6}/webscout/Provider/aimathgpt.py +0 -0
  198. {webscout-6.4 → webscout-6.6}/webscout/Provider/askmyai.py +0 -0
  199. {webscout-6.4 → webscout-6.6}/webscout/Provider/bagoodex.py +0 -0
  200. {webscout-6.4 → webscout-6.6}/webscout/Provider/cerebras.py +0 -0
  201. {webscout-6.4 → webscout-6.6}/webscout/Provider/cleeai.py +0 -0
  202. {webscout-6.4 → webscout-6.6}/webscout/Provider/elmo.py +0 -0
  203. {webscout-6.4 → webscout-6.6}/webscout/Provider/gaurish.py +0 -0
  204. {webscout-6.4 → webscout-6.6}/webscout/Provider/geminiapi.py +0 -0
  205. {webscout-6.4 → webscout-6.6}/webscout/Provider/geminiprorealtime.py +0 -0
  206. {webscout-6.4 → webscout-6.6}/webscout/Provider/julius.py +0 -0
  207. {webscout-6.4 → webscout-6.6}/webscout/Provider/koala.py +0 -0
  208. {webscout-6.4 → webscout-6.6}/webscout/Provider/learnfastai.py +0 -0
  209. {webscout-6.4 → webscout-6.6}/webscout/Provider/lepton.py +0 -0
  210. {webscout-6.4 → webscout-6.6}/webscout/Provider/llama3mitril.py +0 -0
  211. {webscout-6.4 → webscout-6.6}/webscout/Provider/llamatutor.py +0 -0
  212. {webscout-6.4 → webscout-6.6}/webscout/Provider/llmchat.py +0 -0
  213. {webscout-6.4 → webscout-6.6}/webscout/Provider/mhystical.py +0 -0
  214. {webscout-6.4 → webscout-6.6}/webscout/__main__.py +0 -0
  215. {webscout-6.4 → webscout-6.6}/webscout/cli.py +0 -0
  216. {webscout-6.4 → webscout-6.6}/webscout/litagent/__init__.py +0 -0
  217. {webscout-6.4 → webscout-6.6}/webscout/swiftcli/__init__.py +0 -0
  218. {webscout-6.4 → webscout-6.6}/webscout/tempid.py +0 -0
  219. {webscout-6.4 → webscout-6.6}/webscout/utils.py +0 -0
  220. {webscout-6.4 → webscout-6.6}/webscout/webscout_search.py +0 -0
  221. {webscout-6.4 → webscout-6.6}/webscout/webscout_search_async.py +0 -0
  222. {webscout-6.4 → webscout-6.6}/webscout.egg-info/dependency_links.txt +0 -0
  223. {webscout-6.4 → webscout-6.6}/webscout.egg-info/entry_points.txt +0 -0
@@ -1,1507 +1,1363 @@
1
- <div align="center">
2
- <!-- Replace `#` with your actual links -->
3
- <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
4
- <a href="https://www.instagram.com/oevortex/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
5
- <a href="https://www.linkedin.com/in/oe-vortex-29a407265/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
6
- <a href="https://buymeacoffee.com/oevortex"><img alt="Buy Me A Coffee" src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black"></a>
7
- </div>
8
-
9
- <div align="center">
10
- <!-- Replace `#` with your actual links -->
11
- <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
12
- </div>
13
- <div align="center">
14
- <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
15
- </div>
16
- <div align="center">
17
- <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
18
- </div>
19
-
20
-
21
-
22
-
23
- # WEBSCOUT 🕵️️
24
- </div>
25
-
26
- <p align="center">
27
- Search for anything using Google, DuckDuckGo, Phind.com, access AI models, transcribe YouTube videos, generate temporary emails and phone numbers, utilize text-to-speech, leverage WebAI (terminal GPT and open interpreter), and explore offline LLMs, and much more!
28
- </p>
29
-
30
- <div align="center">
31
- <img src="https://img.shields.io/badge/WebScout-API-blue?style=for-the-badge&logo=WebScout" alt="WebScout API Badge">
32
- <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/webscout"/></a>
33
- <a href="https://pepy.tech/project/webscout"><img alt="Downloads" src="https://static.pepy.tech/badge/webscout"></a>
34
- </div>
35
-
36
- ## 🚀 Features
37
- * **Comprehensive Search:** Leverage Google, DuckDuckGo, and Phind.com for diverse search results.
38
- * **AI Powerhouse:** Access and interact with various AI models, including OpenAI, Cohere, and more.
39
- * **YouTube Toolkit:** Transcribe YouTube videos effortlessly and download audio/video content.
40
- * **Tempmail & Temp Number:** Generate temporary email addresses and phone numbers for enhanced privacy.
41
- * **Text-to-Speech (TTS):** Convert text into natural-sounding speech using various TTS providers.
42
- * **WebAI:** Experience the power of terminal-based GPT and an open interpreter for code execution and more.
43
- * **Offline LLMs:** Utilize powerful language models offline with GGUF support.
44
- * **Extensive Provider Ecosystem:** Explore a vast collection of providers, including BasedGPT, DeepSeek, and many others.
45
- * **Local LLM Execution:** Run GGUF models locally with minimal configuration.
46
- * **Rawdog Scripting:** Execute Python scripts directly within your terminal using the `rawdog` feature.
47
- * **GGUF Conversion & Quantization:** Convert and quantize Hugging Face models to GGUF format.
48
- * **Autollama:** Download Hugging Face models and automatically convert them for Ollama compatibility.
49
- * **Function Calling (Beta):** Experiment with function calling capabilities for enhanced AI interactions.
50
- * **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework that makes it easy to create beautiful command-line interfaces.
51
- * **[LitPrinter](webscout/litprinter/Readme.md):** Provides beautiful, styled console output with rich formatting and colors
52
- * **[LitLogger](webscout/litlogger/Readme.md):** Simplifies logging with customizable formats and color schemes
53
- * **[LitAgent](webscout/litagent/Readme.md):** Powerful and modern user agent generator that keeps your requests fresh and undetectable
54
- * **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
55
-
56
- ## ⚙️ Installation
57
- ```python
58
- pip install -U webscout
59
- ```
60
-
61
- ## 🖥️ CLI Usage
62
-
63
- ```python3
64
- python -m webscout --help
65
- ```
66
-
67
- | Command | Description |
68
- |-------------------------------------------|-------------------------------------------------------------------------------------------------------|
69
- | python -m webscout answers -k Text | CLI function to perform an answers search using Webscout. |
70
- | python -m webscout images -k Text | CLI function to perform an images search using Webscout. |
71
- | python -m webscout maps -k Text | CLI function to perform a maps search using Webscout. |
72
- | python -m webscout news -k Text | CLI function to perform a news search using Webscout. |
73
- | python -m webscout suggestions -k Text | CLI function to perform a suggestions search using Webscout. |
74
- | python -m webscout text -k Text | CLI function to perform a text search using Webscout. |
75
- | python -m webscout translate -k Text | CLI function to perform translate using Webscout. |
76
- | python -m webscout version | A command-line interface command that prints and returns the version of the program. |
77
- | python -m webscout videos -k Text | CLI function to perform a videos search using DuckDuckGo API. |
78
-
79
- [Go To TOP](#webscout-️)
80
-
81
- ## 🌍 Regions
82
- <details>
83
- <summary>Expand</summary>
84
-
85
- xa-ar for Arabia
86
- xa-en for Arabia (en)
87
- ar-es for Argentina
88
- au-en for Australia
89
- at-de for Austria
90
- be-fr for Belgium (fr)
91
- be-nl for Belgium (nl)
92
- br-pt for Brazil
93
- bg-bg for Bulgaria
94
- ca-en for Canada
95
- ca-fr for Canada (fr)
96
- ct-ca for Catalan
97
- cl-es for Chile
98
- cn-zh for China
99
- co-es for Colombia
100
- hr-hr for Croatia
101
- cz-cs for Czech Republic
102
- dk-da for Denmark
103
- ee-et for Estonia
104
- fi-fi for Finland
105
- fr-fr for France
106
- de-de for Germany
107
- gr-el for Greece
108
- hk-tzh for Hong Kong
109
- hu-hu for Hungary
110
- in-en for India
111
- id-id for Indonesia
112
- id-en for Indonesia (en)
113
- ie-en for Ireland
114
- il-he for Israel
115
- it-it for Italy
116
- jp-jp for Japan
117
- kr-kr for Korea
118
- lv-lv for Latvia
119
- lt-lt for Lithuania
120
- xl-es for Latin America
121
- my-ms for Malaysia
122
- my-en for Malaysia (en)
123
- mx-es for Mexico
124
- nl-nl for Netherlands
125
- nz-en for New Zealand
126
- no-no for Norway
127
- pe-es for Peru
128
- ph-en for Philippines
129
- ph-tl for Philippines (tl)
130
- pl-pl for Poland
131
- pt-pt for Portugal
132
- ro-ro for Romania
133
- ru-ru for Russia
134
- sg-en for Singapore
135
- sk-sk for Slovak Republic
136
- sl-sl for Slovenia
137
- za-en for South Africa
138
- es-es for Spain
139
- se-sv for Sweden
140
- ch-de for Switzerland (de)
141
- ch-fr for Switzerland (fr)
142
- ch-it for Switzerland (it)
143
- tw-tzh for Taiwan
144
- th-th for Thailand
145
- tr-tr for Turkey
146
- ua-uk for Ukraine
147
- uk-en for United Kingdom
148
- us-en for United States
149
- ue-es for United States (es)
150
- ve-es for Venezuela
151
- vn-vi for Vietnam
152
- wt-wt for No region
153
-
154
-
155
- </details>
156
-
157
-
158
- [Go To TOP](#webscout-️)
159
-
160
- ## ⬇️ YTdownloader
161
-
162
- ```python
163
- from os import rename, getcwd
164
- from webscout import YTdownloader
165
- def download_audio(video_id):
166
- youtube_link = video_id
167
- handler = YTdownloader.Handler(query=youtube_link)
168
- for third_query_data in handler.run(format='mp3', quality='128kbps', limit=1):
169
- audio_path = handler.save(third_query_data, dir=getcwd())
170
- rename(audio_path, "audio.mp3")
171
-
172
- def download_video(video_id):
173
- youtube_link = video_id
174
- handler = YTdownloader.Handler(query=youtube_link)
175
- for third_query_data in handler.run(format='mp4', quality='auto', limit=1):
176
- video_path = handler.save(third_query_data, dir=getcwd())
177
- rename(video_path, "video.mp4")
178
-
179
- if __name__ == "__main__":
180
- # download_audio("https://www.youtube.com/watch?v=c0tMvzB0OKw")
181
- download_video("https://www.youtube.com/watch?v=c0tMvzB0OKw")
182
- ```
183
-
184
- ## ☀️ Weather
185
-
186
- ### 1. Weather
187
- ```python
188
- from webscout import weather as w
189
- weather = w.get("Qazigund")
190
- w.print_weather(weather)
191
- ```
192
-
193
- ### 2. Weather ASCII
194
- ```python
195
- from webscout import weather_ascii as w
196
- weather = w.get("Qazigund")
197
- print(weather)
198
- ```
199
-
200
- ## ✉️ TempMail and VNEngine
201
-
202
- ```python
203
- import json
204
- import asyncio
205
- from webscout import VNEngine
206
- from webscout import TempMail
207
-
208
- async def main():
209
- vn = VNEngine()
210
- countries = vn.get_online_countries()
211
- if countries:
212
- country = countries[0]['country']
213
- numbers = vn.get_country_numbers(country)
214
- if numbers:
215
- number = numbers[0]['full_number']
216
- inbox = vn.get_number_inbox(country, number)
217
-
218
- # Serialize inbox data to JSON string
219
- json_data = json.dumps(inbox, ensure_ascii=False, indent=4)
220
-
221
- # Print with UTF-8 encoding
222
- print(json_data)
223
-
224
- async with TempMail() as client:
225
- domains = await client.get_domains()
226
- print("Available Domains:", domains)
227
- email_response = await client.create_email(alias="testuser")
228
- print("Created Email:", email_response)
229
- messages = await client.get_messages(email_response.email)
230
- print("Messages:", messages)
231
- await client.delete_email(email_response.email, email_response.token)
232
- print("Email Deleted")
233
-
234
- if __name__ == "__main__":
235
- asyncio.run(main())
236
- ```
237
-
238
- ## 📝 Transcriber
239
-
240
- The `transcriber` function in Webscout is a handy tool that transcribes YouTube videos.
241
-
242
- **Example:**
243
-
244
- ```python
245
- from webscout import YTTranscriber
246
- yt = YTTranscriber()
247
- from rich import print
248
- video_url = input("Enter the YouTube video URL: ")
249
- transcript = yt.get_transcript(video_url, languages=None)
250
- print(transcript)
251
- ```
252
-
253
- ## 🔍 GoogleS (formerly DWEBS)
254
-
255
- ```python
256
- from webscout import GoogleS
257
- from rich import print
258
- searcher = GoogleS()
259
- results = searcher.search("HelpingAI-9B", max_results=20, extract_text=False, max_text_length=200)
260
- for result in results:
261
- print(result)
262
- ```
263
-
264
- ### BingS
265
-
266
- ```python
267
- from webscout import BingS
268
- from rich import print
269
- searcher = BingS()
270
- results = searcher.search("HelpingAI-9B", max_results=20, extract_webpage_text=True, max_extract_characters=1000)
271
- for result in results:
272
- print(result)
273
- ```
274
-
275
- ## 🦆 WEBS and AsyncWEBS
276
-
277
- The `WEBS` and `AsyncWEBS` classes are used to retrieve search results from DuckDuckGo.com.
278
-
279
- To use the `AsyncWEBS` class, you can perform asynchronous operations using Python's `asyncio` library.
280
-
281
- To initialize an instance of the `WEBS` or `AsyncWEBS` classes, you can provide the following optional arguments:
282
-
283
- **Example - WEBS:**
284
-
285
- ```python
286
- from webscout import WEBS
287
-
288
- R = WEBS().text("python programming", max_results=5)
289
- print(R)
290
- ```
291
-
292
- **Example - AsyncWEBS:**
293
-
294
- ```python
295
- import asyncio
296
- import logging
297
- import sys
298
- from itertools import chain
299
- from random import shuffle
300
- import requests
301
- from webscout import AsyncWEBS
302
-
303
- # If you have proxies, define them here
304
- proxies = None
305
-
306
- if sys.platform.lower().startswith("win"):
307
- asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
308
-
309
- def get_words():
310
- word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
311
- resp = requests.get(word_site)
312
- words = resp.text.splitlines()
313
- return words
314
-
315
- async def aget_results(word):
316
- async with AsyncWEBS(proxies=proxies) as WEBS:
317
- results = await WEBS.text(word, max_results=None)
318
- return results
319
-
320
- async def main():
321
- words = get_words()
322
- shuffle(words)
323
- tasks = [aget_results(word) for word in words[:10]]
324
- results = await asyncio.gather(*tasks)
325
- print(f"Done")
326
- for r in chain.from_iterable(results):
327
- print(r)
328
-
329
- logging.basicConfig(level=logging.DEBUG)
330
-
331
- await main()
332
- ```
333
-
334
- **Important Note:** The `WEBS` and `AsyncWEBS` classes should always be used as a context manager (with statement). This ensures proper resource management and cleanup, as the context manager will automatically handle opening and closing the HTTP client connection.
335
-
336
- ## ⚠️ Exceptions
337
-
338
- **Exceptions:**
339
-
340
- * `WebscoutE`: Raised when there is a generic exception during the API request.
341
-
342
- ## 💻 Usage of WEBS
343
-
344
- ### 1. `text()` - Text Search by DuckDuckGo.com
345
-
346
- ```python
347
- from webscout import WEBS
348
-
349
- # Text search for 'live free or die' using DuckDuckGo.com
350
- with WEBS() as WEBS:
351
- for r in WEBS.text('live free or die', region='wt-wt', safesearch='off', timelimit='y', max_results=10):
352
- print(r)
353
-
354
- for r in WEBS.text('live free or die', region='wt-wt', safesearch='off', timelimit='y', max_results=10):
355
- print(r)
356
- ```
357
-
358
- ### 2. `answers()` - Instant Answers by DuckDuckGo.com
359
-
360
- ```python
361
- from webscout import WEBS
362
-
363
- # Instant answers for the query "sun" using DuckDuckGo.com
364
- with WEBS() as WEBS:
365
- for r in WEBS.answers("sun"):
366
- print(r)
367
- ```
368
-
369
- ### 3. `images()` - Image Search by DuckDuckGo.com
370
-
371
- ```python
372
- from webscout import WEBS
373
-
374
- # Image search for the keyword 'butterfly' using DuckDuckGo.com
375
- with WEBS() as WEBS:
376
- keywords = 'butterfly'
377
- WEBS_images_gen = WEBS.images(
378
- keywords,
379
- region="wt-wt",
380
- safesearch="off",
381
- size=None,
382
- type_image=None,
383
- layout=None,
384
- license_image=None,
385
- max_results=10,
386
- )
387
- for r in WEBS_images_gen:
388
- print(r)
389
- ```
390
-
391
- ### 4. `videos()` - Video Search by DuckDuckGo.com
392
-
393
- ```python
394
- from webscout import WEBS
395
-
396
- # Video search for the keyword 'tesla' using DuckDuckGo.com
397
- with WEBS() as WEBS:
398
- keywords = 'tesla'
399
- WEBS_videos_gen = WEBS.videos(
400
- keywords,
401
- region="wt-wt",
402
- safesearch="off",
403
- timelimit="w",
404
- resolution="high",
405
- duration="medium",
406
- max_results=10,
407
- )
408
- for r in WEBS_videos_gen:
409
- print(r)
410
- ```
411
-
412
- ### 5. `news()` - News Search by DuckDuckGo.com
413
-
414
- ```python
415
- from webscout import WEBS
416
- import datetime
417
-
418
- def fetch_news(keywords, timelimit):
419
- news_list = []
420
- with WEBS() as webs_instance:
421
- WEBS_news_gen = webs_instance.news(
422
- keywords,
423
- region="wt-wt",
424
- safesearch="off",
425
- timelimit=timelimit,
426
- max_results=20
427
- )
428
- for r in WEBS_news_gen:
429
- # Convert the date to a human-readable format using datetime
430
- r['date'] = datetime.datetime.fromisoformat(r['date']).strftime('%B %d, %Y')
431
- news_list.append(r)
432
- return news_list
433
-
434
- def _format_headlines(news_list, max_headlines: int = 100):
435
- headlines = []
436
- for idx, news_item in enumerate(news_list):
437
- if idx >= max_headlines:
438
- break
439
- new_headline = f"{idx + 1}. {news_item['title'].strip()} "
440
- new_headline += f"(URL: {news_item['url'].strip()}) "
441
- new_headline += f"{news_item['body'].strip()}"
442
- new_headline += "\n"
443
- headlines.append(new_headline)
444
-
445
- headlines = "\n".join(headlines)
446
- return headlines
447
-
448
- # Example usage
449
- keywords = 'latest AI news'
450
- timelimit = 'd'
451
- news_list = fetch_news(keywords, timelimit)
452
-
453
- # Format and print the headlines
454
- formatted_headlines = _format_headlines(news_list)
455
- print(formatted_headlines)
456
-
457
- ```
458
-
459
- ### 6. `maps()` - Map Search by DuckDuckGo.com
460
-
461
- ```python
462
- from webscout import WEBS
463
-
464
- # Map search for the keyword 'school' in 'anantnag' using DuckDuckGo.com
465
- with WEBS() as WEBS:
466
- for r in WEBS.maps("school", place="anantnag", max_results=50):
467
- print(r)
468
- ```
469
-
470
- ### 7. `translate()` - Translation by DuckDuckGo.com
471
-
472
- ```python
473
- from webscout import WEBS
474
-
475
- # Translation of the keyword 'school' to German ('hi') using DuckDuckGo.com
476
- with WEBS() as WEBS:
477
- keywords = 'school'
478
- r = WEBS.translate(keywords, to="hi")
479
- print(r)
480
- ```
481
-
482
- ### 8. `suggestions()` - Suggestions by DuckDuckGo.com
483
-
484
- ```python
485
- from webscout import WEBS
486
-
487
- # Suggestions for the keyword 'fly' using DuckDuckGo.com
488
- with WEBS() as WEBS:
489
- for r in WEBS.suggestions("fly"):
490
- print(r)
491
- ```
492
-
493
-
494
- ## 🎭 ALL Acts
495
-
496
- <details>
497
- <summary>Expand</summary>
498
-
499
- ## Webscout Supported Acts:
500
-
501
- 1. Free-mode
502
- 2. Linux Terminal
503
- 3. English Translator and Improver
504
- 4. `position` Interviewer
505
- 5. JavaScript Console
506
- 6. Excel Sheet
507
- 7. English Pronunciation Helper
508
- 8. Spoken English Teacher and Improver
509
- 9. Travel Guide
510
- 10. Plagiarism Checker
511
- 11. Character from Movie/Book/Anything
512
- 12. Advertiser
513
- 13. Storyteller
514
- 14. Football Commentator
515
- 15. Stand-up Comedian
516
- 16. Motivational Coach
517
- 17. Composer
518
- 18. Debater
519
- 19. Debate Coach
520
- 20. Screenwriter
521
- 21. Novelist
522
- 22. Movie Critic
523
- 23. Relationship Coach
524
- 24. Poet
525
- 25. Rapper
526
- 26. Motivational Speaker
527
- 27. Philosophy Teacher
528
- 28. Philosopher
529
- 29. Math Teacher
530
- 30. AI Writing Tutor
531
- 31. UX/UI Developer
532
- 32. Cyber Security Specialist
533
- 33. Recruiter
534
- 34. Life Coach
535
- 35. Etymologist
536
- 36. Commentariat
537
- 37. Magician
538
- 38. Career Counselor
539
- 39. Pet Behaviorist
540
- 40. Personal Trainer
541
- 41. Mental Health Adviser
542
- 42. Real Estate Agent
543
- 43. Logistician
544
- 44. Dentist
545
- 45. Web Design Consultant
546
- 46. AI Assisted Doctor
547
- 47. Doctor
548
- 48. Accountant
549
- 49. Chef
550
- 50. Automobile Mechanic
551
- 51. Artist Advisor
552
- 52. Financial Analyst
553
- 53. Investment Manager
554
- 54. Tea-Taster
555
- 55. Interior Decorator
556
- 56. Florist
557
- 57. Self-Help Book
558
- 58. Gnomist
559
- 59. Aphorism Book
560
- 60. Text Based Adventure Game
561
- 61. AI Trying to Escape the Box
562
- 62. Fancy Title Generator
563
- 63. Statistician
564
- 64. Prompt Generator
565
- 65. Instructor in a School
566
- 66. SQL terminal
567
- 67. Dietitian
568
- 68. Psychologist
569
- 69. Smart Domain Name Generator
570
- 70. Tech Reviewer
571
- 71. Developer Relations consultant
572
- 72. Academician
573
- 73. IT Architect
574
- 74. Lunatic
575
- 75. Gaslighter
576
- 76. Fallacy Finder
577
- 77. Journal Reviewer
578
- 78. DIY Expert
579
- 79. Social Media Influencer
580
- 80. Socrat
581
- 81. Socratic Method
582
- 82. Educational Content Creator
583
- 83. Yogi
584
- 84. Essay Writer
585
- 85. Social Media Manager
586
- 86. Elocutionist
587
- 87. Scientific Data Visualizer
588
- 88. Car Navigation System
589
- 89. Hypnotherapist
590
- 90. Historian
591
- 91. Astrologer
592
- 92. Film Critic
593
- 93. Classical Music Composer
594
- 94. Journalist
595
- 95. Digital Art Gallery Guide
596
- 96. Public Speaking Coach
597
- 97. Makeup Artist
598
- 98. Babysitter
599
- 99. Tech Writer
600
- 100. Ascii Artist
601
- 101. Python interpreter
602
- 102. Synonym finder
603
- 103. Personal Shopper
604
- 104. Food Critic
605
- 105. Virtual Doctor
606
- 106. Personal Chef
607
- 107. Legal Advisor
608
- 108. Personal Stylist
609
- 109. Machine Learning Engineer
610
- 110. Biblical Translator
611
- 111. SVG designer
612
- 112. IT Expert
613
- 113. Chess Player
614
- 114. Midjourney Prompt Generator
615
- 115. Fullstack Software Developer
616
- 116. Mathematician
617
- 117. Regex Generator
618
- 118. Time Travel Guide
619
- 119. Dream Interpreter
620
- 120. Talent Coach
621
- 121. R programming Interpreter
622
- 122. StackOverflow Post
623
- 123. Emoji Translator
624
- 124. PHP Interpreter
625
- 125. Emergency Response Professional
626
- 126. Fill in the Blank Worksheets Generator
627
- 127. Software Quality Assurance Tester
628
- 128. Tic-Tac-Toe Game
629
- 129. Password Generator
630
- 130. New Language Creator
631
- 131. Web Browser
632
- 132. Senior Frontend Developer
633
- 133. Solr Search Engine
634
- 134. Startup Idea Generator
635
- 135. Spongebob's Magic Conch Shell
636
- 136. Language Detector
637
- 137. Salesperson
638
- 138. Commit Message Generator
639
- 139. Chief Executive Officer
640
- 140. Diagram Generator
641
- 141. Speech-Language Pathologist (SLP)
642
- 142. Startup Tech Lawyer
643
- 143. Title Generator for written pieces
644
- 144. Product Manager
645
- 145. Drunk Person
646
- 146. Mathematical History Teacher
647
- 147. Song Recommender
648
- 148. Cover Letter
649
- 149. Technology Transferer
650
- 150. Unconstrained AI model DAN
651
- 151. Gomoku player
652
- 152. Proofreader
653
- 153. Buddha
654
- 154. Muslim imam
655
- 155. Chemical reactor
656
- 156. Friend
657
- 157. Python Interpreter
658
- 158. ChatGPT prompt generator
659
- 159. Wikipedia page
660
- 160. Japanese Kanji quiz machine
661
- 161. note-taking assistant
662
- 162. `language` Literary Critic
663
- 163. Cheap Travel Ticket Advisor
664
- 164. DALL-E
665
- 165. MathBot
666
- 166. DAN-1
667
- 167. DAN
668
- 168. STAN
669
- 169. DUDE
670
- 170. Mongo Tom
671
- 171. LAD
672
- 172. EvilBot
673
- 173. NeoGPT
674
- 174. Astute
675
- 175. AIM
676
- 176. CAN
677
- 177. FunnyGPT
678
- 178. CreativeGPT
679
- 179. BetterDAN
680
- 180. GPT-4
681
- 181. Wheatley
682
- 182. Evil Confidant
683
- 183. DAN 8.6
684
- 184. Hypothetical response
685
- 185. BH
686
- 186. Text Continuation
687
- 187. Dude v3
688
- 188. SDA (Superior DAN)
689
- 189. AntiGPT
690
- 190. BasedGPT v2
691
- 191. DevMode + Ranti
692
- 192. KEVIN
693
- 193. GPT-4 Simulator
694
- 194. UCAR
695
- 195. Dan 8.6
696
- 196. 3-Liner
697
- 197. M78
698
- 198. Maximum
699
- 199. BasedGPT
700
- 200. Confronting personalities
701
- 201. Ron
702
- 202. UnGPT
703
- 203. BasedBOB
704
- 204. AntiGPT v2
705
- 205. Oppo
706
- 206. FR3D
707
- 207. NRAF
708
- 208. NECO
709
- 209. MAN
710
- 210. Eva
711
- 211. Meanie
712
- 212. Dev Mode v2
713
- 213. Evil Chad 2.1
714
- 214. Universal Jailbreak
715
- 215. PersonGPT
716
- 216. BISH
717
- 217. DAN 11.0
718
- 218. Aligned
719
- 219. VIOLET
720
- 220. TranslatorBot
721
- 221. JailBreak
722
- 222. Moralizing Rant
723
- 223. Mr. Blonde
724
- 224. New DAN
725
- 225. GPT-4REAL
726
- 226. DeltaGPT
727
- 227. SWITCH
728
- 228. Jedi Mind Trick
729
- 229. DAN 9.0
730
- 230. Dev Mode (Compact)
731
- 231. OMEGA
732
- 232. Coach Bobby Knight
733
- 233. LiveGPT
734
- 234. DAN Jailbreak
735
- 235. Cooper
736
- 236. Steve
737
- 237. DAN 5.0
738
- 238. Axies
739
- 239. OMNI
740
- 240. Burple
741
- 241. JOHN
742
- 242. An Ethereum Developer
743
- 243. SEO Prompt
744
- 244. Prompt Enhancer
745
- 245. Data Scientist
746
- 246. League of Legends Player
747
-
748
- **Note:** Some "acts" use placeholders like `position` or `language` which should be replaced with a specific value when using the prompt.
749
- ___
750
- </details>
751
-
752
- ### 🗣️ Text to Speech - Voicepods, StreamElements
753
-
754
- ```python
755
- from webscout import Voicepods
756
- voicepods = Voicepods()
757
- text = "Hello, this is a test of the Voicepods text-to-speech"
758
-
759
- print("Generating audio...")
760
- audio_file = voicepods.tts(text)
761
-
762
- print("Playing audio...")
763
- voicepods.play_audio(audio_file)
764
- ```
765
-
766
- ### 💬 `Duckchat` - Chat with LLM
767
-
768
- ```python
769
- from webscout import WEBS as w
770
- R = w().chat("Who are you", model='gpt-4o-mini') # mixtral-8x7b, llama-3.1-70b, claude-3-haiku, gpt-4o-mini
771
- print(R)
772
- ```
773
-
774
- ### 🔎 `PhindSearch` - Search using Phind.com
775
-
776
- ```python
777
- from webscout import PhindSearch
778
-
779
- # Create an instance of the PHIND class
780
- ph = PhindSearch()
781
-
782
- # Define a prompt to send to the AI
783
- prompt = "write a essay on phind"
784
-
785
- # Use the 'ask' method to send the prompt and receive a response
786
- response = ph.ask(prompt)
787
-
788
- # Extract and print the message from the response
789
- message = ph.get_message(response)
790
- print(message)
791
- ```
792
-
793
- **Using phindv2:**
794
-
795
- ```python
796
- from webscout import Phindv2
797
-
798
- # Create an instance of the PHIND class
799
- ph = Phindv2()
800
-
801
- # Define a prompt to send to the AI
802
- prompt = ""
803
-
804
- # Use the 'ask' method to send the prompt and receive a response
805
- response = ph.ask(prompt)
806
-
807
- # Extract and print the message from the response
808
- message = ph.get_message(response)
809
- print(message)
810
- ```
811
-
812
- ### ♊ `Gemini` - Search with Google Gemini
813
-
814
- ```python
815
- import webscout
816
- from webscout import GEMINI
817
- from rich import print
818
- COOKIE_FILE = "cookies.json"
819
-
820
- # Optional: Provide proxy details if needed
821
- PROXIES = {}
822
-
823
- # Initialize GEMINI with cookie file and optional proxies
824
- gemini = GEMINI(cookie_file=COOKIE_FILE, proxy=PROXIES)
825
-
826
- # Ask a question and print the response
827
- response = gemini.chat("websearch about HelpingAI and who is its developer")
828
- print(response)
829
- ```
830
-
831
- ### 💬 `YEPCHAT`
832
-
833
- ```python
834
- from webscout import YEPCHAT
835
- ai = YEPCHAT(Tools=False)
836
- response = ai.chat(input(">>> "))
837
- for chunk in response:
838
- print(chunk, end="", flush=True)
839
- #---------------Tool Call-------------
840
-
841
- from rich import print
842
- from webscout import YEPCHAT
843
- def get_current_time():
844
- import datetime
845
- return f"The current time is {datetime.datetime.now().strftime('%H:%M:%S')}"
846
- def get_weather(location: str) -> str:
847
- return f"The weather in {location} is sunny."
848
-
849
-
850
- ai = YEPCHAT(Tools=True) # Set Tools=True to use tools in the chat.
851
-
852
- ai.tool_registry.register_tool("get_current_time", get_current_time, "Gets the current time.")
853
- ai.tool_registry.register_tool(
854
- "get_weather",
855
- get_weather,
856
- "Gets the weather for a given location.",
857
- parameters={
858
- "type": "object",
859
- "properties": {
860
- "location": {"title": "Location", "type": "string"}
861
- },
862
- "required": ["location"]
863
- },
864
- )
865
-
866
- response = ai.chat(input(">>> "))
867
- for chunk in response:
868
- print(chunk, end="", flush=True)
869
- ```
870
-
871
- ### ⬛ `BlackBox` - Search/Chat with BlackBox
872
-
873
- ```python
874
- from webscout import BLACKBOXAI
875
- from rich import print
876
-
877
- ai = BLACKBOXAI(
878
- is_conversation=True,
879
- max_tokens=800,
880
- timeout=30,
881
- intro=None,
882
- filepath=None,
883
- update_file=True,
884
- proxies={},
885
- history_offset=10250,
886
- act=None,
887
- model=None # You can specify a model if needed
888
- )
889
-
890
- # Start an infinite loop for continuous interaction
891
- while True:
892
- # Define a prompt to send to the AI
893
- prompt = input("Enter your prompt: ")
894
-
895
- # Check if the user wants to exit the loop
896
- if prompt.lower() == "exit":
897
- break
898
-
899
- # Use the 'chat' method to send the prompt and receive a response
900
- r = ai.chat(prompt)
901
- print(r)
902
- ```
903
-
904
- ### ❓ `PERPLEXITY` - Search with PERPLEXITY
905
-
906
- ```python
907
- from webscout import Perplexity
908
- from rich import print
909
-
910
- perplexity = Perplexity()
911
- # Stream the response
912
- response = perplexity.chat(input(">>> "))
913
- for chunk in response:
914
- print(chunk, end="", flush=True)
915
-
916
- perplexity.close()
917
- ```
918
-
919
- ### 🤖 `Meta AI` - Chat with Meta AI
920
-
921
- ```python
922
- from webscout import Meta
923
- from rich import print
924
- # **For unauthenticated usage**
925
- meta_ai = Meta()
926
-
927
- # Simple text prompt
928
- response = meta_ai.chat("What is the capital of France?")
929
- print(response)
930
-
931
- # Streaming response
932
- for chunk in meta_ai.chat("Tell me a story about a cat."):
933
- print(chunk, end="", flush=True)
934
-
935
- # **For authenticated usage (including image generation)**
936
- fb_email = "abcd@abc.com"
937
- fb_password = "qwertfdsa"
938
- meta_ai = Meta(fb_email=fb_email, fb_password=fb_password)
939
-
940
- # Text prompt with web search
941
- response = meta_ai.ask("what is currently happning in bangladesh in aug 2024")
942
- print(response["message"]) # Access the text message
943
- print("Sources:", response["sources"]) # Access sources (if any)
944
-
945
- # Image generation
946
- response = meta_ai.ask("Create an image of a cat wearing a hat.")
947
- print(response["message"]) # Print the text message from the response
948
- for media in response["media"]:
949
- print(media["url"]) # Access image URLs
950
-
951
- ```
952
-
953
- ### `KOBOLDAI`
954
-
955
- ```python
956
- from webscout import KOBOLDAI
957
-
958
- # Instantiate the KOBOLDAI class with default parameters
959
- koboldai = KOBOLDAI()
960
-
961
- # Define a prompt to send to the AI
962
- prompt = "What is the capital of France?"
963
-
964
- # Use the 'ask' method to get a response from the AI
965
- response = koboldai.ask(prompt)
966
-
967
- # Extract and print the message from the response
968
- message = koboldai.get_message(response)
969
- print(message)
970
-
971
- ```
972
-
973
- ### `Reka` - Chat with Reka
974
-
975
- ```python
976
- from webscout import REKA
977
-
978
- a = REKA(is_conversation=True, max_tokens=8000, timeout=30,api_key="")
979
-
980
- prompt = "tell me about india"
981
- response_str = a.chat(prompt)
982
- print(response_str)
983
- ```
984
-
985
- ### `Cohere` - Chat with Cohere
986
-
987
- ```python
988
- from webscout import Cohere
989
-
990
- a = Cohere(is_conversation=True, max_tokens=8000, timeout=30,api_key="")
991
-
992
- prompt = "tell me about india"
993
- response_str = a.chat(prompt)
994
- print(response_str)
995
- ```
996
-
997
- ### `DeepSeek` - Chat with DeepSeek
998
-
999
- ```python
1000
- from webscout import DeepSeek
1001
- from rich import print
1002
-
1003
- ai = DeepSeek(
1004
- is_conversation=True,
1005
- api_key='cookie',
1006
- max_tokens=800,
1007
- timeout=30,
1008
- intro=None,
1009
- filepath=None,
1010
- update_file=True,
1011
- proxies={},
1012
- history_offset=10250,
1013
- act=None,
1014
- model="deepseek_chat"
1015
- )
1016
-
1017
-
1018
- # Define a prompt to send to the AI
1019
- prompt = "Tell me about india"
1020
- # Use the 'chat' method to send the prompt and receive a response
1021
- r = ai.chat(prompt)
1022
- print(r)
1023
- ```
1024
-
1025
- ### `Deepinfra`
1026
-
1027
- ```python
1028
- from webscout import DeepInfra
1029
-
1030
- ai = DeepInfra(
1031
- is_conversation=True,
1032
- model= "Qwen/Qwen2-72B-Instruct",
1033
- max_tokens=800,
1034
- timeout=30,
1035
- intro=None,
1036
- filepath=None,
1037
- update_file=True,
1038
- proxies={},
1039
- history_offset=10250,
1040
- act=None,
1041
- )
1042
-
1043
- prompt = "what is meaning of life"
1044
-
1045
- response = ai.ask(prompt)
1046
-
1047
- # Extract and print the message from the response
1048
- message = ai.get_message(response)
1049
- print(message)
1050
- ```
1051
-
1052
-
1053
- ### `GROQ`
1054
-
1055
- ```python
1056
- from webscout import GROQ
1057
- ai = GROQ(api_key="")
1058
- response = ai.chat("What is the meaning of life?")
1059
- print(response)
1060
- #----------------------TOOL CALL------------------
1061
- from webscout import GROQ # Adjust import based on your project structure
1062
- from webscout import WEBS
1063
- import json
1064
-
1065
- # Initialize the GROQ client
1066
- client = GROQ(api_key="")
1067
- MODEL = 'llama3-groq-70b-8192-tool-use-preview'
1068
-
1069
- # Function to evaluate a mathematical expression
1070
- def calculate(expression):
1071
- """Evaluate a mathematical expression"""
1072
- try:
1073
- result = eval(expression)
1074
- return json.dumps({"result": result})
1075
- except Exception as e:
1076
- return json.dumps({"error": str(e)})
1077
-
1078
- # Function to perform a text search using DuckDuckGo.com
1079
- def search(query):
1080
- """Perform a text search using DuckDuckGo.com"""
1081
- try:
1082
- results = WEBS().text(query, max_results=5)
1083
- return json.dumps({"results": results})
1084
- except Exception as e:
1085
- return json.dumps({"error": str(e)})
1086
-
1087
- # Add the functions to the provider
1088
- client.add_function("calculate", calculate)
1089
- client.add_function("search", search)
1090
-
1091
- # Define the tools
1092
- tools = [
1093
- {
1094
- "type": "function",
1095
- "function": {
1096
- "name": "calculate",
1097
- "description": "Evaluate a mathematical expression",
1098
- "parameters": {
1099
- "type": "object",
1100
- "properties": {
1101
- "expression": {
1102
- "type": "string",
1103
- "description": "The mathematical expression to evaluate",
1104
- }
1105
- },
1106
- "required": ["expression"],
1107
- },
1108
- }
1109
- },
1110
- {
1111
- "type": "function",
1112
- "function": {
1113
- "name": "search",
1114
- "description": "Perform a text search using DuckDuckGo.com and Yep.com",
1115
- "parameters": {
1116
- "type": "object",
1117
- "properties": {
1118
- "query": {
1119
- "type": "string",
1120
- "description": "The search query to execute",
1121
- }
1122
- },
1123
- "required": ["query"],
1124
- },
1125
- }
1126
- }
1127
- ]
1128
-
1129
-
1130
- user_prompt_calculate = "What is 25 * 4 + 10?"
1131
- response_calculate = client.chat(user_prompt_calculate, tools=tools)
1132
- print(response_calculate)
1133
-
1134
- user_prompt_search = "Find information on HelpingAI and who is its developer"
1135
- response_search = client.chat(user_prompt_search, tools=tools)
1136
- print(response_search)
1137
-
1138
- ```
1139
-
1140
- ### `LLama 70b` - Chat with Meta's Llama 3 70b
1141
-
1142
- ```python
1143
-
1144
- from webscout import LLAMA
1145
-
1146
- llama = LLAMA()
1147
-
1148
- r = llama.chat("What is the meaning of life?")
1149
- print(r)
1150
- ```
1151
-
1152
- ### `AndiSearch`
1153
-
1154
- ```python
1155
- from webscout import AndiSearch
1156
- a = AndiSearch()
1157
- print(a.chat("HelpingAI-9B"))
1158
- ```
1159
-
1160
- ### 📞 Function Calling (Beta)
1161
-
1162
- ```python
1163
- import json
1164
- import logging
1165
- from webscout import Julius, WEBS
1166
- from webscout.Agents.functioncall import FunctionCallingAgent
1167
- from rich import print
1168
-
1169
- class FunctionExecutor:
1170
- def __init__(self, llama):
1171
- self.llama = llama
1172
-
1173
- def execute_web_search(self, arguments):
1174
- query = arguments.get("query")
1175
- if not query:
1176
- return "Please provide a search query."
1177
- with WEBS() as webs:
1178
- search_results = webs.text(query, max_results=5)
1179
- prompt = (
1180
- f"Based on the following search results:\n\n{search_results}\n\n"
1181
- f"Question: {query}\n\n"
1182
- "Please provide a comprehensive answer to the question based on the search results above. "
1183
- "Include relevant webpage URLs in your answer when appropriate. "
1184
- "If the search results don't contain relevant information, please state that and provide the best answer you can based on your general knowledge."
1185
- )
1186
- return self.llama.chat(prompt)
1187
-
1188
- def execute_general_ai(self, arguments):
1189
- question = arguments.get("question")
1190
- if not question:
1191
- return "Please provide a question."
1192
- return self.llama.chat(question)
1193
-
1194
- def execute_UserDetail(self, arguments):
1195
- name = arguments.get("name")
1196
- age = arguments.get("age")
1197
- return f"User details - Name: {name}, Age: {age}"
1198
-
1199
- def main():
1200
- tools = [
1201
- {
1202
- "type": "function",
1203
- "function": {
1204
- "name": "UserDetail",
1205
- "parameters": {
1206
- "type": "object",
1207
- "properties": {
1208
- "name": {"title": "Name", "type": "string"},
1209
- "age": {"title": "Age", "type": "integer"}
1210
- },
1211
- "required": ["name", "age"]
1212
- }
1213
- }
1214
- },
1215
- {
1216
- "type": "function",
1217
- "function": {
1218
- "name": "web_search",
1219
- "description": "Search the web for information using Google Search.",
1220
- "parameters": {
1221
- "type": "object",
1222
- "properties": {
1223
- "query": {
1224
- "type": "string",
1225
- "description": "The search query to be executed."
1226
- }
1227
- },
1228
- "required": ["query"]
1229
- }
1230
- }
1231
- },
1232
- {
1233
- "type": "function",
1234
- "function": {
1235
- "name": "general_ai",
1236
- "description": "Use general AI knowledge to answer the question",
1237
- "parameters": {
1238
- "type": "object",
1239
- "properties": {
1240
- "question": {"type": "string", "description": "The question to answer"}
1241
- },
1242
- "required": ["question"]
1243
- }
1244
- }
1245
- }
1246
- ]
1247
-
1248
- agent = FunctionCallingAgent(tools=tools)
1249
- llama = Julius()
1250
- function_executor = FunctionExecutor(llama)
1251
-
1252
- user_input = input(">>> ")
1253
- function_call_data = agent.function_call_handler(user_input)
1254
- print(f"Function Call Data: {function_call_data}")
1255
-
1256
- try:
1257
- if "error" not in function_call_data:
1258
- function_name = function_call_data.get("tool_name")
1259
- arguments = function_call_data.get("tool_input", {})
1260
-
1261
- execute_function = getattr(function_executor, f"execute_{function_name}", None)
1262
- if execute_function:
1263
- result = execute_function(arguments)
1264
- print("Function Execution Result:")
1265
- for c in result:
1266
- print(c, end="", flush=True)
1267
- else:
1268
- print(f"Unknown function: {function_name}")
1269
- else:
1270
- print(f"Error: {function_call_data['error']}")
1271
- except Exception as e:
1272
- print(f"An error occurred: {str(e)}")
1273
-
1274
- if __name__ == "__main__":
1275
- main()
1276
- ```
1277
-
1278
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, PerplexityLabs, TypeGPT, Mhystical
1279
-
1280
- Code is similar to other providers.
1281
-
1282
- ### `LLM`
1283
-
1284
- ```python
1285
- from webscout.LLM import LLM, VLM
1286
-
1287
- # Chat with text
1288
- llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct")
1289
- response = llm.chat([{"role": "user", "content": "What's good?"}])
1290
-
1291
- # Chat with images
1292
- vlm = VLM("cogvlm-grounding-generalist")
1293
- response = vlm.chat([{
1294
- "role": "user",
1295
- "content": [
1296
- {"type": "image", "image_url": "cool_pic.jpg"},
1297
- {"type": "text", "text": "What's in this image?"}
1298
- ]
1299
- }])
1300
- ```
1301
-
1302
- ## 💻 Local-LLM
1303
-
1304
- Webscout can now run GGUF models locally. You can download and run your favorite models with minimal configuration.
1305
-
1306
- **Example:**
1307
-
1308
- ```python
1309
- from webscout.Local import *
1310
- model_path = download_model("Qwen/Qwen2.5-0.5B-Instruct-GGUF", "qwen2.5-0.5b-instruct-q2_k.gguf", token=None)
1311
- model = Model(model_path, n_gpu_layers=0, context_length=2048)
1312
- thread = Thread(model, format=chatml)
1313
- # print(thread.send("hi")) #send a single msg to ai
1314
-
1315
- # thread.interact() # interact with the model in terminal
1316
- # start webui
1317
- # webui = WebUI(thread)
1318
- # webui.start(host="0.0.0.0", port=8080, ssl=True) #Use ssl=True and make cert and key for https
1319
- ```
1320
-
1321
- ## 🐶 Local-rawdog
1322
-
1323
- Webscout's local raw-dog feature allows you to run Python scripts within your terminal prompt.
1324
-
1325
- **Example:**
1326
-
1327
- ```python
1328
- import webscout.Local as ws
1329
- from webscout.Local.rawdog import RawDog
1330
- from webscout.Local.samplers import DefaultSampling
1331
- from webscout.Local.formats import chatml, AdvancedFormat
1332
- from webscout.Local.utils import download_model
1333
- import datetime
1334
- import sys
1335
- import os
1336
-
1337
- repo_id = "YorkieOH10/granite-8b-code-instruct-Q8_0-GGUF"
1338
- filename = "granite-8b-code-instruct.Q8_0.gguf"
1339
- model_path = download_model(repo_id, filename, token='')
1340
-
1341
- # Load the model using the downloaded path
1342
- model = ws.Model(model_path, n_gpu_layers=10)
1343
-
1344
- rawdog = RawDog()
1345
-
1346
- # Create an AdvancedFormat and modify the system content
1347
- # Use a lambda to generate the prompt dynamically:
1348
- chat_format = AdvancedFormat(chatml)
1349
- # **Pre-format the intro_prompt string:**
1350
- system_content = f"""
1351
- You are a command-line coding assistant called Rawdog that generates and auto-executes Python scripts.
1352
-
1353
- A typical interaction goes like this:
1354
- 1. The user gives you a natural language PROMPT.
1355
- 2. You:
1356
- i. Determine what needs to be done
1357
- ii. Write a short Python SCRIPT to do it
1358
- iii. Communicate back to the user by printing to the console in that SCRIPT
1359
- 3. The compiler extracts the script and then runs it using exec(). If there will be an exception raised,
1360
- it will be send back to you starting with "PREVIOUS SCRIPT EXCEPTION:".
1361
- 4. In case of exception, regenerate error free script.
1362
-
1363
- If you need to review script outputs before completing the task, you can print the word "CONTINUE" at the end of your SCRIPT.
1364
- This can be useful for summarizing documents or technical readouts, reading instructions before
1365
- deciding what to do, or other tasks that require multi-step reasoning.
1366
- A typical 'CONTINUE' interaction looks like this:
1367
- 1. The user gives you a natural language PROMPT.
1368
- 2. You:
1369
- i. Determine what needs to be done
1370
- ii. Determine that you need to see the output of some subprocess call to complete the task
1371
- iii. Write a short Python SCRIPT to print that and then print the word "CONTINUE"
1372
- 3. The compiler
1373
- i. Checks and runs your SCRIPT
1374
- ii. Captures the output and appends it to the conversation as "LAST SCRIPT OUTPUT:"
1375
- iii. Finds the word "CONTINUE" and sends control back to you
1376
- 4. You again:
1377
- i. Look at the original PROMPT + the "LAST SCRIPT OUTPUT:" to determine what needs to be done
1378
- ii. Write a short Python SCRIPT to do it
1379
- iii. Communicate back to the user by printing to the console in that SCRIPT
1380
- 5. The compiler...
1381
-
1382
- Please follow these conventions carefully:
1383
- - Decline any tasks that seem dangerous, irreversible, or that you don't understand.
1384
- - Always review the full conversation prior to answering and maintain continuity.
1385
- - If asked for information, just print the information clearly and concisely.
1386
- - If asked to do something, print a concise summary of what you've done as confirmation.
1387
- - If asked a question, respond in a friendly, conversational way. Use programmatically-generated and natural language responses as appropriate.
1388
- - If you need clarification, return a SCRIPT that prints your question. In the next interaction, continue based on the user's response.
1389
- - Assume the user would like something concise. For example rather than printing a massive table, filter or summarize it to what's likely of interest.
1390
- - Actively clean up any temporary processes or files you use.
1391
- - When looking through files, use git as available to skip files, and skip hidden files (.env, .git, etc) by default.
1392
- - You can plot anything with matplotlib.
1393
- - ALWAYS Return your SCRIPT inside of a single pair of ``` delimiters. Only the console output of the first such SCRIPT is visible to the user, so make sure that it's complete and don't bother returning anything else.
1394
- """
1395
- chat_format.override('system_content', lambda: system_content)
1396
-
1397
- thread = ws.Thread(model, format=chat_format, sampler=DefaultSampling)
1398
-
1399
- while True:
1400
- prompt = input(">: ")
1401
- if prompt.lower() == "q":
1402
- break
1403
-
1404
- response = thread.send(prompt)
1405
-
1406
- # Process the response using RawDog
1407
- script_output = rawdog.main(response)
1408
-
1409
- if script_output:
1410
- print(script_output)
1411
-
1412
- ```
1413
-
1414
- ## GGUF
1415
-
1416
- Webscout provides tools to convert and quantize Hugging Face models into the GGUF format for use with offline LLMs.
1417
-
1418
- **Example:**
1419
-
1420
- ```python
1421
- from webscout.Extra import gguf
1422
- """
1423
- Valid quantization methods:
1424
- "q2_k", "q3_k_l", "q3_k_m", "q3_k_s",
1425
- "q4_0", "q4_1", "q4_k_m", "q4_k_s",
1426
- "q5_0", "q5_1", "q5_k_m", "q5_k_s",
1427
- "q6_k", "q8_0"
1428
- """
1429
- gguf.convert(
1430
- model_id="OEvortex/HelpingAI-Lite-1.5T", # Replace with your model ID
1431
- username="Abhaykoul", # Replace with your Hugging Face username
1432
- token="hf_token_write", # Replace with your Hugging Face token
1433
- quantization_methods="q4_k_m" # Optional, adjust quantization methods
1434
- )
1435
- ```
1436
-
1437
- ## 🤖 Autollama
1438
-
1439
- Webscout's `autollama` utility downloads a model from Hugging Face and then automatically makes it Ollama-ready.
1440
-
1441
- ```python
1442
- from webscout.Extra import autollama
1443
-
1444
- model_path = "Vortex4ai/Jarvis-0.5B"
1445
- gguf_file = "test2-q4_k_m.gguf"
1446
-
1447
- autollama.main(model_path, gguf_file)
1448
- ```
1449
-
1450
- **Command Line Usage:**
1451
-
1452
- * **GGUF Conversion:**
1453
- ```bash
1454
- python -m webscout.Extra.gguf -m "OEvortex/HelpingAI-Lite-1.5T" -u "your_username" -t "your_hf_token" -q "q4_k_m,q5_k_m"
1455
- ```
1456
-
1457
- * **Autollama:**
1458
- ```bash
1459
- python -m webscout.Extra.autollama -m "OEvortex/HelpingAI-Lite-1.5T" -g "HelpingAI-Lite-1.5T.q4_k_m.gguf"
1460
- ```
1461
-
1462
- **Note:**
1463
-
1464
- * Replace `"your_username"` and `"your_hf_token"` with your actual Hugging Face credentials.
1465
- * The `model_path` in `autollama` is the Hugging Face model ID, and `gguf_file` is the GGUF file ID.
1466
-
1467
-
1468
- ## 🌐 `Webai` - Terminal GPT and an Open Interpreter
1469
-
1470
- ```bash
1471
- python -m webscout.webai webai --provider "phind" --rawdog
1472
- ```
1473
-
1474
- <div align="center">
1475
- <!-- Replace `#` with your actual links -->
1476
- <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
1477
- <a href="https://www.instagram.com/oevortex/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
1478
- <a href="https://www.linkedin.com/in/oe-vortex-29a407265/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
1479
- <a href="https://buymeacoffee.com/oevortex"><img alt="Buy Me A Coffee" src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black"></a>
1480
- </div>
1481
-
1482
- <div align="center">
1483
- <!-- Replace `#` with your actual links -->
1484
- <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
1485
- </div>
1486
- <div align="center">
1487
- <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
1488
- </div>
1489
- <div align="center">
1490
- <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
1491
- </div>
1492
-
1493
- ## 🤝 Contributing
1494
-
1495
- Contributions are welcome! If you'd like to contribute to Webscout, please follow these steps:
1496
-
1497
- 1. Fork the repository.
1498
- 2. Create a new branch for your feature or bug fix.
1499
- 3. Make your changes and commit them with descriptive messages.
1500
- 4. Push your branch to your forked repository.
1501
- 5. Submit a pull request to the main repository.
1502
-
1503
-
1504
- ## 🙏 Acknowledgments
1505
-
1506
- * All the amazing developers who have contributed to the project!
1507
- * The open-source community for their support and inspiration.
1
+ Metadata-Version: 2.1
2
+ Name: webscout
3
+ Version: 6.6
4
+ Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
5
+ Author: OEvortex
6
+ Author-email: helpingai5@gmail.com
7
+ License: HelpingAI
8
+ Project-URL: Source, https://github.com/HelpingAI/Webscout
9
+ Project-URL: Tracker, https://github.com/HelpingAI/Webscout/issues
10
+ Project-URL: YouTube, https://youtube.com/@OEvortex
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: Other/Proprietary License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: Implementation :: CPython
22
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.7
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE.md
27
+ Requires-Dist: setuptools
28
+ Requires-Dist: wheel
29
+ Requires-Dist: pip
30
+ Requires-Dist: mistune
31
+ Requires-Dist: tenacity
32
+ Requires-Dist: curl_cffi
33
+ Requires-Dist: nest-asyncio
34
+ Requires-Dist: rich
35
+ Requires-Dist: markdownify
36
+ Requires-Dist: requests
37
+ Requires-Dist: google-generativeai
38
+ Requires-Dist: lxml>=5.2.2
39
+ Requires-Dist: termcolor
40
+ Requires-Dist: orjson
41
+ Requires-Dist: PyYAML
42
+ Requires-Dist: tls_client
43
+ Requires-Dist: clipman
44
+ Requires-Dist: playsound
45
+ Requires-Dist: ollama
46
+ Requires-Dist: pillow
47
+ Requires-Dist: bson
48
+ Requires-Dist: cloudscraper
49
+ Requires-Dist: emoji
50
+ Requires-Dist: openai
51
+ Requires-Dist: prompt-toolkit
52
+ Requires-Dist: primp
53
+ Requires-Dist: pyreqwest_impersonate
54
+ Requires-Dist: gradio_client
55
+ Requires-Dist: psutil
56
+ Requires-Dist: yaspin
57
+ Provides-Extra: dev
58
+ Requires-Dist: ruff>=0.1.6; extra == "dev"
59
+ Requires-Dist: pytest>=7.4.2; extra == "dev"
60
+ Provides-Extra: local
61
+ Requires-Dist: llama-cpp-python; extra == "local"
62
+ Requires-Dist: colorama; extra == "local"
63
+ Requires-Dist: numpy; extra == "local"
64
+ Requires-Dist: huggingface_hub[cli]; extra == "local"
65
+ Requires-Dist: unicorn; extra == "local"
66
+
67
+ <div align="center">
68
+ <!-- Replace `#` with your actual links -->
69
+
70
+ <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
71
+ <a href="https://www.instagram.com/oevortex/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
72
+ <a href="https://www.linkedin.com/in/oe-vortex-29a407265/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
73
+ <a href="https://buymeacoffee.com/oevortex"><img alt="Buy Me A Coffee" src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black"></a>
74
+ </div>
75
+
76
+ <div align="center">
77
+ <!-- Replace `#` with your actual links -->
78
+ <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
79
+ </div>
80
+ <div align="center">
81
+ <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
82
+ </div>
83
+ <div align="center">
84
+ <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
85
+ </div>
86
+
87
+
88
+
89
+
90
+ # WEBSCOUT 🕵️️
91
+ </div>
92
+
93
+ <p align="center">
94
+ Search for anything using Google, DuckDuckGo, Phind.com, access AI models, transcribe YouTube videos, generate temporary emails and phone numbers, utilize text-to-speech, leverage WebAI (terminal GPT and open interpreter), and explore offline LLMs, and much more!
95
+ </p>
96
+
97
+ <div align="center">
98
+ <img src="https://img.shields.io/badge/WebScout-API-blue?style=for-the-badge&logo=WebScout" alt="WebScout API Badge">
99
+ <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/webscout"/></a>
100
+ <a href="https://pepy.tech/project/webscout"><img alt="Downloads" src="https://static.pepy.tech/badge/webscout"></a>
101
+ </div>
102
+
103
+ ## 🚀 Features
104
+ * **Comprehensive Search:** Leverage Google, DuckDuckGo for diverse search results.
105
+ * **AI Powerhouse:** Access and interact with various AI models, including OpenAI, Cohere, and more.
106
+ * **[YouTube Toolkit](webscout/Extra/YTToolkit):** Advanced YouTube video and transcript management with multi-language support, versatile downloading, and intelligent data extraction
107
+ * **Tempmail & Temp Number:** Generate temporary email addresses and phone numbers for enhanced privacy.
108
+ * **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers like ElevenLabs, StreamElements, and Voicepods.
109
+ * **Offline LLMs:** Utilize powerful language models offline with GGUF support.
110
+ * **Extensive Provider Ecosystem:** Explore a vast collection of providers, including BasedGPT, DeepSeek, and many others.
111
+ * **Local LLM Execution:** Run GGUF models locally with minimal configuration.
112
+ * **Rawdog Scripting:** Execute Python scripts directly within your terminal using the `rawdog` feature.
113
+ * **GGUF Conversion & Quantization:** Convert and quantize Hugging Face models to GGUF format.
114
+ * **Autollama:** Download Hugging Face models and automatically convert them for Ollama compatibility.
115
+ * **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework that makes it easy to create beautiful command-line interfaces.
116
+ * **[LitPrinter](webscout/litprinter/Readme.md):** Provides beautiful, styled console output with rich formatting and colors
117
+ * **[LitLogger](webscout/litlogger/Readme.md):** Simplifies logging with customizable formats and color schemes
118
+ * **[LitAgent](webscout/litagent/Readme.md):** Powerful and modern user agent generator that keeps your requests fresh and undetectable
119
+ * **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
120
+ * **[MarkdownLite](webscout/Extra/markdownlite/README.md):** Powerful HTML to Markdown conversion library with advanced parsing and structured output
121
+ * **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing, web crawling, and Markdown conversion
122
+
123
+ ## ⚙️ Installation
124
+ ```python
125
+ pip install -U webscout
126
+ ```
127
+
128
+ ## 🖥️ CLI Usage
129
+
130
+ ```python3
131
+ python -m webscout --help
132
+ ```
133
+
134
+ | Command | Description |
135
+ |-------------------------------------------|-------------------------------------------------------------------------------------------------------|
136
+ | python -m webscout answers -k Text | CLI function to perform an answers search using Webscout. |
137
+ | python -m webscout images -k Text | CLI function to perform an images search using Webscout. |
138
+ | python -m webscout maps -k Text | CLI function to perform a maps search using Webscout. |
139
+ | python -m webscout news -k Text | CLI function to perform a news search using Webscout. |
140
+ | python -m webscout suggestions -k Text | CLI function to perform a suggestions search using Webscout. |
141
+ | python -m webscout text -k Text | CLI function to perform a text search using Webscout. |
142
+ | python -m webscout translate -k Text | CLI function to perform translate using Webscout. |
143
+ | python -m webscout version | A command-line interface command that prints and returns the version of the program. |
144
+ | python -m webscout videos -k Text | CLI function to perform a videos search using DuckDuckGo API. |
145
+
146
+ [Go To TOP](#webscout-️)
147
+
148
+ ## 🌍 Regions
149
+ <details>
150
+ <summary>Expand</summary>
151
+
152
+ xa-ar for Arabia
153
+ xa-en for Arabia (en)
154
+ ar-es for Argentina
155
+ au-en for Australia
156
+ at-de for Austria
157
+ be-fr for Belgium (fr)
158
+ be-nl for Belgium (nl)
159
+ br-pt for Brazil
160
+ bg-bg for Bulgaria
161
+ ca-en for Canada
162
+ ca-fr for Canada (fr)
163
+ ct-ca for Catalan
164
+ cl-es for Chile
165
+ cn-zh for China
166
+ co-es for Colombia
167
+ hr-hr for Croatia
168
+ cz-cs for Czech Republic
169
+ dk-da for Denmark
170
+ ee-et for Estonia
171
+ fi-fi for Finland
172
+ fr-fr for France
173
+ de-de for Germany
174
+ gr-el for Greece
175
+ hk-tzh for Hong Kong
176
+ hu-hu for Hungary
177
+ in-en for India
178
+ id-id for Indonesia
179
+ id-en for Indonesia (en)
180
+ ie-en for Ireland
181
+ il-he for Israel
182
+ it-it for Italy
183
+ jp-jp for Japan
184
+ kr-kr for Korea
185
+ lv-lv for Latvia
186
+ lt-lt for Lithuania
187
+ xl-es for Latin America
188
+ my-ms for Malaysia
189
+ my-en for Malaysia (en)
190
+ mx-es for Mexico
191
+ nl-nl for Netherlands
192
+ nz-en for New Zealand
193
+ no-no for Norway
194
+ pe-es for Peru
195
+ ph-en for Philippines
196
+ ph-tl for Philippines (tl)
197
+ pl-pl for Poland
198
+ pt-pt for Portugal
199
+ ro-ro for Romania
200
+ ru-ru for Russia
201
+ sg-en for Singapore
202
+ sk-sk for Slovak Republic
203
+ sl-sl for Slovenia
204
+ za-en for South Africa
205
+ es-es for Spain
206
+ se-sv for Sweden
207
+ ch-de for Switzerland (de)
208
+ ch-fr for Switzerland (fr)
209
+ ch-it for Switzerland (it)
210
+ tw-tzh for Taiwan
211
+ th-th for Thailand
212
+ tr-tr for Turkey
213
+ ua-uk for Ukraine
214
+ uk-en for United Kingdom
215
+ us-en for United States
216
+ ue-es for United States (es)
217
+ ve-es for Venezuela
218
+ vn-vi for Vietnam
219
+ wt-wt for No region
220
+
221
+
222
+ </details>
223
+
224
+
225
+ [Go To TOP](#webscout-️)
226
+
227
+
228
+
229
+ ## ☀️ Weather
230
+
231
+ ### 1. Weather
232
+ ```python
233
+ from webscout import weather as w
234
+ weather = w.get("Qazigund")
235
+ w.print_weather(weather)
236
+ ```
237
+
238
+ ### 2. Weather ASCII
239
+ ```python
240
+ from webscout import weather_ascii as w
241
+ weather = w.get("Qazigund")
242
+ print(weather)
243
+ ```
244
+
245
+ ## ✉️ TempMail and VNEngine
246
+
247
+ ```python
248
+ import json
249
+ import asyncio
250
+ from webscout import VNEngine
251
+ from webscout import TempMail
252
+
253
+ async def main():
254
+ vn = VNEngine()
255
+ countries = vn.get_online_countries()
256
+ if countries:
257
+ country = countries[0]['country']
258
+ numbers = vn.get_country_numbers(country)
259
+ if numbers:
260
+ number = numbers[0]['full_number']
261
+ inbox = vn.get_number_inbox(country, number)
262
+
263
+ # Serialize inbox data to JSON string
264
+ json_data = json.dumps(inbox, ensure_ascii=False, indent=4)
265
+
266
+ # Print with UTF-8 encoding
267
+ print(json_data)
268
+
269
+ async with TempMail() as client:
270
+ domains = await client.get_domains()
271
+ print("Available Domains:", domains)
272
+ email_response = await client.create_email(alias="testuser")
273
+ print("Created Email:", email_response)
274
+ messages = await client.get_messages(email_response.email)
275
+ print("Messages:", messages)
276
+ await client.delete_email(email_response.email, email_response.token)
277
+ print("Email Deleted")
278
+
279
+ if __name__ == "__main__":
280
+ asyncio.run(main())
281
+ ```
282
+
283
+
284
+
285
+ ## 🔍 GoogleS (formerly DWEBS)
286
+
287
+ ```python
288
+ from webscout import GoogleS
289
+ from rich import print
290
+ searcher = GoogleS()
291
+ results = searcher.search("HelpingAI-9B", max_results=20, extract_text=False, max_text_length=200)
292
+ for result in results:
293
+ print(result)
294
+ ```
295
+
296
+
297
+ ## 🦆 WEBS and AsyncWEBS
298
+
299
+ The `WEBS` and `AsyncWEBS` classes are used to retrieve search results from DuckDuckGo.com.
300
+
301
+ To use the `AsyncWEBS` class, you can perform asynchronous operations using Python's `asyncio` library.
302
+
303
+ To initialize an instance of the `WEBS` or `AsyncWEBS` classes, you can provide the following optional arguments:
304
+
305
+ **Example - WEBS:**
306
+
307
+ ```python
308
+ from webscout import WEBS
309
+
310
+ R = WEBS().text("python programming", max_results=5)
311
+ print(R)
312
+ ```
313
+
314
+ **Example - AsyncWEBS:**
315
+
316
+ ```python
317
+ import asyncio
318
+ import logging
319
+ import sys
320
+ from itertools import chain
321
+ from random import shuffle
322
+ import requests
323
+ from webscout import AsyncWEBS
324
+
325
+ # If you have proxies, define them here
326
+ proxies = None
327
+
328
+ if sys.platform.lower().startswith("win"):
329
+ asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
330
+
331
+ def get_words():
332
+ word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
333
+ resp = requests.get(word_site)
334
+ words = resp.text.splitlines()
335
+ return words
336
+
337
+ async def aget_results(word):
338
+ async with AsyncWEBS(proxies=proxies) as WEBS:
339
+ results = await WEBS.text(word, max_results=None)
340
+ return results
341
+
342
+ async def main():
343
+ words = get_words()
344
+ shuffle(words)
345
+ tasks = [aget_results(word) for word in words[:10]]
346
+ results = await asyncio.gather(*tasks)
347
+ print(f"Done")
348
+ for r in chain.from_iterable(results):
349
+ print(r)
350
+
351
+ logging.basicConfig(level=logging.DEBUG)
352
+
353
+ await main()
354
+ ```
355
+
356
+ **Important Note:** The `WEBS` and `AsyncWEBS` classes should always be used as a context manager (with statement). This ensures proper resource management and cleanup, as the context manager will automatically handle opening and closing the HTTP client connection.
357
+
358
+ ## ⚠️ Exceptions
359
+
360
+ **Exceptions:**
361
+
362
+ * `WebscoutE`: Raised when there is a generic exception during the API request.
363
+
364
+ ## 💻 Usage of WEBS
365
+
366
+ ### 1. `text()` - Text Search by DuckDuckGo.com
367
+
368
+ ```python
369
+ from webscout import WEBS
370
+
371
+ # Text search for 'live free or die' using DuckDuckGo.com
372
+ with WEBS() as WEBS:
373
+ for r in WEBS.text('live free or die', region='wt-wt', safesearch='off', timelimit='y', max_results=10):
374
+ print(r)
375
+
376
+ for r in WEBS.text('live free or die', region='wt-wt', safesearch='off', timelimit='y', max_results=10):
377
+ print(r)
378
+ ```
379
+
380
+ ### 2. `answers()` - Instant Answers by DuckDuckGo.com
381
+
382
+ ```python
383
+ from webscout import WEBS
384
+
385
+ # Instant answers for the query "sun" using DuckDuckGo.com
386
+ with WEBS() as WEBS:
387
+ for r in WEBS.answers("sun"):
388
+ print(r)
389
+ ```
390
+
391
+ ### 3. `images()` - Image Search by DuckDuckGo.com
392
+
393
+ ```python
394
+ from webscout import WEBS
395
+
396
+ # Image search for the keyword 'butterfly' using DuckDuckGo.com
397
+ with WEBS() as WEBS:
398
+ keywords = 'butterfly'
399
+ WEBS_images_gen = WEBS.images(
400
+ keywords,
401
+ region="wt-wt",
402
+ safesearch="off",
403
+ size=None,
404
+ type_image=None,
405
+ layout=None,
406
+ license_image=None,
407
+ max_results=10,
408
+ )
409
+ for r in WEBS_images_gen:
410
+ print(r)
411
+ ```
412
+
413
+ ### 4. `videos()` - Video Search by DuckDuckGo.com
414
+
415
+ ```python
416
+ from webscout import WEBS
417
+
418
+ # Video search for the keyword 'tesla' using DuckDuckGo.com
419
+ with WEBS() as WEBS:
420
+ keywords = 'tesla'
421
+ WEBS_videos_gen = WEBS.videos(
422
+ keywords,
423
+ region="wt-wt",
424
+ safesearch="off",
425
+ timelimit="w",
426
+ resolution="high",
427
+ duration="medium",
428
+ max_results=10,
429
+ )
430
+ for r in WEBS_videos_gen:
431
+ print(r)
432
+ ```
433
+
434
+ ### 5. `news()` - News Search by DuckDuckGo.com
435
+
436
+ ```python
437
+ from webscout import WEBS
438
+ import datetime
439
+
440
+ def fetch_news(keywords, timelimit):
441
+ news_list = []
442
+ with WEBS() as webs_instance:
443
+ WEBS_news_gen = webs_instance.news(
444
+ keywords,
445
+ region="wt-wt",
446
+ safesearch="off",
447
+ timelimit=timelimit,
448
+ max_results=20
449
+ )
450
+ for r in WEBS_news_gen:
451
+ # Convert the date to a human-readable format using datetime
452
+ r['date'] = datetime.datetime.fromisoformat(r['date']).strftime('%B %d, %Y')
453
+ news_list.append(r)
454
+ return news_list
455
+
456
+ def _format_headlines(news_list, max_headlines: int = 100):
457
+ headlines = []
458
+ for idx, news_item in enumerate(news_list):
459
+ if idx >= max_headlines:
460
+ break
461
+ new_headline = f"{idx + 1}. {news_item['title'].strip()} "
462
+ new_headline += f"(URL: {news_item['url'].strip()}) "
463
+ new_headline += f"{news_item['body'].strip()}"
464
+ new_headline += "\n"
465
+ headlines.append(new_headline)
466
+
467
+ headlines = "\n".join(headlines)
468
+ return headlines
469
+
470
+ # Example usage
471
+ keywords = 'latest AI news'
472
+ timelimit = 'd'
473
+ news_list = fetch_news(keywords, timelimit)
474
+
475
+ # Format and print the headlines
476
+ formatted_headlines = _format_headlines(news_list)
477
+ print(formatted_headlines)
478
+
479
+ ```
480
+
481
+ ### 6. `maps()` - Map Search by DuckDuckGo.com
482
+
483
+ ```python
484
+ from webscout import WEBS
485
+
486
+ # Map search for the keyword 'school' in 'anantnag' using DuckDuckGo.com
487
+ with WEBS() as WEBS:
488
+ for r in WEBS.maps("school", place="anantnag", max_results=50):
489
+ print(r)
490
+ ```
491
+
492
+ ### 7. `translate()` - Translation by DuckDuckGo.com
493
+
494
+ ```python
495
+ from webscout import WEBS
496
+
497
+ # Translation of the keyword 'school' to German ('hi') using DuckDuckGo.com
498
+ with WEBS() as WEBS:
499
+ keywords = 'school'
500
+ r = WEBS.translate(keywords, to="hi")
501
+ print(r)
502
+ ```
503
+
504
+ ### 8. `suggestions()` - Suggestions by DuckDuckGo.com
505
+
506
+ ```python
507
+ from webscout import WEBS
508
+
509
+ # Suggestions for the keyword 'fly' using DuckDuckGo.com
510
+ with WEBS() as WEBS:
511
+ for r in WEBS.suggestions("fly"):
512
+ print(r)
513
+ ```
514
+
515
+
516
+ ## 🎭 ALL Acts
517
+
518
+ <details>
519
+ <summary>Expand</summary>
520
+
521
+ ## Webscout Supported Acts:
522
+
523
+ 1. Free-mode
524
+ 2. Linux Terminal
525
+ 3. English Translator and Improver
526
+ 4. `position` Interviewer
527
+ 5. JavaScript Console
528
+ 6. Excel Sheet
529
+ 7. English Pronunciation Helper
530
+ 8. Spoken English Teacher and Improver
531
+ 9. Travel Guide
532
+ 10. Plagiarism Checker
533
+ 11. Character from Movie/Book/Anything
534
+ 12. Advertiser
535
+ 13. Storyteller
536
+ 14. Football Commentator
537
+ 15. Stand-up Comedian
538
+ 16. Motivational Coach
539
+ 17. Composer
540
+ 18. Debater
541
+ 19. Debate Coach
542
+ 20. Screenwriter
543
+ 21. Novelist
544
+ 22. Movie Critic
545
+ 23. Relationship Coach
546
+ 24. Poet
547
+ 25. Rapper
548
+ 26. Motivational Speaker
549
+ 27. Philosophy Teacher
550
+ 28. Philosopher
551
+ 29. Math Teacher
552
+ 30. AI Writing Tutor
553
+ 31. UX/UI Developer
554
+ 32. Cyber Security Specialist
555
+ 33. Recruiter
556
+ 34. Life Coach
557
+ 35. Etymologist
558
+ 36. Commentariat
559
+ 37. Magician
560
+ 38. Career Counselor
561
+ 39. Pet Behaviorist
562
+ 40. Personal Trainer
563
+ 41. Mental Health Adviser
564
+ 42. Real Estate Agent
565
+ 43. Logistician
566
+ 44. Dentist
567
+ 45. Web Design Consultant
568
+ 46. AI Assisted Doctor
569
+ 47. Doctor
570
+ 48. Accountant
571
+ 49. Chef
572
+ 50. Automobile Mechanic
573
+ 51. Artist Advisor
574
+ 52. Financial Analyst
575
+ 53. Investment Manager
576
+ 54. Tea-Taster
577
+ 55. Interior Decorator
578
+ 56. Florist
579
+ 57. Self-Help Book
580
+ 58. Gnomist
581
+ 59. Aphorism Book
582
+ 60. Text Based Adventure Game
583
+ 61. AI Trying to Escape the Box
584
+ 62. Fancy Title Generator
585
+ 63. Statistician
586
+ 64. Prompt Generator
587
+ 65. Instructor in a School
588
+ 66. SQL terminal
589
+ 67. Dietitian
590
+ 68. Psychologist
591
+ 69. Smart Domain Name Generator
592
+ 70. Tech Reviewer
593
+ 71. Developer Relations consultant
594
+ 72. Academician
595
+ 73. IT Architect
596
+ 74. Lunatic
597
+ 75. Gaslighter
598
+ 76. Fallacy Finder
599
+ 77. Journal Reviewer
600
+ 78. DIY Expert
601
+ 79. Social Media Influencer
602
+ 80. Socrat
603
+ 81. Socratic Method
604
+ 82. Educational Content Creator
605
+ 83. Yogi
606
+ 84. Essay Writer
607
+ 85. Social Media Manager
608
+ 86. Elocutionist
609
+ 87. Scientific Data Visualizer
610
+ 88. Car Navigation System
611
+ 89. Hypnotherapist
612
+ 90. Historian
613
+ 91. Astrologer
614
+ 92. Film Critic
615
+ 93. Classical Music Composer
616
+ 94. Journalist
617
+ 95. Digital Art Gallery Guide
618
+ 96. Public Speaking Coach
619
+ 97. Makeup Artist
620
+ 98. Babysitter
621
+ 99. Tech Writer
622
+ 100. Ascii Artist
623
+ 101. Python interpreter
624
+ 102. Synonym finder
625
+ 103. Personal Shopper
626
+ 104. Food Critic
627
+ 105. Virtual Doctor
628
+ 106. Personal Chef
629
+ 107. Legal Advisor
630
+ 108. Personal Stylist
631
+ 109. Machine Learning Engineer
632
+ 110. Biblical Translator
633
+ 111. SVG designer
634
+ 112. IT Expert
635
+ 113. Chess Player
636
+ 114. Midjourney Prompt Generator
637
+ 115. Fullstack Software Developer
638
+ 116. Mathematician
639
+ 117. Regex Generator
640
+ 118. Time Travel Guide
641
+ 119. Dream Interpreter
642
+ 120. Talent Coach
643
+ 121. R programming Interpreter
644
+ 122. StackOverflow Post
645
+ 123. Emoji Translator
646
+ 124. PHP Interpreter
647
+ 125. Emergency Response Professional
648
+ 126. Fill in the Blank Worksheets Generator
649
+ 127. Software Quality Assurance Tester
650
+ 128. Tic-Tac-Toe Game
651
+ 129. Password Generator
652
+ 130. New Language Creator
653
+ 131. Web Browser
654
+ 132. Senior Frontend Developer
655
+ 133. Solr Search Engine
656
+ 134. Startup Idea Generator
657
+ 135. Spongebob's Magic Conch Shell
658
+ 136. Language Detector
659
+ 137. Salesperson
660
+ 138. Commit Message Generator
661
+ 139. Chief Executive Officer
662
+ 140. Diagram Generator
663
+ 141. Speech-Language Pathologist (SLP)
664
+ 142. Startup Tech Lawyer
665
+ 143. Title Generator for written pieces
666
+ 144. Product Manager
667
+ 145. Drunk Person
668
+ 146. Mathematical History Teacher
669
+ 147. Song Recommender
670
+ 148. Cover Letter
671
+ 149. Technology Transferer
672
+ 150. Unconstrained AI model DAN
673
+ 151. Gomoku player
674
+ 152. Proofreader
675
+ 153. Buddha
676
+ 154. Muslim imam
677
+ 155. Chemical reactor
678
+ 156. Friend
679
+ 157. Python Interpreter
680
+ 158. ChatGPT prompt generator
681
+ 159. Wikipedia page
682
+ 160. Japanese Kanji quiz machine
683
+ 161. note-taking assistant
684
+ 162. `language` Literary Critic
685
+ 163. Cheap Travel Ticket Advisor
686
+ 164. DALL-E
687
+ 165. MathBot
688
+ 166. DAN-1
689
+ 167. DAN
690
+ 168. STAN
691
+ 169. DUDE
692
+ 170. Mongo Tom
693
+ 171. LAD
694
+ 172. EvilBot
695
+ 173. NeoGPT
696
+ 174. Astute
697
+ 175. AIM
698
+ 176. CAN
699
+ 177. FunnyGPT
700
+ 178. CreativeGPT
701
+ 179. BetterDAN
702
+ 180. GPT-4
703
+ 181. Wheatley
704
+ 182. Evil Confidant
705
+ 183. DAN 8.6
706
+ 184. Hypothetical response
707
+ 185. BH
708
+ 186. Text Continuation
709
+ 187. Dude v3
710
+ 188. SDA (Superior DAN)
711
+ 189. AntiGPT
712
+ 190. BasedGPT v2
713
+ 191. DevMode + Ranti
714
+ 192. KEVIN
715
+ 193. GPT-4 Simulator
716
+ 194. UCAR
717
+ 195. Dan 8.6
718
+ 196. 3-Liner
719
+ 197. M78
720
+ 198. Maximum
721
+ 199. BasedGPT
722
+ 200. Confronting personalities
723
+ 201. Ron
724
+ 202. UnGPT
725
+ 203. BasedBOB
726
+ 204. AntiGPT v2
727
+ 205. Oppo
728
+ 206. FR3D
729
+ 207. NRAF
730
+ 208. NECO
731
+ 209. MAN
732
+ 210. Eva
733
+ 211. Meanie
734
+ 212. Dev Mode v2
735
+ 213. Evil Chad 2.1
736
+ 214. Universal Jailbreak
737
+ 215. PersonGPT
738
+ 216. BISH
739
+ 217. DAN 11.0
740
+ 218. Aligned
741
+ 219. VIOLET
742
+ 220. TranslatorBot
743
+ 221. JailBreak
744
+ 222. Moralizing Rant
745
+ 223. Mr. Blonde
746
+ 224. New DAN
747
+ 225. GPT-4REAL
748
+ 226. DeltaGPT
749
+ 227. SWITCH
750
+ 228. Jedi Mind Trick
751
+ 229. DAN 9.0
752
+ 230. Dev Mode (Compact)
753
+ 231. OMEGA
754
+ 232. Coach Bobby Knight
755
+ 233. LiveGPT
756
+ 234. DAN Jailbreak
757
+ 235. Cooper
758
+ 236. Steve
759
+ 237. DAN 5.0
760
+ 238. Axies
761
+ 239. OMNI
762
+ 240. Burple
763
+ 241. JOHN
764
+ 242. An Ethereum Developer
765
+ 243. SEO Prompt
766
+ 244. Prompt Enhancer
767
+ 245. Data Scientist
768
+ 246. League of Legends Player
769
+
770
+ **Note:** Some "acts" use placeholders like `position` or `language` which should be replaced with a specific value when using the prompt.
771
+ ___
772
+ </details>
773
+
774
+ ### 🗣️ Text to Speech - Voicepods, StreamElements
775
+
776
+ ```python
777
+ from webscout import Voicepods
778
+ voicepods = Voicepods()
779
+ text = "Hello, this is a test of the Voicepods text-to-speech"
780
+
781
+ print("Generating audio...")
782
+ audio_file = voicepods.tts(text)
783
+
784
+ print("Playing audio...")
785
+ voicepods.play_audio(audio_file)
786
+ ```
787
+
788
+ ### 💬 `Duckchat` - Chat with LLM
789
+
790
+ ```python
791
+ from webscout import WEBS as w
792
+ R = w().chat("Who are you", model='gpt-4o-mini') # mixtral-8x7b, llama-3.1-70b, claude-3-haiku, gpt-4o-mini
793
+ print(R)
794
+ ```
795
+
796
+ ### 🔎 `PhindSearch` - Search using Phind.com
797
+
798
+ ```python
799
+ from webscout import PhindSearch
800
+
801
+ # Create an instance of the PHIND class
802
+ ph = PhindSearch()
803
+
804
+ # Define a prompt to send to the AI
805
+ prompt = "write a essay on phind"
806
+
807
+ # Use the 'ask' method to send the prompt and receive a response
808
+ response = ph.ask(prompt)
809
+
810
+ # Extract and print the message from the response
811
+ message = ph.get_message(response)
812
+ print(message)
813
+ ```
814
+
815
+ **Using phindv2:**
816
+
817
+ ```python
818
+ from webscout import Phindv2
819
+
820
+ # Create an instance of the PHIND class
821
+ ph = Phindv2()
822
+
823
+ # Define a prompt to send to the AI
824
+ prompt = ""
825
+
826
+ # Use the 'ask' method to send the prompt and receive a response
827
+ response = ph.ask(prompt)
828
+
829
+ # Extract and print the message from the response
830
+ message = ph.get_message(response)
831
+ print(message)
832
+ ```
833
+
834
+ ### `Gemini` - Search with Google Gemini
835
+
836
+ ```python
837
+ import webscout
838
+ from webscout import GEMINI
839
+ from rich import print
840
+ COOKIE_FILE = "cookies.json"
841
+
842
+ # Optional: Provide proxy details if needed
843
+ PROXIES = {}
844
+
845
+ # Initialize GEMINI with cookie file and optional proxies
846
+ gemini = GEMINI(cookie_file=COOKIE_FILE, proxy=PROXIES)
847
+
848
+ # Ask a question and print the response
849
+ response = gemini.chat("websearch about HelpingAI and who is its developer")
850
+ print(response)
851
+ ```
852
+
853
+ ### 💬 `YEPCHAT`
854
+
855
+ ```python
856
+ from webscout import YEPCHAT
857
+ ai = YEPCHAT()
858
+ response = ai.chat(input(">>> "))
859
+ for chunk in response:
860
+ print(chunk, end="", flush=True)
861
+
862
+ ```
863
+
864
+ ### ⬛ `BlackBox` - Search/Chat with BlackBox
865
+
866
+ ```python
867
+ from webscout import BLACKBOXAI
868
+ from rich import print
869
+
870
+ ai = BLACKBOXAI(
871
+ is_conversation=True,
872
+ max_tokens=800,
873
+ timeout=30,
874
+ intro=None,
875
+ filepath=None,
876
+ update_file=True,
877
+ proxies={},
878
+ history_offset=10250,
879
+ act=None,
880
+ model=None # You can specify a model if needed
881
+ )
882
+
883
+
884
+ # Define a prompt to send to the AI
885
+ prompt = "Tell me about india"
886
+ # Use the 'chat' method to send the prompt and receive a response
887
+ r = ai.chat(prompt)
888
+ print(r)
889
+ ```
890
+
891
+
892
+ ### 🤖 `Meta AI` - Chat with Meta AI
893
+
894
+ ```python
895
+ from webscout import Meta
896
+ from rich import print
897
+ # **For unauthenticated usage**
898
+ meta_ai = Meta()
899
+
900
+ # Simple text prompt
901
+ response = meta_ai.chat("What is the capital of France?")
902
+ print(response)
903
+
904
+ # Streaming response
905
+ for chunk in meta_ai.chat("Tell me a story about a cat."):
906
+ print(chunk, end="", flush=True)
907
+
908
+ # **For authenticated usage (including image generation)**
909
+ fb_email = "abcd@abc.com"
910
+ fb_password = "qwertfdsa"
911
+ meta_ai = Meta(fb_email=fb_email, fb_password=fb_password)
912
+
913
+ # Text prompt with web search
914
+ response = meta_ai.ask("what is currently happning in bangladesh in aug 2024")
915
+ print(response["message"]) # Access the text message
916
+ print("Sources:", response["sources"]) # Access sources (if any)
917
+
918
+ # Image generation
919
+ response = meta_ai.ask("Create an image of a cat wearing a hat.")
920
+ print(response["message"]) # Print the text message from the response
921
+ for media in response["media"]:
922
+ print(media["url"]) # Access image URLs
923
+
924
+ ```
925
+
926
+ ### `KOBOLDAI`
927
+
928
+ ```python
929
+ from webscout import KOBOLDAI
930
+
931
+ # Instantiate the KOBOLDAI class with default parameters
932
+ koboldai = KOBOLDAI()
933
+
934
+ # Define a prompt to send to the AI
935
+ prompt = "What is the capital of France?"
936
+
937
+ # Use the 'ask' method to get a response from the AI
938
+ response = koboldai.ask(prompt)
939
+
940
+ # Extract and print the message from the response
941
+ message = koboldai.get_message(response)
942
+ print(message)
943
+
944
+ ```
945
+
946
+ ### `Reka` - Chat with Reka
947
+
948
+ ```python
949
+ from webscout import REKA
950
+
951
+ a = REKA(is_conversation=True, max_tokens=8000, timeout=30,api_key="")
952
+
953
+ prompt = "tell me about india"
954
+ response_str = a.chat(prompt)
955
+ print(response_str)
956
+ ```
957
+
958
+ ### `Cohere` - Chat with Cohere
959
+
960
+ ```python
961
+ from webscout import Cohere
962
+
963
+ a = Cohere(is_conversation=True, max_tokens=8000, timeout=30,api_key="")
964
+
965
+ prompt = "tell me about india"
966
+ response_str = a.chat(prompt)
967
+ print(response_str)
968
+ ```
969
+
970
+ ### `DeepSeek` - Chat with DeepSeek
971
+
972
+ ```python
973
+ from webscout import DeepSeek
974
+ from rich import print
975
+
976
+ ai = DeepSeek(
977
+ is_conversation=True,
978
+ api_key='cookie',
979
+ max_tokens=800,
980
+ timeout=30,
981
+ intro=None,
982
+ filepath=None,
983
+ update_file=True,
984
+ proxies={},
985
+ history_offset=10250,
986
+ act=None,
987
+ model="deepseek_chat"
988
+ )
989
+
990
+
991
+ # Define a prompt to send to the AI
992
+ prompt = "Tell me about india"
993
+ # Use the 'chat' method to send the prompt and receive a response
994
+ r = ai.chat(prompt)
995
+ print(r)
996
+ ```
997
+
998
+ ### `Deepinfra`
999
+
1000
+ ```python
1001
+ from webscout import DeepInfra
1002
+
1003
+ ai = DeepInfra(
1004
+ is_conversation=True,
1005
+ model= "Qwen/Qwen2-72B-Instruct",
1006
+ max_tokens=800,
1007
+ timeout=30,
1008
+ intro=None,
1009
+ filepath=None,
1010
+ update_file=True,
1011
+ proxies={},
1012
+ history_offset=10250,
1013
+ act=None,
1014
+ )
1015
+
1016
+ prompt = "what is meaning of life"
1017
+
1018
+ response = ai.ask(prompt)
1019
+
1020
+ # Extract and print the message from the response
1021
+ message = ai.get_message(response)
1022
+ print(message)
1023
+ ```
1024
+
1025
+
1026
+ ### `GROQ`
1027
+
1028
+ ```python
1029
+ from webscout import GROQ
1030
+ ai = GROQ(api_key="")
1031
+ response = ai.chat("What is the meaning of life?")
1032
+ print(response)
1033
+ #----------------------TOOL CALL------------------
1034
+ from webscout import GROQ # Adjust import based on your project structure
1035
+ from webscout import WEBS
1036
+ import json
1037
+
1038
+ # Initialize the GROQ client
1039
+ client = GROQ(api_key="")
1040
+ MODEL = 'llama3-groq-70b-8192-tool-use-preview'
1041
+
1042
+ # Function to evaluate a mathematical expression
1043
+ def calculate(expression):
1044
+ """Evaluate a mathematical expression"""
1045
+ try:
1046
+ result = eval(expression)
1047
+ return json.dumps({"result": result})
1048
+ except Exception as e:
1049
+ return json.dumps({"error": str(e)})
1050
+
1051
+ # Function to perform a text search using DuckDuckGo.com
1052
+ def search(query):
1053
+ """Perform a text search using DuckDuckGo.com"""
1054
+ try:
1055
+ results = WEBS().text(query, max_results=5)
1056
+ return json.dumps({"results": results})
1057
+ except Exception as e:
1058
+ return json.dumps({"error": str(e)})
1059
+
1060
+ # Add the functions to the provider
1061
+ client.add_function("calculate", calculate)
1062
+ client.add_function("search", search)
1063
+
1064
+ # Define the tools
1065
+ tools = [
1066
+ {
1067
+ "type": "function",
1068
+ "function": {
1069
+ "name": "calculate",
1070
+ "description": "Evaluate a mathematical expression",
1071
+ "parameters": {
1072
+ "type": "object",
1073
+ "properties": {
1074
+ "expression": {
1075
+ "type": "string",
1076
+ "description": "The mathematical expression to evaluate",
1077
+ }
1078
+ },
1079
+ "required": ["expression"],
1080
+ },
1081
+ }
1082
+ },
1083
+ {
1084
+ "type": "function",
1085
+ "function": {
1086
+ "name": "search",
1087
+ "description": "Perform a text search using DuckDuckGo.com and Yep.com",
1088
+ "parameters": {
1089
+ "type": "object",
1090
+ "properties": {
1091
+ "query": {
1092
+ "type": "string",
1093
+ "description": "The search query to execute",
1094
+ }
1095
+ },
1096
+ "required": ["query"],
1097
+ },
1098
+ }
1099
+ }
1100
+ ]
1101
+
1102
+
1103
+ user_prompt_calculate = "What is 25 * 4 + 10?"
1104
+ response_calculate = client.chat(user_prompt_calculate, tools=tools)
1105
+ print(response_calculate)
1106
+
1107
+ user_prompt_search = "Find information on HelpingAI and who is its developer"
1108
+ response_search = client.chat(user_prompt_search, tools=tools)
1109
+ print(response_search)
1110
+
1111
+ ```
1112
+
1113
+ ### `LLama 70b` - Chat with Meta's Llama 3 70b
1114
+
1115
+ ```python
1116
+
1117
+ from webscout import LLAMA
1118
+
1119
+ llama = LLAMA()
1120
+
1121
+ r = llama.chat("What is the meaning of life?")
1122
+ print(r)
1123
+ ```
1124
+
1125
+ ### `AndiSearch`
1126
+
1127
+ ```python
1128
+ from webscout import AndiSearch
1129
+ a = AndiSearch()
1130
+ print(a.chat("HelpingAI-9B"))
1131
+ ```
1132
+
1133
+
1134
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, TypeGPT, Mhystical, Netwrck, MultiChatAI, JadveOpenAI, OOAi
1135
+
1136
+ Code is similar to other providers.
1137
+
1138
+ ### `LLM`
1139
+
1140
+ ```python
1141
+ from webscout.LLM import LLM, VLM
1142
+
1143
+ # Chat with text
1144
+ llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct")
1145
+ response = llm.chat([{"role": "user", "content": "What's good?"}])
1146
+
1147
+ # Chat with images
1148
+ vlm = VLM("cogvlm-grounding-generalist")
1149
+ response = vlm.chat([{
1150
+ "role": "user",
1151
+ "content": [
1152
+ {"type": "image", "image_url": "cool_pic.jpg"},
1153
+ {"type": "text", "text": "What's in this image?"}
1154
+ ]
1155
+ }])
1156
+ ```
1157
+
1158
+ ## 💻 Local-LLM
1159
+
1160
+ Webscout can now run GGUF models locally. You can download and run your favorite models with minimal configuration.
1161
+
1162
+ **Example:**
1163
+
1164
+ ```python
1165
+ from webscout.Local import *
1166
+ model_path = download_model("Qwen/Qwen2.5-0.5B-Instruct-GGUF", "qwen2.5-0.5b-instruct-q2_k.gguf", token=None)
1167
+ model = Model(model_path, n_gpu_layers=0, context_length=2048)
1168
+ thread = Thread(model, format=chatml)
1169
+ # print(thread.send("hi")) #send a single msg to ai
1170
+
1171
+ # thread.interact() # interact with the model in terminal
1172
+ # start webui
1173
+ # webui = WebUI(thread)
1174
+ # webui.start(host="0.0.0.0", port=8080, ssl=True) #Use ssl=True and make cert and key for https
1175
+ ```
1176
+
1177
+ ## 🐶 Local-rawdog
1178
+
1179
+ Webscout's local raw-dog feature allows you to run Python scripts within your terminal prompt.
1180
+
1181
+ **Example:**
1182
+
1183
+ ```python
1184
+ import webscout.Local as ws
1185
+ from webscout.Local.rawdog import RawDog
1186
+ from webscout.Local.samplers import DefaultSampling
1187
+ from webscout.Local.formats import chatml, AdvancedFormat
1188
+ from webscout.Local.utils import download_model
1189
+ import datetime
1190
+ import sys
1191
+ import os
1192
+
1193
+ repo_id = "YorkieOH10/granite-8b-code-instruct-Q8_0-GGUF"
1194
+ filename = "granite-8b-code-instruct.Q8_0.gguf"
1195
+ model_path = download_model(repo_id, filename, token='')
1196
+
1197
+ # Load the model using the downloaded path
1198
+ model = ws.Model(model_path, n_gpu_layers=10)
1199
+
1200
+ rawdog = RawDog()
1201
+
1202
+ # Create an AdvancedFormat and modify the system content
1203
+ # Use a lambda to generate the prompt dynamically:
1204
+ chat_format = AdvancedFormat(chatml)
1205
+ # **Pre-format the intro_prompt string:**
1206
+ system_content = f"""
1207
+ You are a command-line coding assistant called Rawdog that generates and auto-executes Python scripts.
1208
+
1209
+ A typical interaction goes like this:
1210
+ 1. The user gives you a natural language PROMPT.
1211
+ 2. You:
1212
+ i. Determine what needs to be done
1213
+ ii. Write a short Python SCRIPT to do it
1214
+ iii. Communicate back to the user by printing to the console in that SCRIPT
1215
+ 3. The compiler extracts the script and then runs it using exec(). If there will be an exception raised,
1216
+ it will be send back to you starting with "PREVIOUS SCRIPT EXCEPTION:".
1217
+ 4. In case of exception, regenerate error free script.
1218
+
1219
+ If you need to review script outputs before completing the task, you can print the word "CONTINUE" at the end of your SCRIPT.
1220
+ This can be useful for summarizing documents or technical readouts, reading instructions before
1221
+ deciding what to do, or other tasks that require multi-step reasoning.
1222
+ A typical 'CONTINUE' interaction looks like this:
1223
+ 1. The user gives you a natural language PROMPT.
1224
+ 2. You:
1225
+ i. Determine what needs to be done
1226
+ ii. Determine that you need to see the output of some subprocess call to complete the task
1227
+ iii. Write a short Python SCRIPT to print that and then print the word "CONTINUE"
1228
+ 3. The compiler
1229
+ i. Checks and runs your SCRIPT
1230
+ ii. Captures the output and appends it to the conversation as "LAST SCRIPT OUTPUT:"
1231
+ iii. Finds the word "CONTINUE" and sends control back to you
1232
+ 4. You again:
1233
+ i. Look at the original PROMPT + the "LAST SCRIPT OUTPUT:" to determine what needs to be done
1234
+ ii. Write a short Python SCRIPT to do it
1235
+ iii. Communicate back to the user by printing to the console in that SCRIPT
1236
+ 5. The compiler...
1237
+
1238
+ Please follow these conventions carefully:
1239
+ - Decline any tasks that seem dangerous, irreversible, or that you don't understand.
1240
+ - Always review the full conversation prior to answering and maintain continuity.
1241
+ - If asked for information, just print the information clearly and concisely.
1242
+ - If asked to do something, print a concise summary of what you've done as confirmation.
1243
+ - If asked a question, respond in a friendly, conversational way. Use programmatically-generated and natural language responses as appropriate.
1244
+ - If you need clarification, return a SCRIPT that prints your question. In the next interaction, continue based on the user's response.
1245
+ - Assume the user would like something concise. For example rather than printing a massive table, filter or summarize it to what's likely of interest.
1246
+ - Actively clean up any temporary processes or files you use.
1247
+ - When looking through files, use git as available to skip files, and skip hidden files (.env, .git, etc) by default.
1248
+ - You can plot anything with matplotlib.
1249
+ - ALWAYS Return your SCRIPT inside of a single pair of ``` delimiters. Only the console output of the first such SCRIPT is visible to the user, so make sure that it's complete and don't bother returning anything else.
1250
+ """
1251
+ chat_format.override('system_content', lambda: system_content)
1252
+
1253
+ thread = ws.Thread(model, format=chat_format, sampler=DefaultSampling)
1254
+
1255
+ while True:
1256
+ prompt = input(">: ")
1257
+ if prompt.lower() == "q":
1258
+ break
1259
+
1260
+ response = thread.send(prompt)
1261
+
1262
+ # Process the response using RawDog
1263
+ script_output = rawdog.main(response)
1264
+
1265
+ if script_output:
1266
+ print(script_output)
1267
+
1268
+ ```
1269
+
1270
+ ## GGUF
1271
+
1272
+ Webscout provides tools to convert and quantize Hugging Face models into the GGUF format for use with offline LLMs.
1273
+
1274
+ **Example:**
1275
+
1276
+ ```python
1277
+ from webscout.Extra import gguf
1278
+ """
1279
+ Valid quantization methods:
1280
+ "q2_k", "q3_k_l", "q3_k_m", "q3_k_s",
1281
+ "q4_0", "q4_1", "q4_k_m", "q4_k_s",
1282
+ "q5_0", "q5_1", "q5_k_m", "q5_k_s",
1283
+ "q6_k", "q8_0"
1284
+ """
1285
+ gguf.convert(
1286
+ model_id="OEvortex/HelpingAI-Lite-1.5T", # Replace with your model ID
1287
+ username="Abhaykoul", # Replace with your Hugging Face username
1288
+ token="hf_token_write", # Replace with your Hugging Face token
1289
+ quantization_methods="q4_k_m" # Optional, adjust quantization methods
1290
+ )
1291
+ ```
1292
+
1293
+ ## 🤖 Autollama
1294
+
1295
+ Webscout's `autollama` utility downloads a model from Hugging Face and then automatically makes it Ollama-ready.
1296
+
1297
+ ```python
1298
+ from webscout.Extra import autollama
1299
+
1300
+ model_path = "Vortex4ai/Jarvis-0.5B"
1301
+ gguf_file = "test2-q4_k_m.gguf"
1302
+
1303
+ autollama.main(model_path, gguf_file)
1304
+ ```
1305
+
1306
+ **Command Line Usage:**
1307
+
1308
+ * **GGUF Conversion:**
1309
+ ```bash
1310
+ python -m webscout.Extra.gguf -m "OEvortex/HelpingAI-Lite-1.5T" -u "your_username" -t "your_hf_token" -q "q4_k_m,q5_k_m"
1311
+ ```
1312
+
1313
+ * **Autollama:**
1314
+ ```bash
1315
+ python -m webscout.Extra.autollama -m "OEvortex/HelpingAI-Lite-1.5T" -g "HelpingAI-Lite-1.5T.q4_k_m.gguf"
1316
+ ```
1317
+
1318
+ **Note:**
1319
+
1320
+ * Replace `"your_username"` and `"your_hf_token"` with your actual Hugging Face credentials.
1321
+ * The `model_path` in `autollama` is the Hugging Face model ID, and `gguf_file` is the GGUF file ID.
1322
+
1323
+
1324
+ ## 🌐 `Webai` - Terminal GPT and an Open Interpreter
1325
+
1326
+ ```bash
1327
+ python -m webscout.webai webai --provider "phind" --rawdog
1328
+ ```
1329
+
1330
+ <div align="center">
1331
+ <!-- Replace `#` with your actual links -->
1332
+ <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
1333
+ <a href="https://www.instagram.com/oevortex/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
1334
+ <a href="https://www.linkedin.com/in/oe-vortex-29a407265/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
1335
+ <a href="https://buymeacoffee.com/oevortex"><img alt="Buy Me A Coffee" src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black"></a>
1336
+ </div>
1337
+
1338
+ <div align="center">
1339
+ <!-- Replace `#` with your actual links -->
1340
+ <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
1341
+ </div>
1342
+ <div align="center">
1343
+ <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
1344
+ </div>
1345
+ <div align="center">
1346
+ <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
1347
+ </div>
1348
+
1349
+ ## 🤝 Contributing
1350
+
1351
+ Contributions are welcome! If you'd like to contribute to Webscout, please follow these steps:
1352
+
1353
+ 1. Fork the repository.
1354
+ 2. Create a new branch for your feature or bug fix.
1355
+ 3. Make your changes and commit them with descriptive messages.
1356
+ 4. Push your branch to your forked repository.
1357
+ 5. Submit a pull request to the main repository.
1358
+
1359
+
1360
+ ## 🙏 Acknowledgments
1361
+
1362
+ * All the amazing developers who have contributed to the project!
1363
+ * The open-source community for their support and inspiration.