GavinGoo / pandora-web

复活原潘多拉,使其作为能使用OAI前端代理+自定义API的Web面板
GNU General Public License v2.0
172 stars 60 forks source link
chatgpt chatgpt-api openai


潘多拉Web · PandoraWeb

复活吧 我的Pandora

感谢原作者: Zhile(始皇) 源码在 Master 分支

一睹为快

login_new

chat_new

login_old

PandoraNeverDie

相关特性

API模型支持:

配置说明

程序参数:

--email: 您的 OpenAI 邮箱。
--password: 您的 OpenAI 密码(不建议直接设置密码,可仅配置Email然后在终端输入密码)。
--mfa: 您的 OpenAI MFA认证码。
--proxy_api: OpenAI 前端的代理地址。
--login_url: 获取Access Token的地址。
--site_password: 网站密码。如果以server模式启动,必须设置此项。
-p/--proxy: 使用代理。格式为 protocol://user:pass@ip:port。
--gpt4: 从 "api.json" 文件中选择 GPT-4 的请求模型。
--gpt35: 从 "api.json" 文件中选择 GPT-3.5 的请求模型。
--history_count: 为 API 携带的历史消息数量。默认为4。
--best_history: 当历史消息数量大于设定数量时,自动携带第一组历史对话。
--true_del: 【真正】从数据库中删除对话,而非将其设为隐藏(is_visible=0)。
-l/--local: 仅在本地运行,不使用 OAI 服务。
--timeout: 请求超时,默认60s,单位(秒)。
--oai_only: 仅使用 OAI 服务。
-t/--token_file: 指定Access Token文件。
--tokens_file: 指定一个存放多Access Token的文件路径。
--config_dir: 指定配置目录存放Access Token的access_token.dat文件、API配置文件api.json、本地对话数据库文件local_conversation.db、以二进制文件(Blob对象)作为响应的文生图模型图片保存目录text2img、登录会话目录sessions(默认跟随系统,docker则位于/data)
-s/--server: 作为一个代理服务器启动。格式为 ip:port,默认为 0.0.0.0:8008。
--threads: server模式的线程数,默认为8。
-a/--api: 使用gpt-3.5-turbo 聊天 API。注意:OpenAI 将会向您收费。
--login_local: 使用本地环境登录,你可能需要一个合适的代理IP以避免账号被风控!
-v/--verbose: 显示调试信息,且出错时打印异常堆栈信息,供查错使用。
--old_login: 使用老Pandora登陆页面。
--old_chat: 使用老Pandora聊天页面。
--file_size: 限制上传文件的大小。单位:MB。
--type_whitelist: 限制上传文件的后缀名(白名单),以英文逗号","分隔。
--type_blacklist: 限制上传文件的后缀名(黑名单),以英文逗号","分隔。
--file_access: 是否允许外网直接访问文件(如果对话希望以url携带文件,则需要True启用)。默认:False。
--device_id: 官方OAI3.5对话时请求头参数"Oai-Device-Id", 若不配置则从用户浏览器的请求头中获取。多人共享【建议配置】。
--debug: 打印发送消息的请求体(前500字符)与收到的第一条响应。
-i/--isolate: 隔离对话模式(隔离码长度不少于四位)。
--isolate_master: 管理员隔离码。此隔离码允许管理者查看所有隔离对话。

