{"id":27633645,"url":"https://github.com/lianjiatech/bella-openapi","last_synced_at":"2026-04-01T19:22:03.546Z","repository":{"id":288247653,"uuid":"955791101","full_name":"LianjiaTech/bella-openapi","owner":"LianjiaTech","description":"Bella OpenAPI是一个提供了丰富的AI调用能力的API网关，可类比openrouter，与之不同的是除了提供聊天补全(chat-completion)能力外，还提供了文本向量化(text-embedding)、语音识别(ASR)、语音合成(TTS)、文生图、图生图等多种AI能力，同时集成了计费、限流和资源管理功能。且集成的所有能力都经过了大规模生产环境的验证。","archived":false,"fork":false,"pushed_at":"2026-03-04T11:00:19.000Z","size":5325,"stargazers_count":207,"open_issues_count":34,"forks_count":43,"subscribers_count":22,"default_branch":"develop","last_synced_at":"2026-03-04T17:59:17.816Z","etag":null,"topics":["ai-gateway","azure-openai","bedrock","deepseek","llm","llm-gateway","llmops","openai","openai-proxy","volcengine"],"latest_commit_sha":null,"homepage":"https://api.bella.top","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LianjiaTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-27T07:49:25.000Z","updated_at":"2026-03-04T11:00:31.000Z","dependencies_parsed_at":"2025-05-13T09:25:44.922Z","dependency_job_id":"57b3d50e-17cd-4b47-bc7c-561ae48d5550","html_url":"https://github.com/LianjiaTech/bella-openapi","commit_stats":null,"previous_names":["lianjiatech/bella-openapi"],"tags_count":224,"template":false,"template_full_name":null,"purl":"pkg:github/LianjiaTech/bella-openapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Fbella-openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Fbella-openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Fbella-openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Fbella-openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LianjiaTech","download_url":"https://codeload.github.com/LianjiaTech/bella-openapi/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Fbella-openapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30326878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ai-gateway","azure-openai","bedrock","deepseek","llm","llm-gateway","llmops","openai","openai-proxy","volcengine"],"created_at":"2025-04-23T18:18:34.972Z","updated_at":"2026-03-10T06:01:02.865Z","avatar_url":"https://github.com/LianjiaTech.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bella OpenAPI\n\n[![Static Badge](https://img.shields.io/badge/docs-more-yellow?style=flat-square)](https://doc.bella.top/)\n[![Static Badge](https://img.shields.io/badge/wiki-deep-blue?style=flat-square)](https://deepwiki.com/LianjiaTech/bella-openapi)\n\n中文 | [English](./README_EN.md) | [了解更多](https://doc.bella.top/) | [加入社区贡献](./contributor-guide.md)\n\n\n\nBella OpenAPI是一个提供了丰富的AI调用能力的API网关，可类比openrouter，与之不同的是除了提供聊天补全(chat-completion)能力外，还提供了文本向量化(text-embedding)、语音识别(ASR)、语音合成(TTS)、文生图、图生图等多种AI能力，同时集成了计费、限流和资源管理功能。且集成的所有能力都经过了大规模生产环境的验证。\n\n- 我们部署了线上体验版的Bella OpenAPI，您可以登录访问[Bella OpenAPI](https://api.bella.top)\n- 如需快速启动并体验服务，请阅读：[快速启动](#快速启动)\n- 想了解详细的环境变量配置和启动部署细节，请阅读：[配置详情](https://doc.bella.top/docs/bella-openapi/configuration-details) 和 [启动与部署详情](https://doc.bella.top/docs/bella-openapi/startup-deployment-details)\n\n## 目录\n\n- [核心功能](#核心功能)\n  - [AI能力点](#AI能力点)\n  - [元数据管理](#元数据管理)\n  - [统一登录服务](#统一登录服务)\n  - [计费与限流](#计费与限流)\n- [系统优势](#系统优势)\n  - [大规模的生产环境验证](#大规模的生产环境验证)\n  - [丰富的能力](#丰富的能力)\n  - [优秀的特性](#优秀的特性)\n  - [统一的元数据管理](#统一的元数据管理)\n  - [高性能缓存设计](#高性能缓存设计)\n  - [高性能日志消费框架](#高性能日志消费框架)\n  - [高效的分布式限流](#高效的分布式限流)\n  - [统一的错误处理](#统一的错误处理)\n  - [安全可靠](#安全可靠)\n  - [可扩展性](#可扩展性)\n  - [Java友好的技术栈](#java友好的技术栈)\n  - [便捷的体验](#便捷的体验)\n- [快速启动](#快速启动)\n- [常见问题与解决方案](#常见问题与解决方案)\n- [相关文档](#相关文档)\n\n## 核心功能\n\n### AI能力点\n\n- **文本处理**\n  - **聊天补全**：提供对话补全能力，同时支持OpenAI的ChatCompletion API和Anthropic的Message API\n  - **文本嵌入**：生成文本的向量表示，用于语义搜索和相似度计算\n\n- **语音服务**\n  - **实时语音识别**：支持流式语音识别和一句话语音识别，适用于实时交互场景\n  - **文件转写**：支持上传音频文件进行离线转写\n  - **语音合成**：将文本转换为自然语音输出，支持流式\n  - **实时对话**：支持用户通过麦克风进行实时语音输入，系统自动识别语音内容，调用大模型生成回复，并将回复内容转换为语音输出\n\n- **图像服务**\n  - **图生图**：对图片进行编辑，生成新的图片（敬请期待）\n  - **文生图**：根据文本生成图片\n\n### 元数据管理\n\n- **多层级结构**：采用Category-Endpoint-Model-Channel四层结构\n  - **Category（类别）**：API服务的顶层分类，如语音服务、文本服务等\n  - **Endpoint（端点）**：具体的API功能入口，如实时语音识别、聊天补全等\n  - **Model（模型）**：支持各个端点的AI模型，如不同的语音识别模型、大语言模型等等\n  - **Channel（通道）**：具体的服务提供方实现，包含供应商、协议和配置信息\n\n- **灵活的路由机制**：基于用户请求和配置，智能选择最合适的服务通道\n- **可视化管理界面**：提供直观的Web界面进行元数据配置和管理\n\n### 统一登录服务\n\n- **多种认证方式**：支持OAuth 2.0、CAS单点登录和API Key认证\n- **会话管理**：基于Redis的分布式会话存储\n- **用户权限**：细粒度的权限控制和管理\n\n### 计费与限流\n\n- **API Key管理**：支持层级化的API Key结构\n- **配额控制**：按月度配额管理API使用量\n- **限流机制**：基于Redis的分布式限流实现\n\n## 系统优势\n\n### 大规模的生产环境验证\n\n- **极高的稳定性**：已服务于贝壳找房全线业务，服务日均调用量1.5亿，经受住了大规模的生产环境考验\n- **丰富的业务场景**：业务场景覆盖广泛，可以适应生产环境中的绝大多数情况\n- **广泛的使用场景**：已服务于贝壳找房全线业务，经受住了大规模的生产环境考验\n\n### 丰富的能力\n\n- **全面的AI能力**：支持聊天补全、文本向量化、语音识别（实时、离线、一句话）、语音合成（支持流式）、文生图、图生图等多种AI能力\n- **Mock能力**：内置能力点mock功能，可用于单元测试和压力测试\n\n### 优秀的特性\n\n- **Function Call支持**：为不支持functioncall的LLM扩展了functioncall特性\n- **路由策略**：优秀的路由策略，确保高峰期能力点渠道的最大化处理能力\n- **请求队列**：支持队列特性，确保高峰期请求有序处理\n- **备用模型**：支持备用模型机制（敬请期待），提高服务可用性\n- **最大等待时间**：支持设置最大等待时间（敬请期待），优化用户体验\n\n### 统一的元数据管理\n\n- **灵活的多层级结构**：采用Category-Endpoint-Model-Channel四层结构，使系统具有高度的可扩展性和灵活性\n- **集中式配置**：所有API服务的配置集中管理，便于运维和监控\n- **动态路由**：基于用户请求和配置，智能选择最合适的服务通道，提高服务质量\n\n### 高性能缓存设计\n\n- **多级缓存架构**：结合Redisson、Caffeine和JetCache，实现本地缓存与分布式缓存的协同工作\n- **高吞吐量**：本地缓存减少网络开销，分布式缓存确保集群一致性\n- **自动失效机制**：智能的缓存失效策略，平衡数据一致性和性能\n\n\n### 高性能日志消费框架\n\n- **基于Disruptor的异步处理**：采用高性能的Disruptor环形缓冲区实现日志事件的异步处理，大幅降低系统延迟\n- **多处理器并行架构**：支持多个事件处理器并行工作，同时处理计费、指标收集和限流控制\n- **无锁设计**：使用无锁队列和SleepingWaitStrategy策略，减少线程竞争，提高吞吐量\n- **优雅的异常处理**：集成专用的异常处理器，确保日志处理错误不影响主业务流程\n\n### 高效的分布式限流和渠道性能监控\n\n- **低耦合性**：基于日志实现，与主逻辑解耦，各个能力点只需按照规则上报日志即可自定义性能监测的维度\n- **基于Lua脚本的原子操作**：使用Redis+Lua脚本实现分布式限流，保证原子性和一致性\n- **滑动窗口算法**：采用精确的滑动窗口算法实现限流和监控，减少存储资源使用\n- **多级缓存设计**：结合本地缓存和分布式缓存，优化限流性能，减少网络开销\n- **并发请求控制**：对于试用APIKEY，精确跟踪并控制每个API Key的并发请求数，防止资源过度占用\n- **自动过期机制**：智能设置过期时间，避免资源泄漏，确保系统长期稳定运行\n\n### 统一的错误处理\n\n- **一致的用户体验**：统一的错误提示格式和展示方式\n- **细粒度错误分类**：区分服务不可用和其他错误类型，提供更精准的反馈\n- **友好的错误提示**：针对不同错误类型使用不同的视觉样式，提高用户体验\n\n### 安全可靠\n\n- **多层次认证**：支持OAuth 2.0、CAS单点登录和API Key认证\n- **细粒度权限控制**：基于角色的访问控制，确保资源安全\n- **完善的审计日志**：记录关键操作，便于追踪和问题排查\n- **生产环境验证**：经过大规模的生产环境的验证，稳定可靠\n\n### 可扩展性\n\n- **微服务架构**：基于Spring Boot的微服务设计，便于横向扩展\n- **容器化部署**：Docker和Docker Compose支持，简化部署和扩展\n- **第三方服务集成**：灵活的通道机制，轻松集成各种AI服务提供商\n\n### Java友好的技术栈\n\n- **Spring Boot生态**：基于Spring Boot框架，对Java开发者友好\n- **丰富的工具链**：集成了常用的Java开发工具和库\n- **完善的文档**：提供详细的API文档和开发指南\n\n### 便捷的体验\n\n- **提供免费的云端体验服务**：您可以登录访问[Bella OpenAPI](https://api.bella.top)直接体验所有能力\n- **docker启动无需编译**：提供了便捷的启动方式，通过启动脚本自动拉取镜像，无需编译\n- **便捷的启动配置**：启动脚本提供了丰富的启动参数，您可以根据需要配置，无需修改配置文件\n\n\n## 快速启动\n\n本项目使用Docker Compose来启动所有服务，包括后端API、前端Web、MySQL和Redis。\n\n### 前提条件\n\n- 安装 [Docker](https://www.docker.com/get-started)\n- 安装 [Docker Compose](https://docs.docker.com/compose/install/)\n- 执行目录必须在bella-openapi项目的根目录下\n\n### 启动服务\n\n如果本地不存在镜像，会拉取远端镜像\n\n```bash\n./start.sh \n./start.sh --github-oauth CLIENT_ID:CLIENT_SECRET --google-oauth CLIENT_ID:CLIENT_SECRET --server URL （通过启动参数配置oauth登录服务和服务域名）\n```\n注意：如果需要配置用户登录，方法见：[OAuth配置](https://doc.bella.top/docs/bella-openapi/configuration-details#oauth配置)\n\n- 启动服务后会自动检查是否存在系统ak，如果不存在则执行生成系统ak和管理员授权\n- 如果不想在启动时进行管理员授权（仍会检查系统ak是否需要生成），可以使用`--skip-auth`参数：\n\n```bash\n./start.sh --skip-auth\n```\n\n常用选项:\n- `-b, --build`: 修改代码后重新构建服务\n- `--github-oauth CLIENT_ID:CLIENT_SECRET`: 配置GitHub OAuth登录\n- `--google-oauth CLIENT_ID:CLIENT_SECRET`: 配置Google OAuth登录\n- `--server URL`: 配置服务域名\n- `--skip-auth`: 跳过管理员授权流程\n\n更多详细的启动选项和配置说明，请参阅 [启动与部署详情](https://doc.bella.top/docs/bella-openapi/startup-deployment-details)。\n\n## 常见问题与解决方案\n\n### 1. 前端使用development环境时运行启动脚本编译失败\n\nnext.js在dev环境做了预加载相关的优化，如果一定需要使用dev环境，推荐使用next.dev单独启动web服务\n\n### 2. 初始化并启动系统，清除原有数据（开发、测试环境）\n\n1. 删除数据库：`docker exec -it bella-openapi-mysql mysql -uroot -p123456 -e \"drop database bella_openapi;\"` (如非默用户名和密码，请替换为您的用户名和密码)\n2. 停止服务：`docker-compose down`\n3. 删除mysql数据：`rm -rf ./mysql`\n4. 删除redis数据：`rm -rf ./redis`\n5. 重新构建并启动：`./start.sh -b`\n\n## 相关文档\n\n- [配置详情](https://doc.bella.top/docs/bella-openapi/configuration-details) - 详细介绍环境变量配置、数据库配置、缓存配置、Apollo配置和登录服务配置\n- [启动与部署详情](https://doc.bella.top/docs/bella-openapi/startup-deployment-details) - 详细介绍启动服务、环境变量配置、服务管理和系统初始化等内容\n\n---\n*最后更新: 2025-03-31*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flianjiatech%2Fbella-openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flianjiatech%2Fbella-openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flianjiatech%2Fbella-openapi/lists"}