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

XFEstudio/gpt4free

Restored provider (g4f/Provider/nexra/NexraSD15.py)

144c7b49
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

2 个文件 +45 -34
Modified g4f/Provider/nexra/NexraSD15.py +36 -34
@@ -1,18 +1,16 @@
1 1 from __future__ import annotations
2 2
3 3 import json
4 from aiohttp import ClientSession
4 import requests
5 from ...typing import CreateResult, Messages
6 from ..base_provider import ProviderModelMixin, AbstractProvider
5 7 from ...image import ImageResponse
6 8
7 from ...typing import AsyncResult, Messages
8 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin
9
10
11 class NexraSD15(AsyncGeneratorProvider, ProviderModelMixin):
9 class NexraSD15(AbstractProvider, ProviderModelMixin):
12 10 label = "Nexra Stable Diffusion 1.5"
13 11 url = "https://nexra.aryahcr.cc/documentation/stable-diffusion/en"
14 12 api_endpoint = "https://nexra.aryahcr.cc/api/image/complements"
15 working = False
13 working = True
16 14
17 15 default_model = 'stablediffusion-1.5'
18 16 models = [default_model]
@@ -29,42 +27,46 @@ class NexraSD15(AsyncGeneratorProvider, ProviderModelMixin):
29 27 return cls.model_aliases[model]
30 28 else:
31 29 return cls.default_model
32
30
33 31 @classmethod
34 async def create_async_generator(
32 def create_completion(
35 33 cls,
36 34 model: str,
37 35 messages: Messages,
38 36 proxy: str = None,
39 37 response: str = "url", # base64 or url
40 38 **kwargs
41 ) -> AsyncResult:
39 ) -> CreateResult:
42 40 model = cls.get_model(model)
43
41
44 42 headers = {
45 "Content-Type": "application/json",
43 'Content-Type': 'application/json'
46 44 }
47 async with ClientSession(headers=headers) as session:
48 data = {
49 "prompt": messages,
50 "model": model,
51 "response": response
52 }
53 async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response:
54 response.raise_for_status()
55 text_response = await response.text()
56
57 # Clean the response by removing unexpected characters
58 cleaned_response = text_response.strip('__')
45
46 data = {
47 "prompt": messages[-1]["content"],
48 "model": model,
49 "response": response
50 }
51
52 response = requests.post(cls.api_endpoint, headers=headers, json=data)
59 53
60 if not cleaned_response.strip():
61 raise ValueError("Received an empty response from the server.")
54 result = cls.process_response(response)
55 yield result
62 56
63 try:
64 json_response = json.loads(cleaned_response)
65 image_url = json_response.get("images", [])[0]
66 # Create an ImageResponse object
67 image_response = ImageResponse(images=image_url, alt="Generated Image")
68 yield image_response
69 except json.JSONDecodeError:
70 raise ValueError("Unable to decode JSON from the received text response.")
57 @classmethod
58 def process_response(cls, response):
59 if response.status_code == 200:
60 try:
61 content = response.text.strip()
62 content = content.lstrip('_')
63 data = json.loads(content)
64 if data.get('status') and data.get('images'):
65 image_url = data['images'][0]
66 return ImageResponse(images=[image_url], alt="Generated Image")
67 else:
68 return "Error: No image URL found in the response"
69 except json.JSONDecodeError as e:
70 return f"Error: Unable to decode JSON response. Details: {str(e)}"
71 else:
72 return f"Error: {response.status_code}, Response: {response.text}"
Modified g4f/models.py +9 -0
@@ -52,6 +52,7 @@ from .Provider import (
52 52 NexraGeminiPro,
53 53 NexraMidjourney,
54 54 NexraQwen,
55 NexraSD15,
55 56 OpenaiChat,
56 57 PerplexityLabs,
57 58 Pi,
@@ -740,6 +741,13 @@ sdxl = Model(
740 741
741 742 )
742 743
744 sd_1_5 = Model(
745 name = 'sd-1.5',
746 base_provider = 'Stability AI',
747 best_provider = NexraSD15
748
749 )
750
743 751 sd_3 = Model(
744 752 name = 'sd-3',
745 753 base_provider = 'Stability AI',
@@ -1095,6 +1103,7 @@ class ModelUtils:
1095 1103
1096 1104 ### Stability AI ###
1097 1105 'sdxl': sdxl,
1106 'sd-1.5': sd_1_5,
1098 1107 'sd-3': sd_3,
1099 1108
1100 1109