feat(ai): type OpenAI request options (#39495)
This commit is contained in:
parent
333a090975
commit
8a96b80aec
2 changed files with 26 additions and 6 deletions
|
|
@ -86,10 +86,15 @@ export const configure = (input: Config = {}) => {
|
||||||
const chatRoute = configuredRoute(OpenAIChat.route, input)
|
const chatRoute = configuredRoute(OpenAIChat.route, input)
|
||||||
const modelDefaults = defaults(input)
|
const modelDefaults = defaults(input)
|
||||||
const responses = (id: string | ModelID) =>
|
const responses = (id: string | ModelID) =>
|
||||||
responsesRoute.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true })).model({ id })
|
responsesRoute
|
||||||
|
.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true }))
|
||||||
|
.model<OpenAIProviderOptionsInput>({ id })
|
||||||
const responsesWebSocket = (id: string | ModelID) =>
|
const responsesWebSocket = (id: string | ModelID) =>
|
||||||
responsesWebSocketRoute.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true })).model({ id })
|
responsesWebSocketRoute
|
||||||
const chat = (id: string | ModelID) => chatRoute.with(withOpenAIOptions(id, modelDefaults)).model({ id })
|
.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true }))
|
||||||
|
.model<OpenAIProviderOptionsInput>({ id })
|
||||||
|
const chat = (id: string | ModelID) =>
|
||||||
|
chatRoute.with(withOpenAIOptions(id, modelDefaults)).model<OpenAIProviderOptionsInput>({ id })
|
||||||
const image = (modelID: string | ModelID) =>
|
const image = (modelID: string | ModelID) =>
|
||||||
OpenAIImages.model({
|
OpenAIImages.model({
|
||||||
id: modelID,
|
id: modelID,
|
||||||
|
|
@ -132,15 +137,17 @@ const config = (settings: Settings): Config => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const model: ProviderPackage.Definition<Settings>["model"] = (modelID, settings) => {
|
export const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>["model"] = (modelID, settings) => {
|
||||||
const configured = configure(config(settings))
|
const configured = configure(config(settings))
|
||||||
if (settings.transport === undefined || settings.transport === "http") return configured.responses(modelID)
|
if (settings.transport === undefined || settings.transport === "http") return configured.responses(modelID)
|
||||||
if (settings.transport === "websocket") return configured.responsesWebSocket(modelID)
|
if (settings.transport === "websocket") return configured.responsesWebSocket(modelID)
|
||||||
throw new Error(`Unsupported OpenAI Responses transport: ${String(settings.transport)}`)
|
throw new Error(`Unsupported OpenAI Responses transport: ${String(settings.transport)}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const chatModel: ProviderPackage.Definition<Settings>["model"] = (modelID, settings) =>
|
export const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>["model"] = (
|
||||||
configure(config(settings)).chat(modelID)
|
modelID,
|
||||||
|
settings,
|
||||||
|
) => configure(config(settings)).chat(modelID)
|
||||||
export const responses = provider.responses
|
export const responses = provider.responses
|
||||||
export const responsesWebSocket = provider.responsesWebSocket
|
export const responsesWebSocket = provider.responsesWebSocket
|
||||||
export const chat = provider.chat
|
export const chat = provider.chat
|
||||||
|
|
|
||||||
13
packages/ai/test/provider-options/openai.types.ts
Normal file
13
packages/ai/test/provider-options/openai.types.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { LLM } from "../../src"
|
||||||
|
import { OpenAI } from "../../src/providers"
|
||||||
|
|
||||||
|
const model = OpenAI.responses("gpt-5")
|
||||||
|
|
||||||
|
LLM.request({ model, prompt: "Hello", providerOptions: { openai: { reasoningEffort: "high" } } })
|
||||||
|
|
||||||
|
LLM.request({
|
||||||
|
model,
|
||||||
|
prompt: "Hello",
|
||||||
|
// @ts-expect-error OpenAI reasoning effort must be a string.
|
||||||
|
providerOptions: { openai: { reasoningEffort: 1 } },
|
||||||
|
})
|
||||||
Loading…
Add table
Add a link
Reference in a new issue