fix: enforce that the first message (excluding system messages) is a user message in the Deepseek API