diff --git a/.env.example b/.env.example index 36eff8a434..d99c05d373 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,6 @@ # OpenAI OPENAI_API_KEY = "" +OPENAI_API_BASE = "" # Cohere COHERE_API_KEY = "" # OpenRouter diff --git a/docs/my-website/docs/completion/supported.md b/docs/my-website/docs/completion/supported.md index e3719938c2..9988b08e71 100644 --- a/docs/my-website/docs/completion/supported.md +++ b/docs/my-website/docs/completion/supported.md @@ -17,6 +17,8 @@ liteLLM reads key naming, all keys should be named in the following format: | gpt-3.5-turbo-16k-0613 | `completion('gpt-3.5-turbo-16k-0613', messages)` | `os.environ['OPENAI_API_KEY']` | | gpt-4 | `completion('gpt-4', messages)` | `os.environ['OPENAI_API_KEY']` | +These also support the `OPENAI_API_BASE` environment variable, which can be used to specify a custom API endpoint. + ### Azure OpenAI Chat Completion Models | Model Name | Function Call | Required OS Variables | diff --git a/litellm/main.py b/litellm/main.py index 6a48c7f57e..6e26bf3e5e 100644 --- a/litellm/main.py +++ b/litellm/main.py @@ -211,11 +211,9 @@ def completion( openai.api_type = "openai" # note: if a user sets a custom base - we should ensure this works api_base = ( - custom_api_base if custom_api_base is not None else litellm.api_base - ) # allow for the setting of dynamic and stateful api-bases - openai.api_base = ( - api_base if api_base is not None else "https://api.openai.com/v1" + custom_api_base or litellm.api_base or get_secret("OPENAI_API_BASE") ) + openai.api_base = api_base or "https://api.openai.com/v1" openai.api_version = None if litellm.organization: openai.organization = litellm.organization