[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-77950":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},77950,"ChatAPI","zyf2007\u002FChatAPI","zyf2007","把你自己装进 OpenAI responses API 里面，扮演 Assistant 和用户聊天（","https:\u002F\u002Fapi.kirari.fun\u002F",null,"Python",218,22,1,7,0,4,37,178,25,80.59,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-06-12 04:01:22","# ChatAPI\n[[Telegram](https:\u002F\u002Ft.me\u002Fhutao_space)] |  [[LinuxDO](https:\u002F\u002Flinux.do\u002Fu\u002Fhutao)] | [[BiliBili](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV11PLg6LEbB)]  \n本项目是一个让 各类 AI 客户端用 OpenAI Responses 风格接口调用人类的项目，并带有一个 Web 控制台界面，可以帮你组装 Tool Calling 请求，或设置自动回复规则。  \n通过这个项目，你可以让别人把你配置到 Agent 或 聊天机器人中，然后自己扮演 AI 助手被调用。\n也可以在自己开发 Agent 的时候作为 Mock LLM 使用。\n\n- 后端：Flask\n- 前端：React + Vite + Ant Design\n- 数据存储：SQLite\n\n默认提供：\n\n- 基于 `.env` 的用户名密码登录，支持可选 TOTP\n- 支持 `\u002Fv1\u002Fchat\u002Fcompletions`、`\u002Fv1\u002Fresponses`、`\u002Fmessages` 三套接口\n- 会话列表与消息持久化能力，便于调试和查看上下文\n- 自动化回复输出能力，支持定时流式发送、循环输出，条件判断自动回复等场景\n- 可选 ntfy 消息推送\n\n## 1. 部署\n### 无需 Nginx 一键部署\n#### 构建前端\n\n```bash\ncd .\u002Ffrontend\nnpm i\nnpm run build\n```\n\n首页默认显示当前访问来源作为 API 基址；如需在构建时指定其他基址，可在构建前设置 `VITE_HOMEPAGE_API_BASE_URL`。\n\n#### 设置.env\n```env\nCHATAPI_USERNAME=用户名\nCHATAPI_PASSWORD=密码\n# 可选；如果不填，后端会在首次启动时自动生成并写入数据库配置表\n# CHATAPI_SESSION_SECRET=随机字符串\n\nCHATAPI_DB_PATH=.\u002Fdata\u002Fchatapi.sqlite3\nCHATAPI_DATA_DIR=.\u002Fdata\n\nCHATAPI_HOST=0.0.0.0\nCHATAPI_PORT=443\nCHATAPI_WEB_DIST_DIR=..\u002Ffrontend\u002Fdist\nCHATAPI_TLS_CERT_FILE=..\u002Fcerts\u002Fserver.crt\nCHATAPI_TLS_KEY_FILE=..\u002Fcerts\u002Fserver.key\n```\n\n#### 启动Flask\n\n```bash\ncd .\u002Fbackend\nuv sync\nuv run main.py\n```\n### dev部署\n\n#### 后动后端\n\n```bash\ncd .\u002Fbackend\nuv sync\nuv run main.py\n```\n\n#### 启动前端\n\n```bash\ncd .\u002Ffrontend\nnpm i\nnpm run dev\n```\n\n## 3. 配置环境变量\n\n先复制配置模板：\n\n```bash\ncp .env.example .env\n```\n\n至少需要修改以下配置：\n\n```env\nCHATAPI_USERNAME=admin\nCHATAPI_PASSWORD=change-me\n# 可选；如果不填，后端会在首次启动时自动生成并写入数据库配置表\n# CHATAPI_SESSION_SECRET=change-this-session-secret\n```\n\n如果部署配置保存在项目目录之外，可以设置外部 env 文件路径：\n\n```env\nCHATAPI_ENV_FILE=\u002Fpath\u002Fto\u002Fchatapi.env\n```\n\n外部 env 文件与项目内 `.env` 使用相同格式，已存在的进程环境变量不会被文件中的值覆盖。\n\n建议同时确认以下配置：\n\n```env\nCHATAPI_DB_PATH=.\u002Fdata\u002Fchatapi.sqlite3\nCHATAPI_DATA_DIR=.\u002Fdata\nCHATAPI_HOST=0.0.0.0\nCHATAPI_PORT=5000\nCHATAPI_CORS_ORIGINS=http:\u002F\u002Flocalhost:5173,http:\u002F\u002F127.0.0.1:5173\n```\n\n登录后可以在「系统设置」里启用并保存 `API Key`、站点标题、ntfy 地址、消息限流和 TOTP，这些不再需要放在 `.env` 里。\n\n可选配置：\n\n```env\n# 直接让 Flask 对外托管前端静态文件（例如 Vite build 后的 dist）\n# CHATAPI_WEB_DIST_DIR=.\u002Ffrontend\u002Fdist\n\n# 直接由 Flask 提供 HTTPS 时使用\n# CHATAPI_TLS_CERT_FILE=.\u002Fcerts\u002Fserver.crt\n# CHATAPI_TLS_KEY_FILE=.\u002Fcerts\u002Fserver.key\n\n# 邮件发送可选配置：\n# CHATAPI_EMAIL_FROM=noreply@kirari.fun\n# CHATAPI_SMTP_HOST=smtp.example.com\n# CHATAPI_RESEND_API_KEY=re_xxxxxxxxx\n# CHATAPI_BREVO_API_KEY=YOUR_BREVO_API_KEY\n# CHATAPI_TENCENTCLOUD_SECRET_ID=AKIDxxxxxxxxxxxxxxxx\n# CHATAPI_TENCENTCLOUD_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n# CHATAPI_TENCENTCLOUD_SES_REGION=ap-guangzhou\n# 普通 SES 账号还需要模板 ID；模板数据会由程序动态生成。\n# CHATAPI_TENCENTCLOUD_TEMPLATE_ID=100091\n```\n\n## 4. Nginx 反向代理示例\n\n以下示例假设：\n\n- 前端静态文件目录：`\u002Fpath\u002Fto\u002FChatAPI\u002Ffrontend\u002Fdist`\n- 后端地址：`http:\u002F\u002F127.0.0.1:5000`\n- 域名：`chat.example.com`\n\n```nginx\nserver {\n    listen 80;\n    server_name chat.example.com;\n\n    root \u002Fpath\u002Fto\u002FChatAPI\u002Ffrontend\u002Fdist;\n    index index.html;\n\n    location \u002F {\n        try_files $uri $uri\u002F \u002Findex.html;\n    }\n\n    location \u002Fapi\u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:5000\u002Fapi\u002F;\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_set_header X-Forwarded-Proto $scheme;\n    }\n\n    location \u002Fv1\u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:5000\u002Fv1\u002F;\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_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\n如果要启用 HTTPS，建议由 Nginx 处理证书，而不是直接使用 Flask 内置服务。\n\n如果不想额外部署 Nginx，也可以直接让 Flask 对外同时提供 API 和前端静态文件：\n\n```env\nCHATAPI_WEB_DIST_DIR=.\u002Ffrontend\u002Fdist\n```\n\n设置后：\n\n- `\u002Fapi\u002F*` 和 `\u002Fv1\u002F*` 继续走后端接口\n- 其他路径会从该目录下直接返回静态文件\n- 当请求路径不存在且目录中包含 `index.html` 时，会自动回退到 `index.html`，可用于前端单页应用路由\n\n\n\n调用示例：  \n\n```bash\ncurl https:\u002F\u002F127.0.0.1:5000\u002Fv1\u002Fresponses \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H 'Authorization: Bearer sk-i-love-you-hutao' \\\n  -d '{\n    \"model\": \"胡桃酱\",\n    \"input\": [\n      {\n        \"type\": \"message\",\n        \"role\": \"user\",\n        \"content\": [\n          {\n            \"type\": \"input_text\",\n            \"text\": \"在这里打字就可以和胡桃酱本人对话！\"\n          }\n        ]\n      }\n    ],\n    \"stream\": true\n  }'\n\n```\n\nAnthropic Messages 兼容接口使用 `\u002Fmessages`，例如：\n\n```bash\ncurl https:\u002F\u002F127.0.0.1:5000\u002Fmessages \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H 'Authorization: Bearer sk-i-love-you-hutao' \\\n  -d '{\n    \"model\": \"claude-sonnet-4-20250514\",\n    \"max_tokens\": 1024,\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": \"你好\"\n      }\n    ],\n    \"stream\": true\n  }'\n```\n","ChatAPI 是一个让各类AI客户端通过OpenAI风格的接口调用人类的项目，支持用户扮演AI助手与他人进行交互。项目基于Python开发，后端使用Flask框架，前端采用React + Vite + Ant Design构建，数据存储则依赖于SQLite。它提供了三套标准API接口，包括会话管理和消息持久化功能，以及自动化回复输出能力，如定时流式发送、循环输出和条件判断自动回复等。此外，还支持ntfy消息推送服务。此工具非常适合需要模拟或测试AI聊天机器人场景的应用，同时也可作为开发者在创建自己的Agent时使用的Mock LLM。",2,"2026-06-11 03:56:17","CREATED_QUERY"]