diff --git a/astrbot/core/provider/sources/openai_source.py b/astrbot/core/provider/sources/openai_source.py index 73f22925a1..d64feb5a07 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -329,14 +329,20 @@ async def _query_stream( state = ChatCompletionStreamState() async for chunk in stream: - try: - state.handle_chunk(chunk) - except Exception as e: - logger.warning("Saving chunk state error: " + str(e)) if not chunk.choices: continue choice = chunk.choices[0] delta = choice.delta + + # siliconflow workaround + if dtcs := delta.tool_calls: + for tc in dtcs: + if tc.function and tc.function.arguments: + tc.type = "function" + try: + state.handle_chunk(chunk) + except Exception as e: + logger.error("Saving chunk state error: " + str(e)) # logger.debug(f"chunk delta: {delta}") # handle the content delta reasoning = self._extract_reasoning_content(chunk)