XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Restored providers (g4f/Provider/nexra/NexraChatGPT.py)

817d36e6
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

1 个文件 +34 -33
Modified g4f/Provider/nexra/NexraChatGPT.py +34 -33
@@ -1,22 +1,20 @@
1 1 from __future__ import annotations
2 2
3 from aiohttp import ClientSession
4 3 import json
4 import requests
5 5
6 from ...typing import AsyncResult, Messages
7 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin
6 from ...typing import CreateResult, Messages
7 from ..base_provider import ProviderModelMixin, AbstractProvider
8 8 from ..helper import format_prompt
9 9
10
11 class NexraChatGPT(AsyncGeneratorProvider, ProviderModelMixin):
10 class NexraChatGPT(AbstractProvider, ProviderModelMixin):
12 11 label = "Nexra ChatGPT"
13 12 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
14 13 api_endpoint = "https://nexra.aryahcr.cc/api/chat/gpt"
15 working = False
16 supports_stream = False
14 working = True
17 15
18 16 default_model = 'gpt-3.5-turbo'
19 models = ['gpt-4', 'gpt-4-0613', 'gpt-4-0314', 'gpt-4-32k-0314', 'gpt-3.5-turbo', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-0301', 'text-davinci-003', 'text-davinci-002', 'code-davinci-002', 'gpt-3', 'text-curie-001', 'text-babbage-001', 'text-ada-001', 'davinci', 'curie', 'babbage', 'ada', 'babbage-002', 'davinci-002']
17 models = ['gpt-4', 'gpt-4-0613', 'gpt-4-0314', 'gpt-4-32k-0314', default_model, 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-0301', 'text-davinci-003', 'text-davinci-002', 'code-davinci-002', 'gpt-3', 'text-curie-001', 'text-babbage-001', 'text-ada-001', 'davinci', 'curie', 'babbage', 'ada', 'babbage-002', 'davinci-002']
20 18
21 19 model_aliases = {
22 20 "gpt-4": "gpt-4-0613",
@@ -44,7 +42,6 @@ class NexraChatGPT(AsyncGeneratorProvider, ProviderModelMixin):
44 42 "gpt-3": "davinci-002",
45 43 }
46 44
47
48 45 @classmethod
49 46 def get_model(cls, model: str) -> str:
50 47 if model in cls.models:
@@ -53,35 +50,39 @@ class NexraChatGPT(AsyncGeneratorProvider, ProviderModelMixin):
53 50 return cls.model_aliases[model]
54 51 else:
55 52 return cls.default_model
56
53
57 54 @classmethod
58 async def create_async_generator(
55 def create_completion(
59 56 cls,
60 57 model: str,
61 58 messages: Messages,
62 proxy: str = None,
59 stream: bool,
63 60 **kwargs
64 ) -> AsyncResult:
61 ) -> CreateResult:
65 62 model = cls.get_model(model)
66
63
67 64 headers = {
68 "Content-Type": "application/json"
65 'Content-Type': 'application/json'
66 }
67
68 data = {
69 "messages": [],
70 "prompt": format_prompt(messages),
71 "model": model,
72 "markdown": False
69 73 }
70 async with ClientSession(headers=headers) as session:
71 prompt = format_prompt(messages)
72 data = {
73 "messages": messages,
74 "prompt": prompt,
75 "model": model,
76 "markdown": False
77 }
78 async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response:
79 response.raise_for_status()
80 response_text = await response.text()
81 try:
82 if response_text.startswith('_'):
83 response_text = response_text[1:]
84 response_data = json.loads(response_text)
85 yield response_data.get('gpt', '')
86 except json.JSONDecodeError:
87 yield ''
74
75 response = requests.post(cls.api_endpoint, headers=headers, json=data)
76
77 return cls.process_response(response)
78
79 @classmethod
80 def process_response(cls, response):
81 if response.status_code == 200:
82 try:
83 data = response.json()
84 return data.get('gpt', '')
85 except json.JSONDecodeError:
86 return "Error: Unable to decode JSON response"
87 else:
88 return f"Error: {response.status_code}"