ccproxy.adapters.openai.streaming¶
ccproxy.adapters.openai.streaming
¶
OpenAI streaming response formatting.
This module provides Server-Sent Events (SSE) formatting for OpenAI-compatible streaming responses.
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,
enable_text_chunking=True,
chunk_size_words=3,
)
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
|
enable_text_chunking
|
bool
|
Whether to chunk text content |
True
|
chunk_size_words
|
int
|
Number of words per text chunk |
3
|
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]
|
OpenAI-formatted SSE strings |