webscout 4.7__py3-none-any.whl → 4.8__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 (43) hide show
  1. webscout/Agents/functioncall.py +97 -37
  2. webscout/Bard.py +365 -0
  3. webscout/Local/_version.py +1 -1
  4. webscout/Provider/Andi.py +7 -1
  5. webscout/Provider/BasedGPT.py +11 -5
  6. webscout/Provider/Berlin4h.py +11 -5
  7. webscout/Provider/Blackboxai.py +10 -4
  8. webscout/Provider/Cohere.py +11 -5
  9. webscout/Provider/DARKAI.py +25 -7
  10. webscout/Provider/Deepinfra.py +2 -1
  11. webscout/Provider/Deepseek.py +25 -9
  12. webscout/Provider/DiscordRocks.py +389 -0
  13. webscout/Provider/{ChatGPTUK.py → Farfalle.py} +80 -67
  14. webscout/Provider/Gemini.py +1 -1
  15. webscout/Provider/Groq.py +244 -110
  16. webscout/Provider/Llama.py +13 -5
  17. webscout/Provider/Llama3.py +15 -2
  18. webscout/Provider/OLLAMA.py +8 -7
  19. webscout/Provider/Perplexity.py +422 -52
  20. webscout/Provider/Phind.py +6 -5
  21. webscout/Provider/PizzaGPT.py +7 -1
  22. webscout/Provider/__init__.py +12 -31
  23. webscout/Provider/ai4chat.py +193 -0
  24. webscout/Provider/koala.py +11 -5
  25. webscout/Provider/{VTLchat.py → liaobots.py} +120 -104
  26. webscout/Provider/meta.py +2 -1
  27. webscout/version.py +1 -1
  28. webscout/webai.py +2 -64
  29. webscout/webscout_search.py +1 -1
  30. {webscout-4.7.dist-info → webscout-4.8.dist-info}/METADATA +227 -252
  31. {webscout-4.7.dist-info → webscout-4.8.dist-info}/RECORD +35 -40
  32. webscout/Provider/FreeGemini.py +0 -169
  33. webscout/Provider/Geminiflash.py +0 -152
  34. webscout/Provider/Geminipro.py +0 -152
  35. webscout/Provider/Leo.py +0 -469
  36. webscout/Provider/OpenGPT.py +0 -867
  37. webscout/Provider/Xjai.py +0 -230
  38. webscout/Provider/Yepchat.py +0 -478
  39. webscout/Provider/Youchat.py +0 -225
  40. {webscout-4.7.dist-info → webscout-4.8.dist-info}/LICENSE.md +0 -0
  41. {webscout-4.7.dist-info → webscout-4.8.dist-info}/WHEEL +0 -0
  42. {webscout-4.7.dist-info → webscout-4.8.dist-info}/entry_points.txt +0 -0
  43. {webscout-4.7.dist-info → webscout-4.8.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
1
  webscout/AIauto.py,sha256=gC01wLPpnqONf9DwKqkmbC_gIWo5Lh5V8YPu4OmYnhE,19923
2
2
  webscout/AIbase.py,sha256=GoHbN8r0gq2saYRZv6LA-Fr9Jlcjv80STKFXUq2ZeGU,4710
3
3
  webscout/AIutel.py,sha256=e1RbQHMMPL_sB_P_lNk8DKWDNiTGteMiCK-_uUKagbw,34248
4
+ webscout/Bard.py,sha256=8XkV_j0gJ-krYYR7bd5UORWMk7VlyTd3z66RPYBtdxg,13134
4
5
  webscout/DWEBS.py,sha256=QLuT1IKu0lnwdl7W6c-ctBAO7Jj0Zk3PYm6-13BC7rU,25740
5
6
  webscout/GoogleS.py,sha256=dW_iArNTyFT5MWBEI1HQvqf-Noj3uJeJA_Eods8D4ms,11587
6
7
  webscout/LLM.py,sha256=LbGCZdJf8A5dwfoGS4tyy39tAh5BDdhMZP0ScKaaQfU,4184
@@ -15,66 +16,60 @@ webscout/models.py,sha256=5iQIdtedT18YuTZ3npoG7kLMwcrKwhQ7928dl_7qZW0,692
15
16
  webscout/tempid.py,sha256=5oc3UbXhPGKxrMRTfRABT-V-dNzH_hOKWtLYM6iCWd4,5896
16
17
  webscout/transcriber.py,sha256=EddvTSq7dPJ42V3pQVnGuEiYQ7WjJ9uyeR9kMSxN7uY,20622
17
18
  webscout/utils.py,sha256=2O8_lftBKsv5OEvVaXCN-h0sipup0m3jxzhFdWQrdY8,2873
18
- webscout/version.py,sha256=KMQp1OFSXS2c5ktgRbsGATEX6rfWibjyO1pA1IvlI2g,44
19
+ webscout/version.py,sha256=IrNwMqWVqgJwvU8urh9gOuJhepKmqzR9y-ntbY_Eh0k,44
19
20
  webscout/voice.py,sha256=AHyeb3D8rYuAa-zBJsuMDgHq_Zvi98ROMKAUnEsKldo,1169
20
- webscout/webai.py,sha256=MyKfQ7QftSQGX8iBlQrcNZcn23bf8wSdwCIZnY6LpTI,90162
21
- webscout/webscout_search.py,sha256=evbJPy8vG2YgBuUwyHaOkinIdVlgM-esvjVOvy6N8jY,43729
21
+ webscout/webai.py,sha256=76AhP-vbPd5OW6To03I_6B18KOGEUvfi4Rbn4CqsA10,87745
22
+ webscout/webscout_search.py,sha256=AOHkaMLmFvM1mS--wVyLiPrDAb5BPLaURBHjleWOi4w,43743
22
23
  webscout/webscout_search_async.py,sha256=dooKGwLm0cwTml55Vy6NHPPY-nymEqX2h8laX94Zg5A,14537
23
24
  webscout/websx_search.py,sha256=5hfkkmGFhyQzojUpvMzIOJ3DBZIBNS90UReaacsfu6s,521
24
25
  webscout/Agents/Onlinesearcher.py,sha256=GzF2JcMfj07d74mxQEoaxwtxahgLHl3b_ugTbXjOwq4,7113
25
26
  webscout/Agents/__init__.py,sha256=VbGyW5pulh3LRqbVTv54n5TwWsrTqOANRioG18xtdJ0,58
26
- webscout/Agents/functioncall.py,sha256=5Nfmh8gmFOs7ZV7jJgZElZlJhi7hHrhxbITgLT7UpeI,5242
27
+ webscout/Agents/functioncall.py,sha256=i5wG1dwvBgdMMPlQkrq3rUrP-yfsPtaDy0qpF-JGEz4,7046
27
28
  webscout/Extra/__init__.py,sha256=GG1qUwS-HspT4TeeAIT4qFpM8PaO1ZdQhpelctaM7Rs,99
28
29
  webscout/Extra/autollama.py,sha256=8lyodIWAgJABzlMMHytlolPCgvUKh8ynkZD6MMEltXs,5970
29
30
  webscout/Extra/gguf.py,sha256=RvSp7xuaD6epAA9iAzthUnAQ3HA5N-svMyKUadAVnw8,7009
30
31
  webscout/Extra/weather.py,sha256=wdSrQxZRpbNfyaux0BeLdaDWyde5KwxZjSUM13820X0,2460
31
32
  webscout/Extra/weather_ascii.py,sha256=Aed-_EUzvTEjBXbOpNRxkJBLa6fXsclknXP06HnQD18,808
32
33
  webscout/Local/__init__.py,sha256=RN6klpbabPGNX2YzPm_hdeUcQvieUwvJt22uAO2RKSM,238
33
- webscout/Local/_version.py,sha256=yH-h9AKl_KbJwMWeq0PDDOVI2FQ9NutjLDqcCGuAQ6I,83
34
+ webscout/Local/_version.py,sha256=KYEVk6X3iKPM4P1cIHZJQ7pBE_UY18RRgQTg7wZ9NQg,83
34
35
  webscout/Local/formats.py,sha256=BiZZSoN3e8S6-S-ykBL9ogSUs0vK11GaZ3ghc9U8GRk,18994
35
36
  webscout/Local/model.py,sha256=T_bzNNrxEyOyLyhp6fKwiuVBBkXC2a37LzJVCxFIxOU,30710
36
37
  webscout/Local/rawdog.py,sha256=ojY_O8Vb1KvR34OwWdfLgllgaAK_7HMf64ElMATvCXs,36689
37
38
  webscout/Local/samplers.py,sha256=qXwU4eLXER-2aCYzcJcTgA6BeFmi5GMpTDUX1C9pTN4,4372
38
39
  webscout/Local/thread.py,sha256=Lyf_N2CaGAn2usSWSiUXLPAgpWub8vUu_tgFgtnvZVA,27408
39
40
  webscout/Local/utils.py,sha256=CSt9IqHhVGk_nJEnKvSFbLhC5nNf01e0MtwpgMmF9pA,6197
40
- webscout/Provider/Andi.py,sha256=y7Y9sC83NeMvK3MheROFoMttrFs9nGwjYaLNLPZMGCQ,10485
41
- webscout/Provider/BasedGPT.py,sha256=c03PWIsDbG98XD7EOKYmuxaaevOAcYmkRFSB2fYj4MU,8683
42
- webscout/Provider/Berlin4h.py,sha256=zMpmWmdFCbcE3UWB-F9xbbTWZTfx4GnjnRf6sDoaiC0,8552
43
- webscout/Provider/Blackboxai.py,sha256=ywq3PFDmogYzyNm12cdXyndaC3mL80mU-17zeB-y1vE,17154
44
- webscout/Provider/ChatGPTUK.py,sha256=qmuCb_a71GNE5LelOb5AKJUBndvj7soebiNey4VdDvE,8570
45
- webscout/Provider/Cohere.py,sha256=IXnRosYOaMAA65nvsKmN6ZkJGSdZFYQYBidzuNaCqX8,8711
46
- webscout/Provider/DARKAI.py,sha256=dbTX6dpS_13bX7AfOMUyDdhLNQJIpB7mTs_28hDuPXE,8538
47
- webscout/Provider/Deepinfra.py,sha256=kVnWARJdEtIeIsZwGw3POq8B2dO87bDcJso3uOeCeOA,18750
48
- webscout/Provider/Deepseek.py,sha256=IYJHZsM3ezhwzn4Wg1Ms-ZDyMH71Frtnfi3XZxGQpuw,8691
49
- webscout/Provider/FreeGemini.py,sha256=GbTJEG09vs5IKWKy9FqHBvDNKVq-HdMexOplctpb0RI,6426
50
- webscout/Provider/Gemini.py,sha256=_4DHWvlWuNAmVHPwHB1RjmryjTZZCthLa6lvPEHLvkQ,8451
51
- webscout/Provider/Geminiflash.py,sha256=1kMPA-ypi1gmJoms606Z7j_51znpdofM2aAyo4Hl7wU,5951
52
- webscout/Provider/Geminipro.py,sha256=nOifT5CRmnUg28iifSbOHkNLoKucLRr5zCj607mVrhw,5948
53
- webscout/Provider/Groq.py,sha256=QfgP3hKUcqq5vUA4Pzuu3HAgpJkKwLWNjjsnxtkCYd8,21094
41
+ webscout/Provider/Andi.py,sha256=uBME1v8lZbvpPHq5e_IOiOUC766uGTWMfNx9lWACssU,10681
42
+ webscout/Provider/BasedGPT.py,sha256=pQd6_eDgdjv5_J0HZGugZ5ghqPLv2Hs18szq1G0bIh8,8905
43
+ webscout/Provider/Berlin4h.py,sha256=-mO-ljQUV6pCnm-nKEeV7sePDn7wiGO_WG9XgVh2z10,8774
44
+ webscout/Provider/Blackboxai.py,sha256=OXq8rF0EDHkTK65HVXPXLrJ9sp950h4c56sc-YxbsjU,17378
45
+ webscout/Provider/Cohere.py,sha256=OZ7-0iaJ8L5e4Sy-L2UGm8SnBmS7CbaFIj6a08bABVw,8941
46
+ webscout/Provider/DARKAI.py,sha256=JpfFcPfd2kp15KSJ7GJ5Zy4zrwYQ_zHpqdFD2904Ii0,9065
47
+ webscout/Provider/Deepinfra.py,sha256=tdST5aQjaCs9_B5mrnrXmihDei73MjB-F8cpES-noc4,18756
48
+ webscout/Provider/Deepseek.py,sha256=jp8cZhbmscDjlXLCGI8MhDGORkbbxyeUlCqu5Z5GGSI,9210
49
+ webscout/Provider/DiscordRocks.py,sha256=uLB2_a8-WJtuUQymr6-0Ixi0Tp0du_IeBi50ulMqlRA,14958
50
+ webscout/Provider/Farfalle.py,sha256=N5p6y18-hps3KtKFb3_sg5sWYHHBC2CT_GF6pKTxglg,9010
51
+ webscout/Provider/Gemini.py,sha256=V79nIi5vhPfvjlGYg5XuH6RfY7AyNnBqnJM-OBK99hE,8453
52
+ webscout/Provider/Groq.py,sha256=h_dPKwqXRwmgvmEmkDYKdXwrlI4Zm2vZuCnSMItoa2w,28662
54
53
  webscout/Provider/Koboldai.py,sha256=KwWx2yPlvT9BGx37iNvSbgzWkJ9I8kSOmeg7sL1hb0M,15806
55
- webscout/Provider/Leo.py,sha256=wbuDR-vFjLptfRC6yDlk74tINqNvCOzpISsK92lIgGg,19987
56
- webscout/Provider/Llama.py,sha256=F_srqtdo6ws03tnEaetZOfDolXrQEnLZaIxmQaY_tJQ,8052
57
- webscout/Provider/Llama3.py,sha256=HIDLC2uYHOF-8D0XjOJZ-VJdBPLTdpyO-hlbXCZU05o,7199
58
- webscout/Provider/OLLAMA.py,sha256=G8sz_P7OZINFI1qGnpDhNPWU789Sv2cpDnShOA5Nbmw,7075
59
- webscout/Provider/OpenGPT.py,sha256=ZymwLgNJSPlGZHW3msMlnRR7NxmALqJw9yuToqrRrhw,35515
54
+ webscout/Provider/Llama.py,sha256=pqjpB09MFufImzTav1PwTWsukSCr3QiB-yFGJIIBAu8,8293
55
+ webscout/Provider/Llama3.py,sha256=7IifarM6rCjm4YqWSaI1wQNzRatnVLLmSs1NmP98DYI,7583
56
+ webscout/Provider/OLLAMA.py,sha256=Modmkp_WiZaBYsv4-_5y7fHpqBJY20zWxyZZwtSfqVs,7117
60
57
  webscout/Provider/Openai.py,sha256=SjfVOwY94unVnXhvN0Fkome-q2-wi4mPJk_vCGq5Fjc,20617
61
- webscout/Provider/Perplexity.py,sha256=CPdKqkdlVejXDcf1uycNO4LPCVNUADSCetvyJEGepSw,8826
62
- webscout/Provider/Phind.py,sha256=bkgKVtggRJSbJAG1tXviW9BqDvcgqPBlSr88Q6rlFHw,39226
63
- webscout/Provider/PizzaGPT.py,sha256=bxCf91sgu9iZAaBzyfaVVHWqz-nt6FfKhQUqCZdfv1g,7065
58
+ webscout/Provider/Perplexity.py,sha256=gUnXyVNbl6tWAqirwHEoPkjCzxpORcKxL77aoFKepBk,21485
59
+ webscout/Provider/Phind.py,sha256=_3y4CHn_uOsK6j2IP5n9RbnIAS6uTm5tI7IZccaDrMQ,39260
60
+ webscout/Provider/PizzaGPT.py,sha256=EiHSt0sK9kgmcIbBmkVtuniDvOrlhdi6zim5t_EZo30,7216
64
61
  webscout/Provider/Poe.py,sha256=ObUxa-Fa2Dq7sJcV0hc65m09StS9uWsB2-bR2rSjXDY,7510
65
62
  webscout/Provider/RUBIKSAI.py,sha256=HPY8klGBNVVkfAXb-RziNrEtJGItjiqbSyXKXTOIHW4,7954
66
63
  webscout/Provider/Reka.py,sha256=F0ZXENkhARprj5biK3mRxwiuPH0BW3ga7EWsi8agbtE,8917
67
64
  webscout/Provider/ThinkAnyAI.py,sha256=_qFjj0djxxrranyEY33w14oizyRjzlVwMv_hzvVtwNc,11616
68
- webscout/Provider/VTLchat.py,sha256=_sErGr-wOi16ZAfiGOo0bPsAEMkjzzwreEsIqjIZMIU,10041
69
- webscout/Provider/Xjai.py,sha256=BIlk2ouz9Kh_0Gg9hPvTqhI7XtcmWdg5vHSX_4uGrIs,9039
70
- webscout/Provider/Yepchat.py,sha256=2Eit-A7w1ph1GQKNQuur_yaDzI64r0yBGxCIjDefJxQ,19875
71
- webscout/Provider/Youchat.py,sha256=fhMpt94pIPE_XDbC4z9xyfgA7NbkNE2wlRFJabsjv90,8069
72
- webscout/Provider/__init__.py,sha256=oBdZqgg3oQQztSLF0kVS-kFF-Kr7J5IpFXBTJUR0vQI,2241
73
- webscout/Provider/koala.py,sha256=uBYJU_3YmC1qyCugDOrMSLoUR8my76zt_WqIUiGgf2Q,9840
74
- webscout/Provider/meta.py,sha256=vTJQtor91R5hrogCWOwiE422syjM-rFMn-s_8kURBnc,30664
75
- webscout-4.7.dist-info/LICENSE.md,sha256=9P0imsudI7MEvZe2pOcg8rKBn6E5FGHQ-riYozZI-Bk,2942
76
- webscout-4.7.dist-info/METADATA,sha256=stcOxQWhpH2_4NZlnIyJoY35MkSgjgEJuwn6JJIVdpU,56101
77
- webscout-4.7.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
78
- webscout-4.7.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
79
- webscout-4.7.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
80
- webscout-4.7.dist-info/RECORD,,
65
+ webscout/Provider/__init__.py,sha256=b7ftSSf4TUkWr_8YEDbOyx25hKKl2VNDaDOKn_iU1cs,1729
66
+ webscout/Provider/ai4chat.py,sha256=UB77kWH5vxSqSpz7PPgM4FH0aDpGOpwHJEv42Fa1W_U,7798
67
+ webscout/Provider/koala.py,sha256=x5OoT7hM8V-camPNMevqddHvfmzjKvLER2tpCDB6X4o,10059
68
+ webscout/Provider/liaobots.py,sha256=s2VxS4epBLVxoLCyQR0bdxiRm9Q6ZYUf019TC3xQCtM,10362
69
+ webscout/Provider/meta.py,sha256=3iBylmAk9d673Axvw6hFi0-0x_Fq7ZgtH_1j2_rcDwY,30715
70
+ webscout-4.8.dist-info/LICENSE.md,sha256=9P0imsudI7MEvZe2pOcg8rKBn6E5FGHQ-riYozZI-Bk,2942
71
+ webscout-4.8.dist-info/METADATA,sha256=uGGQnK19t0pT_32quRAbGZGyogZC6C6m7slrAilkTgE,53613
72
+ webscout-4.8.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
73
+ webscout-4.8.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
74
+ webscout-4.8.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
75
+ webscout-4.8.dist-info/RECORD,,
@@ -1,169 +0,0 @@
1
- import time
2
- import uuid
3
- from selenium import webdriver
4
- from selenium.webdriver.chrome.options import Options
5
- from selenium.webdriver.common.by import By
6
- from selenium.webdriver.support import expected_conditions as EC
7
- from selenium.webdriver.support.ui import WebDriverWait
8
- import click
9
- import requests
10
- from requests import get
11
- from uuid import uuid4
12
- from re import findall
13
- from requests.exceptions import RequestException
14
- from curl_cffi.requests import get, RequestsError
15
- import g4f
16
- from random import randint
17
- from PIL import Image
18
- import io
19
- import re
20
- import json
21
- import yaml
22
- from ..AIutel import Optimizers
23
- from ..AIutel import Conversation
24
- from ..AIutel import AwesomePrompts, sanitize_stream
25
- from ..AIbase import Provider, AsyncProvider
26
- from webscout import exceptions
27
- from typing import Any, AsyncGenerator, Dict
28
- import logging
29
- import httpx
30
-
31
- class FreeGemini(Provider):
32
- def __init__(
33
- self,
34
- is_conversation: bool = True,
35
- max_tokens: int = 600,
36
- timeout: int = 60,
37
- intro: str = None,
38
- filepath: str = None,
39
- update_file: bool = True,
40
- proxies: dict = {},
41
- history_offset: int = 10250,
42
- act: str = None,
43
- ):
44
- """Instantiates FreeGemini
45
-
46
- Args:
47
- is_conversation (bool, optional): Flag for chatting conversationally. Defaults to True.
48
- max_tokens (int, optional): Maximum number of tokens to be generated upon completion. Defaults to 600.
49
- timeout (int, optional): Http request timeout. Defaults to 30.
50
- intro (str, optional): Conversation introductory prompt. Defaults to None.
51
- filepath (str, optional): Path to file containing conversation history. Defaults to None.
52
- update_file (bool, optional): Add new prompts and responses to the file. Defaults to True.
53
- proxies (dict, optional): Http request proxies. Defaults to {}.
54
- history_offset (int, optional): Limit conversation history to this number of last texts. Defaults to 10250.
55
- act (str|int, optional): Awesome prompt key or index. (Used as intro). Defaults to None.
56
- """
57
- self.session = requests.Session()
58
- self.is_conversation = is_conversation
59
- self.max_tokens_to_sample = max_tokens
60
- self.chat_endpoint = "https://api.safone.dev/bard"
61
- self.timeout = timeout
62
- self.last_response = {}
63
-
64
- self.headers = {
65
- "accept": "application/json",
66
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
67
- }
68
-
69
- self.__available_optimizers = (
70
- method
71
- for method in dir(Optimizers)
72
- if callable(getattr(Optimizers, method)) and not method.startswith("__")
73
- )
74
- self.session.headers.update(self.headers)
75
- Conversation.intro = (
76
- AwesomePrompts().get_act(
77
- act, raise_not_found=True, default=None, case_insensitive=True
78
- )
79
- if act
80
- else intro or Conversation.intro
81
- )
82
- self.conversation = Conversation(
83
- is_conversation, self.max_tokens_to_sample, filepath, update_file
84
- )
85
- self.conversation.history_offset = history_offset
86
- self.session.proxies = proxies
87
-
88
- def ask(
89
- self,
90
- prompt: str,
91
- stream: bool = False,
92
- raw: bool = False,
93
- optimizer: str = None,
94
- conversationally: bool = False,
95
- ) -> dict:
96
- """Chat with AI
97
-
98
- Args:
99
- prompt (str): Prompt to be send.
100
- stream (bool, optional): Flag for streaming response. Defaults to False.
101
- raw (bool, optional): Stream back raw response as received. Defaults to False.
102
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
103
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
104
- """
105
- conversation_prompt = self.conversation.gen_complete_prompt(prompt)
106
- if optimizer:
107
- if optimizer in self.__available_optimizers:
108
- conversation_prompt = getattr(Optimizers, optimizer)(
109
- conversation_prompt if conversationally else prompt
110
- )
111
- else:
112
- raise Exception(
113
- f"Optimizer is not one of {self.__available_optimizers}"
114
- )
115
-
116
- self.session.headers.update(self.headers)
117
- payload = {"message": conversation_prompt}
118
-
119
- response = self.session.post(
120
- self.chat_endpoint, json=payload, timeout=self.timeout
121
- )
122
-
123
- if not response.ok:
124
- raise exceptions.FailedToGenerateResponseError(
125
- f"Failed to generate response - ({response.status_code}, {response.reason}) - {response.text}"
126
- )
127
-
128
- resp = response.json()
129
- message_load = self.get_message(resp)
130
- self.conversation.update_chat_history(
131
- prompt, message_load
132
- )
133
- return resp
134
-
135
- def chat(
136
- self,
137
- prompt: str,
138
- stream: bool = False,
139
- optimizer: str = None,
140
- conversationally: bool = False,
141
- ) -> str:
142
- """Generate response `str`
143
- Args:
144
- prompt (str): Prompt to be send.
145
- stream (bool, optional): Flag for streaming response. Defaults to False.
146
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
147
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
148
- Returns:
149
- str: Response generated
150
- """
151
- return self.get_message(
152
- self.ask(
153
- prompt,
154
- optimizer=optimizer,
155
- conversationally=conversationally,
156
- )
157
- )
158
-
159
- def get_message(self, response: dict) -> str:
160
- """Retrieves message only from response
161
-
162
- Args:
163
- response (dict): Response generated by `self.ask`
164
-
165
- Returns:
166
- str: Message extracted
167
- """
168
- assert isinstance(response, dict), "Response should be of dict data-type only"
169
- return response["message"]
@@ -1,152 +0,0 @@
1
- import requests
2
- from ..AIbase import Provider
3
- from ..AIutel import Conversation
4
- from ..AIutel import Optimizers
5
- from ..AIutel import AwesomePrompts
6
- from webscout import exceptions
7
-
8
- class GEMINIFLASH(Provider):
9
- def __init__(
10
- self,
11
- is_conversation: bool = True,
12
- max_tokens: int = 600,
13
- timeout: int = 30,
14
- intro: str = None,
15
- filepath: str = None,
16
- update_file: bool = True,
17
- proxies: dict = {},
18
- history_offset: int = 10250,
19
- act: str = None,
20
- ):
21
- """Initializes GEMINI
22
-
23
- Args:
24
- is_conversation (bool, optional): Flag for chatting conversationally. Defaults to True.
25
- max_tokens (int, optional): Maximum number of tokens to be generated upon completion. Defaults to 600.
26
- timeout (int, optional): Http request timeout. Defaults to 30.
27
- intro (str, optional): Conversation introductory prompt. Defaults to None.
28
- filepath (str, optional): Path to file containing conversation history. Defaults to None.
29
- update_file (bool, optional): Add new prompts and responses to the file. Defaults to True.
30
- proxies (dict, optional): Http request proxies. Defaults to {}.
31
- history_offset (int, optional): Limit conversation history to this number of last texts. Defaults to 10250.
32
- act (str|int, optional): Awesome prompt key or index. (Used as intro). Defaults to None.
33
- """
34
- self.session = requests.Session()
35
- self.is_conversation = is_conversation
36
- self.max_tokens_to_sample = max_tokens
37
- self.chat_endpoint = "https://gemini-flash.developer-house.workers.dev"
38
- self.timeout = timeout
39
- self.last_response = {}
40
- self.__available_optimizers = (
41
- method
42
- for method in dir(Optimizers)
43
- if callable(getattr(Optimizers, method)) and not method.startswith("__")
44
- )
45
- Conversation.intro = (
46
- AwesomePrompts().get_act(
47
- act, raise_not_found=True, default=None, case_insensitive=True
48
- )
49
- if act
50
- else intro or Conversation.intro
51
- )
52
- self.conversation = Conversation(
53
- is_conversation, self.max_tokens_to_sample, filepath, update_file
54
- )
55
- self.conversation.history_offset = history_offset
56
- self.session.proxies = proxies
57
-
58
- def ask(
59
- self,
60
- prompt: str,
61
- stream: bool = False,
62
- raw: bool = False,
63
- optimizer: str = None,
64
- conversationally: bool = False,
65
- ) -> dict:
66
- """Chat with AI
67
-
68
- Args:
69
- prompt (str): Prompt to be send.
70
- stream (bool, optional): Flag for streaming response. Defaults to False.
71
- raw (bool, optional): Stream back raw response as received. Defaults to False.
72
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
73
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
74
- Returns:
75
- dict : {}
76
- ```json
77
- {
78
- "text" : "How may I assist you today?"
79
- }
80
- ```
81
- """
82
- conversation_prompt = self.conversation.gen_complete_prompt(prompt)
83
- if optimizer:
84
- if optimizer in self.__available_optimizers:
85
- conversation_prompt = getattr(Optimizers, optimizer)(
86
- conversation_prompt if conversationally else prompt
87
- )
88
- else:
89
- raise Exception(
90
- f"Optimizer is not one of {self.__available_optimizers}"
91
- )
92
- self.session.headers.update(
93
- {
94
- "Content-Type": "application/json",
95
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
96
- }
97
- )
98
- payload = {"question": conversation_prompt}
99
-
100
- response = self.session.get(
101
- self.chat_endpoint, params=payload, stream=True, timeout=self.timeout
102
- )
103
- if not response.ok:
104
- raise exceptions.FailedToGenerateResponseError(
105
- f"Failed to generate response - ({response.status_code}, {response.reason}) - {response.text}"
106
- )
107
-
108
- resp = response.json()
109
- self.last_response.update(resp)
110
- self.conversation.update_chat_history(
111
- prompt, self.get_message(self.last_response)
112
- )
113
- return resp
114
-
115
- def chat(
116
- self,
117
- prompt: str,
118
- stream: bool = False,
119
- optimizer: str = None,
120
- conversationally: bool = False,
121
- ) -> str:
122
- """Generate response `str`
123
- Args:
124
- prompt (str): Prompt to be send.
125
- stream (bool, optional): Flag for streaming response. Defaults to False.
126
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
127
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
128
- Returns:
129
- str: Response generated
130
- """
131
- return self.get_message(
132
- self.ask(
133
- prompt,
134
- optimizer=optimizer,
135
- conversationally=conversationally,
136
- )
137
- )
138
-
139
- def get_message(self, response: dict) -> str:
140
- """Retrieves message only from response
141
-
142
- Args:
143
- response (dict): Response generated by `self.ask`
144
-
145
- Returns:
146
- str: Message extracted
147
- """
148
- assert isinstance(response, dict), "Response should be of dict data-type only"
149
- try:
150
- return response["content"]
151
- except KeyError:
152
- return ""
@@ -1,152 +0,0 @@
1
- import requests
2
- from ..AIbase import Provider
3
- from ..AIutel import Conversation
4
- from ..AIutel import Optimizers
5
- from ..AIutel import AwesomePrompts
6
- from webscout import exceptions
7
-
8
- class GEMINIPRO(Provider):
9
- def __init__(
10
- self,
11
- is_conversation: bool = True,
12
- max_tokens: int = 600,
13
- timeout: int = 30,
14
- intro: str = None,
15
- filepath: str = None,
16
- update_file: bool = True,
17
- proxies: dict = {},
18
- history_offset: int = 10250,
19
- act: str = None,
20
- ):
21
- """Initializes GEMINI
22
-
23
- Args:
24
- is_conversation (bool, optional): Flag for chatting conversationally. Defaults to True.
25
- max_tokens (int, optional): Maximum number of tokens to be generated upon completion. Defaults to 600.
26
- timeout (int, optional): Http request timeout. Defaults to 30.
27
- intro (str, optional): Conversation introductory prompt. Defaults to None.
28
- filepath (str, optional): Path to file containing conversation history. Defaults to None.
29
- update_file (bool, optional): Add new prompts and responses to the file. Defaults to True.
30
- proxies (dict, optional): Http request proxies. Defaults to {}.
31
- history_offset (int, optional): Limit conversation history to this number of last texts. Defaults to 10250.
32
- act (str|int, optional): Awesome prompt key or index. (Used as intro). Defaults to None.
33
- """
34
- self.session = requests.Session()
35
- self.is_conversation = is_conversation
36
- self.max_tokens_to_sample = max_tokens
37
- self.chat_endpoint = "https://gemini-pro.developer-house.workers.dev/"
38
- self.timeout = timeout
39
- self.last_response = {}
40
- self.__available_optimizers = (
41
- method
42
- for method in dir(Optimizers)
43
- if callable(getattr(Optimizers, method)) and not method.startswith("__")
44
- )
45
- Conversation.intro = (
46
- AwesomePrompts().get_act(
47
- act, raise_not_found=True, default=None, case_insensitive=True
48
- )
49
- if act
50
- else intro or Conversation.intro
51
- )
52
- self.conversation = Conversation(
53
- is_conversation, self.max_tokens_to_sample, filepath, update_file
54
- )
55
- self.conversation.history_offset = history_offset
56
- self.session.proxies = proxies
57
-
58
- def ask(
59
- self,
60
- prompt: str,
61
- stream: bool = False,
62
- raw: bool = False,
63
- optimizer: str = None,
64
- conversationally: bool = False,
65
- ) -> dict:
66
- """Chat with AI
67
-
68
- Args:
69
- prompt (str): Prompt to be send.
70
- stream (bool, optional): Flag for streaming response. Defaults to False.
71
- raw (bool, optional): Stream back raw response as received. Defaults to False.
72
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
73
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
74
- Returns:
75
- dict : {}
76
- ```json
77
- {
78
- "text" : "How may I assist you today?"
79
- }
80
- ```
81
- """
82
- conversation_prompt = self.conversation.gen_complete_prompt(prompt)
83
- if optimizer:
84
- if optimizer in self.__available_optimizers:
85
- conversation_prompt = getattr(Optimizers, optimizer)(
86
- conversation_prompt if conversationally else prompt
87
- )
88
- else:
89
- raise Exception(
90
- f"Optimizer is not one of {self.__available_optimizers}"
91
- )
92
- self.session.headers.update(
93
- {
94
- "Content-Type": "application/json",
95
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
96
- }
97
- )
98
- payload = {"question": conversation_prompt}
99
-
100
- response = self.session.get(
101
- self.chat_endpoint, params=payload, stream=True, timeout=self.timeout
102
- )
103
- if not response.ok:
104
- raise exceptions.FailedToGenerateResponseError(
105
- f"Failed to generate response - ({response.status_code}, {response.reason}) - {response.text}"
106
- )
107
-
108
- resp = response.json()
109
- self.last_response.update(resp)
110
- self.conversation.update_chat_history(
111
- prompt, self.get_message(self.last_response)
112
- )
113
- return resp
114
-
115
- def chat(
116
- self,
117
- prompt: str,
118
- stream: bool = False,
119
- optimizer: str = None,
120
- conversationally: bool = False,
121
- ) -> str:
122
- """Generate response `str`
123
- Args:
124
- prompt (str): Prompt to be send.
125
- stream (bool, optional): Flag for streaming response. Defaults to False.
126
- optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
127
- conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
128
- Returns:
129
- str: Response generated
130
- """
131
- return self.get_message(
132
- self.ask(
133
- prompt,
134
- optimizer=optimizer,
135
- conversationally=conversationally,
136
- )
137
- )
138
-
139
- def get_message(self, response: dict) -> str:
140
- """Retrieves message only from response
141
-
142
- Args:
143
- response (dict): Response generated by `self.ask`
144
-
145
- Returns:
146
- str: Message extracted
147
- """
148
- assert isinstance(response, dict), "Response should be of dict data-type only"
149
- try:
150
- return response["content"]
151
- except KeyError:
152
- return ""