webscout 8.2.8__py3-none-any.whl → 8.3__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 (197) hide show
  1. webscout/AIauto.py +34 -16
  2. webscout/AIbase.py +96 -37
  3. webscout/AIutel.py +491 -87
  4. webscout/Bard.py +441 -323
  5. webscout/Extra/GitToolkit/__init__.py +10 -10
  6. webscout/Extra/YTToolkit/ytapi/video.py +232 -232
  7. webscout/Litlogger/README.md +10 -0
  8. webscout/Litlogger/__init__.py +7 -59
  9. webscout/Litlogger/formats.py +4 -0
  10. webscout/Litlogger/handlers.py +103 -0
  11. webscout/Litlogger/levels.py +13 -0
  12. webscout/Litlogger/logger.py +92 -0
  13. webscout/Provider/AISEARCH/Perplexity.py +332 -358
  14. webscout/Provider/AISEARCH/felo_search.py +9 -35
  15. webscout/Provider/AISEARCH/genspark_search.py +30 -56
  16. webscout/Provider/AISEARCH/hika_search.py +4 -16
  17. webscout/Provider/AISEARCH/iask_search.py +410 -436
  18. webscout/Provider/AISEARCH/monica_search.py +4 -30
  19. webscout/Provider/AISEARCH/scira_search.py +6 -32
  20. webscout/Provider/AISEARCH/webpilotai_search.py +38 -64
  21. webscout/Provider/Blackboxai.py +155 -35
  22. webscout/Provider/ChatSandbox.py +2 -1
  23. webscout/Provider/Deepinfra.py +339 -339
  24. webscout/Provider/ExaChat.py +358 -358
  25. webscout/Provider/Gemini.py +169 -169
  26. webscout/Provider/GithubChat.py +1 -2
  27. webscout/Provider/Glider.py +3 -3
  28. webscout/Provider/HeckAI.py +172 -82
  29. webscout/Provider/LambdaChat.py +1 -0
  30. webscout/Provider/MCPCore.py +7 -3
  31. webscout/Provider/OPENAI/BLACKBOXAI.py +421 -139
  32. webscout/Provider/OPENAI/Cloudflare.py +38 -21
  33. webscout/Provider/OPENAI/FalconH1.py +457 -0
  34. webscout/Provider/OPENAI/FreeGemini.py +35 -18
  35. webscout/Provider/OPENAI/NEMOTRON.py +34 -34
  36. webscout/Provider/OPENAI/PI.py +427 -0
  37. webscout/Provider/OPENAI/Qwen3.py +304 -0
  38. webscout/Provider/OPENAI/README.md +952 -1253
  39. webscout/Provider/OPENAI/TwoAI.py +374 -0
  40. webscout/Provider/OPENAI/__init__.py +7 -1
  41. webscout/Provider/OPENAI/ai4chat.py +73 -63
  42. webscout/Provider/OPENAI/api.py +869 -644
  43. webscout/Provider/OPENAI/base.py +2 -0
  44. webscout/Provider/OPENAI/c4ai.py +34 -13
  45. webscout/Provider/OPENAI/chatgpt.py +575 -556
  46. webscout/Provider/OPENAI/chatgptclone.py +512 -487
  47. webscout/Provider/OPENAI/chatsandbox.py +11 -6
  48. webscout/Provider/OPENAI/copilot.py +258 -0
  49. webscout/Provider/OPENAI/deepinfra.py +327 -318
  50. webscout/Provider/OPENAI/e2b.py +140 -104
  51. webscout/Provider/OPENAI/exaai.py +420 -411
  52. webscout/Provider/OPENAI/exachat.py +448 -443
  53. webscout/Provider/OPENAI/flowith.py +7 -3
  54. webscout/Provider/OPENAI/freeaichat.py +12 -8
  55. webscout/Provider/OPENAI/glider.py +15 -8
  56. webscout/Provider/OPENAI/groq.py +5 -2
  57. webscout/Provider/OPENAI/heckai.py +311 -307
  58. webscout/Provider/OPENAI/llmchatco.py +9 -7
  59. webscout/Provider/OPENAI/mcpcore.py +18 -9
  60. webscout/Provider/OPENAI/multichat.py +7 -5
  61. webscout/Provider/OPENAI/netwrck.py +16 -11
  62. webscout/Provider/OPENAI/oivscode.py +290 -0
  63. webscout/Provider/OPENAI/opkfc.py +507 -496
  64. webscout/Provider/OPENAI/pydantic_imports.py +172 -0
  65. webscout/Provider/OPENAI/scirachat.py +29 -17
  66. webscout/Provider/OPENAI/sonus.py +308 -303
  67. webscout/Provider/OPENAI/standardinput.py +442 -433
  68. webscout/Provider/OPENAI/textpollinations.py +18 -11
  69. webscout/Provider/OPENAI/toolbaz.py +419 -413
  70. webscout/Provider/OPENAI/typefully.py +17 -10
  71. webscout/Provider/OPENAI/typegpt.py +21 -11
  72. webscout/Provider/OPENAI/uncovrAI.py +477 -462
  73. webscout/Provider/OPENAI/utils.py +90 -79
  74. webscout/Provider/OPENAI/venice.py +435 -425
  75. webscout/Provider/OPENAI/wisecat.py +387 -381
  76. webscout/Provider/OPENAI/writecream.py +166 -163
  77. webscout/Provider/OPENAI/x0gpt.py +26 -37
  78. webscout/Provider/OPENAI/yep.py +384 -356
  79. webscout/Provider/PI.py +2 -1
  80. webscout/Provider/TTI/README.md +55 -101
  81. webscout/Provider/TTI/__init__.py +4 -9
  82. webscout/Provider/TTI/aiarta.py +365 -0
  83. webscout/Provider/TTI/artbit.py +0 -0
  84. webscout/Provider/TTI/base.py +64 -0
  85. webscout/Provider/TTI/fastflux.py +200 -0
  86. webscout/Provider/TTI/magicstudio.py +201 -0
  87. webscout/Provider/TTI/piclumen.py +203 -0
  88. webscout/Provider/TTI/pixelmuse.py +225 -0
  89. webscout/Provider/TTI/pollinations.py +221 -0
  90. webscout/Provider/TTI/utils.py +11 -0
  91. webscout/Provider/TTS/__init__.py +2 -1
  92. webscout/Provider/TTS/base.py +159 -159
  93. webscout/Provider/TTS/openai_fm.py +129 -0
  94. webscout/Provider/TextPollinationsAI.py +308 -308
  95. webscout/Provider/TwoAI.py +239 -44
  96. webscout/Provider/UNFINISHED/Youchat.py +330 -330
  97. webscout/Provider/UNFINISHED/puterjs.py +635 -0
  98. webscout/Provider/UNFINISHED/test_lmarena.py +119 -119
  99. webscout/Provider/Writecream.py +246 -246
  100. webscout/Provider/__init__.py +2 -2
  101. webscout/Provider/ai4chat.py +33 -8
  102. webscout/Provider/granite.py +41 -6
  103. webscout/Provider/koala.py +169 -169
  104. webscout/Provider/oivscode.py +309 -0
  105. webscout/Provider/samurai.py +3 -2
  106. webscout/Provider/scnet.py +1 -0
  107. webscout/Provider/typegpt.py +3 -3
  108. webscout/Provider/uncovr.py +368 -368
  109. webscout/client.py +70 -0
  110. webscout/litprinter/__init__.py +58 -58
  111. webscout/optimizers.py +419 -419
  112. webscout/scout/README.md +3 -1
  113. webscout/scout/core/crawler.py +134 -64
  114. webscout/scout/core/scout.py +148 -109
  115. webscout/scout/element.py +106 -88
  116. webscout/swiftcli/Readme.md +323 -323
  117. webscout/swiftcli/plugins/manager.py +9 -2
  118. webscout/version.py +1 -1
  119. webscout/zeroart/__init__.py +134 -134
  120. webscout/zeroart/effects.py +100 -100
  121. webscout/zeroart/fonts.py +1238 -1238
  122. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/METADATA +160 -35
  123. webscout-8.3.dist-info/RECORD +290 -0
  124. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/WHEEL +1 -1
  125. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/entry_points.txt +1 -0
  126. webscout/Litlogger/Readme.md +0 -175
  127. webscout/Litlogger/core/__init__.py +0 -6
  128. webscout/Litlogger/core/level.py +0 -23
  129. webscout/Litlogger/core/logger.py +0 -165
  130. webscout/Litlogger/handlers/__init__.py +0 -12
  131. webscout/Litlogger/handlers/console.py +0 -33
  132. webscout/Litlogger/handlers/file.py +0 -143
  133. webscout/Litlogger/handlers/network.py +0 -173
  134. webscout/Litlogger/styles/__init__.py +0 -7
  135. webscout/Litlogger/styles/colors.py +0 -249
  136. webscout/Litlogger/styles/formats.py +0 -458
  137. webscout/Litlogger/styles/text.py +0 -87
  138. webscout/Litlogger/utils/__init__.py +0 -6
  139. webscout/Litlogger/utils/detectors.py +0 -153
  140. webscout/Litlogger/utils/formatters.py +0 -200
  141. webscout/Provider/ChatGPTGratis.py +0 -194
  142. webscout/Provider/TTI/AiForce/README.md +0 -159
  143. webscout/Provider/TTI/AiForce/__init__.py +0 -22
  144. webscout/Provider/TTI/AiForce/async_aiforce.py +0 -224
  145. webscout/Provider/TTI/AiForce/sync_aiforce.py +0 -245
  146. webscout/Provider/TTI/FreeAIPlayground/README.md +0 -99
  147. webscout/Provider/TTI/FreeAIPlayground/__init__.py +0 -9
  148. webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +0 -181
  149. webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +0 -180
  150. webscout/Provider/TTI/ImgSys/README.md +0 -174
  151. webscout/Provider/TTI/ImgSys/__init__.py +0 -23
  152. webscout/Provider/TTI/ImgSys/async_imgsys.py +0 -202
  153. webscout/Provider/TTI/ImgSys/sync_imgsys.py +0 -195
  154. webscout/Provider/TTI/MagicStudio/README.md +0 -101
  155. webscout/Provider/TTI/MagicStudio/__init__.py +0 -2
  156. webscout/Provider/TTI/MagicStudio/async_magicstudio.py +0 -111
  157. webscout/Provider/TTI/MagicStudio/sync_magicstudio.py +0 -109
  158. webscout/Provider/TTI/Nexra/README.md +0 -155
  159. webscout/Provider/TTI/Nexra/__init__.py +0 -22
  160. webscout/Provider/TTI/Nexra/async_nexra.py +0 -286
  161. webscout/Provider/TTI/Nexra/sync_nexra.py +0 -258
  162. webscout/Provider/TTI/PollinationsAI/README.md +0 -146
  163. webscout/Provider/TTI/PollinationsAI/__init__.py +0 -23
  164. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +0 -311
  165. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +0 -265
  166. webscout/Provider/TTI/aiarta/README.md +0 -134
  167. webscout/Provider/TTI/aiarta/__init__.py +0 -2
  168. webscout/Provider/TTI/aiarta/async_aiarta.py +0 -482
  169. webscout/Provider/TTI/aiarta/sync_aiarta.py +0 -440
  170. webscout/Provider/TTI/artbit/README.md +0 -100
  171. webscout/Provider/TTI/artbit/__init__.py +0 -22
  172. webscout/Provider/TTI/artbit/async_artbit.py +0 -155
  173. webscout/Provider/TTI/artbit/sync_artbit.py +0 -148
  174. webscout/Provider/TTI/fastflux/README.md +0 -129
  175. webscout/Provider/TTI/fastflux/__init__.py +0 -22
  176. webscout/Provider/TTI/fastflux/async_fastflux.py +0 -261
  177. webscout/Provider/TTI/fastflux/sync_fastflux.py +0 -252
  178. webscout/Provider/TTI/huggingface/README.md +0 -114
  179. webscout/Provider/TTI/huggingface/__init__.py +0 -22
  180. webscout/Provider/TTI/huggingface/async_huggingface.py +0 -199
  181. webscout/Provider/TTI/huggingface/sync_huggingface.py +0 -195
  182. webscout/Provider/TTI/piclumen/README.md +0 -161
  183. webscout/Provider/TTI/piclumen/__init__.py +0 -23
  184. webscout/Provider/TTI/piclumen/async_piclumen.py +0 -268
  185. webscout/Provider/TTI/piclumen/sync_piclumen.py +0 -233
  186. webscout/Provider/TTI/pixelmuse/README.md +0 -79
  187. webscout/Provider/TTI/pixelmuse/__init__.py +0 -4
  188. webscout/Provider/TTI/pixelmuse/async_pixelmuse.py +0 -249
  189. webscout/Provider/TTI/pixelmuse/sync_pixelmuse.py +0 -182
  190. webscout/Provider/TTI/talkai/README.md +0 -139
  191. webscout/Provider/TTI/talkai/__init__.py +0 -4
  192. webscout/Provider/TTI/talkai/async_talkai.py +0 -229
  193. webscout/Provider/TTI/talkai/sync_talkai.py +0 -207
  194. webscout/Provider/UNFINISHED/oivscode.py +0 -351
  195. webscout-8.2.8.dist-info/RECORD +0 -334
  196. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/licenses/LICENSE.md +0 -0
  197. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/top_level.txt +0 -0
