""" This file contains common utils for anthropic calls. """ from typing import Optional, Union import httpx class AnthropicError(Exception): def __init__( self, status_code: int, message, headers: Optional[httpx.Headers] = None, ): self.status_code = status_code self.message: str = message self.headers = headers self.request = httpx.Request( method="POST", url="https://api.anthropic.com/v1/messages" ) self.response = httpx.Response(status_code=status_code, request=self.request) super().__init__( self.message ) # Call the base class constructor with the parameters it needs def process_anthropic_headers(headers: Union[httpx.Headers, dict]) -> dict: openai_headers = {} if "anthropic-ratelimit-requests-limit" in headers: openai_headers["x-ratelimit-limit-requests"] = headers[ "anthropic-ratelimit-requests-limit" ] if "anthropic-ratelimit-requests-remaining" in headers: openai_headers["x-ratelimit-remaining-requests"] = headers[ "anthropic-ratelimit-requests-remaining" ] if "anthropic-ratelimit-tokens-limit" in headers: openai_headers["x-ratelimit-limit-tokens"] = headers[ "anthropic-ratelimit-tokens-limit" ] if "anthropic-ratelimit-tokens-remaining" in headers: openai_headers["x-ratelimit-remaining-tokens"] = headers[ "anthropic-ratelimit-tokens-remaining" ] llm_response_headers = { "{}-{}".format("llm_provider", k): v for k, v in headers.items() } additional_headers = {**llm_response_headers, **openai_headers} return additional_headers