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

XFEstudio/gpt4free

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

752cae2b
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

1 个文件 +36 -41
Modified g4f/Provider/nexra/NexraChatGptWeb.py +36 -41
@@ -1,27 +1,21 @@
1 1 from __future__ import annotations
2 2
3 from aiohttp import ClientSession, ContentTypeError
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 NexraChatGptWeb(AsyncGeneratorProvider, ProviderModelMixin):
10 class NexraChatGptWeb(AbstractProvider, ProviderModelMixin):
12 11 label = "Nexra ChatGPT Web"
13 12 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
14 api_endpoint = "https://nexra.aryahcr.cc/api/chat/{}"
15 working = False
16 supports_stream = True
13 working = True
17 14
18 default_model = 'gptweb'
15 default_model = "gptweb"
19 16 models = [default_model]
20
21 model_aliases = {
22 "gpt-4": "gptweb",
23 }
24
17 model_aliases = {"gpt-4": "gptweb"}
18 api_endpoints = {"gptweb": "https://nexra.aryahcr.cc/api/chat/gptweb"}
25 19
26 20 @classmethod
27 21 def get_model(cls, model: str) -> str:
@@ -31,37 +25,38 @@ class NexraChatGptWeb(AsyncGeneratorProvider, ProviderModelMixin):
31 25 return cls.model_aliases[model]
32 26 else:
33 27 return cls.default_model
34
28
35 29 @classmethod
36 async def create_async_generator(
30 def create_completion(
37 31 cls,
38 32 model: str,
39 33 messages: Messages,
40 proxy: str = None,
41 markdown: bool = False,
42 34 **kwargs
43 ) -> AsyncResult:
35 ) -> CreateResult:
36 model = cls.get_model(model)
37 api_endpoint = cls.api_endpoints.get(model, cls.api_endpoints[cls.default_model])
38
44 39 headers = {
45 "Content-Type": "application/json"
40 'Content-Type': 'application/json'
46 41 }
47 async with ClientSession(headers=headers) as session:
48 prompt = format_prompt(messages)
49 data = {
50 "prompt": prompt,
51 "markdown": markdown
52 }
53 model = cls.get_model(model)
54 endpoint = cls.api_endpoint.format(model)
55 async with session.post(endpoint, json=data, proxy=proxy) as response:
56 response.raise_for_status()
57 response_text = await response.text()
58
59 # Remove leading underscore if present
60 if response_text.startswith('_'):
61 response_text = response_text[1:]
62
63 try:
64 response_data = json.loads(response_text)
65 yield response_data.get('gpt', response_text)
66 except json.JSONDecodeError:
67 yield response_text
42
43 data = {
44 "prompt": format_prompt(messages),
45 "markdown": False
46 }
47
48 response = requests.post(api_endpoint, headers=headers, json=data)
49
50 return cls.process_response(response)
51
52 @classmethod
53 def process_response(cls, response):
54 if response.status_code == 200:
55 try:
56 content = response.text.lstrip('_')
57 json_response = json.loads(content)
58 return json_response.get('gpt', '')
59 except json.JSONDecodeError:
60 return "Error: Unable to decode JSON response"
61 else:
62 return f"Error: {response.status_code}"