OpenOpenAI 项目介绍
项目简介
OpenOpenAI 项目是一个自托管版的OpenAI新型有状态助手API。其所有的API路由定义和类型都从OpenAI的官方OpenAPI规范中自动生成,这意味着用户只需更改baseURL
即可在官方API和自定义API之间切换。这个特性确保了所有API参数、响应和类型与官方OpenAI API完全兼容,并且能够相对轻松地保持同步。
项目背景
自定义运行完全兼容官方OpenAI助手的能力为用户打开了许多有用的可能性,包括:
- 使用自定义模型的OpenAI助手
- 通过内置的检索工具(即将兼容LangChain和LlamaIndex)实现完全可定制的RAG
- 使用自定义代码解释器
- 进行助手的自托管部署
- 完全控制助手的评估
- 在沙盒环境中开发和测试GPTs
- 在部署到OpenAI的“GPT商店”之前,进行自定义操作的沙盒测试
如果OpenAI“GPT商店”最终在每周一亿活跃用户中获得关注,那么能够可靠地运行、调试和自定义与OpenAI兼容的助手将变得极为重要。
技术栈
OpenOpenAI使用了一系列技术栈来支持其功能:
- 使用Postgres作为主要的数据存储,并通过Prisma进行管理。
- Redis作为异步任务队列的支持存储。
- S3用于存储上传的文件,支持任何与S3兼容的存储提供商。
- Hono用于提供REST API服务。
开发指南
要开始开发,需要满足如下前提条件:
- Node.js 版本需要>=18
- pnpm 版本需要>=8
然后使用以下步骤安装依赖和生成Prisma类型:
pnpm install
pnpm generate
此外,开发者还需要配置环境变量,如Postgres的数据库URL、OpenAI的API Key、Redis的连接信息以及S3的配置信息。
服务架构
该应用由两个主要服务组成:RESTful API服务器和异步任务运行器。这两个服务都是无状态的并可以横向扩展。
在本地运行服务有两种方式,最快的是通过tsx
:
# 启动REST API服务器
npx tsx src/server
# 启动异步任务队列运行器
npx tsx src/runner
示例用法
项目中包含了一些端到端的助手脚本示例,展示了如何在本地和官方API之间切换,并使用相同的OpenAI Node.js客户端运行代码。这些示例包括使用自定义函数和检索工具的完整流程。
待办事项
当前所有的API路由已经过测试并能如预期工作,但仍有一些功能需要完善,包括:
- 添加内置的代码解释器工具支持
- 为检索工具添加对非文本文件的支持
授权协议
OpenOpenAI项目采用MIT许可协议,由Travis Fischer创建。如果您觉得这个项目有用,可以考虑赞助他或在社交媒体上关注他的动态。
通过这种通俗易懂的方式介绍,使用者能够清晰了解OpenOpenAI项目的基本功能和开发步骤,并且能够快速上手进行自定义助手的开发和测试。