diff --git a/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py b/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py index 3c7ea37487..0327b12973 100644 --- a/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py +++ b/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py @@ -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( request: Request, target: str, @@ -255,6 +275,9 @@ async def pass_through_request( url = httpx.URL(target) headers = custom_headers + headers = forward_headers_from_request( + request=request, headers=headers, forward_headers=forward_headers + ) request_body = await request.body() body_str = request_body.decode() @@ -263,10 +286,6 @@ async def pass_through_request( except: _parsed_body = json.loads(body_str) - if forward_headers is True: - request_headers = dict(request.headers) - headers = {**headers, **request_headers} - verbose_proxy_logger.debug( "Pass through endpoint sending request to \nURL {}\nheaders: {}\nbody: {}\n".format( url, headers, _parsed_body @@ -443,8 +462,9 @@ async def initialize_pass_through_endpoints(pass_through_endpoints: list): if _target is None: 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( path=_path, endpoint=create_pass_through_route( diff --git a/litellm/proxy/proxy_config.yaml b/litellm/proxy/proxy_config.yaml index 50e8bcd623..97cd407d32 100644 --- a/litellm/proxy/proxy_config.yaml +++ b/litellm/proxy/proxy_config.yaml @@ -40,6 +40,13 @@ files_settings: general_settings: 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: