recoder-shared
Version:
Shared types, utilities, and configurations for Recoder
56 lines • 2.1 kB
JavaScript
/**
* Reasoning and budget utilities
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT_HYBRID_REASONING_MODEL_THINKING_TOKENS = exports.DEFAULT_HYBRID_REASONING_MODEL_MAX_TOKENS = void 0;
exports.shouldUseReasoningBudget = shouldUseReasoningBudget;
exports.shouldUseReasoningEffort = shouldUseReasoningEffort;
exports.getModelMaxOutputTokens = getModelMaxOutputTokens;
exports.DEFAULT_HYBRID_REASONING_MODEL_MAX_TOKENS = 16384;
exports.DEFAULT_HYBRID_REASONING_MODEL_THINKING_TOKENS = 8192;
function shouldUseReasoningBudget(modelOrOptions) {
if (typeof modelOrOptions === 'string') {
// Check if model supports reasoning budget
const reasoningModels = [
'claude-3-opus-20240229',
'claude-3-sonnet-20240229',
'claude-3-5-sonnet-20241022',
'gpt-4',
'gpt-4-turbo'
];
return reasoningModels.some(m => modelOrOptions.includes(m));
}
// For the object form, check model properties
const { model } = modelOrOptions;
return shouldUseReasoningBudget(model.description || '');
}
function shouldUseReasoningEffort(options) {
// Check if model supports reasoning effort (traditional reasoning models)
const { model } = options;
const modelName = model.description || '';
const reasoningEffortModels = [
'o1-preview',
'o1-mini',
'o3-mini'
];
return reasoningEffortModels.some(m => modelName.includes(m));
}
function getModelMaxOutputTokens(options) {
const { model, settings } = options;
// Use custom max tokens from settings if provided
if (settings.modelMaxTokens) {
return settings.modelMaxTokens;
}
// Use model's maxTokens if available
if (model.maxTokens && model.maxTokens > 0) {
return model.maxTokens;
}
// For reasoning models, use default
if (shouldUseReasoningBudget(options)) {
return exports.DEFAULT_HYBRID_REASONING_MODEL_MAX_TOKENS;
}
// Default fallback
return undefined;
}
//# sourceMappingURL=reasoning.js.map
;