@@ -13,6 +13,12 @@ import { BaseProvider } from "./base-provider"
1313import { ANTHROPIC_DEFAULT_MAX_TOKENS } from "./constants"
1414import { SingleCompletionHandler , getModelParams } from "../index"
1515
16+ const ANTHROPIC_MODELS_WITHOUT_SAMPLING_PARAMS = new Set ( [ "claude-fable-5" , "claude-opus-4-8" , "claude-sonnet-4-6" ] )
17+
18+ function omitsSamplingParams ( modelId : string ) {
19+ return ANTHROPIC_MODELS_WITHOUT_SAMPLING_PARAMS . has ( modelId ) || modelId . startsWith ( "claude-opus-4-7" )
20+ }
21+
1622export class AnthropicHandler extends BaseProvider implements SingleCompletionHandler {
1723 private options : ApiHandlerOptions
1824 private client : Anthropic
@@ -34,8 +40,16 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
3440 let stream : AnthropicStream < Anthropic . Messages . RawMessageStreamEvent >
3541 const cacheControl : CacheControlEphemeral = { type : "ephemeral" }
3642 let { id : modelId , maxTokens, thinking, temperature, virtualId } = this . getModel ( )
43+ let requestTemperature : number | undefined = temperature
44+ if ( omitsSamplingParams ( modelId ) ) {
45+ requestTemperature = undefined
46+ }
3747
3848 switch ( modelId ) {
49+ case "claude-fable-5" :
50+ case "claude-opus-4-8" :
51+ case "claude-sonnet-4-6" :
52+ case "claude-haiku-4-5-20251001" :
3953 case "claude-3-7-sonnet-20250219" :
4054 case "claude-3-5-sonnet-20241022" :
4155 case "claude-3-5-haiku-20241022" :
@@ -63,7 +77,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
6377 {
6478 model : modelId ,
6579 max_tokens : maxTokens ?? ANTHROPIC_DEFAULT_MAX_TOKENS ,
66- temperature,
80+ temperature : requestTemperature ,
6781 thinking,
6882 // Setting cache breakpoint for system prompt so new tasks can reuse it.
6983 system : [ { text : systemPrompt , type : "text" , cache_control : cacheControl } ] ,
@@ -129,7 +143,7 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
129143 stream = ( await this . client . messages . create ( {
130144 model : modelId ,
131145 max_tokens : maxTokens ?? ANTHROPIC_DEFAULT_MAX_TOKENS ,
132- temperature,
146+ temperature : requestTemperature ,
133147 system : [ { text : systemPrompt , type : "text" } ] ,
134148 messages,
135149 stream : true ,
@@ -273,12 +287,16 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
273287
274288 async completePrompt ( prompt : string ) {
275289 let { id : model , temperature } = this . getModel ( )
290+ let requestTemperature : number | undefined = temperature
291+ if ( omitsSamplingParams ( model ) ) {
292+ requestTemperature = undefined
293+ }
276294
277295 const message = await this . client . messages . create ( {
278296 model,
279297 max_tokens : ANTHROPIC_DEFAULT_MAX_TOKENS ,
280298 thinking : undefined ,
281- temperature,
299+ temperature : requestTemperature ,
282300 messages : [ { role : "user" , content : prompt } ] ,
283301 stream : false ,
284302 } )
0 commit comments