Skip to content

Commit b00ca97

Browse files
authored
Use more targetted "try-except" for anthropic chunk parsing (#1128)
The intention is to make this easier to debug. Signed-off-by: Juan Antonio Osorio <[email protected]>
1 parent c1ca9e0 commit b00ca97

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

src/codegate/muxing/adapter.py

+34-28
Original file line numberDiff line numberDiff line change
@@ -102,36 +102,42 @@ def _format_antropic(self, chunk: str) -> str:
102102
cleaned_chunk = chunk.split("data:")[1].strip()
103103
try:
104104
chunk_dict = json.loads(cleaned_chunk)
105-
msg_type = chunk_dict.get("type", "")
106-
107-
finish_reason = None
108-
if msg_type == "message_stop":
109-
finish_reason = "stop"
110-
111-
# In type == "content_block_start" the content comes in "content_block"
112-
# In type == "content_block_delta" the content comes in "delta"
113-
msg_content_dict = chunk_dict.get("delta", {}) or chunk_dict.get("content_block", {})
114-
# We couldn't obtain the content from the chunk. Skip it.
115-
if not msg_content_dict:
116-
return ""
117-
118-
msg_content = msg_content_dict.get("text", "")
119-
open_ai_chunk = ModelResponse(
120-
id=f"anthropic-chat-{str(uuid.uuid4())}",
121-
model="anthropic-muxed-model",
122-
object="chat.completion.chunk",
123-
choices=[
124-
StreamingChoices(
125-
finish_reason=finish_reason,
126-
index=0,
127-
delta=Delta(content=msg_content, role="assistant"),
128-
logprobs=None,
129-
)
130-
],
131-
)
105+
except Exception as e:
106+
logger.warning(f"Error parsing Anthropic chunk: {chunk}. Error: {e}")
107+
return cleaned_chunk.strip()
108+
109+
msg_type = chunk_dict.get("type", "")
110+
111+
finish_reason = None
112+
if msg_type == "message_stop":
113+
finish_reason = "stop"
114+
115+
# In type == "content_block_start" the content comes in "content_block"
116+
# In type == "content_block_delta" the content comes in "delta"
117+
msg_content_dict = chunk_dict.get("delta", {}) or chunk_dict.get("content_block", {})
118+
# We couldn't obtain the content from the chunk. Skip it.
119+
if not msg_content_dict:
120+
return ""
121+
msg_content = msg_content_dict.get("text", "")
122+
123+
open_ai_chunk = ModelResponse(
124+
id=f"anthropic-chat-{str(uuid.uuid4())}",
125+
model="anthropic-muxed-model",
126+
object="chat.completion.chunk",
127+
choices=[
128+
StreamingChoices(
129+
finish_reason=finish_reason,
130+
index=0,
131+
delta=Delta(content=msg_content, role="assistant"),
132+
logprobs=None,
133+
)
134+
],
135+
)
136+
137+
try:
132138
return open_ai_chunk.model_dump_json(exclude_none=True, exclude_unset=True)
133139
except Exception as e:
134-
logger.warning(f"Error formatting Anthropic chunk: {chunk}. Error: {e}")
140+
logger.warning(f"Error serializing Anthropic chunk: {chunk}. Error: {e}")
135141
return cleaned_chunk.strip()
136142

137143
def _format_as_openai_chunk(self, formatted_chunk: str) -> str:

0 commit comments

Comments
 (0)