返回提交历史
Modified
g4f/Provider/Bing.py
+29
-20
XFEstudio/gpt4free
Show apology in Bing
a29b3db4
代码差异
1 个文件
+29
-20
@@ -71,7 +71,12 @@ class Bing(AsyncGeneratorProvider):
71
71
72
72
gpt4_turbo = True if model.startswith("gpt-4-turbo") else False
73
73
74
return stream_generate(prompt, tone, image, context, cookies, get_connector(connector, proxy, True), proxy, web_search, gpt4_turbo, timeout)
74
return stream_generate(
75
prompt, tone, image, context, cookies,
76
get_connector(connector, proxy, True),
77
proxy, web_search, gpt4_turbo, timeout,
78
**kwargs
79
)
75
80
76
81
def create_context(messages: Messages) -> str:
77
82
"""
@@ -80,10 +85,10 @@ def create_context(messages: Messages) -> str:
80
85
:param messages: A list of message dictionaries.
81
86
:return: A string representing the context created from the messages.
82
87
"""
83
return "\n\n".join(
88
return "".join(
84
89
f"[{message['role']}]" + ("(#message)" if message['role'] != "system" else "(#additional_instructions)") + f"\n{message['content']}"
85
90
for message in messages
86
)
91
) + "\n\n"
87
92
88
93
def get_ip_address() -> str:
89
94
return f"13.{random.randint(104, 107)}.{random.randint(0, 255)}.{random.randint(0, 255)}"
@@ -312,8 +317,10 @@ async def stream_generate(
312
317
gpt4_turbo: bool = False,
313
318
timeout: int = 900,
314
319
conversation: Conversation = None,
320
raise_apology: bool = False,
315
321
max_retries: int = 5,
316
sleep_retry: int = 15
322
sleep_retry: int = 15,
323
**kwargs
317
324
):
318
325
"""
319
326
Asynchronously streams generated responses from the Bing API.
@@ -373,26 +380,28 @@ async def stream_generate(
373
380
response = json.loads(obj)
374
381
if response and response.get('type') == 1 and response['arguments'][0].get('messages'):
375
382
message = response['arguments'][0]['messages'][0]
383
print(message)
376
384
if message_id is not None and message_id != message["messageId"]:
377
385
returned_text = ''
378
386
message_id = message["messageId"]
379
387
image_response = None
380
if (message['contentOrigin'] != 'Apology'):
381
if 'adaptiveCards' in message:
382
card = message['adaptiveCards'][0]['body'][0]
383
if "text" in card:
384
response_txt = card.get('text')
385
if message.get('messageType') and "inlines" in card:
386
inline_txt = card['inlines'][0].get('text')
387
response_txt += inline_txt + '\n'
388
elif message.get('contentType') == "IMAGE":
389
prompt = message.get('text')
390
try:
391
image_client = BingCreateImages(cookies, proxy)
392
image_response = await image_client.create_async(prompt)
393
except Exception as e:
394
response_txt += f"\nhttps://www.bing.com/images/create?q={parse.quote(prompt)}"
395
do_read = False
388
if (raise_apology and message['contentOrigin'] == 'Apology'):
389
raise RuntimeError("Apology Response Error")
390
if 'adaptiveCards' in message:
391
card = message['adaptiveCards'][0]['body'][0]
392
if "text" in card:
393
response_txt = card.get('text')
394
if message.get('messageType') and "inlines" in card:
395
inline_txt = card['inlines'][0].get('text')
396
response_txt += inline_txt + '\n'
397
elif message.get('contentType') == "IMAGE":
398
prompt = message.get('text')
399
try:
400
image_client = BingCreateImages(cookies, proxy)
401
image_response = await image_client.create_async(prompt)
402
except Exception as e:
403
response_txt += f"\nhttps://www.bing.com/images/create?q={parse.quote(prompt)}"
404
do_read = False
396
405
if response_txt.startswith(returned_text):
397
406
new = response_txt[len(returned_text):]
398
407
if new != "\n":