ccproxy.adapters.openai¶
ccproxy.adapters.openai
¶
OpenAI adapter module for API format conversion.
This module provides the OpenAI adapter implementation for converting between OpenAI and Anthropic API formats.
OpenAIAdapter
¶
Bases: APIAdapter
OpenAI API adapter for converting between OpenAI and Anthropic formats.
Source code in ccproxy/adapters/openai/adapter.py
adapt_request
¶
Convert OpenAI request format to Anthropic format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
dict[str, Any]
|
OpenAI format request |
required |
Returns:
Type | Description |
---|---|
dict[str, Any]
|
Anthropic format request |
Raises:
Type | Description |
---|---|
ValueError
|
If the request format is invalid or unsupported |
Source code in ccproxy/adapters/openai/adapter.py
adapt_response
¶
Convert Anthropic response format to OpenAI format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
response
|
dict[str, Any]
|
Anthropic format response |
required |
Returns:
Type | Description |
---|---|
dict[str, Any]
|
OpenAI format response |
Raises:
Type | Description |
---|---|
ValueError
|
If the response format is invalid or unsupported |
Source code in ccproxy/adapters/openai/adapter.py
adapt_stream
async
¶
Convert Anthropic streaming response to OpenAI streaming format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
stream
|
AsyncIterator[dict[str, Any]]
|
Anthropic streaming response |
required |
Yields:
Type | Description |
---|---|
AsyncIterator[dict[str, Any]]
|
OpenAI format streaming chunks |
Raises:
Type | Description |
---|---|
ValueError
|
If the stream format is invalid or unsupported |
Source code in ccproxy/adapters/openai/adapter.py
adapt_error
¶
Convert Anthropic error format to OpenAI error format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
error_body
|
dict[str, Any]
|
Anthropic error response |
required |
Returns:
Type | Description |
---|---|
dict[str, Any]
|
OpenAI-formatted error response |
Source code in ccproxy/adapters/openai/adapter.py
OpenAISSEFormatter
¶
Formats streaming responses to match OpenAI's SSE format.
format_data_event
staticmethod
¶
format_first_chunk
staticmethod
¶
Format the first chunk with role and basic metadata.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str
|
Unique identifier for the completion |
required |
model
|
str
|
Model name being used |
required |
created
|
int
|
Unix timestamp when the completion was created |
required |
role
|
str
|
Role of the assistant |
'assistant'
|
Returns:
Type | Description |
---|---|
str
|
Formatted SSE string |
Source code in ccproxy/adapters/openai/streaming.py
format_content_chunk
staticmethod
¶
Format a content chunk with text delta.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str
|
Unique identifier for the completion |
required |
model
|
str
|
Model name being used |
required |
created
|
int
|
Unix timestamp when the completion was created |
required |
content
|
str
|
Text content to include in the delta |
required |
choice_index
|
int
|
Index of the choice (usually 0) |
0
|
Returns:
Type | Description |
---|---|
str
|
Formatted SSE string |
Source code in ccproxy/adapters/openai/streaming.py
format_tool_call_chunk
staticmethod
¶
format_tool_call_chunk(
message_id,
model,
created,
tool_call_id,
function_name=None,
function_arguments=None,
tool_call_index=0,
choice_index=0,
)
Format a tool call chunk.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str
|
Unique identifier for the completion |
required |
model
|
str
|
Model name being used |
required |
created
|
int
|
Unix timestamp when the completion was created |
required |
tool_call_id
|
str
|
ID of the tool call |
required |
function_name
|
str | None
|
Name of the function being called |
None
|
function_arguments
|
str | None
|
Arguments for the function |
None
|
tool_call_index
|
int
|
Index of the tool call |
0
|
choice_index
|
int
|
Index of the choice (usually 0) |
0
|
Returns:
Type | Description |
---|---|
str
|
Formatted SSE string |
Source code in ccproxy/adapters/openai/streaming.py
format_final_chunk
staticmethod
¶
Format the final chunk with finish_reason.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str
|
Unique identifier for the completion |
required |
model
|
str
|
Model name being used |
required |
created
|
int
|
Unix timestamp when the completion was created |
required |
finish_reason
|
str
|
Reason for completion (stop, length, tool_calls, etc.) |
'stop'
|
choice_index
|
int
|
Index of the choice (usually 0) |
0
|
usage
|
dict[str, int] | None
|
Optional usage information to include |
None
|
Returns:
Type | Description |
---|---|
str
|
Formatted SSE string |
Source code in ccproxy/adapters/openai/streaming.py
format_error_chunk
staticmethod
¶
Format an error chunk.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str
|
Unique identifier for the completion |
required |
model
|
str
|
Model name being used |
required |
created
|
int
|
Unix timestamp when the completion was created |
required |
error_type
|
str
|
Type of error |
required |
error_message
|
str
|
Error message |
required |
Returns:
Type | Description |
---|---|
str
|
Formatted SSE string |
Source code in ccproxy/adapters/openai/streaming.py
OpenAIStreamProcessor
¶
OpenAIStreamProcessor(
message_id=None,
model="claude-3-5-sonnet-20241022",
created=None,
enable_usage=True,
enable_tool_calls=True,
output_format="sse",
)
Processes Anthropic/Claude streaming responses into OpenAI format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message_id
|
str | None
|
Response ID, generated if not provided |
None
|
model
|
str
|
Model name for responses |
'claude-3-5-sonnet-20241022'
|
created
|
int | None
|
Creation timestamp, current time if not provided |
None
|
enable_usage
|
bool
|
Whether to include usage information |
True
|
enable_tool_calls
|
bool
|
Whether to process tool calls |
True
|
output_format
|
Literal['sse', 'dict']
|
Output format - "sse" for Server-Sent Events strings, "dict" for dict objects |
'sse'
|
Source code in ccproxy/adapters/openai/streaming.py
process_stream
async
¶
Process a Claude/Anthropic stream into OpenAI format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
claude_stream
|
AsyncIterator[dict[str, Any]]
|
Async iterator of Claude response chunks |
required |
Yields:
Type | Description |
---|---|
AsyncIterator[str | dict[str, Any]]
|
OpenAI-formatted SSE strings or dict objects based on output_format |
Source code in ccproxy/adapters/openai/streaming.py
format_openai_tool_call
¶
Convert Anthropic tool use to OpenAI tool call format.