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

XFEstudio/gpt4free

Add copilot conversation mode

f861f322
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

2 个文件 +40 -25
Modified g4f/Provider/Bing.py +29 -17
@@ -26,6 +26,7 @@ class Tones:
26 26 creative = "Creative"
27 27 balanced = "Balanced"
28 28 precise = "Precise"
29 copilot = "Balanced"
29 30
30 31 class Bing(AsyncGeneratorProvider, ProviderModelMixin):
31 32 """
@@ -35,10 +36,8 @@ class Bing(AsyncGeneratorProvider, ProviderModelMixin):
35 36 working = True
36 37 supports_message_history = True
37 38 supports_gpt_4 = True
38 default_model = Tones.balanced
39 models = [
40 getattr(Tones, key) for key in dir(Tones) if not key.startswith("__")
41 ]
39 default_model = "balanced"
40 models = [key for key in Tones.__dict__ if not key.startswith("__")]
42 41
43 42 @classmethod
44 43 def create_async_generator(
@@ -71,7 +70,7 @@ class Bing(AsyncGeneratorProvider, ProviderModelMixin):
71 70 context = create_context(messages[:-1]) if len(messages) > 1 else None
72 71 if tone is None:
73 72 tone = tone if model.startswith("gpt-4") else model
74 tone = cls.get_model(tone)
73 tone = cls.get_model("" if tone is None else tone.lower())
75 74 gpt4_turbo = True if model.startswith("gpt-4-turbo") else False
76 75
77 76 return stream_generate(
@@ -136,31 +135,32 @@ class Defaults:
136 135 ]
137 136
138 137 sliceIds = {
139 "Balanced": [
138 "balanced": [
140 139 "supllmnfe","archnewtf",
141 140 "stpstream", "stpsig", "vnextvoicecf", "scmcbase", "cmcpupsalltf", "sydtransctrl",
142 141 "thdnsrch", "220dcl1s0", "0215wcrwips0", "0305hrthrots0", "0130gpt4t",
143 142 "bingfc", "0225unsticky1", "0228scss0",
144 143 "defquerycf", "defcontrol", "3022tphpv"
145 144 ],
146 "Creative": [
145 "creative": [
147 146 "bgstream", "fltltst2c",
148 147 "stpstream", "stpsig", "vnextvoicecf", "cmcpupsalltf", "sydtransctrl",
149 148 "0301techgnd", "220dcl1bt15", "0215wcrwip", "0305hrthrot", "0130gpt4t",
150 149 "bingfccf", "0225unsticky1", "0228scss0",
151 150 "3022tpvs0"
152 151 ],
153 "Precise": [
152 "precise": [
154 153 "bgstream", "fltltst2c",
155 154 "stpstream", "stpsig", "vnextvoicecf", "cmcpupsalltf", "sydtransctrl",
156 155 "0301techgnd", "220dcl1bt15", "0215wcrwip", "0305hrthrot", "0130gpt4t",
157 156 "bingfccf", "0225unsticky1", "0228scss0",
158 157 "defquerycf", "3022tpvs0"
159 158 ],
159 "copilot": []
160 160 }
161 161
162 162 optionsSets = {
163 "Balanced": [
163 "balanced": [
164 164 "nlu_direct_response_filter", "deepleo",
165 165 "disable_emoji_spoken_text", "responsible_ai_policy_235",
166 166 "enablemm", "dv3sugg", "autosave",
@@ -168,7 +168,7 @@ class Defaults:
168 168 "galileo", "saharagenconv5", "gldcl1p",
169 169 "gpt4tmncnp"
170 170 ],
171 "Creative": [
171 "creative": [
172 172 "nlu_direct_response_filter", "deepleo",
173 173 "disable_emoji_spoken_text", "responsible_ai_policy_235",
174 174 "enablemm", "dv3sugg",
@@ -176,7 +176,7 @@ class Defaults:
176 176 "h3imaginative", "techinstgnd", "hourthrot", "clgalileo", "gencontentv3",
177 177 "gpt4tmncnp"
178 178 ],
179 "Precise": [
179 "precise": [
180 180 "nlu_direct_response_filter", "deepleo",
181 181 "disable_emoji_spoken_text", "responsible_ai_policy_235",
182 182 "enablemm", "dv3sugg",
@@ -184,6 +184,13 @@ class Defaults:
184 184 "h3precise", "techinstgnd", "hourthrot", "techinstgnd", "hourthrot",
185 185 "clgalileo", "gencontentv3"
186 186 ],
187 "copilot": [
188 "nlu_direct_response_filter", "deepleo",
189 "disable_emoji_spoken_text", "responsible_ai_policy_235",
190 "enablemm", "dv3sugg",
191 "iyxapbing", "iycapbing",
192 "h3precise", "clgalileo", "gencontentv3", "prjupy"
193 ],
187 194 }
188 195
189 196 # Default location settings
@@ -264,7 +271,7 @@ def create_message(
264 271 "allowedMessageTypes": Defaults.allowedMessageTypes,
265 272 "sliceIds": Defaults.sliceIds[tone],
266 273 "verbosity": "verbose",
267 "scenario": "SERP",
274 "scenario": "CopilotMicrosoftCom", # "SERP",
268 275 "plugins": [{"id": "c310c353-b9f0-4d76-ab0d-1dd5e979cf68", "category": 1}] if web_search else [],
269 276 "traceId": get_random_hex(40),
270 277 "conversationHistoryOptionsSets": ["autosave","savemem","uprofupd","uprofgen"],
@@ -282,8 +289,7 @@ def create_message(
282 289 "requestId": request_id,
283 290 "messageId": request_id
284 291 },
285 "tone": tone,
286 "extraExtensionParameters": {"gpt-creator-persona": {"personaId": "copilot"}},
292 "tone": getattr(Tones, tone),
287 293 "spokenTextMode": "None",
288 294 "conversationId": conversation.conversationId,
289 295 "participant": {"id": conversation.clientId}
@@ -322,6 +328,7 @@ async def stream_generate(
322 328 gpt4_turbo: bool = False,
323 329 timeout: int = 900,
324 330 conversation: Conversation = None,
331 return_conversation: bool = False,
325 332 raise_apology: bool = False,
326 333 max_retries: int = 5,
327 334 sleep_retry: int = 15,
@@ -344,10 +351,15 @@ async def stream_generate(
344 351 async with ClientSession(
345 352 timeout=ClientTimeout(total=timeout), connector=connector
346 353 ) as session:
347 while conversation is None:
354 first = True
355 while first or conversation is None:
356 first = False
348 357 do_read = True
349 358 try:
350 conversation = await create_conversation(session, headers)
359 if conversation is None:
360 conversation = await create_conversation(session, headers)
361 if return_conversation:
362 yield conversation
351 363 except ResponseStatusError as e:
352 364 max_retries -= 1
353 365 if max_retries < 1:
@@ -358,7 +370,7 @@ async def stream_generate(
358 370 await asyncio.sleep(sleep_retry)
359 371 continue
360 372
361 image_request = await upload_image(session, image, tone, headers) if image else None
373 image_request = await upload_image(session, image, getattr(Tones, tone), headers) if image else None
362 374 async with session.ws_connect(
363 375 'wss://sydney.bing.com/sydney/ChatHub',
364 376 autoping=False,
Modified g4f/gui/client/static/js/chat.v1.js +11 -8
@@ -811,7 +811,7 @@ async function on_api() {
811 811
812 812 register_settings_storage();
813 813
814 versions = await api('version')
814 versions = await api("version");
815 815 document.title = 'g4f - ' + versions["version"];
816 816 let text = "version ~ "
817 817 if (versions["version"] != versions["latest_version"]) {
@@ -825,19 +825,19 @@ async function on_api() {
825 825
826 826 models = await api("models");
827 827 models.forEach((model) => {
828 let option = document.createElement('option');
828 let option = document.createElement("option");
829 829 option.value = option.text = model;
830 830 modelSelect.appendChild(option);
831 831 });
832 832
833 providers = await api('providers')
833 providers = await api("providers")
834 834 providers.forEach((provider) => {
835 let option = document.createElement('option');
835 let option = document.createElement("option");
836 836 option.value = option.text = provider;
837 837 providerSelect.appendChild(option);
838 838 })
839 839
840 load_provider_models();
840 await load_provider_models(appStorage.getItem("provider"));
841 841 load_settings_storage()
842 842 }
843 843
@@ -965,8 +965,11 @@ async function read_response(response) {
965 965 }
966 966 }
967 967
968 async function load_provider_models() {
969 const provider = providerSelect.options[providerSelect.selectedIndex].value;
968 async function load_provider_models(providerIndex=null) {
969 if (!providerIndex) {
970 providerIndex = providerSelect.selectedIndex;
971 }
972 const provider = providerSelect.options[providerIndex].value;
970 973 if (!provider) {
971 974 return;
972 975 }
@@ -986,7 +989,7 @@ async function load_provider_models() {
986 989 modelSelect.classList.remove("hidden");
987 990 }
988 991 };
989 providerSelect.addEventListener("change", load_provider_models)
992 providerSelect.addEventListener("change", () => load_provider_models());
990 993
991 994 function save_storage() {
992 995 let filename = new Date().toLocaleString()