{"id":13645669,"url":"https://github.com/libli/chat","last_synced_at":"2025-04-21T14:32:00.975Z","repository":{"id":154236389,"uuid":"620752084","full_name":"libli/chat","owner":"libli","description":"有用户管理功能的ChatGPT API透明代理后台","archived":false,"fork":false,"pushed_at":"2024-07-18T06:27:01.000Z","size":30,"stargazers_count":113,"open_issues_count":0,"forks_count":29,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-11-09T18:43:21.316Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-29T09:55:17.000Z","updated_at":"2024-07-18T06:27:05.000Z","dependencies_parsed_at":"2024-01-14T10:01:05.748Z","dependency_job_id":"89440e90-e271-4ebf-9605-cbfa8bf51203","html_url":"https://github.com/libli/chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libli%2Fchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libli%2Fchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libli%2Fchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libli%2Fchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libli","download_url":"https://codeload.github.com/libli/chat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250070250,"owners_count":21369842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:02:39.385Z","updated_at":"2025-04-21T14:32:00.673Z","avatar_url":"https://github.com/libli.png","language":"Go","readme":"# ChatGPT api 服务\n\n## 特性\n\n1. 适配所有能用\"自定义 OpenAI 域名\"的客户端或网页\n2. 不需要把 OpenAI 的 API key 放在客户端或网页上，使得 API key 不会被盗用\n3. 服务器部署在可调用 OpenAI SDK 的地区，所有客户端免翻墙\n4. 支持用户管理功能，为每个用户分配独立的 key，团队使用\n5. 统计每个用户的 API 调用次数\n6. 支持 SSE\n7. 支持多 TOKEN 负载均衡\n\n## 部署\n\n1. 创建配置文件 config.yaml，配置以下内容：\n\n```yaml\nGinPort: 8080\nOpenAIKey: \"sk-****\"\n# OpenAIKey:\n#   - \"sk-****\"\n#   - \"sk-****\"\nDBName: \"chat.db\"\nInitUsers:\n  - Username: userAAA\n    Token: abcd\n  - Username: userBBB\n    Token: bbcd\n  - Username: user111\n    Token: ddcd\n```\n\nUsername 和 Token 就是你想分配的用户名和密码。用户用该配置文件里的 Token 即可在各种客户端中调用 OpenAI 的 API。\n\n2. 创建一个空的数据库文件 chat.db:\n\n```bash\ntouch chat.db\n```\n\n3. 运行 docker:\n\n```bash\ndocker run --name=chatapi -d \\\n  --restart=unless-stopped -p 8080:8080 \\\n  -v /root/chat/config.yaml:/web/config.yaml \\\n  -v /root/chat/chat.db:/web/chat.db \\\n  libli/chat:latest\n```\n\n把上面命令中的 `/root/chat` 替换为你的配置文件和数据库文件所在的目录。\n\n4. 后续可用 sqlite3 管理数据库，确保已经安装 sqlite3 客户端，例如：\n\n```bash\nsqlite3 chat.db\nsqlite\u003e select * from users;\nsqlite\u003e insert into users (username, token) VALUES ('***', '****');\n```\n\n4. 如果需要支持 https 协议，使用 nginx 反向代理即可。参考如下配置（支持 SSE）：\n\n```nginx\nserver {\n    listen       80;\n    listen       [::]:80;\n    server_name  api.exapmle.com;\n    return       301 https://$host$request_uri;\n}\n\n# Settings https.\nserver {\n    listen       443 ssl http2;\n    listen       [::]:443 ssl http2;\n    server_name  api.exapmle.com;\n\n    ssl_certificate             \"/etc/pki/nginx/api.exapmle.com.crt\";\n    ssl_certificate_key         \"/etc/pki/nginx/private/api.exapmle.com.key\";\n    ssl_session_cache           shared:SSL:1m;\n    ssl_session_timeout         10m;\n    ssl_ciphers                 HIGH:!aNULL:!MD5;\n    ssl_prefer_server_ciphers   on;\n\n    add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\n\n    location / {\n        proxy_pass       http://127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_http_version 1.1;\n        proxy_set_header Connection \"\";\n        chunked_transfer_encoding off;\n        proxy_buffering off;\n    }\n}\n```\n\n## 一些用法\n\n### OpenCat 客户端 (iOS Mac)\n\nOpenCat 虽然有了团队版，但是划在收费版功能。可以直接利用自定义 OpenAI 域名的功能达到团队免费使用。\n\n1. 在自己的服务器部署本服务，OpenAI Key 只在自己服务器上保存，不会泄露。\n2. 在 OpenCat 客户端中，设置 API key 为 config.yaml 中自己设置的 Token。\n3. 在 OpenCat 客户端中，设置自定义 OpenAI 域名为自己的服务器地址，例如：https://api.exapmle.com 点击“自定义 API 域名”下的“验证”即可。\n\n### ChatBox (Windows, Mac, Linux)\n\nhttps://github.com/Bin-Huang/chatbox\n\n在设置中填入 API 域名为本服务部署的地址，API key 为自己在 sqlite 中分配的密钥。\n\n目前 chatbox 只支持 https 的 API 域名，所以需要在 nginx 中配置 https。\n\n### ChatBoost（Android）\n\n设置自定义 API 地址为本服务部署的地址，客户端上的 OpenAI API 密钥设为自己在 sqlite 中分配的密钥。\n\n### ChatGPT Box（浏览器插件）\n\nhttps://chrome.google.com/webstore/detail/chatgptbox/eobbhoofkanlmddnplfhnmkfbnlhpbbo\n\n在“高级”中的“自定义的 ChatGPT 网页 API 地址”修改为部署本 docker 的域名，“API 模式”后面的框中输入本 Docker 中自己在 sqlite3 中插入的 key。\n\n### ChatGPT-Next-web（网页版）\n\nhttps://github.com/Yidadaa/ChatGPT-Next-Web\n\n部署该 docker 时参考如下：\n\n```\ndocker run --name=chatgpt -d --restart=unless-stopped \\\n  -p 3000:3000 \\\n  -e OPENAI_API_KEY=\"\" \\\n  -e BASE_URL=\"http://myapi.com\" \\\n  yidadaa/chatgpt-next-web:latest\n```\n\n把 BASE_URL 替换为部署本 docker 的服务器域名，OPENAI_API_KEY 留空，不需要填。\n这样用户访问网页版时，直接使用自己分配的 KEY 即可。\n\n### xcatliu/chatgpt-next (网页版)\n\nhttps://github.com/xcatliu/chatgpt-next\n\n部署该 docker 时参考如下：\n\n```\ndocker run --name=chatgpt-next -d --restart=unless-stopped \\\n  -p 3000:3000 \\\n  -e CHATGPT_NEXT_API_HOST=\"http://api.example.com:8080\" \\\n  xcatliu/chatgpt-next:latest\n```\n\n## 开源协议\n\nMIT，随便拿去用，记得多帮我宣传宣传。\n\n如果觉得帮助到你了，欢迎请[我喝一杯咖啡](https://github.com/libli/buy-me-a-coffee) ☕️。\n","funding_links":[],"categories":["Openai"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibli%2Fchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibli%2Fchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibli%2Fchat/lists"}