Some OpenAI-compatible providers (e.g., Moonshot/Kimi) return usage data in chunk.choices[0].usage instead of the standard chunk.usage. Extract usage parsing into a helper and check choice.usage as fallback. closes #2017
Some OpenAI-compatible providers (e.g., Moonshot/Kimi) return usage data in chunk.choices[0].usage instead of the standard chunk.usage. Extract usage parsing into a helper and check choice.usage as fallback. closes #2017