From f2c96b89c03fc299182863f804f5cadefce73fb4 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 6 Feb 2025 14:21:29 +1100 Subject: [PATCH] fix(r1): ensure r1 works with ollama --- src/api/providers/ollama.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/api/providers/ollama.ts b/src/api/providers/ollama.ts index 98374c5878..4175b78fa5 100644 --- a/src/api/providers/ollama.ts +++ b/src/api/providers/ollama.ts @@ -3,6 +3,7 @@ import OpenAI from "openai" import { ApiHandler, SingleCompletionHandler } from "../" import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" import { convertToOpenAiMessages } from "../transform/openai-format" +import { convertToR1Format } from "../transform/r1-format" import { ApiStream } from "../transform/stream" export class OllamaHandler implements ApiHandler, SingleCompletionHandler { @@ -18,9 +19,11 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler { } async *createMessage(systemPrompt: string, messages: Anthropic.Messages.MessageParam[]): ApiStream { + const modelId = this.getModel().id + const useR1Format = modelId.toLowerCase().includes('deepseek-r1') const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [ { role: "system", content: systemPrompt }, - ...convertToOpenAiMessages(messages), + ...(useR1Format ? convertToR1Format(messages) : convertToOpenAiMessages(messages)), ] const stream = await this.client.chat.completions.create({ @@ -49,9 +52,11 @@ export class OllamaHandler implements ApiHandler, SingleCompletionHandler { async completePrompt(prompt: string): Promise { try { + const modelId = this.getModel().id + const useR1Format = modelId.toLowerCase().includes('deepseek-r1') const response = await this.client.chat.completions.create({ model: this.getModel().id, - messages: [{ role: "user", content: prompt }], + messages: useR1Format ? convertToR1Format([{ role: "user", content: prompt }]) : [{ role: "user", content: prompt }], temperature: 0, stream: false, })