feat: openrouter reasoning field and include_reasoning key #863

This commit is contained in:
kangfenmao 2025-02-03 11:48:46 +08:00
parent 66c2c530c5
commit 3f3259784b

View File

@ -129,6 +129,18 @@ export default class OpenAIProvider extends BaseProvider {
return assistant?.settings?.temperature
}
private getProviderSpecificParameters(model: Model) {
if (this.provider.id === 'openrouter') {
if (model.id.includes('deepseek-r1')) {
return {
include_reasoning: true
}
}
}
return {}
}
async completions({ messages, assistant, onChunk, onFilterMessages }: CompletionsParams): Promise<void> {
const defaultModel = getDefaultModel()
const model = assistant.model || defaultModel
@ -175,6 +187,7 @@ export default class OpenAIProvider extends BaseProvider {
keep_alive: this.keepAliveTime,
stream: isSupportStreamOutput(),
...(assistant.enableWebSearch ? getOpenAIWebSearchParams(model) : {}),
...this.getProviderSpecificParameters(model),
...this.getCustomParameters(assistant)
})
@ -207,10 +220,12 @@ export default class OpenAIProvider extends BaseProvider {
const time_completion_millsec = new Date().getTime() - start_time_millsec
const time_thinking_millsec = time_first_content_millsec ? time_first_content_millsec - start_time_millsec : 0
const delta = chunk.choices[0]?.delta
onChunk({
text: chunk.choices[0]?.delta?.content || '',
text: delta?.content || '',
// @ts-ignore key is not typed
reasoning_content: chunk.choices[0]?.delta?.reasoning_content || '',
reasoning_content: delta?.reasoning_content || delta.reasoning || '',
usage: chunk.usage,
metrics: {
completion_tokens: chunk.usage?.completion_tokens,