UNPKG

@openai/agents-core

Version:

The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.

101 lines • 3.76 kB
import { loadEnv } from "./config.mjs"; export const 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. */ export 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. */ export 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. */ export 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. */ export function isGpt5Default() { return gpt5ReasoningSettingsRequired(getDefaultModel()); } /** * Returns the default model name. */ export function getDefaultModel() { const env = loadEnv(); return (env[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. */ export 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.mjs.map