环境变量:

  1. OPENAI_EMAIL, OPENAI_PASSWORD,OPENAI_MFA_CODE: OAI账密相关(不建议直接设置密码,可仅配置Email然后在终端输入密码)。
  2. OPENAI_API_PREFIX: OpenAI 前端的代理地址。
  3. OPENAI_LOGIN_URL: 获取Access Token的地址。
  4. PANDORA_ACCESS_TOKEN: 指定Access Token文件。
  5. PANDORA_TOKENS_FILE: 指定一个存放多Access Token的文件路径。
  6. USER_CONFIG_DIR: 指定配置目录存放Access Tokenaccess_token.dat文件、API配置文件api.json、本地对话数据库文件local_conversation.db、以二进制文件(Blob对象)作为响应的文生图模型图片保存目录text2img、登录会话目录sessions(默认跟随系统,docker则位于/data)
  7. PANDORA_SERVER: 以http服务方式启动,格式:ip:port,默认:0.0.0.0:8008
  8. PANDORA_SITE_PASSWORD: 站点密码,如果以server模式启动该值为必填。
  9. OPENAI_MFA_CODE: OpenAI 的MFA认证码,可以通过命令行参数 --mfa 设置。
  10. PANDORA_PROXY: 代理地址,可以通过命令行参数 --proxy 设置。
  11. PANDORA_GPT4_MODEL: 从 "api.json" 文件中选择GPT-4模型。
  12. PANDORA_GPT35_MODEL: 从 "api.json" 文件中选择GPT-3.5模型。
  13. PANDORA_HISTORY_COUNT: 设置历史消息的数量,默认为4
  14. PANDORA_BEST_HISTORY: 当历史消息数量大于设定数量时,自动携带第一组历史对话。
  15. PANDORA_TRUE_DELETE: 真正从数据库中删除对话,而非将其设为隐藏(is_visible=0)。
  16. PANDORA_LOCAL_OPTION: 仅API模式,不使用 OAI 服务。
  17. PANDORA_TIMEOUT: 请求超时,默认60s,单位(秒)。
  18. PANDORA_OAI_ONLY: 仅使用 OAI 服务。
  19. PANDORA_OLD_LOGIN: 使用老Pandora登陆页面。
  20. PANDORA_OLD_CHAT: 使用老Pandora聊天页面。
  21. PANDORA_FILE_SIZE: 限制上传文件的大小。单位:MB。
  22. PANDORA_TYPE_WHITELIST: 限制上传文件的后缀名(白名单),以英文逗号","分隔。
  23. PANDORA_TYPE_BLACKLIST: 限制上传文件的后缀名(黑名单),以英文逗号","分隔。
  24. PANDORA_FILE_ACCESS: 是否允许外网直接访问文件(如果对话希望以url携带文件,则需要True启用)。默认:False
  25. OPENAI_DEVICE_ID: 官方OAI3.5对话时请求头参数"Oai-Device-Id", 若不配置则从用户浏览器的请求头中获取。多人共享建议配置
  26. PANDORA_API: 使用gpt-3.5-turboAPI请求,你可能需要向OpenAI支付费用
  27. PANDORA_LOGIN_LOCAL: 使用本地环境登录,你可能需要一个合适的代理IP以避免账号被风控!
  28. PANDORA_VERBOSE: 显示调试信息,且出错时打印异常堆栈信息,供查错使用。
  29. PANDORA_THREADS: server模式的线程数,默认为8
  30. PANDORA_CLOUD: Pandora Cloud模式(原参数,不知还可用否?)。
  31. PANDORA_SERVERLESS: vercel部署请启用,将api.json指向项目根目录的data文件夹(请不要将密钥直接填写到文件)
  32. PANDORA_DEBUG: 可设置True以打印发送消息的请求体(前500字符)与收到的第一条响应
  33. PANDORA_ISOLATION: 可设置True以启用隔离对话模式(隔离码长度不少于四位)。
  34. PANDORA_ISOLATION_MASTERCODE: 管理员隔离码。此隔离码允许管理者查看所有隔离对话。

使用Docker仅配置环境变量即可,无视上述程序参数

如果想实现老Pandora无登录功能点开即用,将--site_password/PANDORA_SITE_PASSWORD设置为I_KNOW_THE_RISKS_AND_STILL_NO_SITE_PASSWORD即可(这可能是个危险设置,请注意)。

API配置:

使用api.json文件配置,默认位于用户配置目录,可通过环境变量USER_CONFIG_DIR或程序参数config_dir设置

默认用户配置目录:

Mac OS X: same as user_data_dir (Python appdirs模块的说明) Unix: ~/.config/Pandora-ChatGPT # or in $XDG_CONFIG_HOME, if defined Win : C:\Users\<User Name>\AppData\Local\Pandora-ChatGPT\Pandora-ChatGPT

无论是否设置,启动时都会把路径打印出来

以下是参考模板:

