webscout 8.3.6__py3-none-any.whl → 8.3.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webscout might be problematic. Click here for more details.
- webscout/AIutel.py +2 -0
- webscout/Provider/AISEARCH/__init__.py +18 -11
- webscout/Provider/AISEARCH/scira_search.py +3 -1
- webscout/Provider/Aitopia.py +2 -3
- webscout/Provider/Andi.py +3 -3
- webscout/Provider/ChatGPTClone.py +1 -1
- webscout/Provider/ChatSandbox.py +1 -0
- webscout/Provider/Cloudflare.py +1 -1
- webscout/Provider/Cohere.py +1 -0
- webscout/Provider/Deepinfra.py +7 -10
- webscout/Provider/ExaAI.py +1 -1
- webscout/Provider/ExaChat.py +1 -80
- webscout/Provider/Flowith.py +1 -1
- webscout/Provider/Gemini.py +7 -5
- webscout/Provider/GeminiProxy.py +1 -0
- webscout/Provider/GithubChat.py +3 -1
- webscout/Provider/Groq.py +1 -1
- webscout/Provider/HeckAI.py +8 -4
- webscout/Provider/Jadve.py +23 -38
- webscout/Provider/K2Think.py +308 -0
- webscout/Provider/Koboldai.py +8 -186
- webscout/Provider/LambdaChat.py +2 -4
- webscout/Provider/Nemotron.py +3 -4
- webscout/Provider/Netwrck.py +3 -2
- webscout/Provider/OLLAMA.py +1 -0
- webscout/Provider/OPENAI/Cloudflare.py +6 -7
- webscout/Provider/OPENAI/FalconH1.py +2 -7
- webscout/Provider/OPENAI/FreeGemini.py +6 -8
- webscout/Provider/OPENAI/{monochat.py → K2Think.py} +180 -77
- webscout/Provider/OPENAI/NEMOTRON.py +3 -6
- webscout/Provider/OPENAI/PI.py +5 -4
- webscout/Provider/OPENAI/Qwen3.py +2 -3
- webscout/Provider/OPENAI/TogetherAI.py +2 -2
- webscout/Provider/OPENAI/TwoAI.py +3 -4
- webscout/Provider/OPENAI/__init__.py +17 -58
- webscout/Provider/OPENAI/ai4chat.py +313 -303
- webscout/Provider/OPENAI/base.py +9 -29
- webscout/Provider/OPENAI/chatgpt.py +7 -2
- webscout/Provider/OPENAI/chatgptclone.py +4 -7
- webscout/Provider/OPENAI/chatsandbox.py +84 -59
- webscout/Provider/OPENAI/deepinfra.py +6 -6
- webscout/Provider/OPENAI/heckai.py +4 -1
- webscout/Provider/OPENAI/netwrck.py +1 -0
- webscout/Provider/OPENAI/scirachat.py +6 -0
- webscout/Provider/OPENAI/textpollinations.py +3 -11
- webscout/Provider/OPENAI/toolbaz.py +14 -11
- webscout/Provider/OpenGPT.py +1 -1
- webscout/Provider/Openai.py +150 -402
- webscout/Provider/PI.py +1 -0
- webscout/Provider/Perplexitylabs.py +1 -2
- webscout/Provider/QwenLM.py +107 -89
- webscout/Provider/STT/__init__.py +17 -2
- webscout/Provider/{Llama3.py → Sambanova.py} +9 -10
- webscout/Provider/StandardInput.py +1 -1
- webscout/Provider/TTI/__init__.py +18 -12
- webscout/Provider/TTS/__init__.py +18 -10
- webscout/Provider/TeachAnything.py +1 -0
- webscout/Provider/TextPollinationsAI.py +5 -12
- webscout/Provider/TogetherAI.py +86 -87
- webscout/Provider/TwoAI.py +53 -309
- webscout/Provider/TypliAI.py +2 -1
- webscout/Provider/{GizAI.py → UNFINISHED/GizAI.py} +1 -1
- webscout/Provider/Venice.py +2 -1
- webscout/Provider/VercelAI.py +1 -0
- webscout/Provider/WiseCat.py +2 -1
- webscout/Provider/WrDoChat.py +2 -1
- webscout/Provider/__init__.py +18 -86
- webscout/Provider/ai4chat.py +1 -1
- webscout/Provider/akashgpt.py +7 -10
- webscout/Provider/cerebras.py +115 -9
- webscout/Provider/chatglm.py +170 -83
- webscout/Provider/cleeai.py +1 -2
- webscout/Provider/deepseek_assistant.py +1 -1
- webscout/Provider/elmo.py +1 -1
- webscout/Provider/geminiapi.py +1 -1
- webscout/Provider/granite.py +1 -1
- webscout/Provider/hermes.py +1 -3
- webscout/Provider/julius.py +1 -0
- webscout/Provider/learnfastai.py +1 -1
- webscout/Provider/llama3mitril.py +1 -1
- webscout/Provider/llmchat.py +1 -1
- webscout/Provider/llmchatco.py +1 -1
- webscout/Provider/meta.py +3 -3
- webscout/Provider/oivscode.py +2 -2
- webscout/Provider/scira_chat.py +51 -124
- webscout/Provider/searchchat.py +1 -0
- webscout/Provider/sonus.py +1 -1
- webscout/Provider/toolbaz.py +15 -12
- webscout/Provider/turboseek.py +31 -22
- webscout/Provider/typefully.py +2 -1
- webscout/Provider/x0gpt.py +1 -0
- webscout/Provider/yep.py +2 -1
- webscout/tempid.py +6 -0
- webscout/version.py +1 -1
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/METADATA +2 -1
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/RECORD +103 -129
- webscout/Provider/AllenAI.py +0 -440
- webscout/Provider/Blackboxai.py +0 -793
- webscout/Provider/FreeGemini.py +0 -250
- webscout/Provider/GptOss.py +0 -207
- webscout/Provider/Hunyuan.py +0 -283
- webscout/Provider/Kimi.py +0 -445
- webscout/Provider/MCPCore.py +0 -322
- webscout/Provider/MiniMax.py +0 -207
- webscout/Provider/OPENAI/BLACKBOXAI.py +0 -1045
- webscout/Provider/OPENAI/MiniMax.py +0 -298
- webscout/Provider/OPENAI/autoproxy.py +0 -1067
- webscout/Provider/OPENAI/copilot.py +0 -321
- webscout/Provider/OPENAI/gptoss.py +0 -288
- webscout/Provider/OPENAI/kimi.py +0 -469
- webscout/Provider/OPENAI/mcpcore.py +0 -431
- webscout/Provider/OPENAI/multichat.py +0 -378
- webscout/Provider/Reka.py +0 -214
- webscout/Provider/UNFINISHED/fetch_together_models.py +0 -90
- webscout/Provider/asksteve.py +0 -220
- webscout/Provider/copilot.py +0 -441
- webscout/Provider/freeaichat.py +0 -294
- webscout/Provider/koala.py +0 -182
- webscout/Provider/lmarena.py +0 -198
- webscout/Provider/monochat.py +0 -275
- webscout/Provider/multichat.py +0 -375
- webscout/Provider/scnet.py +0 -244
- webscout/Provider/talkai.py +0 -194
- /webscout/Provider/{Marcus.py → UNFINISHED/Marcus.py} +0 -0
- /webscout/Provider/{Qodo.py → UNFINISHED/Qodo.py} +0 -0
- /webscout/Provider/{XenAI.py → UNFINISHED/XenAI.py} +0 -0
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/WHEEL +0 -0
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/entry_points.txt +0 -0
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/licenses/LICENSE.md +0 -0
- {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/top_level.txt +0 -0
webscout/AIutel.py
CHANGED
|
@@ -22,6 +22,7 @@ def timeIt(func: Callable):
|
|
|
22
22
|
start_time = time.time()
|
|
23
23
|
result = func(*args, **kwargs)
|
|
24
24
|
end_time = time.time()
|
|
25
|
+
print()
|
|
25
26
|
print(f"{GREEN_BOLD}- Execution time for '{func.__name__}' : {end_time - start_time:.6f} Seconds. {RESET}\n")
|
|
26
27
|
return result
|
|
27
28
|
|
|
@@ -30,6 +31,7 @@ def timeIt(func: Callable):
|
|
|
30
31
|
start_time = time.time()
|
|
31
32
|
result = await func(*args, **kwargs)
|
|
32
33
|
end_time = time.time()
|
|
34
|
+
print()
|
|
33
35
|
print(f"{GREEN_BOLD}- Execution time for '{func.__name__}' : {end_time - start_time:.6f} Seconds. {RESET}\n")
|
|
34
36
|
return result
|
|
35
37
|
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
# This file marks the directory as a Python package.
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import importlib
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Get current directory
|
|
8
|
+
current_dir = Path(__file__).parent
|
|
9
|
+
|
|
10
|
+
# Auto-import all .py files (except __init__.py)
|
|
11
|
+
for file_path in current_dir.glob("*.py"):
|
|
12
|
+
if file_path.name != "__init__.py":
|
|
13
|
+
module_name = file_path.stem
|
|
14
|
+
try:
|
|
15
|
+
module = importlib.import_module(f".{module_name}", package=__name__)
|
|
16
|
+
globals().update(vars(module))
|
|
17
|
+
except ImportError:
|
|
18
|
+
pass # Skip files that can't be imported
|
|
@@ -56,6 +56,8 @@ class Scira(AISearch):
|
|
|
56
56
|
"scira-o3": "o3",
|
|
57
57
|
"scira-qwen-32b": "qwen/qwen3-32b",
|
|
58
58
|
"scira-qwen-30b": "qwen3-30b-a3b",
|
|
59
|
+
"scira-qwen-4b": "qwen3-4b",
|
|
60
|
+
"scira-qwen-4b-thinking": "qwen3-4b-thinking",
|
|
59
61
|
"scira-deepseek-v3": "deepseek-v3-0324",
|
|
60
62
|
"scira-haiku": "claude-3-5-haiku-20241022",
|
|
61
63
|
"scira-mistral": "mistral-small-latest",
|
|
@@ -66,7 +68,7 @@ class Scira(AISearch):
|
|
|
66
68
|
"scira-anthropic-thinking": "claude-sonnet-4-20250514",
|
|
67
69
|
"scira-opus": "claude-4-opus-20250514",
|
|
68
70
|
"scira-opus-pro": "claude-4-opus-20250514",
|
|
69
|
-
"scira-llama-4": "
|
|
71
|
+
"scira-llama-4": "llama-4-maverick",
|
|
70
72
|
"scira-kimi-k2": "kimi-k2-instruct",
|
|
71
73
|
"kimi-k2-instruct": "scira-kimi-k2",
|
|
72
74
|
}
|
webscout/Provider/Aitopia.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from curl_cffi import CurlError
|
|
2
2
|
from curl_cffi.requests import Session
|
|
3
|
-
import json
|
|
4
3
|
import uuid
|
|
5
4
|
import time
|
|
6
5
|
import hashlib
|
|
@@ -9,7 +8,7 @@ from typing import Any, Dict, Optional, Generator, Union
|
|
|
9
8
|
from webscout.AIutel import Optimizers
|
|
10
9
|
from webscout.AIutel import Conversation, sanitize_stream # Import sanitize_stream
|
|
11
10
|
from webscout.AIutel import AwesomePrompts
|
|
12
|
-
from webscout.AIbase import Provider
|
|
11
|
+
from webscout.AIbase import Provider
|
|
13
12
|
from webscout import exceptions
|
|
14
13
|
from webscout.litagent import LitAgent
|
|
15
14
|
|
|
@@ -17,7 +16,7 @@ class Aitopia(Provider):
|
|
|
17
16
|
"""
|
|
18
17
|
A class to interact with the Aitopia API with LitAgent user-agent.
|
|
19
18
|
"""
|
|
20
|
-
|
|
19
|
+
required_auth = True
|
|
21
20
|
AVAILABLE_MODELS = [
|
|
22
21
|
"Claude 3 Haiku",
|
|
23
22
|
"GPT-4o Mini",
|
webscout/Provider/Andi.py
CHANGED
|
@@ -3,14 +3,14 @@ import requests
|
|
|
3
3
|
import json
|
|
4
4
|
from webscout.AIutel import Optimizers
|
|
5
5
|
from webscout.AIutel import Conversation
|
|
6
|
-
from webscout.AIutel import AwesomePrompts
|
|
7
|
-
from webscout.AIbase import Provider
|
|
6
|
+
from webscout.AIutel import AwesomePrompts
|
|
7
|
+
from webscout.AIbase import Provider
|
|
8
8
|
from webscout import exceptions
|
|
9
|
-
from typing import Union, Any, AsyncGenerator, Dict
|
|
10
9
|
from webscout import WEBS
|
|
11
10
|
from webscout.litagent import LitAgent
|
|
12
11
|
|
|
13
12
|
class AndiSearch(Provider):
|
|
13
|
+
required_auth = False
|
|
14
14
|
def __init__(
|
|
15
15
|
self,
|
|
16
16
|
is_conversation: bool = True,
|
|
@@ -20,7 +20,7 @@ class ChatGPTClone(Provider):
|
|
|
20
20
|
ChatGPTClone is a provider class for interacting with the ChatGPT Clone API.
|
|
21
21
|
Supports streaming responses.
|
|
22
22
|
"""
|
|
23
|
-
|
|
23
|
+
required_auth = False
|
|
24
24
|
url = "https://chatgpt-clone-ten-nu.vercel.app"
|
|
25
25
|
AVAILABLE_MODELS = ["gpt-4", "gpt-3.5-turbo"]
|
|
26
26
|
SUPPORTED_IMPERSONATION = [
|
webscout/Provider/ChatSandbox.py
CHANGED
|
@@ -32,6 +32,7 @@ class ChatSandbox(Provider):
|
|
|
32
32
|
>>> print(response)
|
|
33
33
|
'I'm doing well, thank you for asking! How can I assist you today?'
|
|
34
34
|
"""
|
|
35
|
+
required_auth = False
|
|
35
36
|
AVAILABLE_MODELS = ["openai", "deepseek", "llama", "gemini", "mistral-large", "deepseek-r1", "deepseek-r1-full", "gemini-thinking", "openai-o1-mini", "llama", "mistral", "gemma-3"]
|
|
36
37
|
|
|
37
38
|
|
webscout/Provider/Cloudflare.py
CHANGED
|
@@ -16,7 +16,7 @@ class Cloudflare(Provider):
|
|
|
16
16
|
"""
|
|
17
17
|
Cloudflare provider to interact with Cloudflare's text generation API.
|
|
18
18
|
"""
|
|
19
|
-
|
|
19
|
+
required_auth = False
|
|
20
20
|
# Updated AVAILABLE_MODELS from given JSON data
|
|
21
21
|
AVAILABLE_MODELS = [
|
|
22
22
|
"@hf/thebloke/deepseek-coder-6.7b-base-awq",
|
webscout/Provider/Cohere.py
CHANGED
webscout/Provider/Deepinfra.py
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
from curl_cffi.requests import Session
|
|
2
2
|
from curl_cffi import CurlError
|
|
3
3
|
import json
|
|
4
|
-
import
|
|
5
|
-
from typing import Any, Dict, Optional, Generator, Union, List
|
|
6
|
-
|
|
4
|
+
from typing import Any, Dict, Optional, Generator, Union
|
|
7
5
|
from webscout.AIutel import Optimizers
|
|
8
6
|
from webscout.AIutel import Conversation
|
|
9
7
|
from webscout.AIutel import AwesomePrompts, sanitize_stream # Import sanitize_stream
|
|
10
|
-
from webscout.AIbase import Provider
|
|
8
|
+
from webscout.AIbase import Provider
|
|
11
9
|
from webscout import exceptions
|
|
12
10
|
from webscout.litagent import LitAgent
|
|
13
11
|
|
|
@@ -15,11 +13,12 @@ class DeepInfra(Provider):
|
|
|
15
13
|
"""
|
|
16
14
|
A class to interact with the DeepInfra API with LitAgent user-agent.
|
|
17
15
|
"""
|
|
18
|
-
|
|
16
|
+
required_auth = False
|
|
19
17
|
AVAILABLE_MODELS = [
|
|
20
|
-
"anthropic/claude-4-opus",
|
|
21
18
|
"moonshotai/Kimi-K2-Instruct",
|
|
22
|
-
"
|
|
19
|
+
"Qwen/Qwen3-Next-80B-A3B-Instruct",
|
|
20
|
+
"Qwen/Qwen3-Next-80B-A3B-Thinking",
|
|
21
|
+
"moonshotai/Kimi-K2-Instruct-0905",
|
|
23
22
|
"deepseek-ai/DeepSeek-R1-0528-Turbo",
|
|
24
23
|
"Qwen/Qwen3-235B-A22B-Thinking-2507",
|
|
25
24
|
"Qwen/Qwen3-Coder-480B-A35B-Instruct",
|
|
@@ -39,14 +38,13 @@ class DeepInfra(Provider):
|
|
|
39
38
|
"mistralai/Mistral-Small-3.1-24B-Instruct-2503",
|
|
40
39
|
"microsoft/phi-4-reasoning-plus",
|
|
41
40
|
"Qwen/QwQ-32B",
|
|
42
|
-
"google/gemini-2.5-flash",
|
|
43
|
-
"google/gemini-2.5-pro",
|
|
44
41
|
"google/gemma-3-27b-it",
|
|
45
42
|
"google/gemma-3-12b-it",
|
|
46
43
|
"google/gemma-3-4b-it",
|
|
47
44
|
"microsoft/Phi-4-multimodal-instruct",
|
|
48
45
|
"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
|
|
49
46
|
"deepseek-ai/DeepSeek-V3",
|
|
47
|
+
"deepseek-ai/DeepSeek-V3.1",
|
|
50
48
|
"meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
|
51
49
|
"meta-llama/Llama-3.3-70B-Instruct",
|
|
52
50
|
"microsoft/phi-4",
|
|
@@ -60,7 +58,6 @@ class DeepInfra(Provider):
|
|
|
60
58
|
"Sao10K/L3-8B-Lunaris-v1-Turbo",
|
|
61
59
|
"Sao10K/L3.1-70B-Euryale-v2.2",
|
|
62
60
|
"Sao10K/L3.3-70B-Euryale-v2.3",
|
|
63
|
-
"anthropic/claude-3-7-sonnet-latest",
|
|
64
61
|
"deepseek-ai/DeepSeek-R1",
|
|
65
62
|
"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
|
|
66
63
|
"deepseek-ai/DeepSeek-R1-Turbo",
|
webscout/Provider/ExaAI.py
CHANGED
webscout/Provider/ExaChat.py
CHANGED
|
@@ -11,53 +11,15 @@ from webscout.litagent import LitAgent
|
|
|
11
11
|
|
|
12
12
|
# Model configurations
|
|
13
13
|
MODEL_CONFIGS = {
|
|
14
|
-
"exaanswer": {
|
|
15
|
-
"endpoint": "https://ayle.chat/api/exaanswer",
|
|
16
|
-
"models": ["exaanswer"],
|
|
17
|
-
},
|
|
18
14
|
"gemini": {
|
|
19
15
|
"endpoint": "https://ayle.chat/api/gemini",
|
|
20
16
|
"models": [
|
|
21
17
|
"gemini-2.0-flash",
|
|
22
|
-
"gemini-2.0-flash-exp-image-generation",
|
|
23
|
-
"gemini-2.0-flash-thinking-exp-01-21",
|
|
24
|
-
"gemini-2.5-flash-lite-preview-06-17",
|
|
25
|
-
"gemini-2.0-pro-exp-02-05",
|
|
26
18
|
"gemini-2.5-flash",
|
|
27
19
|
|
|
28
20
|
|
|
29
21
|
],
|
|
30
22
|
},
|
|
31
|
-
"openrouter": {
|
|
32
|
-
"endpoint": "https://ayle.chat/api/openrouter",
|
|
33
|
-
"models": [
|
|
34
|
-
"mistralai/mistral-small-3.1-24b-instruct:free",
|
|
35
|
-
"deepseek/deepseek-r1:free",
|
|
36
|
-
"deepseek/deepseek-chat-v3-0324:free",
|
|
37
|
-
"google/gemma-3-27b-it:free",
|
|
38
|
-
"meta-llama/llama-4-maverick:free",
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
"groq": {
|
|
42
|
-
"endpoint": "https://ayle.chat/api/groq",
|
|
43
|
-
"models": [
|
|
44
|
-
"deepseek-r1-distill-llama-70b",
|
|
45
|
-
"deepseek-r1-distill-qwen-32b",
|
|
46
|
-
"gemma2-9b-it",
|
|
47
|
-
"llama-3.1-8b-instant",
|
|
48
|
-
"llama-3.2-1b-preview",
|
|
49
|
-
"llama-3.2-3b-preview",
|
|
50
|
-
"llama-3.2-90b-vision-preview",
|
|
51
|
-
"llama-3.3-70b-specdec",
|
|
52
|
-
"llama-3.3-70b-versatile",
|
|
53
|
-
"llama3-70b-8192",
|
|
54
|
-
"llama3-8b-8192",
|
|
55
|
-
"qwen-2.5-32b",
|
|
56
|
-
"qwen-2.5-coder-32b",
|
|
57
|
-
"qwen-qwq-32b",
|
|
58
|
-
"meta-llama/llama-4-scout-17b-16e-instruct"
|
|
59
|
-
],
|
|
60
|
-
},
|
|
61
23
|
"cerebras": {
|
|
62
24
|
"endpoint": "https://ayle.chat/api/cerebras",
|
|
63
25
|
"models": [
|
|
@@ -67,57 +29,16 @@ MODEL_CONFIGS = {
|
|
|
67
29
|
"qwen-3-32b"
|
|
68
30
|
],
|
|
69
31
|
},
|
|
70
|
-
"xai": {
|
|
71
|
-
"endpoint": "https://ayle.chat/api/xai",
|
|
72
|
-
"models": [
|
|
73
|
-
"grok-3-mini-beta"
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
32
|
}
|
|
77
33
|
|
|
78
34
|
class ExaChat(Provider):
|
|
79
35
|
"""
|
|
80
36
|
A class to interact with multiple AI APIs through the Exa Chat interface.
|
|
81
37
|
"""
|
|
38
|
+
required_auth = False
|
|
82
39
|
AVAILABLE_MODELS = [
|
|
83
|
-
# ExaAnswer Models
|
|
84
|
-
"exaanswer",
|
|
85
|
-
|
|
86
|
-
# XAI Models
|
|
87
|
-
"grok-3-mini-beta",
|
|
88
|
-
|
|
89
|
-
# Gemini Models
|
|
90
40
|
"gemini-2.0-flash",
|
|
91
|
-
"gemini-2.0-flash-exp-image-generation",
|
|
92
|
-
"gemini-2.0-flash-thinking-exp-01-21",
|
|
93
|
-
"gemini-2.0-pro-exp-02-05",
|
|
94
41
|
"gemini-2.5-flash",
|
|
95
|
-
"gemini-2.5-flash-lite-preview-06-17",
|
|
96
|
-
|
|
97
|
-
# OpenRouter Models
|
|
98
|
-
"mistralai/mistral-small-3.1-24b-instruct:free",
|
|
99
|
-
"deepseek/deepseek-r1:free",
|
|
100
|
-
"deepseek/deepseek-chat-v3-0324:free",
|
|
101
|
-
"google/gemma-3-27b-it:free",
|
|
102
|
-
"meta-llama/llama-4-maverick:free",
|
|
103
|
-
|
|
104
|
-
# Groq Models
|
|
105
|
-
"deepseek-r1-distill-llama-70b",
|
|
106
|
-
"deepseek-r1-distill-qwen-32b",
|
|
107
|
-
"gemma2-9b-it",
|
|
108
|
-
"llama-3.1-8b-instant",
|
|
109
|
-
"llama-3.2-1b-preview",
|
|
110
|
-
"llama-3.2-3b-preview",
|
|
111
|
-
"llama-3.2-90b-vision-preview",
|
|
112
|
-
"llama-3.3-70b-specdec",
|
|
113
|
-
"llama-3.3-70b-versatile",
|
|
114
|
-
"llama3-70b-8192",
|
|
115
|
-
"llama3-8b-8192",
|
|
116
|
-
"qwen-2.5-32b",
|
|
117
|
-
"qwen-2.5-coder-32b",
|
|
118
|
-
"qwen-qwq-32b",
|
|
119
|
-
"meta-llama/llama-4-scout-17b-16e-instruct",
|
|
120
|
-
|
|
121
42
|
|
|
122
43
|
# Cerebras Models
|
|
123
44
|
"llama3.1-8b",
|
webscout/Provider/Flowith.py
CHANGED
|
@@ -15,7 +15,7 @@ class Flowith(Provider):
|
|
|
15
15
|
"""
|
|
16
16
|
A provider class for interacting with the Flowith API.
|
|
17
17
|
"""
|
|
18
|
-
|
|
18
|
+
required_auth = False
|
|
19
19
|
AVAILABLE_MODELS = [
|
|
20
20
|
"gpt-5-nano", "gpt-5-mini", "glm-4.5", "gpt-oss-120b", "gpt-oss-20b", "kimi-k2",
|
|
21
21
|
"gpt-4.1", "gpt-4.1-mini", "deepseek-chat", "deepseek-reasoner",
|
webscout/Provider/Gemini.py
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from os import path
|
|
2
|
-
from json import
|
|
2
|
+
from json import dumps
|
|
3
3
|
import warnings
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Dict
|
|
5
|
+
|
|
5
6
|
|
|
6
7
|
# Import internal modules and dependencies
|
|
7
|
-
from ..AIutel import Optimizers, Conversation
|
|
8
|
-
from ..AIbase import Provider
|
|
8
|
+
from ..AIutel import Optimizers, Conversation
|
|
9
|
+
from ..AIbase import Provider
|
|
9
10
|
from ..Bard import Chatbot, Model
|
|
10
11
|
|
|
11
12
|
warnings.simplefilter("ignore", category=UserWarning)
|
|
@@ -25,10 +26,11 @@ MODEL_ALIASES: Dict[str, Model] = {
|
|
|
25
26
|
AVAILABLE_MODELS = list(MODEL_ALIASES.keys())
|
|
26
27
|
|
|
27
28
|
class GEMINI(Provider):
|
|
29
|
+
required_auth = True
|
|
28
30
|
def __init__(
|
|
29
31
|
self,
|
|
30
32
|
cookie_file: str,
|
|
31
|
-
model: str = "flash", # Accepts either a Model enum or a str alias.
|
|
33
|
+
model: str = "gemini-2.5-flash", # Accepts either a Model enum or a str alias.
|
|
32
34
|
proxy: dict = {},
|
|
33
35
|
timeout: int = 30,
|
|
34
36
|
):
|
webscout/Provider/GeminiProxy.py
CHANGED
webscout/Provider/GithubChat.py
CHANGED
|
@@ -4,6 +4,8 @@ import json
|
|
|
4
4
|
import time
|
|
5
5
|
from typing import Any, Dict, List, Optional, Union, Generator
|
|
6
6
|
|
|
7
|
+
from flask import request
|
|
8
|
+
|
|
7
9
|
from webscout.AIutel import Conversation
|
|
8
10
|
from webscout.AIutel import Optimizers
|
|
9
11
|
from webscout.AIutel import AwesomePrompts, sanitize_stream # Import sanitize_stream
|
|
@@ -16,7 +18,7 @@ class GithubChat(Provider):
|
|
|
16
18
|
A class to interact with the GitHub Copilot Chat API.
|
|
17
19
|
Uses cookies for authentication and supports streaming responses.
|
|
18
20
|
"""
|
|
19
|
-
|
|
21
|
+
required_auth = True
|
|
20
22
|
# Available models
|
|
21
23
|
AVAILABLE_MODELS = [
|
|
22
24
|
"gpt-4o",
|
webscout/Provider/Groq.py
CHANGED
webscout/Provider/HeckAI.py
CHANGED
|
@@ -35,7 +35,7 @@ class HeckAI(Provider):
|
|
|
35
35
|
previous_answer (str): Last answer received from the API.
|
|
36
36
|
conversation (Conversation): Conversation history manager.
|
|
37
37
|
"""
|
|
38
|
-
|
|
38
|
+
required_auth = False
|
|
39
39
|
AVAILABLE_MODELS = [
|
|
40
40
|
"google/gemini-2.5-flash-preview",
|
|
41
41
|
"deepseek/deepseek-chat",
|
|
@@ -43,7 +43,11 @@ class HeckAI(Provider):
|
|
|
43
43
|
"openai/gpt-4o-mini",
|
|
44
44
|
"openai/gpt-4.1-mini",
|
|
45
45
|
"x-ai/grok-3-mini-beta",
|
|
46
|
-
"meta-llama/llama-4-scout"
|
|
46
|
+
"meta-llama/llama-4-scout",
|
|
47
|
+
"openai/gpt-5-mini",
|
|
48
|
+
"openai/gpt-5-nano"
|
|
49
|
+
|
|
50
|
+
|
|
47
51
|
]
|
|
48
52
|
|
|
49
53
|
def __init__(
|
|
@@ -374,7 +378,7 @@ if __name__ == "__main__":
|
|
|
374
378
|
# except Exception as e:
|
|
375
379
|
# print(f"\r{model:<50} {'✗':<10} {str(e)}")
|
|
376
380
|
from rich import print
|
|
377
|
-
ai = HeckAI()
|
|
378
|
-
response = ai.chat("tell me about humans", stream=True, raw=
|
|
381
|
+
ai = HeckAI(model="openai/gpt-5-nano")
|
|
382
|
+
response = ai.chat("tell me about humans", stream=True, raw=True)
|
|
379
383
|
for chunk in response:
|
|
380
384
|
print(chunk, end='', flush=True)
|
webscout/Provider/Jadve.py
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
from curl_cffi.requests import Session
|
|
2
2
|
from curl_cffi import CurlError
|
|
3
|
-
import json
|
|
4
3
|
import re
|
|
5
4
|
from typing import Union, Any, Dict, Optional, Generator
|
|
5
|
+
import secrets
|
|
6
|
+
|
|
6
7
|
|
|
7
8
|
from webscout.AIutel import Optimizers, Conversation, AwesomePrompts, sanitize_stream # Import sanitize_stream
|
|
8
9
|
from webscout.AIbase import Provider
|
|
9
10
|
from webscout import exceptions
|
|
10
|
-
from webscout.litagent import LitAgent
|
|
11
11
|
|
|
12
12
|
class JadveOpenAI(Provider):
|
|
13
13
|
"""
|
|
14
14
|
A class to interact with the OpenAI API through jadve.com using the streaming endpoint.
|
|
15
15
|
"""
|
|
16
|
-
|
|
17
|
-
AVAILABLE_MODELS = ["gpt-
|
|
16
|
+
required_auth = False
|
|
17
|
+
AVAILABLE_MODELS = ["gpt-5-mini", "claude-3-5-haiku-20241022"]
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
20
20
|
self,
|
|
@@ -27,7 +27,7 @@ class JadveOpenAI(Provider):
|
|
|
27
27
|
proxies: dict = {},
|
|
28
28
|
history_offset: int = 10250,
|
|
29
29
|
act: str = None,
|
|
30
|
-
model: str = "gpt-
|
|
30
|
+
model: str = "gpt-5-mini",
|
|
31
31
|
system_prompt: str = "You are a helpful AI assistant." # Note: system_prompt is not used by this API
|
|
32
32
|
):
|
|
33
33
|
"""
|
|
@@ -53,7 +53,7 @@ class JadveOpenAI(Provider):
|
|
|
53
53
|
self.session = Session()
|
|
54
54
|
self.is_conversation = is_conversation
|
|
55
55
|
self.max_tokens_to_sample = max_tokens
|
|
56
|
-
self.api_endpoint = "https://
|
|
56
|
+
self.api_endpoint = "https://ai-api.jadve.com/api/chat"
|
|
57
57
|
self.stream_chunk_size = 64
|
|
58
58
|
self.timeout = timeout
|
|
59
59
|
self.last_response = {}
|
|
@@ -67,12 +67,16 @@ class JadveOpenAI(Provider):
|
|
|
67
67
|
"content-type": "application/json",
|
|
68
68
|
"dnt": "1",
|
|
69
69
|
"origin": "https://jadve.com",
|
|
70
|
-
"priority": "u=1, i",
|
|
70
|
+
"priority": "u=1, i",
|
|
71
71
|
"referer": "https://jadve.com/",
|
|
72
72
|
"sec-fetch-dest": "empty",
|
|
73
73
|
"sec-fetch-mode": "cors",
|
|
74
74
|
"sec-fetch-site": "same-site",
|
|
75
|
-
"
|
|
75
|
+
"sec-ch-ua": '"Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"',
|
|
76
|
+
"sec-ch-ua-mobile": "?0",
|
|
77
|
+
"sec-ch-ua-platform": '"Windows"',
|
|
78
|
+
"sec-gpc": "1",
|
|
79
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
# Update curl_cffi session headers and proxies
|
|
@@ -136,15 +140,14 @@ class JadveOpenAI(Provider):
|
|
|
136
140
|
raise Exception(f"Optimizer is not one of {list(self.__available_optimizers)}")
|
|
137
141
|
|
|
138
142
|
payload = {
|
|
143
|
+
"id": secrets.token_hex(8),
|
|
139
144
|
"messages": [
|
|
140
|
-
{"role": "system", "content": self.system_prompt},
|
|
141
145
|
{"role": "user", "content": [{"type": "text", "text": conversation_prompt}]}
|
|
142
146
|
],
|
|
143
147
|
"model": self.model,
|
|
144
148
|
"botId": "",
|
|
145
149
|
"chatId": "",
|
|
146
|
-
"stream": True,
|
|
147
|
-
"temperature": 0.7,
|
|
150
|
+
"stream": True,
|
|
148
151
|
"returnTokensUsage": True,
|
|
149
152
|
"useTools": False
|
|
150
153
|
}
|
|
@@ -160,7 +163,7 @@ class JadveOpenAI(Provider):
|
|
|
160
163
|
stream=True,
|
|
161
164
|
timeout=self.timeout,
|
|
162
165
|
# proxies are set on the session
|
|
163
|
-
impersonate="
|
|
166
|
+
impersonate="chrome120" # Use a common impersonation profile
|
|
164
167
|
)
|
|
165
168
|
response.raise_for_status() # Check for HTTP errors
|
|
166
169
|
|
|
@@ -269,29 +272,11 @@ class JadveOpenAI(Provider):
|
|
|
269
272
|
return response.get("text", "")
|
|
270
273
|
|
|
271
274
|
if __name__ == "__main__":
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
#
|
|
279
|
-
#
|
|
280
|
-
# response = test_ai.chat("Say 'Hello' in one word")
|
|
281
|
-
# response_text = response
|
|
282
|
-
|
|
283
|
-
# if response_text and len(response_text.strip()) > 0:
|
|
284
|
-
# status = "✓"
|
|
285
|
-
# # Truncate response if too long
|
|
286
|
-
# display_text = response_text.strip()[:50] + "..." if len(response_text.strip()) > 50 else response_text.strip()
|
|
287
|
-
# else:
|
|
288
|
-
# status = "✗"
|
|
289
|
-
# display_text = "Empty or invalid response"
|
|
290
|
-
# print(f"{model:<50} {status:<10} {display_text}")
|
|
291
|
-
# except Exception as e:
|
|
292
|
-
# print(f"{model:<50} {'✗':<10} {str(e)}")
|
|
293
|
-
from rich import print
|
|
294
|
-
ai = JadveOpenAI()
|
|
295
|
-
response = ai.chat("tell me about humans", stream=True, raw=False)
|
|
296
|
-
for chunk in response:
|
|
297
|
-
print(chunk, end='', flush=True)
|
|
275
|
+
for model in JadveOpenAI.AVAILABLE_MODELS:
|
|
276
|
+
ai = JadveOpenAI(model=model)
|
|
277
|
+
response = ai.chat("hi")
|
|
278
|
+
print(f"Model: {model}")
|
|
279
|
+
print(response)
|
|
280
|
+
print("-" * 50)
|
|
281
|
+
# for chunk in response:
|
|
282
|
+
# print(chunk, end="", flush=True)
|