From 8bb837d32e3ebcea1306e0d02dd61133f3f10624 Mon Sep 17 00:00:00 2001 From: moeakwak Date: Thu, 8 Feb 2024 17:59:50 +0800 Subject: [PATCH] feat: support arkose in chat --- backend/api/routers/arkose.py | 5 +- backend/api/routers/chat.py | 1 + backend/api/schemas/conversation_schemas.py | 1 + backend/api/sources/openai_web.py | 19 ++- frontend/src/api/arkose.ts | 4 +- frontend/src/api/url.ts | 2 +- frontend/src/locales/zh-CN.json | 11 +- frontend/src/types/json/openapi.json | 2 +- frontend/src/types/json/schemas.json | 11 ++ frontend/src/types/openapi.ts | 18 +-- frontend/src/utils/arkose.ts | 135 +++++++++++------- .../src/views/admin/pages/config_manager.vue | 75 ++++------ frontend/src/views/conversation/index.vue | 60 +++++--- 13 files changed, 205 insertions(+), 139 deletions(-) diff --git a/backend/api/routers/arkose.py b/backend/api/routers/arkose.py index a34306b4..73d45569 100644 --- a/backend/api/routers/arkose.py +++ b/backend/api/routers/arkose.py @@ -31,8 +31,9 @@ async def forward_arkose_request(path: str, _user: User = Depends(current_active return ArkoseForwardException(code=500, message=str(e)) -@router.get("/arkose/api_js_path", tags=["arkose"]) -async def get_arkose_api_js_path(_user: User = Depends(current_active_user)): +@router.get("/arkose/info", tags=["arkose"]) +async def get_arkose_info(_user: User = Depends(current_active_user)): return { + "enabled": config.openai_web.enable_arkose_endpoint, "url": f"{config.openai_web.arkose_endpoint_base}35536E1E-65B4-4D96-9D97-6ADB7EFF8147/api.js" } diff --git a/backend/api/routers/chat.py b/backend/api/routers/chat.py index 28f0b466..5cfbba97 100644 --- a/backend/api/routers/chat.py +++ b/backend/api/routers/chat.py @@ -361,6 +361,7 @@ async def reply(response: AskResponse): plugin_ids=ask_request.openai_web_plugin_ids if ask_request.new_conversation else None, attachments=ask_request.openai_web_attachments, multimodal_image_parts=ask_request.openai_web_multimodal_image_parts, + arkose_token=ask_request.arkose_token, ): has_got_reply = True diff --git a/backend/api/schemas/conversation_schemas.py b/backend/api/schemas/conversation_schemas.py index d392c645..bc0e98f0 100644 --- a/backend/api/schemas/conversation_schemas.py +++ b/backend/api/schemas/conversation_schemas.py @@ -41,6 +41,7 @@ class AskRequest(BaseModel): openai_web_plugin_ids: Optional[list[str]] = None openai_web_attachments: Optional[list[OpenaiWebChatMessageMetadataAttachment]] = None openai_web_multimodal_image_parts: Optional[list[OpenaiWebChatMessageMultimodalTextContentImagePart]] = None + arkose_token: Optional[str] = None @model_validator(mode='before') @classmethod diff --git a/backend/api/sources/openai_web.py b/backend/api/sources/openai_web.py index d221f168..db9fe239 100644 --- a/backend/api/sources/openai_web.py +++ b/backend/api/sources/openai_web.py @@ -320,6 +320,7 @@ async def complete(self, model: OpenaiWebChatModels, text_content: str, use_team plugin_ids: list[str] = None, attachments: list[OpenaiWebChatMessageMetadataAttachment] = None, multimodal_image_parts: list[OpenaiWebChatMessageMultimodalTextContentImagePart] = None, + arkose_token: str = None, **_kwargs): assert config.openai_web.enabled, "OpenAI Web is not enabled" @@ -367,23 +368,27 @@ async def complete(self, model: OpenaiWebChatModels, text_content: str, use_team completion_request = OpenaiWebCompleteRequest( action=action, - arkose_token=None, + arkose_token=arkose_token, conversation_mode=OpenaiWebCompleteRequestConversationMode(kind="primary_assistant"), conversation_id=str(conversation_id) if conversation_id else None, messages=messages, parent_message_id=str(parent_message_id) if parent_message_id else None, model=model.code(), plugin_ids=plugin_ids - ).dict(exclude_none=True) - completion_request["arkose_token"] = None + ) + completion_request_dict = completion_request.dict(exclude_none=True) + if "arkose_token" not in completion_request_dict: + completion_request_dict["arkose_token"] = None data_json = json.dumps(jsonable_encoder(completion_request)) + headers = req_headers(use_team) | { + "referer": "https://chat.openai.com/" + (f"c/{conversation_id}" if conversation_id else "")} + if arkose_token is not None: + headers["Openai-Sentinel-Arkose-Token"] = arkose_token + async with self.session.stream(method="POST", url=f"{config.openai_web.chatgpt_base_url}conversation", data=data_json, timeout=timeout, - headers=req_headers(use_team) | { - "referer": "https://chat.openai.com/" + ( - f"c/{conversation_id}" if conversation_id else "") - }) as response: + headers=headers) as response: await _check_response(response) async for line in response.aiter_lines(): diff --git a/frontend/src/api/arkose.ts b/frontend/src/api/arkose.ts index ad667b9d..0e9186e5 100644 --- a/frontend/src/api/arkose.ts +++ b/frontend/src/api/arkose.ts @@ -2,6 +2,6 @@ import axios from 'axios'; import ApiUrl from './url'; -export function getArkoseApiJsPath() { - return axios.get<{ url: string }>(ApiUrl.ArkoseApiJsPath); +export function getArkoseInfo() { + return axios.get<{ enabled: boolean, url: string }>(ApiUrl.ArkoseInfo); } diff --git a/frontend/src/api/url.ts b/frontend/src/api/url.ts index ca8e17fc..161bbea6 100644 --- a/frontend/src/api/url.ts +++ b/frontend/src/api/url.ts @@ -33,7 +33,7 @@ enum ApiUrl { FilesOpenaiWebUploadComplete = '/files/openai-web/upload-complete', FilesLocalUploadToOpenaiWeb = '/files/local/upload-to-openai-web', - ArkoseApiJsPath = '/arkose/api_js_path', + ArkoseInfo = '/arkose/info', } export default ApiUrl; diff --git a/frontend/src/locales/zh-CN.json b/frontend/src/locales/zh-CN.json index 18041696..20c98cbe 100644 --- a/frontend/src/locales/zh-CN.json +++ b/frontend/src/locales/zh-CN.json @@ -239,7 +239,9 @@ "unknown": "未知 OpenAI 错误" }, "unknown": "未知错误", - "invalidRequest": "非法请求" + "invalidRequest": "非法请求", + "arkoseError": "Arkose 验证失败", + "arkoseTokenError": "Arkose 验证失败,请联系管理员处理。" }, "tips": { "loginExpired": "登录已过期。是否跳转到登录页面?", @@ -359,7 +361,8 @@ "enabled_models": "启用的模型", "model_code_mapping": "模型代码映射", "file_upload_strategy": "文件上传策略", - "max_completion_concurrency": "最大并行对话数量" + "max_completion_concurrency": "最大并行对话数量", + "enable_arkose_endpoint": "启用前端 Arkose 验证" }, "conversation_id": "对话ID", "queueing_time": "排队时长", @@ -406,7 +409,9 @@ "config": { "enabled_models": "设置全局启用哪些模型,在此处不启用的模型所有账号都无法使用", "file_upload_strategy": "配置使用 code interpreter 模型时文件如何上传,详见文档", - "max_completion_concurrency": "决定同时能有多少用户进行对话。如果设置为一个很大的值,相当于禁用排队对话功能。" + "max_completion_concurrency": "决定同时能有多少用户进行对话。如果设置为一个很大的值,相当于禁用排队对话功能。", + "enable_arkose_endpoint": "实验性功能,启用前请仔细阅读文档说明。启用后务必填写下方的 arkose_endpoint_base。如果启用,将会在前端取得 Arkose token,用户可能需要进行手动验证。", + "arkose_endpoint_base": "Arkose 代理的地址前缀,必须以 /v2/ 结尾,如:http://ninja/v2/" } }, "dialog": { diff --git a/frontend/src/types/json/openapi.json b/frontend/src/types/json/openapi.json index 61beee3e..10b26e05 100644 --- a/frontend/src/types/json/openapi.json +++ b/frontend/src/types/json/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/auth/login":{"post":{"summary":"Auth:Jwt.Login","operationId":"auth_jwt_login_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_auth_jwt_login_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"summary":"Auth:Jwt.Logout","operationId":"auth_jwt_logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","description":"注册时不能指定setting,使用默认setting","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user":{"get":{"tags":["user"],"summary":"Get All Users","operationId":"get_all_users_user_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user/me":{"get":{"tags":["user"],"summary":"Get Me","operationId":"get_me_user_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"patch":{"tags":["user"],"summary":"Update Me","operationId":"update_me_user_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user/{user_id}":{"get":{"tags":["user"],"summary":"Admin Get User","operationId":"admin_get_user_user__user_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["user"],"summary":"Admin Update User","operationId":"admin_update_user_user__user_id__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateAdmin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user"],"summary":"Admin Delete User","operationId":"admin_delete_user_user__user_id__delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/{user_id}/setting":{"patch":{"tags":["user"],"summary":"Admin Update User Setting","operationId":"admin_update_user_setting_user__user_id__setting_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingSchema-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv":{"get":{"tags":["conversation"],"summary":"Get My Conversations","description":"返回自己的有效会话","operationId":"get_my_conversations_conv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"delete":{"tags":["conversation"],"summary":"Delete All Conversation","operationId":"delete_all_conversation_conv_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/conv/all":{"get":{"tags":["conversation"],"summary":"Get All Conversations","operationId":"get_all_conversations_conv_all_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"valid_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Valid Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}":{"get":{"tags":["conversation"],"summary":"Get Conversation History","operationId":"get_conversation_history_conv__conversation_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["conversation"],"summary":"Delete Conversation","description":"软删除:标记为 invalid 并且从 chatgpt 账号中删除会话,但不会删除 mongodb 中的历史记录","operationId":"delete_conversation_conv__conversation_id__delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["conversation"],"summary":"Update Conversation Title","operationId":"update_conversation_title_conv__conversation_id__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"title","in":"query","required":true,"schema":{"type":"string","title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/cache":{"get":{"tags":["conversation"],"summary":"Get Conversation History From Cache","operationId":"get_conversation_history_from_cache_conv__conversation_id__cache_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/vanish":{"delete":{"tags":["conversation"],"summary":"Vanish Conversation","description":"硬删除:删除数据库和账号中的对话和历史记录","operationId":"vanish_conversation_conv__conversation_id__vanish_delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/assign/{username}":{"patch":{"tags":["conversation"],"summary":"Assign Conversation","operationId":"assign_conversation_conv__conversation_id__assign__username__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/gen_title":{"patch":{"tags":["conversation"],"summary":"Generate Conversation Title","operationId":"generate_conversation_title_conv__conversation_id__gen_title_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/interpreter":{"get":{"tags":["conversation"],"summary":"Get Conversation Interpreter Info","operationId":"get_conversation_interpreter_info_conv__conversation_id__interpreter_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/interpreter/download-url":{"get":{"tags":["conversation"],"summary":"Get Conversation Interpreter Download Url","operationId":"get_conversation_interpreter_download_url_conv__conversation_id__interpreter_download_url_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"sandbox_path","in":"query","required":true,"schema":{"type":"string","title":"Sandbox Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins":{"get":{"tags":["chat"],"summary":"Get Openai Web Chat Plugins","operationId":"get_openai_web_chat_plugins_chat_openai_plugins_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Limit"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins/installed":{"get":{"tags":["chat"],"summary":"Get Installed Openai Web Chat Plugins","operationId":"get_installed_openai_web_chat_plugins_chat_openai_plugins_installed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/chat/openai-plugins/installed/{plugin_id}":{"get":{"tags":["chat"],"summary":"Get Installed Openai Web Plugin","operationId":"get_installed_openai_web_plugin_chat_openai_plugins_installed__plugin_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"plugin_id","in":"path","required":true,"schema":{"type":"string","title":"Plugin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins/{plugin_id}/user-settings":{"patch":{"tags":["chat"],"summary":"Update Chat Plugin User Settings","operationId":"update_chat_plugin_user_settings_chat_openai_plugins__plugin_id__user_settings_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"plugin_id","in":"path","required":true,"schema":{"type":"string","title":"Plugin Id"}},{"name":"use_team","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"title":"Use Team"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenaiChatPluginUserSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/__schema_types":{"get":{"tags":["chat"],"summary":" Predict Schema Types","description":"只用来让 openapi 自动生成 schema,并不实际调用","operationId":"_predict_schema_types_chat___schema_types_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/info":{"get":{"tags":["system"],"summary":"Get System Info","operationId":"get_system_info_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/stats/request":{"get":{"tags":["system"],"summary":"Get Request Statistics","operationId":"get_request_statistics_system_stats_request_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"granularity","in":"query","required":false,"schema":{"type":"integer","default":1800,"title":"Granularity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/stats/ask":{"get":{"tags":["system"],"summary":"Get Ask Statistics","operationId":"get_ask_statistics_system_stats_ask_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"granularity","in":"query","required":false,"schema":{"type":"integer","default":1800,"title":"Granularity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/config":{"get":{"tags":["system"],"summary":"Get Config","operationId":"get_config_system_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"put":{"tags":["system"],"summary":"Update Config","operationId":"update_config_system_config_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigModel-Input"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/credentials":{"get":{"tags":["system"],"summary":"Get Credentials","operationId":"get_credentials_system_credentials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"put":{"tags":["system"],"summary":"Update Credentials","operationId":"update_credentials_system_credentials_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsModel"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/action/sync-openai-web-conv":{"post":{"tags":["system"],"summary":"Sync Openai Web Conversations","operationId":"sync_openai_web_conversations_system_action_sync_openai_web_conv_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/check-openai-web-account":{"get":{"tags":["system"],"summary":"Check Openai Web Account","operationId":"check_openai_web_account_system_check_openai_web_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/logs/server":{"post":{"tags":["logs"],"summary":"Get Server Logs","operationId":"get_server_logs_logs_server_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/LogFilterOptions"}],"title":"Options","default":{"max_lines":100}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/logs/completions":{"get":{"tags":["logs"],"summary":"Get Completion Logs","operationId":"get_completion_logs_logs_completions_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"End Time"}},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status/common":{"get":{"tags":["status"],"summary":"Get Server Status","operationId":"get_server_status_status_common_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/{file_id}/download-url":{"get":{"tags":["conversation"],"summary":"Get File Download Url","description":"file_id: OpenAI 分配的 id,以 file- 开头","operationId":"get_file_download_url_files__file_id__download_url_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/local/upload":{"post":{"tags":["files"],"summary":"Upload File To Local","description":"上传文件到服务器。文件将被保存在服务器上,返回文件信息。\n仅当需要在服务器留存上传的文件时才使用.","operationId":"upload_file_to_local_files_local_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_to_local_files_local_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/local/download/{file_id}":{"get":{"tags":["files"],"summary":"Download File From Local","operationId":"download_file_from_local_files_local_download__file_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/openai-web/upload-start":{"post":{"tags":["files"],"summary":"Start Upload To Openai","description":"要上传文件到 OpenAI Web,前端需要先调用此接口.\n1. 若最终上传方法是前端直接上传 (Browser -> Azure Blob),则获取上传地址并记录文件信息,响应中 upload_file_info 不为空\n2. 否则的话就是服务端中转上传(Browser -> Local -> Azure Blob,此时响应中 upload_file_info 为空,前端应当:\n a. 先调用 upload_file_to_local 接口上传文件到服务器,拿到文件的 uuid\n b. 再调用 upload_local_file_to_openai_web 接口,通知服务器上传文件到 OpenAI Web","operationId":"start_upload_to_openai_files_openai_web_upload_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartUploadRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/openai-web/__browser_upload_schema__":{"options":{"tags":["files"],"summary":" Browser Upload Schema ","operationId":"__browser_upload_schema___files_openai_web___browser_upload_schema___options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/files/openai-web/upload-complete/{file_id}":{"post":{"tags":["files"],"summary":"Complete Upload To Openai","operationId":"complete_upload_to_openai_files_openai_web_upload_complete__file_id__post","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/local/upload-to-openai-web/{file_id}":{"post":{"tags":["files"],"summary":"Upload Local File To Openai Web","description":"将服务器上已有的文件上传到 OpenAI Web(Azure blob)","operationId":"upload_local_file_to_openai_web_files_local_upload_to_openai_web__file_id__post","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/arkose/{path}":{"get":{"summary":"Forward Arkose Request","description":"TODO 经过转发,arkose 会报错 \"API_REQUEST_ERROR\"","operationId":"forward_arkose_request_arkose__path__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/arkose/api_js_path":{"get":{"summary":"Get Arkose Api Js Path","operationId":"get_arkose_api_js_path_arkose_api_js_path_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}}},"components":{"schemas":{"AskLogAggregation":{"properties":{"_id":{"anyOf":[{"$ref":"#/components/schemas/AskLogAggregationID"},{"type":"null"}]},"count":{"type":"integer","title":"Count"},"user_ids":{"items":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"array","title":"User Ids"},"total_queueing_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Queueing Time"},"total_ask_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Ask Time"}},"type":"object","required":["count"],"title":"AskLogAggregation"},"AskLogAggregationID":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time"},"meta":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebAskLogMeta"},{"$ref":"#/components/schemas/OpenaiApiAskLogMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiAskLogMeta","openai_web":"#/components/schemas/OpenaiWebAskLogMeta"}}},{"type":"null"}],"title":"Meta"}},"type":"object","required":["start_time"],"title":"AskLogAggregationID"},"AskLogDocument":{"properties":{"_id":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":" Id","description":"MongoDB document ObjectID"},"time":{"type":"string","format":"date-time","title":"Time"},"meta":{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebAskLogMeta"},{"$ref":"#/components/schemas/OpenaiApiAskLogMeta"}],"title":"Meta","discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiAskLogMeta","openai_web":"#/components/schemas/OpenaiWebAskLogMeta"}}},"user_id":{"type":"integer","title":"User Id"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"queueing_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Queueing Time"},"ask_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ask Time"}},"type":"object","required":["meta","user_id","queueing_time","ask_time"],"title":"AskLogDocument"},"AskRequest":{"properties":{"source":{"$ref":"#/components/schemas/ChatSourceTypes"},"model":{"type":"string","title":"Model"},"new_conversation":{"type":"boolean","title":"New Conversation"},"new_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Title"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"api_context_message_count":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":0.0},{"type":"null"}],"title":"Api Context Message Count"},"text_content":{"type":"string","title":"Text Content"},"openai_web_plugin_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Openai Web Plugin Ids"},"openai_web_attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAttachment"},"type":"array"},{"type":"null"}],"title":"Openai Web Attachments"},"openai_web_multimodal_image_parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContentImagePart-Input"},"type":"array"},{"type":"null"}],"title":"Openai Web Multimodal Image Parts"}},"type":"object","required":["source","model","new_conversation","text_content"],"title":"AskRequest"},"AskResponse":{"properties":{"type":{"$ref":"#/components/schemas/AskResponseType"},"tip":{"type":"string","title":"Tip"},"conversation_id":{"type":"string","format":"uuid","title":"Conversation Id"},"message":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessage"},{"$ref":"#/components/schemas/OpenaiApiChatMessage"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessage","openai_web":"#/components/schemas/OpenaiWebChatMessage"}}},{"type":"null"}],"title":"Message"},"error_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Detail"}},"type":"object","required":["type"],"title":"AskResponse"},"AskResponseType":{"type":"string","enum":["waiting","queueing","message","error"],"title":"AskResponseType"},"AuthSetting":{"properties":{"jwt_secret":{"type":"string","title":"Jwt Secret","default":"MODIFY_THIS_TO_RANDOM_SECURE_STRING"},"jwt_lifetime_seconds":{"type":"integer","minimum":1.0,"title":"Jwt Lifetime Seconds","default":259200},"cookie_max_age":{"type":"integer","minimum":1.0,"title":"Cookie Max Age","default":259200},"user_secret":{"type":"string","title":"User Secret","default":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"type":"object","title":"AuthSetting"},"BaseChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"type":"string","enum":["openai_web","openai_api"],"title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageCodeContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageStderrContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent"}],"discriminator":{"propertyName":"content_type","mapping":{"code":"#/components/schemas/OpenaiWebChatMessageCodeContent","execution_output":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent","multimodal_text":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent","stderr":"#/components/schemas/OpenaiWebChatMessageStderrContent","system_error":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent","tether_browsing_display":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent","tether_quote":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent","text":"#/components/schemas/OpenaiWebChatMessageTextContent"}}},{"$ref":"#/components/schemas/OpenaiApiChatMessageTextContent"},{"type":"null"}],"title":"Content"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"BaseChatMessage"},"BaseConversationHistory":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"type":"string","enum":["openai_web","openai_api"],"title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/BaseChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"$ref":"#/components/schemas/OpenaiApiConversationHistoryMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiConversationHistoryMeta","openai_web":"#/components/schemas/OpenaiWebConversationHistoryMeta"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"BaseConversationHistory"},"BaseConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"$ref":"#/components/schemas/ChatSourceTypes"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"BaseConversationSchema"},"Body_auth_jwt_login_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"password"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_auth_jwt_login_auth_login_post"},"Body_upload_file_to_local_files_local_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_to_local_files_local_upload_post"},"ChatSourceTypes":{"type":"string","enum":["openai_web","openai_api"],"title":"ChatSourceTypes"},"CommonSetting":{"properties":{"print_sql":{"type":"boolean","title":"Print Sql","default":false},"print_traceback":{"type":"boolean","title":"Print Traceback","default":true},"create_initial_admin_user":{"type":"boolean","title":"Create Initial Admin User","default":true},"initial_admin_user_username":{"type":"string","title":"Initial Admin User Username","default":"admin"},"initial_admin_user_password":{"type":"string","title":"Initial Admin User Password","default":"password"}},"type":"object","title":"CommonSetting"},"CommonStatusSchema":{"properties":{"active_user_in_5m":{"type":"integer","title":"Active User In 5M"},"active_user_in_1h":{"type":"integer","title":"Active User In 1H"},"active_user_in_1d":{"type":"integer","title":"Active User In 1D"},"is_chatbot_busy":{"type":"boolean","title":"Is Chatbot Busy"},"chatbot_waiting_count":{"type":"integer","title":"Chatbot Waiting Count"},"gpt4_count_in_3_hours":{"type":"integer","title":"Gpt4 Count In 3 Hours"}},"type":"object","title":"CommonStatusSchema"},"ConfigModel-Input":{"properties":{"openai_web":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebChatGPTSetting"}],"default":{"enabled":true,"is_plus_account":true,"enable_team_subscription":false,"enable_arkose_endpoint":false,"common_timeout":20,"ask_timeout":600,"sync_conversations_on_startup":false,"sync_conversations_schedule":false,"sync_conversations_schedule_interval_hours":12,"enabled_models":["gpt_3_5","gpt_4","gpt_4_plugins"],"model_code_mapping":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_browsing":"gpt-4-browsing","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle","gpt_4_mobile":"gpt-4-mobile","gpt_4_plugins":"gpt-4-plugins"},"file_upload_strategy":"browser_upload_only","max_completion_concurrency":1,"disable_uploading":false}},"openai_api":{"allOf":[{"$ref":"#/components/schemas/OpenaiApiSetting"}],"default":{"enabled":true,"openai_base_url":"https://api.openai.com/v1/","connect_timeout":10,"read_timeout":20,"enabled_models":["gpt_3_5","gpt_4"],"model_code_mapping":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"common":{"allOf":[{"$ref":"#/components/schemas/CommonSetting"}],"default":{"print_sql":false,"print_traceback":true,"create_initial_admin_user":true,"initial_admin_user_username":"admin","initial_admin_user_password":"password"}},"http":{"allOf":[{"$ref":"#/components/schemas/HttpSetting"}],"default":{"host":"127.0.0.1","port":8000,"cors_allow_origins":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"data":{"allOf":[{"$ref":"#/components/schemas/DataSetting"}],"default":{"data_dir":"./data","database_url":"sqlite+aiosqlite:///data/database.db","mongodb_url":"mongodb://cws:password@mongo:27017","mongodb_db_name":"cws","run_migration":true,"max_file_upload_size":104857600}},"auth":{"allOf":[{"$ref":"#/components/schemas/AuthSetting"}],"default":{"jwt_secret":"MODIFY_THIS_TO_RANDOM_SECURE_STRING","jwt_lifetime_seconds":259200,"cookie_max_age":259200,"user_secret":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"stats":{"allOf":[{"$ref":"#/components/schemas/StatsSetting"}],"default":{"ask_stats_ttl":7776000,"request_stats_ttl":2592000,"request_stats_filter_keywords":["/status"]}},"log":{"allOf":[{"$ref":"#/components/schemas/LogSetting"}],"default":{"console_log_level":"INFO"}}},"type":"object","title":"ConfigModel"},"ConfigModel-Output":{"properties":{"openai_web":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebChatGPTSetting"}],"default":{"enabled":true,"is_plus_account":true,"enable_team_subscription":false,"enable_arkose_endpoint":false,"common_timeout":20,"ask_timeout":600,"sync_conversations_on_startup":false,"sync_conversations_schedule":false,"sync_conversations_schedule_interval_hours":12,"enabled_models":["gpt_3_5","gpt_4","gpt_4_plugins"],"model_code_mapping":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_browsing":"gpt-4-browsing","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle","gpt_4_mobile":"gpt-4-mobile","gpt_4_plugins":"gpt-4-plugins"},"file_upload_strategy":"browser_upload_only","max_completion_concurrency":1,"disable_uploading":false}},"openai_api":{"allOf":[{"$ref":"#/components/schemas/OpenaiApiSetting"}],"default":{"enabled":true,"openai_base_url":"https://api.openai.com/v1/","connect_timeout":10,"read_timeout":20,"enabled_models":["gpt_3_5","gpt_4"],"model_code_mapping":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"common":{"allOf":[{"$ref":"#/components/schemas/CommonSetting"}],"default":{"print_sql":false,"print_traceback":true,"create_initial_admin_user":true,"initial_admin_user_username":"admin","initial_admin_user_password":"password"}},"http":{"allOf":[{"$ref":"#/components/schemas/HttpSetting"}],"default":{"host":"127.0.0.1","port":8000,"cors_allow_origins":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"data":{"allOf":[{"$ref":"#/components/schemas/DataSetting"}],"default":{"data_dir":"./data","database_url":"sqlite+aiosqlite:///data/database.db","mongodb_url":"mongodb://cws:password@mongo:27017","mongodb_db_name":"cws","run_migration":true,"max_file_upload_size":104857600}},"auth":{"allOf":[{"$ref":"#/components/schemas/AuthSetting"}],"default":{"jwt_secret":"MODIFY_THIS_TO_RANDOM_SECURE_STRING","jwt_lifetime_seconds":259200,"cookie_max_age":259200,"user_secret":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"stats":{"allOf":[{"$ref":"#/components/schemas/StatsSetting"}],"default":{"ask_stats_ttl":7776000,"request_stats_ttl":2592000,"request_stats_filter_keywords":["/status"]}},"log":{"allOf":[{"$ref":"#/components/schemas/LogSetting"}],"default":{"console_log_level":"INFO"}}},"type":"object","title":"ConfigModel"},"CredentialsModel":{"properties":{"openai_web_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openai Web Access Token"},"openai_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openai Api Key"}},"type":"object","title":"CredentialsModel"},"CustomOpenaiApiSettings":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},"type":"object","title":"CustomOpenaiApiSettings"},"DailyTimeSlot":{"properties":{"start_time":{"type":"string","format":"time","title":"Start Time","description":"每天可使用的开始时间"},"end_time":{"type":"string","format":"time","title":"End Time","description":"每天可使用的结束时间"}},"type":"object","required":["start_time","end_time"],"title":"DailyTimeSlot"},"DataSetting":{"properties":{"data_dir":{"type":"string","title":"Data Dir","default":"./data"},"database_url":{"type":"string","title":"Database Url","default":"sqlite+aiosqlite:///data/database.db"},"mongodb_url":{"type":"string","title":"Mongodb Url","default":"mongodb://cws:password@mongo:27017"},"mongodb_db_name":{"type":"string","title":"Mongodb Db Name","default":"cws"},"run_migration":{"type":"boolean","title":"Run Migration","default":true},"max_file_upload_size":{"type":"integer","minimum":0.0,"title":"Max File Upload Size","default":104857600}},"type":"object","title":"DataSetting"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HttpSetting":{"properties":{"host":{"type":"string","title":"Host","default":"127.0.0.1"},"port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"Port","default":8000},"cors_allow_origins":{"items":{"type":"string"},"type":"array","title":"Cors Allow Origins","default":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"type":"object","title":"HttpSetting"},"LogFilterOptions":{"properties":{"max_lines":{"type":"integer","title":"Max Lines","default":100},"exclude_keywords":{"items":{"type":"string"},"type":"array","title":"Exclude Keywords"}},"type":"object","title":"LogFilterOptions"},"LogSetting":{"properties":{"console_log_level":{"type":"string","enum":["INFO","DEBUG","WARNING"],"title":"Console Log Level","default":"INFO"}},"type":"object","title":"LogSetting"},"OpenaiApiAskLogMeta":{"properties":{"source":{"const":"openai_api","title":"Source"},"model":{"$ref":"#/components/schemas/OpenaiApiChatModels"}},"type":"object","required":["source","model"],"title":"OpenaiApiAskLogMeta"},"OpenaiApiChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"const":"openai_api","title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"$ref":"#/components/schemas/OpenaiApiChatMessageTextContent"},{"type":"null"}]},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"OpenaiApiChatMessage"},"OpenaiApiChatMessageMetadata":{"properties":{"source":{"const":"openai_api","title":"Source"},"usage":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatResponseUsage"},{"type":"null"}]},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason"}},"type":"object","required":["source"],"title":"OpenaiApiChatMessageMetadata"},"OpenaiApiChatMessageTextContent":{"properties":{"content_type":{"const":"text","title":"Content Type"},"text":{"type":"string","title":"Text"}},"type":"object","required":["content_type","text"],"title":"OpenaiApiChatMessageTextContent"},"OpenaiApiChatModels":{"type":"string","enum":["gpt_3_5","gpt_4"],"title":"OpenaiApiChatModels"},"OpenaiApiConversationHistoryDocument":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"const":"openai_api","title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiApiChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"$ref":"#/components/schemas/OpenaiApiConversationHistoryMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiConversationHistoryMeta","openai_web":"#/components/schemas/OpenaiWebConversationHistoryMeta"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"OpenaiApiConversationHistoryDocument"},"OpenaiApiConversationHistoryMeta":{"properties":{"source":{"const":"openai_api","title":"Source"}},"type":"object","required":["source"],"title":"OpenaiApiConversationHistoryMeta"},"OpenaiApiConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"const":"openai_api","title":"Source"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"OpenaiApiConversationSchema"},"OpenaiApiPerModelAskCount":{"additionalProperties":{"type":"integer"},"type":"object","title":"OpenaiApiPerModelAskCount","default":{"gpt_3_5":0,"gpt_4":0}},"OpenaiApiSetting":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"openai_base_url":{"type":"string","title":"Openai Base Url","default":"https://api.openai.com/v1/"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"connect_timeout":{"type":"integer","minimum":1.0,"title":"Connect Timeout","default":10},"read_timeout":{"type":"integer","minimum":1.0,"title":"Read Timeout","default":20},"enabled_models":{"items":{"$ref":"#/components/schemas/OpenaiApiChatModels"},"type":"array","title":"Enabled Models","default":["gpt_3_5","gpt_4"]},"model_code_mapping":{"additionalProperties":{"type":"string"},"type":"object","title":"Model Code Mapping","default":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"type":"object","title":"OpenaiApiSetting"},"OpenaiApiSourceSettingSchema":{"properties":{"allow_to_use":{"type":"boolean","title":"Allow To Use"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"max_conv_count":{"type":"integer","title":"Max Conv Count"},"total_ask_count":{"type":"integer","title":"Total Ask Count"},"rate_limits":{"items":{"$ref":"#/components/schemas/TimeWindowRateLimit"},"type":"array","title":"Rate Limits"},"daily_available_time_slots":{"items":{"$ref":"#/components/schemas/DailyTimeSlot"},"type":"array","title":"Daily Available Time Slots"},"available_models":{"items":{"$ref":"#/components/schemas/OpenaiApiChatModels"},"type":"array","title":"Available Models"},"per_model_ask_count":{"$ref":"#/components/schemas/OpenaiApiPerModelAskCount"},"allow_custom_openai_api":{"type":"boolean","title":"Allow Custom Openai Api"},"custom_openai_api_settings":{"$ref":"#/components/schemas/CustomOpenaiApiSettings"}},"type":"object","required":["allow_to_use","max_conv_count","total_ask_count","rate_limits","daily_available_time_slots","available_models","per_model_ask_count","allow_custom_openai_api","custom_openai_api_settings"],"title":"OpenaiApiSourceSettingSchema"},"OpenaiChatFileUploadUrlRequest":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"use_case":{"type":"string","enum":["my_files","multimodal"],"title":"Use Case"}},"type":"object","required":["file_name","file_size","use_case"],"title":"OpenaiChatFileUploadUrlRequest"},"OpenaiChatInterpreterInfo":{"properties":{"kernel_started":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Kernel Started"},"time_remaining_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Remaining Ms"}},"type":"object","title":"OpenaiChatInterpreterInfo"},"OpenaiChatPlugin":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatPluginManifest"},{"type":"null"}]},"categories":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiChatPluginCategory"},"type":"array"},{"type":"null"}],"title":"Categories"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"status":{"anyOf":[{"const":"approved"},{"type":"string"},{"type":"null"}],"title":"Status"},"user_settings":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatPluginUserSettings"},{"type":"object"},{"type":"null"}],"title":"User Settings"},"oauth_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Client Id"}},"type":"object","title":"OpenaiChatPlugin"},"OpenaiChatPluginCategory":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","title":"OpenaiChatPluginCategory"},"OpenaiChatPluginListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OpenaiChatPlugin"},"type":"array","title":"Items"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","required":["items"],"title":"OpenaiChatPluginListResponse"},"OpenaiChatPluginManifest":{"properties":{"schema_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Version"},"name_for_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name For Model"},"name_for_human":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name For Human"},"description_for_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description For Model"},"description_for_human":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description For Human"},"api":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Api"},"auth":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Auth"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"legal_info_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Info Url"}},"type":"object","title":"OpenaiChatPluginManifest"},"OpenaiChatPluginUserSettings":{"properties":{"is_authenticated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Authenticated"},"is_installed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Installed"}},"type":"object","title":"OpenaiChatPluginUserSettings"},"OpenaiChatResponseUsage":{"properties":{"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"}},"type":"object","title":"OpenaiChatResponseUsage"},"OpenaiWebAccountsCheckAccount":{"properties":{"account":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckAccountDetail"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"entitlement":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckEntitlement"},"last_active_subscription":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Last Active Subscription"},"is_eligible_for_yearly_plus_subscription":{"type":"boolean","title":"Is Eligible For Yearly Plus Subscription"}},"type":"object","required":["account","features","entitlement","is_eligible_for_yearly_plus_subscription"],"title":"OpenaiWebAccountsCheckAccount"},"OpenaiWebAccountsCheckAccountDetail":{"properties":{"account_user_role":{"anyOf":[{"const":"account-owner"},{"type":"string"}],"title":"Account User Role"},"account_user_id":{"type":"string","title":"Account User Id"},"processor":{"type":"object","title":"Processor"},"account_id":{"type":"string","title":"Account Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"is_most_recent_expired_subscription_gratis":{"type":"boolean","title":"Is Most Recent Expired Subscription Gratis"},"has_previously_paid_subscription":{"type":"boolean","title":"Has Previously Paid Subscription"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"profile_picture_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Id"},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url"},"structure":{"anyOf":[{"type":"string","enum":["workspace","personal"]},{"type":"string"}],"title":"Structure"},"plan_type":{"anyOf":[{"type":"string","enum":["team","free"]},{"type":"string"}],"title":"Plan Type"},"is_deactivated":{"type":"boolean","title":"Is Deactivated"},"promo_data":{"type":"object","title":"Promo Data"}},"type":"object","required":["account_user_role","account_user_id","processor","account_id","is_most_recent_expired_subscription_gratis","has_previously_paid_subscription","structure","plan_type","is_deactivated","promo_data"],"title":"OpenaiWebAccountsCheckAccountDetail"},"OpenaiWebAccountsCheckEntitlement":{"properties":{"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"has_active_subscription":{"type":"boolean","title":"Has Active Subscription"},"subscription_plan":{"anyOf":[{"type":"string","enum":["chatgptteamplan","chatgptplusplan"]},{"type":"string"},{"type":"null"}],"title":"Subscription Plan"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"billing_period":{"anyOf":[{"const":"monthly"},{"type":"string"},{"type":"null"}],"title":"Billing Period"}},"type":"object","title":"OpenaiWebAccountsCheckEntitlement"},"OpenaiWebAccountsCheckResponse":{"properties":{"accounts":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckAccount"},"type":"object","title":"Accounts"},"account_ordering":{"items":{"type":"string"},"type":"array","title":"Account Ordering"}},"type":"object","required":["accounts","account_ordering"],"title":"OpenaiWebAccountsCheckResponse"},"OpenaiWebAskLogMeta":{"properties":{"source":{"const":"openai_web","title":"Source"},"model":{"$ref":"#/components/schemas/OpenaiWebChatModels"}},"type":"object","required":["source","model"],"title":"OpenaiWebAskLogMeta"},"OpenaiWebChatGPTSetting":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"is_plus_account":{"type":"boolean","title":"Is Plus Account","default":true},"enable_team_subscription":{"type":"boolean","title":"Enable Team Subscription","default":false},"team_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Account Id"},"chatgpt_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatgpt Base Url"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"wss_proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wss Proxy"},"enable_arkose_endpoint":{"type":"boolean","title":"Enable Arkose Endpoint","default":false},"arkose_endpoint_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arkose Endpoint Base"},"common_timeout":{"type":"integer","minimum":1.0,"title":"Common Timeout","description":"Increase this value if timeout error occurs.","default":20},"ask_timeout":{"type":"integer","minimum":1.0,"title":"Ask Timeout","default":600},"sync_conversations_on_startup":{"type":"boolean","title":"Sync Conversations On Startup","default":false},"sync_conversations_schedule":{"type":"boolean","title":"Sync Conversations Schedule","default":false},"sync_conversations_schedule_interval_hours":{"type":"integer","minimum":1.0,"title":"Sync Conversations Schedule Interval Hours","default":12},"enabled_models":{"items":{"$ref":"#/components/schemas/OpenaiWebChatModels"},"type":"array","title":"Enabled Models","default":["gpt_3_5","gpt_4","gpt_4_plugins"]},"model_code_mapping":{"additionalProperties":{"type":"string"},"type":"object","title":"Model Code Mapping","default":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_mobile":"gpt-4-mobile","gpt_4_browsing":"gpt-4-browsing","gpt_4_plugins":"gpt-4-plugins","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle"}},"file_upload_strategy":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebFileUploadStrategyOption"}],"default":"browser_upload_only"},"max_completion_concurrency":{"type":"integer","minimum":1.0,"title":"Max Completion Concurrency","default":1},"disable_uploading":{"type":"boolean","title":"Disable Uploading","default":false}},"type":"object","title":"OpenaiWebChatGPTSetting"},"OpenaiWebChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"const":"openai_web","title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageCodeContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageStderrContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent"}],"discriminator":{"propertyName":"content_type","mapping":{"code":"#/components/schemas/OpenaiWebChatMessageCodeContent","execution_output":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent","multimodal_text":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent","stderr":"#/components/schemas/OpenaiWebChatMessageStderrContent","system_error":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent","tether_browsing_display":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent","tether_quote":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent","text":"#/components/schemas/OpenaiWebChatMessageTextContent"}}},{"type":"null"}],"title":"Content"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"OpenaiWebChatMessage"},"OpenaiWebChatMessageCodeContent":{"properties":{"content_type":{"const":"code","title":"Content Type"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageCodeContent"},"OpenaiWebChatMessageExecutionOutputContent":{"properties":{"content_type":{"const":"execution_output","title":"Content Type"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageExecutionOutputContent"},"OpenaiWebChatMessageMetadata":{"properties":{"source":{"const":"openai_web","title":"Source"},"finish_details":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Finish Details"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"},"end_turn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Turn"},"message_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Status"},"recipient":{"anyOf":[{"type":"string","enum":["all","browser","python"]},{"type":"string"},{"type":"null"}],"title":"Recipient"},"fallback_content":{"anyOf":[{},{"type":"null"}],"title":"Fallback Content"},"invoked_plugin":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataPlugin"},{"type":"null"}]},"command":{"anyOf":[{"const":"search"},{"type":"string"},{"type":"null"}],"title":"Command"},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"_cite_metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCite"},{"type":"null"}]},"citations":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCitation"},"type":"array"},{"type":"null"}],"title":"Citations"},"attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAttachment"},"type":"array"},{"type":"null"}],"title":"Attachments"},"status":{"anyOf":[{"const":"finished_successfully"},{"type":"string"},{"type":"null"}],"title":"Status"},"is_complete":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Complete"},"aggregate_result":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAggregateResult"},{"type":"null"}]},"timestamp_":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"null"}],"title":"Timestamp "}},"type":"object","required":["source"],"title":"OpenaiWebChatMessageMetadata"},"OpenaiWebChatMessageMetadataAggregateResult":{"properties":{"status":{"anyOf":[{"type":"string","enum":["failed_with_in_kernel_exception","success"]},{"type":"string"},{"type":"null"}],"title":"Status"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"start_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"},"update_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Update Time"},"end_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"},"final_expression_output":{"anyOf":[{},{"type":"null"}],"title":"Final Expression Output"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"in_kernel_exception":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"In Kernel Exception"},"messages":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAggregateResultMessage"},"type":"array"},{"type":"null"}],"title":"Messages"},"jupyter_messages":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Jupyter Messages"}},"type":"object","title":"OpenaiWebChatMessageMetadataAggregateResult"},"OpenaiWebChatMessageMetadataAggregateResultMessage":{"properties":{"message_type":{"anyOf":[{"type":"string","enum":["image","stream"]},{"type":"string"},{"type":"null"}],"title":"Message Type"},"time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Time"},"sender":{"anyOf":[{"const":"server"},{"type":"string"},{"type":"null"}],"title":"Sender"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"stream_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Name"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","title":"OpenaiWebChatMessageMetadataAggregateResultMessage"},"OpenaiWebChatMessageMetadataAttachment":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mimetype"}},"type":"object","title":"OpenaiWebChatMessageMetadataAttachment"},"OpenaiWebChatMessageMetadataCitation":{"properties":{"start_ix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Ix"},"end_ix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Ix"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCiteData"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMetadataCitation"},"OpenaiWebChatMessageMetadataCite":{"properties":{"citation_format":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Citation Format"},"metadata_list":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCiteData"},"type":"array"},{"type":"null"}],"title":"Metadata List"}},"type":"object","title":"OpenaiWebChatMessageMetadataCite"},"OpenaiWebChatMessageMetadataCiteData":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","title":"OpenaiWebChatMessageMetadataCiteData"},"OpenaiWebChatMessageMetadataPlugin":{"properties":{"http_response_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Response Status"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"plugin_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plugin Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","title":"OpenaiWebChatMessageMetadataPlugin"},"OpenaiWebChatMessageMultimodalTextContent":{"properties":{"content_type":{"const":"multimodal_text","title":"Content Type"},"parts":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContentImagePart-Output"},{}]},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageMultimodalTextContent"},"OpenaiWebChatMessageMultimodalTextContentImagePart-Input":{"properties":{"asset_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Pointer"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadata"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextContentImagePart"},"OpenaiWebChatMessageMultimodalTextContentImagePart-Output":{"properties":{"asset_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Pointer"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadata"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextContentImagePart"},"OpenaiWebChatMessageMultimodalTextMetadata":{"properties":{"dalle":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadataDalle"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextMetadata"},"OpenaiWebChatMessageMultimodalTextMetadataDalle":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"serialization_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serialization Title"}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextMetadataDalle"},"OpenaiWebChatMessageStderrContent":{"properties":{"content_type":{"const":"stderr","title":"Content Type"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageStderrContent"},"OpenaiWebChatMessageSystemErrorContent":{"properties":{"content_type":{"const":"system_error","title":"Content Type"},"name":{"anyOf":[{"const":"tool_error"},{"type":"string"},{"type":"null"}],"title":"Name"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageSystemErrorContent"},"OpenaiWebChatMessageTetherBrowsingDisplayContent":{"properties":{"content_type":{"const":"tether_browsing_display","title":"Content Type"},"result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTetherBrowsingDisplayContent"},"OpenaiWebChatMessageTetherQuoteContent":{"properties":{"content_type":{"const":"tether_quote","title":"Content Type"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTetherQuoteContent"},"OpenaiWebChatMessageTextContent":{"properties":{"content_type":{"const":"text","title":"Content Type"},"parts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTextContent"},"OpenaiWebChatModels":{"type":"string","enum":["gpt_3_5","gpt_3_5_mobile","gpt_4","gpt_4_mobile","gpt_4_browsing","gpt_4_code_interpreter","gpt_4_plugins","gpt_4_dalle"],"title":"OpenaiWebChatModels"},"OpenaiWebChatStatus":{"type":"string","enum":["asking","queueing","idling"],"title":"OpenaiWebChatStatus"},"OpenaiWebConversationHistoryDocument":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"const":"openai_web","title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiWebChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"type":"null"}]}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"OpenaiWebConversationHistoryDocument"},"OpenaiWebConversationHistoryMeta":{"properties":{"source":{"const":"openai_web","title":"Source"},"moderation_results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Moderation Results"},"plugin_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plugin Ids"},"gizmo_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gizmo Id"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"},"conversation_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Template Id"}},"type":"object","required":["source"],"title":"OpenaiWebConversationHistoryMeta"},"OpenaiWebConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"const":"openai_web","title":"Source"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"OpenaiWebConversationSchema"},"OpenaiWebFileUploadStrategyOption":{"type":"string","enum":["server_upload_only","browser_upload_only","browser_upload_when_file_size_exceed"],"title":"OpenaiWebFileUploadStrategyOption"},"OpenaiWebPerModelAskCount":{"additionalProperties":{"type":"integer"},"type":"object","title":"OpenaiWebPerModelAskCount","default":{"gpt_3_5":0,"gpt_3_5_mobile":0,"gpt_4":0,"gpt_4_mobile":0,"gpt_4_browsing":0,"gpt_4_code_interpreter":0,"gpt_4_plugins":0,"gpt_4_dalle":0}},"OpenaiWebSourceSettingSchema":{"properties":{"allow_to_use":{"type":"boolean","title":"Allow To Use"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"max_conv_count":{"type":"integer","title":"Max Conv Count"},"total_ask_count":{"type":"integer","title":"Total Ask Count"},"rate_limits":{"items":{"$ref":"#/components/schemas/TimeWindowRateLimit"},"type":"array","title":"Rate Limits"},"daily_available_time_slots":{"items":{"$ref":"#/components/schemas/DailyTimeSlot"},"type":"array","title":"Daily Available Time Slots"},"available_models":{"items":{"$ref":"#/components/schemas/OpenaiWebChatModels"},"type":"array","title":"Available Models"},"per_model_ask_count":{"$ref":"#/components/schemas/OpenaiWebPerModelAskCount"},"disable_uploading":{"type":"boolean","title":"Disable Uploading"},"use_team":{"type":"boolean","title":"Use Team"}},"type":"object","required":["allow_to_use","max_conv_count","total_ask_count","rate_limits","daily_available_time_slots","available_models","per_model_ask_count","disable_uploading","use_team"],"title":"OpenaiWebSourceSettingSchema"},"RequestLogAggregation":{"properties":{"_id":{"$ref":"#/components/schemas/RequestLogAggregationID"},"count":{"type":"integer","title":"Count"},"user_ids":{"items":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"array","title":"User Ids","default":[]},"avg_elapsed_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Elapsed Ms"}},"type":"object","required":["_id","count"],"title":"RequestLogAggregation"},"RequestLogAggregationID":{"properties":{"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"route_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Path"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"}},"type":"object","title":"RequestLogAggregationID"},"StartUploadRequestSchema":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"},"use_case":{"type":"string","enum":["my_files","multimodal"],"title":"Use Case"}},"type":"object","required":["file_name","file_size","use_case"],"title":"StartUploadRequestSchema"},"StartUploadResponseSchema":{"properties":{"strategy":{"$ref":"#/components/schemas/OpenaiWebFileUploadStrategyOption"},"file_max_size":{"type":"integer","title":"File Max Size"},"upload_file_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileInfoSchema"},{"type":"null"}]}},"type":"object","required":["strategy","file_max_size"],"title":"StartUploadResponseSchema"},"StatsSetting":{"properties":{"ask_stats_ttl":{"type":"integer","title":"Ask Stats Ttl","default":7776000},"request_stats_ttl":{"type":"integer","title":"Request Stats Ttl","default":2592000},"request_stats_filter_keywords":{"items":{"type":"string"},"type":"array","title":"Request Stats Filter Keywords","default":["/status"]}},"type":"object","title":"StatsSetting"},"SystemInfo":{"properties":{"startup_time":{"type":"number","title":"Startup Time"},"total_user_count":{"type":"integer","title":"Total User Count"},"total_conversation_count":{"type":"integer","title":"Total Conversation Count"},"valid_conversation_count":{"type":"integer","title":"Valid Conversation Count"}},"type":"object","required":["startup_time","total_user_count","total_conversation_count","valid_conversation_count"],"title":"SystemInfo"},"TimeWindowRateLimit":{"properties":{"window_seconds":{"type":"integer","title":"Window Seconds","description":"时间窗口大小,单位为秒"},"max_requests":{"type":"integer","title":"Max Requests","description":"在给定时间窗口内最多的请求次数"}},"type":"object","required":["window_seconds","max_requests"],"title":"TimeWindowRateLimit"},"UploadedFileExtraInfo":{"properties":{"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"}},"type":"object","title":"UploadedFileExtraInfo"},"UploadedFileInfoSchema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"original_filename":{"type":"string","title":"Original Filename"},"size":{"type":"integer","title":"Size"},"storage_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage Path"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"upload_time":{"type":"string","format":"date-time","title":"Upload Time"},"uploader_id":{"type":"integer","title":"Uploader Id"},"openai_web_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileOpenaiWebInfo"},{"type":"null"}]},"extra_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileExtraInfo"},{"type":"null"}]}},"type":"object","required":["id","original_filename","size","upload_time","uploader_id"],"title":"UploadedFileInfoSchema"},"UploadedFileOpenaiWebInfo":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id"},"use_case":{"anyOf":[{"type":"string","enum":["my_files","multimodal"]},{"type":"string"},{"type":"null"}],"title":"Use Case"},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"上传文件的url, 上传后应清空该字段"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","title":"UploadedFileOpenaiWebInfo"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser","default":false},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified","default":false},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","required":["email","password","username","nickname"],"title":"UserCreate"},"UserRead":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"last_active_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active Time"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"setting":{"$ref":"#/components/schemas/UserSettingSchema-Output"}},"type":"object","required":["id","email","is_active","is_superuser","is_verified","username","nickname","last_active_time","create_time","setting"],"title":"UserRead"},"UserReadAdmin":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"last_active_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active Time"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"setting":{"$ref":"#/components/schemas/UserSettingSchema-Output"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","required":["id","email","is_active","is_superuser","is_verified","username","nickname","last_active_time","create_time","setting"],"title":"UserReadAdmin"},"UserSettingSchema-Input":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"credits":{"type":"number","title":"Credits"},"openai_web_chat_status":{"$ref":"#/components/schemas/OpenaiWebChatStatus"},"openai_web":{"$ref":"#/components/schemas/OpenaiWebSourceSettingSchema"},"openai_api":{"$ref":"#/components/schemas/OpenaiApiSourceSettingSchema"}},"type":"object","required":["credits","openai_web_chat_status","openai_web","openai_api"],"title":"UserSettingSchema"},"UserSettingSchema-Output":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"credits":{"type":"number","title":"Credits"},"openai_web_chat_status":{"$ref":"#/components/schemas/OpenaiWebChatStatus"},"openai_web":{"$ref":"#/components/schemas/OpenaiWebSourceSettingSchema"},"openai_api":{"$ref":"#/components/schemas/OpenaiApiSourceSettingSchema"}},"type":"object","required":["credits","openai_web_chat_status","openai_web","openai_api"],"title":"UserSettingSchema"},"UserUpdate":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"}},"type":"object","title":"UserUpdate"},"UserUpdateAdmin":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","title":"UserUpdateAdmin"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyCookie":{"type":"apiKey","in":"cookie","name":"cws_user_auth"}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/auth/login":{"post":{"summary":"Auth:Jwt.Login","operationId":"auth_jwt_login_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_auth_jwt_login_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"summary":"Auth:Jwt.Logout","operationId":"auth_jwt_logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","description":"注册时不能指定setting,使用默认setting","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user":{"get":{"tags":["user"],"summary":"Get All Users","operationId":"get_all_users_user_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user/me":{"get":{"tags":["user"],"summary":"Get Me","operationId":"get_me_user_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"patch":{"tags":["user"],"summary":"Update Me","operationId":"update_me_user_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/user/{user_id}":{"get":{"tags":["user"],"summary":"Admin Get User","operationId":"admin_get_user_user__user_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["user"],"summary":"Admin Update User","operationId":"admin_update_user_user__user_id__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateAdmin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user"],"summary":"Admin Delete User","operationId":"admin_delete_user_user__user_id__delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/{user_id}/setting":{"patch":{"tags":["user"],"summary":"Admin Update User Setting","operationId":"admin_update_user_setting_user__user_id__setting_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingSchema-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv":{"get":{"tags":["conversation"],"summary":"Get My Conversations","description":"返回自己的有效会话","operationId":"get_my_conversations_conv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"delete":{"tags":["conversation"],"summary":"Delete All Conversation","operationId":"delete_all_conversation_conv_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/conv/all":{"get":{"tags":["conversation"],"summary":"Get All Conversations","operationId":"get_all_conversations_conv_all_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"valid_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Valid Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}":{"get":{"tags":["conversation"],"summary":"Get Conversation History","operationId":"get_conversation_history_conv__conversation_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["conversation"],"summary":"Delete Conversation","description":"软删除:标记为 invalid 并且从 chatgpt 账号中删除会话,但不会删除 mongodb 中的历史记录","operationId":"delete_conversation_conv__conversation_id__delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["conversation"],"summary":"Update Conversation Title","operationId":"update_conversation_title_conv__conversation_id__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"title","in":"query","required":true,"schema":{"type":"string","title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/cache":{"get":{"tags":["conversation"],"summary":"Get Conversation History From Cache","operationId":"get_conversation_history_from_cache_conv__conversation_id__cache_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/vanish":{"delete":{"tags":["conversation"],"summary":"Vanish Conversation","description":"硬删除:删除数据库和账号中的对话和历史记录","operationId":"vanish_conversation_conv__conversation_id__vanish_delete","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/assign/{username}":{"patch":{"tags":["conversation"],"summary":"Assign Conversation","operationId":"assign_conversation_conv__conversation_id__assign__username__patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/gen_title":{"patch":{"tags":["conversation"],"summary":"Generate Conversation Title","operationId":"generate_conversation_title_conv__conversation_id__gen_title_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/interpreter":{"get":{"tags":["conversation"],"summary":"Get Conversation Interpreter Info","operationId":"get_conversation_interpreter_info_conv__conversation_id__interpreter_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conv/{conversation_id}/interpreter/download-url":{"get":{"tags":["conversation"],"summary":"Get Conversation Interpreter Download Url","operationId":"get_conversation_interpreter_download_url_conv__conversation_id__interpreter_download_url_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Conversation Id"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"sandbox_path","in":"query","required":true,"schema":{"type":"string","title":"Sandbox Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins":{"get":{"tags":["chat"],"summary":"Get Openai Web Chat Plugins","operationId":"get_openai_web_chat_plugins_chat_openai_plugins_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Limit"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins/installed":{"get":{"tags":["chat"],"summary":"Get Installed Openai Web Chat Plugins","operationId":"get_installed_openai_web_chat_plugins_chat_openai_plugins_installed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/chat/openai-plugins/installed/{plugin_id}":{"get":{"tags":["chat"],"summary":"Get Installed Openai Web Plugin","operationId":"get_installed_openai_web_plugin_chat_openai_plugins_installed__plugin_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"plugin_id","in":"path","required":true,"schema":{"type":"string","title":"Plugin Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/openai-plugins/{plugin_id}/user-settings":{"patch":{"tags":["chat"],"summary":"Update Chat Plugin User Settings","operationId":"update_chat_plugin_user_settings_chat_openai_plugins__plugin_id__user_settings_patch","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"plugin_id","in":"path","required":true,"schema":{"type":"string","title":"Plugin Id"}},{"name":"use_team","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"title":"Use Team"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenaiChatPluginUserSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/__schema_types":{"get":{"tags":["chat"],"summary":" Predict Schema Types","description":"只用来让 openapi 自动生成 schema,并不实际调用","operationId":"_predict_schema_types_chat___schema_types_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/info":{"get":{"tags":["system"],"summary":"Get System Info","operationId":"get_system_info_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/stats/request":{"get":{"tags":["system"],"summary":"Get Request Statistics","operationId":"get_request_statistics_system_stats_request_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"granularity","in":"query","required":false,"schema":{"type":"integer","default":1800,"title":"Granularity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/stats/ask":{"get":{"tags":["system"],"summary":"Get Ask Statistics","operationId":"get_ask_statistics_system_stats_ask_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"granularity","in":"query","required":false,"schema":{"type":"integer","default":1800,"title":"Granularity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system/config":{"get":{"tags":["system"],"summary":"Get Config","operationId":"get_config_system_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"put":{"tags":["system"],"summary":"Update Config","operationId":"update_config_system_config_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigModel-Input"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/credentials":{"get":{"tags":["system"],"summary":"Get Credentials","operationId":"get_credentials_system_credentials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]},"put":{"tags":["system"],"summary":"Update Credentials","operationId":"update_credentials_system_credentials_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsModel"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/action/sync-openai-web-conv":{"post":{"tags":["system"],"summary":"Sync Openai Web Conversations","operationId":"sync_openai_web_conversations_system_action_sync_openai_web_conv_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/system/check-openai-web-account":{"get":{"tags":["system"],"summary":"Check Openai Web Account","operationId":"check_openai_web_account_system_check_openai_web_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/logs/server":{"post":{"tags":["logs"],"summary":"Get Server Logs","operationId":"get_server_logs_logs_server_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/LogFilterOptions"}],"title":"Options","default":{"max_lines":100}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/logs/completions":{"get":{"tags":["logs"],"summary":"Get Completion Logs","operationId":"get_completion_logs_logs_completions_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"End Time"}},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status/common":{"get":{"tags":["status"],"summary":"Get Server Status","operationId":"get_server_status_status_common_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/{file_id}/download-url":{"get":{"tags":["conversation"],"summary":"Get File Download Url","description":"file_id: OpenAI 分配的 id,以 file- 开头","operationId":"get_file_download_url_files__file_id__download_url_get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/local/upload":{"post":{"tags":["files"],"summary":"Upload File To Local","description":"上传文件到服务器。文件将被保存在服务器上,返回文件信息。\n仅当需要在服务器留存上传的文件时才使用.","operationId":"upload_file_to_local_files_local_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_to_local_files_local_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/local/download/{file_id}":{"get":{"tags":["files"],"summary":"Download File From Local","operationId":"download_file_from_local_files_local_download__file_id__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/openai-web/upload-start":{"post":{"tags":["files"],"summary":"Start Upload To Openai","description":"要上传文件到 OpenAI Web,前端需要先调用此接口.\n1. 若最终上传方法是前端直接上传 (Browser -> Azure Blob),则获取上传地址并记录文件信息,响应中 upload_file_info 不为空\n2. 否则的话就是服务端中转上传(Browser -> Local -> Azure Blob,此时响应中 upload_file_info 为空,前端应当:\n a. 先调用 upload_file_to_local 接口上传文件到服务器,拿到文件的 uuid\n b. 再调用 upload_local_file_to_openai_web 接口,通知服务器上传文件到 OpenAI Web","operationId":"start_upload_to_openai_files_openai_web_upload_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartUploadRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyCookie":[]}]}},"/files/openai-web/__browser_upload_schema__":{"options":{"tags":["files"],"summary":" Browser Upload Schema ","operationId":"__browser_upload_schema___files_openai_web___browser_upload_schema___options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/files/openai-web/upload-complete/{file_id}":{"post":{"tags":["files"],"summary":"Complete Upload To Openai","operationId":"complete_upload_to_openai_files_openai_web_upload_complete__file_id__post","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/local/upload-to-openai-web/{file_id}":{"post":{"tags":["files"],"summary":"Upload Local File To Openai Web","description":"将服务器上已有的文件上传到 OpenAI Web(Azure blob)","operationId":"upload_local_file_to_openai_web_files_local_upload_to_openai_web__file_id__post","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/arkose/v2/{path}":{"get":{"tags":["arkose"],"summary":"Forward Arkose Request","description":"TODO 经过转发,arkose 会报错 \"API_REQUEST_ERROR\"","operationId":"forward_arkose_request_arkose_v2__path__get","security":[{"APIKeyCookie":[]}],"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/arkose/info":{"get":{"tags":["arkose"],"summary":"Get Arkose Info","operationId":"get_arkose_info_arkose_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string"}}}}},"security":[{"APIKeyCookie":[]}]}}},"components":{"schemas":{"AskLogAggregation":{"properties":{"_id":{"anyOf":[{"$ref":"#/components/schemas/AskLogAggregationID"},{"type":"null"}]},"count":{"type":"integer","title":"Count"},"user_ids":{"items":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"array","title":"User Ids"},"total_queueing_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Queueing Time"},"total_ask_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Ask Time"}},"type":"object","required":["count"],"title":"AskLogAggregation"},"AskLogAggregationID":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time"},"meta":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebAskLogMeta"},{"$ref":"#/components/schemas/OpenaiApiAskLogMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiAskLogMeta","openai_web":"#/components/schemas/OpenaiWebAskLogMeta"}}},{"type":"null"}],"title":"Meta"}},"type":"object","required":["start_time"],"title":"AskLogAggregationID"},"AskLogDocument":{"properties":{"_id":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":" Id","description":"MongoDB document ObjectID"},"time":{"type":"string","format":"date-time","title":"Time"},"meta":{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebAskLogMeta"},{"$ref":"#/components/schemas/OpenaiApiAskLogMeta"}],"title":"Meta","discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiAskLogMeta","openai_web":"#/components/schemas/OpenaiWebAskLogMeta"}}},"user_id":{"type":"integer","title":"User Id"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"queueing_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Queueing Time"},"ask_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ask Time"}},"type":"object","required":["meta","user_id","queueing_time","ask_time"],"title":"AskLogDocument"},"AskRequest":{"properties":{"source":{"$ref":"#/components/schemas/ChatSourceTypes"},"model":{"type":"string","title":"Model"},"new_conversation":{"type":"boolean","title":"New Conversation"},"new_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Title"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"api_context_message_count":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":0.0},{"type":"null"}],"title":"Api Context Message Count"},"text_content":{"type":"string","title":"Text Content"},"openai_web_plugin_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Openai Web Plugin Ids"},"openai_web_attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAttachment"},"type":"array"},{"type":"null"}],"title":"Openai Web Attachments"},"openai_web_multimodal_image_parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContentImagePart-Input"},"type":"array"},{"type":"null"}],"title":"Openai Web Multimodal Image Parts"},"arkose_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arkose Token"}},"type":"object","required":["source","model","new_conversation","text_content"],"title":"AskRequest"},"AskResponse":{"properties":{"type":{"$ref":"#/components/schemas/AskResponseType"},"tip":{"type":"string","title":"Tip"},"conversation_id":{"type":"string","format":"uuid","title":"Conversation Id"},"message":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessage"},{"$ref":"#/components/schemas/OpenaiApiChatMessage"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessage","openai_web":"#/components/schemas/OpenaiWebChatMessage"}}},{"type":"null"}],"title":"Message"},"error_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Detail"}},"type":"object","required":["type"],"title":"AskResponse"},"AskResponseType":{"type":"string","enum":["waiting","queueing","message","error"],"title":"AskResponseType"},"AuthSetting":{"properties":{"jwt_secret":{"type":"string","title":"Jwt Secret","default":"MODIFY_THIS_TO_RANDOM_SECURE_STRING"},"jwt_lifetime_seconds":{"type":"integer","minimum":1.0,"title":"Jwt Lifetime Seconds","default":259200},"cookie_max_age":{"type":"integer","minimum":1.0,"title":"Cookie Max Age","default":259200},"user_secret":{"type":"string","title":"User Secret","default":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"type":"object","title":"AuthSetting"},"BaseChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"type":"string","enum":["openai_web","openai_api"],"title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageCodeContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageStderrContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent"}],"discriminator":{"propertyName":"content_type","mapping":{"code":"#/components/schemas/OpenaiWebChatMessageCodeContent","execution_output":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent","multimodal_text":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent","stderr":"#/components/schemas/OpenaiWebChatMessageStderrContent","system_error":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent","tether_browsing_display":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent","tether_quote":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent","text":"#/components/schemas/OpenaiWebChatMessageTextContent"}}},{"$ref":"#/components/schemas/OpenaiApiChatMessageTextContent"},{"type":"null"}],"title":"Content"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"BaseChatMessage"},"BaseConversationHistory":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"type":"string","enum":["openai_web","openai_api"],"title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/BaseChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"$ref":"#/components/schemas/OpenaiApiConversationHistoryMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiConversationHistoryMeta","openai_web":"#/components/schemas/OpenaiWebConversationHistoryMeta"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"BaseConversationHistory"},"BaseConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"$ref":"#/components/schemas/ChatSourceTypes"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"BaseConversationSchema"},"Body_auth_jwt_login_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"password"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_auth_jwt_login_auth_login_post"},"Body_upload_file_to_local_files_local_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_to_local_files_local_upload_post"},"ChatSourceTypes":{"type":"string","enum":["openai_web","openai_api"],"title":"ChatSourceTypes"},"CommonSetting":{"properties":{"print_sql":{"type":"boolean","title":"Print Sql","default":false},"print_traceback":{"type":"boolean","title":"Print Traceback","default":true},"create_initial_admin_user":{"type":"boolean","title":"Create Initial Admin User","default":true},"initial_admin_user_username":{"type":"string","title":"Initial Admin User Username","default":"admin"},"initial_admin_user_password":{"type":"string","title":"Initial Admin User Password","default":"password"}},"type":"object","title":"CommonSetting"},"CommonStatusSchema":{"properties":{"active_user_in_5m":{"type":"integer","title":"Active User In 5M"},"active_user_in_1h":{"type":"integer","title":"Active User In 1H"},"active_user_in_1d":{"type":"integer","title":"Active User In 1D"},"is_chatbot_busy":{"type":"boolean","title":"Is Chatbot Busy"},"chatbot_waiting_count":{"type":"integer","title":"Chatbot Waiting Count"},"gpt4_count_in_3_hours":{"type":"integer","title":"Gpt4 Count In 3 Hours"}},"type":"object","title":"CommonStatusSchema"},"ConfigModel-Input":{"properties":{"openai_web":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebChatGPTSetting"}],"default":{"enabled":true,"is_plus_account":true,"enable_team_subscription":false,"enable_arkose_endpoint":false,"common_timeout":20,"ask_timeout":600,"sync_conversations_on_startup":false,"sync_conversations_schedule":false,"sync_conversations_schedule_interval_hours":12,"enabled_models":["gpt_3_5","gpt_4","gpt_4_plugins"],"model_code_mapping":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_browsing":"gpt-4-browsing","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle","gpt_4_mobile":"gpt-4-mobile","gpt_4_plugins":"gpt-4-plugins"},"file_upload_strategy":"browser_upload_only","max_completion_concurrency":1,"disable_uploading":false}},"openai_api":{"allOf":[{"$ref":"#/components/schemas/OpenaiApiSetting"}],"default":{"enabled":true,"openai_base_url":"https://api.openai.com/v1/","connect_timeout":10,"read_timeout":20,"enabled_models":["gpt_3_5","gpt_4"],"model_code_mapping":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"common":{"allOf":[{"$ref":"#/components/schemas/CommonSetting"}],"default":{"print_sql":false,"print_traceback":true,"create_initial_admin_user":true,"initial_admin_user_username":"admin","initial_admin_user_password":"password"}},"http":{"allOf":[{"$ref":"#/components/schemas/HttpSetting"}],"default":{"host":"127.0.0.1","port":8000,"cors_allow_origins":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"data":{"allOf":[{"$ref":"#/components/schemas/DataSetting"}],"default":{"data_dir":"./data","database_url":"sqlite+aiosqlite:///data/database.db","mongodb_url":"mongodb://cws:password@mongo:27017","mongodb_db_name":"cws","run_migration":true,"max_file_upload_size":104857600}},"auth":{"allOf":[{"$ref":"#/components/schemas/AuthSetting"}],"default":{"jwt_secret":"MODIFY_THIS_TO_RANDOM_SECURE_STRING","jwt_lifetime_seconds":259200,"cookie_max_age":259200,"user_secret":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"stats":{"allOf":[{"$ref":"#/components/schemas/StatsSetting"}],"default":{"ask_stats_ttl":7776000,"request_stats_ttl":2592000,"request_stats_filter_keywords":["/status"]}},"log":{"allOf":[{"$ref":"#/components/schemas/LogSetting"}],"default":{"console_log_level":"INFO"}}},"type":"object","title":"ConfigModel"},"ConfigModel-Output":{"properties":{"openai_web":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebChatGPTSetting"}],"default":{"enabled":true,"is_plus_account":true,"enable_team_subscription":false,"enable_arkose_endpoint":false,"common_timeout":20,"ask_timeout":600,"sync_conversations_on_startup":false,"sync_conversations_schedule":false,"sync_conversations_schedule_interval_hours":12,"enabled_models":["gpt_3_5","gpt_4","gpt_4_plugins"],"model_code_mapping":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_browsing":"gpt-4-browsing","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle","gpt_4_mobile":"gpt-4-mobile","gpt_4_plugins":"gpt-4-plugins"},"file_upload_strategy":"browser_upload_only","max_completion_concurrency":1,"disable_uploading":false}},"openai_api":{"allOf":[{"$ref":"#/components/schemas/OpenaiApiSetting"}],"default":{"enabled":true,"openai_base_url":"https://api.openai.com/v1/","connect_timeout":10,"read_timeout":20,"enabled_models":["gpt_3_5","gpt_4"],"model_code_mapping":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"common":{"allOf":[{"$ref":"#/components/schemas/CommonSetting"}],"default":{"print_sql":false,"print_traceback":true,"create_initial_admin_user":true,"initial_admin_user_username":"admin","initial_admin_user_password":"password"}},"http":{"allOf":[{"$ref":"#/components/schemas/HttpSetting"}],"default":{"host":"127.0.0.1","port":8000,"cors_allow_origins":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"data":{"allOf":[{"$ref":"#/components/schemas/DataSetting"}],"default":{"data_dir":"./data","database_url":"sqlite+aiosqlite:///data/database.db","mongodb_url":"mongodb://cws:password@mongo:27017","mongodb_db_name":"cws","run_migration":true,"max_file_upload_size":104857600}},"auth":{"allOf":[{"$ref":"#/components/schemas/AuthSetting"}],"default":{"jwt_secret":"MODIFY_THIS_TO_RANDOM_SECURE_STRING","jwt_lifetime_seconds":259200,"cookie_max_age":259200,"user_secret":"MODIFY_THIS_TO_ANOTHER_RANDOM_SECURE_STRING"}},"stats":{"allOf":[{"$ref":"#/components/schemas/StatsSetting"}],"default":{"ask_stats_ttl":7776000,"request_stats_ttl":2592000,"request_stats_filter_keywords":["/status"]}},"log":{"allOf":[{"$ref":"#/components/schemas/LogSetting"}],"default":{"console_log_level":"INFO"}}},"type":"object","title":"ConfigModel"},"CredentialsModel":{"properties":{"openai_web_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openai Web Access Token"},"openai_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openai Api Key"}},"type":"object","title":"CredentialsModel"},"CustomOpenaiApiSettings":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},"type":"object","title":"CustomOpenaiApiSettings"},"DailyTimeSlot":{"properties":{"start_time":{"type":"string","format":"time","title":"Start Time","description":"每天可使用的开始时间"},"end_time":{"type":"string","format":"time","title":"End Time","description":"每天可使用的结束时间"}},"type":"object","required":["start_time","end_time"],"title":"DailyTimeSlot"},"DataSetting":{"properties":{"data_dir":{"type":"string","title":"Data Dir","default":"./data"},"database_url":{"type":"string","title":"Database Url","default":"sqlite+aiosqlite:///data/database.db"},"mongodb_url":{"type":"string","title":"Mongodb Url","default":"mongodb://cws:password@mongo:27017"},"mongodb_db_name":{"type":"string","title":"Mongodb Db Name","default":"cws"},"run_migration":{"type":"boolean","title":"Run Migration","default":true},"max_file_upload_size":{"type":"integer","minimum":0.0,"title":"Max File Upload Size","default":104857600}},"type":"object","title":"DataSetting"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HttpSetting":{"properties":{"host":{"type":"string","title":"Host","default":"127.0.0.1"},"port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"Port","default":8000},"cors_allow_origins":{"items":{"type":"string"},"type":"array","title":"Cors Allow Origins","default":["http://localhost:8000","http://localhost:5173","http://127.0.0.1:8000","http://127.0.0.1:5173"]}},"type":"object","title":"HttpSetting"},"LogFilterOptions":{"properties":{"max_lines":{"type":"integer","title":"Max Lines","default":100},"exclude_keywords":{"items":{"type":"string"},"type":"array","title":"Exclude Keywords"}},"type":"object","title":"LogFilterOptions"},"LogSetting":{"properties":{"console_log_level":{"type":"string","enum":["INFO","DEBUG","WARNING"],"title":"Console Log Level","default":"INFO"}},"type":"object","title":"LogSetting"},"OpenaiApiAskLogMeta":{"properties":{"source":{"const":"openai_api","title":"Source"},"model":{"$ref":"#/components/schemas/OpenaiApiChatModels"}},"type":"object","required":["source","model"],"title":"OpenaiApiAskLogMeta"},"OpenaiApiChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"const":"openai_api","title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"$ref":"#/components/schemas/OpenaiApiChatMessageTextContent"},{"type":"null"}]},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"OpenaiApiChatMessage"},"OpenaiApiChatMessageMetadata":{"properties":{"source":{"const":"openai_api","title":"Source"},"usage":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatResponseUsage"},{"type":"null"}]},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason"}},"type":"object","required":["source"],"title":"OpenaiApiChatMessageMetadata"},"OpenaiApiChatMessageTextContent":{"properties":{"content_type":{"const":"text","title":"Content Type"},"text":{"type":"string","title":"Text"}},"type":"object","required":["content_type","text"],"title":"OpenaiApiChatMessageTextContent"},"OpenaiApiChatModels":{"type":"string","enum":["gpt_3_5","gpt_4"],"title":"OpenaiApiChatModels"},"OpenaiApiConversationHistoryDocument":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"const":"openai_api","title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiApiChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"$ref":"#/components/schemas/OpenaiApiConversationHistoryMeta"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiConversationHistoryMeta","openai_web":"#/components/schemas/OpenaiWebConversationHistoryMeta"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"OpenaiApiConversationHistoryDocument"},"OpenaiApiConversationHistoryMeta":{"properties":{"source":{"const":"openai_api","title":"Source"}},"type":"object","required":["source"],"title":"OpenaiApiConversationHistoryMeta"},"OpenaiApiConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"const":"openai_api","title":"Source"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"OpenaiApiConversationSchema"},"OpenaiApiPerModelAskCount":{"additionalProperties":{"type":"integer"},"type":"object","title":"OpenaiApiPerModelAskCount","default":{"gpt_3_5":0,"gpt_4":0}},"OpenaiApiSetting":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"openai_base_url":{"type":"string","title":"Openai Base Url","default":"https://api.openai.com/v1/"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"connect_timeout":{"type":"integer","minimum":1.0,"title":"Connect Timeout","default":10},"read_timeout":{"type":"integer","minimum":1.0,"title":"Read Timeout","default":20},"enabled_models":{"items":{"$ref":"#/components/schemas/OpenaiApiChatModels"},"type":"array","title":"Enabled Models","default":["gpt_3_5","gpt_4"]},"model_code_mapping":{"additionalProperties":{"type":"string"},"type":"object","title":"Model Code Mapping","default":{"gpt_3_5":"gpt-3.5-turbo","gpt_4":"gpt-4"}}},"type":"object","title":"OpenaiApiSetting"},"OpenaiApiSourceSettingSchema":{"properties":{"allow_to_use":{"type":"boolean","title":"Allow To Use"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"max_conv_count":{"type":"integer","title":"Max Conv Count"},"total_ask_count":{"type":"integer","title":"Total Ask Count"},"rate_limits":{"items":{"$ref":"#/components/schemas/TimeWindowRateLimit"},"type":"array","title":"Rate Limits"},"daily_available_time_slots":{"items":{"$ref":"#/components/schemas/DailyTimeSlot"},"type":"array","title":"Daily Available Time Slots"},"available_models":{"items":{"$ref":"#/components/schemas/OpenaiApiChatModels"},"type":"array","title":"Available Models"},"per_model_ask_count":{"$ref":"#/components/schemas/OpenaiApiPerModelAskCount"},"allow_custom_openai_api":{"type":"boolean","title":"Allow Custom Openai Api"},"custom_openai_api_settings":{"$ref":"#/components/schemas/CustomOpenaiApiSettings"}},"type":"object","required":["allow_to_use","max_conv_count","total_ask_count","rate_limits","daily_available_time_slots","available_models","per_model_ask_count","allow_custom_openai_api","custom_openai_api_settings"],"title":"OpenaiApiSourceSettingSchema"},"OpenaiChatFileUploadUrlRequest":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"use_case":{"type":"string","enum":["my_files","multimodal"],"title":"Use Case"}},"type":"object","required":["file_name","file_size","use_case"],"title":"OpenaiChatFileUploadUrlRequest"},"OpenaiChatInterpreterInfo":{"properties":{"kernel_started":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Kernel Started"},"time_remaining_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Remaining Ms"}},"type":"object","title":"OpenaiChatInterpreterInfo"},"OpenaiChatPlugin":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatPluginManifest"},{"type":"null"}]},"categories":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiChatPluginCategory"},"type":"array"},{"type":"null"}],"title":"Categories"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"status":{"anyOf":[{"const":"approved"},{"type":"string"},{"type":"null"}],"title":"Status"},"user_settings":{"anyOf":[{"$ref":"#/components/schemas/OpenaiChatPluginUserSettings"},{"type":"object"},{"type":"null"}],"title":"User Settings"},"oauth_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Client Id"}},"type":"object","title":"OpenaiChatPlugin"},"OpenaiChatPluginCategory":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","title":"OpenaiChatPluginCategory"},"OpenaiChatPluginListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OpenaiChatPlugin"},"type":"array","title":"Items"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","required":["items"],"title":"OpenaiChatPluginListResponse"},"OpenaiChatPluginManifest":{"properties":{"schema_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Version"},"name_for_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name For Model"},"name_for_human":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name For Human"},"description_for_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description For Model"},"description_for_human":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description For Human"},"api":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Api"},"auth":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Auth"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"legal_info_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Info Url"}},"type":"object","title":"OpenaiChatPluginManifest"},"OpenaiChatPluginUserSettings":{"properties":{"is_authenticated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Authenticated"},"is_installed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Installed"}},"type":"object","title":"OpenaiChatPluginUserSettings"},"OpenaiChatResponseUsage":{"properties":{"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"}},"type":"object","title":"OpenaiChatResponseUsage"},"OpenaiWebAccountsCheckAccount":{"properties":{"account":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckAccountDetail"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"entitlement":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckEntitlement"},"last_active_subscription":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Last Active Subscription"},"is_eligible_for_yearly_plus_subscription":{"type":"boolean","title":"Is Eligible For Yearly Plus Subscription"}},"type":"object","required":["account","features","entitlement","is_eligible_for_yearly_plus_subscription"],"title":"OpenaiWebAccountsCheckAccount"},"OpenaiWebAccountsCheckAccountDetail":{"properties":{"account_user_role":{"anyOf":[{"const":"account-owner"},{"type":"string"}],"title":"Account User Role"},"account_user_id":{"type":"string","title":"Account User Id"},"processor":{"type":"object","title":"Processor"},"account_id":{"type":"string","title":"Account Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"is_most_recent_expired_subscription_gratis":{"type":"boolean","title":"Is Most Recent Expired Subscription Gratis"},"has_previously_paid_subscription":{"type":"boolean","title":"Has Previously Paid Subscription"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"profile_picture_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Id"},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url"},"structure":{"anyOf":[{"type":"string","enum":["workspace","personal"]},{"type":"string"}],"title":"Structure"},"plan_type":{"anyOf":[{"type":"string","enum":["team","free"]},{"type":"string"}],"title":"Plan Type"},"is_deactivated":{"type":"boolean","title":"Is Deactivated"},"promo_data":{"type":"object","title":"Promo Data"}},"type":"object","required":["account_user_role","account_user_id","processor","account_id","is_most_recent_expired_subscription_gratis","has_previously_paid_subscription","structure","plan_type","is_deactivated","promo_data"],"title":"OpenaiWebAccountsCheckAccountDetail"},"OpenaiWebAccountsCheckEntitlement":{"properties":{"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"has_active_subscription":{"type":"boolean","title":"Has Active Subscription"},"subscription_plan":{"anyOf":[{"type":"string","enum":["chatgptteamplan","chatgptplusplan"]},{"type":"string"},{"type":"null"}],"title":"Subscription Plan"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"billing_period":{"anyOf":[{"const":"monthly"},{"type":"string"},{"type":"null"}],"title":"Billing Period"}},"type":"object","title":"OpenaiWebAccountsCheckEntitlement"},"OpenaiWebAccountsCheckResponse":{"properties":{"accounts":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiWebAccountsCheckAccount"},"type":"object","title":"Accounts"},"account_ordering":{"items":{"type":"string"},"type":"array","title":"Account Ordering"}},"type":"object","required":["accounts","account_ordering"],"title":"OpenaiWebAccountsCheckResponse"},"OpenaiWebAskLogMeta":{"properties":{"source":{"const":"openai_web","title":"Source"},"model":{"$ref":"#/components/schemas/OpenaiWebChatModels"}},"type":"object","required":["source","model"],"title":"OpenaiWebAskLogMeta"},"OpenaiWebChatGPTSetting":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"is_plus_account":{"type":"boolean","title":"Is Plus Account","default":true},"enable_team_subscription":{"type":"boolean","title":"Enable Team Subscription","default":false},"team_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Account Id"},"chatgpt_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatgpt Base Url"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"wss_proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wss Proxy"},"enable_arkose_endpoint":{"type":"boolean","title":"Enable Arkose Endpoint","default":false},"arkose_endpoint_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arkose Endpoint Base"},"common_timeout":{"type":"integer","minimum":1.0,"title":"Common Timeout","description":"Increase this value if timeout error occurs.","default":20},"ask_timeout":{"type":"integer","minimum":1.0,"title":"Ask Timeout","default":600},"sync_conversations_on_startup":{"type":"boolean","title":"Sync Conversations On Startup","default":false},"sync_conversations_schedule":{"type":"boolean","title":"Sync Conversations Schedule","default":false},"sync_conversations_schedule_interval_hours":{"type":"integer","minimum":1.0,"title":"Sync Conversations Schedule Interval Hours","default":12},"enabled_models":{"items":{"$ref":"#/components/schemas/OpenaiWebChatModels"},"type":"array","title":"Enabled Models","default":["gpt_3_5","gpt_4","gpt_4_plugins"]},"model_code_mapping":{"additionalProperties":{"type":"string"},"type":"object","title":"Model Code Mapping","default":{"gpt_3_5":"text-davinci-002-render-sha","gpt_3_5_mobile":"text-davinci-002-render-sha-mobile","gpt_4":"gpt-4","gpt_4_mobile":"gpt-4-mobile","gpt_4_browsing":"gpt-4-browsing","gpt_4_plugins":"gpt-4-plugins","gpt_4_code_interpreter":"gpt-4-code-interpreter","gpt_4_dalle":"gpt-4-dalle"}},"file_upload_strategy":{"allOf":[{"$ref":"#/components/schemas/OpenaiWebFileUploadStrategyOption"}],"default":"browser_upload_only"},"max_completion_concurrency":{"type":"integer","minimum":1.0,"title":"Max Completion Concurrency","default":1},"disable_uploading":{"type":"boolean","title":"Disable Uploading","default":false}},"type":"object","title":"OpenaiWebChatGPTSetting"},"OpenaiWebChatMessage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"const":"openai_web","title":"Source"},"role":{"anyOf":[{"type":"string","enum":["system","user","assistant","tool"]},{"type":"string"}],"title":"Role"},"author_name":{"anyOf":[{"type":"string","enum":["browser","python"]},{"type":"string"},{"type":"null"}],"title":"Author Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"parent":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent"},"children":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Children"},"content":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageCodeContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageStderrContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent"},{"$ref":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent"}],"discriminator":{"propertyName":"content_type","mapping":{"code":"#/components/schemas/OpenaiWebChatMessageCodeContent","execution_output":"#/components/schemas/OpenaiWebChatMessageExecutionOutputContent","multimodal_text":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContent","stderr":"#/components/schemas/OpenaiWebChatMessageStderrContent","system_error":"#/components/schemas/OpenaiWebChatMessageSystemErrorContent","tether_browsing_display":"#/components/schemas/OpenaiWebChatMessageTetherBrowsingDisplayContent","tether_quote":"#/components/schemas/OpenaiWebChatMessageTetherQuoteContent","text":"#/components/schemas/OpenaiWebChatMessageTextContent"}}},{"type":"null"}],"title":"Content"},"metadata":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadata"},{"$ref":"#/components/schemas/OpenaiApiChatMessageMetadata"}],"discriminator":{"propertyName":"source","mapping":{"openai_api":"#/components/schemas/OpenaiApiChatMessageMetadata","openai_web":"#/components/schemas/OpenaiWebChatMessageMetadata"}}},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","source","role","children"],"title":"OpenaiWebChatMessage"},"OpenaiWebChatMessageCodeContent":{"properties":{"content_type":{"const":"code","title":"Content Type"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageCodeContent"},"OpenaiWebChatMessageExecutionOutputContent":{"properties":{"content_type":{"const":"execution_output","title":"Content Type"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageExecutionOutputContent"},"OpenaiWebChatMessageMetadata":{"properties":{"source":{"const":"openai_web","title":"Source"},"finish_details":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Finish Details"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"},"end_turn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Turn"},"message_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Status"},"recipient":{"anyOf":[{"type":"string","enum":["all","browser","python"]},{"type":"string"},{"type":"null"}],"title":"Recipient"},"fallback_content":{"anyOf":[{},{"type":"null"}],"title":"Fallback Content"},"invoked_plugin":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataPlugin"},{"type":"null"}]},"command":{"anyOf":[{"const":"search"},{"type":"string"},{"type":"null"}],"title":"Command"},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"_cite_metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCite"},{"type":"null"}]},"citations":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCitation"},"type":"array"},{"type":"null"}],"title":"Citations"},"attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAttachment"},"type":"array"},{"type":"null"}],"title":"Attachments"},"status":{"anyOf":[{"const":"finished_successfully"},{"type":"string"},{"type":"null"}],"title":"Status"},"is_complete":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Complete"},"aggregate_result":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAggregateResult"},{"type":"null"}]},"timestamp_":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"null"}],"title":"Timestamp "}},"type":"object","required":["source"],"title":"OpenaiWebChatMessageMetadata"},"OpenaiWebChatMessageMetadataAggregateResult":{"properties":{"status":{"anyOf":[{"type":"string","enum":["failed_with_in_kernel_exception","success"]},{"type":"string"},{"type":"null"}],"title":"Status"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"start_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Time"},"update_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Update Time"},"end_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End Time"},"final_expression_output":{"anyOf":[{},{"type":"null"}],"title":"Final Expression Output"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"in_kernel_exception":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"In Kernel Exception"},"messages":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataAggregateResultMessage"},"type":"array"},{"type":"null"}],"title":"Messages"},"jupyter_messages":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Jupyter Messages"}},"type":"object","title":"OpenaiWebChatMessageMetadataAggregateResult"},"OpenaiWebChatMessageMetadataAggregateResultMessage":{"properties":{"message_type":{"anyOf":[{"type":"string","enum":["image","stream"]},{"type":"string"},{"type":"null"}],"title":"Message Type"},"time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Time"},"sender":{"anyOf":[{"const":"server"},{"type":"string"},{"type":"null"}],"title":"Sender"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"stream_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Name"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","title":"OpenaiWebChatMessageMetadataAggregateResultMessage"},"OpenaiWebChatMessageMetadataAttachment":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mimetype"}},"type":"object","title":"OpenaiWebChatMessageMetadataAttachment"},"OpenaiWebChatMessageMetadataCitation":{"properties":{"start_ix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Ix"},"end_ix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Ix"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCiteData"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMetadataCitation"},"OpenaiWebChatMessageMetadataCite":{"properties":{"citation_format":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Citation Format"},"metadata_list":{"anyOf":[{"items":{"$ref":"#/components/schemas/OpenaiWebChatMessageMetadataCiteData"},"type":"array"},{"type":"null"}],"title":"Metadata List"}},"type":"object","title":"OpenaiWebChatMessageMetadataCite"},"OpenaiWebChatMessageMetadataCiteData":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","title":"OpenaiWebChatMessageMetadataCiteData"},"OpenaiWebChatMessageMetadataPlugin":{"properties":{"http_response_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Response Status"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"plugin_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plugin Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","title":"OpenaiWebChatMessageMetadataPlugin"},"OpenaiWebChatMessageMultimodalTextContent":{"properties":{"content_type":{"const":"multimodal_text","title":"Content Type"},"parts":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextContentImagePart-Output"},{}]},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageMultimodalTextContent"},"OpenaiWebChatMessageMultimodalTextContentImagePart-Input":{"properties":{"asset_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Pointer"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadata"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextContentImagePart"},"OpenaiWebChatMessageMultimodalTextContentImagePart-Output":{"properties":{"asset_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Pointer"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadata"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextContentImagePart"},"OpenaiWebChatMessageMultimodalTextMetadata":{"properties":{"dalle":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebChatMessageMultimodalTextMetadataDalle"},{"type":"null"}]}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextMetadata"},"OpenaiWebChatMessageMultimodalTextMetadataDalle":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"serialization_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serialization Title"}},"type":"object","title":"OpenaiWebChatMessageMultimodalTextMetadataDalle"},"OpenaiWebChatMessageStderrContent":{"properties":{"content_type":{"const":"stderr","title":"Content Type"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageStderrContent"},"OpenaiWebChatMessageSystemErrorContent":{"properties":{"content_type":{"const":"system_error","title":"Content Type"},"name":{"anyOf":[{"const":"tool_error"},{"type":"string"},{"type":"null"}],"title":"Name"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageSystemErrorContent"},"OpenaiWebChatMessageTetherBrowsingDisplayContent":{"properties":{"content_type":{"const":"tether_browsing_display","title":"Content Type"},"result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTetherBrowsingDisplayContent"},"OpenaiWebChatMessageTetherQuoteContent":{"properties":{"content_type":{"const":"tether_quote","title":"Content Type"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTetherQuoteContent"},"OpenaiWebChatMessageTextContent":{"properties":{"content_type":{"const":"text","title":"Content Type"},"parts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["content_type"],"title":"OpenaiWebChatMessageTextContent"},"OpenaiWebChatModels":{"type":"string","enum":["gpt_3_5","gpt_3_5_mobile","gpt_4","gpt_4_mobile","gpt_4_browsing","gpt_4_code_interpreter","gpt_4_plugins","gpt_4_dalle"],"title":"OpenaiWebChatModels"},"OpenaiWebChatStatus":{"type":"string","enum":["asking","queueing","idling"],"title":"OpenaiWebChatStatus"},"OpenaiWebConversationHistoryDocument":{"properties":{"_id":{"type":"string","format":"uuid","title":" Id"},"source":{"const":"openai_web","title":"Source"},"title":{"type":"string","title":"Title"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"update_time":{"type":"string","format":"date-time","title":"Update Time"},"mapping":{"additionalProperties":{"$ref":"#/components/schemas/OpenaiWebChatMessage"},"type":"object","title":"Mapping"},"current_node":{"type":"string","format":"uuid","title":"Current Node"},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/OpenaiWebConversationHistoryMeta"},{"type":"null"}]}},"type":"object","required":["source","title","create_time","update_time","mapping","current_node"],"title":"OpenaiWebConversationHistoryDocument"},"OpenaiWebConversationHistoryMeta":{"properties":{"source":{"const":"openai_web","title":"Source"},"moderation_results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Moderation Results"},"plugin_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plugin Ids"},"gizmo_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gizmo Id"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"},"conversation_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Template Id"}},"type":"object","required":["source"],"title":"OpenaiWebConversationHistoryMeta"},"OpenaiWebConversationSchema":{"properties":{"id":{"type":"integer","title":"Id","default":-1},"source":{"const":"openai_web","title":"Source"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"is_valid":{"type":"boolean","title":"Is Valid","default":true},"current_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Model"},"create_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Create Time"},"update_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Update Time"}},"type":"object","required":["source"],"title":"OpenaiWebConversationSchema"},"OpenaiWebFileUploadStrategyOption":{"type":"string","enum":["server_upload_only","browser_upload_only","browser_upload_when_file_size_exceed"],"title":"OpenaiWebFileUploadStrategyOption"},"OpenaiWebPerModelAskCount":{"additionalProperties":{"type":"integer"},"type":"object","title":"OpenaiWebPerModelAskCount","default":{"gpt_3_5":0,"gpt_3_5_mobile":0,"gpt_4":0,"gpt_4_mobile":0,"gpt_4_browsing":0,"gpt_4_code_interpreter":0,"gpt_4_plugins":0,"gpt_4_dalle":0}},"OpenaiWebSourceSettingSchema":{"properties":{"allow_to_use":{"type":"boolean","title":"Allow To Use"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"max_conv_count":{"type":"integer","title":"Max Conv Count"},"total_ask_count":{"type":"integer","title":"Total Ask Count"},"rate_limits":{"items":{"$ref":"#/components/schemas/TimeWindowRateLimit"},"type":"array","title":"Rate Limits"},"daily_available_time_slots":{"items":{"$ref":"#/components/schemas/DailyTimeSlot"},"type":"array","title":"Daily Available Time Slots"},"available_models":{"items":{"$ref":"#/components/schemas/OpenaiWebChatModels"},"type":"array","title":"Available Models"},"per_model_ask_count":{"$ref":"#/components/schemas/OpenaiWebPerModelAskCount"},"disable_uploading":{"type":"boolean","title":"Disable Uploading"},"use_team":{"type":"boolean","title":"Use Team"}},"type":"object","required":["allow_to_use","max_conv_count","total_ask_count","rate_limits","daily_available_time_slots","available_models","per_model_ask_count","disable_uploading","use_team"],"title":"OpenaiWebSourceSettingSchema"},"RequestLogAggregation":{"properties":{"_id":{"$ref":"#/components/schemas/RequestLogAggregationID"},"count":{"type":"integer","title":"Count"},"user_ids":{"items":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"array","title":"User Ids","default":[]},"avg_elapsed_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Elapsed Ms"}},"type":"object","required":["_id","count"],"title":"RequestLogAggregation"},"RequestLogAggregationID":{"properties":{"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"route_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Path"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"}},"type":"object","title":"RequestLogAggregationID"},"StartUploadRequestSchema":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"},"use_case":{"type":"string","enum":["my_files","multimodal"],"title":"Use Case"}},"type":"object","required":["file_name","file_size","use_case"],"title":"StartUploadRequestSchema"},"StartUploadResponseSchema":{"properties":{"strategy":{"$ref":"#/components/schemas/OpenaiWebFileUploadStrategyOption"},"file_max_size":{"type":"integer","title":"File Max Size"},"upload_file_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileInfoSchema"},{"type":"null"}]}},"type":"object","required":["strategy","file_max_size"],"title":"StartUploadResponseSchema"},"StatsSetting":{"properties":{"ask_stats_ttl":{"type":"integer","title":"Ask Stats Ttl","default":7776000},"request_stats_ttl":{"type":"integer","title":"Request Stats Ttl","default":2592000},"request_stats_filter_keywords":{"items":{"type":"string"},"type":"array","title":"Request Stats Filter Keywords","default":["/status"]}},"type":"object","title":"StatsSetting"},"SystemInfo":{"properties":{"startup_time":{"type":"number","title":"Startup Time"},"total_user_count":{"type":"integer","title":"Total User Count"},"total_conversation_count":{"type":"integer","title":"Total Conversation Count"},"valid_conversation_count":{"type":"integer","title":"Valid Conversation Count"}},"type":"object","required":["startup_time","total_user_count","total_conversation_count","valid_conversation_count"],"title":"SystemInfo"},"TimeWindowRateLimit":{"properties":{"window_seconds":{"type":"integer","title":"Window Seconds","description":"时间窗口大小,单位为秒"},"max_requests":{"type":"integer","title":"Max Requests","description":"在给定时间窗口内最多的请求次数"}},"type":"object","required":["window_seconds","max_requests"],"title":"TimeWindowRateLimit"},"UploadedFileExtraInfo":{"properties":{"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"}},"type":"object","title":"UploadedFileExtraInfo"},"UploadedFileInfoSchema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"original_filename":{"type":"string","title":"Original Filename"},"size":{"type":"integer","title":"Size"},"storage_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage Path"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"upload_time":{"type":"string","format":"date-time","title":"Upload Time"},"uploader_id":{"type":"integer","title":"Uploader Id"},"openai_web_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileOpenaiWebInfo"},{"type":"null"}]},"extra_info":{"anyOf":[{"$ref":"#/components/schemas/UploadedFileExtraInfo"},{"type":"null"}]}},"type":"object","required":["id","original_filename","size","upload_time","uploader_id"],"title":"UploadedFileInfoSchema"},"UploadedFileOpenaiWebInfo":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id"},"use_case":{"anyOf":[{"type":"string","enum":["my_files","multimodal"]},{"type":"string"},{"type":"null"}],"title":"Use Case"},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"上传文件的url, 上传后应清空该字段"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","title":"UploadedFileOpenaiWebInfo"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser","default":false},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified","default":false},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","required":["email","password","username","nickname"],"title":"UserCreate"},"UserRead":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"last_active_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active Time"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"setting":{"$ref":"#/components/schemas/UserSettingSchema-Output"}},"type":"object","required":["id","email","is_active","is_superuser","is_verified","username","nickname","last_active_time","create_time","setting"],"title":"UserRead"},"UserReadAdmin":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"username":{"type":"string","title":"Username"},"nickname":{"type":"string","title":"Nickname"},"last_active_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active Time"},"create_time":{"type":"string","format":"date-time","title":"Create Time"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"setting":{"$ref":"#/components/schemas/UserSettingSchema-Output"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","required":["id","email","is_active","is_superuser","is_verified","username","nickname","last_active_time","create_time","setting"],"title":"UserReadAdmin"},"UserSettingSchema-Input":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"credits":{"type":"number","title":"Credits"},"openai_web_chat_status":{"$ref":"#/components/schemas/OpenaiWebChatStatus"},"openai_web":{"$ref":"#/components/schemas/OpenaiWebSourceSettingSchema"},"openai_api":{"$ref":"#/components/schemas/OpenaiApiSourceSettingSchema"}},"type":"object","required":["credits","openai_web_chat_status","openai_web","openai_api"],"title":"UserSettingSchema"},"UserSettingSchema-Output":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"credits":{"type":"number","title":"Credits"},"openai_web_chat_status":{"$ref":"#/components/schemas/OpenaiWebChatStatus"},"openai_web":{"$ref":"#/components/schemas/OpenaiWebSourceSettingSchema"},"openai_api":{"$ref":"#/components/schemas/OpenaiApiSourceSettingSchema"}},"type":"object","required":["credits","openai_web_chat_status","openai_web","openai_api"],"title":"UserSettingSchema"},"UserUpdate":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"}},"type":"object","title":"UserUpdate"},"UserUpdateAdmin":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"remark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remark"}},"type":"object","title":"UserUpdateAdmin"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyCookie":{"type":"apiKey","in":"cookie","name":"cws_user_auth"}}}} \ No newline at end of file diff --git a/frontend/src/types/json/schemas.json b/frontend/src/types/json/schemas.json index 792852ea..f9923dda 100644 --- a/frontend/src/types/json/schemas.json +++ b/frontend/src/types/json/schemas.json @@ -637,6 +637,17 @@ } ], "title": "Openai Web Multimodal Image Parts" + }, + "arkose_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Arkose Token" } }, "type": "object", diff --git a/frontend/src/types/openapi.ts b/frontend/src/types/openapi.ts index c8dce1c9..508a584b 100644 --- a/frontend/src/types/openapi.ts +++ b/frontend/src/types/openapi.ts @@ -205,16 +205,16 @@ export interface paths { */ post: operations["upload_local_file_to_openai_web_files_local_upload_to_openai_web__file_id__post"]; }; - "/arkose/{path}": { + "/arkose/v2/{path}": { /** * Forward Arkose Request * @description TODO 经过转发,arkose 会报错 "API_REQUEST_ERROR" */ - get: operations["forward_arkose_request_arkose__path__get"]; + get: operations["forward_arkose_request_arkose_v2__path__get"]; }; - "/arkose/api_js_path": { - /** Get Arkose Api Js Path */ - get: operations["get_arkose_api_js_path_arkose_api_js_path_get"]; + "/arkose/info": { + /** Get Arkose Info */ + get: operations["get_arkose_info_arkose_info_get"]; }; } @@ -290,6 +290,8 @@ export interface components { openai_web_attachments?: components["schemas"]["OpenaiWebChatMessageMetadataAttachment"][] | null; /** Openai Web Multimodal Image Parts */ openai_web_multimodal_image_parts?: components["schemas"]["OpenaiWebChatMessageMultimodalTextContentImagePart-Input"][] | null; + /** Arkose Token */ + arkose_token?: string | null; }; /** AskResponse */ AskResponse: { @@ -2983,7 +2985,7 @@ export interface operations { * Forward Arkose Request * @description TODO 经过转发,arkose 会报错 "API_REQUEST_ERROR" */ - forward_arkose_request_arkose__path__get: { + forward_arkose_request_arkose_v2__path__get: { parameters: { path: { path: string; @@ -3004,8 +3006,8 @@ export interface operations { }; }; }; - /** Get Arkose Api Js Path */ - get_arkose_api_js_path_arkose_api_js_path_get: { + /** Get Arkose Info */ + get_arkose_info_arkose_info_get: { responses: { /** @description Successful Response */ 200: { diff --git a/frontend/src/utils/arkose.ts b/frontend/src/utils/arkose.ts index 4af2aeb2..214226f1 100644 --- a/frontend/src/utils/arkose.ts +++ b/frontend/src/utils/arkose.ts @@ -1,12 +1,6 @@ -import { nextTick } from 'vue'; - -import { getArkoseApiJsPath } from '@/api/arkose'; - -import { Message } from './tips'; - declare global { interface Window { - myEnforcement: any; + arkoseEnforcement: any; setupEnforcement: any; } } @@ -47,6 +41,7 @@ function removeScript(scriptId: string) { } export function setupEnforcement( + arkoseUrl: string, config: ArkoseEnforcementConfig, scriptId: string, onLoaded: () => void, @@ -54,53 +49,46 @@ export function setupEnforcement( ): void { removeScript(scriptId); - getArkoseApiJsPath() - .then((response) => { - const { url } = response.data; - const script = document.createElement('script'); - script.setAttribute('data-callback', 'setupEnforcement'); - script.id = scriptId; - script.type = 'text/javascript'; - script.src = url; - script.async = true; - script.defer = true; - if (config.nonce) { - script.setAttribute('data-nonce', config.nonce); - } + const script = document.createElement('script'); + script.setAttribute('data-callback', 'setupEnforcement'); + script.id = scriptId; + script.type = 'text/javascript'; + script.src = arkoseUrl; + script.async = true; + script.defer = true; + if (config.nonce) { + script.setAttribute('data-nonce', config.nonce); + } - const setupEnforcement = (myEnforcement: any) => { - window.myEnforcement = myEnforcement; - window.myEnforcement.setConfig({ - selector: config.selector, - mode: config.mode, - onReady: config.onReady, - onShown: config.onShown, - onShow: config.onShow, - onSuppress: config.onSuppress, - onCompleted: config.onCompleted, - onReset: config.onReset, - onHide: config.onHide, - onError: config.onError, - onFailed: config.onFailed, - }); - }; - window.setupEnforcement = setupEnforcement; + const setupEnforcement = (arkoseEnforcement: any) => { + window.arkoseEnforcement = arkoseEnforcement; + window.arkoseEnforcement.setConfig({ + selector: config.selector, + mode: config.mode, + onReady: config.onReady, + onShown: config.onShown, + onShow: config.onShow, + onSuppress: config.onSuppress, + onCompleted: config.onCompleted, + onReset: config.onReset, + onHide: config.onHide, + onError: config.onError, + onFailed: config.onFailed, + }); + }; + window.setupEnforcement = setupEnforcement; - script.onload = () => { - onLoaded(); - }; - script.onerror = onError; + script.onload = () => { + onLoaded(); + }; + script.onerror = onError; - document.body.appendChild(script); - }) - .catch((error) => { - Message.error('Failed to get Arkose api.js URL. Did you set arkose_endpoint_base in the config?'); - }); + document.body.appendChild(script); } export function removeEnforcement(scriptId: string) { - if (window.myEnforcement) { - delete window.myEnforcement; + if (window.arkoseEnforcement) { + delete window.arkoseEnforcement; } if (window.setupEnforcement) { delete window.setupEnforcement; @@ -109,10 +97,55 @@ export function removeEnforcement(scriptId: string) { } export function runEnforcement() { - console.log('Running enforcement', window.myEnforcement); - if (window.myEnforcement) { - window.myEnforcement.run(); + console.log('Running enforcement', window.arkoseEnforcement); + if (window.arkoseEnforcement) { + window.arkoseEnforcement.run(); } else { console.error('Arkose Enforcment not set up'); } } + +export function getArkoseToken(arkoseUrl: string): Promise { + return new Promise((resolve, reject) => { + const config = { + onReady() { + console.log('Arkose is ready'); + runEnforcement(); + }, + onShown() { + console.log('Arkose is shown'); + }, + onReset() { + console.log('Arkose is reset'); + }, + onSuppress() { + console.log('Arkose is suppressed'); + }, + onCompleted(response) { + console.log('Arkose is completed', response); + resolve(response.token || null); + }, + onError(response) { + const error = response.error?.error || 'null'; + reject(new Error(`Arkose error: ${error}`)); + }, + onFailed() { + reject(new Error('Arkose Failed')); + }, + } as ArkoseEnforcementConfig; + + // 调用 setupEnforcement 并传入配置 + setupEnforcement( + arkoseUrl, + config, + 'arkose-token=fetcher', + () => { + console.log('Arkose API is loaded'); + }, + (ev) => { + console.error('Arkose API loaded error:', ev); + reject(new Error('Arkose API loaded error')); + } + ); + }); +} diff --git a/frontend/src/views/admin/pages/config_manager.vue b/frontend/src/views/admin/pages/config_manager.vue index 24d89fc9..ebdb4c47 100644 --- a/frontend/src/views/admin/pages/config_manager.vue +++ b/frontend/src/views/admin/pages/config_manager.vue @@ -15,7 +15,7 @@ -
+