Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 7 additions & 11 deletions src/celeste/providers/anthropic/messages/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from celeste.client import APIMixin
from celeste.core import UsageField
from celeste.io import FinishReason
from celeste.mime_types import ApplicationMimeType
from celeste.providers.google.auth import GoogleADC

from . import config
Expand Down Expand Up @@ -56,23 +55,18 @@ def _build_url(self, endpoint: str, streaming: bool = False) -> str:
)
return f"{config.BASE_URL}{endpoint}"

def _build_headers(self, request_body: dict[str, Any]) -> dict[str, str]:
"""Build headers with beta features extracted from request."""
beta_features: list[str] = request_body.pop("_beta_features", [])

def _build_headers(self, beta_features: list[str] | None = None) -> dict[str, str]:
"""Build Anthropic request headers."""
headers: dict[str, str] = {
**self.auth.get_headers(),
**self._json_headers(),
config.HEADER_ANTHROPIC_VERSION: config.ANTHROPIC_VERSION,
"Content-Type": ApplicationMimeType.JSON,
}

if beta_features:
beta_values = [
getattr(config, f"BETA_{f.upper().replace('-', '_')}")
for f in beta_features
]
headers[config.HEADER_ANTHROPIC_BETA] = ",".join(beta_values)

return headers

def _build_request(
Expand Down Expand Up @@ -103,7 +97,8 @@ async def _make_request(
if "max_tokens" not in request_body:
request_body["max_tokens"] = config.DEFAULT_MAX_TOKENS

headers = self._build_headers(request_body)
beta_features: list[str] = request_body.pop("_beta_features", [])
headers = self._build_headers(beta_features=beta_features)

if endpoint is None:
endpoint = config.AnthropicMessagesEndpoint.CREATE_MESSAGE
Expand All @@ -129,7 +124,8 @@ def _make_stream_request(
if "max_tokens" not in request_body:
request_body["max_tokens"] = config.DEFAULT_MAX_TOKENS

headers = self._build_headers(request_body)
beta_features: list[str] = request_body.pop("_beta_features", [])
headers = self._build_headers(beta_features=beta_features)

if endpoint is None:
endpoint = config.AnthropicMessagesEndpoint.CREATE_MESSAGE
Expand Down
Loading