mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-10 03:28:03 +00:00
This commit is contained in:
parent
e851b9355e
commit
6ba793137d
15 changed files with 21 additions and 41 deletions
|
|
@ -90,13 +90,7 @@ export abstract class BaseOpenAiCompatibleProvider<ModelName extends string>
|
|||
model,
|
||||
max_tokens,
|
||||
temperature,
|
||||
// Enable mergeToolResultText to merge environment_details and other text content
|
||||
// after tool_results into the last tool message. This prevents reasoning/thinking
|
||||
// models from dropping reasoning_content when they see a user message after tool results.
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
],
|
||||
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
|
||||
stream: true,
|
||||
stream_options: { include_usage: true },
|
||||
...(metadata?.tools && { tools: this.convertToolsForOpenAI(metadata.tools) }),
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ export class CerebrasHandler extends BaseProvider implements SingleCompletionHan
|
|||
supportsNativeTools && metadata?.tools && metadata.tools.length > 0 && metadata?.toolProtocol !== "xml"
|
||||
|
||||
// Convert Anthropic messages to OpenAI format (Cerebras is OpenAI-compatible)
|
||||
const openaiMessages = convertToOpenAiMessages(messages, { mergeToolResultText: true })
|
||||
const openaiMessages = convertToOpenAiMessages(messages)
|
||||
|
||||
// Prepare request body following Cerebras API specification exactly
|
||||
const requestBody: Record<string, any> = {
|
||||
|
|
|
|||
|
|
@ -44,10 +44,7 @@ export class ChutesHandler extends RouterProvider implements SingleCompletionHan
|
|||
const params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
|
||||
model,
|
||||
max_tokens,
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
],
|
||||
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
|
||||
stream: true,
|
||||
stream_options: { include_usage: true },
|
||||
...(metadata?.tools && { tools: metadata.tools }),
|
||||
|
|
|
|||
|
|
@ -72,10 +72,7 @@ export class DeepInfraHandler extends RouterProvider implements SingleCompletion
|
|||
|
||||
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
|
||||
model: modelId,
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
],
|
||||
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
|
||||
stream: true,
|
||||
stream_options: { include_usage: true },
|
||||
reasoning_effort,
|
||||
|
|
|
|||
|
|
@ -44,10 +44,7 @@ export class FeatherlessHandler extends BaseOpenAiCompatibleProvider<Featherless
|
|||
model,
|
||||
max_tokens,
|
||||
temperature,
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
],
|
||||
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
|
||||
stream: true,
|
||||
stream_options: { include_usage: true },
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,10 +56,7 @@ export class HuggingFaceHandler extends BaseProvider implements SingleCompletion
|
|||
const params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
|
||||
model: modelId,
|
||||
temperature,
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
],
|
||||
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
|
||||
stream: true,
|
||||
stream_options: { include_usage: true },
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ export class LiteLLMHandler extends RouterProvider implements SingleCompletionHa
|
|||
): ApiStream {
|
||||
const { id: modelId, info } = await this.fetchModel()
|
||||
|
||||
const openAiMessages = convertToOpenAiMessages(messages, { mergeToolResultText: true })
|
||||
const openAiMessages = convertToOpenAiMessages(messages)
|
||||
|
||||
// Prepare messages with cache control if enabled and supported
|
||||
let systemMessage: OpenAI.Chat.ChatCompletionMessageParam
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export class LmStudioHandler extends BaseProvider implements SingleCompletionHan
|
|||
): ApiStream {
|
||||
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
]
|
||||
|
||||
// LM Studio always supports native tools (https://lmstudio.ai/docs/developer/core/tools)
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
|
|||
}
|
||||
}
|
||||
|
||||
convertedMessages = [systemMessage, ...convertToOpenAiMessages(messages, { mergeToolResultText: true })]
|
||||
convertedMessages = [systemMessage, ...convertToOpenAiMessages(messages)]
|
||||
|
||||
if (modelInfo.supportsPromptCache) {
|
||||
// Note: the following logic is copied from openrouter:
|
||||
|
|
@ -235,7 +235,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
|
|||
? convertToR1Format([{ role: "user", content: systemPrompt }, ...messages])
|
||||
: enabledLegacyFormat
|
||||
? [systemMessage, ...convertToSimpleMessages(messages)]
|
||||
: [systemMessage, ...convertToOpenAiMessages(messages, { mergeToolResultText: true })],
|
||||
: [systemMessage, ...convertToOpenAiMessages(messages)],
|
||||
...(metadata?.tools && { tools: this.convertToolsForOpenAI(metadata.tools) }),
|
||||
...(metadata?.tool_choice && { tool_choice: metadata.tool_choice }),
|
||||
...(metadata?.toolProtocol === "native" && {
|
||||
|
|
@ -356,7 +356,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
|
|||
role: "developer",
|
||||
content: `Formatting re-enabled\n${systemPrompt}`,
|
||||
},
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
],
|
||||
stream: true,
|
||||
...(isGrokXAI ? {} : { stream_options: { include_usage: true } }),
|
||||
|
|
@ -393,7 +393,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
|
|||
role: "developer",
|
||||
content: `Formatting re-enabled\n${systemPrompt}`,
|
||||
},
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
],
|
||||
reasoning_effort: modelInfo.reasoningEffort as "low" | "medium" | "high" | undefined,
|
||||
temperature: undefined,
|
||||
|
|
|
|||
|
|
@ -229,15 +229,13 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
|
|||
|
||||
// Convert Anthropic messages to OpenAI format.
|
||||
// Pass normalization function for Mistral compatibility (requires 9-char alphanumeric IDs)
|
||||
// Enable mergeToolResultText to merge environment_details after tool_results into the last
|
||||
// tool message, preventing reasoning/thinking models from dropping reasoning_content.
|
||||
const isMistral = modelId.toLowerCase().includes("mistral")
|
||||
let openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, {
|
||||
mergeToolResultText: true,
|
||||
...(isMistral && { normalizeToolCallId: normalizeMistralToolCallId }),
|
||||
}),
|
||||
...convertToOpenAiMessages(
|
||||
messages,
|
||||
isMistral ? { normalizeToolCallId: normalizeMistralToolCallId } : undefined,
|
||||
),
|
||||
]
|
||||
|
||||
// DeepSeek highly recommends using user instead of system role.
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ export class QwenCodeHandler extends BaseProvider implements SingleCompletionHan
|
|||
content: systemPrompt,
|
||||
}
|
||||
|
||||
const convertedMessages = [systemMessage, ...convertToOpenAiMessages(messages, { mergeToolResultText: true })]
|
||||
const convertedMessages = [systemMessage, ...convertToOpenAiMessages(messages)]
|
||||
|
||||
const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {
|
||||
model: model.id,
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ export class RequestyHandler extends BaseProvider implements SingleCompletionHan
|
|||
|
||||
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
]
|
||||
|
||||
// Map extended efforts to OpenAI Chat Completions-accepted values (omit unsupported)
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ export class UnboundHandler extends RouterProvider implements SingleCompletionHa
|
|||
|
||||
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
]
|
||||
|
||||
if (info.supportsPromptCache) {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ export class VercelAiGatewayHandler extends RouterProvider implements SingleComp
|
|||
|
||||
const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
]
|
||||
|
||||
if (VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS.has(modelId) && info.supportsPromptCache) {
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ export class XAIHandler extends BaseProvider implements SingleCompletionHandler
|
|||
temperature: this.options.modelTemperature ?? XAI_DEFAULT_TEMPERATURE,
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
...convertToOpenAiMessages(messages, { mergeToolResultText: true }),
|
||||
...convertToOpenAiMessages(messages),
|
||||
] as OpenAI.Chat.ChatCompletionMessageParam[],
|
||||
stream: true as const,
|
||||
stream_options: { include_usage: true },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue