summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuneye <73485421+Luneye@users.noreply.github.com>2023-08-28 16:31:18 +0200
committerGitHub <noreply@github.com>2023-08-28 16:31:18 +0200
commit87c7db73a297b50e68ad7ca02673cfe749984841 (patch)
tree9abe29668fb28f7a1ef8a5e01c23dac93d3a92a6
parentUpdate Bing.py (diff)
downloadgpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar.gz
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar.bz2
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar.lz
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar.xz
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.tar.zst
gpt4free-87c7db73a297b50e68ad7ca02673cfe749984841.zip
-rw-r--r--g4f/Provider/Bing.py98
1 files changed, 45 insertions, 53 deletions
diff --git a/g4f/Provider/Bing.py b/g4f/Provider/Bing.py
index 4056916e..4c7e0557 100644
--- a/g4f/Provider/Bing.py
+++ b/g4f/Provider/Bing.py
@@ -1,16 +1,11 @@
-import asyncio
-import json
-import os
-import random
+import asyncio, json, os, random, aiohttp
-import aiohttp
-import asyncio
from aiohttp import ClientSession
from ..typing import Any, AsyncGenerator, CreateResult, Union
-from .base_provider import BaseProvider
+from .base_provider import AsyncGeneratorProvider, get_cookies
-class Bing(BaseProvider):
+class Bing(AsyncGeneratorProvider):
url = "https://bing.com/chat"
supports_gpt_4 = True
working=True
@@ -20,53 +15,50 @@ class Bing(BaseProvider):
def create_completion(
model: str,
messages: list[dict[str, str]],
- stream: bool,
- **kwargs: Any
- ) -> CreateResult:
- yield from run(create(messages, **kwargs))
-
-def create(
- messages: list[dict[str, str]],
- cookies: dict = {}
- ):
- if len(messages) < 2:
- prompt = messages[0]["content"]
- context = None
-
- else:
- prompt = messages[-1]["content"]
- context = convert(messages[:-1])
-
- if not cookies:
- cookies = {
- 'MUID': '',
- 'BCP': '',
- 'MUIDB': '',
- 'USRLOC': '',
- 'SRCHD': 'AF=hpcodx',
- 'MMCASM': '',
- '_UR': '',
- 'ANON': '',
- 'NAP': '',
- 'ABDEF': '',
- 'PPLState': '1',
- 'KievRPSSecAuth': '',
- '_U': '',
- 'SUID': '',
- '_EDGE_S': '',
- 'WLS': '',
- '_HPVN': '',
- '_SS': '',
- '_clck': '',
- 'SRCHUSR': '',
- '_RwBf': '',
- 'SRCHHPGUSR': '',
- 'ipv6': '',
- }
+ cookies: dict = None,
+ **kwargs
+ ) -> AsyncGenerator:
+
+ if len(messages) < 2:
+ prompt = messages[0]["content"]
+ context = None
+
+ else:
+ prompt = messages[-1]["content"]
+ context = create_context(messages[:-1])
+ if cookies is None:
+ #TODO: Will implement proper cookie retrieval later and use a try-except mechanism in 'stream_generate' instead of defaulting the cookie value like this
+ #cookies = get_cookies(".bing.com")
+ cookies =
+ {
+ 'MUID': '',
+ 'BCP': '',
+ 'MUIDB': '',
+ 'USRLOC': '',
+ 'SRCHD': 'AF=hpcodx',
+ 'MMCASM': '',
+ '_UR': '',
+ 'ANON': '',
+ 'NAP': '',
+ 'ABDEF': '',
+ 'PPLState': '1',
+ 'KievRPSSecAuth': '',
+ '_U': '',
+ 'SUID': '',
+ '_EDGE_S': '',
+ 'WLS': '',
+ '_HPVN': '',
+ '_SS': '',
+ '_clck': '',
+ 'SRCHUSR': '',
+ '_RwBf': '',
+ 'SRCHHPGUSR': '',
+ 'ipv6': '',
+ }
- return stream_generate(prompt, context, cookies)
+ return stream_generate(prompt, context, cookies)
-def convert(messages: list[dict[str, str]]):
+def create_context(messages: list[dict[str, str]]):
context = ""
for message in messages: