@openai/agents-core
Version:
The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.
110 lines • 4.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OPENAI_DEFAULT_MODEL_ENV_VARIABLE_NAME = void 0;
exports.gpt5ReasoningSettingsRequired = gpt5ReasoningSettingsRequired;
exports.isGpt5OrNewerReasoningModel = isGpt5OrNewerReasoningModel;
exports.isGpt5OrNewerDefault = isGpt5OrNewerDefault;
exports.isGpt5Default = isGpt5Default;
exports.getDefaultModel = getDefaultModel;
exports.getDefaultModelSettings = getDefaultModelSettings;
const config_1 = require("./config.js");
exports.OPENAI_DEFAULT_MODEL_ENV_VARIABLE_NAME = 'OPENAI_DEFAULT_MODEL';
const GPT_5_CHAT_MODEL_PATTERNS = [
/^gpt-5-chat-latest$/,
/^gpt-5\.1-chat-latest$/,
/^gpt-5\.2-chat-latest$/,
/^gpt-5\.3-chat-latest$/,
];
/**
* Returns True if the model name is a GPT-5 model and reasoning settings are required.
*/
function gpt5ReasoningSettingsRequired(modelName) {
if (GPT_5_CHAT_MODEL_PATTERNS.some((pattern) => pattern.test(modelName))) {
// Chat-latest aliases do not accept reasoning.effort.
return false;
}
// matches any of gpt-5 models
return modelName.startsWith('gpt-5');
}
/**
* Identifies the GPT-5-and-newer settings family, excluding known chat aliases.
* Membership does not require a model-specific default reasoning effort.
*/
function isGpt5OrNewerReasoningModel(modelName) {
if (GPT_5_CHAT_MODEL_PATTERNS.some((pattern) => pattern.test(modelName))) {
return false;
}
const version = /^gpt-(\d+)(?:\.\d+)?(?:-|$)/.exec(modelName);
return version !== null && Number(version[1]) >= 5;
}
/**
* Returns whether the default model belongs to the GPT-5-and-newer settings family.
*/
function isGpt5OrNewerDefault() {
return isGpt5OrNewerReasoningModel(getDefaultModel());
}
const DEFAULT_REASONING_EFFORT_PATTERNS = [
[/^gpt-6-astra$/, 'low'],
[/^gpt-5(?:-\d{4}-\d{2}-\d{2})?$/, 'low'],
[/^gpt-5\.1(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.2(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.2-pro(?:-\d{4}-\d{2}-\d{2})?$/, 'medium'],
[/^gpt-5\.2-codex$/, 'low'],
[/^gpt-5\.3-codex$/, 'none'],
[/^gpt-5\.4(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.4-pro(?:-\d{4}-\d{2}-\d{2})?$/, 'medium'],
[/^gpt-5\.4-mini(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.4-nano(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.5(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.6$/, 'none'],
[/^gpt-5\.6-sol(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.6-terra(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
[/^gpt-5\.6-luna(?:-\d{4}-\d{2}-\d{2})?$/, 'none'],
];
function getDefaultReasoningEffort(modelName) {
for (const [pattern, effort] of DEFAULT_REASONING_EFFORT_PATTERNS) {
if (pattern.test(modelName)) {
return effort;
}
}
return undefined;
}
/**
* Returns True if the default model is a GPT-5 model.
* This is used to determine if the default model settings are compatible with GPT-5 models.
* If the default model is not a GPT-5 model, the model settings are compatible with other models.
*/
function isGpt5Default() {
return gpt5ReasoningSettingsRequired(getDefaultModel());
}
/**
* Returns the default model name.
*/
function getDefaultModel() {
const env = (0, config_1.loadEnv)();
return (env[exports.OPENAI_DEFAULT_MODEL_ENV_VARIABLE_NAME]?.toLowerCase() ?? 'gpt-5.6-luna');
}
/**
* Returns the default model settings.
* GPT-5-and-newer reasoning models receive model-specific defaults when known.
* Otherwise, returns the legacy default model settings.
*/
function getDefaultModelSettings(model) {
const _model = model ?? getDefaultModel();
if (isGpt5OrNewerReasoningModel(_model)) {
const effort = getDefaultReasoningEffort(_model);
if (effort !== undefined) {
return {
reasoning: { effort },
text: { verbosity: 'low' },
};
}
return {
// Keep the shared text verbosity default, but omit reasoning.effort for
// variants whose supported values are not confirmed yet.
text: { verbosity: 'low' },
};
}
return {};
}
//# sourceMappingURL=defaultModel.js.map