基于 Spring Boot 的智能助手 API 服务,提供兼容OpenAI Assistants API和Responses API的开源实现,突破原生生态限制,支持灵活切换各大厂商模型,真正实现"一次开发,处处可用"。内置多种工具集成和文件处理功能。
Bella Assistant 是一个企业级的智能助手 API 服务,实现了完整的对话管理、工具调用和流式响应功能。该系统采用先进的执行引擎架构,支持多工具并行执行、智能规划决策和内存管理。
- OpenAI 兼容 API: 完全兼容 OpenAI Assistant API 规范
- 多工具集成: 内置天气查询、网页搜索、图表生成、RAG 检索等工具
- 流式响应: 支持 Server-Sent Events (SSE) 实时流式输出
- 智能规划: 基于模板的规划系统,自动决策执行流程
- 文件处理: 支持文件上传、存储和引用
- 内存管理: 自动管理对话上下文长度,支持长对话
- 并行执行: 多工具并行调用,提升响应效率
- 框架: 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+
git clone https://github.com/yourusername/bella-assistants.git
cd bella-assistants/api
# 创建数据库
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
修改 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
# 生成 JOOQ 代码
mvn org.jooq:jooq-codegen-maven:generate
# 编译项目
mvn clean compile
# 运行应用
mvn spring-boot:run
应用启动后访问:
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
}'
src/main/java/com/ke/assistant/
├── controller/ # REST API 控制器
├── service/ # 业务逻辑服务层
├── core/ # 核心执行引擎
│ ├── run/ # 运行执行器
│ ├── plan/ # 智能规划系统
│ ├── tools/ # 工具系统
│ ├── ai/ # AI 模型调用
│ ├── memory/ # 内存管理
│ └── file/ # 文件处理
├── db/ # 数据访问层
└── configuration/ # 配置类
- 创建运行: 客户端创建线程和运行请求
- 上下文构建: 组装执行上下文(消息、工具、文件)
- 智能规划: 规划器决定下一步动作(LLM 调用、工具执行、完成)
- 并行执行: 运行执行器协调 AI 服务和工具执行
- 流式输出: 实时 SSE 流式响应给客户端
- 状态管理: 管理运行状态转换和错误处理
- 实现
ToolHandler
接口:
@Component
public class MyToolHandler implements ToolHandler {
@Override
public String getType() {
return "my_tool";
}
@Override
public ToolResult handle(ToolContext context) {
// 工具逻辑实现
return ToolResult.success("结果");
}
}
- 在
application.yml
中添加配置:
bella:
assistant:
tools:
my_tool:
enabled: true
config:
api_url: "https://api.example.com"
- 在
ToolFetcher
中注册工具处理器
# 1. 修改 MySQL 数据库结构
# 2. 重新生成 JOOQ 代码
mvn org.jooq:jooq-codegen-maven:generate
# 3. 更新相应的 Repository 方法
# 运行所有测试
mvn test
# 运行特定测试类
mvn test -Dtest=AssistantControllerTest
# 构建镜像
docker build -t bella-assistant .
# 运行容器
docker run -d \
--name bella-assistant \
-p 8087:8087 \
-e SPRING_PROFILES_ACTIVE=prod \
bella-assistant
配置项 | 说明 | 默认值 |
---|---|---|
server.port |
服务端口 | 8087 |
bella.assistant.tools.*.enabled |
工具开关 | true |
bella.s3.endpoint |
S3 存储端点 | - |
bella.assistant.max-context-length |
最大上下文长度 | 32000 |
应用提供以下监控端点:
/actuator/health
- 健康检查/actuator/metrics
- 应用指标/actuator/prometheus
- Prometheus 格式指标
工具类型 | 功能描述 | 配置键 |
---|---|---|
web_search |
网页搜索 | bella.assistant.tools.web_search |
weather |
天气查询 | bella.assistant.tools.weather |
chart_bar |
柱状图生成 | bella.assistant.tools.chart |
chart_line |
折线图生成 | bella.assistant.tools.chart |
chart_pie |
饼图生成 | bella.assistant.tools.chart |
rag |
文档检索 | bella.assistant.tools.rag |
image_generate |
图像生成 | bella.assistant.tools.image_generate |
read_files |
文件读取 | - |
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m '添加某个特性'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
如果遇到问题,请:
Built with ❤️ by Bella Team