git项目

free chatgpt

无需账号即可免费无限次数使用的chatgpt api, 通过Vercel AI Playground实现。

  • 优点: 免费, 无需账号, 支持多个模型。
  • 缺点: 不是很快, 不太稳定。

demo

  • url: https://api.classmatelin.top/api
  • curl体验:
1
2
3
4
5
6
7
curl --silent --location --request POST 'https://api.classmatelin.top/api' \
--header 'Content-Type: application/json' \
--data-raw '{

"model": "openai:gpt-3.5-turbo",
"prompt": "您是一个Rust语言专家,我有问题需要问你。\n\n请问如何写一个hello world程序?"
}'
  • usage
  • vercel单个api仅支持256个token,通过多次请求合并上下文支持超过1024个token。 usage2

安装

  • docker run -itd -p 8080:8080 --name=free-chatgpt classmatelin/free-chatgpt:latest.
  • docker-compose, 见lazy-docker

如需使用proxy, 则添加环境变量:

1
2
3
SOCKS_PROXY: "socks5:x.x.x.x:x"
HTTP_PROXY: "https://x.x.x.x:x"
HTTPS_PROXY: "https://x.x.x.x:x"

例如: docker run -itd -p 8080:8080 -e SOCKS_PROXY="socks5:192.168.123.88:1080" --name=free-chatgpt classmatelin/free-chatgpt:latest.

使用

1
2
3
4
5
6
7
curl --silent --location --request POST 'http://127.0.0.1:8080/api' \
--header 'Content-Type: application/json' \
--data-raw '{

"model": "openai:gpt-3.5-turbo",
"prompt": "您是一个Rust语言专家,我有问题需要问你。\n\n请问如何写一个hello world程序?"
}'

参数说明

参数 必填 描述
model N 默认: openai:gpt-3.5-turbo.
temperature N 默认:1
topP N 默认:1
frequencyPenalty N 默认:0
presence_penalty N 默认:0
stop_sequences N 默认:[]

支持模型

  • anthropic:claude-instant-v1
  • anthropic:claude-v1
  • replicate:replicate/alpaca-7b
  • replicate:stability-ai/stablelm-tuned-alpha-7b
  • huggingface:bigscience/bloomz
  • huggingface:google/flan-t5-xxl
  • huggingface:google/flan-ul2
  • cohere:command-medium-nightly
  • cohere:command-xlarge-nightly
  • openai:gpt-3.5-turbo
  • openai:text-ada-001
  • openai:text-babbage-001
  • openai:text-curie-001
  • openai:text-davinci-002
  • openai:text-davinci-003

默认使用openai:gpt-3.5-turbo

如何运行

  • Python版本目测起码要3.7

  • pip安装运行

    1
    2
    pip install pandora-chatgpt
    pandora
    • 如果你想支持gpt-3.5-turbo模式:
      1
      2
      pip install 'pandora-chatgpt[api]'
      pandora
    • 如果你想启用cloud模式:
      1
      2
      pip install 'pandora-chatgpt[cloud]'
      pandora-cloud
  • 编译运行

    1
    2
    pip install .
    pandora
    • 如果你想支持gpt-3.5-turbo模式:
      1
      2
      pip install '.[api]'
      pandora
    • 如果你想启用cloud模式:
      1
      2
      pip install '.[cloud]'
      pandora-cloud
  • Docker Hub运行

    1
    2
    docker pull pengzhile/pandora
    docker run -it --rm pengzhile/pandora
  • Docker编译运行

    1
    2
    docker build -t pandora .
    docker run -it --rm pandora
  • 输入用户名密码登录即可,登录密码理论上不显示出来,莫慌。

  • 简单而粗暴,不失优雅。

程序参数

  • 可通过 pandora --help 查看。
  • -p--proxy 指定代理,格式:protocol://user:pass@ip:port
  • -t--token_file 指定一个存放Access Token的文件,使用Access Token登录。
  • -s--serverhttp服务方式启动,格式:ip:port
  • -a--api 使用gpt-3.5-turboAPI请求,你可能需要向OpenAI支付费用
  • --tokens_file 指定一个存放多Access Token的文件,内容为{"key": "token"}的形式。
  • --sentry 启用sentry框架来发送错误报告供作者查错,敏感信息不会被发送
  • -v--verbose 显示调试信息,且出错时打印异常堆栈信息,供查错使用。

Docker环境变量

  • PANDORA_ACCESS_TOKEN 指定Access Token字符串。
  • PANDORA_TOKENS_FILE 指定一个存放多Access Token的文件路径。
  • PANDORA_PROXY 指定代理,格式:protocol://user:pass@ip:port
  • PANDORA_SERVERhttp服务方式启动,格式:ip:port
  • PANDORA_API 使用gpt-3.5-turboAPI请求,你可能需要向OpenAI支付费用
  • PANDORA_SENTRY 启用sentry框架来发送错误报告供作者查错,敏感信息不会被发送
  • PANDORA_VERBOSE 显示调试信息,且出错时打印异常堆栈信息,供查错使用。
  • 使用Docker方式,设置环境变量即可,无视上述程序参数

关于 Access Token

  • 使用Access Token方式登录,可以无代理直连。
  • 这个服务 可以帮你安全有效拿到Access Token,无论是否第三方登录。
  • 其中accessToken字段的那一长串内容即是Access Token
  • Access Token可以复制保存,其有效期目前为1个月
  • 不要泄露你的Access Token,使用它可以操纵你的账号。

HTTP服务文档

  • 如果你以http服务方式启动,现在你可以打开一个极简版的ChatGPT了。通过你指定的http://ip:port来访问。
  • 通过http://ip:port/?token=xxx,传递一个Token的名字,可以切换到对应的Access Token
  • API文档见:doc/HTTP-API.md

操作命令

  • 对话界面连敲两次Enter发送你的输入给ChatGPT
  • 对话界面使用/?可以打印支持的操作命令。
  • /title 重新设置当前对话的标题。
  • /select 回到选择会话界面。
  • /reload 重新加载当前会话所有内容,F5你能懂吧。
  • /regen 如果对ChatGPT当前回答不满意,可以让它重新回答。
  • /continueChatGPT继续输出回复的剩余部分。
  • /edit 编辑你之前的一个提问。
  • /new 直接开启一个新会话。
  • /del 删除当前会话,回到会话选择界面。
  • /token 打印当前的Access Token,也许你用得上,但不要泄露。
  • /copy 复制ChatGPT上一次回复的内容到剪贴板。
  • /copy_code 复制ChatGPT上一次回复的代码到剪贴板
  • /clear 清屏,应该不用解释。
  • /version 打印Pandora的版本信息。
  • /exit 退出潘多拉

高阶设置

  • 本部分内容不理解的朋友,请勿擅动!
  • 环境变量 OPENAI_API_PREFIX 可以替换OpenAI Api的前缀https://api.openai.com
  • 环境变量 CHATGPT_API_PREFIX 可以替换ChatGPT Api的前缀https://ai.fakeopen.com
  • 如果你想持久存储DockerPandora产生的数据,你可以挂载宿主机目录至/data
  • 如果你在国内使用pip安装缓慢,可以考虑切换至腾讯的源:pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
  • 镜像同步版本可能不及时,如果出现这种情况建议切换至官方源:pip config set global.index-url https://pypi.org/simple
  • 默认使用sqlite3存储会话数据,如果你希望更换至mysql,可以这么做:
    • 执行pip install PyMySQL安装驱动。
    • 设置环境变量:DATABASE_URI为类似mysql+pymysql://user:pass@localhost/dbname的连接字符串。
  • 环境变量指定OPENAI_EMAIL可以替代登录输入用户名,OPENAI_PASSWORD则可以替代输入密码。
  • 环境变量API_SYSTEM_PROMPT可以替换api模式下的系统prompt

Cloud模式

  • 搭建一个跟官方很像的ChatGPT服务,不能说很像,只能说一样。
  • 该模式使用pandora-cloud启动,前提是你如前面所说安装好了。
  • Docker环境变量:PANDORA_CLOUD 启动cloud模式。
  • 该模式参数含义与普通模式相同,可--help查看。

使用Cloudflare Workers代理

  • 如果你感觉默认的https://ai.fakeopen.com在你那里可能被墙了,可以使用如下方法自行代理。

  • 你需要一个Cloudflare账号,如果没有,可以注册一个。

  • 登录后,点击Workers,然后点击Create a Worker,填入服务名称后点击创建服务

  • 点开你刚才创建的服务,点击快速编辑按钮,贴入下面的代码,然后点击保存并部署

    1
    2
    3
    4
    5
    6
    7
    export default {
    async fetch(request, env) {
    const url = new URL(request.url);
    url.host = 'ai.fakeopen.com';
    return fetch(new Request(url, request))
    }
    }
  • 点击触发器选项卡,可以添加自定义访问域名。

  • 参考高阶设置中的环境变量使用你的服务地址进行替换。

  • https://github.com/linweiyuan/go-chatgpt-api

