@@ -11,6 +11,7 @@ export class OpenAiModelProvider extends GenkitModelProvider {
1111 'openai-o3' : ( ) => openAI . model ( 'o3' ) ,
1212 'openai-o4-mini' : ( ) => openAI . model ( 'o4-mini' ) ,
1313 'openai-gpt-5' : ( ) => openAI . model ( 'gpt-5' ) ,
14+ 'openai-gpt-5.1' : ( ) => openAI . model ( 'gpt-5.1' ) ,
1415 } ;
1516
1617 private countTokensForModel (
@@ -60,9 +61,22 @@ export class OpenAiModelProvider extends GenkitModelProvider {
6061 interval : 1000 * 60 * 1.5 , // Refresh tokens after 1.5 minutes to be on the safe side.
6162 } ) ,
6263 tokensPerMinute : new RateLimiter ( {
63- tokensPerInterval : 30_000 * 0.75 , // *0.75 to be more resilient to token count deviations
64+ tokensPerInterval : 500_000 * 0.75 , // *0.75 to be more resilient to token count deviations
65+ interval : 1000 * 60 * 1.5 , // Refresh tokens after 1.5 minutes to be on the safe side.
66+ } ) ,
67+ countTokens : async prompt => this . countTokensForModel ( 'gpt-5' , prompt ) ,
68+ } ,
69+ // See: https://platform.openai.com/docs/models/gpt-5.1
70+ 'openai/gpt-5.1' : {
71+ requestPerMinute : new RateLimiter ( {
72+ tokensPerInterval : 500 ,
73+ interval : 1000 * 60 * 1.5 , // Refresh tokens after 1.5 minutes to be on the safe side.
74+ } ) ,
75+ tokensPerMinute : new RateLimiter ( {
76+ tokensPerInterval : 500_000 * 0.75 , // *0.75 to be more resilient to token count deviations
6477 interval : 1000 * 60 * 1.5 , // Refresh tokens after 1.5 minutes to be on the safe side.
6578 } ) ,
79+ // TODO: Consider selecting GPT5.1 if available; but it's GPT5 counting should work too.
6680 countTokens : async prompt => this . countTokensForModel ( 'gpt-5' , prompt ) ,
6781 } ,
6882 } ;
0 commit comments