webscout 8.3.3__tar.gz → 8.3.5__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.
- {webscout-8.3.3/webscout.egg-info → webscout-8.3.5}/PKG-INFO +9 -150
- {webscout-8.3.3 → webscout-8.3.5}/README.md +7 -147
- webscout-8.3.5/changelog.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/pyproject.toml +1 -2
- webscout-8.3.5/webscout/AIutel.py +58 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Bard.py +2 -22
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/__init__.py +11 -10
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/felo_search.py +7 -3
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/scira_search.py +26 -11
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/stellar_search.py +53 -8
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Deepinfra.py +81 -57
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/ExaChat.py +9 -5
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Flowith.py +1 -1
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/FreeGemini.py +2 -2
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Gemini.py +3 -10
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/GeminiProxy.py +31 -5
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/LambdaChat.py +39 -31
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Netwrck.py +5 -8
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OLLAMA.py +8 -9
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/README.md +1 -1
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/TogetherAI.py +57 -48
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/TwoAI.py +94 -1
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/__init__.py +1 -3
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/autoproxy.py +1 -1
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/copilot.py +73 -26
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/deepinfra.py +60 -24
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/exachat.py +9 -5
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/monochat.py +3 -3
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/netwrck.py +4 -7
- webscout-8.3.5/webscout/Provider/OPENAI/qodo.py +630 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/scirachat.py +86 -49
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/textpollinations.py +19 -14
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/venice.py +1 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Perplexitylabs.py +163 -147
- webscout-8.3.5/webscout/Provider/Qodo.py +478 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/__init__.py +1 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/monochat.py +3 -3
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/together.py +7 -6
- webscout-8.3.5/webscout/Provider/TTI/venice.py +368 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TextPollinationsAI.py +19 -14
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TogetherAI.py +57 -44
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TwoAI.py +96 -2
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TypliAI.py +33 -27
- webscout-8.3.5/webscout/Provider/UNFINISHED/PERPLEXED_search.py +254 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/fetch_together_models.py +6 -11
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Venice.py +1 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/WiseCat.py +18 -20
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/__init__.py +4 -10
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/copilot.py +58 -61
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/freeaichat.py +64 -55
- webscout-8.3.5/webscout/Provider/monochat.py +275 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/scira_chat.py +115 -21
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/toolbaz.py +5 -10
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/typefully.py +1 -11
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/x0gpt.py +325 -315
- {webscout-8.3.3 → webscout-8.3.5}/webscout/__init__.py +4 -11
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/__init__.py +19 -4
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/api_key_manager.py +189 -189
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/auth_system.py +25 -40
- webscout-8.3.5/webscout/auth/config.py +175 -0
- webscout-8.3.5/webscout/auth/database.py +755 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/models.py +185 -130
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/request_processing.py +175 -11
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/routes.py +119 -5
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/server.py +9 -2
- webscout-8.3.5/webscout/auth/simple_logger.py +236 -0
- webscout-8.3.3/webscout/AIutel.py → webscout-8.3.5/webscout/sanitize.py +279 -10
- webscout-8.3.5/webscout/version.py +2 -0
- {webscout-8.3.3 → webscout-8.3.5/webscout.egg-info}/PKG-INFO +9 -150
- {webscout-8.3.3 → webscout-8.3.5}/webscout.egg-info/SOURCES.txt +14 -18
- {webscout-8.3.3 → webscout-8.3.5}/webscout.egg-info/requires.txt +1 -2
- webscout-8.3.3/changelog.md +0 -0
- webscout-8.3.3/webscout/Provider/AI21.py +0 -177
- webscout-8.3.3/webscout/Provider/HuggingFaceChat.py +0 -469
- webscout-8.3.3/webscout/Provider/OPENAI/README_AUTOPROXY.md +0 -238
- webscout-8.3.3/webscout/Provider/OPENAI/freeaichat.py +0 -363
- webscout-8.3.3/webscout/Provider/OPENAI/typegpt.py +0 -368
- webscout-8.3.3/webscout/Provider/OPENAI/uncovrAI.py +0 -477
- webscout-8.3.3/webscout/Provider/WritingMate.py +0 -273
- webscout-8.3.3/webscout/Provider/typegpt.py +0 -284
- webscout-8.3.3/webscout/Provider/uncovr.py +0 -333
- webscout-8.3.3/webscout/auth/config.py +0 -76
- webscout-8.3.3/webscout/auth/database.py +0 -400
- webscout-8.3.3/webscout/version.py +0 -2
- {webscout-8.3.3 → webscout-8.3.5}/LEGAL_NOTICE.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/LICENSE.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/MANIFEST.in +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/setup.cfg +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/AIauto.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/AIbase.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Bing_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/DWEBS.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/Act.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/gitapi/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/gitapi/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/gitapi/repository.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/gitapi/user.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/GitToolkit/gitapi/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/transcriber.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/autocoder/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/autocoder/autocoder.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/gguf.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/gguf.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/async_utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/cli.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/emailnator.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/mail_tm.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/weather.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/weather.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Extra/weather_ascii.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/formats.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/handlers.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/levels.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Litlogger/logger.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/DeepFind.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/Perplexity.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/genspark_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/hika_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/iask_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/monica_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AISEARCH/webpilotai_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Aitopia.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/AllenAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Andi.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Blackboxai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/ChatGPTClone.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/ChatSandbox.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Cloudflare.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Cohere.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/ExaAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/GithubChat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/GizAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Glider.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Groq.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/HeckAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Hunyuan.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Jadve.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Koboldai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Llama3.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/MCPCore.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Marcus.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/MiniMax.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Nemotron.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/BLACKBOXAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/Cloudflare.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/FalconH1.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/FreeGemini.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/GeminiProxy.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/MiniMax.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/NEMOTRON.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/PI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/Qwen3.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/ai4chat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/c4ai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/chatgpt.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/chatgptclone.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/chatsandbox.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/e2b.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/exaai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/flowith.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/friendli.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/glider.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/groq.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/heckai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/llmchatco.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/mcpcore.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/multichat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/oivscode.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/opkfc.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/pydantic_imports.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/sonus.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/standardinput.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/toolbaz.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/typefully.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/wisecat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/writecream.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/x0gpt.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/xenai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OPENAI/yep.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/OpenGPT.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Openai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/PI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/QwenLM.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/Reka.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/STT/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/STT/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/STT/elevenlabs.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/StandardInput.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/aiarta.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/bing.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/gpt1image.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/imagen.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/infip.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/magicstudio.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/piclumen.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/pixelmuse.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/pollinations.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTI/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/deepgram.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/elevenlabs.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/freetts.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/gesserit.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/murfai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/openai_fm.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/parler.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/speechma.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/sthir.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/streamElements.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TTS/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/TeachAnything.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/ChatHub.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/ChutesAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/Youchat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/liner_api_request.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/puterjs.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/UNFINISHED/test_lmarena.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/VercelAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/WrDoChat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/XenAI.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/ai4chat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/akashgpt.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/asksteve.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/cerebras.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/chatglm.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/cleeai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/deepseek_assistant.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/elmo.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/geminiapi.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/granite.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/hermes.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/julius.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/koala.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/learnfastai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/llama3mitril.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/llmchat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/llmchatco.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/lmarena.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/meta.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/multichat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/oivscode.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/samurai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/scnet.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/searchchat.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/sonus.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/talkai.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/turboseek.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/Provider/yep.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/__main__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/exceptions.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/middleware.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/providers.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/rate_limiter.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/request_models.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/auth/schemas.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/cli.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/client.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/conversation.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/exceptions.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/litagent/Readme.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/litagent/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/litagent/agent.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/litagent/constants.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/litprinter/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/models.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/optimizers.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/prompt_manager.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/crawler.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/scout.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/search_result.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/text_analyzer.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/text_utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/core/web_analyzer.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/element.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/parsers/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/parsers/html5lib_parser.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/parsers/html_parser.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/parsers/lxml_parser.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/scout/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/Readme.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/core/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/core/cli.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/core/context.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/core/group.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/decorators/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/decorators/command.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/decorators/options.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/decorators/output.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/exceptions.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/plugins/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/plugins/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/plugins/manager.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/utils/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/utils/formatting.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/swiftcli/utils/parsing.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/tempid.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/update_checker.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/utils.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/webscout_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/webscout_search_async.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/yep_search.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/zeroart/README.md +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/zeroart/__init__.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/zeroart/base.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/zeroart/effects.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout/zeroart/fonts.py +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout.egg-info/dependency_links.txt +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout.egg-info/entry_points.txt +0 -0
- {webscout-8.3.3 → webscout-8.3.5}/webscout.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webscout
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.5
|
|
4
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
5
|
Author-email: OEvortex <helpingai5@gmail.com>
|
|
6
6
|
License: HelpingAI
|
|
@@ -41,7 +41,6 @@ Requires-Dist: nodriver
|
|
|
41
41
|
Requires-Dist: mistune
|
|
42
42
|
Requires-Dist: curl_cffi
|
|
43
43
|
Requires-Dist: nest-asyncio
|
|
44
|
-
Requires-Dist: websocket-client
|
|
45
44
|
Requires-Dist: colorama
|
|
46
45
|
Requires-Dist: rich
|
|
47
46
|
Requires-Dist: markdownify
|
|
@@ -50,7 +49,6 @@ Requires-Dist: google-generativeai
|
|
|
50
49
|
Requires-Dist: lxml>=5.2.2
|
|
51
50
|
Requires-Dist: orjson
|
|
52
51
|
Requires-Dist: PyYAML
|
|
53
|
-
Requires-Dist: ollama
|
|
54
52
|
Requires-Dist: pillow
|
|
55
53
|
Requires-Dist: bson
|
|
56
54
|
Requires-Dist: cloudscraper
|
|
@@ -74,6 +72,7 @@ Requires-Dist: python-multipart; extra == "api"
|
|
|
74
72
|
Requires-Dist: tiktoken; extra == "api"
|
|
75
73
|
Requires-Dist: motor; extra == "api"
|
|
76
74
|
Requires-Dist: jinja2; extra == "api"
|
|
75
|
+
Requires-Dist: supabase; extra == "api"
|
|
77
76
|
Dynamic: license-file
|
|
78
77
|
|
|
79
78
|
<div align="center">
|
|
@@ -106,7 +105,7 @@ Dynamic: license-file
|
|
|
106
105
|
- [🌟 Key Features](#-features)
|
|
107
106
|
- [⚙️ Installation](#️-installation)
|
|
108
107
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
109
|
-
- [🔄 OpenAI-Compatible API Server](
|
|
108
|
+
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
110
109
|
- [🔍 Search Engines](#-search-engines)
|
|
111
110
|
- [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
|
|
112
111
|
- [💻 WEBS API Reference](#-webs-api-reference)
|
|
@@ -118,7 +117,7 @@ Dynamic: license-file
|
|
|
118
117
|
|
|
119
118
|
<hr/>
|
|
120
119
|
|
|
121
|
-
> [!IMPORTANT]
|
|
120
|
+
> [!IMPORTANT]
|
|
122
121
|
> **Webscout supports three types of compatibility:**
|
|
123
122
|
>
|
|
124
123
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
@@ -182,6 +181,8 @@ Dynamic: license-file
|
|
|
182
181
|
- **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
183
182
|
- **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
|
|
184
183
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
184
|
+
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
185
|
+
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
185
186
|
</p>
|
|
186
187
|
</details>
|
|
187
188
|
|
|
@@ -382,7 +383,8 @@ For more information, visit the [Inferno GitHub repository](https://github.com/H
|
|
|
382
383
|
</p>
|
|
383
384
|
</details>
|
|
384
385
|
|
|
385
|
-
> [!NOTE]
|
|
386
|
+
> [!NOTE]
|
|
387
|
+
> **Hardware requirements for running models with Inferno:**
|
|
386
388
|
>
|
|
387
389
|
> - Around 2 GB of RAM for 1B models
|
|
388
390
|
> - Around 4 GB of RAM for 3B models
|
|
@@ -391,150 +393,7 @@ For more information, visit the [Inferno GitHub repository](https://github.com/H
|
|
|
391
393
|
> - 32 GB of RAM for 33B models
|
|
392
394
|
> - GPU acceleration is recommended for better performance
|
|
393
395
|
|
|
394
|
-
|
|
395
|
-
<summary><b>🔄 OpenAI-Compatible API Server</b></summary>
|
|
396
|
-
<p>
|
|
397
|
-
|
|
398
|
-
Webscout includes an OpenAI-compatible API server that allows you to use any supported provider with tools and applications designed for OpenAI's API.
|
|
399
|
-
|
|
400
|
-
### Starting the API Server
|
|
401
|
-
|
|
402
|
-
#### From Command Line (Recommended)
|
|
403
|
-
|
|
404
|
-
```bash
|
|
405
|
-
# Start with default settings (port 8000)
|
|
406
|
-
webscout-server
|
|
407
|
-
|
|
408
|
-
# Start with custom port
|
|
409
|
-
webscout-server --port 8080
|
|
410
|
-
|
|
411
|
-
# Start with API key authentication
|
|
412
|
-
webscout-server --api-key "your-secret-key"
|
|
413
|
-
|
|
414
|
-
# Start in no-auth mode using command line flag (no API key required)
|
|
415
|
-
webscout-server --no-auth
|
|
416
|
-
|
|
417
|
-
# Start in no-auth mode using environment variable
|
|
418
|
-
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
419
|
-
|
|
420
|
-
# Specify a default provider
|
|
421
|
-
webscout-server --default-provider "Claude"
|
|
422
|
-
|
|
423
|
-
# Run in debug mode
|
|
424
|
-
webscout-server --debug
|
|
425
|
-
|
|
426
|
-
# Get help for all options (includes authentication options)
|
|
427
|
-
webscout-server --help
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
#### Alternative Methods
|
|
431
|
-
|
|
432
|
-
```bash
|
|
433
|
-
# Using UV (no installation required)
|
|
434
|
-
uv run --extra api webscout-server
|
|
435
|
-
|
|
436
|
-
# Using Python module
|
|
437
|
-
python -m webscout.auth.server
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
#### Environment Variables
|
|
441
|
-
|
|
442
|
-
Webscout server supports configuration through environment variables:
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
# Start server in no-auth mode (no API key required)
|
|
446
|
-
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
447
|
-
|
|
448
|
-
# Disable rate limiting
|
|
449
|
-
$env:WEBSCOUT_NO_RATE_LIMIT='true'; webscout-server
|
|
450
|
-
|
|
451
|
-
# Start with custom port using environment variable
|
|
452
|
-
$env:WEBSCOUT_PORT='7860'; webscout-server
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
For a complete list of supported environment variables and Docker deployment options, see [DOCKER.md](DOCKER.md).
|
|
456
|
-
|
|
457
|
-
#### From Python Code
|
|
458
|
-
|
|
459
|
-
> **Recommended:**
|
|
460
|
-
> Use `start_server` from `webscout.client` for the simplest programmatic startup.
|
|
461
|
-
> For advanced control (custom host, debug, etc.), use `run_api`.
|
|
462
|
-
|
|
463
|
-
```python
|
|
464
|
-
# Method 1: Using the helper function (recommended)
|
|
465
|
-
from webscout.client import start_server
|
|
466
|
-
|
|
467
|
-
# Start with default settings
|
|
468
|
-
start_server()
|
|
469
|
-
|
|
470
|
-
# Start with custom settings
|
|
471
|
-
start_server(port=8080, api_key="your-secret-key", default_provider="Claude")
|
|
472
|
-
|
|
473
|
-
# Start in no-auth mode (no API key required)
|
|
474
|
-
start_server(no_auth=True)
|
|
475
|
-
|
|
476
|
-
# Method 2: Advanced usage with run_api
|
|
477
|
-
from webscout.client import run_api
|
|
478
|
-
|
|
479
|
-
run_api(
|
|
480
|
-
host="0.0.0.0",
|
|
481
|
-
debug=True
|
|
482
|
-
)
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
### Using the API
|
|
486
|
-
|
|
487
|
-
Once the server is running, you can use it with any OpenAI client library or tool:
|
|
488
|
-
|
|
489
|
-
```python
|
|
490
|
-
# Using the OpenAI Python client
|
|
491
|
-
from openai import OpenAI
|
|
492
|
-
|
|
493
|
-
client = OpenAI(
|
|
494
|
-
api_key="your-secret-key", # Only needed if you set an API key
|
|
495
|
-
base_url="http://localhost:8000/v1" # Point to your local server
|
|
496
|
-
)
|
|
497
|
-
|
|
498
|
-
# Chat completion
|
|
499
|
-
response = client.chat.completions.create(
|
|
500
|
-
model="gpt-4", # This can be any model name registered with Webscout
|
|
501
|
-
messages=[
|
|
502
|
-
{"role": "system", "content": "You are a helpful assistant."},
|
|
503
|
-
{"role": "user", "content": "Hello, how are you?"}
|
|
504
|
-
]
|
|
505
|
-
)
|
|
506
|
-
|
|
507
|
-
print(response.choices[0].message.content)
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
### Using with cURL
|
|
511
|
-
|
|
512
|
-
```bash
|
|
513
|
-
# Basic chat completion request
|
|
514
|
-
curl http://localhost:8000/v1/chat/completions \
|
|
515
|
-
-H "Content-Type: application/json" \
|
|
516
|
-
-H "Authorization: Bearer your-secret-key" \
|
|
517
|
-
-d '{
|
|
518
|
-
"model": "gpt-4",
|
|
519
|
-
"messages": [
|
|
520
|
-
{"role": "system", "content": "You are a helpful assistant."},
|
|
521
|
-
{"role": "user", "content": "Hello, how are you?"}
|
|
522
|
-
]
|
|
523
|
-
}'
|
|
524
|
-
|
|
525
|
-
# List available models
|
|
526
|
-
curl http://localhost:8000/v1/models \
|
|
527
|
-
-H "Authorization: Bearer your-secret-key"
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
### Available Endpoints
|
|
531
|
-
|
|
532
|
-
- `GET /v1/models` - List all available models
|
|
533
|
-
- `GET /v1/models/{model_name}` - Get information about a specific model
|
|
534
|
-
- `POST /v1/chat/completions` - Create a chat completion
|
|
535
|
-
|
|
536
|
-
</p>
|
|
537
|
-
</details>
|
|
396
|
+
For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
|
|
538
397
|
|
|
539
398
|
<hr/>
|
|
540
399
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
- [🌟 Key Features](#-features)
|
|
29
29
|
- [⚙️ Installation](#️-installation)
|
|
30
30
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
31
|
-
- [🔄 OpenAI-Compatible API Server](
|
|
31
|
+
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
32
32
|
- [🔍 Search Engines](#-search-engines)
|
|
33
33
|
- [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
|
|
34
34
|
- [💻 WEBS API Reference](#-webs-api-reference)
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
<hr/>
|
|
42
42
|
|
|
43
|
-
> [!IMPORTANT]
|
|
43
|
+
> [!IMPORTANT]
|
|
44
44
|
> **Webscout supports three types of compatibility:**
|
|
45
45
|
>
|
|
46
46
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
@@ -104,6 +104,8 @@
|
|
|
104
104
|
- **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
105
105
|
- **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
|
|
106
106
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
107
|
+
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
108
|
+
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
107
109
|
</p>
|
|
108
110
|
</details>
|
|
109
111
|
|
|
@@ -304,7 +306,8 @@ For more information, visit the [Inferno GitHub repository](https://github.com/H
|
|
|
304
306
|
</p>
|
|
305
307
|
</details>
|
|
306
308
|
|
|
307
|
-
> [!NOTE]
|
|
309
|
+
> [!NOTE]
|
|
310
|
+
> **Hardware requirements for running models with Inferno:**
|
|
308
311
|
>
|
|
309
312
|
> - Around 2 GB of RAM for 1B models
|
|
310
313
|
> - Around 4 GB of RAM for 3B models
|
|
@@ -313,150 +316,7 @@ For more information, visit the [Inferno GitHub repository](https://github.com/H
|
|
|
313
316
|
> - 32 GB of RAM for 33B models
|
|
314
317
|
> - GPU acceleration is recommended for better performance
|
|
315
318
|
|
|
316
|
-
|
|
317
|
-
<summary><b>🔄 OpenAI-Compatible API Server</b></summary>
|
|
318
|
-
<p>
|
|
319
|
-
|
|
320
|
-
Webscout includes an OpenAI-compatible API server that allows you to use any supported provider with tools and applications designed for OpenAI's API.
|
|
321
|
-
|
|
322
|
-
### Starting the API Server
|
|
323
|
-
|
|
324
|
-
#### From Command Line (Recommended)
|
|
325
|
-
|
|
326
|
-
```bash
|
|
327
|
-
# Start with default settings (port 8000)
|
|
328
|
-
webscout-server
|
|
329
|
-
|
|
330
|
-
# Start with custom port
|
|
331
|
-
webscout-server --port 8080
|
|
332
|
-
|
|
333
|
-
# Start with API key authentication
|
|
334
|
-
webscout-server --api-key "your-secret-key"
|
|
335
|
-
|
|
336
|
-
# Start in no-auth mode using command line flag (no API key required)
|
|
337
|
-
webscout-server --no-auth
|
|
338
|
-
|
|
339
|
-
# Start in no-auth mode using environment variable
|
|
340
|
-
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
341
|
-
|
|
342
|
-
# Specify a default provider
|
|
343
|
-
webscout-server --default-provider "Claude"
|
|
344
|
-
|
|
345
|
-
# Run in debug mode
|
|
346
|
-
webscout-server --debug
|
|
347
|
-
|
|
348
|
-
# Get help for all options (includes authentication options)
|
|
349
|
-
webscout-server --help
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
#### Alternative Methods
|
|
353
|
-
|
|
354
|
-
```bash
|
|
355
|
-
# Using UV (no installation required)
|
|
356
|
-
uv run --extra api webscout-server
|
|
357
|
-
|
|
358
|
-
# Using Python module
|
|
359
|
-
python -m webscout.auth.server
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
#### Environment Variables
|
|
363
|
-
|
|
364
|
-
Webscout server supports configuration through environment variables:
|
|
365
|
-
|
|
366
|
-
```bash
|
|
367
|
-
# Start server in no-auth mode (no API key required)
|
|
368
|
-
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
369
|
-
|
|
370
|
-
# Disable rate limiting
|
|
371
|
-
$env:WEBSCOUT_NO_RATE_LIMIT='true'; webscout-server
|
|
372
|
-
|
|
373
|
-
# Start with custom port using environment variable
|
|
374
|
-
$env:WEBSCOUT_PORT='7860'; webscout-server
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
For a complete list of supported environment variables and Docker deployment options, see [DOCKER.md](DOCKER.md).
|
|
378
|
-
|
|
379
|
-
#### From Python Code
|
|
380
|
-
|
|
381
|
-
> **Recommended:**
|
|
382
|
-
> Use `start_server` from `webscout.client` for the simplest programmatic startup.
|
|
383
|
-
> For advanced control (custom host, debug, etc.), use `run_api`.
|
|
384
|
-
|
|
385
|
-
```python
|
|
386
|
-
# Method 1: Using the helper function (recommended)
|
|
387
|
-
from webscout.client import start_server
|
|
388
|
-
|
|
389
|
-
# Start with default settings
|
|
390
|
-
start_server()
|
|
391
|
-
|
|
392
|
-
# Start with custom settings
|
|
393
|
-
start_server(port=8080, api_key="your-secret-key", default_provider="Claude")
|
|
394
|
-
|
|
395
|
-
# Start in no-auth mode (no API key required)
|
|
396
|
-
start_server(no_auth=True)
|
|
397
|
-
|
|
398
|
-
# Method 2: Advanced usage with run_api
|
|
399
|
-
from webscout.client import run_api
|
|
400
|
-
|
|
401
|
-
run_api(
|
|
402
|
-
host="0.0.0.0",
|
|
403
|
-
debug=True
|
|
404
|
-
)
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### Using the API
|
|
408
|
-
|
|
409
|
-
Once the server is running, you can use it with any OpenAI client library or tool:
|
|
410
|
-
|
|
411
|
-
```python
|
|
412
|
-
# Using the OpenAI Python client
|
|
413
|
-
from openai import OpenAI
|
|
414
|
-
|
|
415
|
-
client = OpenAI(
|
|
416
|
-
api_key="your-secret-key", # Only needed if you set an API key
|
|
417
|
-
base_url="http://localhost:8000/v1" # Point to your local server
|
|
418
|
-
)
|
|
419
|
-
|
|
420
|
-
# Chat completion
|
|
421
|
-
response = client.chat.completions.create(
|
|
422
|
-
model="gpt-4", # This can be any model name registered with Webscout
|
|
423
|
-
messages=[
|
|
424
|
-
{"role": "system", "content": "You are a helpful assistant."},
|
|
425
|
-
{"role": "user", "content": "Hello, how are you?"}
|
|
426
|
-
]
|
|
427
|
-
)
|
|
428
|
-
|
|
429
|
-
print(response.choices[0].message.content)
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
### Using with cURL
|
|
433
|
-
|
|
434
|
-
```bash
|
|
435
|
-
# Basic chat completion request
|
|
436
|
-
curl http://localhost:8000/v1/chat/completions \
|
|
437
|
-
-H "Content-Type: application/json" \
|
|
438
|
-
-H "Authorization: Bearer your-secret-key" \
|
|
439
|
-
-d '{
|
|
440
|
-
"model": "gpt-4",
|
|
441
|
-
"messages": [
|
|
442
|
-
{"role": "system", "content": "You are a helpful assistant."},
|
|
443
|
-
{"role": "user", "content": "Hello, how are you?"}
|
|
444
|
-
]
|
|
445
|
-
}'
|
|
446
|
-
|
|
447
|
-
# List available models
|
|
448
|
-
curl http://localhost:8000/v1/models \
|
|
449
|
-
-H "Authorization: Bearer your-secret-key"
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
### Available Endpoints
|
|
453
|
-
|
|
454
|
-
- `GET /v1/models` - List all available models
|
|
455
|
-
- `GET /v1/models/{model_name}` - Get information about a specific model
|
|
456
|
-
- `POST /v1/chat/completions` - Create a chat completion
|
|
457
|
-
|
|
458
|
-
</p>
|
|
459
|
-
</details>
|
|
319
|
+
For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
|
|
460
320
|
|
|
461
321
|
<hr/>
|
|
462
322
|
|
|
Binary file
|
|
@@ -52,7 +52,6 @@ dependencies = [
|
|
|
52
52
|
"mistune",
|
|
53
53
|
"curl_cffi",
|
|
54
54
|
"nest-asyncio",
|
|
55
|
-
"websocket-client",
|
|
56
55
|
"colorama",
|
|
57
56
|
"rich",
|
|
58
57
|
"markdownify",
|
|
@@ -61,7 +60,6 @@ dependencies = [
|
|
|
61
60
|
"lxml>=5.2.2",
|
|
62
61
|
"orjson",
|
|
63
62
|
"PyYAML",
|
|
64
|
-
"ollama",
|
|
65
63
|
"pillow",
|
|
66
64
|
"bson",
|
|
67
65
|
"cloudscraper",
|
|
@@ -99,6 +97,7 @@ api = [
|
|
|
99
97
|
"tiktoken", # Added tiktoken for token counting support
|
|
100
98
|
"motor", # MongoDB async driver for enhanced authentication
|
|
101
99
|
"jinja2", # Template engine for custom Swagger UI
|
|
100
|
+
"supabase", # Supabase client for database operations
|
|
102
101
|
]
|
|
103
102
|
|
|
104
103
|
[tool.setuptools]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from .sanitize import * # noqa: E402,F401
|
|
2
|
+
from .conversation import Conversation # noqa: E402,F401
|
|
3
|
+
from .Extra.autocoder import AutoCoder # noqa: E402,F401
|
|
4
|
+
from .optimizers import Optimizers # noqa: E402,F401
|
|
5
|
+
from .prompt_manager import AwesomePrompts # noqa: E402,F401
|
|
6
|
+
|
|
7
|
+
# --- Utility Decorators ---
|
|
8
|
+
from typing import Callable
|
|
9
|
+
import time
|
|
10
|
+
import functools
|
|
11
|
+
|
|
12
|
+
def timeIt(func: Callable):
|
|
13
|
+
"""
|
|
14
|
+
Decorator to measure execution time of a function (sync or async).
|
|
15
|
+
Prints: - Execution time for '{func.__name__}' : {elapsed:.6f} Seconds.
|
|
16
|
+
"""
|
|
17
|
+
import asyncio
|
|
18
|
+
GREEN_BOLD = "\033[1;92m"
|
|
19
|
+
RESET = "\033[0m"
|
|
20
|
+
@functools.wraps(func)
|
|
21
|
+
def sync_wrapper(*args, **kwargs):
|
|
22
|
+
start_time = time.time()
|
|
23
|
+
result = func(*args, **kwargs)
|
|
24
|
+
end_time = time.time()
|
|
25
|
+
print(f"{GREEN_BOLD}- Execution time for '{func.__name__}' : {end_time - start_time:.6f} Seconds. {RESET}\n")
|
|
26
|
+
return result
|
|
27
|
+
|
|
28
|
+
@functools.wraps(func)
|
|
29
|
+
async def async_wrapper(*args, **kwargs):
|
|
30
|
+
start_time = time.time()
|
|
31
|
+
result = await func(*args, **kwargs)
|
|
32
|
+
end_time = time.time()
|
|
33
|
+
print(f"{GREEN_BOLD}- Execution time for '{func.__name__}' : {end_time - start_time:.6f} Seconds. {RESET}\n")
|
|
34
|
+
return result
|
|
35
|
+
|
|
36
|
+
if asyncio.iscoroutinefunction(func):
|
|
37
|
+
return async_wrapper
|
|
38
|
+
else:
|
|
39
|
+
return sync_wrapper
|
|
40
|
+
|
|
41
|
+
def retry(retries: int = 3, delay: float = 1) -> Callable:
|
|
42
|
+
"""
|
|
43
|
+
Decorator to retry a function on exception.
|
|
44
|
+
"""
|
|
45
|
+
def decorator(func: Callable):
|
|
46
|
+
@functools.wraps(func)
|
|
47
|
+
def wrapper(*args, **kwargs):
|
|
48
|
+
last_exc = None
|
|
49
|
+
for attempt in range(retries):
|
|
50
|
+
try:
|
|
51
|
+
return func(*args, **kwargs)
|
|
52
|
+
except Exception as exc:
|
|
53
|
+
last_exc = exc
|
|
54
|
+
print(f"Attempt {attempt + 1} failed: {exc}. Retrying in {delay} seconds...")
|
|
55
|
+
time.sleep(delay)
|
|
56
|
+
raise last_exc
|
|
57
|
+
return wrapper
|
|
58
|
+
return decorator
|
|
@@ -81,21 +81,11 @@ class Model(Enum):
|
|
|
81
81
|
model_header (dict): Additional headers required for the model.
|
|
82
82
|
advanced_only (bool): Whether the model is available only for advanced users.
|
|
83
83
|
"""
|
|
84
|
-
#
|
|
84
|
+
# Only the specified models
|
|
85
85
|
UNSPECIFIED = ("unspecified", {}, False)
|
|
86
|
-
G_2_0_FLASH = (
|
|
87
|
-
"gemini-2.0-flash",
|
|
88
|
-
{"x-goog-ext-525001261-jspb": '[1,null,null,null,"f299729663a2343f"]'},
|
|
89
|
-
False,
|
|
90
|
-
)
|
|
91
|
-
G_2_0_FLASH_THINKING = (
|
|
92
|
-
"gemini-2.0-flash-thinking",
|
|
93
|
-
{"x-goog-ext-525001261-jspb": '[null,null,null,null,"7ca48d02d802f20a"]'},
|
|
94
|
-
False,
|
|
95
|
-
)
|
|
96
86
|
G_2_5_FLASH = (
|
|
97
87
|
"gemini-2.5-flash",
|
|
98
|
-
{"x-goog-ext-525001261-jspb": '[1,null,null,null,"
|
|
88
|
+
{"x-goog-ext-525001261-jspb": '[1,null,null,null,"71c2d248d3b102ff"]'},
|
|
99
89
|
False,
|
|
100
90
|
)
|
|
101
91
|
G_2_5_PRO = (
|
|
@@ -103,16 +93,6 @@ class Model(Enum):
|
|
|
103
93
|
{"x-goog-ext-525001261-jspb": '[1,null,null,null,"2525e3954d185b3c"]'},
|
|
104
94
|
False,
|
|
105
95
|
)
|
|
106
|
-
G_2_0_EXP_ADVANCED = (
|
|
107
|
-
"gemini-2.0-exp-advanced",
|
|
108
|
-
{"x-goog-ext-525001261-jspb": '[null,null,null,null,"b1e46a6037e6aa9f"]'},
|
|
109
|
-
True,
|
|
110
|
-
)
|
|
111
|
-
G_2_5_EXP_ADVANCED = (
|
|
112
|
-
"gemini-2.5-exp-advanced",
|
|
113
|
-
{"x-goog-ext-525001261-jspb": '[null,null,null,null,"203e6bb81620bcfe"]'},
|
|
114
|
-
True,
|
|
115
|
-
)
|
|
116
96
|
|
|
117
97
|
def __init__(self, name, header, advanced_only):
|
|
118
98
|
"""
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
from .stellar_search import *
|
|
2
|
-
from .felo_search import *
|
|
3
|
-
from .DeepFind import *
|
|
4
|
-
from .genspark_search import *
|
|
5
|
-
from .monica_search import *
|
|
6
|
-
from .webpilotai_search import *
|
|
7
|
-
from .hika_search import *
|
|
8
|
-
from .scira_search import *
|
|
9
|
-
from .iask_search import *
|
|
10
|
-
from .Perplexity import *
|
|
1
|
+
from .stellar_search import *
|
|
2
|
+
from .felo_search import *
|
|
3
|
+
from .DeepFind import *
|
|
4
|
+
from .genspark_search import *
|
|
5
|
+
from .monica_search import *
|
|
6
|
+
from .webpilotai_search import *
|
|
7
|
+
from .hika_search import *
|
|
8
|
+
from .scira_search import *
|
|
9
|
+
from .iask_search import *
|
|
10
|
+
from .Perplexity import *
|
|
11
|
+
# from .PERPLEXED_search import *
|
|
@@ -69,7 +69,7 @@ class Felo(AISearch):
|
|
|
69
69
|
"accept-encoding": "gzip, deflate, br, zstd",
|
|
70
70
|
"accept-language": "en-US,en;q=0.9,en-IN;q=0.8",
|
|
71
71
|
"content-type": "application/json",
|
|
72
|
-
"cookie": "_clck=1gifk45%7C2%7Cfoa%7C0%7C1686; _clsk=1g5lv07%7C1723558310439%7C1%7C1%7Cu.clarity.ms%2Fcollect; _ga=GA1.1.877307181.1723558313; _ga_8SZPRV97HV=GS1.1.1723558313.1.1.1723558341.0.0.0; _ga_Q9Q1E734CC=GS1.1.1723558313.1.1.1723558341.0.0.0",
|
|
72
|
+
# "cookie": "_clck=1gifk45%7C2%7Cfoa%7C0%7C1686; _clsk=1g5lv07%7C1723558310439%7C1%7C1%7Cu.clarity.ms%2Fcollect; _ga=GA1.1.877307181.1723558313; _ga_8SZPRV97HV=GS1.1.1723558313.1.1.1723558341.0.0.0; _ga_Q9Q1E734CC=GS1.1.1723558313.1.1.1723558341.0.0.0",
|
|
73
73
|
"dnt": "1",
|
|
74
74
|
"origin": "https://felo.ai",
|
|
75
75
|
"referer": "https://felo.ai/",
|
|
@@ -141,10 +141,14 @@ class Felo(AISearch):
|
|
|
141
141
|
"lang": "",
|
|
142
142
|
"agent_lang": "en",
|
|
143
143
|
"search_options": {
|
|
144
|
-
"langcode": "en-US"
|
|
144
|
+
"langcode": "en-US",
|
|
145
|
+
"search_image": True,
|
|
146
|
+
"search_video": True,
|
|
145
147
|
},
|
|
146
148
|
"search_video": True,
|
|
147
|
-
"
|
|
149
|
+
"model": "",
|
|
150
|
+
"contexts_from": "google",
|
|
151
|
+
"auto_routing": True,
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
def for_stream():
|
|
@@ -43,17 +43,32 @@ class Scira(AISearch):
|
|
|
43
43
|
"""
|
|
44
44
|
|
|
45
45
|
AVAILABLE_MODELS = {
|
|
46
|
-
"scira-default": "
|
|
47
|
-
"scira-
|
|
48
|
-
"scira-
|
|
49
|
-
"scira-
|
|
50
|
-
"scira-
|
|
51
|
-
"scira-
|
|
52
|
-
"scira-
|
|
53
|
-
"scira-
|
|
54
|
-
"scira-
|
|
55
|
-
"scira-
|
|
56
|
-
"scira-
|
|
46
|
+
"scira-default": "grok-3-mini", # thinking model
|
|
47
|
+
"scira-x-fast-mini": "grok-3-mini-fast",
|
|
48
|
+
"scira-x-fast": "grok-3-fast",
|
|
49
|
+
"scira-nano": "gpt-4.1-nano",
|
|
50
|
+
"scira-grok-3": "grok-3",
|
|
51
|
+
"scira-grok-4": "grok-4",
|
|
52
|
+
"scira-vision": "grok-2-vision-1212",
|
|
53
|
+
"scira-g2": "grok-2-latest",
|
|
54
|
+
"scira-4o-mini": "gpt-4o-mini",
|
|
55
|
+
"scira-o4-mini": "o4-mini-2025-04-16",
|
|
56
|
+
"scira-o3": "o3",
|
|
57
|
+
"scira-qwen-32b": "qwen/qwen3-32b",
|
|
58
|
+
"scira-qwen-30b": "qwen3-30b-a3b",
|
|
59
|
+
"scira-deepseek-v3": "deepseek-v3-0324",
|
|
60
|
+
"scira-haiku": "claude-3-5-haiku-20241022",
|
|
61
|
+
"scira-mistral": "mistral-small-latest",
|
|
62
|
+
"scira-google-lite": "gemini-2.5-flash-lite-preview-06-17",
|
|
63
|
+
"scira-google": "gemini-2.5-flash",
|
|
64
|
+
"scira-google-pro": "gemini-2.5-pro",
|
|
65
|
+
"scira-anthropic": "claude-sonnet-4-20250514",
|
|
66
|
+
"scira-anthropic-thinking": "claude-sonnet-4-20250514",
|
|
67
|
+
"scira-opus": "claude-4-opus-20250514",
|
|
68
|
+
"scira-opus-pro": "claude-4-opus-20250514",
|
|
69
|
+
"scira-llama-4": "meta-llama/llama-4-maverick-17b-128e-instruct",
|
|
70
|
+
"scira-kimi-k2": "kimi-k2-instruct",
|
|
71
|
+
"kimi-k2-instruct": "scira-kimi-k2",
|
|
57
72
|
}
|
|
58
73
|
def __init__(
|
|
59
74
|
self,
|