返回提交历史
Modified
g4f/Provider/Cloudflare.py
+14
-33
Modified
g4f/models.py
+1
-30
XFEstudio/gpt4free
Update (g4f/models.py g4f/Provider/Cloudflare.py)
8e8410c8
代码差异
2 个文件
+15
-63
@@ -1,5 +1,6 @@
1
1
from __future__ import annotations
2
2
3
from aiohttp import ClientSession
3
4
import asyncio
4
5
import json
5
6
import uuid
@@ -10,7 +11,6 @@ from ..typing import AsyncResult, Messages
10
11
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
11
12
from .helper import format_prompt
12
13
13
14
14
class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
15
15
label = "Cloudflare AI"
16
16
url = "https://playground.ai.cloudflare.com"
@@ -22,8 +22,6 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
22
22
23
23
default_model = '@cf/meta/llama-3.1-8b-instruct-awq'
24
24
models = [
25
'@hf/google/gemma-7b-it',
26
27
25
'@cf/meta/llama-2-7b-chat-fp16',
28
26
'@cf/meta/llama-2-7b-chat-int8',
29
27
@@ -38,21 +36,12 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
38
36
39
37
'@hf/mistral/mistral-7b-instruct-v0.2',
40
38
41
'@cf/microsoft/phi-2',
42
43
'@cf/qwen/qwen1.5-0.5b-chat',
44
'@cf/qwen/qwen1.5-1.8b-chat',
45
'@cf/qwen/qwen1.5-14b-chat-awq',
46
39
'@cf/qwen/qwen1.5-7b-chat-awq',
47
40
48
41
'@cf/defog/sqlcoder-7b-2',
49
42
]
50
43
51
44
model_aliases = {
52
#"falcon-7b": "@cf/tiiuae/falcon-7b-instruct",
53
54
"gemma-7b": "@hf/google/gemma-7b-it",
55
56
45
"llama-2-7b": "@cf/meta/llama-2-7b-chat-fp16",
57
46
"llama-2-7b": "@cf/meta/llama-2-7b-chat-int8",
58
47
@@ -65,11 +54,6 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
65
54
66
55
"llama-3.2-1b": "@cf/meta/llama-3.2-1b-instruct",
67
56
68
"phi-2": "@cf/microsoft/phi-2",
69
70
"qwen-1.5-0-5b": "@cf/qwen/qwen1.5-0.5b-chat",
71
"qwen-1.5-1-8b": "@cf/qwen/qwen1.5-1.8b-chat",
72
"qwen-1.5-14b": "@cf/qwen/qwen1.5-14b-chat-awq",
73
57
"qwen-1.5-7b": "@cf/qwen/qwen1.5-7b-chat-awq",
74
58
75
59
#"sqlcoder-7b": "@cf/defog/sqlcoder-7b-2",
@@ -90,6 +74,7 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
90
74
model: str,
91
75
messages: Messages,
92
76
proxy: str = None,
77
max_tokens: int = 2048,
93
78
**kwargs
94
79
) -> AsyncResult:
95
80
model = cls.get_model(model)
@@ -117,20 +102,19 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
117
102
118
103
scraper = cloudscraper.create_scraper()
119
104
120
121
prompt = messages[-1]['content']
122
123
105
data = {
124
106
"messages": [
125
{"role": "user", "content": prompt}
107
{"role": "user", "content": format_prompt(messages)}
126
108
],
127
109
"lora": None,
128
110
"model": model,
129
"max_tokens": 2048,
111
"max_tokens": max_tokens,
130
112
"stream": True
131
113
}
132
114
133
max_retries = 5
115
max_retries = 3
116
full_response = ""
117
134
118
for attempt in range(max_retries):
135
119
try:
136
120
response = scraper.post(
@@ -138,31 +122,28 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin):
138
122
headers=headers,
139
123
cookies=cookies,
140
124
json=data,
141
stream=True
125
stream=True,
126
proxies={'http': proxy, 'https': proxy} if proxy else None
142
127
)
143
128
144
129
if response.status_code == 403:
145
130
await asyncio.sleep(2 ** attempt)
146
131
continue
147
132
148
133
response.raise_for_status()
149
134
150
skip_tokens = ["</s>", "<s>", "</s>", "[DONE]", "<|endoftext|>", "<|end|>"]
151
filtered_response = ""
152
153
135
for line in response.iter_lines():
154
136
if line.startswith(b'data: '):
155
137
if line == b'data: [DONE]':
138
if full_response:
139
yield full_response
156
140
break
157
141
try:
158
142
content = json.loads(line[6:].decode('utf-8'))
159
response_text = content['response']
160
if not any(token in response_text for token in skip_tokens):
161
filtered_response += response_text
143
if 'response' in content and content['response'] != '</s>':
144
yield content['response']
162
145
except Exception:
163
146
continue
164
165
yield filtered_response.strip()
166
147
break
167
148
except Exception as e:
168
149
if attempt == max_retries - 1:
@@ -250,7 +250,7 @@ hermes_3 = Model(
250
250
phi_2 = Model(
251
251
name = "phi-2",
252
252
base_provider = "Microsoft",
253
best_provider = IterListProvider([Cloudflare, Airforce])
253
best_provider = IterListProvider([Airforce])
254
254
)
255
255
256
256
phi_3_5_mini = Model(
@@ -286,12 +286,6 @@ gemma_2b = Model(
286
286
best_provider = IterListProvider([ReplicateHome])
287
287
)
288
288
289
gemma_7b = Model(
290
name = 'gemma-7b',
291
base_provider = 'Google',
292
best_provider = Cloudflare
293
)
294
295
289
296
290
### Anthropic ###
297
291
claude_2_1 = Model(
@@ -358,30 +352,12 @@ command_r_plus = Model(
358
352
359
353
### Qwen ###
360
354
# qwen 1_5
361
qwen_1_5_5b = Model(
362
name = 'qwen-1.5-5b',
363
base_provider = 'Qwen',
364
best_provider = Cloudflare
365
)
366
367
355
qwen_1_5_7b = Model(
368
356
name = 'qwen-1.5-7b',
369
357
base_provider = 'Qwen',
370
358
best_provider = Cloudflare
371
359
)
372
360
373
qwen_1_5_8b = Model(
374
name = 'qwen-1.5-8b',
375
base_provider = 'Qwen',
376
best_provider = Cloudflare
377
)
378
379
qwen_1_5_14b = Model(
380
name = 'qwen-1.5-14b',
381
base_provider = 'Qwen',
382
best_provider = IterListProvider([Cloudflare])
383
)
384
385
361
# qwen 2
386
362
qwen_2_72b = Model(
387
363
name = 'qwen-2-72b',
@@ -690,7 +666,6 @@ class ModelUtils:
690
666
691
667
692
668
### Microsoft ###
693
'phi-2': phi_2,
694
669
'phi-3.5-mini': phi_3_5_mini,
695
670
696
671
@@ -702,7 +677,6 @@ class ModelUtils:
702
677
703
678
# gemma
704
679
'gemma-2b': gemma_2b,
705
'gemma-7b': gemma_7b,
706
680
707
681
708
682
### Anthropic ###
@@ -737,10 +711,7 @@ class ModelUtils:
737
711
738
712
### Qwen ###
739
713
# qwen 1.5
740
'qwen-1.5-5b': qwen_1_5_5b,
741
714
'qwen-1.5-7b': qwen_1_5_7b,
742
'qwen-1.5-8b': qwen_1_5_8b,
743
'qwen-1.5-14b': qwen_1_5_14b,
744
715
745
716
# qwen 2
746
717
'qwen-2-72b': qwen_2_72b,