返回提交历史
Modified
g4f/models.py
+152
-148
Modified
testing/test_chat_completion.py
+6
-5
XFEstudio/gpt4free
some more things
6ba09246
代码差异
2 个文件
+158
-153
@@ -1,15 +1,15 @@
1
from __future__ import annotations
1
from __future__ import annotations
2
2
from dataclasses import dataclass
3
from .typing import Union
4
from .Provider import BaseProvider, RetryProvider
5
from .Provider import (
3
from .typing import Union
4
from .Provider import BaseProvider, RetryProvider
5
from .Provider import (
6
6
ChatgptLogin,
7
ChatgptAi,
8
ChatBase,
9
Vercel,
10
DeepAi,
11
Aivvm,
12
Bard,
7
ChatgptAi,
8
ChatBase,
9
Vercel,
10
DeepAi,
11
Aivvm,
12
Bard,
13
13
H2o,
14
14
GptGo,
15
15
Bing,
@@ -24,237 +24,241 @@ from .Provider import (
24
24
ChatgptDuo,
25
25
)
26
26
27
27
28
@dataclass(unsafe_hash=True)
28
29
class Model:
29
30
name: str
30
31
base_provider: str
31
32
best_provider: Union[type[BaseProvider], RetryProvider] = None
32
33
34
33
35
# Config for HuggingChat, OpenAssistant
34
36
# Works for Liaobots, H2o, OpenaiChat, Yqcloud, You
35
37
default = Model(
36
name = "",
37
base_provider = "",
38
best_provider = RetryProvider([
39
Bing, # Not fully GPT 3 or 4
40
PerplexityAi, # Adds references to sources
41
Wewordle, # Responds with markdown
42
Yqcloud, # Answers short questions in chinese
43
ChatBase, # Don't want to answer creatively
44
ChatgptDuo, # Include search results
38
name="",
39
base_provider="",
40
best_provider=RetryProvider([
41
Bing, # Not fully GPT 3 or 4
42
PerplexityAi, # Adds references to sources
43
Wewordle, # Responds with markdown
44
Yqcloud, # Answers short questions in chinese
45
ChatBase, # Don't want to answer creatively
46
ChatgptDuo, # Include search results
45
47
DeepAi, ChatgptLogin, ChatgptAi, Aivvm, GptGo, AItianhu, AItianhuSpace, Aichat, Myshell, Aibn,
46
48
])
47
49
)
48
50
49
51
# GPT-3.5 / GPT-4
50
52
gpt_35_turbo = Model(
51
name = 'gpt-3.5-turbo',
52
base_provider = 'openai',
53
best_provider = RetryProvider([
53
name='gpt-3.5-turbo',
54
base_provider='openai',
55
best_provider=RetryProvider([
54
56
DeepAi, ChatgptLogin, ChatgptAi, Aivvm, GptGo, AItianhu, Aichat, AItianhuSpace, Myshell, Aibn,
55
57
])
56
58
)
57
59
58
60
gpt_4 = Model(
59
name = 'gpt-4',
60
base_provider = 'openai',
61
best_provider = RetryProvider([
61
name='gpt-4',
62
base_provider='openai',
63
best_provider=RetryProvider([
62
64
Myshell, AItianhuSpace, Aivvm
63
65
])
64
66
)
65
67
66
68
# Bard
67
69
palm = Model(
68
name = 'palm',
69
base_provider = 'google',
70
best_provider = Bard)
70
name='palm',
71
base_provider='google',
72
best_provider=Bard)
71
73
72
74
# H2o
73
75
falcon_7b = Model(
74
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
75
base_provider = 'huggingface',
76
best_provider = H2o)
76
name='h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
77
base_provider='huggingface',
78
best_provider=H2o)
77
79
78
80
falcon_40b = Model(
79
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
80
base_provider = 'huggingface',
81
best_provider = H2o)
81
name='h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
82
base_provider='huggingface',
83
best_provider=H2o)
82
84
83
85
llama_13b = Model(
84
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b',
85
base_provider = 'huggingface',
86
best_provider = H2o)
86
name='h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b',
87
base_provider='huggingface',
88
best_provider=H2o)
87
89
88
90
# Vercel
89
91
claude_instant_v1 = Model(
90
name = 'claude-instant-v1',
91
base_provider = 'anthropic',
92
best_provider = Vercel)
92
name='claude-instant-v1',
93
base_provider='anthropic',
94
best_provider=Vercel)
93
95
94
96
claude_v1 = Model(
95
name = 'claude-v1',
96
base_provider = 'anthropic',
97
best_provider = Vercel)
97
name='claude-v1',
98
base_provider='anthropic',
99
best_provider=Vercel)
98
100
99
101
claude_v2 = Model(
100
name = 'claude-v2',
101
base_provider = 'anthropic',
102
best_provider = Vercel)
102
name='claude-v2',
103
base_provider='anthropic',
104
best_provider=Vercel)
103
105
104
106
command_light_nightly = Model(
105
name = 'command-light-nightly',
106
base_provider = 'cohere',
107
best_provider = Vercel)
107
name='command-light-nightly',
108
base_provider='cohere',
109
best_provider=Vercel)
108
110
109
111
command_nightly = Model(
110
name = 'command-nightly',
111
base_provider = 'cohere',
112
best_provider = Vercel)
112
name='command-nightly',
113
base_provider='cohere',
114
best_provider=Vercel)
113
115
114
116
gpt_neox_20b = Model(
115
name = 'EleutherAI/gpt-neox-20b',
116
base_provider = 'huggingface',
117
best_provider = Vercel)
117
name='EleutherAI/gpt-neox-20b',
118
base_provider='huggingface',
119
best_provider=Vercel)
118
120
119
121
oasst_sft_1_pythia_12b = Model(
120
name = 'OpenAssistant/oasst-sft-1-pythia-12b',
121
base_provider = 'huggingface',
122
best_provider = Vercel)
122
name='OpenAssistant/oasst-sft-1-pythia-12b',
123
base_provider='huggingface',
124
best_provider=Vercel)
123
125
124
126
oasst_sft_4_pythia_12b_epoch_35 = Model(
125
name = 'OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5',
126
base_provider = 'huggingface',
127
best_provider = Vercel)
127
name='OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5',
128
base_provider='huggingface',
129
best_provider=Vercel)
128
130
129
131
santacoder = Model(
130
name = 'bigcode/santacoder',
131
base_provider = 'huggingface',
132
best_provider = Vercel)
132
name='bigcode/santacoder',
133
base_provider='huggingface',
134
best_provider=Vercel)
133
135
134
136
bloom = Model(
135
name = 'bigscience/bloom',
136
base_provider = 'huggingface',
137
best_provider = Vercel)
137
name='bigscience/bloom',
138
base_provider='huggingface',
139
best_provider=Vercel)
138
140
139
141
flan_t5_xxl = Model(
140
name = 'google/flan-t5-xxl',
141
base_provider = 'huggingface',
142
best_provider = Vercel)
142
name='google/flan-t5-xxl',
143
base_provider='huggingface',
144
best_provider=Vercel)
143
145
144
146
code_davinci_002 = Model(
145
name = 'code-davinci-002',
146
base_provider = 'openai',
147
best_provider = Vercel)
147
name='code-davinci-002',
148
base_provider='openai',
149
best_provider=Vercel)
148
150
149
151
gpt_35_turbo_16k = Model(
150
name = 'gpt-3.5-turbo-16k',
151
base_provider = 'openai',
152
best_provider = Aivvm)
152
name='gpt-3.5-turbo-16k',
153
base_provider='openai',
154
best_provider=Aivvm)
153
155
154
156
gpt_35_turbo_16k_0613 = Model(
155
name = 'gpt-3.5-turbo-16k-0613',
156
base_provider = 'openai')
157
name='gpt-3.5-turbo-16k-0613',
158
base_provider='openai')
157
159
158
160
gpt_35_turbo_0613 = Model(
159
name = 'gpt-3.5-turbo-0613',
160
base_provider = 'openai',
161
best_provider = RetryProvider([
161
name='gpt-3.5-turbo-0613',
162
base_provider='openai',
163
best_provider=RetryProvider([
162
164
Aivvm, ChatgptLogin
163
165
])
164
166
)
165
167
166
168
gpt_4_0613 = Model(
167
name = 'gpt-4-0613',
168
base_provider = 'openai',
169
best_provider = Aivvm)
169
name='gpt-4-0613',
170
base_provider='openai',
171
best_provider=Aivvm)
170
172
171
173
gpt_4_32k = Model(
172
name = 'gpt-4-32k',
173
base_provider = 'openai',
174
best_provider = Aivvm)
174
name='gpt-4-32k',
175
base_provider='openai',
176
best_provider=Aivvm)
175
177
176
178
gpt_4_32k_0613 = Model(
177
name = 'gpt-4-32k-0613',
178
base_provider = 'openai',
179
best_provider = Aivvm)
179
name='gpt-4-32k-0613',
180
base_provider='openai',
181
best_provider=Aivvm)
180
182
181
183
text_ada_001 = Model(
182
name = 'text-ada-001',
183
base_provider = 'openai',
184
best_provider = Vercel)
184
name='text-ada-001',
185
base_provider='openai',
186
best_provider=Vercel)
185
187
186
188
text_babbage_001 = Model(
187
name = 'text-babbage-001',
188
base_provider = 'openai',
189
best_provider = Vercel)
189
name='text-babbage-001',
190
base_provider='openai',
191
best_provider=Vercel)
190
192
191
193
text_curie_001 = Model(
192
name = 'text-curie-001',
193
base_provider = 'openai',
194
best_provider = Vercel)
194
name='text-curie-001',
195
base_provider='openai',
196
best_provider=Vercel)
195
197
196
198
text_davinci_002 = Model(
197
name = 'text-davinci-002',
198
base_provider = 'openai',
199
best_provider = Vercel)
199
name='text-davinci-002',
200
base_provider='openai',
201
best_provider=Vercel)
200
202
201
203
text_davinci_003 = Model(
202
name = 'text-davinci-003',
203
base_provider = 'openai',
204
best_provider = Vercel)
204
name='text-davinci-003',
205
base_provider='openai',
206
best_provider=Vercel)
205
207
206
208
llama13b_v2_chat = Model(
207
name = 'replicate:a16z-infra/llama13b-v2-chat',
208
base_provider = 'replicate',
209
best_provider = Vercel)
209
name='replicate:a16z-infra/llama13b-v2-chat',
210
base_provider='replicate',
211
best_provider=Vercel)
210
212
211
213
llama7b_v2_chat = Model(
212
name = 'replicate:a16z-infra/llama7b-v2-chat',
213
base_provider = 'replicate',
214
best_provider = Vercel)
214
name='replicate:a16z-infra/llama7b-v2-chat',
215
base_provider='replicate',
216
best_provider=Vercel)
215
217
216
218
217
219
class ModelUtils:
218
220
convert: dict[str, Model] = {
219
221
# gpt-3.5 / gpt-4
220
'gpt-3.5-turbo' : gpt_35_turbo,
221
'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
222
'gpt-4' : gpt_4,
223
'gpt-4-0613' : gpt_4_0613,
224
'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
225
222
'gpt-3.5-turbo': gpt_35_turbo,
223
'gpt-3.5-turbo-16k': gpt_35_turbo_16k,
224
'gpt-3.5-turbo-16k-0613': gpt_35_turbo_16k_0613,
225
'gpt-4': gpt_4,
226
'gpt-4-0613': gpt_4_0613,
227
'gpt-4-32k': gpt_4_32k,
228
'gpt-4-32k-0613': gpt_4_32k_0613,
229
226
230
# Bard
227
'palm2' : palm,
228
'palm' : palm,
229
'google' : palm,
230
'google-bard' : palm,
231
'google-palm' : palm,
232
'bard' : palm,
233
231
'palm2': palm,
232
'palm': palm,
233
'google': palm,
234
'google-bard': palm,
235
'google-palm': palm,
236
'bard': palm,
237
234
238
# H2o
235
'falcon-40b' : falcon_40b,
236
'falcon-7b' : falcon_7b,
237
'llama-13b' : llama_13b,
238
239
'falcon-40b': falcon_40b,
240
'falcon-7b': falcon_7b,
241
'llama-13b': llama_13b,
242
239
243
# Vercel
240
'claude-instant-v1' : claude_instant_v1,
241
'claude-v1' : claude_v1,
242
'claude-v2' : claude_v2,
243
'command-nightly' : command_nightly,
244
'gpt-neox-20b' : gpt_neox_20b,
245
'santacoder' : santacoder,
246
'bloom' : bloom,
247
'flan-t5-xxl' : flan_t5_xxl,
248
'code-davinci-002' : code_davinci_002,
249
'text-ada-001' : text_ada_001,
250
'text-babbage-001' : text_babbage_001,
251
'text-curie-001' : text_curie_001,
252
'text-davinci-002' : text_davinci_002,
253
'text-davinci-003' : text_davinci_003,
254
'llama13b-v2-chat' : llama13b_v2_chat,
255
'llama7b-v2-chat' : llama7b_v2_chat,
256
257
'oasst-sft-1-pythia-12b' : oasst_sft_1_pythia_12b,
258
'oasst-sft-4-pythia-12b-epoch-3.5' : oasst_sft_4_pythia_12b_epoch_35,
259
'command-light-nightly' : command_light_nightly,
244
'claude-instant-v1': claude_instant_v1,
245
'claude-v1': claude_v1,
246
'claude-v2': claude_v2,
247
'command-nightly': command_nightly,
248
'gpt-neox-20b': gpt_neox_20b,
249
'santacoder': santacoder,
250
'bloom': bloom,
251
'flan-t5-xxl': flan_t5_xxl,
252
'code-davinci-002': code_davinci_002,
253
'text-ada-001': text_ada_001,
254
'text-babbage-001': text_babbage_001,
255
'text-curie-001': text_curie_001,
256
'text-davinci-002': text_davinci_002,
257
'text-davinci-003': text_davinci_003,
258
'llama13b-v2-chat': llama13b_v2_chat,
259
'llama7b-v2-chat': llama7b_v2_chat,
260
261
'oasst-sft-1-pythia-12b': oasst_sft_1_pythia_12b,
262
'oasst-sft-4-pythia-12b-epoch-3.5': oasst_sft_4_pythia_12b_epoch_35,
263
'command-light-nightly': command_light_nightly,
260
264
}
@@ -7,19 +7,20 @@ import g4f, asyncio
7
7
8
8
print("create:", end=" ", flush=True)
9
9
for response in g4f.ChatCompletion.create(
10
model=g4f.models.gpt_4,
11
provider=g4f.Provider.Vercel,
12
messages=[{"role": "user", "content": "hello!"}],
10
model=g4f.models.gpt_4_32k_0613,
11
provider=g4f.Provider.Aivvm,
12
messages=[{"role": "user", "content": "send a bunch of emojis. i want to test something"}],
13
temperature=0.0,
14
stream=True
13
15
):
14
16
print(response, end="", flush=True)
15
17
print()
16
18
17
19
async def run_async():
18
20
response = await g4f.ChatCompletion.create_async(
19
model=g4f.models.gpt_4_32k_0613,
21
model=g4f.models.gpt_35_turbo_16k_0613,
20
22
provider=g4f.Provider.Aivvm,
21
23
messages=[{"role": "user", "content": "hello!"}],
22
temperature=0.0
23
24
)
24
25
print("create_async:", response)
25
26