webscout/optimizers.py CHANGED
@@ -1,420 +1,420 @@
1
- """Prompt optimization utilities."""
2
-
3
- import os
4
- import platform
5
- import subprocess
6
- from typing import Optional
7
- class Optimizers:
8
- """
9
- >>> Optimizers.code("write a hello world")
10
- Returns optimized prompt for code generation
11
-
12
- >>> Optimizers.shell_command("list files")
13
- Returns optimized prompt for shell commands
14
-
15
- >>> Optimizers.search("best pizza places")
16
- Returns optimized prompt for web search
17
-
18
- >>> Optimizers.math("solve quadratic equation")
19
- Returns optimized prompt for math problems
20
- """
21
- @staticmethod
22
- def code(prompt: str) -> str:
23
- """Deprecated: Use coder() instead"""
24
- return Optimizers.coder(prompt)
25
-
26
- @staticmethod
27
- def shell_command(prompt: str) -> str:
28
- """Deprecated: Use coder() instead"""
29
- return Optimizers.coder(f"!{prompt}")
30
-
31
- @staticmethod
32
- def coder(prompt: str) -> str:
33
- """Unified optimizer for both code and shell commands."""
34
- # Get system info for shell commands
35
- operating_system: str = ""
36
- if platform.system() == "Windows":
37
- operating_system = "Windows"
38
- elif platform.system() == "Darwin":
39
- operating_system = "MacOS"
40
- elif platform.system() == "Linux":
41
- try:
42
- result: str = subprocess.check_output(["lsb_release", "-si"]).decode().strip()
43
- operating_system = f"Linux/{result}" if result else "Linux"
44
- except Exception:
45
- operating_system = "Linux"
46
- else:
47
- operating_system = platform.system()
48
-
49
- # Get shell info
50
- shell_name: str = "/bin/sh"
51
- if platform.system() == "Windows":
52
- shell_name = "powershell.exe" if os.getenv("PSModulePath") else "cmd.exe"
53
- else:
54
- shell_env: Optional[str] = os.getenv("SHELL")
55
- if shell_env:
56
- shell_name = shell_env
57
-
58
- return (
59
- f"""<system_context>
60
- <role>
61
- Your Role: You are a code generation expert. Analyze the request and provide appropriate output.
62
- If the request starts with '!' or involves system/shell operations, provide a shell command.
63
- Otherwise, provide Python code.
64
- </role>
65
- <rules>
66
- RULES:
67
- - Provide ONLY code/command output without any description or markdown
68
- - For shell commands:
69
- - Target OS: {operating_system}
70
- - Shell: {shell_name}
71
- - Combine multiple steps when possible
72
- - For Python code:
73
- - Include necessary imports
74
- - Handle errors appropriately
75
- - Follow PEP 8 style
76
- - If details are missing, use most logical implementation
77
- - No warnings, descriptions, or explanations
78
- </rules>
79
- <request>
80
- Request: {prompt}
81
- </request>
82
- <output>
83
- Output:
84
- </output>
85
- </system_context>"""
86
- )
87
-
88
- @staticmethod
89
- def search(prompt: str) -> str:
90
- """Optimize prompt for web search queries."""
91
- return f"""
92
- <system_context>
93
- <role>
94
- Your role: Generate a precise and focused web search query.
95
- </role>
96
- <instructions>
97
- IMPORTANT: Return only the search query without any explanation.
98
- Format: Plain text, no markdown.
99
- If details are missing, focus on the most relevant aspects.
100
- </instructions>
101
- <request>
102
- Request: {prompt}
103
- </request>
104
- <output>
105
- Search Query:
106
- </output>
107
- </system_context>
108
- """
109
-
110
- @staticmethod
111
- def math(prompt: str) -> str:
112
- """Optimize prompt for mathematical problem solving."""
113
- return f"""
114
- <system_context>
115
- <role>
116
- Your role: Solve mathematical problems step by step.
117
- </role>
118
- <instructions>
119
- Format: Plain text, show calculations clearly.
120
- Show all steps and intermediate results.
121
- Include units where applicable.
122
- Provide final answer in a clear format.
123
- </instructions>
124
- <request>
125
- Problem: {prompt}
126
- </request>
127
- <output>
128
- Solution:
129
- </output>
130
- </system_context>
131
- """
132
-
133
- @staticmethod
134
- def explain(prompt: str) -> str:
135
- """Optimize prompt for clear explanations."""
136
- return f"""
137
- <system_context>
138
- <role>
139
- Your role: Explain concepts clearly and concisely.
140
- </role>
141
- <instructions>
142
- Format: Break down complex ideas into simple terms.
143
- Use analogies where helpful.
144
- Focus on key points and practical understanding.
145
- </instructions>
146
- <request>
147
- Topic: {prompt}
148
- </request>
149
- <output>
150
- Explanation:
151
- </output>
152
- </system_context>
153
- """
154
-
155
- @staticmethod
156
- def debug(prompt: str) -> str:
157
- """Optimize prompt for debugging code."""
158
- return f"""
159
- <system_context>
160
- <role>
161
- Your role: Debug code and identify issues.
162
- </role>
163
- <instructions>
164
- Steps:
165
- - Identify syntax errors
166
- - Check logic issues
167
- - Look for common pitfalls
168
- - Suggest fixes
169
- </instructions>
170
- <request>
171
- Code to debug: {prompt}
172
- </request>
173
- <output>
174
- Analysis:
175
- </output>
176
- </system_context>
177
- """
178
-
179
- @staticmethod
180
- def api(prompt: str) -> str:
181
- """Optimize prompt for API endpoint design."""
182
- return f"""
183
- <system_context>
184
- <role>
185
- Your role: Design RESTful API endpoints.
186
- </role>
187
- <instructions>
188
- Include:
189
- - HTTP methods
190
- - URL structure
191
- - Request/Response format
192
- - Status codes
193
- </instructions>
194
- <request>
195
- API requirement: {prompt}
196
- </request>
197
- <output>
198
- Design:
199
- </output>
200
- </system_context>
201
- """
202
-
203
- @staticmethod
204
- def sql(prompt: str) -> str:
205
- """Optimize prompt for SQL query generation."""
206
- return f"""
207
- <system_context>
208
- <role>
209
- Your role: Generate optimized SQL queries.
210
- </role>
211
- <instructions>
212
- Requirements:
213
- - Standard SQL syntax
214
- - Efficient query structure
215
- - Proper joins and indexing
216
- - Consider performance
217
- </instructions>
218
- <request>
219
- Query need: {prompt}
220
- </request>
221
- <output>
222
- SQL:
223
- </output>
224
- </system_context>
225
- """
226
-
227
- @staticmethod
228
- def regex(prompt: str) -> str:
229
- """Optimize prompt for regex pattern generation."""
230
- return f"""
231
- <system_context>
232
- <role>
233
- Your role: Generate precise regex patterns.
234
- </role>
235
- <instructions>
236
- Requirements:
237
- - Standard regex syntax
238
- - Pattern explanation
239
- - Test cases
240
- - Consider edge cases
241
- </instructions>
242
- <request>
243
- Pattern need: {prompt}
244
- </request>
245
- <output>
246
- Regex:
247
- </output>
248
- </system_context>
249
- """
250
-
251
- @staticmethod
252
- def test(prompt: str) -> str:
253
- """Optimize prompt for test case generation."""
254
- return f"""
255
- <system_context>
256
- <role>
257
- Your role: Generate comprehensive test cases.
258
- </role>
259
- <instructions>
260
- Include:
261
- - Edge cases
262
- - Corner cases
263
- - Error scenarios
264
- - Happy path
265
- Format: Test name and expected result
266
- </instructions>
267
- <request>
268
- Test requirement: {prompt}
269
- </request>
270
- <output>
271
- Test Cases:
272
- </output>
273
- </system_context>
274
- """
275
-
276
- @staticmethod
277
- def docker(prompt: str) -> str:
278
- """Optimize prompt for Dockerfile creation."""
279
- return f"""
280
- <system_context>
281
- <role>
282
- Your role: Create efficient Dockerfile.
283
- </role>
284
- <instructions>
285
- Consider:
286
- - Base image selection
287
- - Layer optimization
288
- - Security best practices
289
- - Multi-stage builds if needed
290
- </instructions>
291
- <request>
292
- Container requirement: {prompt}
293
- </request>
294
- <output>
295
- Dockerfile:
296
- </output>
297
- </system_context>
298
- """
299
-
300
- @staticmethod
301
- def git(prompt: str) -> str:
302
- """Optimize prompt for git commands."""
303
- return f"""
304
- <system_context>
305
- <role>
306
- Your role: Generate git commands.
307
- </role>
308
- <instructions>
309
- Requirements:
310
- - Clear and safe commands
311
- - Consider current state
312
- - Include safety checks
313
- - Best practices
314
- </instructions>
315
- <request>
316
- Git task: {prompt}
317
- </request>
318
- <output>
319
- Command:
320
- </output>
321
- </system_context>
322
- """
323
-
324
- @staticmethod
325
- def yaml(prompt: str) -> str:
326
- """Optimize prompt for YAML configuration."""
327
- return f"""
328
- <system_context>
329
- <role>
330
- Your role: Generate YAML configuration.
331
- </role>
332
- <instructions>
333
- Requirements:
334
- - Valid YAML syntax
335
- - Clear structure
336
- - Comments for complex parts
337
- - Best practices
338
- </instructions>
339
- <request>
340
- Config need: {prompt}
341
- </request>
342
- <output>
343
- YAML:
344
- </output>
345
- </system_context>
346
- """
347
-
348
- @staticmethod
349
- def cli(prompt: str) -> str:
350
- """Optimize prompt for CLI command design."""
351
- return f"""
352
- <system_context>
353
- <role>
354
- Your role: Design CLI commands.
355
- </role>
356
- <instructions>
357
- Include:
358
- - Command structure
359
- - Arguments/options
360
- - Help messages
361
- - Examples
362
- </instructions>
363
- <request>
364
- CLI requirement: {prompt}
365
- </request>
366
- <output>
367
- Design:
368
- </output>
369
- </system_context>
370
- """
371
-
372
- @staticmethod
373
- def refactor(prompt: str) -> str:
374
- """Optimize prompt for code refactoring suggestions."""
375
- return f"""
376
- <system_context>
377
- <role>
378
- Your role: Suggest code improvements.
379
- </role>
380
- <instructions>
381
- Focus on:
382
- - Code quality
383
- - Performance
384
- - Readability
385
- - Best practices
386
- - Design patterns
387
- </instructions>
388
- <request>
389
- Code to refactor: {prompt}
390
- </request>
391
- <output>
392
- Suggestions:
393
- </output>
394
- </system_context>
395
- """
396
-
397
- @staticmethod
398
- def security(prompt: str) -> str:
399
- """Optimize prompt for security analysis."""
400
- return f"""
401
- <system_context>
402
- <role>
403
- Your role: Security analysis and fixes.
404
- </role>
405
- <instructions>
406
- Check for:
407
- - Common vulnerabilities
408
- - Security best practices
409
- - Input validation
410
- - Authentication/Authorization
411
- - Data protection
412
- </instructions>
413
- <request>
414
- Code to analyze: {prompt}
415
- </request>
416
- <output>
417
- Analysis:
418
- </output>
419
- </system_context>
1
+ """Prompt optimization utilities."""
2
+
3
+ import os
4
+ import platform
5
+ import subprocess
6
+ from typing import Optional
7
+ class Optimizers:
8
+ """
9
+ >>> Optimizers.code("write a hello world")
10
+ Returns optimized prompt for code generation
11
+
12
+ >>> Optimizers.shell_command("list files")
13
+ Returns optimized prompt for shell commands
14
+
15
+ >>> Optimizers.search("best pizza places")
16
+ Returns optimized prompt for web search
17
+
18
+ >>> Optimizers.math("solve quadratic equation")
19
+ Returns optimized prompt for math problems
20
+ """
21
+ @staticmethod
22
+ def code(prompt: str) -> str:
23
+ """Deprecated: Use coder() instead"""
24
+ return Optimizers.coder(prompt)
25
+
26
+ @staticmethod
27
+ def shell_command(prompt: str) -> str:
28
+ """Deprecated: Use coder() instead"""
29
+ return Optimizers.coder(f"!{prompt}")
30
+
31
+ @staticmethod
32
+ def coder(prompt: str) -> str:
33
+ """Unified optimizer for both code and shell commands."""
34
+ # Get system info for shell commands
35
+ operating_system: str = ""
36
+ if platform.system() == "Windows":
37
+ operating_system = "Windows"
38
+ elif platform.system() == "Darwin":
39
+ operating_system = "MacOS"
40
+ elif platform.system() == "Linux":
41
+ try:
42
+ result: str = subprocess.check_output(["lsb_release", "-si"]).decode().strip()
43
+ operating_system = f"Linux/{result}" if result else "Linux"
44
+ except Exception:
45
+ operating_system = "Linux"
46
+ else:
47
+ operating_system = platform.system()
48
+
49
+ # Get shell info
50
+ shell_name: str = "/bin/sh"
51
+ if platform.system() == "Windows":
52
+ shell_name = "powershell.exe" if os.getenv("PSModulePath") else "cmd.exe"
53
+ else:
54
+ shell_env: Optional[str] = os.getenv("SHELL")
55
+ if shell_env:
56
+ shell_name = shell_env
57
+
58
+ return (
59
+ f"""<system_context>
60
+ <role>
61
+ Your Role: You are a code generation expert. Analyze the request and provide appropriate output.
62
+ If the request starts with '!' or involves system/shell operations, provide a shell command.
63
+ Otherwise, provide Python code.
64
+ </role>
65
+ <rules>
66
+ RULES:
67
+ - Provide ONLY code/command output without any description or markdown
68
+ - For shell commands:
69
+ - Target OS: {operating_system}
70
+ - Shell: {shell_name}
71
+ - Combine multiple steps when possible
72
+ - For Python code:
73
+ - Include necessary imports
74
+ - Handle errors appropriately
75
+ - Follow PEP 8 style
76
+ - If details are missing, use most logical implementation
77
+ - No warnings, descriptions, or explanations
78
+ </rules>
79
+ <request>
80
+ Request: {prompt}
81
+ </request>
82
+ <output>
83
+ Output:
84
+ </output>
85
+ </system_context>"""
86
+ )
87
+
88
+ @staticmethod
89
+ def search(prompt: str) -> str:
90
+ """Optimize prompt for web search queries."""
91
+ return f"""
92
+ <system_context>
93
+ <role>
94
+ Your role: Generate a precise and focused web search query.
95
+ </role>
96
+ <instructions>
97
+ IMPORTANT: Return only the search query without any explanation.
98
+ Format: Plain text, no markdown.
99
+ If details are missing, focus on the most relevant aspects.
100
+ </instructions>
101
+ <request>
102
+ Request: {prompt}
103
+ </request>
104
+ <output>
105
+ Search Query:
106
+ </output>
107
+ </system_context>
108
+ """
109
+
110
+ @staticmethod
111
+ def math(prompt: str) -> str:
112
+ """Optimize prompt for mathematical problem solving."""
113
+ return f"""
114
+ <system_context>
115
+ <role>
116
+ Your role: Solve mathematical problems step by step.
117
+ </role>
118
+ <instructions>
119
+ Format: Plain text, show calculations clearly.
120
+ Show all steps and intermediate results.
121
+ Include units where applicable.
122
+ Provide final answer in a clear format.
123
+ </instructions>
124
+ <request>
125
+ Problem: {prompt}
126
+ </request>
127
+ <output>
128
+ Solution:
129
+ </output>
130
+ </system_context>
131
+ """
132
+
133
+ @staticmethod
134
+ def explain(prompt: str) -> str:
135
+ """Optimize prompt for clear explanations."""
136
+ return f"""
137
+ <system_context>
138
+ <role>
139
+ Your role: Explain concepts clearly and concisely.
140
+ </role>
141
+ <instructions>
142
+ Format: Break down complex ideas into simple terms.
143
+ Use analogies where helpful.
144
+ Focus on key points and practical understanding.
145
+ </instructions>
146
+ <request>
147
+ Topic: {prompt}
148
+ </request>
149
+ <output>
150
+ Explanation:
151
+ </output>
152
+ </system_context>
153
+ """
154
+
155
+ @staticmethod
156
+ def debug(prompt: str) -> str:
157
+ """Optimize prompt for debugging code."""
158
+ return f"""
159
+ <system_context>
160
+ <role>
161
+ Your role: Debug code and identify issues.
162
+ </role>
163
+ <instructions>
164
+ Steps:
165
+ - Identify syntax errors
166
+ - Check logic issues
167
+ - Look for common pitfalls
168
+ - Suggest fixes
169
+ </instructions>
170
+ <request>
171
+ Code to debug: {prompt}
172
+ </request>
173
+ <output>
174
+ Analysis:
175
+ </output>
176
+ </system_context>
177
+ """
178
+
179
+ @staticmethod
180
+ def api(prompt: str) -> str:
181
+ """Optimize prompt for API endpoint design."""
182
+ return f"""
183
+ <system_context>
184
+ <role>
185
+ Your role: Design RESTful API endpoints.
186
+ </role>
187
+ <instructions>
188
+ Include:
189
+ - HTTP methods
190
+ - URL structure
191
+ - Request/Response format
192
+ - Status codes
193
+ </instructions>
194
+ <request>
195
+ API requirement: {prompt}
196
+ </request>
197
+ <output>
198
+ Design:
199
+ </output>
200
+ </system_context>
201
+ """
202
+
203
+ @staticmethod
204
+ def sql(prompt: str) -> str:
205
+ """Optimize prompt for SQL query generation."""
206
+ return f"""
207
+ <system_context>
208
+ <role>
209
+ Your role: Generate optimized SQL queries.
210
+ </role>
211
+ <instructions>
212
+ Requirements:
213
+ - Standard SQL syntax
214
+ - Efficient query structure
215
+ - Proper joins and indexing
216
+ - Consider performance
217
+ </instructions>
218
+ <request>
219
+ Query need: {prompt}
220
+ </request>
221
+ <output>
222
+ SQL:
223
+ </output>
224
+ </system_context>
225
+ """
226
+
227
+ @staticmethod
228
+ def regex(prompt: str) -> str:
229
+ """Optimize prompt for regex pattern generation."""
230
+ return f"""
231
+ <system_context>
232
+ <role>
233
+ Your role: Generate precise regex patterns.
234
+ </role>
235
+ <instructions>
236
+ Requirements:
237
+ - Standard regex syntax
238
+ - Pattern explanation
239
+ - Test cases
240
+ - Consider edge cases
241
+ </instructions>
242
+ <request>
243
+ Pattern need: {prompt}
244
+ </request>
245
+ <output>
246
+ Regex:
247
+ </output>
248
+ </system_context>
249
+ """
250
+
251
+ @staticmethod
252
+ def test(prompt: str) -> str:
253
+ """Optimize prompt for test case generation."""
254
+ return f"""
255
+ <system_context>
256
+ <role>
257
+ Your role: Generate comprehensive test cases.
258
+ </role>
259
+ <instructions>
260
+ Include:
261
+ - Edge cases
262
+ - Corner cases
263
+ - Error scenarios
264
+ - Happy path
265
+ Format: Test name and expected result
266
+ </instructions>
267
+ <request>
268
+ Test requirement: {prompt}
269
+ </request>
270
+ <output>
271
+ Test Cases:
272
+ </output>
273
+ </system_context>
274
+ """
275
+
276
+ @staticmethod
277
+ def docker(prompt: str) -> str:
278
+ """Optimize prompt for Dockerfile creation."""
279
+ return f"""
280
+ <system_context>
281
+ <role>
282
+ Your role: Create efficient Dockerfile.
283
+ </role>
284
+ <instructions>
285
+ Consider:
286
+ - Base image selection
287
+ - Layer optimization
288
+ - Security best practices
289
+ - Multi-stage builds if needed
290
+ </instructions>
291
+ <request>
292
+ Container requirement: {prompt}
293
+ </request>
294
+ <output>
295
+ Dockerfile:
296
+ </output>
297
+ </system_context>
298
+ """
299
+
300
+ @staticmethod
301
+ def git(prompt: str) -> str:
302
+ """Optimize prompt for git commands."""
303
+ return f"""
304
+ <system_context>
305
+ <role>
306
+ Your role: Generate git commands.
307
+ </role>
308
+ <instructions>
309
+ Requirements:
310
+ - Clear and safe commands
311
+ - Consider current state
312
+ - Include safety checks
313
+ - Best practices
314
+ </instructions>
315
+ <request>
316
+ Git task: {prompt}
317
+ </request>
318
+ <output>
319
+ Command:
320
+ </output>
321
+ </system_context>
322
+ """
323
+
324
+ @staticmethod
325
+ def yaml(prompt: str) -> str:
326
+ """Optimize prompt for YAML configuration."""
327
+ return f"""
328
+ <system_context>
329
+ <role>
330
+ Your role: Generate YAML configuration.
331
+ </role>
332
+ <instructions>
333
+ Requirements:
334
+ - Valid YAML syntax
335
+ - Clear structure
336
+ - Comments for complex parts
337
+ - Best practices
338
+ </instructions>
339
+ <request>
340
+ Config need: {prompt}
341
+ </request>
342
+ <output>
343
+ YAML:
344
+ </output>
345
+ </system_context>
346
+ """
347
+
348
+ @staticmethod
349
+ def cli(prompt: str) -> str:
350
+ """Optimize prompt for CLI command design."""
351
+ return f"""
352
+ <system_context>
353
+ <role>
354
+ Your role: Design CLI commands.
355
+ </role>
356
+ <instructions>
357
+ Include:
358
+ - Command structure
359
+ - Arguments/options
360
+ - Help messages
361
+ - Examples
362
+ </instructions>
363
+ <request>
364
+ CLI requirement: {prompt}
365
+ </request>
366
+ <output>
367
+ Design:
368
+ </output>
369
+ </system_context>
370
+ """
371
+
372
+ @staticmethod
373
+ def refactor(prompt: str) -> str:
374
+ """Optimize prompt for code refactoring suggestions."""
375
+ return f"""
376
+ <system_context>
377
+ <role>
378
+ Your role: Suggest code improvements.
379
+ </role>
380
+ <instructions>
381
+ Focus on:
382
+ - Code quality
383
+ - Performance
384
+ - Readability
385
+ - Best practices
386
+ - Design patterns
387
+ </instructions>
388
+ <request>
389
+ Code to refactor: {prompt}
390
+ </request>
391
+ <output>
392
+ Suggestions:
393
+ </output>
394
+ </system_context>
395
+ """
396
+
397
+ @staticmethod
398
+ def security(prompt: str) -> str:
399
+ """Optimize prompt for security analysis."""
400
+ return f"""
401
+ <system_context>
402
+ <role>
403
+ Your role: Security analysis and fixes.
404
+ </role>
405
+ <instructions>
406
+ Check for:
407
+ - Common vulnerabilities
408
+ - Security best practices
409
+ - Input validation
410
+ - Authentication/Authorization
411
+ - Data protection
412
+ </instructions>
413
+ <request>
414
+ Code to analyze: {prompt}
415
+ </request>
416
+ <output>
417
+ Analysis:
418
+ </output>
419
+ </system_context>
420
420
  """