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

XFEstudio/gpt4free

Update (g4f/models.py g4f/Provider/airforce/ g4f/Provider/Airforce.py)

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

代码差异

4 个文件 +39 -38
Modified g4f/Provider/Airforce.py +2 -2
@@ -12,8 +12,8 @@ from .airforce.AirforceImage import AirforceImage
12 12
13 13 class Airforce(AsyncGeneratorProvider, ProviderModelMixin):
14 14 url = "https://api.airforce"
15 api_endpoint_completions = AirforceChat.api_endpoint_completions
16 api_endpoint_imagine2 = AirforceImage.api_endpoint_imagine2
15 api_endpoint_completions = AirforceChat.api_endpoint
16 api_endpoint_imagine2 = AirforceImage.api_endpoint
17 17 working = True
18 18 supports_stream = AirforceChat.supports_stream
19 19 supports_system_message = AirforceChat.supports_system_message
Modified g4f/Provider/airforce/AirforceChat.py +5 -5
@@ -46,7 +46,7 @@ def split_messages(messages: Messages, chunk_size: int = 995) -> Messages:
46 46
47 47 class AirforceChat(AsyncGeneratorProvider, ProviderModelMixin):
48 48 label = "AirForce Chat"
49 api_endpoint_completions = "https://api.airforce/chat/completions" # Замініть на реальний ендпоінт
49 api_endpoint = "https://api.airforce/chat/completions"
50 50 supports_stream = True
51 51 supports_system_message = True
52 52 supports_message_history = True
@@ -118,8 +118,8 @@ class AirforceChat(AsyncGeneratorProvider, ProviderModelMixin):
118 118 'openchat-3.5-0106',
119 119
120 120 # qwen
121 #'Qwen1.5-72B-Chat', Пуста відповідь
122 #'Qwen1.5-110B-Chat', Пуста відповідь
121 #'Qwen1.5-72B-Chat', # Empty answer
122 #'Qwen1.5-110B-Chat', # Empty answer
123 123 'Qwen2-72B-Instruct',
124 124 'Qwen2.5-7B-Instruct-Turbo',
125 125 'Qwen2.5-72B-Instruct-Turbo',
@@ -350,7 +350,7 @@ class AirforceChat(AsyncGeneratorProvider, ProviderModelMixin):
350 350 }
351 351
352 352 async with ClientSession(headers=headers) as session:
353 async with session.post(cls.api_endpoint_completions, json=data, proxy=proxy) as response:
353 async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response:
354 354 response.raise_for_status()
355 355 text = ""
356 356 if stream:
@@ -362,7 +362,7 @@ class AirforceChat(AsyncGeneratorProvider, ProviderModelMixin):
362 362 chunk = json.loads(json_str)
363 363 if 'choices' in chunk and chunk['choices']:
364 364 content = chunk['choices'][0].get('delta', {}).get('content', '')
365 text += content # Збираємо дельти
365 text += content
366 366 except json.JSONDecodeError as e:
367 367 print(f"Error decoding JSON: {json_str}, Error: {e}")
368 368 elif line.strip() == "[DONE]":
Modified g4f/Provider/airforce/AirforceImage.py +24 -31
@@ -1,46 +1,47 @@
1 1 from __future__ import annotations
2 2
3 3 from aiohttp import ClientSession
4 from urllib.parse import urlencode
4 5 import random
5 6
6 7 from ...typing import AsyncResult, Messages
7 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin
8 8 from ...image import ImageResponse
9 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin
9 10
10 11
11 12 class AirforceImage(AsyncGeneratorProvider, ProviderModelMixin):
12 13 label = "Airforce Image"
13 14 #url = "https://api.airforce"
14 api_endpoint_imagine2 = "https://api.airforce/imagine2"
15 api_endpoint = "https://api.airforce/imagine2"
15 16 #working = True
16 17
17 18 default_model = 'flux'
18 19 image_models = [
19 20 'flux',
20 'flux-realism',
21 'flux-realism',
21 22 'flux-anime',
22 23 'flux-3d',
23 24 'flux-disney',
24 25 'flux-pixel',
25 26 'flux-4o',
26 27 'any-dark',
28 'any-uncensored',
27 29 'stable-diffusion-xl-base',
28 30 'stable-diffusion-xl-lightning',
31 'Flux-1.1-Pro',
29 32 ]
30 33 models = [*image_models]
31 34
32 35 model_aliases = {
33 36 "sdxl": "stable-diffusion-xl-base",
34 "sdxl": "stable-diffusion-xl-lightning",
37 "sdxl": "stable-diffusion-xl-lightning",
38 "flux-pro": "Flux-1.1-Pro",
35 39 }
36
37
40
38 41 @classmethod
39 42 def get_model(cls, model: str) -> str:
40 43 if model in cls.models:
41 44 return model
42 elif model in cls.model_aliases:
43 return cls.model_aliases[model]
44 45 else:
45 46 return cls.default_model
46 47
@@ -49,49 +50,41 @@ class AirforceImage(AsyncGeneratorProvider, ProviderModelMixin):
49 50 cls,
50 51 model: str,
51 52 messages: Messages,
52 size: str = '1:1',
53 size: str = '1:1', # "1:1", "16:9", "9:16", "21:9", "9:21", "1:2", "2:1"
53 54 proxy: str = None,
54 55 **kwargs
55 56 ) -> AsyncResult:
56 57 model = cls.get_model(model)
57 58
58 59 headers = {
59 'accept': '*/*',
60 'accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
60 61 'accept-language': 'en-US,en;q=0.9',
61 'authorization': 'Bearer missing api key',
62 62 'cache-control': 'no-cache',
63 'origin': 'https://llmplayground.net',
63 'dnt': '1',
64 64 'pragma': 'no-cache',
65 65 'priority': 'u=1, i',
66 66 'referer': 'https://llmplayground.net/',
67 67 'sec-ch-ua': '"Not?A_Brand";v="99", "Chromium";v="130"',
68 68 'sec-ch-ua-mobile': '?0',
69 69 'sec-ch-ua-platform': '"Linux"',
70 'sec-fetch-dest': 'empty',
71 'sec-fetch-mode': 'cors',
70 'sec-fetch-dest': 'image',
71 'sec-fetch-mode': 'no-cors',
72 72 'sec-fetch-site': 'cross-site',
73 73 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36'
74 74 }
75
75
76 76 async with ClientSession(headers=headers) as session:
77 prompt = messages[-1]['content']
78 seed = random.randint(0, 4294967295)
77 seed = random.randint(0, 58463)
79 78 params = {
80 79 'model': model,
81 'prompt': prompt,
80 'prompt': messages[-1]["content"],
82 81 'size': size,
83 'seed': str(seed)
82 'seed': seed
84 83 }
85 async with session.get(cls.api_endpoint_imagine2, params=params, proxy=proxy) as response:
86 response.raise_for_status()
87 if response.status == 200:
88 content_type = response.headers.get('Content-Type', '')
89 if 'image' in content_type:
90 image_url = str(response.url)
91 yield ImageResponse(image_url, alt="Airforce generated image")
92 else:
93 content = await response.text()
94 yield f"Unexpected content type: {content_type}\nResponse content: {content}"
84 full_url = f"{cls.api_endpoint}?{urlencode(params)}"
85
86 async with session.get(full_url, headers=headers, proxy=proxy) as response:
87 if response.status == 200 and response.headers.get('content-type', '').startswith('image'):
88 yield ImageResponse(images=[full_url], alt="Generated Image")
95 89 else:
96 error_content = await response.text()
97 yield f"Error: {error_content}"
90 raise Exception(f"Error: status {response.status}, content type {response.headers.get('content-type')}")
Modified g4f/models.py +8 -0
@@ -688,6 +688,13 @@ flux = Model(
688 688
689 689 )
690 690
691 flux_pro = Model(
692 name = 'flux-pro',
693 base_provider = 'Flux AI',
694 best_provider = IterListProvider([Airforce])
695
696 )
697
691 698 flux_realism = Model(
692 699 name = 'flux-realism',
693 700 base_provider = 'Flux AI',
@@ -983,6 +990,7 @@ class ModelUtils:
983 990
984 991 ### Flux AI ###
985 992 'flux': flux,
993 'flux-pro': flux_pro,
986 994 'flux-realism': flux_realism,
987 995 'flux-anime': flux_anime,
988 996 'flux-3d': flux_3d,