Upload 42 files
Browse files- chatgpt/ChatService.py +16 -2
- chatgpt/chatFormat.py +34 -7
- chatgpt/chatFormat_v1.py +234 -0
- chatgpt/proofofWork.py +5 -2
- gateway/backend.py +182 -7
- gateway/v1.py +5 -0
- requirements.txt +2 -1
- templates/chatgpt.html +308 -135
- templates/chatgpt_context_1.json +0 -0
- templates/chatgpt_context_2.json +91 -87
- templates/gpts_context.json +0 -0
- version.txt +1 -1
chatgpt/ChatService.py
CHANGED
|
@@ -183,7 +183,7 @@ class ChatService:
|
|
| 183 |
url = f'{self.base_url}/sentinel/chat-requirements'
|
| 184 |
headers = self.base_headers.copy()
|
| 185 |
try:
|
| 186 |
-
config = get_config(self.user_agent)
|
| 187 |
p = get_requirements_token(config)
|
| 188 |
data = {'p': p}
|
| 189 |
r = await self.ss.post(url, headers=headers, json=data, timeout=5)
|
|
@@ -211,7 +211,7 @@ class ChatService:
|
|
| 211 |
try:
|
| 212 |
if turnstile_solver_url:
|
| 213 |
res = await self.s.post(
|
| 214 |
-
turnstile_solver_url, json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx}
|
| 215 |
)
|
| 216 |
self.turnstile_token = res.json().get("t")
|
| 217 |
except Exception as e:
|
|
@@ -410,6 +410,20 @@ class ChatService:
|
|
| 410 |
logger.error(f"Failed to get download url: {e}")
|
| 411 |
return ""
|
| 412 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 413 |
async def get_download_url_from_upload(self, file_id):
|
| 414 |
url = f"{self.base_url}/files/{file_id}/uploaded"
|
| 415 |
headers = self.base_headers.copy()
|
|
|
|
| 183 |
url = f'{self.base_url}/sentinel/chat-requirements'
|
| 184 |
headers = self.base_headers.copy()
|
| 185 |
try:
|
| 186 |
+
config = get_config(self.user_agent, self.req_token)
|
| 187 |
p = get_requirements_token(config)
|
| 188 |
data = {'p': p}
|
| 189 |
r = await self.ss.post(url, headers=headers, json=data, timeout=5)
|
|
|
|
| 211 |
try:
|
| 212 |
if turnstile_solver_url:
|
| 213 |
res = await self.s.post(
|
| 214 |
+
turnstile_solver_url, json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": self.user_agent}
|
| 215 |
)
|
| 216 |
self.turnstile_token = res.json().get("t")
|
| 217 |
except Exception as e:
|
|
|
|
| 410 |
logger.error(f"Failed to get download url: {e}")
|
| 411 |
return ""
|
| 412 |
|
| 413 |
+
async def get_attachment_url(self, file_id, conversation_id):
|
| 414 |
+
url = f"{self.base_url}/conversation/{conversation_id}/attachment/{file_id}/download"
|
| 415 |
+
headers = self.base_headers.copy()
|
| 416 |
+
try:
|
| 417 |
+
r = await self.s.get(url, headers=headers, timeout=10)
|
| 418 |
+
if r.status_code == 200:
|
| 419 |
+
download_url = r.json().get('download_url')
|
| 420 |
+
return download_url
|
| 421 |
+
else:
|
| 422 |
+
raise HTTPException(status_code=r.status_code, detail=r.text)
|
| 423 |
+
except Exception as e:
|
| 424 |
+
logger.error(f"Failed to get download url: {e}")
|
| 425 |
+
return ""
|
| 426 |
+
|
| 427 |
async def get_download_url_from_upload(self, file_id):
|
| 428 |
url = f"{self.base_url}/files/{file_id}/uploaded"
|
| 429 |
headers = self.base_headers.copy()
|
chatgpt/chatFormat.py
CHANGED
|
@@ -137,6 +137,7 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 137 |
last_message_id = None
|
| 138 |
last_role = None
|
| 139 |
last_content_type = None
|
|
|
|
| 140 |
model_slug = None
|
| 141 |
end = False
|
| 142 |
|
|
@@ -214,6 +215,8 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 214 |
if role == 'assistant' and last_role != 'assistant':
|
| 215 |
if recipient == 'dalle.text2im':
|
| 216 |
new_text = f"\n```{recipient}\n{part[len_last_content:]}"
|
|
|
|
|
|
|
| 217 |
elif last_role == None:
|
| 218 |
new_text = part[len_last_content:]
|
| 219 |
else:
|
|
@@ -225,6 +228,21 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 225 |
else:
|
| 226 |
new_text = part[len_last_content:]
|
| 227 |
len_last_content = len(part)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
else:
|
| 229 |
text = content.get("text", "")
|
| 230 |
if outer_content_type == "code" and last_content_type != "code":
|
|
@@ -241,6 +259,8 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 241 |
new_text = "\n```\n" + new_text
|
| 242 |
elif last_content_type == "execution_output" and outer_content_type != "execution_output":
|
| 243 |
new_text = "\n```\n" + new_text
|
|
|
|
|
|
|
| 244 |
|
| 245 |
delta = {"content": new_text}
|
| 246 |
last_content_type = outer_content_type
|
|
@@ -248,6 +268,7 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 248 |
delta = {}
|
| 249 |
finish_reason = "length"
|
| 250 |
end = True
|
|
|
|
| 251 |
elif status == "finished_successfully":
|
| 252 |
if content.get("content_type") == "multimodal_text":
|
| 253 |
parts = content.get("parts", [])
|
|
@@ -258,14 +279,19 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 258 |
inner_content_type = part.get('content_type')
|
| 259 |
if inner_content_type == "image_asset_pointer":
|
| 260 |
last_content_type = "image_asset_pointer"
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
|
|
|
|
|
|
|
|
|
| 267 |
else:
|
| 268 |
-
|
|
|
|
|
|
|
| 269 |
elif message.get("end_turn"):
|
| 270 |
part = content.get("parts", [])[0]
|
| 271 |
new_text = part[len_last_content:]
|
|
@@ -294,6 +320,7 @@ async def stream_response(service, response, model, max_tokens):
|
|
| 294 |
continue
|
| 295 |
last_message_id = message_id
|
| 296 |
last_role = role
|
|
|
|
| 297 |
if not end and not delta.get("content"):
|
| 298 |
delta = {"role": "assistant", "content": ""}
|
| 299 |
chunk_new_data["choices"][0]["delta"] = delta
|
|
|
|
| 137 |
last_message_id = None
|
| 138 |
last_role = None
|
| 139 |
last_content_type = None
|
| 140 |
+
last_status = None
|
| 141 |
model_slug = None
|
| 142 |
end = False
|
| 143 |
|
|
|
|
| 215 |
if role == 'assistant' and last_role != 'assistant':
|
| 216 |
if recipient == 'dalle.text2im':
|
| 217 |
new_text = f"\n```{recipient}\n{part[len_last_content:]}"
|
| 218 |
+
elif recipient == 't2uay3k.sj1i4kz':
|
| 219 |
+
new_text = f"\n```image_creator\n{part[len_last_content:]}"
|
| 220 |
elif last_role == None:
|
| 221 |
new_text = part[len_last_content:]
|
| 222 |
else:
|
|
|
|
| 228 |
else:
|
| 229 |
new_text = part[len_last_content:]
|
| 230 |
len_last_content = len(part)
|
| 231 |
+
elif outer_content_type == "multimodal_text":
|
| 232 |
+
parts = content.get("parts", [])
|
| 233 |
+
new_text = ""
|
| 234 |
+
for part in parts:
|
| 235 |
+
file_id = part.get('asset_pointer').replace('sediment://', '')
|
| 236 |
+
full_height = part.get("height", 0)
|
| 237 |
+
current_height = part.get('metadata', {}).get("generation", {}).get("height", 0)
|
| 238 |
+
if full_height > current_height:
|
| 239 |
+
completed_rate = current_height / full_height
|
| 240 |
+
new_text = f"\n> {completed_rate:.2%}\n"
|
| 241 |
+
if last_role != role:
|
| 242 |
+
new_text = f"\n```{new_text}"
|
| 243 |
+
else:
|
| 244 |
+
image_download_url = await service.get_attachment_url(file_id, conversation_id)
|
| 245 |
+
new_text = f"\n```\n\n"
|
| 246 |
else:
|
| 247 |
text = content.get("text", "")
|
| 248 |
if outer_content_type == "code" and last_content_type != "code":
|
|
|
|
| 259 |
new_text = "\n```\n" + new_text
|
| 260 |
elif last_content_type == "execution_output" and outer_content_type != "execution_output":
|
| 261 |
new_text = "\n```\n" + new_text
|
| 262 |
+
elif last_content_type == "multimodal_text" and outer_content_type != "multimodal_text":
|
| 263 |
+
new_text = "\n```\n" + new_text
|
| 264 |
|
| 265 |
delta = {"content": new_text}
|
| 266 |
last_content_type = outer_content_type
|
|
|
|
| 268 |
delta = {}
|
| 269 |
finish_reason = "length"
|
| 270 |
end = True
|
| 271 |
+
|
| 272 |
elif status == "finished_successfully":
|
| 273 |
if content.get("content_type") == "multimodal_text":
|
| 274 |
parts = content.get("parts", [])
|
|
|
|
| 279 |
inner_content_type = part.get('content_type')
|
| 280 |
if inner_content_type == "image_asset_pointer":
|
| 281 |
last_content_type = "image_asset_pointer"
|
| 282 |
+
if part.get('asset_pointer').startswith('file-service://'):
|
| 283 |
+
file_id = part.get('asset_pointer').replace('file-service://', '')
|
| 284 |
+
logger.debug(f"file_id: {file_id}")
|
| 285 |
+
image_download_url = await service.get_download_url(file_id)
|
| 286 |
+
logger.debug(f"image_download_url: {image_download_url}")
|
| 287 |
+
if image_download_url:
|
| 288 |
+
delta = {"content": f"\n```\n\n"}
|
| 289 |
+
else:
|
| 290 |
+
delta = {"content": f"\n```\nFailed to load the image.\n"}
|
| 291 |
else:
|
| 292 |
+
file_id = part.get('asset_pointer').replace('sediment://', '')
|
| 293 |
+
image_download_url = await service.get_attachment_url(file_id, conversation_id)
|
| 294 |
+
delta = {"content": f"\n\n"}
|
| 295 |
elif message.get("end_turn"):
|
| 296 |
part = content.get("parts", [])[0]
|
| 297 |
new_text = part[len_last_content:]
|
|
|
|
| 320 |
continue
|
| 321 |
last_message_id = message_id
|
| 322 |
last_role = role
|
| 323 |
+
last_status = status
|
| 324 |
if not end and not delta.get("content"):
|
| 325 |
delta = {"role": "assistant", "content": ""}
|
| 326 |
chunk_new_data["choices"][0]["delta"] = delta
|
chatgpt/chatFormat_v1.py
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
+
import json
|
| 3 |
+
import random
|
| 4 |
+
import re
|
| 5 |
+
import string
|
| 6 |
+
import time
|
| 7 |
+
import uuid
|
| 8 |
+
|
| 9 |
+
import pybase64
|
| 10 |
+
import websockets
|
| 11 |
+
from fastapi import HTTPException
|
| 12 |
+
|
| 13 |
+
from api.files import get_file_content
|
| 14 |
+
from api.models import model_system_fingerprint
|
| 15 |
+
from api.tokens import split_tokens_from_content, calculate_image_tokens, num_tokens_from_messages
|
| 16 |
+
from utils.Logger import logger
|
| 17 |
+
|
| 18 |
+
moderation_message = "I'm sorry, I cannot provide or engage in any content related to pornography, violence, or any unethical material. If you have any other questions or need assistance, please feel free to let me know. I'll do my best to provide support and assistance."
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
async def format_not_stream_response(response, prompt_tokens, max_tokens, model):
|
| 22 |
+
chat_id = f"chatcmpl-{''.join(random.choice(string.ascii_letters + string.digits) for _ in range(29))}"
|
| 23 |
+
system_fingerprint_list = model_system_fingerprint.get(model, None)
|
| 24 |
+
system_fingerprint = random.choice(system_fingerprint_list) if system_fingerprint_list else None
|
| 25 |
+
created_time = int(time.time())
|
| 26 |
+
all_text = ""
|
| 27 |
+
async for chunk in response:
|
| 28 |
+
try:
|
| 29 |
+
if chunk.startswith("data: [DONE]"):
|
| 30 |
+
break
|
| 31 |
+
elif not chunk.startswith("data: "):
|
| 32 |
+
continue
|
| 33 |
+
else:
|
| 34 |
+
chunk = json.loads(chunk[6:])
|
| 35 |
+
if not chunk["choices"][0].get("delta"):
|
| 36 |
+
continue
|
| 37 |
+
all_text += chunk["choices"][0]["delta"]["content"]
|
| 38 |
+
except Exception as e:
|
| 39 |
+
logger.error(f"Error: {chunk}, error: {str(e)}")
|
| 40 |
+
continue
|
| 41 |
+
content, completion_tokens, finish_reason = await split_tokens_from_content(all_text, max_tokens, model)
|
| 42 |
+
message = {
|
| 43 |
+
"role": "assistant",
|
| 44 |
+
"content": content,
|
| 45 |
+
}
|
| 46 |
+
usage = {
|
| 47 |
+
"prompt_tokens": prompt_tokens,
|
| 48 |
+
"completion_tokens": completion_tokens,
|
| 49 |
+
"total_tokens": prompt_tokens + completion_tokens
|
| 50 |
+
}
|
| 51 |
+
if not message.get("content"):
|
| 52 |
+
raise HTTPException(status_code=403, detail="No content in the message.")
|
| 53 |
+
|
| 54 |
+
data = {
|
| 55 |
+
"id": chat_id,
|
| 56 |
+
"object": "chat.completion",
|
| 57 |
+
"created": created_time,
|
| 58 |
+
"model": model,
|
| 59 |
+
"choices": [
|
| 60 |
+
{
|
| 61 |
+
"index": 0,
|
| 62 |
+
"message": message,
|
| 63 |
+
"logprobs": None,
|
| 64 |
+
"finish_reason": finish_reason
|
| 65 |
+
}
|
| 66 |
+
],
|
| 67 |
+
"usage": usage
|
| 68 |
+
}
|
| 69 |
+
if system_fingerprint:
|
| 70 |
+
data["system_fingerprint"] = system_fingerprint
|
| 71 |
+
return data
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
async def head_process_response(response):
|
| 75 |
+
async for chunk in response:
|
| 76 |
+
chunk = chunk.decode("utf-8")
|
| 77 |
+
if chunk.startswith("data: {"):
|
| 78 |
+
chunk_old_data = json.loads(chunk[6:])
|
| 79 |
+
message = chunk_old_data.get("message", {})
|
| 80 |
+
if not message and "error" in chunk_old_data:
|
| 81 |
+
return response, False
|
| 82 |
+
role = message.get('author', {}).get('role')
|
| 83 |
+
if role == 'user' or role == 'system':
|
| 84 |
+
continue
|
| 85 |
+
|
| 86 |
+
status = message.get("status")
|
| 87 |
+
if status == "in_progress":
|
| 88 |
+
return response, True
|
| 89 |
+
return response, False
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
async def stream_response(service, response, model, max_tokens):
|
| 93 |
+
chat_id = f"chatcmpl-{''.join(random.choice(string.ascii_letters + string.digits) for _ in range(29))}"
|
| 94 |
+
created_time = int(time.time())
|
| 95 |
+
|
| 96 |
+
chunk_new_data = {
|
| 97 |
+
"id": chat_id,
|
| 98 |
+
"object": "chat.completion.chunk",
|
| 99 |
+
"created": created_time,
|
| 100 |
+
"model": model,
|
| 101 |
+
"choices": [
|
| 102 |
+
{
|
| 103 |
+
"index": 0,
|
| 104 |
+
"delta": {"role": "assistant", "content": ""},
|
| 105 |
+
"logprobs": None,
|
| 106 |
+
"finish_reason": None
|
| 107 |
+
}
|
| 108 |
+
]
|
| 109 |
+
}
|
| 110 |
+
yield f"data: {json.dumps(chunk_new_data)}\n\n"
|
| 111 |
+
|
| 112 |
+
async for chunk in response:
|
| 113 |
+
chunk = chunk.decode("utf-8")
|
| 114 |
+
try:
|
| 115 |
+
if chunk.startswith("data: {"):
|
| 116 |
+
chunk_old_data = json.loads(chunk[6:].strip())
|
| 117 |
+
except Exception as e:
|
| 118 |
+
logger.error(f"Error: {chunk}, error: {str(e)}")
|
| 119 |
+
continue
|
| 120 |
+
|
| 121 |
+
|
| 122 |
+
def get_url_from_content(content):
|
| 123 |
+
if isinstance(content, str) and content.startswith('http'):
|
| 124 |
+
try:
|
| 125 |
+
url = re.match(
|
| 126 |
+
r'(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))',
|
| 127 |
+
content.split(' ')[0])[0]
|
| 128 |
+
content = content.replace(url, '').strip()
|
| 129 |
+
return url, content
|
| 130 |
+
except Exception:
|
| 131 |
+
return None, content
|
| 132 |
+
return None, content
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def format_messages_with_url(content):
|
| 136 |
+
url_list = []
|
| 137 |
+
while True:
|
| 138 |
+
url, content = get_url_from_content(content)
|
| 139 |
+
if url:
|
| 140 |
+
url_list.append(url)
|
| 141 |
+
logger.info(f"Found a file_url from messages: {url}")
|
| 142 |
+
else:
|
| 143 |
+
break
|
| 144 |
+
if not url_list:
|
| 145 |
+
return content
|
| 146 |
+
new_content = [
|
| 147 |
+
{
|
| 148 |
+
"type": "text",
|
| 149 |
+
"text": content
|
| 150 |
+
}
|
| 151 |
+
]
|
| 152 |
+
for url in url_list:
|
| 153 |
+
new_content.append({
|
| 154 |
+
"type": "image_url",
|
| 155 |
+
"image_url": {
|
| 156 |
+
"url": url
|
| 157 |
+
}
|
| 158 |
+
})
|
| 159 |
+
return new_content
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
async def api_messages_to_chat(service, api_messages, upload_by_url=False):
|
| 163 |
+
file_tokens = 0
|
| 164 |
+
chat_messages = []
|
| 165 |
+
for api_message in api_messages:
|
| 166 |
+
role = api_message.get('role')
|
| 167 |
+
content = api_message.get('content')
|
| 168 |
+
if upload_by_url:
|
| 169 |
+
if isinstance(content, str):
|
| 170 |
+
content = format_messages_with_url(content)
|
| 171 |
+
if isinstance(content, list):
|
| 172 |
+
parts = []
|
| 173 |
+
attachments = []
|
| 174 |
+
content_type = "multimodal_text"
|
| 175 |
+
for i in content:
|
| 176 |
+
if i.get("type") == "text":
|
| 177 |
+
parts.append(i.get("text"))
|
| 178 |
+
elif i.get("type") == "image_url":
|
| 179 |
+
image_url = i.get("image_url")
|
| 180 |
+
url = image_url.get("url")
|
| 181 |
+
detail = image_url.get("detail", "auto")
|
| 182 |
+
file_content, mime_type = await get_file_content(url)
|
| 183 |
+
file_meta = await service.upload_file(file_content, mime_type)
|
| 184 |
+
if file_meta:
|
| 185 |
+
file_id = file_meta["file_id"]
|
| 186 |
+
file_size = file_meta["size_bytes"]
|
| 187 |
+
file_name = file_meta["file_name"]
|
| 188 |
+
mime_type = file_meta["mime_type"]
|
| 189 |
+
use_case = file_meta["use_case"]
|
| 190 |
+
if mime_type.startswith("image/"):
|
| 191 |
+
width, height = file_meta["width"], file_meta["height"]
|
| 192 |
+
file_tokens += await calculate_image_tokens(width, height, detail)
|
| 193 |
+
parts.append({
|
| 194 |
+
"content_type": "image_asset_pointer",
|
| 195 |
+
"asset_pointer": f"file-service://{file_id}",
|
| 196 |
+
"size_bytes": file_size,
|
| 197 |
+
"width": width,
|
| 198 |
+
"height": height
|
| 199 |
+
})
|
| 200 |
+
attachments.append({
|
| 201 |
+
"id": file_id,
|
| 202 |
+
"size": file_size,
|
| 203 |
+
"name": file_name,
|
| 204 |
+
"mime_type": mime_type,
|
| 205 |
+
"width": width,
|
| 206 |
+
"height": height
|
| 207 |
+
})
|
| 208 |
+
else:
|
| 209 |
+
if not use_case == "ace_upload":
|
| 210 |
+
await service.check_upload(file_id)
|
| 211 |
+
file_tokens += file_size // 1000
|
| 212 |
+
attachments.append({
|
| 213 |
+
"id": file_id,
|
| 214 |
+
"size": file_size,
|
| 215 |
+
"name": file_name,
|
| 216 |
+
"mime_type": mime_type,
|
| 217 |
+
})
|
| 218 |
+
metadata = {
|
| 219 |
+
"attachments": attachments
|
| 220 |
+
}
|
| 221 |
+
else:
|
| 222 |
+
content_type = "text"
|
| 223 |
+
parts = [content]
|
| 224 |
+
metadata = {}
|
| 225 |
+
chat_message = {
|
| 226 |
+
"id": f"{uuid.uuid4()}",
|
| 227 |
+
"author": {"role": role},
|
| 228 |
+
"content": {"content_type": content_type, "parts": parts},
|
| 229 |
+
"metadata": metadata
|
| 230 |
+
}
|
| 231 |
+
chat_messages.append(chat_message)
|
| 232 |
+
text_tokens = await num_tokens_from_messages(api_messages, service.resp_model)
|
| 233 |
+
prompt_tokens = text_tokens + file_tokens
|
| 234 |
+
return chat_messages, prompt_tokens
|
chatgpt/proofofWork.py
CHANGED
|
@@ -8,6 +8,7 @@ from datetime import datetime, timedelta, timezone
|
|
| 8 |
from html.parser import HTMLParser
|
| 9 |
|
| 10 |
import pybase64
|
|
|
|
| 11 |
|
| 12 |
from utils.Logger import logger
|
| 13 |
from utils.configs import conversation_only
|
|
@@ -15,6 +16,7 @@ from utils.configs import conversation_only
|
|
| 15 |
cores = [8, 16, 24, 32]
|
| 16 |
timeLayout = "%a %b %d %Y %H:%M:%S"
|
| 17 |
|
|
|
|
| 18 |
cached_scripts = []
|
| 19 |
cached_dpl = ""
|
| 20 |
cached_time = 0
|
|
@@ -430,9 +432,10 @@ def get_parse_time():
|
|
| 430 |
return now.strftime(timeLayout) + " GMT-0500 (Eastern Standard Time)"
|
| 431 |
|
| 432 |
|
| 433 |
-
|
|
|
|
| 434 |
config = [
|
| 435 |
-
random.
|
| 436 |
get_parse_time(),
|
| 437 |
4294705152,
|
| 438 |
0,
|
|
|
|
| 8 |
from html.parser import HTMLParser
|
| 9 |
|
| 10 |
import pybase64
|
| 11 |
+
import diskcache as dc
|
| 12 |
|
| 13 |
from utils.Logger import logger
|
| 14 |
from utils.configs import conversation_only
|
|
|
|
| 16 |
cores = [8, 16, 24, 32]
|
| 17 |
timeLayout = "%a %b %d %Y %H:%M:%S"
|
| 18 |
|
| 19 |
+
cache = dc.Cache('./data/pow_config_cache')
|
| 20 |
cached_scripts = []
|
| 21 |
cached_dpl = ""
|
| 22 |
cached_time = 0
|
|
|
|
| 432 |
return now.strftime(timeLayout) + " GMT-0500 (Eastern Standard Time)"
|
| 433 |
|
| 434 |
|
| 435 |
+
@cache.memoize(expire=3600 * 24 * 7)
|
| 436 |
+
def get_config(user_agent, req_token=None):
|
| 437 |
config = [
|
| 438 |
+
random.choice([1920 + 1080, 2560 + 1440, 1920 + 1200, 2560 + 1600]),
|
| 439 |
get_parse_time(),
|
| 440 |
4294705152,
|
| 441 |
0,
|
gateway/backend.py
CHANGED
|
@@ -117,7 +117,7 @@ async def get_gizmos_snorlax_upsert(request: Request):
|
|
| 117 |
async def post_subscriptions(request: Request):
|
| 118 |
return {
|
| 119 |
"id": str(uuid.uuid4()),
|
| 120 |
-
"plan_type": "
|
| 121 |
"seats_in_use": 1,
|
| 122 |
"seats_entitled": 1,
|
| 123 |
"active_until": "2050-01-01T00:00:00Z",
|
|
@@ -262,6 +262,176 @@ async def get_me(request: Request):
|
|
| 262 |
return Response(content=json.dumps(me, indent=4), media_type="application/json")
|
| 263 |
|
| 264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 265 |
@app.post("/backend-api/edge")
|
| 266 |
async def edge():
|
| 267 |
return Response(status_code=204)
|
|
@@ -269,6 +439,7 @@ async def edge():
|
|
| 269 |
|
| 270 |
if no_sentinel:
|
| 271 |
openai_sentinel_tokens_cache = {}
|
|
|
|
| 272 |
|
| 273 |
@app.post("/backend-api/sentinel/chat-requirements")
|
| 274 |
async def sentinel_chat_conversations(request: Request):
|
|
@@ -306,11 +477,15 @@ if no_sentinel:
|
|
| 306 |
clients = client
|
| 307 |
|
| 308 |
try:
|
| 309 |
-
config = get_config(user_agent)
|
| 310 |
p = get_requirements_token(config)
|
| 311 |
data = {'p': p}
|
| 312 |
-
|
| 313 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 314 |
if r.status_code != 200:
|
| 315 |
raise HTTPException(status_code=r.status_code, detail="Failed to get chat requirements")
|
| 316 |
resp = r.json()
|
|
@@ -321,7 +496,7 @@ if no_sentinel:
|
|
| 321 |
try:
|
| 322 |
if turnstile_solver_url:
|
| 323 |
res = await client.post(turnstile_solver_url,
|
| 324 |
-
json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx})
|
| 325 |
turnstile_token = res.json().get("t")
|
| 326 |
except Exception as e:
|
| 327 |
logger.info(f"Turnstile ignored: {e}")
|
|
@@ -406,7 +581,7 @@ if no_sentinel:
|
|
| 406 |
sentinel_tokens = openai_sentinel_tokens_cache.get(req_token, {})
|
| 407 |
openai_sentinel_tokens_cache.pop(req_token, None)
|
| 408 |
if not sentinel_tokens:
|
| 409 |
-
config = get_config(user_agent)
|
| 410 |
p = get_requirements_token(config)
|
| 411 |
data = {'p': p}
|
| 412 |
r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data,
|
|
@@ -419,7 +594,7 @@ if no_sentinel:
|
|
| 419 |
try:
|
| 420 |
if turnstile_solver_url:
|
| 421 |
res = await client.post(turnstile_solver_url,
|
| 422 |
-
json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx})
|
| 423 |
turnstile_token = res.json().get("t")
|
| 424 |
except Exception as e:
|
| 425 |
logger.info(f"Turnstile ignored: {e}")
|
|
|
|
| 117 |
async def post_subscriptions(request: Request):
|
| 118 |
return {
|
| 119 |
"id": str(uuid.uuid4()),
|
| 120 |
+
"plan_type": "free",
|
| 121 |
"seats_in_use": 1,
|
| 122 |
"seats_entitled": 1,
|
| 123 |
"active_until": "2050-01-01T00:00:00Z",
|
|
|
|
| 262 |
return Response(content=json.dumps(me, indent=4), media_type="application/json")
|
| 263 |
|
| 264 |
|
| 265 |
+
@app.get("/backend-api/tasks")
|
| 266 |
+
async def get_me(request: Request):
|
| 267 |
+
token = request.headers.get("Authorization", "").replace("Bearer ", "")
|
| 268 |
+
if len(token) == 45 or token.startswith("eyJhbGciOi"):
|
| 269 |
+
return await chatgpt_reverse_proxy(request, "backend-api/tasks")
|
| 270 |
+
else:
|
| 271 |
+
tasks = {
|
| 272 |
+
"tasks": [],
|
| 273 |
+
"cursor": None
|
| 274 |
+
}
|
| 275 |
+
return Response(content=json.dumps(tasks, indent=4), media_type="application/json")
|
| 276 |
+
|
| 277 |
+
|
| 278 |
+
@app.get("/backend-api/user_system_messages")
|
| 279 |
+
async def get_me(request: Request):
|
| 280 |
+
token = request.headers.get("Authorization", "").replace("Bearer ", "")
|
| 281 |
+
if len(token) == 45 or token.startswith("eyJhbGciOi"):
|
| 282 |
+
return await chatgpt_reverse_proxy(request, "backend-api/user_system_messages")
|
| 283 |
+
else:
|
| 284 |
+
user_system_messages = {
|
| 285 |
+
"object": "user_system_message_detail",
|
| 286 |
+
"enabled": True,
|
| 287 |
+
"about_user_message": "",
|
| 288 |
+
"about_model_message": "",
|
| 289 |
+
"name_user_message": "",
|
| 290 |
+
"role_user_message": "",
|
| 291 |
+
"traits_model_message": "",
|
| 292 |
+
"other_user_message": "",
|
| 293 |
+
"disabled_tools": []
|
| 294 |
+
}
|
| 295 |
+
return Response(content=json.dumps(user_system_messages, indent=4), media_type="application/json")
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
@app.get("/backend-api/memories")
|
| 299 |
+
async def get_me(request: Request):
|
| 300 |
+
token = request.headers.get("Authorization", "").replace("Bearer ", "")
|
| 301 |
+
if len(token) == 45 or token.startswith("eyJhbGciOi"):
|
| 302 |
+
return await chatgpt_reverse_proxy(request, "backend-api/memories")
|
| 303 |
+
else:
|
| 304 |
+
memories = {"memories":[],"memory_max_tokens":10000,"memory_num_tokens":0}
|
| 305 |
+
return Response(content=json.dumps(memories, indent=4), media_type="application/json")
|
| 306 |
+
|
| 307 |
+
|
| 308 |
+
# @app.get("/backend-api/system_hints")
|
| 309 |
+
# async def get_me(request: Request):
|
| 310 |
+
# token = request.headers.get("Authorization", "").replace("Bearer ", "")
|
| 311 |
+
# if len(token) == 45 or token.startswith("eyJhbGciOi"):
|
| 312 |
+
# return await chatgpt_reverse_proxy(request, "backend-api/system_hints")
|
| 313 |
+
# else:
|
| 314 |
+
# system_hints = {
|
| 315 |
+
# "system_hints": [
|
| 316 |
+
# {
|
| 317 |
+
# "system_hint": "picture_v2",
|
| 318 |
+
# "name": "创建图片",
|
| 319 |
+
# "description": "Visualize ideas and concepts",
|
| 320 |
+
# "logo": "<svg fill=\"none\" viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m16.902 2.304c0.8187-0.42416 1.787-0.23298 2.4072 0.38717 0.6201 0.62015 0.8113 1.5885 0.3872 2.4071-0.7866 1.5181-1.7193 2.8479-2.8417 4.0435 1.1284 1.4032 1.9764 2.8568 2.3346 4.2247 0.4175 1.5942 0.1834 3.2014-1.1994 4.3077-1.1107 0.8885-2.3588 0.7686-3.3556 0.3569-0.9702-0.4008-1.8307-1.1176-2.4214-1.6881-0.3641-0.3517-0.3742-0.932-0.0224-1.2962 0.3517-0.3641 0.932-0.3742 1.2961-0.0225 0.532 0.5139 1.195 1.0427 1.8477 1.3123 0.6261 0.2587 1.1004 0.2339 1.5103-0.094 0.6469-0.5176 0.8677-1.2794 0.5712-2.4116-0.2612-0.9974-0.9109-2.1738-1.8885-3.4132-0.5323 0.463-1.1008 0.9058-1.7087 1.3325-0.027 0.019-0.0546 0.0363-0.0828 0.0519-0.0568 0.6667-0.2811 1.2371-0.676 1.6918-0.4495 0.5176-1.0422 0.7951-1.6087 0.9495-0.903 0.2461-1.9839 0.2303-2.7726 0.2188-0.15178-0.0022-0.29274-0.0043-0.41953-0.0043-0.50626 0-0.91666-0.4104-0.91666-0.9166 0-0.1268-0.00206-0.2678-0.00427-0.4195-0.01149-0.7887-0.02725-1.8696 0.21885-2.7726 0.15439-0.56651 0.43185-1.1593 0.94945-1.6088 0.45468-0.39487 1.0252-0.61914 1.6919-0.67597 0.0156-0.02818 0.0329-0.05583 0.0518-0.0828 0.3644-0.51911 0.7406-1.0095 1.1309-1.4731-2.6496-1.4543-5.1975-1.3354-6.519-0.01387-0.88711 0.88711-1.2375 2.2875-0.92283 3.9656 0.31366 1.6728 1.2805 3.522 2.8674 5.1089 0.93686 0.9369 1.9491 1.5911 2.7771 2.0091 0.41354 0.2088 0.77359 0.3548 1.0457 0.4465 0.2037 0.0686 0.3205 0.0939 0.3634 0.1032 0.0226 0.0049 0.0246 0.0053 0.0078 0.0053 0.5063 0 0.9167 0.4104 0.9167 0.9167s-0.4104 0.9167-0.9167 0.9166c-0.2776 0-0.635-0.0961-0.9564-0.2044-0.36088-0.1216-0.8013-0.3022-1.2867-0.5473-0.96991-0.4896-2.1496-1.2517-3.2473-2.3493-1.814-1.814-2.9828-3.9868-3.3729-6.0675-0.38915-2.0754-0.01137-4.16 1.4284-5.5998 2.2489-2.249 5.9795-1.922 9.0975-0.06649 1.2458-1.2059 2.6376-2.1982 4.2389-3.0279zm-4.749 6.3774c0.4827 0.28036 0.8856 0.68317 1.1659 1.1659 2.0754-1.5631 3.5853-3.3452 4.7496-5.5925 0.0362-0.06982 0.0317-0.17995-0.0557-0.26737-0.0874-0.08741-0.1975-0.09189-0.2674-0.05572-2.2472 1.1644-4.0293 2.6743-5.5924 4.7496zm-2.9847 4.1507c0.65462 0.0034 1.2725-0.0135 1.8007-0.1575 0.3559-0.097 0.575-0.2311 0.7066-0.3827 0.1192-0.1373 0.2413-0.3736 0.2413-0.8378 0-0.757-0.6136-1.3707-1.3706-1.3707-0.4642 0-0.70058 0.1221-0.83784 0.2413-0.1516 0.1317-0.28575 0.3507-0.38276 0.7066-0.14395 0.5283-0.16088 1.1461-0.15742 1.8008z\" fill=\"currentColor\"/></svg>",
|
| 321 |
+
# "required_features": [
|
| 322 |
+
# "image_gen_tool_enabled"
|
| 323 |
+
# ],
|
| 324 |
+
# "required_models": [],
|
| 325 |
+
# "required_conversation_modes": [],
|
| 326 |
+
# "allow_in_temporary_chat": True,
|
| 327 |
+
# "composer_bar_button_info": None,
|
| 328 |
+
# "suggested_prompt": {
|
| 329 |
+
# "theme": "#512AEB",
|
| 330 |
+
# "title": "创建图片",
|
| 331 |
+
# "subtitle": "Visualize ideas and concepts",
|
| 332 |
+
# "sort_order": 2,
|
| 333 |
+
# "badge": None
|
| 334 |
+
# },
|
| 335 |
+
# "regex_matches": [
|
| 336 |
+
# "image"
|
| 337 |
+
# ]
|
| 338 |
+
# },
|
| 339 |
+
# {
|
| 340 |
+
# "system_hint": "search",
|
| 341 |
+
# "name": "搜索",
|
| 342 |
+
# "description": "在网上查找",
|
| 343 |
+
# "logo": "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM11.9851 4.00291C11.9933 4.00046 11.9982 4.00006 11.9996 4C12.001 4.00006 12.0067 4.00046 12.0149 4.00291C12.0256 4.00615 12.047 4.01416 12.079 4.03356C12.2092 4.11248 12.4258 4.32444 12.675 4.77696C12.9161 5.21453 13.1479 5.8046 13.3486 6.53263C13.6852 7.75315 13.9156 9.29169 13.981 11H10.019C10.0844 9.29169 10.3148 7.75315 10.6514 6.53263C10.8521 5.8046 11.0839 5.21453 11.325 4.77696C11.5742 4.32444 11.7908 4.11248 11.921 4.03356C11.953 4.01416 11.9744 4.00615 11.9851 4.00291ZM8.01766 11C8.08396 9.13314 8.33431 7.41167 8.72334 6.00094C8.87366 5.45584 9.04762 4.94639 9.24523 4.48694C6.48462 5.49946 4.43722 7.9901 4.06189 11H8.01766ZM4.06189 13H8.01766C8.09487 15.1737 8.42177 17.1555 8.93 18.6802C9.02641 18.9694 9.13134 19.2483 9.24522 19.5131C6.48461 18.5005 4.43722 16.0099 4.06189 13ZM10.019 13H13.981C13.9045 14.9972 13.6027 16.7574 13.1726 18.0477C12.9206 18.8038 12.6425 19.3436 12.3823 19.6737C12.2545 19.8359 12.1506 19.9225 12.0814 19.9649C12.0485 19.9852 12.0264 19.9935 12.0153 19.9969C12.0049 20.0001 11.9999 20 11.9999 20C11.9999 20 11.9948 20 11.9847 19.9969C11.9736 19.9935 11.9515 19.9852 11.9186 19.9649C11.8494 19.9225 11.7455 19.8359 11.6177 19.6737C11.3575 19.3436 11.0794 18.8038 10.8274 18.0477C10.3973 16.7574 10.0955 14.9972 10.019 13ZM15.9823 13C15.9051 15.1737 15.5782 17.1555 15.07 18.6802C14.9736 18.9694 14.8687 19.2483 14.7548 19.5131C17.5154 18.5005 19.5628 16.0099 19.9381 13H15.9823ZM19.9381 11C19.5628 7.99009 17.5154 5.49946 14.7548 4.48694C14.9524 4.94639 15.1263 5.45584 15.2767 6.00094C15.6657 7.41167 15.916 9.13314 15.9823 11H19.9381Z\" fill=\"currentColor\"></path></svg>",
|
| 344 |
+
# "required_features": [
|
| 345 |
+
# "search"
|
| 346 |
+
# ],
|
| 347 |
+
# "required_models": [],
|
| 348 |
+
# "required_conversation_modes": [
|
| 349 |
+
# "primary_assistant"
|
| 350 |
+
# ],
|
| 351 |
+
# "allow_in_temporary_chat": True,
|
| 352 |
+
# "composer_bar_button_info": None,
|
| 353 |
+
# "suggested_prompt": None,
|
| 354 |
+
# "regex_matches": None
|
| 355 |
+
# },
|
| 356 |
+
# {
|
| 357 |
+
# "system_hint": "reason",
|
| 358 |
+
# "name": "推理",
|
| 359 |
+
# "description": "使用 o3-mini",
|
| 360 |
+
# "logo": "<svg fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m12 3c-3.585 0-6.5 2.9225-6.5 6.5385 0 2.2826 1.162 4.2913 2.9248 5.4615h7.1504c1.7628-1.1702 2.9248-3.1789 2.9248-5.4615 0-3.6159-2.915-6.5385-6.5-6.5385zm2.8653 14h-5.7306v1h5.7306v-1zm-1.1329 3h-3.4648c0.3458 0.5978 0.9921 1 1.7324 1s1.3866-0.4022 1.7324-1zm-5.6064 0c0.44403 1.7252 2.0101 3 3.874 3s3.43-1.2748 3.874-3c0.5483-0.0047 0.9913-0.4506 0.9913-1v-2.4593c2.1969-1.5431 3.6347-4.1045 3.6347-7.0022 0-4.7108-3.8008-8.5385-8.5-8.5385-4.6992 0-8.5 3.8276-8.5 8.5385 0 2.8977 1.4378 5.4591 3.6347 7.0022v2.4593c0 0.5494 0.44301 0.9953 0.99128 1z\" clip-rule=\"evenodd\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>",
|
| 361 |
+
# "required_features": [],
|
| 362 |
+
# "required_models": [
|
| 363 |
+
# "o1",
|
| 364 |
+
# "o3-mini"
|
| 365 |
+
# ],
|
| 366 |
+
# "required_conversation_modes": [
|
| 367 |
+
# "primary_assistant"
|
| 368 |
+
# ],
|
| 369 |
+
# "allow_in_temporary_chat": True,
|
| 370 |
+
# "composer_bar_button_info": {
|
| 371 |
+
# "disabled_text": "推理不可用",
|
| 372 |
+
# "tooltip_text": "思考后再回复",
|
| 373 |
+
# "announcement_key": "",
|
| 374 |
+
# "nux_title": "",
|
| 375 |
+
# "nux_description": "ChatGPT 可以先思考更长时间再回复,以便更好地回答您的重大问题。",
|
| 376 |
+
# "rate_limit_reached_text": None
|
| 377 |
+
# },
|
| 378 |
+
# "suggested_prompt": None,
|
| 379 |
+
# "regex_matches": None
|
| 380 |
+
# },
|
| 381 |
+
# {
|
| 382 |
+
# "system_hint": "canvas",
|
| 383 |
+
# "name": "画布",
|
| 384 |
+
# "description": "在写作和代码方面开展协作",
|
| 385 |
+
# "logo": "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.5 5.5C4.3 5.2 5.2 4 5.5 2.5C5.8 4 6.7 5.2 8.5 5.5C6.7 5.8 5.8 7 5.5 8.5C5.2 7 4.3 5.8 2.5 5.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.66282 16.5231L5.18413 19.3952C5.12203 19.7678 5.09098 19.9541 5.14876 20.0888C5.19933 20.2067 5.29328 20.3007 5.41118 20.3512C5.54589 20.409 5.73218 20.378 6.10476 20.3159L8.97693 19.8372C9.72813 19.712 10.1037 19.6494 10.4542 19.521C10.7652 19.407 11.0608 19.2549 11.3343 19.068C11.6425 18.8575 11.9118 18.5882 12.4503 18.0497L20 10.5C21.3807 9.11929 21.3807 6.88071 20 5.5C18.6193 4.11929 16.3807 4.11929 15 5.5L7.45026 13.0497C6.91175 13.5882 6.6425 13.8575 6.43197 14.1657C6.24513 14.4392 6.09299 14.7348 5.97903 15.0458C5.85062 15.3963 5.78802 15.7719 5.66282 16.5231Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14.5 7L18.5 11\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
|
| 386 |
+
# "required_features": [
|
| 387 |
+
# "canvas"
|
| 388 |
+
# ],
|
| 389 |
+
# "required_models": [],
|
| 390 |
+
# "required_conversation_modes": [],
|
| 391 |
+
# "allow_in_temporary_chat": False,
|
| 392 |
+
# "composer_bar_button_info": None,
|
| 393 |
+
# "suggested_prompt": {
|
| 394 |
+
# "theme": "#AF52DE",
|
| 395 |
+
# "title": "画布",
|
| 396 |
+
# "subtitle": "写作和编程",
|
| 397 |
+
# "sort_order": 3,
|
| 398 |
+
# "badge": None
|
| 399 |
+
# },
|
| 400 |
+
# "regex_matches": None
|
| 401 |
+
# },
|
| 402 |
+
# {
|
| 403 |
+
# "system_hint": "research",
|
| 404 |
+
# "name": "深入研究",
|
| 405 |
+
# "description": "对任何主题都有详细的见解",
|
| 406 |
+
# "logo": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M12.47 15.652a1 1 0 0 1 1.378.318l2.5 4a1 1 0 1 1-1.696 1.06l-2.5-4a1 1 0 0 1 .318-1.378Z\" clip-rule=\"evenodd\"/><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M11.53 15.652a1 1 0 0 1 .318 1.378l-2.5 4a1 1 0 0 1-1.696-1.06l2.5-4a1 1 0 0 1 1.378-.318ZM17.824 4.346a.5.5 0 0 0-.63-.321l-.951.309a1 1 0 0 0-.642 1.26l1.545 4.755a1 1 0 0 0 1.26.642l.95-.309a.5.5 0 0 0 .322-.63l-1.854-5.706Zm-1.248-2.223a2.5 2.5 0 0 1 3.15 1.605l1.854 5.706a2.5 2.5 0 0 1-1.605 3.15l-.951.31a2.992 2.992 0 0 1-2.443-.265l-2.02.569a1 1 0 1 1-.541-1.926l1.212-.34-1.353-4.163L5 10.46a1 1 0 0 0-.567 1.233l.381 1.171a1 1 0 0 0 1.222.654l3.127-.88a1 1 0 1 1 .541 1.926l-3.127.88a3 3 0 0 1-3.665-1.961l-.38-1.172a3 3 0 0 1 1.7-3.697l9.374-3.897a3 3 0 0 1 2.02-2.285l.95-.31Z\" clip-rule=\"evenodd\"/><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M12 12.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM8.5 14a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0Z\" clip-rule=\"evenodd\"/></svg>",
|
| 407 |
+
# "required_features": [],
|
| 408 |
+
# "required_models": [],
|
| 409 |
+
# "required_conversation_modes": [
|
| 410 |
+
# "primary_assistant"
|
| 411 |
+
# ],
|
| 412 |
+
# "allow_in_temporary_chat": False,
|
| 413 |
+
# "composer_bar_button_info": {
|
| 414 |
+
# "disabled_text": "深入研究不可用",
|
| 415 |
+
# "tooltip_text": "对任何主题都有详细的见解",
|
| 416 |
+
# "announcement_key": "oai/apps/hasSeenComposerCaterpillarButtonTooltip",
|
| 417 |
+
# "nux_title": "您的个人研究员",
|
| 418 |
+
# "nux_description": "使用 ChatGPT 来研究购物、大概念、科学问题等内容。[了解更多](https://openai.com/index/introducing-deep-research/)",
|
| 419 |
+
# "rate_limit_reached_text": "本月限额已用完"
|
| 420 |
+
# },
|
| 421 |
+
# "suggested_prompt": {
|
| 422 |
+
# "theme": "#0088FF",
|
| 423 |
+
# "title": "深入研究",
|
| 424 |
+
# "subtitle": "探索宏大主题",
|
| 425 |
+
# "sort_order": 1,
|
| 426 |
+
# "badge": "新"
|
| 427 |
+
# },
|
| 428 |
+
# "regex_matches": None
|
| 429 |
+
# }
|
| 430 |
+
# ]
|
| 431 |
+
# }
|
| 432 |
+
# return Response(content=json.dumps(system_hints, indent=4), media_type="application/json")
|
| 433 |
+
|
| 434 |
+
|
| 435 |
@app.post("/backend-api/edge")
|
| 436 |
async def edge():
|
| 437 |
return Response(status_code=204)
|
|
|
|
| 439 |
|
| 440 |
if no_sentinel:
|
| 441 |
openai_sentinel_tokens_cache = {}
|
| 442 |
+
openai_sentinel_cookies_cache = {}
|
| 443 |
|
| 444 |
@app.post("/backend-api/sentinel/chat-requirements")
|
| 445 |
async def sentinel_chat_conversations(request: Request):
|
|
|
|
| 477 |
clients = client
|
| 478 |
|
| 479 |
try:
|
| 480 |
+
config = get_config(user_agent, session_id)
|
| 481 |
p = get_requirements_token(config)
|
| 482 |
data = {'p': p}
|
| 483 |
+
for cookie in openai_sentinel_cookies_cache.get(req_token, []):
|
| 484 |
+
clients.session.cookies.set(**cookie)
|
| 485 |
+
r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data, timeout=10)
|
| 486 |
+
oai_sc = r.cookies.get("oai-sc")
|
| 487 |
+
if oai_sc:
|
| 488 |
+
openai_sentinel_cookies_cache[req_token] = [{"name": "oai-sc", "value": oai_sc}]
|
| 489 |
if r.status_code != 200:
|
| 490 |
raise HTTPException(status_code=r.status_code, detail="Failed to get chat requirements")
|
| 491 |
resp = r.json()
|
|
|
|
| 496 |
try:
|
| 497 |
if turnstile_solver_url:
|
| 498 |
res = await client.post(turnstile_solver_url,
|
| 499 |
+
json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": user_agent})
|
| 500 |
turnstile_token = res.json().get("t")
|
| 501 |
except Exception as e:
|
| 502 |
logger.info(f"Turnstile ignored: {e}")
|
|
|
|
| 581 |
sentinel_tokens = openai_sentinel_tokens_cache.get(req_token, {})
|
| 582 |
openai_sentinel_tokens_cache.pop(req_token, None)
|
| 583 |
if not sentinel_tokens:
|
| 584 |
+
config = get_config(user_agent, session_id)
|
| 585 |
p = get_requirements_token(config)
|
| 586 |
data = {'p': p}
|
| 587 |
r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data,
|
|
|
|
| 594 |
try:
|
| 595 |
if turnstile_solver_url:
|
| 596 |
res = await client.post(turnstile_solver_url,
|
| 597 |
+
json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": user_agent})
|
| 598 |
turnstile_token = res.json().get("t")
|
| 599 |
except Exception as e:
|
| 600 |
logger.info(f"Turnstile ignored: {e}")
|
gateway/v1.py
CHANGED
|
@@ -38,3 +38,8 @@ async def ces_v1_projects_oai_settings():
|
|
| 38 |
@app.post("/ces/v1/{path:path}")
|
| 39 |
async def ces_v1():
|
| 40 |
return Response(status_code=202, content=json.dumps({"success": True}, indent=4), media_type="application/json")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
@app.post("/ces/v1/{path:path}")
|
| 39 |
async def ces_v1():
|
| 40 |
return Response(status_code=202, content=json.dumps({"success": True}, indent=4), media_type="application/json")
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
@app.post("/ces/statsc/flush")
|
| 44 |
+
async def ces_v1():
|
| 45 |
+
return Response(status_code=200, content=json.dumps({"success": True}, indent=4), media_type="application/json")
|
requirements.txt
CHANGED
|
@@ -10,4 +10,5 @@ pybase64
|
|
| 10 |
jinja2
|
| 11 |
APScheduler
|
| 12 |
ua-generator
|
| 13 |
-
pyjwt
|
|
|
|
|
|
| 10 |
jinja2
|
| 11 |
APScheduler
|
| 12 |
ua-generator
|
| 13 |
+
pyjwt
|
| 14 |
+
diskcache
|
templates/chatgpt.html
CHANGED
|
@@ -1,13 +1,16 @@
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
-
<html data-build="prod-
|
| 3 |
<head>
|
| 4 |
<meta charSet="UTF-8"/>
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
|
|
| 6 |
<link rel="preconnect" href=""/>
|
| 7 |
<link rel="preconnect" href=""/>
|
| 8 |
<meta name="robots" content="index, follow"/>
|
| 9 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
| 10 |
<meta name="apple-itunes-app" content="app-id=6448311069"/>
|
|
|
|
|
|
|
| 11 |
<link rel="icon" href="/assets/favicon-miwirzcw.ico" sizes="32x32"/>
|
| 12 |
{% raw %}
|
| 13 |
<link rel="icon" href="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='180'%20height='180'%20fill='none'%3e%3cstyle%3e%20:root%20{%20--primary-fill:%20%23000;%20--secondary-fill:%20%23fff;%20}%20@media%20(prefers-color-scheme:%20dark)%20{%20:root%20{%20--primary-fill:%20%23fff;%20--secondary-fill:%20%23000;%20}%20}%20%3c/style%3e%3cg%20clip-path='url(%23a)'%3e%3crect%20width='180'%20height='180'%20fill='var(--primary-fill)'%20rx='90'%20/%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20fill='var(--secondary-fill)'%20d='M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z'%20/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20fill='var(--primary-fill)'%20d='M0%200h180v180H0z'%20/%3e%3c/clipPath%3e%3cclipPath%20id='b'%3e%3cpath%20fill='var(--primary-fill)'%20d='M29.487%2029.964h121.035v119.954H29.487z'%20/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e" type="image/svg+xml"/>
|
|
@@ -20,40 +23,40 @@
|
|
| 20 |
<meta property="og:title" content="ChatGPT"/>
|
| 21 |
<meta property="og:image" content="/assets/chatgpt-share-og-u7j5uyao.webp"/>
|
| 22 |
<meta property="og:url" content="https://chatgpt.com"/>
|
| 23 |
-
<link rel="modulepreload" href="/assets/manifest-
|
| 24 |
-
<link rel="modulepreload" href="/assets/
|
| 25 |
-
<link rel="modulepreload" href="/assets/
|
| 26 |
-
<link rel="modulepreload" href="/assets/
|
| 27 |
-
<link rel="modulepreload" href="/assets/
|
| 28 |
-
<link rel="modulepreload" href="/assets/
|
| 29 |
-
<link rel="modulepreload" href="/assets/
|
| 30 |
-
<link rel="modulepreload" href="/assets/
|
| 31 |
-
<link rel="modulepreload" href="/assets/
|
| 32 |
-
<link rel="modulepreload" href="/assets/
|
| 33 |
-
<link rel="modulepreload" href="/assets/
|
| 34 |
-
<link rel="modulepreload" href="/assets/
|
| 35 |
-
<link rel="modulepreload" href="/assets/
|
| 36 |
-
<link rel="modulepreload" href="/assets/
|
| 37 |
-
<link rel="modulepreload" href="/assets/
|
| 38 |
-
<link rel="modulepreload" href="/assets/
|
| 39 |
-
<link rel="modulepreload" href="/assets/
|
| 40 |
-
<link rel="modulepreload" href="/assets/
|
| 41 |
-
<link rel="modulepreload" href="/assets/
|
| 42 |
-
<link rel="modulepreload" href="/assets/
|
| 43 |
-
<link rel="modulepreload" href="/assets/
|
| 44 |
-
<link rel="modulepreload" href="/assets/
|
| 45 |
-
<link rel="modulepreload" href="/assets/
|
| 46 |
-
<link rel="modulepreload" href="/assets/
|
| 47 |
-
<link rel="modulepreload" href="/assets/
|
| 48 |
-
<link rel="modulepreload" href="/assets/
|
| 49 |
-
<link rel="modulepreload" href="/assets/
|
| 50 |
-
<link rel="modulepreload" href="/assets/
|
| 51 |
-
<link rel="modulepreload" href="/assets/
|
| 52 |
-
<link rel="modulepreload" href="/assets/
|
| 53 |
-
<link rel="modulepreload" href="/assets/
|
| 54 |
-
<link rel="stylesheet" href="/assets/root-
|
| 55 |
-
<link rel="stylesheet" href="/assets/conversation-small-
|
| 56 |
-
<script nonce="
|
| 57 |
!function initScrollTimelineInline() {
|
| 58 |
try {
|
| 59 |
if (CSS.supports("animation-timeline: --works"))
|
|
@@ -113,13 +116,13 @@
|
|
| 113 |
<div class="flex h-full w-full flex-col">
|
| 114 |
<div class="relative flex h-full w-full flex-1 overflow-hidden transition-colors z-0">
|
| 115 |
<div class="relative flex h-full w-full flex-row overflow-hidden">
|
| 116 |
-
<div class="z-[21] flex-shrink-0 overflow-x-hidden bg-token-sidebar-surface-primary max-md:!w-0" style="width:260px">
|
| 117 |
<div class="h-full w-[260px]">
|
| 118 |
<div class="flex h-full min-h-0 flex-col">
|
| 119 |
<div class="draggable relative h-full w-full flex-1 items-start border-white/20">
|
| 120 |
<h2 style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">Chat history</h2>
|
| 121 |
<nav class="flex h-full w-full flex-col pl-3" aria-label="Chat history">
|
| 122 |
-
<div class="flex justify-between flex h-
|
| 123 |
<span class="hidden"></span>
|
| 124 |
<span class="flex" data-state="closed">
|
| 125 |
<button class="h-10 rounded-lg px-2 text-token-text-secondary focus-visible:bg-token-surface-hover focus-visible:outline-0 enabled:hover:bg-token-surface-hover disabled:text-token-text-quaternary no-draggable" aria-label="Close sidebar" data-testid="close-sidebar-button">
|
|
@@ -134,7 +137,15 @@
|
|
| 134 |
<div class="flex">
|
| 135 |
<span class="hidden"></span>
|
| 136 |
<span class="flex" data-state="closed">
|
| 137 |
-
<button aria-label="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="icon-xl-heavy">
|
| 139 |
<path d="M15.6729 3.91287C16.8918 2.69392 18.8682 2.69392 20.0871 3.91287C21.3061 5.13182 21.3061 7.10813 20.0871 8.32708L14.1499 14.2643C13.3849 15.0293 12.3925 15.5255 11.3215 15.6785L9.14142 15.9899C8.82983 16.0344 8.51546 15.9297 8.29289 15.7071C8.07033 15.4845 7.96554 15.1701 8.01005 14.8586L8.32149 12.6785C8.47449 11.6075 8.97072 10.615 9.7357 9.85006L15.6729 3.91287ZM18.6729 5.32708C18.235 4.88918 17.525 4.88918 17.0871 5.32708L11.1499 11.2643C10.6909 11.7233 10.3932 12.3187 10.3014 12.9613L10.1785 13.8215L11.0386 13.6986C11.6812 13.6068 12.2767 13.3091 12.7357 12.8501L18.6729 6.91287C19.1108 6.47497 19.1108 5.76499 18.6729 5.32708ZM11 3.99929C11.0004 4.55157 10.5531 4.99963 10.0008 5.00007C9.00227 5.00084 8.29769 5.00827 7.74651 5.06064C7.20685 5.11191 6.88488 5.20117 6.63803 5.32695C6.07354 5.61457 5.6146 6.07351 5.32698 6.63799C5.19279 6.90135 5.10062 7.24904 5.05118 7.8542C5.00078 8.47105 5 9.26336 5 10.4V13.6C5 14.7366 5.00078 15.5289 5.05118 16.1457C5.10062 16.7509 5.19279 17.0986 5.32698 17.3619C5.6146 17.9264 6.07354 18.3854 6.63803 18.673C6.90138 18.8072 7.24907 18.8993 7.85424 18.9488C8.47108 18.9992 9.26339 19 10.4 19H13.6C14.7366 19 15.5289 18.9992 16.1458 18.9488C16.7509 18.8993 17.0986 18.8072 17.362 18.673C17.9265 18.3854 18.3854 17.9264 18.673 17.3619C18.7988 17.1151 18.8881 16.7931 18.9393 16.2535C18.9917 15.7023 18.9991 14.9977 18.9999 13.9992C19.0003 13.4469 19.4484 12.9995 20.0007 13C20.553 13.0004 21.0003 13.4485 20.9999 14.0007C20.9991 14.9789 20.9932 15.7808 20.9304 16.4426C20.8664 17.116 20.7385 17.7136 20.455 18.2699C19.9757 19.2107 19.2108 19.9756 18.27 20.455C17.6777 20.7568 17.0375 20.8826 16.3086 20.9421C15.6008 21 14.7266 21 13.6428 21H10.3572C9.27339 21 8.39925 21 7.69138 20.9421C6.96253 20.8826 6.32234 20.7568 5.73005 20.455C4.78924 19.9756 4.02433 19.2107 3.54497 18.2699C3.24318 17.6776 3.11737 17.0374 3.05782 16.3086C2.99998 15.6007 2.99999 14.7266 3 13.6428V10.3572C2.99999 9.27337 2.99998 8.39922 3.05782 7.69134C3.11737 6.96249 3.24318 6.3223 3.54497 5.73001C4.02433 4.7892 4.78924 4.0243 5.73005 3.54493C6.28633 3.26149 6.88399 3.13358 7.55735 3.06961C8.21919 3.00673 9.02103 3.00083 9.99922 3.00007C10.5515 2.99964 10.9996 3.447 11 3.99929Z" fill="currentColor"></path>
|
| 140 |
</svg>
|
|
@@ -144,6 +155,66 @@
|
|
| 144 |
</div>
|
| 145 |
<div class="flex-col flex-1 transition-opacity duration-500 relative pr-3 overflow-y-auto">
|
| 146 |
<div class="group/sidebar">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
<div class="flex flex-col gap-2 text-token-text-primary text-sm mt-5 first:mt-0 h-full justify-center items-center empty:hidden"></div>
|
| 148 |
</div>
|
| 149 |
</div>
|
|
@@ -154,117 +225,208 @@
|
|
| 154 |
</div>
|
| 155 |
<div class="relative flex h-full max-w-full flex-1 flex-col overflow-hidden">
|
| 156 |
<main class="relative h-full w-full flex-1 overflow-auto transition-width">
|
| 157 |
-
<div
|
| 158 |
-
<div class="
|
| 159 |
-
<div class="
|
| 160 |
-
<div class="absolute
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
<div class="
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
</svg>
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
|
|
|
|
|
|
|
|
|
| 172 |
</div>
|
| 173 |
</div>
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
</div>
|
| 182 |
</div>
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
</div>
|
| 190 |
</div>
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
<div class="flex flex-col justify-start" style="min-height:0">
|
| 199 |
-
<div class="
|
| 200 |
-
<
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
</div>
|
| 211 |
</div>
|
| 212 |
-
<div class="w-[32px] pt-1"></div>
|
| 213 |
</div>
|
| 214 |
</div>
|
| 215 |
-
<div
|
| 216 |
-
<div
|
| 217 |
-
<
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
<
|
| 222 |
-
<
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
</svg>
|
| 227 |
-
</button>
|
| 228 |
-
<input disabled="" multiple="" type="file" style="display:none" tabindex="-1" class="hidden"/>
|
| 229 |
-
</div>
|
| 230 |
</span>
|
| 231 |
-
</
|
| 232 |
</div>
|
| 233 |
-
</
|
| 234 |
</div>
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 242 |
</svg>
|
|
|
|
| 243 |
</button>
|
| 244 |
-
</
|
| 245 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
</div>
|
| 247 |
</div>
|
| 248 |
</div>
|
| 249 |
</div>
|
| 250 |
</div>
|
|
|
|
| 251 |
</div>
|
| 252 |
-
</form>
|
| 253 |
-
</div>
|
| 254 |
-
<div class="w-full translate-y-4 px-2 py-2 text-center text-xs text-token-text-secondary empty:hidden xs:translate-y-8 md:px-[60px] @lg/thread:absolute @lg/thread:bottom-0 @lg/thread:left-0">
|
| 255 |
-
<div class="min-h-4">
|
| 256 |
-
<div>ChatGPT can make mistakes. Check important info.</div>
|
| 257 |
</div>
|
| 258 |
-
|
|
|
|
| 259 |
</div>
|
| 260 |
</div>
|
| 261 |
</div>
|
| 262 |
</div>
|
| 263 |
</div>
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
</div>
|
| 269 |
</div>
|
| 270 |
</div>
|
|
@@ -277,7 +439,7 @@
|
|
| 277 |
<div aria-live="assertive" aria-atomic="true" class="sr-only"></div>
|
| 278 |
<div aria-live="polite" aria-atomic="true" class="sr-only"></div>
|
| 279 |
<audio class="fixed bottom-0 left-0 hidden h-0 w-0" autoPlay="" crossorigin="anonymous"></audio>
|
| 280 |
-
<script nonce="
|
| 281 |
window.__reactRouterContext = {
|
| 282 |
"basename": "/",
|
| 283 |
"future": {
|
|
@@ -291,11 +453,11 @@
|
|
| 291 |
}
|
| 292 |
}).pipeThrough(new TextEncoderStream());
|
| 293 |
</script>
|
| 294 |
-
<script nonce="
|
| 295 |
-
import "/assets/manifest-
|
| 296 |
-
import*as route0 from "/assets/
|
| 297 |
-
import*as route1 from "/assets/
|
| 298 |
-
import*as route2 from "/assets/
|
| 299 |
|
| 300 |
window.__reactRouterRouteModules = {
|
| 301 |
"root": route0,
|
|
@@ -303,20 +465,20 @@
|
|
| 303 |
"routes/_conversation._index": route2
|
| 304 |
};
|
| 305 |
|
| 306 |
-
import("/assets/
|
| 307 |
</script>
|
| 308 |
<!--$?-->
|
| 309 |
<template id="B:0"></template>
|
| 310 |
<!--/$-->
|
| 311 |
<div hidden id="S:0">
|
| 312 |
-
<script nonce="
|
| 313 |
window.__reactRouterContext.streamController.enqueue("{{ react_chatgpt_context_1|safe }}\n");
|
| 314 |
</script>
|
| 315 |
<!--$?-->
|
| 316 |
<template id="B:1"></template>
|
| 317 |
<!--/$-->
|
| 318 |
</div>
|
| 319 |
-
<script nonce="
|
| 320 |
$RC = function(b, c, e) {
|
| 321 |
c = document.getElementById(c);
|
| 322 |
c.parentNode.removeChild(c);
|
|
@@ -356,23 +518,34 @@
|
|
| 356 |
$RC("B:0", "S:0")
|
| 357 |
</script>
|
| 358 |
<div hidden id="S:1">
|
| 359 |
-
<script nonce="
|
| 360 |
-
window.__reactRouterContext.streamController.enqueue("
|
| 361 |
</script>
|
| 362 |
<!--$?-->
|
| 363 |
<template id="B:2"></template>
|
| 364 |
<!--/$-->
|
| 365 |
</div>
|
| 366 |
-
<script nonce="
|
| 367 |
$RC("B:1", "S:1")
|
| 368 |
</script>
|
| 369 |
<div hidden id="S:2">
|
| 370 |
-
<script nonce="
|
| 371 |
-
window.__reactRouterContext.streamController.
|
| 372 |
</script>
|
|
|
|
|
|
|
|
|
|
| 373 |
</div>
|
| 374 |
-
<script nonce="
|
| 375 |
$RC("B:2", "S:2")
|
| 376 |
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 377 |
</body>
|
| 378 |
</html>
|
|
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
+
<html data-build="prod-c3c153491ab77f6fdaff0b4ee8515dafacb3c18a" dir="ltr" class="">
|
| 3 |
<head>
|
| 4 |
<meta charSet="UTF-8"/>
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
| 6 |
+
<link rel="preload" as="image" href="/assets/sora-mutf8tav.webp"/>
|
| 7 |
<link rel="preconnect" href=""/>
|
| 8 |
<link rel="preconnect" href=""/>
|
| 9 |
<meta name="robots" content="index, follow"/>
|
| 10 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
| 11 |
<meta name="apple-itunes-app" content="app-id=6448311069"/>
|
| 12 |
+
<meta name="dd-trace-id" content="14093928210743749173"/>
|
| 13 |
+
<meta name="dd-trace-time" content="1742986866029"/>
|
| 14 |
<link rel="icon" href="/assets/favicon-miwirzcw.ico" sizes="32x32"/>
|
| 15 |
{% raw %}
|
| 16 |
<link rel="icon" href="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='180'%20height='180'%20fill='none'%3e%3cstyle%3e%20:root%20{%20--primary-fill:%20%23000;%20--secondary-fill:%20%23fff;%20}%20@media%20(prefers-color-scheme:%20dark)%20{%20:root%20{%20--primary-fill:%20%23fff;%20--secondary-fill:%20%23000;%20}%20}%20%3c/style%3e%3cg%20clip-path='url(%23a)'%3e%3crect%20width='180'%20height='180'%20fill='var(--primary-fill)'%20rx='90'%20/%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20fill='var(--secondary-fill)'%20d='M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z'%20/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20fill='var(--primary-fill)'%20d='M0%200h180v180H0z'%20/%3e%3c/clipPath%3e%3cclipPath%20id='b'%3e%3cpath%20fill='var(--primary-fill)'%20d='M29.487%2029.964h121.035v119.954H29.487z'%20/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e" type="image/svg+xml"/>
|
|
|
|
| 23 |
<meta property="og:title" content="ChatGPT"/>
|
| 24 |
<meta property="og:image" content="/assets/chatgpt-share-og-u7j5uyao.webp"/>
|
| 25 |
<meta property="og:url" content="https://chatgpt.com"/>
|
| 26 |
+
<link rel="modulepreload" href="/assets/manifest-532b61a2.js"/>
|
| 27 |
+
<link rel="modulepreload" href="/assets/mwrrfx5gxel0ghh2.js"/>
|
| 28 |
+
<link rel="modulepreload" href="/assets/fs6h2trisr1juto6.js"/>
|
| 29 |
+
<link rel="modulepreload" href="/assets/njq6ygky3ttysgdk.js"/>
|
| 30 |
+
<link rel="modulepreload" href="/assets/jandtmjen68hvio9.js"/>
|
| 31 |
+
<link rel="modulepreload" href="/assets/fj65uqnkvh37vl4n.js"/>
|
| 32 |
+
<link rel="modulepreload" href="/assets/d7a6rc8fexfzu7dt.js"/>
|
| 33 |
+
<link rel="modulepreload" href="/assets/fu6bathgya5b9rdr.js"/>
|
| 34 |
+
<link rel="modulepreload" href="/assets/lj0prj6na7gf1jpf.js"/>
|
| 35 |
+
<link rel="modulepreload" href="/assets/csg4i0wk6hi0jvkd.js"/>
|
| 36 |
+
<link rel="modulepreload" href="/assets/kukctmibghbbqwq7.js"/>
|
| 37 |
+
<link rel="modulepreload" href="/assets/ijutvl794yycgs5p.js"/>
|
| 38 |
+
<link rel="modulepreload" href="/assets/n9whwsbg0rx5cs8k.js"/>
|
| 39 |
+
<link rel="modulepreload" href="/assets/gunpso70jnmarvod.js"/>
|
| 40 |
+
<link rel="modulepreload" href="/assets/jyg6m0czwgwjnl3i.js"/>
|
| 41 |
+
<link rel="modulepreload" href="/assets/en8ogvlmn3lccz09.js"/>
|
| 42 |
+
<link rel="modulepreload" href="/assets/gvhvfcdqhc5unmaw.js"/>
|
| 43 |
+
<link rel="modulepreload" href="/assets/wqepkoieaii7q4ep.js"/>
|
| 44 |
+
<link rel="modulepreload" href="/assets/gfo75oujoeaedm5y.js"/>
|
| 45 |
+
<link rel="modulepreload" href="/assets/n1h3bv0q1kp4dflt.js"/>
|
| 46 |
+
<link rel="modulepreload" href="/assets/o634nz6bc7e8bevz.js"/>
|
| 47 |
+
<link rel="modulepreload" href="/assets/ohq33fk3dbalo2mk.js"/>
|
| 48 |
+
<link rel="modulepreload" href="/assets/cffgjlidl1olpt2q.js"/>
|
| 49 |
+
<link rel="modulepreload" href="/assets/i6ze5suolzahci5v.js"/>
|
| 50 |
+
<link rel="modulepreload" href="/assets/npeck75bz46c490i.js"/>
|
| 51 |
+
<link rel="modulepreload" href="/assets/m97sb2fnwj0a6vyo.js"/>
|
| 52 |
+
<link rel="modulepreload" href="/assets/cm0hdcditutj2jz2.js"/>
|
| 53 |
+
<link rel="modulepreload" href="/assets/jcoe6v231ph25bfi.js"/>
|
| 54 |
+
<link rel="modulepreload" href="/assets/mfnl9tbidoj0ik29.js"/>
|
| 55 |
+
<link rel="modulepreload" href="/assets/lprjl238d50elo8f.js"/>
|
| 56 |
+
<link rel="modulepreload" href="/assets/ovc3ksv6dtkjao8i.js"/>
|
| 57 |
+
<link rel="stylesheet" href="/assets/root-cl538jor.css"/>
|
| 58 |
+
<link rel="stylesheet" href="/assets/conversation-small-m9kq0y4e.css"/>
|
| 59 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 60 |
!function initScrollTimelineInline() {
|
| 61 |
try {
|
| 62 |
if (CSS.supports("animation-timeline: --works"))
|
|
|
|
| 116 |
<div class="flex h-full w-full flex-col">
|
| 117 |
<div class="relative flex h-full w-full flex-1 overflow-hidden transition-colors z-0">
|
| 118 |
<div class="relative flex h-full w-full flex-row overflow-hidden">
|
| 119 |
+
<div class="z-[21] flex-shrink-0 overflow-x-hidden bg-token-sidebar-surface-primary [view-transition-name:--sidebar-slideover] max-md:!w-0" style="width:260px">
|
| 120 |
<div class="h-full w-[260px]">
|
| 121 |
<div class="flex h-full min-h-0 flex-col">
|
| 122 |
<div class="draggable relative h-full w-full flex-1 items-start border-white/20">
|
| 123 |
<h2 style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal">Chat history</h2>
|
| 124 |
<nav class="flex h-full w-full flex-col pl-3" aria-label="Chat history">
|
| 125 |
+
<div class="flex justify-between flex h-header-height items-center xs:pr-3">
|
| 126 |
<span class="hidden"></span>
|
| 127 |
<span class="flex" data-state="closed">
|
| 128 |
<button class="h-10 rounded-lg px-2 text-token-text-secondary focus-visible:bg-token-surface-hover focus-visible:outline-0 enabled:hover:bg-token-surface-hover disabled:text-token-text-quaternary no-draggable" aria-label="Close sidebar" data-testid="close-sidebar-button">
|
|
|
|
| 137 |
<div class="flex">
|
| 138 |
<span class="hidden"></span>
|
| 139 |
<span class="flex" data-state="closed">
|
| 140 |
+
<button aria-label="Ctrl K" class="h-10 rounded-lg px-2 text-token-text-secondary focus-visible:bg-token-surface-hover focus-visible:outline-0 enabled:hover:bg-token-surface-hover disabled:text-token-text-quaternary">
|
| 141 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-xl-heavy">
|
| 142 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.75 4.25C7.16015 4.25 4.25 7.16015 4.25 10.75C4.25 14.3399 7.16015 17.25 10.75 17.25C14.3399 17.25 17.25 14.3399 17.25 10.75C17.25 7.16015 14.3399 4.25 10.75 4.25ZM2.25 10.75C2.25 6.05558 6.05558 2.25 10.75 2.25C15.4444 2.25 19.25 6.05558 19.25 10.75C19.25 12.7369 18.5683 14.5645 17.426 16.0118L21.4571 20.0429C21.8476 20.4334 21.8476 21.0666 21.4571 21.4571C21.0666 21.8476 20.4334 21.8476 20.0429 21.4571L16.0118 17.426C14.5645 18.5683 12.7369 19.25 10.75 19.25C6.05558 19.25 2.25 15.4444 2.25 10.75Z" fill="currentColor"></path>
|
| 143 |
+
</svg>
|
| 144 |
+
</button>
|
| 145 |
+
</span>
|
| 146 |
+
<span class="hidden"></span>
|
| 147 |
+
<span class="flex" data-state="closed">
|
| 148 |
+
<button aria-label="New chat" data-testid="create-new-chat-button" class="h-10 rounded-lg px-2 text-token-text-secondary focus-visible:bg-token-surface-hover focus-visible:outline-0 enabled:hover:bg-token-surface-hover disabled:text-token-text-quaternary">
|
| 149 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="icon-xl-heavy">
|
| 150 |
<path d="M15.6729 3.91287C16.8918 2.69392 18.8682 2.69392 20.0871 3.91287C21.3061 5.13182 21.3061 7.10813 20.0871 8.32708L14.1499 14.2643C13.3849 15.0293 12.3925 15.5255 11.3215 15.6785L9.14142 15.9899C8.82983 16.0344 8.51546 15.9297 8.29289 15.7071C8.07033 15.4845 7.96554 15.1701 8.01005 14.8586L8.32149 12.6785C8.47449 11.6075 8.97072 10.615 9.7357 9.85006L15.6729 3.91287ZM18.6729 5.32708C18.235 4.88918 17.525 4.88918 17.0871 5.32708L11.1499 11.2643C10.6909 11.7233 10.3932 12.3187 10.3014 12.9613L10.1785 13.8215L11.0386 13.6986C11.6812 13.6068 12.2767 13.3091 12.7357 12.8501L18.6729 6.91287C19.1108 6.47497 19.1108 5.76499 18.6729 5.32708ZM11 3.99929C11.0004 4.55157 10.5531 4.99963 10.0008 5.00007C9.00227 5.00084 8.29769 5.00827 7.74651 5.06064C7.20685 5.11191 6.88488 5.20117 6.63803 5.32695C6.07354 5.61457 5.6146 6.07351 5.32698 6.63799C5.19279 6.90135 5.10062 7.24904 5.05118 7.8542C5.00078 8.47105 5 9.26336 5 10.4V13.6C5 14.7366 5.00078 15.5289 5.05118 16.1457C5.10062 16.7509 5.19279 17.0986 5.32698 17.3619C5.6146 17.9264 6.07354 18.3854 6.63803 18.673C6.90138 18.8072 7.24907 18.8993 7.85424 18.9488C8.47108 18.9992 9.26339 19 10.4 19H13.6C14.7366 19 15.5289 18.9992 16.1458 18.9488C16.7509 18.8993 17.0986 18.8072 17.362 18.673C17.9265 18.3854 18.3854 17.9264 18.673 17.3619C18.7988 17.1151 18.8881 16.7931 18.9393 16.2535C18.9917 15.7023 18.9991 14.9977 18.9999 13.9992C19.0003 13.4469 19.4484 12.9995 20.0007 13C20.553 13.0004 21.0003 13.4485 20.9999 14.0007C20.9991 14.9789 20.9932 15.7808 20.9304 16.4426C20.8664 17.116 20.7385 17.7136 20.455 18.2699C19.9757 19.2107 19.2108 19.9756 18.27 20.455C17.6777 20.7568 17.0375 20.8826 16.3086 20.9421C15.6008 21 14.7266 21 13.6428 21H10.3572C9.27339 21 8.39925 21 7.69138 20.9421C6.96253 20.8826 6.32234 20.7568 5.73005 20.455C4.78924 19.9756 4.02433 19.2107 3.54497 18.2699C3.24318 17.6776 3.11737 17.0374 3.05782 16.3086C2.99998 15.6007 2.99999 14.7266 3 13.6428V10.3572C2.99999 9.27337 2.99998 8.39922 3.05782 7.69134C3.11737 6.96249 3.24318 6.3223 3.54497 5.73001C4.02433 4.7892 4.78924 4.0243 5.73005 3.54493C6.28633 3.26149 6.88399 3.13358 7.55735 3.06961C8.21919 3.00673 9.02103 3.00083 9.99922 3.00007C10.5515 2.99964 10.9996 3.447 11 3.99929Z" fill="currentColor"></path>
|
| 151 |
</svg>
|
|
|
|
| 155 |
</div>
|
| 156 |
<div class="flex-col flex-1 transition-opacity duration-500 relative pr-3 overflow-y-auto">
|
| 157 |
<div class="group/sidebar">
|
| 158 |
+
<div class="bg-token-sidebar-surface-primary pt-0">
|
| 159 |
+
<span class="hidden"></span>
|
| 160 |
+
<span class="flex w-full items-center" data-state="closed">
|
| 161 |
+
<div class="flex-1" tabindex="0">
|
| 162 |
+
<a title="ChatGPT" style="--item-background-color:var(--sidebar-surface-primary)" class="no-draggable group rounded-lg active:opacity-90 bg-[var(--item-background-color)] h-9 text-sm flex items-center gap-2.5 p-2 screen-arch:relative screen-arch:bg-transparent screen-arch:py-[7px]" href="/" data-discover="true">
|
| 163 |
+
<div class="flex h-6 w-6 items-center justify-center text-token-text-secondary">
|
| 164 |
+
<div class="h-6 w-6">
|
| 165 |
+
<div class="gizmo-shadow-stroke relative flex h-full items-center justify-center rounded-full bg-token-main-surface-primary text-token-text-primary">
|
| 166 |
+
<div class="flex h-full w-full items-center justify-center" style="opacity:1;will-change:opacity">
|
| 167 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-2/3 w-2/3">
|
| 168 |
+
<text x="-9999" y="-9999">ChatGPT</text>
|
| 169 |
+
<path d="M9.20509 8.76511V6.50545C9.20509 6.31513 9.27649 6.17234 9.44293 6.0773L13.9861 3.46088C14.6046 3.10413 15.342 2.93769 16.103 2.93769C18.9573 2.93769 20.7651 5.14983 20.7651 7.50454C20.7651 7.67098 20.7651 7.86129 20.7412 8.05161L16.0316 5.2924C15.7462 5.12596 15.4607 5.12596 15.1753 5.2924L9.20509 8.76511ZM19.8135 17.5659V12.1664C19.8135 11.8333 19.6708 11.5955 19.3854 11.429L13.4152 7.95633L15.3656 6.83833C15.5321 6.74328 15.6749 6.74328 15.8413 6.83833L20.3845 9.45474C21.6928 10.216 22.5728 11.8333 22.5728 13.4031C22.5728 15.2108 21.5025 16.8758 19.8135 17.5657V17.5659ZM7.80173 12.8088L5.8513 11.6671C5.68486 11.5721 5.61346 11.4293 5.61346 11.239V6.00613C5.61346 3.46111 7.56389 1.53433 10.2042 1.53433C11.2033 1.53433 12.1307 1.86743 12.9159 2.46202L8.2301 5.17371C7.94475 5.34015 7.80195 5.57798 7.80195 5.91109V12.809L7.80173 12.8088ZM12 15.2349L9.20509 13.6651V10.3351L12 8.76534L14.7947 10.3351V13.6651L12 15.2349ZM13.7958 22.4659C12.7967 22.4659 11.8693 22.1328 11.0841 21.5382L15.7699 18.8265C16.0553 18.6601 16.198 18.4222 16.198 18.0891V11.1912L18.1723 12.3329C18.3388 12.4279 18.4102 12.5707 18.4102 12.761V17.9939C18.4102 20.5389 16.4359 22.4657 13.7958 22.4657V22.4659ZM8.15848 17.1617L3.61528 14.5452C2.30696 13.784 1.42701 12.1667 1.42701 10.5969C1.42701 8.76534 2.52115 7.12414 4.20987 6.43428V11.8574C4.20987 12.1905 4.35266 12.4284 4.63802 12.5948L10.5846 16.0436L8.63415 17.1617C8.46771 17.2567 8.32492 17.2567 8.15848 17.1617ZM7.897 21.0625C5.20919 21.0625 3.23488 19.0407 3.23488 16.5432C3.23488 16.3529 3.25875 16.1626 3.2824 15.9723L7.96817 18.6839C8.25352 18.8504 8.53911 18.8504 8.82446 18.6839L14.7947 15.2351V17.4948C14.7947 17.6851 14.7233 17.8279 14.5568 17.9229L10.0136 20.5393C9.39518 20.8961 8.6578 21.0625 7.89677 21.0625H7.897ZM13.7958 23.8929C16.6739 23.8929 19.0762 21.8474 19.6235 19.1357C22.2874 18.4459 24 15.9484 24 13.4034C24 11.7383 23.2865 10.121 22.002 8.95542C22.121 8.45588 22.1924 7.95633 22.1924 7.45702C22.1924 4.0557 19.4331 1.51045 16.2458 1.51045C15.6037 1.51045 14.9852 1.60549 14.3668 1.81968C13.2963 0.773071 11.8215 0.107086 10.2042 0.107086C7.32606 0.107086 4.92383 2.15256 4.37653 4.86425C1.7126 5.55411 0 8.05161 0 10.5966C0 12.2617 0.713506 13.879 1.99795 15.0446C1.87904 15.5441 1.80764 16.0436 1.80764 16.543C1.80764 19.9443 4.56685 22.4895 7.75421 22.4895C8.39632 22.4895 9.01478 22.3945 9.63324 22.1803C10.7035 23.2269 12.1783 23.8929 13.7958 23.8929Z" fill="currentColor"></path>
|
| 170 |
+
</svg>
|
| 171 |
+
</div>
|
| 172 |
+
</div>
|
| 173 |
+
</div>
|
| 174 |
+
</div>
|
| 175 |
+
<div class="grow overflow-hidden text-ellipsis whitespace-nowrap text-sm text-token-text-primary">ChatGPT</div>
|
| 176 |
+
</a>
|
| 177 |
+
</div>
|
| 178 |
+
</span>
|
| 179 |
+
</div>
|
| 180 |
+
<div class="relative self-stretch">
|
| 181 |
+
<a title="Sora" style="--item-background-color:var(--sidebar-surface-primary)" class="no-draggable group rounded-lg active:opacity-90 bg-[var(--item-background-color)] h-9 text-sm flex items-center gap-2.5 p-2 screen-arch:relative screen-arch:bg-transparent screen-arch:py-[7px]" href="https://sora.com?utm_source=chatgpt" target="_blank">
|
| 182 |
+
<div class="flex h-6 w-6 items-center justify-center text-token-text-secondary">
|
| 183 |
+
<img src="/assets/sora-mutf8tav.webp" alt="Sora icon"/>
|
| 184 |
+
</div>
|
| 185 |
+
<div class="grow overflow-hidden text-ellipsis whitespace-nowrap text-sm text-token-text-primary">Sora</div>
|
| 186 |
+
<div class="invisible text-token-text-secondary hover:text-token-text-primary can-hover:group-hover:visible">
|
| 187 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-md">
|
| 188 |
+
<g transform="rotate(45 12 12)">
|
| 189 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C12.2652 3 12.5196 3.10536 12.7071 3.29289L19.7071 10.2929C20.0976 10.6834 20.0976 11.3166 19.7071 11.7071C19.3166 12.0976 18.6834 12.0976 18.2929 11.7071L13 6.41421V20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20V6.41422L5.70711 11.7071C5.31658 12.0976 4.68342 12.0976 4.29289 11.7071C3.90237 11.3166 3.90237 10.6834 4.29289 10.2929L11.2929 3.29289C11.4804 3.10536 11.7348 3 12 3Z" fill="currentColor"></path>
|
| 190 |
+
</g>
|
| 191 |
+
</svg>
|
| 192 |
+
</div>
|
| 193 |
+
</a>
|
| 194 |
+
</div>
|
| 195 |
+
<div>
|
| 196 |
+
<div tabindex="0">
|
| 197 |
+
<a href="/gpts" data-discover="true">
|
| 198 |
+
<button data-testid="explore-gpts-button" class="flex h-9 w-full items-center gap-2.5 rounded-lg px-2 text-token-text-primary hover:bg-token-sidebar-surface-secondary">
|
| 199 |
+
<div class="flex h-6 w-6 items-center justify-center text-token-text-secondary">
|
| 200 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-md">
|
| 201 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.75 4.5C5.50736 4.5 4.5 5.50736 4.5 6.75C4.5 7.99264 5.50736 9 6.75 9C7.99264 9 9 7.99264 9 6.75C9 5.50736 7.99264 4.5 6.75 4.5ZM2.5 6.75C2.5 4.40279 4.40279 2.5 6.75 2.5C9.09721 2.5 11 4.40279 11 6.75C11 9.09721 9.09721 11 6.75 11C4.40279 11 2.5 9.09721 2.5 6.75Z" fill="currentColor"></path>
|
| 202 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.25 4.5C16.0074 4.5 15 5.50736 15 6.75C15 7.99264 16.0074 9 17.25 9C18.4926 9 19.5 7.99264 19.5 6.75C19.5 5.50736 18.4926 4.5 17.25 4.5ZM13 6.75C13 4.40279 14.9028 2.5 17.25 2.5C19.5972 2.5 21.5 4.40279 21.5 6.75C21.5 9.09721 19.5972 11 17.25 11C14.9028 11 13 9.09721 13 6.75Z" fill="currentColor"></path>
|
| 203 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.75 15C5.50736 15 4.5 16.0074 4.5 17.25C4.5 18.4926 5.50736 19.5 6.75 19.5C7.99264 19.5 9 18.4926 9 17.25C9 16.0074 7.99264 15 6.75 15ZM2.5 17.25C2.5 14.9028 4.40279 13 6.75 13C9.09721 13 11 14.9028 11 17.25C11 19.5972 9.09721 21.5 6.75 21.5C4.40279 21.5 2.5 19.5972 2.5 17.25Z" fill="currentColor"></path>
|
| 204 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.25 15C16.0074 15 15 16.0074 15 17.25C15 18.4926 16.0074 19.5 17.25 19.5C18.4926 19.5 19.5 18.4926 19.5 17.25C19.5 16.0074 18.4926 15 17.25 15ZM13 17.25C13 14.9028 14.9028 13 17.25 13C19.5972 13 21.5 14.9028 21.5 17.25C21.5 19.5972 19.5972 21.5 17.25 21.5C14.9028 21.5 13 19.5972 13 17.25Z" fill="currentColor"></path>
|
| 205 |
+
</svg>
|
| 206 |
+
</div>
|
| 207 |
+
<span class="text-sm">Explore GPTs</span>
|
| 208 |
+
</button>
|
| 209 |
+
</a>
|
| 210 |
+
</div>
|
| 211 |
+
</div>
|
| 212 |
+
<div class="z-20 screen-arch:sticky screen-arch:top-[var(--sticky-title-offset)] select-none overflow-clip text-ellipsis break-all pl-2 pt-7 text-xs font-semibold text-token-text-primary screen-arch:-mr-2 screen-arch:h-10 screen-arch:min-w-[50cqw] screen-arch:-translate-x-2 screen-arch:bg-[var(--sidebar-surface)] screen-arch:py-1 screen-arch:text-token-text-secondary">
|
| 213 |
+
<h2 id="snorlax-heading" class="flex h-[26px] w-full items-center justify-between text-xs"></h2>
|
| 214 |
+
</div>
|
| 215 |
+
<aside class="flex flex-col gap-4 mb-0">
|
| 216 |
+
<ul aria-labelledby="snorlax-heading" class="flex flex-col screen-arch:mb-3"></ul>
|
| 217 |
+
</aside>
|
| 218 |
<div class="flex flex-col gap-2 text-token-text-primary text-sm mt-5 first:mt-0 h-full justify-center items-center empty:hidden"></div>
|
| 219 |
</div>
|
| 220 |
</div>
|
|
|
|
| 225 |
</div>
|
| 226 |
<div class="relative flex h-full max-w-full flex-1 flex-col overflow-hidden">
|
| 227 |
<main class="relative h-full w-full flex-1 overflow-auto transition-width">
|
| 228 |
+
<div class="h-full w-full @container/thread">
|
| 229 |
+
<div role="presentation" class="composer-parent flex h-full flex-col focus-visible:outline-0">
|
| 230 |
+
<div class="draggable no-draggable-children top-0 p-3 flex items-center justify-between z-10 h-header-height font-semibold bg-token-main-surface-primary pointer-events-none select-none *:pointer-events-auto motion-safe:transition max-md:hidden absolute left-0 right-0 @thread-xl/thread:absolute @thread-xl/thread:left-0 @thread-xl/thread:right-0 @thread-xl/thread:bg-transparent @thread-xl/thread:!shadow-none [box-shadow:var(--sharp-edge-top-shadow-placeholder)]">
|
| 231 |
+
<div class="absolute start-1/2 ltr:-translate-x-1/2 rtl:translate-x-1/2"></div>
|
| 232 |
+
<div class="flex items-center gap-0 overflow-hidden">
|
| 233 |
+
<button aria-label="" style="view-transition-name:var(--vt-thread-model-switcher)" class="group flex cursor-pointer items-center gap-1 rounded-lg py-1.5 px-3 text-lg hover:bg-token-main-surface-secondary radix-state-open:bg-token-main-surface-secondary font-semibold text-token-text-secondary overflow-hidden whitespace-nowrap">
|
| 234 |
+
<div class="text-token-text-secondary">ChatGPT </div>
|
| 235 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-md text-token-text-tertiary">
|
| 236 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.29289 9.29289C5.68342 8.90237 6.31658 8.90237 6.70711 9.29289L12 14.5858L17.2929 9.29289C17.6834 8.90237 18.3166 8.90237 18.7071 9.29289C19.0976 9.68342 19.0976 10.3166 18.7071 10.7071L12.7071 16.7071C12.5196 16.8946 12.2652 17 12 17C11.7348 17 11.4804 16.8946 11.2929 16.7071L5.29289 10.7071C4.90237 10.3166 4.90237 9.68342 5.29289 9.29289Z" fill="currentColor"></path>
|
| 237 |
+
</svg>
|
| 238 |
+
</button>
|
| 239 |
+
</div>
|
| 240 |
+
<div class="flex items-center gap-2 pr-1 leading-[0]">
|
| 241 |
+
<span class="hidden"></span>
|
| 242 |
+
<span class="" data-state="closed">
|
| 243 |
+
<button class="btn relative btn-secondary btn btn-secondary relative text-token-text-primary" aria-label="Temporary">
|
| 244 |
+
<div class="flex w-full items-center justify-center gap-1.5">
|
| 245 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14" aria-label="" class="icon-sm">
|
| 246 |
+
<path fill="currentColor" fill-rule="evenodd" d="M6.319 1.334a.667.667 0 0 1-.512.792 5.43 5.43 0 0 0-2.602 1.362.667.667 0 1 1-.918-.967A6.76 6.76 0 0 1 5.527.822a.667.667 0 0 1 .792.512m1.363 0a.667.667 0 0 1 .791-.512 6.76 6.76 0 0 1 3.24 1.699.667.667 0 1 1-.917.967 5.43 5.43 0 0 0-2.602-1.362.667.667 0 0 1-.512-.792M1.51 4.614c.348.12.533.5.413.848a4.7 4.7 0 0 0 0 3.076.667.667 0 0 1-1.26.435 6.04 6.04 0 0 1 0-3.945.666.666 0 0 1 .847-.413m10.979 0a.667.667 0 0 1 .847.414A6 6 0 0 1 13.667 7a6 6 0 0 1-.33 1.973.667.667 0 1 1-1.26-.435 4.7 4.7 0 0 0 0-3.076.667.667 0 0 1 .413-.847M2.27 10.352a.667.667 0 0 1 .479.812q-.052.2-.111.397.629-.097 1.228-.267a.67.67 0 0 1 .496.054c.445.238.93.417 1.445.528a.667.667 0 1 1-.28 1.303 7 7 0 0 1-1.553-.533c-.73.189-1.479.305-2.266.354a.667.667 0 0 1-.664-.905c.164-.425.305-.844.414-1.264a.667.667 0 0 1 .812-.48m9.468.186a.666.666 0 0 1-.024.942 6.76 6.76 0 0 1-3.24 1.7.667.667 0 0 1-.28-1.304 5.43 5.43 0 0 0 2.601-1.362.667.667 0 0 1 .943.024" clip-rule="evenodd"></path>
|
| 247 |
</svg>
|
| 248 |
+
Temporary
|
| 249 |
+
</div>
|
| 250 |
+
</button>
|
| 251 |
+
</span>
|
| 252 |
+
<div class="flex h-10 w-10 items-center justify-center">
|
| 253 |
+
<div class="h-8 w-8 rounded-full bg-token-main-surface-tertiary"></div>
|
| 254 |
</div>
|
| 255 |
</div>
|
| 256 |
+
</div>
|
| 257 |
+
<div class="flex flex-1 grow basis-auto flex-col overflow-hidden">
|
| 258 |
+
<div class="text-base my-auto mx-auto px-3 md:px-4 w-full md:px-5 lg:px-4 xl:px-5 h-full">
|
| 259 |
+
<div class="mx-auto mt-0 flex h-full w-full flex-col text-base @lg/thread:justify-center @md/thread:max-w-3xl @lg/thread:max-w-[40rem] @xl/thread:max-w-[48rem] relative">
|
| 260 |
+
<div class="hidden text-center @lg/thread:block mb-5 @lg/thread:block">
|
| 261 |
+
<div class="relative inline-flex justify-center text-center text-2xl font-semibold leading-9">
|
| 262 |
+
<div style="view-transition-name:var(--vt-splash-screen-headline)">
|
| 263 |
+
<div class="grid min-h-[74px] grid-cols-1 items-center justify-end">
|
| 264 |
+
<h1 class="flex h-full items-end justify-center text-balance [grid-area:1/1] motion-safe:[transition:0.3s_transform_var(--spring-standard),0.5s_opacity_var(--spring-standard),0.5s_visibility_var(--spring-standard)] text-[28px] font-semibold leading-[34px] tracking-[0.38px] translate-y-0 opacity-100" aria-hidden="false">What can I help with?</h1>
|
| 265 |
+
<div class="flex h-full flex-col items-center justify-end [grid-area:1/1] motion-safe:[transition:0.3s_transform_var(--spring-standard),0.5s_opacity_var(--spring-standard),0.5s_visibility_var(--spring-standard)] invisible translate-y-full opacity-0" aria-hidden="true">
|
| 266 |
+
<h1 class="mb-1 text-[28px] font-semibold leading-[34px] tracking-[0.38px]" data-testid="temporary-chat-label">
|
| 267 |
+
<input class="sr-only" id="temporary-chat-checkbox" type="checkbox" readOnly="" name="temporary-chat-checkbox" checked=""/>Temporary Chat
|
| 268 |
+
</h1>
|
| 269 |
+
<div class="text-center font-normal max-w-xl text-[15px] leading-[18px] tracking-[-0.23px] text-token-text-secondary">This chat won 't appear in history or be used to train our models. For safety purposes, we may keep a copy of this chat for up to 30 days.</div>
|
| 270 |
+
</div>
|
| 271 |
</div>
|
| 272 |
</div>
|
| 273 |
+
</div>
|
| 274 |
+
</div>
|
| 275 |
+
<div class="mt-[var(--screen-optical-compact-offset-amount)] flex-shrink flex-col items-center justify-center overflow-hidden text-token-text-primary [display:var(--display-hidden-until-loaded,flex)] h-full @lg/thread:hidden" style="opacity:0;will-change:opacity">
|
| 276 |
+
<div class="relative inline-flex justify-center text-center text-2xl font-semibold leading-9">
|
| 277 |
+
<div style="view-transition-name:var(--vt-splash-screen-headline)">
|
| 278 |
+
<div class="grid min-h-[74px] grid-cols-1 items-center justify-end">
|
| 279 |
+
<h1 class="flex h-full items-end justify-center text-balance [grid-area:1/1] motion-safe:[transition:0.3s_transform_var(--spring-standard),0.5s_opacity_var(--spring-standard),0.5s_visibility_var(--spring-standard)] text-[28px] font-semibold leading-[34px] tracking-[0.38px] translate-y-0 opacity-100" aria-hidden="false">What can I help with?</h1>
|
| 280 |
+
<div class="flex h-full flex-col items-center justify-end [grid-area:1/1] motion-safe:[transition:0.3s_transform_var(--spring-standard),0.5s_opacity_var(--spring-standard),0.5s_visibility_var(--spring-standard)] invisible translate-y-full opacity-0" aria-hidden="true">
|
| 281 |
+
<h1 class="mb-1 text-[28px] font-semibold leading-[34px] tracking-[0.38px]" data-testid="temporary-chat-label">
|
| 282 |
+
<input class="sr-only" id="temporary-chat-checkbox" type="checkbox" readOnly="" name="temporary-chat-checkbox" checked=""/>Temporary Chat
|
| 283 |
+
</h1>
|
| 284 |
+
<div class="text-center font-normal max-w-xl text-[15px] leading-[18px] tracking-[-0.23px] text-token-text-secondary">This chat won 't appear in history or be used to train our models. For safety purposes, we may keep a copy of this chat for up to 30 days.</div>
|
| 285 |
+
</div>
|
| 286 |
</div>
|
| 287 |
</div>
|
| 288 |
+
</div>
|
| 289 |
+
<div class="h-[116px]" style="opacity:0;will-change:opacity"></div>
|
| 290 |
+
</div>
|
| 291 |
+
<div class="@lg/thread:absolute @lg/thread:bottom-8 @lg/thread:left-0 @lg/thread:w-full">
|
| 292 |
+
<div class="text-base mx-auto px-3 md:px-4 w-full md:px-5 lg:px-4 xl:px-5">
|
| 293 |
+
<div class="mx-auto mt-0 flex h-full w-full flex-col text-base @lg/thread:justify-center @md/thread:max-w-3xl @lg/thread:max-w-[40rem] @xl/thread:max-w-[48rem] relative @lg/thread:pb-0">
|
| 294 |
+
<div class="block z-20"></div>
|
| 295 |
+
</div>
|
| 296 |
+
</div>
|
| 297 |
+
</div>
|
| 298 |
+
<div class="w-full">
|
| 299 |
+
<div class="flex justify-center empty:hidden"></div>
|
| 300 |
+
<div class="relative z-[1] flex max-w-full flex-1 flex-col h-full" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-:R3iv5cfaadkklj5:" data-state="closed">
|
| 301 |
+
<form class="w-full" data-type="unified-composer">
|
| 302 |
+
<div class="flex w-full cursor-text flex-col items-center justify-center rounded-[28px] border border-token-border-xlight contain-inline-size overflow-clip shadow-sm dark:!shadow-none sm:shadow-lg bg-token-main-surface-primary dark:bg-[#303030]">
|
| 303 |
+
<div class="relative flex w-full items-end py-3 pl-3">
|
| 304 |
+
<div class="relative flex w-full flex-auto flex-col">
|
| 305 |
+
<div class="relative ml-1.5 grid grid-cols-[auto_minmax(0,1fr)]">
|
| 306 |
+
<div class="items-top flex justify-center">
|
| 307 |
+
<div style="opacity:1;will-change:opacity"></div>
|
| 308 |
+
</div>
|
| 309 |
+
<div style="margin-bottom:-20px;will-change:transform;transform:translateY(-7px)" class="relative flex-auto bg-transparent pl-2 pt-0.5">
|
| 310 |
<div class="flex flex-col justify-start" style="min-height:0">
|
| 311 |
+
<div class="_prosemirror-parent_11fu7_1 text-token-text-primary max-h-[25dvh] max-h-52 overflow-auto [scrollbar-width:thin] default-browser min-h-12 pr-3">
|
| 312 |
+
<textarea class="block h-10 w-full resize-none border-0 bg-transparent px-0 py-2 text-token-text-primary placeholder:pl-px placeholder:text-token-text-tertiary" autofocus="" placeholder="Ask anything" data-virtualkeyboard="true"></textarea>
|
| 313 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 314 |
+
window.__oai_logHTML ? window.__oai_logHTML() : window.__oai_SSR_HTML = window.__oai_SSR_HTML || Date.now();
|
| 315 |
+
requestAnimationFrame((function() {
|
| 316 |
+
window.__oai_logTTI ? window.__oai_logTTI() : window.__oai_SSR_TTI = window.__oai_SSR_TTI || Date.now()
|
| 317 |
+
}
|
| 318 |
+
))
|
| 319 |
+
</script>
|
| 320 |
+
</div>
|
| 321 |
+
</div>
|
| 322 |
+
</div>
|
| 323 |
+
</div>
|
| 324 |
+
<div class="justify-content-end relative ml-2 flex w-full flex-auto flex-col">
|
| 325 |
+
<div class="flex-auto"></div>
|
| 326 |
+
</div>
|
| 327 |
+
<div style="height:48px"></div>
|
| 328 |
+
</div>
|
| 329 |
+
<div class="bg-primary-surface-primary absolute bottom-[9px] left-[17px] right-0 z-[2] flex items-center">
|
| 330 |
+
<div>
|
| 331 |
+
<div class="flex items-center gap-2 max-xs:gap-1">
|
| 332 |
+
<div style="view-transition-name:var(--vt-composer-attach-file-action)">
|
| 333 |
+
<div class="relative">
|
| 334 |
+
<div class="relative">
|
| 335 |
+
<div class="flex flex-col">
|
| 336 |
+
<input multiple="" type="file" style="display:none" tabindex="-1" class="hidden"/>
|
| 337 |
+
<span class="hidden"></span>
|
| 338 |
+
<button type="button" id="radix-:R1kmcpjiv5cfaadkklj5:" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="text-token-text-primary border border-transparent inline-flex items-center justify-center gap-1 rounded-lg text-sm dark:transparent dark:bg-transparent leading-none outline-none cursor-pointer hover:bg-token-main-surface-secondary dark:hover:bg-token-main-surface-secondary focus-visible:bg-token-main-surface-secondary radix-state-active:text-token-text-secondary radix-disabled:cursor-auto radix-disabled:bg-transparent radix-disabled:text-token-text-tertiary dark:radix-disabled:bg-transparent m-0 h-0 w-0 border-none bg-transparent p-0"></button>
|
| 339 |
+
<span class="hidden"></span>
|
| 340 |
+
<span class="flex" data-state="closed">
|
| 341 |
+
<button disabled="" aria-disabled="true" aria-label="Attach files is unavailable" class="flex items-center justify-center h-9 rounded-full border border-token-border-light text-token-text-secondary w-9 opacity-50 min-h-8 min-w-[34px]">
|
| 342 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="" class="h-[18px] w-[18px]">
|
| 343 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C12.5523 3 13 3.44772 13 4L13 11H20C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13L13 13L13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20L11 13L4 13C3.44772 13 3 12.5523 3 12C3 11.4477 3.44772 11 4 11L11 11L11 4C11 3.44772 11.4477 3 12 3Z" fill="currentColor"></path>
|
| 344 |
+
</svg>
|
| 345 |
+
</button>
|
| 346 |
+
</span>
|
| 347 |
+
<div class="w-fit" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-:R24mcpjiv5cfaadkklj5:" data-state="closed">
|
| 348 |
+
<div></div>
|
| 349 |
+
</div>
|
| 350 |
</div>
|
| 351 |
</div>
|
|
|
|
| 352 |
</div>
|
| 353 |
</div>
|
| 354 |
+
<div style="view-transition-name:var(--vt-composer-search-action)">
|
| 355 |
+
<div>
|
| 356 |
+
<span class="hidden"></span>
|
| 357 |
+
<span class="" data-state="closed">
|
| 358 |
+
<div class="inline-flex h-9 rounded-full border text-[13px] font-medium radix-state-open:bg-black/10 text-token-text-secondary border-token-border-light focus-visible:outline-black can-hover:hover:bg-token-main-surface-secondary dark:focus-visible:outline-white dark:can-hover:hover:bg-gray-700 opacity-30">
|
| 359 |
+
<button class="flex h-full min-w-8 items-center justify-center p-2" aria-pressed="false" aria-label="Search" disabled="">
|
| 360 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-[18px] w-[18px]">
|
| 361 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM11.9851 4.00291C11.9933 4.00046 11.9982 4.00006 11.9996 4C12.001 4.00006 12.0067 4.00046 12.0149 4.00291C12.0256 4.00615 12.047 4.01416 12.079 4.03356C12.2092 4.11248 12.4258 4.32444 12.675 4.77696C12.9161 5.21453 13.1479 5.8046 13.3486 6.53263C13.6852 7.75315 13.9156 9.29169 13.981 11H10.019C10.0844 9.29169 10.3148 7.75315 10.6514 6.53263C10.8521 5.8046 11.0839 5.21453 11.325 4.77696C11.5742 4.32444 11.7908 4.11248 11.921 4.03356C11.953 4.01416 11.9744 4.00615 11.9851 4.00291ZM8.01766 11C8.08396 9.13314 8.33431 7.41167 8.72334 6.00094C8.87366 5.45584 9.04762 4.94639 9.24523 4.48694C6.48462 5.49946 4.43722 7.9901 4.06189 11H8.01766ZM4.06189 13H8.01766C8.09487 15.1737 8.42177 17.1555 8.93 18.6802C9.02641 18.9694 9.13134 19.2483 9.24522 19.5131C6.48461 18.5005 4.43722 16.0099 4.06189 13ZM10.019 13H13.981C13.9045 14.9972 13.6027 16.7574 13.1726 18.0477C12.9206 18.8038 12.6425 19.3436 12.3823 19.6737C12.2545 19.8359 12.1506 19.9225 12.0814 19.9649C12.0485 19.9852 12.0264 19.9935 12.0153 19.9969C12.0049 20.0001 11.9999 20 11.9999 20C11.9999 20 11.9948 20 11.9847 19.9969C11.9736 19.9935 11.9515 19.9852 11.9186 19.9649C11.8494 19.9225 11.7455 19.8359 11.6177 19.6737C11.3575 19.3436 11.0794 18.8038 10.8274 18.0477C10.3973 16.7574 10.0955 14.9972 10.019 13ZM15.9823 13C15.9051 15.1737 15.5782 17.1555 15.07 18.6802C14.9736 18.9694 14.8687 19.2483 14.7548 19.5131C17.5154 18.5005 19.5628 16.0099 19.9381 13H15.9823ZM19.9381 11C19.5628 7.99009 17.5154 5.49946 14.7548 4.48694C14.9524 4.94639 15.1263 5.45584 15.2767 6.00094C15.6657 7.41167 15.916 9.13314 15.9823 11H19.9381Z" fill="currentColor"></path>
|
| 362 |
+
</svg>
|
| 363 |
+
<span style="width:fit-content;opacity:1;will-change:transform,opacity;transform:none">
|
| 364 |
+
<div class="whitespace-nowrap pl-1 pr-1 [display:--force-hide-label]">Search</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 365 |
</span>
|
| 366 |
+
</button>
|
| 367 |
</div>
|
| 368 |
+
</span>
|
| 369 |
</div>
|
| 370 |
+
</div>
|
| 371 |
+
<div style="view-transition-name:var(--vt-composer-research-action)">
|
| 372 |
+
<div>
|
| 373 |
+
<span class="hidden"></span>
|
| 374 |
+
<span class="" data-state="closed">
|
| 375 |
+
<div class="inline-flex h-9 rounded-full border text-[13px] font-medium radix-state-open:bg-black/10 text-token-text-secondary border-token-border-light focus-visible:outline-black can-hover:hover:bg-token-main-surface-secondary dark:focus-visible:outline-white dark:can-hover:hover:bg-gray-700">
|
| 376 |
+
<button class="flex h-full min-w-8 items-center justify-center p-2" aria-pressed="false" aria-label="Deep research">
|
| 377 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-[18px] w-[18px]">
|
| 378 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.47 15.652a1 1 0 0 1 1.378.318l2.5 4a1 1 0 1 1-1.696 1.06l-2.5-4a1 1 0 0 1 .318-1.378Z" fill="currentColor"></path>
|
| 379 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.53 15.652a1 1 0 0 1 .318 1.378l-2.5 4a1 1 0 0 1-1.696-1.06l2.5-4a1 1 0 0 1 1.378-.318ZM17.824 4.346a.5.5 0 0 0-.63-.321l-.951.309a1 1 0 0 0-.642 1.26l1.545 4.755a1 1 0 0 0 1.26.642l.95-.309a.5.5 0 0 0 .322-.63l-1.854-5.706Zm-1.248-2.223a2.5 2.5 0 0 1 3.15 1.605l1.854 5.706a2.5 2.5 0 0 1-1.605 3.15l-.951.31a2.992 2.992 0 0 1-2.443-.265l-2.02.569a1 1 0 1 1-.541-1.926l1.212-.34-1.353-4.163L5 10.46a1 1 0 0 0-.567 1.233l.381 1.171a1 1 0 0 0 1.222.654l3.127-.88a1 1 0 1 1 .541 1.926l-3.127.88a3 3 0 0 1-3.665-1.961l-.38-1.172a3 3 0 0 1 1.7-3.697l9.374-3.897a3 3 0 0 1 2.02-2.285l.95-.31Z" fill="currentColor"></path>
|
| 380 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 12.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM8.5 14a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0Z" fill="currentColor"></path>
|
| 381 |
</svg>
|
| 382 |
+
<div class="whitespace-nowrap pl-1 pr-1 [display:--force-hide-label]">Deep research</div>
|
| 383 |
</button>
|
| 384 |
+
</div>
|
| 385 |
+
</span>
|
| 386 |
+
</div>
|
| 387 |
+
</div>
|
| 388 |
+
<div style="view-transition-name:var(--vt-composer-system-hint-action)">
|
| 389 |
+
<span class="hidden"></span>
|
| 390 |
+
<span class="hidden"></span>
|
| 391 |
+
<span class="" data-state="closed">
|
| 392 |
+
<button type="button" id="radix-:R36cpjiv5cfaadkklj5:" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="_toolsButton_d2h2h_8 flex h-9 min-w-9 items-center justify-center rounded-full border border-token-border-light p-1 text-xs font-semibold text-token-text-secondary focus-visible:outline-black disabled:opacity-30 radix-state-open:bg-black/10 can-hover:hover:bg-token-main-surface-secondary dark:focus-visible:outline-white dark:can-hover:hover:bg-gray-700" aria-label="Use a tool">
|
| 393 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="pointer-events-none h-5 w-5">
|
| 394 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M3 12C3 10.8954 3.89543 10 5 10C6.10457 10 7 10.8954 7 12C7 13.1046 6.10457 14 5 14C3.89543 14 3 13.1046 3 12ZM10 12C10 10.8954 10.8954 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12ZM17 12C17 10.8954 17.8954 10 19 10C20.1046 10 21 10.8954 21 12C21 13.1046 20.1046 14 19 14C17.8954 14 17 13.1046 17 12Z" fill="currentColor"></path>
|
| 395 |
+
</svg>
|
| 396 |
+
</button>
|
| 397 |
+
</span>
|
| 398 |
+
</div>
|
| 399 |
+
</div>
|
| 400 |
+
<div class="absolute bottom-1 right-3 flex items-center gap-2">
|
| 401 |
+
<div class="ml-auto">
|
| 402 |
+
<div class="min-w-7">
|
| 403 |
+
<button class="relative flex h-9 items-center justify-center rounded-full bg-black text-white transition-colors focus-visible:outline-none focus-visible:outline-black disabled:text-gray-50 disabled:opacity-30 can-hover:hover:opacity-70 dark:bg-white dark:text-black w-7 !h-7">
|
| 404 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
| 405 |
+
<path d="M9.5 4C8.67157 4 8 4.67157 8 5.5V18.5C8 19.3284 8.67157 20 9.5 20C10.3284 20 11 19.3284 11 18.5V5.5C11 4.67157 10.3284 4 9.5 4Z" fill="currentColor"></path>
|
| 406 |
+
<path d="M13 8.5C13 7.67157 13.6716 7 14.5 7C15.3284 7 16 7.67157 16 8.5V15.5C16 16.3284 15.3284 17 14.5 17C13.6716 17 13 16.3284 13 15.5V8.5Z" fill="currentColor"></path>
|
| 407 |
+
<path d="M4.5 9C3.67157 9 3 9.67157 3 10.5V13.5C3 14.3284 3.67157 15 4.5 15C5.32843 15 6 14.3284 6 13.5V10.5C6 9.67157 5.32843 9 4.5 9Z" fill="currentColor"></path>
|
| 408 |
+
<path d="M19.5 9C18.6716 9 18 9.67157 18 10.5V13.5C18 14.3284 18.6716 15 19.5 15C20.3284 15 21 14.3284 21 13.5V10.5C21 9.67157 20.3284 9 19.5 9Z" fill="currentColor"></path>
|
| 409 |
+
</svg>
|
| 410 |
+
</button>
|
| 411 |
</div>
|
| 412 |
</div>
|
| 413 |
</div>
|
| 414 |
</div>
|
| 415 |
</div>
|
| 416 |
+
<div class="absolute left-4 top-3 ml-[1px] flex items-center pb-px"></div>
|
| 417 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 418 |
</div>
|
| 419 |
+
<div class="w-full"></div>
|
| 420 |
+
</form>
|
| 421 |
</div>
|
| 422 |
</div>
|
| 423 |
</div>
|
| 424 |
</div>
|
| 425 |
</div>
|
| 426 |
+
<div class="isolate w-full basis-auto has-[[data-has-thread-error]]:pt-2 has-[[data-has-thread-error]]:[box-shadow:var(--sharp-edge-bottom-shadow)] dark:border-white/20 md:border-transparent md:pt-0 md:dark:border-transparent">
|
| 427 |
+
<div class="relative mt-auto flex min-h-8 w-full items-center justify-center p-2 text-center text-xs text-token-text-secondary md:px-[60px]">
|
| 428 |
+
<div>ChatGPT can make mistakes. Check important info.</div>
|
| 429 |
+
</div>
|
| 430 |
</div>
|
| 431 |
</div>
|
| 432 |
</div>
|
|
|
|
| 439 |
<div aria-live="assertive" aria-atomic="true" class="sr-only"></div>
|
| 440 |
<div aria-live="polite" aria-atomic="true" class="sr-only"></div>
|
| 441 |
<audio class="fixed bottom-0 left-0 hidden h-0 w-0" autoPlay="" crossorigin="anonymous"></audio>
|
| 442 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 443 |
window.__reactRouterContext = {
|
| 444 |
"basename": "/",
|
| 445 |
"future": {
|
|
|
|
| 453 |
}
|
| 454 |
}).pipeThrough(new TextEncoderStream());
|
| 455 |
</script>
|
| 456 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55" type="module" async="">
|
| 457 |
+
import "/assets/manifest-532b61a2.js";
|
| 458 |
+
import*as route0 from "/assets/jandtmjen68hvio9.js";
|
| 459 |
+
import*as route1 from "/assets/lprjl238d50elo8f.js";
|
| 460 |
+
import*as route2 from "/assets/ovc3ksv6dtkjao8i.js";
|
| 461 |
|
| 462 |
window.__reactRouterRouteModules = {
|
| 463 |
"root": route0,
|
|
|
|
| 465 |
"routes/_conversation._index": route2
|
| 466 |
};
|
| 467 |
|
| 468 |
+
import("/assets/mwrrfx5gxel0ghh2.js");
|
| 469 |
</script>
|
| 470 |
<!--$?-->
|
| 471 |
<template id="B:0"></template>
|
| 472 |
<!--/$-->
|
| 473 |
<div hidden id="S:0">
|
| 474 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 475 |
window.__reactRouterContext.streamController.enqueue("{{ react_chatgpt_context_1|safe }}\n");
|
| 476 |
</script>
|
| 477 |
<!--$?-->
|
| 478 |
<template id="B:1"></template>
|
| 479 |
<!--/$-->
|
| 480 |
</div>
|
| 481 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 482 |
$RC = function(b, c, e) {
|
| 483 |
c = document.getElementById(c);
|
| 484 |
c.parentNode.removeChild(c);
|
|
|
|
| 518 |
$RC("B:0", "S:0")
|
| 519 |
</script>
|
| 520 |
<div hidden id="S:1">
|
| 521 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 522 |
+
window.__reactRouterContext.streamController.enqueue("[]\n");
|
| 523 |
</script>
|
| 524 |
<!--$?-->
|
| 525 |
<template id="B:2"></template>
|
| 526 |
<!--/$-->
|
| 527 |
</div>
|
| 528 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 529 |
$RC("B:1", "S:1")
|
| 530 |
</script>
|
| 531 |
<div hidden id="S:2">
|
| 532 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 533 |
+
window.__reactRouterContext.streamController.enqueue("[]\n");
|
| 534 |
</script>
|
| 535 |
+
<!--$?-->
|
| 536 |
+
<template id="B:3"></template>
|
| 537 |
+
<!--/$-->
|
| 538 |
</div>
|
| 539 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 540 |
$RC("B:2", "S:2")
|
| 541 |
</script>
|
| 542 |
+
<div hidden id="S:3">
|
| 543 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 544 |
+
window.__reactRouterContext.streamController.close();
|
| 545 |
+
</script>
|
| 546 |
+
</div>
|
| 547 |
+
<script nonce="20f285f6-3f39-465d-8802-567f078c6c55">
|
| 548 |
+
$RC("B:3", "S:3")
|
| 549 |
+
</script>
|
| 550 |
</body>
|
| 551 |
</html>
|
templates/chatgpt_context_1.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
templates/chatgpt_context_2.json
CHANGED
|
@@ -1,48 +1,46 @@
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
-
"
|
| 4 |
-
"
|
| 5 |
-
"
|
| 6 |
},
|
| 7 |
"__type",
|
| 8 |
"AccountState",
|
| 9 |
"accountItems",
|
| 10 |
[
|
| 11 |
-
|
| 12 |
],
|
| 13 |
[
|
| 14 |
"SingleFetchClassInstance",
|
| 15 |
-
|
| 16 |
],
|
| 17 |
{
|
| 18 |
-
"
|
| 19 |
},
|
|
|
|
| 20 |
{
|
| 21 |
-
"
|
| 22 |
-
"
|
| 23 |
-
"
|
| 24 |
-
"
|
| 25 |
-
"
|
| 26 |
-
"
|
| 27 |
-
"
|
| 28 |
-
"
|
| 29 |
-
"
|
| 30 |
-
"
|
| 31 |
-
"
|
| 32 |
-
"
|
| 33 |
-
"
|
| 34 |
-
"
|
| 35 |
-
"
|
| 36 |
},
|
| 37 |
-
"e8d5afdb-3e65-49ee-8dd2-3877339119d7",
|
| 38 |
"residencyRegion",
|
| 39 |
"no_constraint",
|
| 40 |
"accountUserId",
|
| 41 |
"user-chatgpt__chatgpt",
|
| 42 |
"profilePictureId",
|
| 43 |
"profilePictureUrl",
|
| 44 |
-
"structure",
|
| 45 |
-
"personal",
|
| 46 |
"role",
|
| 47 |
"account-owner",
|
| 48 |
"organizationId",
|
|
@@ -51,93 +49,97 @@
|
|
| 51 |
"deactivated",
|
| 52 |
"subscriptionStatus",
|
| 53 |
{
|
| 54 |
-
"
|
| 55 |
-
"
|
| 56 |
-
"
|
| 57 |
-
"
|
| 58 |
-
"
|
| 59 |
-
"
|
| 60 |
-
"
|
| 61 |
-
"
|
| 62 |
-
"
|
| 63 |
-
"
|
| 64 |
-
"
|
| 65 |
-
"
|
| 66 |
-
"
|
| 67 |
-
"
|
|
|
|
| 68 |
},
|
| 69 |
"billingPeriod",
|
|
|
|
| 70 |
"hasPaidSubscription",
|
| 71 |
"isActiveSubscriptionGratis",
|
| 72 |
"billingCurrency",
|
| 73 |
"USD",
|
| 74 |
"subscriptionPlan",
|
| 75 |
"chatgptproplan",
|
| 76 |
-
"planType",
|
| 77 |
-
"pro",
|
| 78 |
"subscriptionExpiresAt",
|
| 79 |
"2524579200",
|
| 80 |
"scheduledPlanChange",
|
| 81 |
"wasPaidCustomer",
|
| 82 |
"hasCustomerObject",
|
| 83 |
"processorEntity",
|
|
|
|
| 84 |
"lastActiveSubscription",
|
| 85 |
{
|
| 86 |
-
"
|
| 87 |
-
"
|
| 88 |
-
"
|
| 89 |
},
|
| 90 |
"subscription_id",
|
| 91 |
-
"
|
| 92 |
"purchase_origin_platform",
|
| 93 |
-
"
|
| 94 |
"will_renew",
|
| 95 |
"isResellerHosted",
|
| 96 |
"discount",
|
|
|
|
| 97 |
"features",
|
| 98 |
[
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
|
|
|
|
|
|
| 141 |
],
|
| 142 |
"beta_features",
|
| 143 |
"bizmo_settings",
|
|
@@ -159,7 +161,9 @@
|
|
| 159 |
"gizmo_canvas_toggle",
|
| 160 |
"gizmo_reviews",
|
| 161 |
"gizmo_support_emails",
|
|
|
|
| 162 |
"graphite",
|
|
|
|
| 163 |
"jawbone_model_access",
|
| 164 |
"model_ab_use_v2",
|
| 165 |
"model_switcher",
|
|
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
+
"_1871": 1872,
|
| 4 |
+
"_1873": 1874,
|
| 5 |
+
"_1964": 43
|
| 6 |
},
|
| 7 |
"__type",
|
| 8 |
"AccountState",
|
| 9 |
"accountItems",
|
| 10 |
[
|
| 11 |
+
1875
|
| 12 |
],
|
| 13 |
[
|
| 14 |
"SingleFetchClassInstance",
|
| 15 |
+
1876
|
| 16 |
],
|
| 17 |
{
|
| 18 |
+
"_1877": 1878
|
| 19 |
},
|
| 20 |
+
"data",
|
| 21 |
{
|
| 22 |
+
"_21": 43,
|
| 23 |
+
"_1879": 1880,
|
| 24 |
+
"_1881": 1882,
|
| 25 |
+
"_23": -5,
|
| 26 |
+
"_1883": -5,
|
| 27 |
+
"_1884": -5,
|
| 28 |
+
"_46": 47,
|
| 29 |
+
"_1885": 1886,
|
| 30 |
+
"_1887": -5,
|
| 31 |
+
"_1888": 1889,
|
| 32 |
+
"_1890": 34,
|
| 33 |
+
"_1891": 1892,
|
| 34 |
+
"_1918": 1919,
|
| 35 |
+
"_1962": 71,
|
| 36 |
+
"_1963": -5
|
| 37 |
},
|
|
|
|
| 38 |
"residencyRegion",
|
| 39 |
"no_constraint",
|
| 40 |
"accountUserId",
|
| 41 |
"user-chatgpt__chatgpt",
|
| 42 |
"profilePictureId",
|
| 43 |
"profilePictureUrl",
|
|
|
|
|
|
|
| 44 |
"role",
|
| 45 |
"account-owner",
|
| 46 |
"organizationId",
|
|
|
|
| 49 |
"deactivated",
|
| 50 |
"subscriptionStatus",
|
| 51 |
{
|
| 52 |
+
"_1893": 1894,
|
| 53 |
+
"_1895": 71,
|
| 54 |
+
"_1896": 34,
|
| 55 |
+
"_1897": 1898,
|
| 56 |
+
"_1899": 1900,
|
| 57 |
+
"_44": 45,
|
| 58 |
+
"_1901": 1902,
|
| 59 |
+
"_1903": -7,
|
| 60 |
+
"_1904": 71,
|
| 61 |
+
"_1905": 71,
|
| 62 |
+
"_1906": 1907,
|
| 63 |
+
"_1908": 1909,
|
| 64 |
+
"_1915": 34,
|
| 65 |
+
"_1916": -5,
|
| 66 |
+
"_1917": 34
|
| 67 |
},
|
| 68 |
"billingPeriod",
|
| 69 |
+
"monthly",
|
| 70 |
"hasPaidSubscription",
|
| 71 |
"isActiveSubscriptionGratis",
|
| 72 |
"billingCurrency",
|
| 73 |
"USD",
|
| 74 |
"subscriptionPlan",
|
| 75 |
"chatgptproplan",
|
|
|
|
|
|
|
| 76 |
"subscriptionExpiresAt",
|
| 77 |
"2524579200",
|
| 78 |
"scheduledPlanChange",
|
| 79 |
"wasPaidCustomer",
|
| 80 |
"hasCustomerObject",
|
| 81 |
"processorEntity",
|
| 82 |
+
"openai_llc",
|
| 83 |
"lastActiveSubscription",
|
| 84 |
{
|
| 85 |
+
"_1910": 1911,
|
| 86 |
+
"_1912": 1913,
|
| 87 |
+
"_1914": 71
|
| 88 |
},
|
| 89 |
"subscription_id",
|
| 90 |
+
"c3f25801-20a7-436e-a143-b42924a6e5ea",
|
| 91 |
"purchase_origin_platform",
|
| 92 |
+
"chatgpt_web",
|
| 93 |
"will_renew",
|
| 94 |
"isResellerHosted",
|
| 95 |
"discount",
|
| 96 |
+
"isEligibleForCancellationPromotion",
|
| 97 |
"features",
|
| 98 |
[
|
| 99 |
+
1920,
|
| 100 |
+
1921,
|
| 101 |
+
1922,
|
| 102 |
+
1923,
|
| 103 |
+
1462,
|
| 104 |
+
1924,
|
| 105 |
+
1925,
|
| 106 |
+
1926,
|
| 107 |
+
1927,
|
| 108 |
+
1928,
|
| 109 |
+
1929,
|
| 110 |
+
1930,
|
| 111 |
+
1931,
|
| 112 |
+
1932,
|
| 113 |
+
1933,
|
| 114 |
+
1934,
|
| 115 |
+
1935,
|
| 116 |
+
1936,
|
| 117 |
+
1937,
|
| 118 |
+
1938,
|
| 119 |
+
1939,
|
| 120 |
+
1940,
|
| 121 |
+
1941,
|
| 122 |
+
1942,
|
| 123 |
+
1943,
|
| 124 |
+
33,
|
| 125 |
+
1944,
|
| 126 |
+
1945,
|
| 127 |
+
1946,
|
| 128 |
+
1947,
|
| 129 |
+
1948,
|
| 130 |
+
1949,
|
| 131 |
+
1950,
|
| 132 |
+
1951,
|
| 133 |
+
1952,
|
| 134 |
+
1953,
|
| 135 |
+
1954,
|
| 136 |
+
1955,
|
| 137 |
+
1956,
|
| 138 |
+
1957,
|
| 139 |
+
1958,
|
| 140 |
+
1959,
|
| 141 |
+
1960,
|
| 142 |
+
1961
|
| 143 |
],
|
| 144 |
"beta_features",
|
| 145 |
"bizmo_settings",
|
|
|
|
| 161 |
"gizmo_canvas_toggle",
|
| 162 |
"gizmo_reviews",
|
| 163 |
"gizmo_support_emails",
|
| 164 |
+
"gpt_4_5",
|
| 165 |
"graphite",
|
| 166 |
+
"image_gen_tool_enabled",
|
| 167 |
"jawbone_model_access",
|
| 168 |
"model_ab_use_v2",
|
| 169 |
"model_switcher",
|
templates/gpts_context.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
version.txt
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
1.8.
|
|
|
|
| 1 |
+
1.8.8-beta2
|