Bella Assistant API
基于 Spring Boot 的智能助手 API 服务,提供兼容OpenAI Assistants API和Responses API的开源实现,突破原生生态限制,支持灵活切换各大厂商模型,真正实现"一次开发,处处可用"。内置多种工具集成和文件处理功能。
🚀 项目概述
Bella Assistant 是一个企业级的智能助手 API 服务,实现了完整的对话管理、工具调用和流式响应功能。该系统采用先进的执行引擎架构,支持多工具并行执行、智能规划决策和内存管理。
🎯 核心特性
- OpenAI 兼容 API: 完整覆盖 Assistants API(Assistants/Threads/Messages/Runs)
- Responses API 支持: 兼容 OpenAI Responses API(创建支持 SSE 流式)
- 多工具集成: 内置天气、网页搜索、爬虫、图表、RAG/检索、图像生成、语音转写、视觉识别等
- 流式响应: 支持 Server-Sent Events (SSE) 实时流式输出(Run 与 Response 创建)
- 智能规划: 基于模板的规划系统,自动决策执行流程
- 文件处理: S3/MinIO 文件上传存储与引用,支持公共访问 URL
- 内存管理: 自动管理对话上下文长度,支持长对话
- 并行执行: 多工具并行调用,提升响应效率
🛠 技术栈
- 框架: Spring Boot 2.7.18
- 数据库: MySQL 8.0 + JOOQ
- 缓存: Redis (Redisson)
- 存储: AWS S3 / MinIO
- 模板引擎: Pebble Templates
- 文档: Swagger/OpenAPI 3
- 监控: Spring Boot Actuator
- 配置中心: Apollo (可选)
🔧 快速开始
环境要求
- Java 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
1. 克隆项目
git clone https://github.com/yourusername/bella-assistants.git
cd bella-assistants/api
2. 数据库初始化
# 创建数据库
mysql -u root -p -e "CREATE DATABASE bella_assistant CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 执行初始化脚本
mysql -u root -p bella_assistant < sql/01-init-tables.sql
3. 配置文件
修改 src/main/resources/application.yml
中的数据库和 Redis 连接信息:
spring:
datasource:
url: jdbc:mysql://localhost:3306/bella_assistant?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: your_password
redis:
host: localhost
port: 6379
bella:
openapi:
host: http://localhost:8080
assistant:
s3:
bucket-name: bella-assistants
endpoint: http://localhost:9000 # MinIO 示例
access-key: minio
secret-key: minio123
path-style-access: true
4. 构建和运行
# 生成 JOOQ 代码
mvn org.jooq:jooq-codegen-maven:generate
# 编译项目
mvn clean compile
# 运行应 用
mvn spring-boot:run
应用启动后访问:
📖 API 使用
Responses API(创建与查询)
创建响应(支持 SSE 流式):
curl -X POST http://localhost:8087/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"input": [{"role":"user","content":[{"type":"input_text","text":"你好"}]}],
"stream": true
}'
查询响应执行结果:
curl -X GET http://localhost:8087/v1/responses/{response_id}
说明:GET /v1/responses/{response_id}
暂不支持流式返回,创建时 stream=true
可获得 SSE 流。
创建助手
curl -X POST http://localhost:8087/v1/assistants \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"name": "我的助手",
"instructions": "你是一个有用的助手",
"tools": [{"type": "web_search"}]
}'
创建对话线程
curl -X POST http://localhost:8087/v1/threads \
-H "Content-Type: application/json" \
-d '{}'
发送消息并运行
curl -X POST http://localhost:8087/v1/threads/{thread_id}/runs \
-H "Content-Type: application/json" \
-d '{
"assistant_id": "{assistant_id}",
"additional_messages": [{
"role": "user",
"content": "今天天气怎么样?"
}],
"stream": true
}'