diff --git a/packages/core/src/v1/config/provider-options.ts b/packages/core/src/v1/config/provider-options.ts index a441a1a211..9506a6a2b0 100644 --- a/packages/core/src/v1/config/provider-options.ts +++ b/packages/core/src/v1/config/provider-options.ts @@ -40,7 +40,14 @@ const openai: Lowerer = { settings: omit(options, ["apiKey", "baseURL", "organization", "project", "headers", "body"]), } }, - request: snake, + request(options) { + const result = snake(options) + if (options.textVerbosity !== undefined) { + result.text = { ...(isRecord(result.text) ? result.text : {}), verbosity: options.textVerbosity } + delete result.text_verbosity + } + return result + }, } const anthropic: Lowerer = { diff --git a/packages/core/test/config/provider-options.test.ts b/packages/core/test/config/provider-options.test.ts index a407353d09..3edd9ed074 100644 --- a/packages/core/test/config/provider-options.test.ts +++ b/packages/core/test/config/provider-options.test.ts @@ -39,8 +39,16 @@ describe("ConfigProviderOptionsV1", () => { body: { store: true }, settings: { timeout: 1000 }, }) - expect(lowerer.request({ reasoningEffort: "high", nestedValue: { camelCase: true } })).toEqual({ + expect( + lowerer.request({ + reasoningEffort: "high", + textVerbosity: "low", + text: { outputFormat: "plain" }, + nestedValue: { camelCase: true }, + }), + ).toEqual({ reasoning_effort: "high", + text: { output_format: "plain", verbosity: "low" }, nested_value: { camel_case: true }, }) }) @@ -130,7 +138,10 @@ describe("ConfigProviderOptionsV1", () => { body: { trace: true }, settings: { resourceName: "resource" }, }) - expect(lowerer.request({ reasoningEffort: "high" })).toEqual({ reasoning_effort: "high" }) + expect(lowerer.request({ reasoningEffort: "high", textVerbosity: "low" })).toEqual({ + reasoning_effort: "high", + text: { verbosity: "low" }, + }) }) test("lowers Amazon Bedrock provider and request options", () => {