go-chatgpt-api

Bypass Cloudflare using undetected_chromedriver to use ChatGPT API.


Also support official API (the way which using API key):

  • Chat completion

Use both ChatGPT mode and API mode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
go-chatgpt-api:
container_name: go-chatgpt-api
image: linweiyuan/go-chatgpt-api
ports:
- 8080:8080
environment:
- GIN_MODE=release
- CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
# - NETWORK_PROXY_SERVER=http://host:port
# - NETWORK_PROXY_SERVER=socks5://host:port
depends_on:
- chatgpt-proxy-server
restart: unless-stopped

chatgpt-proxy-server:
container_name: chatgpt-proxy-server
image: linweiyuan/chatgpt-proxy-server
restart: unless-stopped

Use API mode only:

1
2
3
4
5
6
7
8
9
10
11
services:
go-chatgpt-api:
container_name: go-chatgpt-api
image: linweiyuan/go-chatgpt-api
ports:
- 8080:8080
environment:
- GIN_MODE=release
# - NETWORK_PROXY_SERVER=http://host:port
# - NETWORK_PROXY_SERVER=socks5://host:port
restart: unless-stopped

If your IP is blocked, like “Access denied”, try this (with Cloudflare WARP):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
services:
go-chatgpt-api:
container_name: go-chatgpt-api
image: linweiyuan/go-chatgpt-api
ports:
- 8080:8080
environment:
- GIN_MODE=release
- CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
- NETWORK_PROXY_SERVER=socks5://chatgpt-proxy-server-warp:65535
depends_on:
- chatgpt-proxy-server
- chatgpt-proxy-server-warp
restart: unless-stopped

chatgpt-proxy-server:
container_name: chatgpt-proxy-server
image: linweiyuan/chatgpt-proxy-server
environment:
- LOG_LEVEL=INFO
restart: unless-stopped

chatgpt-proxy-server-warp:
container_name: chatgpt-proxy-server-warp
image: linweiyuan/chatgpt-proxy-server-warp
environment:
- LOG_LEVEL=INFO
restart: unless-stopped

Description

What is RDP?

  • RDP (Remote Desktop Protocol) is a network communications protocol developed by Microsoft, which allows users to connect to another computer from a remote location.

How long does this RDP stay active?

  • This RDP stays active for up to 6 hours.

How to use it?

HOW TO USE:

First Step

  1. Press the fork button
  2. Login or signup to ngrok: https://ngrok.com
  3. Now visit here for token: https://dashboard.ngrok.com/auth/your-authtoken

You’ll get token from here. It’ll be needed to the next step.

Second Step

  1. In your forked repo: Go to Settings > Secrets > Action > New Repository Secret
  2. In the name section, enter this text: NGROK_AUTH_TOKEN
  3. In the value section, enter the ngrok token
  4. Then press Add Secret
  5. Now go to Action > AWS (Left Menu) > Run Workflow
  6. Refresh the page and go to AWS > build option
  7. You’ll get IP, Username & Password from Connect to RDP section.

Third Step

  1. Search Remote Desktop Connection from Windows Start Menu and open.
  2. Put IP without tcp:// and enter Username & click Connect.
  3. Later on, put the password for credential/auth.

ss

Screenshots

ss

ss

License

The content of this project itself is licensed under the Creative Commons Attribution 3.0 Unported License, and the underlying source code used to format and display that content is licensed under the MIT License.

Argo-Nezha-Service-Container

准备需要用的变量

image

  • 到 Cloudflare 官方,在相应的域名 DNS 记录里加上客户端上报数据(tcp)和 ssh(可选)的域名,打开橙色云启用 CDN

image

image

  • 到 Cloudflare 官方,选择使用的域名,打开 网络 选项将 gRPC 开关打开

image

面板域名加上 https:// 开头,回调地址再加上 /oauth2/callback 结尾

image

image

image

image

image

PaaS 部署实例

镜像 fscarmen/argo-nezha:latest , 支持 amd64 和 arm64 架构

用到的变量

变量名 是否必须 备注
GH_USER github 的用户名,用于面板管理授权
GH_CLIENTID 在 github 上申请
GH_CLIENTSECRET 在 github 上申请
GH_REPO 在 github 上备份哪吒服务端数据库文件的库
GH_EMAIL github 的邮箱,用于备份的 git 推送到远程库
GH_PAT github 的 PAT
ARGO_JSON https://fscarmen.cloudflare.now.cc 获取的 Argo Json
DATA_DOMAIN 客户端与服务端的通信 argo 域名
WEB_DOMAIN 面板 argo 域名
SSH_DOMAIN ssh 用的 argo 域名
SSH_PASSWORD ssh 的密码,只有在设置 SSH_JSON 后才生效,默认值 password

