summaryrefslogtreecommitdiffstats
path: root/unfinished/bing/__ini__.py
diff options
context:
space:
mode:
Diffstat (limited to 'unfinished/bing/__ini__.py')
-rw-r--r--unfinished/bing/__ini__.py108
1 files changed, 0 insertions, 108 deletions
diff --git a/unfinished/bing/__ini__.py b/unfinished/bing/__ini__.py
deleted file mode 100644
index 1e4fd149..00000000
--- a/unfinished/bing/__ini__.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Import necessary libraries
-import asyncio
-from json import dumps, loads
-from ssl import create_default_context
-
-import websockets
-from browser_cookie3 import edge
-from certifi import where
-from requests import get
-
-# Set up SSL context
-ssl_context = create_default_context()
-ssl_context.load_verify_locations(where())
-
-
-def format(msg: dict) -> str:
- """Format message as JSON string with delimiter."""
- return dumps(msg) + '\x1e'
-
-
-def get_token():
- """Retrieve token from browser cookies."""
- cookies = {c.name: c.value for c in edge(domain_name='bing.com')}
- return cookies['_U']
-
-
-class AsyncCompletion:
- async def create(
- prompt: str = 'hello world',
- optionSets: list = [
- 'deepleo',
- 'enable_debug_commands',
- 'disable_emoji_spoken_text',
- 'enablemm',
- 'h3relaxedimg'
- ],
- token: str = get_token()):
- """Create a connection to Bing AI and send the prompt."""
-
- # Send create request
- create = get('https://edgeservices.bing.com/edgesvc/turing/conversation/create',
- headers={
- 'host': 'edgeservices.bing.com',
- 'authority': 'edgeservices.bing.com',
- 'cookie': f'_U={token}',
- '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',
- }
- )
-
- # Extract conversation data
- conversationId = create.json()['conversationId']
- clientId = create.json()['clientId']
- conversationSignature = create.json()['conversationSignature']
-
- # Connect to WebSocket
- wss = await websockets.connect('wss://sydney.bing.com/sydney/ChatHub', max_size=None, ssl=ssl_context,
- extra_headers={
- # Add necessary headers
- }
- )
-
- # Send JSON protocol version
- await wss.send(format({'protocol': 'json', 'version': 1}))
- await wss.recv()
-
- # Define message structure
- struct = {
- # Add necessary message structure
- }
-
- # Send message
- await wss.send(format(struct))
-
- # Process responses
- base_string = ''
- final = False
- while not final:
- objects = str(await wss.recv()).split('\x1e')
- for obj in objects:
- if obj is None or obj == '':
- continue
-
- response = loads(obj)
- if response.get('type') == 1 and response['arguments'][0].get('messages', ):
- response_text = response['arguments'][0]['messages'][0]['adaptiveCards'][0]['body'][0].get(
- 'text')
-
- yield (response_text.replace(base_string, ''))
- base_string = response_text
-
- elif response.get('type') == 2:
- final = True
-
- await wss.close()
-
-
-async def run():
- """Run the async completion and print the result."""
- async for value in AsyncCompletion.create(
- prompt='summarize cinderella with each word beginning with a consecutive letter of the alphabet, a-z',
- optionSets=[
- "galileo",
- ]
- ):
- print(value, end='', flush=True)
-
-
-asyncio.run(run())