{
    "glm-4v": {
        "slug": "glm-4v",
        "url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
        "auth": "<智谱AI Token>",
        "title": "ChatGLM-4V",
        "description": "ChatGLM-4V",
        "upload": true,
        "file_base64": true,
        "history_count": 10,
        "max_tokens": 8191 
    },
    "kimi": {
        "slug": "kimi",
        "url": "http://172.17.0.1:8000/v1/chat/completions",
        "auth": "<Your Refresh Token>",
        "title": "Kimi",
        "description": "Kimi",
        "upload": true,
        "max_tokens": 8191 
    },
    "coze": {
        "slug": "coze",
        "url": "<Coze-Discord-Proxy Url>",
        "auth": "<Coze-Discord-Proxy AUTH>",
        "title": "Coze(可联网)",
        "description": "https://coze.com",
        "max_tokens": 8191 
    },
    "glm-4": {
        "slug": "glm-4",
        "url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
        "auth": "<智谱AI Token>",
        "title": "ChatGLM-4",
        "description": "ChatGLM-4",
        "max_tokens": 8191 
    },
    "cogview-3": {
        "slug": "cogview-3",
        "url": "https://open.bigmodel.cn/api/paas/v4/images/generations",
        "auth": "<智谱AI Token>",
        "title": "CogView(文生图|收费)",
        "description": "刚开始没留意这玩意不是消耗token额度,现在倒欠3块大洋还没还",
        "max_tokens": 8191 
    },
    "gemini-pro": {
        "slug": "gemini-pro",
        "url": "https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=<Your Google AI Key>",
        "title": "Gemini-Pro",
        "description": "Gemini-Pro",
        "max_tokens": 8191 
    },
    "llama-2-7b-chat-fp16": {
        "slug": "llama-2-7b-chat-fp16",
        "url": "https://api.cloudflare.com/client/v4/accounts/<Your Cloudflare Account ID>/ai/run/@cf/meta/llama-2-7b-chat-fp16",
        "auth": "<Your Cloudflare AI Key>",
        "title": "llama-2-7b-chat-fp16",
        "description": "llama-2-7b-chat-fp16",
        "max_tokens": 8191 
    },
    "stable-diffusion-xl-base-1.0": {
        "slug": "stable-diffusion-xl-base-1.0",
        "url": "https://api.cloudflare.com/client/v4/accounts/<Your Cloudflare Account ID>/ai/run",
        "image_model": "@cf/stabilityai/stable-diffusion-xl-base-1.0",
        "prompt_model": "glm-4",
        "prompt": "You are a professional ai prompt generator, now please seriously realize the scene and atmosphere of the text and generate an AI drawing prompt about '<Prompt>', please don't show any Chinese, if there is any Chinese, it will be automatically translated to English. Finally, you can output the main content of the prompt directly.",
        "auth": "<Your Cloudflare AI Key>",
        "title": "cfai(文生图)",
        "description": "cfai(文生图)",
        "max_tokens": 8191 
    },
    "gpt-4": {
        "slug": "gpt-4",
        "url": "<Your API Url>",
        "auth": ["鸡", "你", "太", "美"],
        "prompt": "You use the GPT-4 version of OpenAI’s GPT models.Respond in the following locale: zh-cn.",
        "title": "GPT-4",
        "description": "GPT-4",
        "max_tokens": 8191 
    }
}

参数说明:

键值: 可为同模型不同来源而作区分

slug: 请求时的模型名 (请与键值保持一致)

url: 模型请求的url

auth: 模型请求的验证头(智谱家的与某模型会自动处理(slug需包含关键词比如glm),直接填入你的Key即可)无则不写auth这个键,比如Gemini。轮询请参照gpt-4模型填写

proxy: 指定该模型使用的网络代理(优先级最高)(如果使用Docker且网络模式非host,指向本机时请使用172.17/18.0.1或内网IP),可设置为""意味着该模型不走代理

prompt: 你的内置Prompt

title: 前端页面上的模型显示名称

description: 老Pandora页面上的模型描述

history_count: 设置历史消息的数量,优先级最高

upload: true 启用文件上传,如需以Url携带请配置file_access参数/PANDORA_FILE_ACCESS环境变量为True

file_base64: true 文件以Base64编码

max_tokens: (不知道啥玩意,官方有我也就顺便带上了)

特殊参数:

prompt_model: 指定文本模型生成/优化绘图Prompt(使用非流式请求),此时prompt支持使用"<Prompt>"作为原Prompt的占位符,当占位符不存在时则自动将原Prompt追加到文末(如果文生图模型非Cloudflare AI 即url非"https://api.cloudflare.com/client/v4/accounts/<Your Cloudflare Account ID>/ai/run",则不支持Cloudflare AI的文本模型)

image_model: 仅由用于Cloudflare AI文生图模型,填入Model ID。格式:"@cf/***/<model>",参见:"https://developers.cloudflare.com/workers-ai/models/<model>"

如何运行

其他说明

更新日志

0601 (请务必更新!!):

0516:

0507:

0505:

0412:

0404:

0401:

0328:

0324: