one-api

one-api

Access all LLM through the standard OpenAI API format, easy to deploy & use

Deploy one-api

one-api

chinpeerapat/one-api

Just deployed


The initial account username is root and password is 123456.


中文 | English | 日本語

one-api logo

One API

✨ Access all LLM through the standard OpenAI API format, easy to deploy & use ✨

license release docker pull release GoReportCard

Deployment Tutorial · Usage · Feedback · Screenshots · Live Demo · FAQ · Related Projects · Donate

> Warning: This README is translated by ChatGPT. Please feel free to submit a PR if you find any translation errors.

> Note: The latest image pulled from Docker may be an alpha release. Specify the version manually if you require stability.

Features

  1. Support for multiple large models:
  2. Supports access to multiple channels through load balancing.
  3. Supports stream mode that enables typewriter-like effect through stream transmission.
  4. Supports multi-machine deployment. See here for more details.
  5. Supports token management that allows setting token expiration time and usage count.
  6. Supports voucher management that enables batch generation and export of vouchers. Vouchers can be used for account balance replenishment.
  7. Supports channel management that allows bulk creation of channels.
  8. Supports user grouping and channel grouping for setting different rates for different groups.
  9. Supports channel model list configuration.
  10. Supports quota details checking.
  11. Supports user invite rewards.
  12. Allows display of balance in USD.
  13. Supports announcement publishing, recharge link setting, and initial balance setting for new users.
  14. Offers rich customization options:
    1. Supports customization of system name, logo, and footer.
    2. Supports customization of homepage and about page using HTML & Markdown code, or embedding a standalone webpage through iframe.
  15. Supports management API access through system access tokens.
  16. Supports Cloudflare Turnstile user verification.
  17. Supports user management and multiple user login/registration methods:
    • Email login/registration and password reset via email.
    • GitHub OAuth.
    • WeChat Official Account authorization (requires additional deployment of WeChat Server).
  18. Immediate support and encapsulation of other major model APIs as they become available.

Environment Variables

  1. REDIS_CONN_STRING: When set, Redis will be used as the storage for request rate limiting instead of memory.
    • Example: REDIS_CONN_STRING=redis://default:redispw@localhost:49153
  2. SESSION_SECRET: When set, a fixed session key will be used to ensure that cookies of logged-in users are still valid after the system restarts.
    • Example: SESSION_SECRET=random_string
  3. SQL_DSN: When set, the specified database will be used instead of SQLite. Please use MySQL version 8.0.
    • Example: SQL_DSN=root:123456@tcp(localhost:3306)/oneapi
  4. LOG_SQL_DSN: When set, a separate database will be used for the logs table; please use MySQL or PostgreSQL.
    • Example: LOG_SQL_DSN=root:123456@tcp(localhost:3306)/oneapi-logs
  5. FRONTEND_BASE_URL: When set, the specified frontend address will be used instead of the backend address.
    • Example: FRONTEND_BASE_URL=https://openai.justsong.cn
  6. 'MEMORY_CACHE_ENABLED': Enabling memory caching can cause a certain delay in updating user quotas, with optional values of 'true' and 'false'. If not set, it defaults to 'false'.
  7. SYNC_FREQUENCY: When set, the system will periodically sync configurations from the database, with the unit in seconds. If not set, no sync will happen.
    • Example: SYNC_FREQUENCY=60
  8. NODE_TYPE: When set, specifies the node type. Valid values are master and slave. If not set, it defaults to master.
    • Example: NODE_TYPE=slave
  9. CHANNEL_UPDATE_FREQUENCY: When set, it periodically updates the channel balances, with the unit in minutes. If not set, no update will happen.
    • Example: CHANNEL_UPDATE_FREQUENCY=1440
  10. CHANNEL_TEST_FREQUENCY: When set, it periodically tests the channels, with the unit in minutes. If not set, no test will happen.
    • Example: CHANNEL_TEST_FREQUENCY=1440
  11. POLLING_INTERVAL: The time interval (in seconds) between requests when updating channel balances and testing channel availability. Default is no interval.
    • Example: POLLING_INTERVAL=5
  12. BATCH_UPDATE_ENABLED: Enabling batch database update aggregation can cause a certain delay in updating user quotas. The optional values are 'true' and 'false', but if not set, it defaults to 'false'. +Example: BATCH_UPDATE_ENABLED=true +If you encounter an issue with too many database connections, you can try enabling this option.
  13. BATCH_UPDATE_INTERVAL=5: The time interval for batch updating aggregates, measured in seconds, defaults to '5'. +Example: BATCH_UPDATE_INTERVAL=5
  14. Request frequency limit:
    • GLOBAL_API_RATE_LIMIT: Global API rate limit (excluding relay requests), the maximum number of requests within three minutes per IP, default to 180.
    • GLOBAL_WEL_RATE_LIMIT: Global web speed limit, the maximum number of requests within three minutes per IP, default to 60.
  15. Encoder cache settings: +TIKTOKEN_CACHE_DIR: By default, when the program starts, it will download the encoding of some common word elements online, such as' gpt-3.5 turbo '. In some unstable network environments or offline situations, it may cause startup problems. This directory can be configured to cache data and can be migrated to an offline environment. +DATA_GYM_CACHE_DIR: Currently, this configuration has the same function as' TIKTOKEN-CACHE-DIR ', but its priority is not as high as it.
  16. RELAY_TIMEOUT: Relay timeout setting, measured in seconds, with no default timeout time set.
  17. RELAY_PROXY: After setting up, use this proxy to request APIs.
  18. USER_CONTENT_REQUEST_TIMEOUT: The timeout period for users to upload and download content, measured in seconds.
  19. USER_CONTENT_REQUEST_PROXY: After setting up, use this agent to request content uploaded by users, such as images.
  20. SQLITE_BUSY_TIMEOUT: SQLite lock wait timeout setting, measured in milliseconds, default to '3000'.
  21. GEMINI_SAFETY_SETTING: Gemini's security settings are set to 'BLOCK-NONE' by default.
  22. GEMINI_VERSION: The Gemini version used by the One API, which defaults to 'v1'.
  23. THE: The system's theme setting, default to 'default', specific optional values refer to [here] (./web/README. md).
  24. ENABLE_METRIC: Whether to disable channels based on request success rate, default not enabled, optional values are 'true' and 'false'.
  25. METRIC_QUEUE_SIZE: Request success rate statistics queue size, default to '10'.
  26. METRIC_SUCCESS_RATE_THRESHOLD: Request success rate threshold, default to '0.8'.
  27. INITIAL_ROOT_TOKEN: If this value is set, a root user token with the value of the environment variable will be automatically created when the system starts for the first time.
  28. INITIAL_ROOT_ACCESS_TOKEN: If this value is set, a system management token will be automatically created for the root user with a value of the environment variable when the system starts for the first time.

Template Content

Deploy Now

Details

chin's Projects

Created on May 7, 2025

0 total projects

JavaScript, Go, SCSS, CSS, HTML, Shell, Dockerfile

AI/ML



More templates in this category

View Template
Chat Chat

Chat Chat

Chat Chat, your own unified chat and search to AI platform.


okisdev

View Template
openui

openui

Deploy OpenUI: AI-powered UI generation with GitHub OAuth and OpenAI API.


zexd's Projects

View Template
firecrawl

firecrawl

firecrawl api server + worker without auth, works with dify


Rama