UNPKG

@openai/agents-core

Version:

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

101 lines • 4.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeModelSettings = void 0; exports.selectModel = selectModel; exports.maybeResetToolChoice = maybeResetToolChoice; exports.adjustModelSettingsForLegacyModel = adjustModelSettingsForLegacyModel; const agent_1 = require("../agent.js"); const defaultModel_1 = require("../defaultModel.js"); var modelSettingsMerge_1 = require("./modelSettingsMerge.js"); Object.defineProperty(exports, "mergeModelSettings", { enumerable: true, get: function () { return modelSettingsMerge_1.mergeModelSettings; } }); const hasReasoningModelSettings = (settings) => { const providerData = settings?.providerData; return Boolean(providerData?.reasoning || providerData?.text?.verbosity || providerData ?.reasoning_effort); }; /** * Resolves the effective model for the next turn by giving precedence to the agent-specific * configuration when present, otherwise falling back to the runner-level default. */ function selectModel(agentModel, runConfigModel) { if ((typeof agentModel === 'string' && agentModel !== agent_1.Agent.DEFAULT_MODEL_PLACEHOLDER) || agentModel) { return agentModel; } return runConfigModel ?? agentModel ?? agent_1.Agent.DEFAULT_MODEL_PLACEHOLDER; } /** * Resets the tool choice when the agent is configured to prefer a fresh tool selection after * any tool usage. This prevents the provider from reusing stale tool hints across turns. */ function maybeResetToolChoice(agent, toolUseTracker, modelSettings) { if (agent.resetToolChoice && toolUseTracker.hasUsedTools(agent) && modelSettings.toolChoice !== 'none') { return { ...modelSettings, toolChoice: undefined }; } return modelSettings; } /** * Preserves legacy settings cleanup for explicitly selected models outside the * GPT-5-and-newer reasoning family when the default model belongs to that family. */ function adjustModelSettingsForLegacyModel(explicitlyModelSet, agentModelSettings, modelSettings, resolvedModelName) { // Only a resolved string selection establishes model identity. const isLegacyModel = typeof resolvedModelName === 'string' && !(0, defaultModel_1.isGpt5OrNewerReasoningModel)(resolvedModelName); const hasReasoningSettings = hasReasoningModelSettings(agentModelSettings) || hasReasoningModelSettings(modelSettings); if ((0, defaultModel_1.isGpt5OrNewerDefault)() && explicitlyModelSet && isLegacyModel && hasReasoningSettings) { return stripReasoningModelSettings(modelSettings); } return modelSettings; } function stripReasoningModelSettings(modelSettings) { const copiedProviderData = modelSettings.providerData ? { ...modelSettings.providerData } : undefined; if (copiedProviderData) { if (copiedProviderData.text && typeof copiedProviderData.text === 'object') { copiedProviderData.text = { ...copiedProviderData.text }; delete copiedProviderData.text.verbosity; } delete copiedProviderData.reasoning; delete copiedProviderData.reasoning_effort; } const copiedModelSettings = { ...modelSettings, providerData: copiedProviderData, }; if (modelSettings.retry) { copiedModelSettings.retry = { ...modelSettings.retry }; if (modelSettings.retry.backoff) { copiedModelSettings.retry.backoff = { ...modelSettings.retry.backoff }; } } if (modelSettings.reasoning) { copiedModelSettings.reasoning = { ...modelSettings.reasoning }; } if (modelSettings.text) { copiedModelSettings.text = { ...modelSettings.text }; } delete copiedModelSettings.providerData?.reasoning; delete copiedModelSettings.providerData?.text?.verbosity; delete copiedModelSettings.providerData?.reasoning_effort; if (copiedModelSettings.reasoning) { delete copiedModelSettings.reasoning.effort; delete copiedModelSettings.reasoning.summary; } if (copiedModelSettings.text) { delete copiedModelSettings.text.verbosity; } return copiedModelSettings; } //# sourceMappingURL=modelSettings.js.map