webscout 7.5__py3-none-any.whl → 7.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/AIauto.py +5 -53
- webscout/AIutel.py +8 -318
- webscout/DWEBS.py +460 -489
- webscout/Extra/YTToolkit/YTdownloader.py +14 -53
- webscout/Extra/YTToolkit/transcriber.py +12 -13
- webscout/Extra/YTToolkit/ytapi/video.py +0 -1
- webscout/Extra/__init__.py +0 -1
- webscout/Extra/autocoder/__init__.py +9 -9
- webscout/Extra/autocoder/autocoder_utiles.py +193 -199
- webscout/Extra/autocoder/rawdog.py +789 -677
- webscout/Extra/gguf.py +682 -428
- webscout/Extra/weather.py +178 -156
- webscout/Extra/weather_ascii.py +70 -17
- webscout/Litlogger/core/logger.py +1 -2
- webscout/Litlogger/handlers/file.py +1 -1
- webscout/Litlogger/styles/formats.py +0 -2
- webscout/Litlogger/utils/detectors.py +0 -1
- webscout/Provider/AISEARCH/DeepFind.py +0 -1
- webscout/Provider/AISEARCH/ISou.py +1 -22
- webscout/Provider/AISEARCH/felo_search.py +0 -1
- webscout/Provider/AllenAI.py +28 -30
- webscout/Provider/C4ai.py +29 -11
- webscout/Provider/ChatGPTClone.py +226 -0
- webscout/Provider/ChatGPTGratis.py +24 -56
- webscout/Provider/DeepSeek.py +25 -17
- webscout/Provider/Deepinfra.py +115 -48
- webscout/Provider/Gemini.py +1 -1
- webscout/Provider/Glider.py +33 -12
- webscout/Provider/HF_space/qwen_qwen2.py +2 -2
- webscout/Provider/HeckAI.py +23 -7
- webscout/Provider/Hunyuan.py +272 -0
- webscout/Provider/Jadve.py +20 -5
- webscout/Provider/LambdaChat.py +391 -0
- webscout/Provider/Netwrck.py +42 -19
- webscout/Provider/OLLAMA.py +256 -32
- webscout/Provider/PI.py +4 -2
- webscout/Provider/Perplexitylabs.py +26 -6
- webscout/Provider/PizzaGPT.py +10 -51
- webscout/Provider/TTI/AiForce/async_aiforce.py +4 -37
- webscout/Provider/TTI/AiForce/sync_aiforce.py +41 -38
- webscout/Provider/TTI/FreeAIPlayground/__init__.py +9 -9
- webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +179 -206
- webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +180 -192
- webscout/Provider/TTI/MagicStudio/__init__.py +2 -0
- webscout/Provider/TTI/MagicStudio/async_magicstudio.py +111 -0
- webscout/Provider/TTI/MagicStudio/sync_magicstudio.py +109 -0
- webscout/Provider/TTI/PollinationsAI/async_pollinations.py +5 -24
- webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +2 -22
- webscout/Provider/TTI/__init__.py +2 -3
- webscout/Provider/TTI/aiarta/async_aiarta.py +14 -14
- webscout/Provider/TTI/aiarta/sync_aiarta.py +52 -21
- webscout/Provider/TTI/artbit/async_artbit.py +3 -32
- webscout/Provider/TTI/artbit/sync_artbit.py +3 -31
- webscout/Provider/TTI/fastflux/__init__.py +22 -0
- webscout/Provider/TTI/fastflux/async_fastflux.py +261 -0
- webscout/Provider/TTI/fastflux/sync_fastflux.py +252 -0
- webscout/Provider/TTI/piclumen/__init__.py +22 -22
- webscout/Provider/TTI/piclumen/sync_piclumen.py +232 -232
- webscout/Provider/TTS/__init__.py +2 -2
- webscout/Provider/TTS/deepgram.py +12 -39
- webscout/Provider/TTS/elevenlabs.py +14 -40
- webscout/Provider/TTS/gesserit.py +11 -35
- webscout/Provider/TTS/murfai.py +13 -39
- webscout/Provider/TTS/parler.py +17 -40
- webscout/Provider/TTS/speechma.py +180 -0
- webscout/Provider/TTS/streamElements.py +17 -44
- webscout/Provider/TextPollinationsAI.py +39 -59
- webscout/Provider/Venice.py +25 -8
- webscout/Provider/WebSim.py +227 -0
- webscout/Provider/WiseCat.py +27 -5
- webscout/Provider/Youchat.py +64 -37
- webscout/Provider/__init__.py +12 -7
- webscout/Provider/akashgpt.py +20 -5
- webscout/Provider/flowith.py +33 -7
- webscout/Provider/freeaichat.py +32 -45
- webscout/Provider/koala.py +20 -5
- webscout/Provider/labyrinth.py +239 -0
- webscout/Provider/learnfastai.py +28 -15
- webscout/Provider/llamatutor.py +1 -1
- webscout/Provider/llmchat.py +30 -8
- webscout/Provider/multichat.py +65 -9
- webscout/Provider/sonus.py +208 -0
- webscout/Provider/talkai.py +1 -0
- webscout/Provider/turboseek.py +3 -0
- webscout/Provider/tutorai.py +2 -0
- webscout/Provider/typegpt.py +155 -65
- webscout/Provider/uncovr.py +297 -0
- webscout/Provider/x0gpt.py +3 -1
- webscout/Provider/yep.py +102 -20
- webscout/__init__.py +3 -0
- webscout/cli.py +53 -40
- webscout/conversation.py +1 -10
- webscout/litagent/__init__.py +2 -2
- webscout/litagent/agent.py +356 -20
- webscout/litagent/constants.py +34 -5
- webscout/litprinter/__init__.py +0 -3
- webscout/models.py +181 -0
- webscout/optimizers.py +1 -1
- webscout/prompt_manager.py +2 -8
- webscout/scout/core/scout.py +1 -4
- webscout/scout/core/search_result.py +1 -1
- webscout/scout/core/text_utils.py +1 -1
- webscout/scout/core.py +2 -5
- webscout/scout/element.py +1 -1
- webscout/scout/parsers/html_parser.py +1 -1
- webscout/scout/utils.py +0 -1
- webscout/swiftcli/__init__.py +1 -3
- webscout/tempid.py +1 -1
- webscout/update_checker.py +1 -3
- webscout/version.py +1 -1
- webscout/webscout_search_async.py +1 -2
- webscout/yep_search.py +297 -297
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/LICENSE.md +4 -4
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/METADATA +127 -405
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/RECORD +118 -117
- webscout/Extra/autollama.py +0 -231
- webscout/Provider/Amigo.py +0 -274
- webscout/Provider/Bing.py +0 -243
- webscout/Provider/DiscordRocks.py +0 -253
- webscout/Provider/TTI/blackbox/__init__.py +0 -4
- webscout/Provider/TTI/blackbox/async_blackbox.py +0 -212
- webscout/Provider/TTI/blackbox/sync_blackbox.py +0 -199
- webscout/Provider/TTI/deepinfra/__init__.py +0 -4
- webscout/Provider/TTI/deepinfra/async_deepinfra.py +0 -227
- webscout/Provider/TTI/deepinfra/sync_deepinfra.py +0 -199
- webscout/Provider/TTI/imgninza/__init__.py +0 -4
- webscout/Provider/TTI/imgninza/async_ninza.py +0 -214
- webscout/Provider/TTI/imgninza/sync_ninza.py +0 -209
- webscout/Provider/TTS/voicepod.py +0 -117
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/WHEEL +0 -0
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/entry_points.txt +0 -0
- {webscout-7.5.dist-info → webscout-7.7.dist-info}/top_level.txt +0 -0
|
@@ -9,15 +9,8 @@ from aiohttp import ClientError
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
|
|
11
11
|
from webscout.AIbase import AsyncImageProvider
|
|
12
|
-
from webscout.Litlogger import Logger, LogFormat
|
|
13
12
|
from webscout.litagent import LitAgent
|
|
14
13
|
|
|
15
|
-
# Initialize our fire logger and agent 🔥
|
|
16
|
-
logger = Logger(
|
|
17
|
-
"AsyncAiForce",
|
|
18
|
-
format=LogFormat.MODERN_EMOJI,
|
|
19
|
-
|
|
20
|
-
)
|
|
21
14
|
agent = LitAgent()
|
|
22
15
|
|
|
23
16
|
class AsyncAiForceimager(AsyncImageProvider):
|
|
@@ -46,8 +39,6 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
46
39
|
AVAILABLE_MODELS = [
|
|
47
40
|
"stable-diffusion-xl-lightning",
|
|
48
41
|
"stable-diffusion-xl-base",
|
|
49
|
-
"Flux-1.1-Pro",
|
|
50
|
-
"ideogram",
|
|
51
42
|
"flux",
|
|
52
43
|
"flux-realism",
|
|
53
44
|
"flux-anime",
|
|
@@ -58,13 +49,12 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
58
49
|
"any-dark"
|
|
59
50
|
]
|
|
60
51
|
|
|
61
|
-
def __init__(self, timeout: int = 60, proxies: dict = {}
|
|
52
|
+
def __init__(self, timeout: int = 60, proxies: dict = {}):
|
|
62
53
|
"""Initialize your async AiForce provider with custom settings! ⚙️
|
|
63
54
|
|
|
64
55
|
Args:
|
|
65
56
|
timeout (int): Request timeout in seconds (default: 60)
|
|
66
57
|
proxies (dict): Proxy settings for requests (default: {})
|
|
67
|
-
logging (bool): Enable fire logging (default: True)
|
|
68
58
|
"""
|
|
69
59
|
self.api_endpoint = "https://api.airforce/imagine2"
|
|
70
60
|
self.headers = {
|
|
@@ -77,16 +67,13 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
77
67
|
self.proxies = proxies
|
|
78
68
|
self.prompt: str = "AI-generated image - webscout"
|
|
79
69
|
self.image_extension: str = "png"
|
|
80
|
-
self.logging = logging
|
|
81
|
-
if self.logging:
|
|
82
|
-
logger.info("AsyncAiForce provider initialized! 🚀")
|
|
83
70
|
|
|
84
71
|
async def generate(
|
|
85
72
|
self,
|
|
86
73
|
prompt: str,
|
|
87
74
|
amount: int = 1,
|
|
88
75
|
additives: bool = True,
|
|
89
|
-
model: str = "
|
|
76
|
+
model: str = "flux-3d",
|
|
90
77
|
width: int = 768,
|
|
91
78
|
height: int = 768,
|
|
92
79
|
seed: Optional[int] = None,
|
|
@@ -104,7 +91,7 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
104
91
|
... images = await provider.generate(
|
|
105
92
|
... prompt="Epic dragon",
|
|
106
93
|
... amount=3,
|
|
107
|
-
... model="
|
|
94
|
+
... model="flux-3d"
|
|
108
95
|
... )
|
|
109
96
|
|
|
110
97
|
Args:
|
|
@@ -143,9 +130,6 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
143
130
|
self.prompt = prompt
|
|
144
131
|
response = []
|
|
145
132
|
|
|
146
|
-
if self.logging:
|
|
147
|
-
logger.info(f"Generating {amount} images with {model}... 🎨")
|
|
148
|
-
|
|
149
133
|
async with aiohttp.ClientSession(headers=self.headers) as session:
|
|
150
134
|
for i in range(amount):
|
|
151
135
|
url = f"{self.api_endpoint}?model={model}&prompt={prompt}&size={width}:{height}"
|
|
@@ -157,21 +141,13 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
157
141
|
async with session.get(url, timeout=self.timeout, proxy=self.proxies.get('http')) as resp:
|
|
158
142
|
resp.raise_for_status()
|
|
159
143
|
response.append(await resp.read())
|
|
160
|
-
if self.logging:
|
|
161
|
-
logger.success(f"Generated image {i + 1}/{amount}! 🎨")
|
|
162
144
|
break
|
|
163
145
|
except ClientError as e:
|
|
164
146
|
if attempt == max_retries - 1:
|
|
165
|
-
if self.logging:
|
|
166
|
-
logger.error(f"Failed to generate image after {max_retries} attempts: {e} 😢")
|
|
167
147
|
raise
|
|
168
148
|
else:
|
|
169
|
-
if self.logging:
|
|
170
|
-
logger.warning(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds... 🔄")
|
|
171
149
|
await asyncio.sleep(retry_delay)
|
|
172
150
|
|
|
173
|
-
if self.logging:
|
|
174
|
-
logger.success("Images generated successfully! 🎉")
|
|
175
151
|
return response
|
|
176
152
|
|
|
177
153
|
async def save(
|
|
@@ -209,16 +185,11 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
209
185
|
save_dir = dir if dir else os.getcwd()
|
|
210
186
|
if not os.path.exists(save_dir):
|
|
211
187
|
os.makedirs(save_dir)
|
|
212
|
-
if self.logging:
|
|
213
|
-
logger.info(f"Created directory: {save_dir} 📁")
|
|
214
188
|
|
|
215
189
|
name = self.prompt if name is None else name
|
|
216
190
|
saved_paths = []
|
|
217
191
|
timestamp = int(time.time())
|
|
218
192
|
|
|
219
|
-
if self.logging:
|
|
220
|
-
logger.info(f"Saving {len(response)} images... 💾")
|
|
221
|
-
|
|
222
193
|
async def save_single_image(image_bytes: bytes, index: int) -> str:
|
|
223
194
|
filename = f"{filenames_prefix}{name}_{index}.{self.image_extension}"
|
|
224
195
|
filepath = os.path.join(save_dir, filename)
|
|
@@ -228,8 +199,6 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
228
199
|
with open(filepath, "wb") as f:
|
|
229
200
|
f.write(image_bytes)
|
|
230
201
|
|
|
231
|
-
if self.logging:
|
|
232
|
-
logger.success(f"Saved image to: {filepath} 💾")
|
|
233
202
|
return filepath
|
|
234
203
|
|
|
235
204
|
# Handle both List[bytes] and AsyncGenerator
|
|
@@ -240,8 +209,6 @@ class AsyncAiForceimager(AsyncImageProvider):
|
|
|
240
209
|
|
|
241
210
|
tasks = [save_single_image(img, i) for i, img in enumerate(image_list)]
|
|
242
211
|
saved_paths = await asyncio.gather(*tasks)
|
|
243
|
-
if self.logging:
|
|
244
|
-
logger.success(f"Images saved successfully! Check {dir} 🎉")
|
|
245
212
|
return saved_paths
|
|
246
213
|
|
|
247
214
|
if __name__ == "__main__":
|
|
@@ -252,6 +219,6 @@ if __name__ == "__main__":
|
|
|
252
219
|
paths = await bot.save(resp)
|
|
253
220
|
print(paths)
|
|
254
221
|
except Exception as e:
|
|
255
|
-
|
|
222
|
+
print(f"An error occurred: {e}")
|
|
256
223
|
|
|
257
224
|
asyncio.run(main())
|
|
@@ -8,15 +8,10 @@ from requests.exceptions import RequestException
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
|
|
10
10
|
from webscout.AIbase import ImageProvider
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
from webscout.litagent import LitAgent
|
|
13
13
|
|
|
14
|
-
# Initialize our fire logger and agent 🔥
|
|
15
|
-
logger = Logger(
|
|
16
|
-
"AiForce",
|
|
17
|
-
format=LogFormat.MODERN_EMOJI,
|
|
18
14
|
|
|
19
|
-
)
|
|
20
15
|
agent = LitAgent()
|
|
21
16
|
|
|
22
17
|
class AiForceimager(ImageProvider):
|
|
@@ -43,8 +38,6 @@ class AiForceimager(ImageProvider):
|
|
|
43
38
|
AVAILABLE_MODELS = [
|
|
44
39
|
"stable-diffusion-xl-lightning",
|
|
45
40
|
"stable-diffusion-xl-base",
|
|
46
|
-
"Flux-1.1-Pro",
|
|
47
|
-
"ideogram",
|
|
48
41
|
"flux",
|
|
49
42
|
"flux-realism",
|
|
50
43
|
"flux-anime",
|
|
@@ -55,13 +48,12 @@ class AiForceimager(ImageProvider):
|
|
|
55
48
|
"any-dark"
|
|
56
49
|
]
|
|
57
50
|
|
|
58
|
-
def __init__(self, timeout: int = 60, proxies: dict = {}
|
|
51
|
+
def __init__(self, timeout: int = 60, proxies: dict = {}):
|
|
59
52
|
"""Initialize your AiForce provider with custom settings! ⚙️
|
|
60
53
|
|
|
61
54
|
Args:
|
|
62
55
|
timeout (int): Request timeout in seconds (default: 60)
|
|
63
56
|
proxies (dict): Proxy settings for requests (default: {})
|
|
64
|
-
logging (bool): Enable fire logging (default: True)
|
|
65
57
|
"""
|
|
66
58
|
self.api_endpoint = "https://api.airforce/imagine2"
|
|
67
59
|
self.headers = {
|
|
@@ -76,16 +68,14 @@ class AiForceimager(ImageProvider):
|
|
|
76
68
|
self.timeout = timeout
|
|
77
69
|
self.prompt: str = "AI-generated image - webscout"
|
|
78
70
|
self.image_extension: str = "png"
|
|
79
|
-
|
|
80
|
-
if self.logging:
|
|
81
|
-
logger.info("AiForce provider initialized! 🚀")
|
|
71
|
+
|
|
82
72
|
|
|
83
73
|
def generate(
|
|
84
74
|
self,
|
|
85
75
|
prompt: str,
|
|
86
76
|
amount: int = 1,
|
|
87
77
|
additives: bool = True,
|
|
88
|
-
model: str = "
|
|
78
|
+
model: str = "flux-3d",
|
|
89
79
|
width: int = 768,
|
|
90
80
|
height: int = 768,
|
|
91
81
|
seed: Optional[int] = None,
|
|
@@ -139,8 +129,6 @@ class AiForceimager(ImageProvider):
|
|
|
139
129
|
)
|
|
140
130
|
|
|
141
131
|
self.prompt = prompt
|
|
142
|
-
if self.logging:
|
|
143
|
-
logger.info(f"Generating {amount} images with {model}... 🎨")
|
|
144
132
|
response = []
|
|
145
133
|
for _ in range(amount):
|
|
146
134
|
url = f"{self.api_endpoint}?model={model}&prompt={prompt}&size={width}:{height}"
|
|
@@ -152,21 +140,13 @@ class AiForceimager(ImageProvider):
|
|
|
152
140
|
resp = self.session.get(url, timeout=self.timeout)
|
|
153
141
|
resp.raise_for_status()
|
|
154
142
|
response.append(resp.content)
|
|
155
|
-
if self.logging:
|
|
156
|
-
logger.success(f"Generated image {_ + 1}/{amount}! 🎨")
|
|
157
143
|
break
|
|
158
144
|
except RequestException as e:
|
|
159
145
|
if attempt == max_retries - 1:
|
|
160
|
-
if self.logging:
|
|
161
|
-
logger.error(f"Failed to generate image after {max_retries} attempts: {e} 😢")
|
|
162
146
|
raise
|
|
163
147
|
else:
|
|
164
|
-
if self.logging:
|
|
165
|
-
logger.warning(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds... 🔄")
|
|
166
148
|
time.sleep(retry_delay)
|
|
167
149
|
|
|
168
|
-
if self.logging:
|
|
169
|
-
logger.success("Images generated successfully! 🎉")
|
|
170
150
|
return response
|
|
171
151
|
|
|
172
152
|
def save(
|
|
@@ -203,12 +183,8 @@ class AiForceimager(ImageProvider):
|
|
|
203
183
|
save_dir = dir if dir else os.getcwd()
|
|
204
184
|
if not os.path.exists(save_dir):
|
|
205
185
|
os.makedirs(save_dir)
|
|
206
|
-
if self.logging:
|
|
207
|
-
logger.info(f"Created directory: {save_dir} 📁")
|
|
208
186
|
|
|
209
187
|
name = self.prompt if name is None else name
|
|
210
|
-
if self.logging:
|
|
211
|
-
logger.info(f"Saving {len(response)} images... 💾")
|
|
212
188
|
filenames = []
|
|
213
189
|
count = 0
|
|
214
190
|
|
|
@@ -225,18 +201,45 @@ class AiForceimager(ImageProvider):
|
|
|
225
201
|
|
|
226
202
|
with open(absolute_path_to_file, "wb") as fh:
|
|
227
203
|
fh.write(image)
|
|
228
|
-
if self.logging:
|
|
229
|
-
logger.success(f"Saved image to: {absolute_path_to_file} 💾")
|
|
230
204
|
|
|
231
|
-
if self.logging:
|
|
232
|
-
logger.success(f"Images saved successfully! Check {dir} 🎉")
|
|
233
205
|
return filenames
|
|
234
206
|
|
|
235
207
|
if __name__ == "__main__":
|
|
236
208
|
bot = AiForceimager()
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
209
|
+
test_prompt = "A shiny red sports car speeding down a scenic mountain road"
|
|
210
|
+
|
|
211
|
+
print(f"Testing all available models with prompt: '{test_prompt}'")
|
|
212
|
+
print("-" * 50)
|
|
213
|
+
|
|
214
|
+
# Create a directory for test images if it doesn't exist
|
|
215
|
+
test_dir = "model_test_images"
|
|
216
|
+
if not os.path.exists(test_dir):
|
|
217
|
+
os.makedirs(test_dir)
|
|
218
|
+
|
|
219
|
+
for model in bot.AVAILABLE_MODELS:
|
|
220
|
+
print(f"Testing model: {model}")
|
|
221
|
+
try:
|
|
222
|
+
# Generate an image with the current model
|
|
223
|
+
resp = bot.generate(
|
|
224
|
+
prompt=test_prompt,
|
|
225
|
+
amount=1,
|
|
226
|
+
model=model,
|
|
227
|
+
width=768,
|
|
228
|
+
height=768
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
# Save the image with model name as prefix
|
|
232
|
+
saved_paths = bot.save(
|
|
233
|
+
resp,
|
|
234
|
+
name=f"{model}_test",
|
|
235
|
+
dir=test_dir,
|
|
236
|
+
filenames_prefix=f"{model}_"
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
print(f"✓ Success! Saved image: {saved_paths[0]}")
|
|
240
|
+
except Exception as e:
|
|
241
|
+
print(f"✗ Failed with model {model}: {str(e)}")
|
|
242
|
+
|
|
243
|
+
print("-" * 30)
|
|
244
|
+
|
|
245
|
+
print("All model tests completed!")
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"""
|
|
2
|
-
FreeAI Provider Package
|
|
3
|
-
Provides access to various AI models for image generation including DALL-E 3 and Flux models
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from .sync_freeaiplayground import FreeAIImager
|
|
7
|
-
from .async_freeaiplayground import AsyncFreeAIImager
|
|
8
|
-
|
|
9
|
-
__all__ = ['FreeAIImager', 'AsyncFreeAIImager']
|
|
1
|
+
"""
|
|
2
|
+
FreeAI Provider Package
|
|
3
|
+
Provides access to various AI models for image generation including DALL-E 3 and Flux models
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .sync_freeaiplayground import FreeAIImager
|
|
7
|
+
from .async_freeaiplayground import AsyncFreeAIImager
|
|
8
|
+
|
|
9
|
+
__all__ = ['FreeAIImager', 'AsyncFreeAIImager']
|