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.

Files changed (130) hide show
  1. webscout/AIutel.py +2 -0
  2. webscout/Provider/AISEARCH/__init__.py +18 -11
  3. webscout/Provider/AISEARCH/scira_search.py +3 -1
  4. webscout/Provider/Aitopia.py +2 -3
  5. webscout/Provider/Andi.py +3 -3
  6. webscout/Provider/ChatGPTClone.py +1 -1
  7. webscout/Provider/ChatSandbox.py +1 -0
  8. webscout/Provider/Cloudflare.py +1 -1
  9. webscout/Provider/Cohere.py +1 -0
  10. webscout/Provider/Deepinfra.py +7 -10
  11. webscout/Provider/ExaAI.py +1 -1
  12. webscout/Provider/ExaChat.py +1 -80
  13. webscout/Provider/Flowith.py +1 -1
  14. webscout/Provider/Gemini.py +7 -5
  15. webscout/Provider/GeminiProxy.py +1 -0
  16. webscout/Provider/GithubChat.py +3 -1
  17. webscout/Provider/Groq.py +1 -1
  18. webscout/Provider/HeckAI.py +8 -4
  19. webscout/Provider/Jadve.py +23 -38
  20. webscout/Provider/K2Think.py +308 -0
  21. webscout/Provider/Koboldai.py +8 -186
  22. webscout/Provider/LambdaChat.py +2 -4
  23. webscout/Provider/Nemotron.py +3 -4
  24. webscout/Provider/Netwrck.py +3 -2
  25. webscout/Provider/OLLAMA.py +1 -0
  26. webscout/Provider/OPENAI/Cloudflare.py +6 -7
  27. webscout/Provider/OPENAI/FalconH1.py +2 -7
  28. webscout/Provider/OPENAI/FreeGemini.py +6 -8
  29. webscout/Provider/OPENAI/{monochat.py → K2Think.py} +180 -77
  30. webscout/Provider/OPENAI/NEMOTRON.py +3 -6
  31. webscout/Provider/OPENAI/PI.py +5 -4
  32. webscout/Provider/OPENAI/Qwen3.py +2 -3
  33. webscout/Provider/OPENAI/TogetherAI.py +2 -2
  34. webscout/Provider/OPENAI/TwoAI.py +3 -4
  35. webscout/Provider/OPENAI/__init__.py +17 -58
  36. webscout/Provider/OPENAI/ai4chat.py +313 -303
  37. webscout/Provider/OPENAI/base.py +9 -29
  38. webscout/Provider/OPENAI/chatgpt.py +7 -2
  39. webscout/Provider/OPENAI/chatgptclone.py +4 -7
  40. webscout/Provider/OPENAI/chatsandbox.py +84 -59
  41. webscout/Provider/OPENAI/deepinfra.py +6 -6
  42. webscout/Provider/OPENAI/heckai.py +4 -1
  43. webscout/Provider/OPENAI/netwrck.py +1 -0
  44. webscout/Provider/OPENAI/scirachat.py +6 -0
  45. webscout/Provider/OPENAI/textpollinations.py +3 -11
  46. webscout/Provider/OPENAI/toolbaz.py +14 -11
  47. webscout/Provider/OpenGPT.py +1 -1
  48. webscout/Provider/Openai.py +150 -402
  49. webscout/Provider/PI.py +1 -0
  50. webscout/Provider/Perplexitylabs.py +1 -2
  51. webscout/Provider/QwenLM.py +107 -89
  52. webscout/Provider/STT/__init__.py +17 -2
  53. webscout/Provider/{Llama3.py → Sambanova.py} +9 -10
  54. webscout/Provider/StandardInput.py +1 -1
  55. webscout/Provider/TTI/__init__.py +18 -12
  56. webscout/Provider/TTS/__init__.py +18 -10
  57. webscout/Provider/TeachAnything.py +1 -0
  58. webscout/Provider/TextPollinationsAI.py +5 -12
  59. webscout/Provider/TogetherAI.py +86 -87
  60. webscout/Provider/TwoAI.py +53 -309
  61. webscout/Provider/TypliAI.py +2 -1
  62. webscout/Provider/{GizAI.py → UNFINISHED/GizAI.py} +1 -1
  63. webscout/Provider/Venice.py +2 -1
  64. webscout/Provider/VercelAI.py +1 -0
  65. webscout/Provider/WiseCat.py +2 -1
  66. webscout/Provider/WrDoChat.py +2 -1
  67. webscout/Provider/__init__.py +18 -86
  68. webscout/Provider/ai4chat.py +1 -1
  69. webscout/Provider/akashgpt.py +7 -10
  70. webscout/Provider/cerebras.py +115 -9
  71. webscout/Provider/chatglm.py +170 -83
  72. webscout/Provider/cleeai.py +1 -2
  73. webscout/Provider/deepseek_assistant.py +1 -1
  74. webscout/Provider/elmo.py +1 -1
  75. webscout/Provider/geminiapi.py +1 -1
  76. webscout/Provider/granite.py +1 -1
  77. webscout/Provider/hermes.py +1 -3
  78. webscout/Provider/julius.py +1 -0
  79. webscout/Provider/learnfastai.py +1 -1
  80. webscout/Provider/llama3mitril.py +1 -1
  81. webscout/Provider/llmchat.py +1 -1
  82. webscout/Provider/llmchatco.py +1 -1
  83. webscout/Provider/meta.py +3 -3
  84. webscout/Provider/oivscode.py +2 -2
  85. webscout/Provider/scira_chat.py +51 -124
  86. webscout/Provider/searchchat.py +1 -0
  87. webscout/Provider/sonus.py +1 -1
  88. webscout/Provider/toolbaz.py +15 -12
  89. webscout/Provider/turboseek.py +31 -22
  90. webscout/Provider/typefully.py +2 -1
  91. webscout/Provider/x0gpt.py +1 -0
  92. webscout/Provider/yep.py +2 -1
  93. webscout/tempid.py +6 -0
  94. webscout/version.py +1 -1
  95. {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/METADATA +2 -1
  96. {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/RECORD +103 -129
  97. webscout/Provider/AllenAI.py +0 -440
  98. webscout/Provider/Blackboxai.py +0 -793
  99. webscout/Provider/FreeGemini.py +0 -250
  100. webscout/Provider/GptOss.py +0 -207
  101. webscout/Provider/Hunyuan.py +0 -283
  102. webscout/Provider/Kimi.py +0 -445
  103. webscout/Provider/MCPCore.py +0 -322
  104. webscout/Provider/MiniMax.py +0 -207
  105. webscout/Provider/OPENAI/BLACKBOXAI.py +0 -1045
  106. webscout/Provider/OPENAI/MiniMax.py +0 -298
  107. webscout/Provider/OPENAI/autoproxy.py +0 -1067
  108. webscout/Provider/OPENAI/copilot.py +0 -321
  109. webscout/Provider/OPENAI/gptoss.py +0 -288
  110. webscout/Provider/OPENAI/kimi.py +0 -469
  111. webscout/Provider/OPENAI/mcpcore.py +0 -431
  112. webscout/Provider/OPENAI/multichat.py +0 -378
  113. webscout/Provider/Reka.py +0 -214
  114. webscout/Provider/UNFINISHED/fetch_together_models.py +0 -90
  115. webscout/Provider/asksteve.py +0 -220
  116. webscout/Provider/copilot.py +0 -441
  117. webscout/Provider/freeaichat.py +0 -294
  118. webscout/Provider/koala.py +0 -182
  119. webscout/Provider/lmarena.py +0 -198
  120. webscout/Provider/monochat.py +0 -275
  121. webscout/Provider/multichat.py +0 -375
  122. webscout/Provider/scnet.py +0 -244
  123. webscout/Provider/talkai.py +0 -194
  124. /webscout/Provider/{Marcus.py → UNFINISHED/Marcus.py} +0 -0
  125. /webscout/Provider/{Qodo.py → UNFINISHED/Qodo.py} +0 -0
  126. /webscout/Provider/{XenAI.py → UNFINISHED/XenAI.py} +0 -0
  127. {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/WHEEL +0 -0
  128. {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/entry_points.txt +0 -0
  129. {webscout-8.3.6.dist-info → webscout-8.3.7.dist-info}/licenses/LICENSE.md +0 -0
  130. {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
- 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 *
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": "meta-llama/llama-4-maverick-17b-128e-instruct",
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
  }
@@ -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, AsyncProvider
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, sanitize_stream
7
- from webscout.AIbase import Provider, AsyncProvider
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 = [
@@ -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
 
@@ -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",
@@ -9,6 +9,7 @@ from webscout import exceptions
9
9
 
10
10
  #-----------------------------------------------Cohere--------------------------------------------
11
11
  class Cohere(Provider):
12
+ required_auth = True
12
13
  def __init__(
13
14
  self,
14
15
  api_key: str,
@@ -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 os
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, AsyncProvider
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
- "anthropic/claude-4-sonnet",
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",
@@ -26,7 +26,7 @@ class ExaAI(Provider):
26
26
  'The weather today depends on your location...'
27
27
  """
28
28
  AVAILABLE_MODELS = ["O3-Mini"]
29
-
29
+ required_auth = False
30
30
  def __init__(
31
31
  self,
32
32
  is_conversation: bool = True,
@@ -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",
@@ -15,7 +15,7 @@ class Flowith(Provider):
15
15
  """
16
16
  A provider class for interacting with the Flowith API.
17
17
  """
18
- # Updated list of supported models
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",
@@ -1,11 +1,12 @@
1
1
  from os import path
2
- from json import load, dumps
2
+ from json import dumps
3
3
  import warnings
4
- from typing import Union, Any, Dict
4
+ from typing import Dict
5
+
5
6
 
6
7
  # Import internal modules and dependencies
7
- from ..AIutel import Optimizers, Conversation, AwesomePrompts, sanitize_stream
8
- from ..AIbase import Provider, AsyncProvider
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
  ):
@@ -11,6 +11,7 @@ class GeminiProxy(Provider):
11
11
  """
12
12
  GeminiProxy is a provider class for interacting with the Gemini API via a proxy endpoint.
13
13
  """
14
+ required_auth = False
14
15
  AVAILABLE_MODELS = [
15
16
  "gemini-2.0-flash-lite",
16
17
  "gemini-2.0-flash",
@@ -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
@@ -17,7 +17,7 @@ class GROQ(Provider):
17
17
  """
18
18
  A class to interact with the GROQ AI API.
19
19
  """
20
-
20
+ required_auth = True
21
21
  # Default models list (will be updated dynamically)
22
22
  AVAILABLE_MODELS = [
23
23
  "distil-whisper-large-v3-en",
@@ -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=False)
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)
@@ -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-4o-mini"]
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-4o-mini",
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://openai.jadve.com/stream"
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", # Keep priority header if needed
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
- "x-authorization": "Bearer" # Keep custom headers
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, # API endpoint suggests streaming is default/required
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="chrome110" # Use a common impersonation profile
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
- # # Ensure curl_cffi is installed
273
- # print("-" * 80)
274
- # print(f"{'Model':<50} {'Status':<10} {'Response'}")
275
- # print("-" * 80)
276
-
277
- # for model in JadveOpenAI.AVAILABLE_MODELS:
278
- # try:
279
- # test_ai = JadveOpenAI(model=model, timeout=60)
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)