From b3d473c0af04f082cad90f397cb5b946fc2e8d80 Mon Sep 17 00:00:00 2001 From: najam-tariq <103676132+najam-tariq@users.noreply.github.com> Date: Wed, 19 Jul 2023 07:44:15 -0400 Subject: Update Provider.DfeHub to consider rate-limit --- g4f/Provider/Providers/DfeHub.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'g4f') diff --git a/g4f/Provider/Providers/DfeHub.py b/g4f/Provider/Providers/DfeHub.py index a1488bc5..afc9861a 100644 --- a/g4f/Provider/Providers/DfeHub.py +++ b/g4f/Provider/Providers/DfeHub.py @@ -1,6 +1,8 @@ import os, requests from ...typing import sha256, Dict, get_type_hints import json +import re +import time url = "https://chat.dfehub.com/api/chat" model = ['gpt-3.5-turbo'] @@ -34,12 +36,18 @@ def _create_completion(model: str, messages: list, stream: bool, **kwargs): 'presence_penalty': 0, 'frequency_penalty': 0, 'top_p': 1, + "stream": True, } - response = requests.post('https://chat.dfehub.com/api/openai/v1/chat/completions', headers=headers, json=json_data) for chunk in response.iter_lines(): + if b'detail' in chunk: + delay = re.findall(r"\d+\.\d+", chunk.decode()) + delay = float(delay[-1]) + print(f"Provider.DfeHub::Rate Limit Reached::Waiting {delay} seconds") + time.sleep(delay) + yield from _create_completion(model, messages, stream, **kwargs) if b'content' in chunk: data = json.loads(chunk.decode().split('data: ')[1]) yield (data['choices'][0]['delta']['content']) -- cgit v1.2.3