use helper to forward headers from request

This commit is contained in:
Ishaan Jaff 2024-08-06 11:34:10 -07:00
parent d1b8c4e08d
commit bd1f323297
2 changed files with 33 additions and 6 deletions

View file

@ -239,6 +239,26 @@ async def chat_completion_pass_through_endpoint(
) )
def forward_headers_from_request(
request: Request,
headers: dict,
forward_headers: Optional[bool] = False,
):
"""
Helper to forward headers from original request
"""
if forward_headers is True:
request_headers = dict(request.headers)
# Header We Should NOT forward
request_headers.pop("content-length", None)
request_headers.pop("host", None)
# Combine request headers with custom headers
headers = {**request_headers, **headers}
return headers
async def pass_through_request( async def pass_through_request(
request: Request, request: Request,
target: str, target: str,
@ -255,6 +275,9 @@ async def pass_through_request(
url = httpx.URL(target) url = httpx.URL(target)
headers = custom_headers headers = custom_headers
headers = forward_headers_from_request(
request=request, headers=headers, forward_headers=forward_headers
)
request_body = await request.body() request_body = await request.body()
body_str = request_body.decode() body_str = request_body.decode()
@ -263,10 +286,6 @@ async def pass_through_request(
except: except:
_parsed_body = json.loads(body_str) _parsed_body = json.loads(body_str)
if forward_headers is True:
request_headers = dict(request.headers)
headers = {**headers, **request_headers}
verbose_proxy_logger.debug( verbose_proxy_logger.debug(
"Pass through endpoint sending request to \nURL {}\nheaders: {}\nbody: {}\n".format( "Pass through endpoint sending request to \nURL {}\nheaders: {}\nbody: {}\n".format(
url, headers, _parsed_body url, headers, _parsed_body
@ -443,8 +462,9 @@ async def initialize_pass_through_endpoints(pass_through_endpoints: list):
if _target is None: if _target is None:
continue continue
verbose_proxy_logger.debug("adding pass through endpoint: %s", _path) verbose_proxy_logger.debug(
"adding pass through endpoint: %s, dependencies: %s", _path, _dependencies
)
app.add_api_route( app.add_api_route(
path=_path, path=_path,
endpoint=create_pass_through_route( endpoint=create_pass_through_route(

View file

@ -40,6 +40,13 @@ files_settings:
general_settings: general_settings:
master_key: sk-1234 master_key: sk-1234
pass_through_endpoints:
- path: "/v1/rerank" # route you want to add to LiteLLM Proxy Server
target: "https://api.cohere.com/v1/rerank" # URL this route should forward requests to
headers: # headers to forward to this URL
content-type: application/json # (Optional) Extra Headers to pass to this endpoint
accept: application/json
forward_headers: True
litellm_settings: litellm_settings: