mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-24 05:43:51 +00:00
Merge 00d91fae69 into ad25634905
This commit is contained in:
commit
7c7f4e5f75
8 changed files with 100 additions and 12 deletions
|
|
@ -91,6 +91,27 @@ export const anthropicModels = {
|
|||
},
|
||||
],
|
||||
},
|
||||
"claude-opus-4-7": {
|
||||
maxTokens: 128_000, // Overridden to 8k if `enableReasoningEffort` is false.
|
||||
contextWindow: 200_000, // Default 200K, extendable to 1M with beta flag
|
||||
supportsImages: true,
|
||||
supportsPromptCache: true,
|
||||
inputPrice: 5.0, // $5 per million input tokens (≤200K context)
|
||||
outputPrice: 25.0, // $25 per million output tokens (≤200K context)
|
||||
cacheWritesPrice: 6.25, // $6.25 per million tokens
|
||||
cacheReadsPrice: 0.5, // $0.50 per million tokens
|
||||
supportsReasoningBudget: true,
|
||||
// Tiered pricing for extended context (requires beta flag)
|
||||
tiers: [
|
||||
{
|
||||
contextWindow: 1_000_000, // 1M tokens with beta flag
|
||||
inputPrice: 10.0, // $10 per million input tokens (>200K context)
|
||||
outputPrice: 37.5, // $37.50 per million output tokens (>200K context)
|
||||
cacheWritesPrice: 12.5, // $12.50 per million tokens (>200K context)
|
||||
cacheReadsPrice: 1.0, // $1.00 per million tokens (>200K context)
|
||||
},
|
||||
],
|
||||
},
|
||||
"claude-opus-4-5-20251101": {
|
||||
maxTokens: 32_000, // Overridden to 8k if `enableReasoningEffort` is false.
|
||||
contextWindow: 200_000,
|
||||
|
|
|
|||
|
|
@ -167,6 +167,30 @@ export const bedrockModels = {
|
|||
},
|
||||
],
|
||||
},
|
||||
"anthropic.claude-opus-4-7": {
|
||||
maxTokens: 8192,
|
||||
contextWindow: 200_000, // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07'
|
||||
supportsImages: true,
|
||||
supportsPromptCache: true,
|
||||
supportsReasoningBudget: true,
|
||||
inputPrice: 5.0, // $5 per million input tokens (≤200K context)
|
||||
outputPrice: 25.0, // $25 per million output tokens (≤200K context)
|
||||
cacheWritesPrice: 6.25, // $6.25 per million tokens
|
||||
cacheReadsPrice: 0.5, // $0.50 per million tokens
|
||||
minTokensPerCachePoint: 1024,
|
||||
maxCachePoints: 4,
|
||||
cachableFields: ["system", "messages", "tools"],
|
||||
// Tiered pricing for extended context (requires beta flag 'context-1m-2025-08-07')
|
||||
tiers: [
|
||||
{
|
||||
contextWindow: 1_000_000, // 1M tokens with beta flag
|
||||
inputPrice: 10.0, // $10 per million input tokens (>200K context)
|
||||
outputPrice: 37.5, // $37.50 per million output tokens (>200K context)
|
||||
cacheWritesPrice: 12.5, // $12.50 per million tokens (>200K context)
|
||||
cacheReadsPrice: 1.0, // $1.00 per million tokens (>200K context)
|
||||
},
|
||||
],
|
||||
},
|
||||
"anthropic.claude-opus-4-5-20251101-v1:0": {
|
||||
maxTokens: 8192,
|
||||
contextWindow: 200_000,
|
||||
|
|
@ -525,6 +549,7 @@ export const BEDROCK_1M_CONTEXT_MODEL_IDS = [
|
|||
"anthropic.claude-sonnet-4-5-20250929-v1:0",
|
||||
"anthropic.claude-sonnet-4-6",
|
||||
"anthropic.claude-opus-4-6-v1",
|
||||
"anthropic.claude-opus-4-7",
|
||||
] as const
|
||||
|
||||
// Amazon Bedrock models that support Global Inference profiles
|
||||
|
|
@ -535,6 +560,7 @@ export const BEDROCK_1M_CONTEXT_MODEL_IDS = [
|
|||
// - Claude Haiku 4.5
|
||||
// - Claude Opus 4.5
|
||||
// - Claude Opus 4.6
|
||||
// - Claude Opus 4.7
|
||||
export const BEDROCK_GLOBAL_INFERENCE_MODEL_IDS = [
|
||||
"anthropic.claude-sonnet-4-20250514-v1:0",
|
||||
"anthropic.claude-sonnet-4-5-20250929-v1:0",
|
||||
|
|
@ -542,6 +568,7 @@ export const BEDROCK_GLOBAL_INFERENCE_MODEL_IDS = [
|
|||
"anthropic.claude-haiku-4-5-20251001-v1:0",
|
||||
"anthropic.claude-opus-4-5-20251101-v1:0",
|
||||
"anthropic.claude-opus-4-6-v1",
|
||||
"anthropic.claude-opus-4-7",
|
||||
] as const
|
||||
|
||||
// Amazon Bedrock Service Tier types
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ export const OPEN_ROUTER_PROMPT_CACHING_MODELS = new Set([
|
|||
"anthropic/claude-opus-4.1",
|
||||
"anthropic/claude-opus-4.5",
|
||||
"anthropic/claude-opus-4.6",
|
||||
"anthropic/claude-opus-4.7",
|
||||
"anthropic/claude-haiku-4.5",
|
||||
"google/gemini-2.5-flash-preview",
|
||||
"google/gemini-2.5-flash-preview:thinking",
|
||||
|
|
@ -74,6 +75,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([
|
|||
"anthropic/claude-opus-4.1",
|
||||
"anthropic/claude-opus-4.5",
|
||||
"anthropic/claude-opus-4.6",
|
||||
"anthropic/claude-opus-4.7",
|
||||
"anthropic/claude-sonnet-4",
|
||||
"anthropic/claude-sonnet-4.5",
|
||||
"anthropic/claude-sonnet-4.6",
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ export const VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS = new Set([
|
|||
"anthropic/claude-opus-4.1",
|
||||
"anthropic/claude-opus-4.5",
|
||||
"anthropic/claude-opus-4.6",
|
||||
"anthropic/claude-opus-4.7",
|
||||
"anthropic/claude-sonnet-4",
|
||||
"anthropic/claude-sonnet-4.6",
|
||||
"openai/gpt-4.1",
|
||||
|
|
@ -55,6 +56,7 @@ export const VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS = new Set([
|
|||
"anthropic/claude-opus-4.1",
|
||||
"anthropic/claude-opus-4.5",
|
||||
"anthropic/claude-opus-4.6",
|
||||
"anthropic/claude-opus-4.7",
|
||||
"anthropic/claude-sonnet-4",
|
||||
"anthropic/claude-sonnet-4.6",
|
||||
"google/gemini-1.5-flash",
|
||||
|
|
|
|||
|
|
@ -64,12 +64,13 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
|
|||
// Filter out non-Anthropic blocks (reasoning, thoughtSignature, etc.) before sending to the API
|
||||
const sanitizedMessages = filterNonAnthropicBlocks(messages)
|
||||
|
||||
// Add 1M context beta flag if enabled for supported models (Claude Sonnet 4/4.5/4.6, Opus 4.6)
|
||||
// Add 1M context beta flag if enabled for supported models (Claude Sonnet 4/4.5/4.6, Opus 4.6/4.7)
|
||||
if (
|
||||
(modelId === "claude-sonnet-4-20250514" ||
|
||||
modelId === "claude-sonnet-4-5" ||
|
||||
modelId === "claude-sonnet-4-6" ||
|
||||
modelId === "claude-opus-4-6") &&
|
||||
modelId === "claude-opus-4-6" ||
|
||||
modelId === "claude-opus-4-7") &&
|
||||
this.options.anthropicBeta1MContext
|
||||
) {
|
||||
betas.push("context-1m-2025-08-07")
|
||||
|
|
@ -84,6 +85,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
|
|||
case "claude-sonnet-4-6":
|
||||
case "claude-sonnet-4-5":
|
||||
case "claude-sonnet-4-20250514":
|
||||
case "claude-opus-4-7":
|
||||
case "claude-opus-4-6":
|
||||
case "claude-opus-4-5-20251101":
|
||||
case "claude-opus-4-1-20250805":
|
||||
|
|
@ -150,6 +152,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
|
|||
case "claude-sonnet-4-6":
|
||||
case "claude-sonnet-4-5":
|
||||
case "claude-sonnet-4-20250514":
|
||||
case "claude-opus-4-7":
|
||||
case "claude-opus-4-6":
|
||||
case "claude-opus-4-5-20251101":
|
||||
case "claude-opus-4-1-20250805":
|
||||
|
|
@ -342,7 +345,8 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
|
|||
(id === "claude-sonnet-4-20250514" ||
|
||||
id === "claude-sonnet-4-5" ||
|
||||
id === "claude-sonnet-4-6" ||
|
||||
id === "claude-opus-4-6") &&
|
||||
id === "claude-opus-4-6" ||
|
||||
id === "claude-opus-4-7") &&
|
||||
this.options.anthropicBeta1MContext
|
||||
) {
|
||||
// Use the tier pricing for 1M context
|
||||
|
|
|
|||
|
|
@ -61,14 +61,24 @@ interface BedrockInferenceConfig {
|
|||
// Define interface for Bedrock additional model request fields
|
||||
// This includes thinking configuration, 1M context beta, and other model-specific parameters
|
||||
interface BedrockAdditionalModelFields {
|
||||
thinking?: {
|
||||
type: "enabled"
|
||||
budget_tokens: number
|
||||
thinking?:
|
||||
| {
|
||||
type: "enabled"
|
||||
budget_tokens: number
|
||||
}
|
||||
| {
|
||||
type: "adaptive"
|
||||
}
|
||||
output_config?: {
|
||||
effort?: "low" | "medium" | "high"
|
||||
}
|
||||
anthropic_beta?: string[]
|
||||
[key: string]: any // Add index signature to be compatible with DocumentType
|
||||
}
|
||||
|
||||
// Models that only support thinking.type: "adaptive" (not "enabled" with budget_tokens)
|
||||
const BEDROCK_ADAPTIVE_THINKING_ONLY_MODEL_IDS = ["anthropic.claude-opus-4-7"] as const
|
||||
|
||||
// Define interface for Bedrock payload
|
||||
interface BedrockPayload {
|
||||
modelId: BedrockModelId | string
|
||||
|
|
@ -392,12 +402,28 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH
|
|||
|
||||
if ((isThinkingExplicitlyEnabled || isThinkingEnabledBySettings) && modelConfig.info.supportsReasoningBudget) {
|
||||
thinkingEnabled = true
|
||||
additionalModelRequestFields = {
|
||||
thinking: {
|
||||
type: "enabled",
|
||||
budget_tokens: metadata?.thinking?.maxThinkingTokens || modelConfig.reasoningBudget || 4096,
|
||||
},
|
||||
|
||||
// Opus 4.7 only supports thinking.type: "adaptive" with output_config.effort
|
||||
// (NOT "enabled" with budget_tokens which returns a 400 error)
|
||||
const baseId = this.parseBaseModelId(modelConfig.id)
|
||||
if (BEDROCK_ADAPTIVE_THINKING_ONLY_MODEL_IDS.includes(baseId as any)) {
|
||||
additionalModelRequestFields = {
|
||||
thinking: {
|
||||
type: "adaptive",
|
||||
},
|
||||
output_config: {
|
||||
effort: "high",
|
||||
},
|
||||
}
|
||||
} else {
|
||||
additionalModelRequestFields = {
|
||||
thinking: {
|
||||
type: "enabled",
|
||||
budget_tokens: metadata?.thinking?.maxThinkingTokens || modelConfig.reasoningBudget || 4096,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
logger.info("Extended thinking enabled for Bedrock request", {
|
||||
ctx: "bedrock",
|
||||
modelId: modelConfig.id,
|
||||
|
|
|
|||
|
|
@ -263,6 +263,11 @@ export const parseOpenRouterModel = ({
|
|||
modelInfo.maxTokens = anthropicModels["claude-opus-4-6"].maxTokens
|
||||
}
|
||||
|
||||
// Set claude-opus-4.7 model to use the correct configuration
|
||||
if (id === "anthropic/claude-opus-4.7") {
|
||||
modelInfo.maxTokens = anthropicModels["claude-opus-4-7"].maxTokens
|
||||
}
|
||||
|
||||
// Ensure correct reasoning handling for Claude Haiku 4.5 on OpenRouter
|
||||
// Use budget control and disable effort-based reasoning fallback
|
||||
if (id === "anthropic/claude-haiku-4.5") {
|
||||
|
|
|
|||
|
|
@ -354,7 +354,8 @@ function getSelectedModel({
|
|||
(id === "claude-sonnet-4-20250514" ||
|
||||
id === "claude-sonnet-4-5" ||
|
||||
id === "claude-sonnet-4-6" ||
|
||||
id === "claude-opus-4-6") &&
|
||||
id === "claude-opus-4-6" ||
|
||||
id === "claude-opus-4-7") &&
|
||||
apiConfiguration.anthropicBeta1MContext &&
|
||||
baseInfo
|
||||
) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue