webscout 8.3.5__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 (159) hide show
  1. webscout/AIutel.py +2 -0
  2. webscout/Bard.py +12 -6
  3. webscout/DWEBS.py +66 -57
  4. webscout/Provider/{UNFINISHED → AISEARCH}/PERPLEXED_search.py +34 -74
  5. webscout/Provider/AISEARCH/__init__.py +18 -11
  6. webscout/Provider/AISEARCH/scira_search.py +3 -1
  7. webscout/Provider/Aitopia.py +2 -3
  8. webscout/Provider/Andi.py +3 -3
  9. webscout/Provider/ChatGPTClone.py +1 -1
  10. webscout/Provider/ChatSandbox.py +1 -0
  11. webscout/Provider/Cloudflare.py +1 -1
  12. webscout/Provider/Cohere.py +1 -0
  13. webscout/Provider/Deepinfra.py +13 -10
  14. webscout/Provider/ExaAI.py +1 -1
  15. webscout/Provider/ExaChat.py +1 -80
  16. webscout/Provider/Flowith.py +6 -1
  17. webscout/Provider/Gemini.py +7 -5
  18. webscout/Provider/GeminiProxy.py +1 -0
  19. webscout/Provider/GithubChat.py +4 -1
  20. webscout/Provider/Groq.py +1 -1
  21. webscout/Provider/HeckAI.py +8 -4
  22. webscout/Provider/Jadve.py +23 -38
  23. webscout/Provider/K2Think.py +308 -0
  24. webscout/Provider/Koboldai.py +8 -186
  25. webscout/Provider/LambdaChat.py +2 -4
  26. webscout/Provider/Nemotron.py +3 -4
  27. webscout/Provider/Netwrck.py +6 -8
  28. webscout/Provider/OLLAMA.py +1 -0
  29. webscout/Provider/OPENAI/Cloudflare.py +6 -7
  30. webscout/Provider/OPENAI/FalconH1.py +2 -7
  31. webscout/Provider/OPENAI/FreeGemini.py +6 -8
  32. webscout/Provider/OPENAI/{monochat.py → K2Think.py} +180 -77
  33. webscout/Provider/OPENAI/NEMOTRON.py +3 -6
  34. webscout/Provider/OPENAI/PI.py +5 -4
  35. webscout/Provider/OPENAI/Qwen3.py +2 -3
  36. webscout/Provider/OPENAI/README.md +2 -1
  37. webscout/Provider/OPENAI/TogetherAI.py +52 -57
  38. webscout/Provider/OPENAI/TwoAI.py +3 -4
  39. webscout/Provider/OPENAI/__init__.py +17 -56
  40. webscout/Provider/OPENAI/ai4chat.py +313 -303
  41. webscout/Provider/OPENAI/base.py +9 -29
  42. webscout/Provider/OPENAI/chatgpt.py +7 -2
  43. webscout/Provider/OPENAI/chatgptclone.py +4 -7
  44. webscout/Provider/OPENAI/chatsandbox.py +84 -59
  45. webscout/Provider/OPENAI/deepinfra.py +12 -6
  46. webscout/Provider/OPENAI/e2b.py +60 -8
  47. webscout/Provider/OPENAI/flowith.py +4 -3
  48. webscout/Provider/OPENAI/generate_api_key.py +48 -0
  49. webscout/Provider/OPENAI/heckai.py +4 -1
  50. webscout/Provider/OPENAI/netwrck.py +9 -12
  51. webscout/Provider/OPENAI/refact.py +274 -0
  52. webscout/Provider/OPENAI/scirachat.py +6 -0
  53. webscout/Provider/OPENAI/textpollinations.py +3 -14
  54. webscout/Provider/OPENAI/toolbaz.py +14 -10
  55. webscout/Provider/OpenGPT.py +1 -1
  56. webscout/Provider/Openai.py +150 -402
  57. webscout/Provider/PI.py +1 -0
  58. webscout/Provider/Perplexitylabs.py +1 -2
  59. webscout/Provider/QwenLM.py +107 -89
  60. webscout/Provider/STT/__init__.py +17 -2
  61. webscout/Provider/{Llama3.py → Sambanova.py} +9 -10
  62. webscout/Provider/StandardInput.py +1 -1
  63. webscout/Provider/TTI/__init__.py +18 -12
  64. webscout/Provider/TTI/bing.py +14 -2
  65. webscout/Provider/TTI/together.py +10 -9
  66. webscout/Provider/TTS/README.md +0 -1
  67. webscout/Provider/TTS/__init__.py +18 -11
  68. webscout/Provider/TTS/base.py +479 -159
  69. webscout/Provider/TTS/deepgram.py +409 -156
  70. webscout/Provider/TTS/elevenlabs.py +425 -111
  71. webscout/Provider/TTS/freetts.py +317 -140
  72. webscout/Provider/TTS/gesserit.py +192 -128
  73. webscout/Provider/TTS/murfai.py +248 -113
  74. webscout/Provider/TTS/openai_fm.py +347 -129
  75. webscout/Provider/TTS/speechma.py +620 -586
  76. webscout/Provider/TeachAnything.py +1 -0
  77. webscout/Provider/TextPollinationsAI.py +5 -15
  78. webscout/Provider/TogetherAI.py +136 -142
  79. webscout/Provider/TwoAI.py +53 -309
  80. webscout/Provider/TypliAI.py +2 -1
  81. webscout/Provider/{GizAI.py → UNFINISHED/GizAI.py} +1 -1
  82. webscout/Provider/UNFINISHED/VercelAIGateway.py +339 -0
  83. webscout/Provider/Venice.py +2 -1
  84. webscout/Provider/VercelAI.py +1 -0
  85. webscout/Provider/WiseCat.py +2 -1
  86. webscout/Provider/WrDoChat.py +2 -1
  87. webscout/Provider/__init__.py +18 -174
  88. webscout/Provider/ai4chat.py +1 -1
  89. webscout/Provider/akashgpt.py +7 -10
  90. webscout/Provider/cerebras.py +194 -38
  91. webscout/Provider/chatglm.py +170 -83
  92. webscout/Provider/cleeai.py +1 -2
  93. webscout/Provider/deepseek_assistant.py +1 -1
  94. webscout/Provider/elmo.py +1 -1
  95. webscout/Provider/geminiapi.py +1 -1
  96. webscout/Provider/granite.py +1 -1
  97. webscout/Provider/hermes.py +1 -3
  98. webscout/Provider/julius.py +1 -0
  99. webscout/Provider/learnfastai.py +1 -1
  100. webscout/Provider/llama3mitril.py +1 -1
  101. webscout/Provider/llmchat.py +1 -1
  102. webscout/Provider/llmchatco.py +1 -1
  103. webscout/Provider/meta.py +3 -3
  104. webscout/Provider/oivscode.py +2 -2
  105. webscout/Provider/scira_chat.py +51 -124
  106. webscout/Provider/searchchat.py +1 -0
  107. webscout/Provider/sonus.py +1 -1
  108. webscout/Provider/toolbaz.py +15 -11
  109. webscout/Provider/turboseek.py +31 -22
  110. webscout/Provider/typefully.py +2 -1
  111. webscout/Provider/x0gpt.py +1 -0
  112. webscout/Provider/yep.py +2 -1
  113. webscout/conversation.py +22 -20
  114. webscout/sanitize.py +14 -10
  115. webscout/scout/README.md +20 -23
  116. webscout/scout/core/crawler.py +125 -38
  117. webscout/scout/core/scout.py +26 -5
  118. webscout/tempid.py +6 -0
  119. webscout/version.py +1 -1
  120. webscout/webscout_search.py +13 -6
  121. webscout/webscout_search_async.py +10 -8
  122. webscout/yep_search.py +13 -5
  123. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/METADATA +3 -1
  124. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/RECORD +132 -155
  125. webscout/Provider/AllenAI.py +0 -440
  126. webscout/Provider/Blackboxai.py +0 -793
  127. webscout/Provider/FreeGemini.py +0 -250
  128. webscout/Provider/Glider.py +0 -225
  129. webscout/Provider/Hunyuan.py +0 -283
  130. webscout/Provider/MCPCore.py +0 -322
  131. webscout/Provider/MiniMax.py +0 -207
  132. webscout/Provider/OPENAI/BLACKBOXAI.py +0 -1045
  133. webscout/Provider/OPENAI/MiniMax.py +0 -298
  134. webscout/Provider/OPENAI/autoproxy.py +0 -1067
  135. webscout/Provider/OPENAI/c4ai.py +0 -394
  136. webscout/Provider/OPENAI/copilot.py +0 -305
  137. webscout/Provider/OPENAI/glider.py +0 -330
  138. webscout/Provider/OPENAI/mcpcore.py +0 -431
  139. webscout/Provider/OPENAI/multichat.py +0 -378
  140. webscout/Provider/Reka.py +0 -214
  141. webscout/Provider/TTS/sthir.py +0 -94
  142. webscout/Provider/UNFINISHED/fetch_together_models.py +0 -90
  143. webscout/Provider/asksteve.py +0 -220
  144. webscout/Provider/copilot.py +0 -422
  145. webscout/Provider/freeaichat.py +0 -294
  146. webscout/Provider/koala.py +0 -182
  147. webscout/Provider/lmarena.py +0 -198
  148. webscout/Provider/monochat.py +0 -275
  149. webscout/Provider/multichat.py +0 -375
  150. webscout/Provider/scnet.py +0 -244
  151. webscout/Provider/talkai.py +0 -194
  152. /webscout/Provider/{Marcus.py → UNFINISHED/Marcus.py} +0 -0
  153. /webscout/Provider/{Qodo.py → UNFINISHED/Qodo.py} +0 -0
  154. /webscout/Provider/{XenAI.py → UNFINISHED/XenAI.py} +0 -0
  155. /webscout/Provider/{samurai.py → UNFINISHED/samurai.py} +0 -0
  156. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/WHEEL +0 -0
  157. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/entry_points.txt +0 -0
  158. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/licenses/LICENSE.md +0 -0
  159. {webscout-8.3.5.dist-info → webscout-8.3.7.dist-info}/top_level.txt +0 -0
@@ -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",
@@ -83,6 +80,12 @@ class DeepInfra(Provider):
83
80
  "mistralai/Mistral-Small-3.2-24B-Instruct-2506",
84
81
  "mistralai/Mixtral-8x7B-Instruct-v0.1",
85
82
  "nvidia/Llama-3.1-Nemotron-70B-Instruct",
83
+ "zai-org/GLM-4.5-Air",
84
+ "zai-org/GLM-4.5",
85
+ "zai-org/GLM-4.5V",
86
+ "openai/gpt-oss-120b",
87
+ "openai/gpt-oss-20b",
88
+ "allenai/olmOCR-7B-0725-FP8",
86
89
  ]
87
90
 
88
91
  @staticmethod
@@ -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,12 @@ class Flowith(Provider):
15
15
  """
16
16
  A provider class for interacting with the Flowith API.
17
17
  """
18
- AVAILABLE_MODELS = ["gpt-4.1-nano", "gpt-4.1-mini", "deepseek-chat", "deepseek-reasoner", "claude-3.5-haiku", "gemini-2.0-flash", "gemini-2.5-flash", "grok-3-mini"]
18
+ required_auth = False
19
+ AVAILABLE_MODELS = [
20
+ "gpt-5-nano", "gpt-5-mini", "glm-4.5", "gpt-oss-120b", "gpt-oss-20b", "kimi-k2",
21
+ "gpt-4.1", "gpt-4.1-mini", "deepseek-chat", "deepseek-reasoner",
22
+ "gemini-2.5-flash", "grok-3-mini"
23
+ ]
19
24
 
20
25
  def __init__(
21
26
  self,
@@ -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,10 +18,11 @@ 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",
25
+ "gpt-5",
23
26
  "o3-mini",
24
27
  "o1",
25
28
  "claude-3.5-sonnet",
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)