t.me/xtekky commited on
Commit
0fed305
1 Parent(s): 9bc8e2e

opena, bard & bing [experimental]

Browse files
experimental/bard/__init__.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from requests import Session
2
+ from re import search
3
+ from random import randint
4
+ from json import dumps, loads
5
+ from random import randint
6
+ from urllib.parse import urlencode
7
+ from dotenv import load_dotenv; load_dotenv()
8
+ from os import getenv
9
+
10
+ from bard.typings import BardResponse
11
+
12
+ token = getenv('1psid')
13
+ proxy = getenv('proxy')
14
+
15
+ temperatures = {
16
+ 0 : "Generate text strictly following known patterns, with no creativity.",
17
+ 0.1: "Produce text adhering closely to established patterns, allowing minimal creativity.",
18
+ 0.2: "Create text with modest deviations from familiar patterns, injecting a slight creative touch.",
19
+ 0.3: "Craft text with a mild level of creativity, deviating somewhat from common patterns.",
20
+ 0.4: "Formulate text balancing creativity and recognizable patterns for coherent results.",
21
+ 0.5: "Generate text with a moderate level of creativity, allowing for a mix of familiarity and novelty.",
22
+ 0.6: "Compose text with an increased emphasis on creativity, while partially maintaining familiar patterns.",
23
+ 0.7: "Produce text favoring creativity over typical patterns for more original results.",
24
+ 0.8: "Create text heavily focused on creativity, with limited concern for familiar patterns.",
25
+ 0.9: "Craft text with a strong emphasis on unique and inventive ideas, largely ignoring established patterns.",
26
+ 1 : "Generate text with maximum creativity, disregarding any constraints of known patterns or structures."
27
+ }
28
+
29
+ class Completion:
30
+ # def __init__(self, _token, proxy: str or None = None) -> None:
31
+ # self.client = Session()
32
+ # self.client.proxies = {
33
+ # 'http': f'http://{proxy}',
34
+ # 'https': f'http://{proxy}' } if proxy else None
35
+
36
+ # self.client.headers = {
37
+ # 'authority' : 'bard.google.com',
38
+ # 'content-type' : 'application/x-www-form-urlencoded;charset=UTF-8',
39
+ # 'origin' : 'https://bard.google.com',
40
+ # 'referer' : 'https://bard.google.com/',
41
+ # 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
42
+ # 'x-same-domain' : '1',
43
+ # 'cookie' : f'__Secure-1PSID={_token}'
44
+ # }
45
+
46
+ # self.snlm0e = self.__init_client()
47
+ # self.conversation_id = ''
48
+ # self.response_id = ''
49
+ # self.choice_id = ''
50
+ # self.reqid = randint(1111, 9999)
51
+
52
+ def create(
53
+ prompt : str = 'hello world',
54
+ temperature : int = None,
55
+ conversation_id : str = '',
56
+ response_id : str = '',
57
+ choice_id : str = '') -> BardResponse:
58
+
59
+ if temperature:
60
+ prompt = f'''settings: follow these settings for your response: [temperature: {temperature} - {temperatures[temperature]}] | prompt : {prompt}'''
61
+
62
+ client = Session()
63
+ client.proxies = {
64
+ 'http': f'http://{proxy}',
65
+ 'https': f'http://{proxy}' } if proxy else None
66
+
67
+ client.headers = {
68
+ 'authority' : 'bard.google.com',
69
+ 'content-type' : 'application/x-www-form-urlencoded;charset=UTF-8',
70
+ 'origin' : 'https://bard.google.com',
71
+ 'referer' : 'https://bard.google.com/',
72
+ 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
73
+ 'x-same-domain' : '1',
74
+ 'cookie' : f'__Secure-1PSID={token}'
75
+ }
76
+
77
+ snlm0e = search(r'SNlM0e\":\"(.*?)\"', client.get('https://bard.google.com/').text).group(1)
78
+
79
+ params = urlencode({
80
+ 'bl' : 'boq_assistant-bard-web-server_20230326.21_p0',
81
+ '_reqid' : randint(1111, 9999),
82
+ 'rt' : 'c',
83
+ })
84
+
85
+ response = client.post(f'https://bard.google.com/_/BardChatUi/data/assistant.lamda.BardFrontendService/StreamGenerate?{params}',
86
+ data = {
87
+ 'at': snlm0e,
88
+ 'f.req': dumps([None, dumps([
89
+ [prompt],
90
+ None,
91
+ [conversation_id, response_id, choice_id],
92
+ ])
93
+ ])
94
+ }
95
+ )
96
+
97
+ chat_data = loads(response.content.splitlines()[3])[0][2]
98
+ if not chat_data: print('error, retrying'); Completion.create(prompt, temperature, conversation_id, response_id, choice_id)
99
+
100
+ json_chat_data = loads(chat_data)
101
+ results = {
102
+ 'content' : json_chat_data[0][0],
103
+ 'conversation_id' : json_chat_data[1][0],
104
+ 'response_id' : json_chat_data[1][1],
105
+ 'factualityQueries' : json_chat_data[3],
106
+ 'textQuery' : json_chat_data[2][0] if json_chat_data[2] is not None else '',
107
+ 'choices' : [{'id': i[0], 'content': i[1]} for i in json_chat_data[4]],
108
+ }
109
+
110
+ # self.conversation_id = results['conversation_id']
111
+ # self.response_id = results['response_id']
112
+ # self.choice_id = results['choices'][0]['id']
113
+ # self.reqid += 100000
114
+
115
+ return BardResponse(results)
experimental/bard/typings.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class BardResponse:
2
+ def __init__(self, json_dict):
3
+ self.json = json_dict
4
+
5
+ self.content = json_dict.get('content')
6
+ self.conversation_id = json_dict.get('conversation_id')
7
+ self.response_id = json_dict.get('response_id')
8
+ self.factuality_queries = json_dict.get('factualityQueries', [])
9
+ self.text_query = json_dict.get('textQuery', [])
10
+ self.choices = [self.BardChoice(choice) for choice in json_dict.get('choices', [])]
11
+
12
+ class BardChoice:
13
+ def __init__(self, choice_dict):
14
+ self.id = choice_dict.get('id')
15
+ self.content = choice_dict.get('content')[0]
experimental/bing/__ini__.py ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from requests import get
2
+ from browser_cookie3 import edge, chrome
3
+ from ssl import create_default_context
4
+ from certifi import where
5
+ from uuid import uuid4
6
+ from random import randint
7
+ from json import dumps, loads
8
+
9
+ import asyncio
10
+ import websockets
11
+
12
+ ssl_context = create_default_context()
13
+ ssl_context.load_verify_locations(where())
14
+
15
+ def format(msg: dict) -> str:
16
+ return dumps(msg) + '\x1e'
17
+
18
+ def get_token():
19
+
20
+ cookies = {c.name: c.value for c in edge(domain_name='bing.com')}
21
+ return cookies['_U']
22
+
23
+
24
+
25
+ class AsyncCompletion:
26
+ async def create(
27
+ prompt : str = 'hello world',
28
+ optionSets : list = [
29
+ 'deepleo',
30
+ 'enable_debug_commands',
31
+ 'disable_emoji_spoken_text',
32
+ 'enablemm',
33
+ 'h3relaxedimg'
34
+ ],
35
+ token : str = get_token()):
36
+
37
+ create = get('https://edgeservices.bing.com/edgesvc/turing/conversation/create',
38
+ headers = {
39
+ 'host' : 'edgeservices.bing.com',
40
+ 'authority' : 'edgeservices.bing.com',
41
+ 'cookie' : f'_U={token}',
42
+ 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.69',
43
+ }
44
+ )
45
+
46
+ conversationId = create.json()['conversationId']
47
+ clientId = create.json()['clientId']
48
+ conversationSignature = create.json()['conversationSignature']
49
+
50
+ wss: websockets.WebSocketClientProtocol or None = None
51
+
52
+ wss = await websockets.connect('wss://sydney.bing.com/sydney/ChatHub', max_size = None, ssl = ssl_context,
53
+ extra_headers = {
54
+ 'accept': 'application/json',
55
+ 'accept-language': 'en-US,en;q=0.9',
56
+ 'content-type': 'application/json',
57
+ 'sec-ch-ua': '"Not_A Brand";v="99", Microsoft Edge";v="110", "Chromium";v="110"',
58
+ 'sec-ch-ua-arch': '"x86"',
59
+ 'sec-ch-ua-bitness': '"64"',
60
+ 'sec-ch-ua-full-version': '"109.0.1518.78"',
61
+ 'sec-ch-ua-full-version-list': '"Chromium";v="110.0.5481.192", "Not A(Brand";v="24.0.0.0", "Microsoft Edge";v="110.0.1587.69"',
62
+ 'sec-ch-ua-mobile': '?0',
63
+ 'sec-ch-ua-model': "",
64
+ 'sec-ch-ua-platform': '"Windows"',
65
+ 'sec-ch-ua-platform-version': '"15.0.0"',
66
+ 'sec-fetch-dest': 'empty',
67
+ 'sec-fetch-mode': 'cors',
68
+ 'sec-fetch-site': 'same-origin',
69
+ 'x-ms-client-request-id': str(uuid4()),
70
+ 'x-ms-useragent': 'azsdk-js-api-client-factory/1.0.0-beta.1 core-rest-pipeline/1.10.0 OS/Win32',
71
+ 'Referer': 'https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx',
72
+ 'Referrer-Policy': 'origin-when-cross-origin',
73
+ 'x-forwarded-for': f'13.{randint(104, 107)}.{randint(0, 255)}.{randint(0, 255)}'
74
+ }
75
+ )
76
+
77
+ await wss.send(format({'protocol': 'json', 'version': 1}))
78
+ await wss.recv()
79
+
80
+ struct = {
81
+ 'arguments': [
82
+ {
83
+ 'source': 'cib',
84
+ 'optionsSets': optionSets,
85
+ 'isStartOfSession': True,
86
+ 'message': {
87
+ 'author': 'user',
88
+ 'inputMethod': 'Keyboard',
89
+ 'text': prompt,
90
+ 'messageType': 'Chat'
91
+ },
92
+ 'conversationSignature': conversationSignature,
93
+ 'participant': {
94
+ 'id': clientId
95
+ },
96
+ 'conversationId': conversationId
97
+ }
98
+ ],
99
+ 'invocationId': '0',
100
+ 'target': 'chat',
101
+ 'type': 4
102
+ }
103
+
104
+ await wss.send(format(struct))
105
+
106
+ base_string = ''
107
+
108
+ final = False
109
+ while not final:
110
+ objects = str(await wss.recv()).split('\x1e')
111
+ for obj in objects:
112
+ if obj is None or obj == '':
113
+ continue
114
+
115
+ response = loads(obj)
116
+ if response.get('type') == 1 and response['arguments'][0].get('messages',):
117
+ response_text = response['arguments'][0]['messages'][0]['adaptiveCards'][0]['body'][0].get('text')
118
+
119
+ yield (response_text.replace(base_string, ''))
120
+ base_string = response_text
121
+
122
+ elif response.get('type') == 2:
123
+ final = True
124
+
125
+ await wss.close()
126
+
127
+ async def run():
128
+ async for value in AsyncCompletion.create(
129
+ prompt = 'summarize cinderella with each word beginning with a consecutive letter of the alphabet, a-z',
130
+ # optionSets = [
131
+ # "deepleo",
132
+ # "enable_debug_commands",
133
+ # "disable_emoji_spoken_text",
134
+ # "enablemm"
135
+ # ]
136
+ optionSets = [
137
+ #"nlu_direct_response_filter",
138
+ #"deepleo",
139
+ #"disable_emoji_spoken_text",
140
+ # "responsible_ai_policy_235",
141
+ #"enablemm",
142
+ "galileo",
143
+ #"dtappid",
144
+ # "cricinfo",
145
+ # "cricinfov2",
146
+ # "dv3sugg",
147
+ ]
148
+ ):
149
+ print(value, end = '', flush=True)
150
+
151
+ asyncio.run(run())
experimental/{chat.openai.com.py → openai/__ini__.py} RENAMED
File without changes