From 87c7db73a297b50e68ad7ca02673cfe749984841 Mon Sep 17 00:00:00 2001 From: Luneye <73485421+Luneye@users.noreply.github.com> Date: Mon, 28 Aug 2023 16:31:18 +0200 Subject: Update Bing.py Added support the async function Will implement proper cookie retrieval later but Bing is working for now --- g4f/Provider/Bing.py | 98 ++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 53 deletions(-) (limited to 'g4f/Provider') 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: -- cgit v1.2.3