非常感谢您有兴趣为 Open Assistant Api 做出贡献。
要为此项目做出贡献请遵循 "fork and pull request" 工作流程,不要直接向仓库提交代码。
您可以先从解决现有 Issues 开始。
本项目使用 Ruff 和 Black 做代码检查和格式化。
建议在推送到存储库之前运行 make lint 检查代码格式,运行 make format 格式化代码。
/open-assistant-api/
├── app
│   ├── api                                     ----- api控制器目录
│   │   ├── v1                                  ----- api v1 版本
│   │   ├── deps.py                             ----- 依赖注入项
│   │   └── routes.py                           ----- 路由注册表
│   ├── core                                    ----- 核心功能模块
│   │   ├── doc_loaders                         ----- 文档加载器
│   │   ├── runner                              ----- runner运行要逻辑
│   │   └── tools                               ----- Tools 实现
│   ├── exceptions                              ----- 自定义异常类
│   ├── models                                  ----- db模型目录
│   ├── providers                               ----- 核心服务提供者
│   │   ├── middleware                          ----- 自定义中间件
│   │   ├── app_provider.py                     ----- 注册应用的全局事件、中间件等
│   │   ├── celery_app.py                       ----- 任务调度器
│   │   ├── database.py                         ----- 数据库连接
│   │   ├── handle_exception.py                 ----- 异常处理器
│   │   ├── logging_provider.py                 ----- 集成loguru日志系统
│   │   ├── pagination_provider.py              ----- 分页插件
│   │   ├── response.py                         ----- 定义http统一响应体
│   │   ├── route_provider.py                   ----- 注册路由文件routes/*
│   │   └── storage.py                          ----- 对象存储
│   ├── schemas                                 ----- 数据模型
│   ├── services                                ----- 业务逻辑层
│   ├── libs                                    ----- 工具库
│   │   └── util.py
│   └── tasks                                   ----- 任务
│       └── run_task.py
├── config                                      ----- 配置目录
│   ├── celery.py                               ----- 调度器配置
│   ├── config.py                               ----- app配置
│   ├── database.py                             ----- 数据库配置
│   ├── storage.py                              ----- 对象存储配置
│   ├── llm.py                                  ----- 大模型相关配置
│   └── logging.py                              ----- 日志配置
├── migrations                                  ----- 数据库迁移
├── main.py                                     ----- app/api启动入口
├── poetry.lock
├── pyproject.toml                              ----- 项目依赖管理
├── logs                                        ----- 日志目录
├── volumes                                     ----- docker数据卷
├── tests                                       ----- 测试目录
│   ├── e2e                                     ----- 端到端测试
│   └── unit                                    ----- 单元测试
├── docker                                      ----- docker镜像相关
├── docs                                        ----- 文档
└── worker.py                                   ----- 调度任务启动入口
开发环境:
安装 poetry
curl -sSL https://install.python-poetry.org | python3 -
# 或者
pip install poetry
安装依赖:
poetry install --no-root
创建配置文件
cp .env.example .env
配置 openai api_key 和 bing search key
# openai api_key
OPENAI_API_KEY=<openai_api_key>
# bing search key
BING_SUBSCRIPTION_KEY=<bing_subscription_key>
docker compose -f docker-compose.middleware.yml up -d
首次启动和版本升级时需要运行以下命令数据库生成数据库表:
alembic upgrade head
python main.py
celery -A worker.celery_app worker -c 1 --loglevel DEBUG
Api Base URL: http://127.0.0.1:8086/api/v1
接口文档地址: http://127.0.0.1:8086/docs
代码提交前请先运行以下命令检查代码规范。
make lint
make format
alembic revision --autogenerate
alembic upgrade head
docker build -t open-assistant-api .
docker compose up -d