diff --git a/README.en.md b/README.en.md new file mode 100644 index 00000000..469cf634 --- /dev/null +++ b/README.en.md @@ -0,0 +1,150 @@ +
+ +![new-api](/web/public/logo.png) + +# New API + +πŸ₯ Next Generation Large Language Model Gateway and AI Asset Management System + +Calcium-Ion%2Fnew-api | Trendshift + +

+ + license + + + release + + + docker + + + docker + + + GoReportCard + +

+
+ +## πŸ“ Project Description + +> [!NOTE] +> This is an open-source project developed based on [One API](https://github.com/songquanpeng/one-api) + +> [!IMPORTANT] +> - Users must comply with OpenAI's [Terms of Use](https://openai.com/policies/terms-of-use) and relevant laws and regulations. Not to be used for illegal purposes. +> - This project is for personal learning only. Stability is not guaranteed, and no technical support is provided. + +## ✨ Key Features + +1. 🎨 New UI interface (some interfaces pending update) +2. 🌍 Multi-language support (work in progress) +3. 🎨 Added [Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy) interface support, [Integration Guide](Midjourney.md) +4. πŸ’° Online recharge support, configurable in system settings: + - [x] EasyPay +5. πŸ” Query usage quota by key: + - Works with [neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool) +6. πŸ“‘ Configurable items per page in pagination +7. πŸ”„ Compatible with original One API database (one-api.db) +8. πŸ’΅ Support per-request model pricing, configurable in System Settings - Operation Settings +9. βš–οΈ Support channel **weighted random** selection +10. πŸ“ˆ Data dashboard (console) +11. πŸ”’ Configurable model access per token +12. πŸ€– Telegram authorization login support: + 1. System Settings - Configure Login Registration - Allow Telegram Login + 2. Send /setdomain command to [@Botfather](https://t.me/botfather) + 3. Select your bot, then enter http(s)://your-website/login + 4. Telegram Bot name is the bot username without @ +13. 🎡 Added [Suno API](https://github.com/Suno-API/Suno-API) interface support, [Integration Guide](Suno.md) +14. πŸ”„ Support for Rerank models, compatible with Cohere and Jina, can integrate with Dify, [Integration Guide](Rerank.md) +15. ⚑ **[OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime/integration)** - Support for OpenAI's Realtime API, including Azure channels + +## Model Support +This version additionally supports: +1. Third-party model **gps** (gpt-4-gizmo-*) +2. [Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy) interface, [Integration Guide](Midjourney.md) +3. Custom channels with full API URL support +4. [Suno API](https://github.com/Suno-API/Suno-API) interface, [Integration Guide](Suno.md) +5. Rerank models, supporting [Cohere](https://cohere.ai/) and [Jina](https://jina.ai/), [Integration Guide](Rerank.md) +6. Dify + +You can add custom models gpt-4-gizmo-* in channels. These are third-party models and cannot be called with official OpenAI keys. + +## Additional Configurations Beyond One API +- `GENERATE_DEFAULT_TOKEN`: Generate initial token for new users, default `false` +- `STREAMING_TIMEOUT`: Set streaming response timeout, default 60 seconds +- `DIFY_DEBUG`: Output workflow and node info to client for Dify channel, default `true` +- `FORCE_STREAM_OPTION`: Override client stream_options parameter, default `true` +- `GET_MEDIA_TOKEN`: Calculate image tokens, default `true` +- `GET_MEDIA_TOKEN_NOT_STREAM`: Calculate image tokens in non-stream mode, default `true` +- `UPDATE_TASK`: Update async tasks (Midjourney, Suno), default `true` +- `GEMINI_MODEL_MAP`: Specify Gemini model versions (v1/v1beta), format: "model:version", comma-separated +- `COHERE_SAFETY_SETTING`: Cohere model [safety settings](https://docs.cohere.com/docs/safety-modes#overview), options: `NONE`, `CONTEXTUAL`, `STRICT`, default `NONE` + +## Deployment +> [!TIP] +> Latest Docker image: `calciumion/new-api:latest` +> Default account: root, password: 123456 +> Update command: +> ``` +> docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR +> ``` + +### Requirements +- Local database (default): SQLite (Docker deployment must mount `/data` directory) +- Remote database: MySQL >= 5.7.8, PgSQL >= 9.6 + +### Docker Deployment +### Using Docker Compose (Recommended) +```shell +# Clone project +git clone https://github.com/Calcium-Ion/new-api.git +cd new-api +# Edit docker-compose.yml as needed +# Start +docker-compose up -d +``` + +### Direct Docker Image Usage +```shell +# SQLite deployment: +docker run --name new-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest +# MySQL deployment (add -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"), modify database connection parameters as needed +# Example: +docker run --name new-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest +``` + +## Channel Retry +Channel retry is implemented, configurable in `Settings->Operation Settings->General Settings`. **Cache recommended**. +First retry uses same priority, second retry uses next priority, and so on. + +### Cache Configuration +1. `REDIS_CONN_STRING`: Use Redis as cache + + Example: `REDIS_CONN_STRING=redis://default:redispw@localhost:49153` +2. `MEMORY_CACHE_ENABLED`: Enable memory cache, default `false` + + Example: `MEMORY_CACHE_ENABLED=true` + +### Why Some Errors Don't Retry +Error codes 400, 504, 524 won't retry +### To Enable Retry for 400 +In `Channel->Edit`, set `Status Code Override` to: +```json +{ + "400": "500" +} +``` + +## Integration Guides +- [Midjourney Integration](Midjourney.md) +- [Suno Integration](Suno.md) + +## Related Projects +- [One API](https://github.com/songquanpeng/one-api): Original project +- [Midjourney-Proxy](https://github.com/novicezk/midjourney-proxy): Midjourney interface support +- [chatnio](https://github.com/Deeptrain-Community/chatnio): Next-gen AI B/C solution +- [neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool): Query usage quota by key + +## 🌟 Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=Calcium-Ion/new-api&type=Date)](https://star-history.com/#Calcium-Ion/new-api&Date) \ No newline at end of file diff --git a/README.md b/README.md index 57d9d3c1..9e594d77 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +

+ δΈ­ζ–‡ | English +

![new-api](/web/public/logo.png)