Merge pull request #1497 from BerriAI/litellm_http_proxy_support

fix(router.py): support http and https proxys
This commit is contained in:
Krish Dholakia 2024-02-01 09:19:05 -08:00 committed by GitHub
commit 9c4f0877aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1407,6 +1407,32 @@ class Router:
max_retries = litellm.get_secret(max_retries_env_name)
litellm_params["max_retries"] = max_retries
# proxy support
import os
import httpx
# Check if the HTTP_PROXY and HTTPS_PROXY environment variables are set and use them accordingly.
http_proxy = os.getenv("HTTP_PROXY", None)
https_proxy = os.getenv("HTTPS_PROXY", None)
# Create the proxies dictionary only if the environment variables are set.
sync_proxy_mounts = None
async_proxy_mounts = None
if http_proxy is not None and https_proxy is not None:
sync_proxy_mounts = {
"http://": httpx.HTTPTransport(proxy=httpx.Proxy(url=http_proxy)),
"https://": httpx.HTTPTransport(proxy=httpx.Proxy(url=https_proxy)),
}
async_proxy_mounts = {
"http://": httpx.AsyncHTTPTransport(
proxy=httpx.Proxy(url=http_proxy)
),
"https://": httpx.AsyncHTTPTransport(
proxy=httpx.Proxy(url=https_proxy)
),
}
organization = litellm_params.get("organization", None)
if isinstance(organization, str) and organization.startswith("os.environ/"):
organization_env_name = organization.replace("os.environ/", "")
@ -1437,6 +1463,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1458,6 +1485,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1479,6 +1507,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1500,6 +1529,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1535,6 +1565,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1554,6 +1585,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1574,6 +1606,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
),
)
self.cache.set_cache(
@ -1593,6 +1626,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
),
)
self.cache.set_cache(
@ -1618,6 +1652,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1639,6 +1674,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1661,6 +1697,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=async_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(
@ -1683,6 +1720,7 @@ class Router:
limits=httpx.Limits(
max_connections=1000, max_keepalive_connections=100
),
mounts=sync_proxy_mounts,
), # type: ignore
)
self.cache.set_cache(