# inkeep-2api **Repository Path**: dext7r/inkeep-2api ## Basic Information - **Project Name**: inkeep-2api - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-01 - **Last Updated**: 2025-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
--- ## 📖 我们的哲学 在代码的海洋里,我们不应是随波逐流的孤舟,而应是手握罗盘的船长。`inkeep-2api` 的诞生,源于一个简单的信念:**技术应当为人服务,而非设置障碍**。我们相信,每一次封装、每一次转换,都是在拆除一座高墙,铺设一条坦途。 这个项目不仅是一堆代码,它是我们对"开放、共享、赋能"这一开源精神的致敬。我们希望每一个字符都能激发您的创造力,让您感受到"我来我也行"的喜悦。因为最伟大的创造,往往源于最纯粹的热爱和最自由的探索。来吧,朋友,让我们一起,用代码为这个世界带来一点点美好的改变!💖 --- ## ✨ 核心特性 * ✅ **100% OpenAI 兼容** - 像使用 OpenAI API 一样,无缝对接到任何支持 OpenAI 格式的客户端、应用和工作流中 * 🧠 **内置 PoW 终极求解器** - 自动处理 Inkeep API 独特的 Proof-of-Work 身份验证挑战,开箱即用 * ⚡ **闪电般的高性能** - 基于 FastAPI 和 Uvicorn 构建,采用异步架构,确保最低延迟和最高吞吐量 * 📦 **Docker 一键部署** - 提供极简的 Docker-Compose 配置,一条命令即可启动服务 * 🔧 **完整功能支持** - 完美支持流式响应和工具调用,确保您能体验到 Inkeep AI 的全部能力 * 💖 **纯粹的开源精神** - 遵循 Apache 2.0 协议,完全免费,代码透明 --- ## 🏗️ 架构与原理 ### 问题背景 Inkeep 是一个非常强大的 AI 服务,但它的官方 API 为了安全和控制,采用了一套非标准的验证流程: **工作量证明 (Proof-of-Work, PoW)**:每次与 AI 对话前,客户端必须先从服务器获取一个临时的"数学题",然后进行大量的计算,找到正确的"答案",才能换取一个短暂有效的"通行证"。 这个机制导致了所有标准的 OpenAI 客户端都无法直接调用 Inkeep API。 ### 解决方案 `inkeep-2api` 就像一个聪明的"同声传译" + "数学天才": ``` +----------------+ +-------------------+ +---------------+ | | | | | | | 您的客户端 +----->+ inkeep-2api +----->+ Inkeep API | | (OpenAI格式) | | (转换+PoW求解) | | (原生API) | | | | | | | +----------------+ +-------------------+ +---------------+ ``` #### **第一步:API 格式转换** 当您的客户端发送一个标准的 OpenAI 请求时,`inkeep-2api` 会优雅地接收它,并将其"翻译"成 Inkeep API 能听懂的格式。 #### **第二步:破解 PoW 挑战** 这是整个项目最核心的部分! **大白话解释:** > 想象一下,Inkeep API 是一个有门卫(PoW)的神秘俱乐部。 > 1. `inkeep-2api` 先去敲门,门卫会给它一张纸条,上面写着两样东西:一个**加密目标**和一个**特殊盐值** > 2. 门卫说:"你从 0 开始,一个一个地试数字,把这个数字和盐值拼起来,然后用 SHA-256 这个'神仙搅拌机'搅一下。什么时候搅出来的结果和我的加密目标完全一样,你就成功了!" > 3. 我们的求解器就是这个超级计算器,它会疯狂地从 0、1、2、3... 开始尝试,直到找到那个正确的数字 > 4. 找到后,`inkeep-2api` 把包含正确答案的"通行证"在后续的对话请求中出示给门卫,门卫一看,放行! **技术实现:** ```python def _solve_pow(self, algorithm: str, challenge: str, max_number: int, salt: str) -> int: for number in range(max_number + 1): # 1. 拼接盐值和当前尝试的数字 data_to_hash = f"{salt}{number}".encode('utf-8') # 2. 使用 SHA-256 计算哈希值 h = hashlib.sha256(data_to_hash).hexdigest() # 3. 与服务器给的 challenge 对比 if h == challenge: # 4. 找到了!返回这个神奇的数字 return number ``` #### **第三步:代理流式响应** 当 Inkeep AI 像打字机一样一个字一个字地回复时,`inkeep-2api` 就像一个忠实的信使。它拿到一个字就立刻打包成符合 OpenAI 规范的格式,然后马上通过流式传输送给您。 --- ## 🚀 快速开始 ### 前提条件 - 已安装 Git - 已安装 Docker 和 Docker Compose ### 部署步骤 **第一步:克隆项目** ```bash git clone https://github.com/lzA6/inkeep-2api.git cd inkeep-2api ``` **第二步:配置环境变量** ```bash cp .env.example .env ``` 编辑 `.env` 文件,填入您的配置: ```env # .env API_MASTER_KEY=your_master_key_here # 建议修改为复杂密码 NGINX_PORT=8088 # 服务端口 INKEEP_BEARER_TOKEN="Bearer your_token_here" # 替换成您自己的 Token ``` **如何获取 INKEEP_BEARER_TOKEN?** 1. 在浏览器中打开任何使用 Inkeep AI 的网站 2. 打开开发者工具(按 F12) 3. 切换到"网络(Network)"选项卡 4. 向 AI 提个问题,比如"你好" 5. 找到名为 `chat/completions` 的请求 6. 在请求头中找到 `Authorization` 字段,复制整个值 **第三步:启动服务** ```bash docker-compose up --build -d ``` 等待几分钟,服务将在 `http://localhost:8088` 上运行! **第四步:测试服务** ```bash curl -X POST http://localhost:8088/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer your_master_key_here" \ -d '{ "model": "inkeep-qa-expert", "messages": [{"role": "user", "content": "你好,你是谁?"}], "stream": true }' ``` 如果一切正常,您将看到来自 Inkeep AI 的流式响应!🎉 --- ## 💡 使用场景 ### 带来的好处 - **赋能现有生态** - 让 Inkeep AI 能够被庞大的 OpenAI 生态系统所用 - **降低开发门槛** - 开发者无需再为复杂的 PoW 验证而烦恼 - **提升用户体验** - 提供与原生 OpenAI 服务完全一致的流畅体验 ### 适用场景 - **个人开发者** - 将 Inkeep AI 集成到自己的 Bot 或个人知识库中 - **AI 工具玩家** - 在第三方 UI 客户端中配置并使用 Inkeep - **小型团队** - 快速构建内部原型,使用 Inkeep AI 驱动客服、文档查询等工具 --- ## 📊 项目状态 ### 已完成功能 - [x] 核心 API 转换功能 - [x] 健壮的 PoW 自动求解器 - [x] 完整的流式响应支持 - [x] Docker 化一键部署 - [x] 兼容工具调用 ### 待改进功能 - [ ] 非流式响应支持 - [ ] 更精细的错误映射 - [ ] 多用户支持 - [ ] 测试覆盖率提升 ### 发展计划 - **v5.1** - 实现完整的非流式响应模式,增加测试覆盖 - **v5.2** - 设计 Token 管理系统,引入 Web UI 管理面板 - **v6.0** - 探索插件化架构,支持更多非标准 API --- ## 🛠️ 技术架构 ``` 📂 inkeep-2api/ ├── 📄 .env # 本地配置文件 ├── 📄 .env.example # 配置模板 ├── 📄 Dockerfile # Docker 镜像构建 ├── 📄 docker-compose.yml # 服务编排 ├── 📄 LICENSE # Apache 2.0 许可证 ├── 📄 main.py # FastAPI 应用入口 ├── 📄 nginx.conf # Nginx 配置 ├── 📄 requirements.txt # Python 依赖 └── 📂 app/ # 核心代码 ├── 📂 core/ # 核心配置 │ └── 📄 config.py # Pydantic 配置模型 ├── 📂 providers/ # API 代理实现 │ ├── 📄 base_provider.py # 抽象基类 │ └── 📄 inkeep_provider.py # Inkeep 实现 └── 📂 utils/ # 工具模块 └── 📄 sse_utils.py # SSE 格式化工具 ``` ### 扩展性设计 项目采用插件化架构,核心是 `app/providers/base_provider.py` 定义的抽象基类。如果您想支持其他 API,只需要: 1. 新建一个 provider 文件 2. 创建类继承自 `BaseProvider` 3. 实现 `chat_completion` 等核心方法 4. 在配置中选择加载对应的 Provider --- ## 🤝 贡献指南 我们欢迎每一位开发者的贡献! 1. **Fork** 本仓库 2. 基于 `main` 分支创建 **Feature Branch** 3. 进行修改和开发 4. 提交 **Pull Request** 并详细描述修改内容 ### 可贡献的方向 - **新的 Provider** - 支持其他非标准 API - **中间件开发** - 请求速率限制、详细日志等 - **性能优化** - 提升 PoW 求解效率 - **文档完善** - 补充使用示例和最佳实践 --- ## ⚠️ 注意事项 - **依赖中转** - 增加了一个网络中转层,理论上会带来微小延迟 - **Token 安全** - 请确保您的服务器安全,妥善保管 Token - **服务条款** - 请遵守 Inkeep 的服务条款,合理使用 API --- ## 📜 许可证 本项目基于 **Apache 2.0 License** 开源。详情请见 [LICENSE](https://github.com/lzA6/inkeep-2api/blob/main/LICENSE) 文件。 --- **如果您觉得这个项目对您有帮助,请不要吝啬您的 ⭐️ Star!这不仅是对我们的认可,更是我们持续维护和创造的动力!** **Happy Coding!** 😄