Koyeb

Deploy to Koyeb

image

image

image

image

image

VPS 部署实例

  • 注意: ARGO_JSON= 后面需要有单引号,不能去掉
  • 如果 VPS 是 IPv6 only 的,请先安装 WARP IPv4 或者双栈: https://github.com/fscarmen/warp
  • 备份目录为当前路径的 dashboard 文件夹

docker 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker run -dit \
--name nezha_dashboard \
--restart always \
-e GH_USER=<填 github 用户名> \
-e GH_EMAIL=<填 github 邮箱> \
-e GH_PAT=<填获取的> \
-e GH_REPO=<填自定义的> \
-e GH_CLIENTID=<填获取的> \
-e GH_CLIENTSECRET=<填获取的> \
-e ARGO_JSON='<填获取的>' \
-e WEB_DOMAIN=<填自定义的> \
-e DATA_DOMAIN=<填自定义的> \
-e SSH_DOMAIN=<填自定义的> \
-e SSH_PASSWORD=<填自定义的> \
fscarmen/argo-nezha

docker-compose 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3.8'
services:
argo-nezha:
image: fscarmen/argo-nezha
container_name: nezha_dashboard
restart: always
environment:
- GH_USER=<填 github 用户名>
- GH_EMAIL=<<填 github 邮箱>
- GH_PAT=<填获取的>
- GH_REPO=<填自定义的>
- GH_CLIENTID=<填获取的>
- GH_CLIENTSECRET=<填获取的>
- ARGO_JSON='<填获取的>'
- WEB_DOMAIN=<填自定义的>
- DATA_DOMAIN=<填自定义的>
- SSH_DOMAIN=<填自定义的>
- SSH_PASSWORD=<填自定义的>

客户端接入

通过gRPC传输,无需额外配置。使用面板给到的安装方式,举例

1
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh install_agent data.seales.nom.za 443 eAxO9IF519fKFODlW0 --tls

SSH 接入

1
<file path>/cloudflared access ssh --hostname ssh.seales.nom.za

image

image

image

自动还原备份

  • 把需要还原的文件名改到 github 备份库里的 README.md,定时服务会每分钟检测更新,并把上次同步的文件名记录在本地 /dbfile 处以与在线的文件内容作比对

下图为以还原文件名为 dashboard-2023-04-23-13:08:37.tar.gz 作示例

image

手动还原备份

  • ssh 进入容器后运行,github 备份库里的 tar.gz 文件名,格式: dashboard-2023-04-22-21:42:10.tar.gz
1
bash /dashboard/restore.sh <文件名>

image

完美搬家

  • 备份原哪吒的 /dashboard 文件夹,压缩备份为 dashboard.tar.gz 文件
1
tar czvf dashboard.tar.gz /dashboard
  • 下载文件并放入私库,这个私库名要与新哪吒 <GH_REPO> 完全一致,并把该库的 README.md 的内容编辑为 dashboard.tar.gz
  • 部署本项目新哪吒,完整填入变量即可。部署完成后,自动还原脚本会每分钟作检测,发现有新的内容即会自动还原,全程约 3 分钟

主体目录文件及说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.
|-- dashboard
| |-- app # 哪吒面板主程序
| |-- argo.json # Argo 隧道 json 文件,记录着使用隧道的信息
| |-- argo.yml # Argo 隧道 yml 文件,用于在一同隧道下,根据不同域名来分流 web, gRPC 和 ssh 协议的作用
| |-- backup.sh # 备份数据脚本
| |-- data
| | |-- config.yaml # 哪吒面板的配置,如 Github OAuth2 / gRPC 域名 / 端口 / 是否启用 TLS 等信息
| | `-- sqlite.db # SQLite 数据库文件,记录着面板设置的所有 severs 和 cron 等信息
| |-- entrypoint.sh # 主脚本,容器运行后执行
| |-- nezha-agent # 哪吒客户端,用于监控本地 localhost
| |-- nezha.csr # SSL/TLS 证书签名请求
| |-- nezha.key # SSL/TLS 证书的私钥信息
| |-- nezha.pem # SSL/TLS 隐私增强邮件
| `-- restore.sh # 还原备份脚本
`-- dbfile # 记录最新的还原或备份文件名