diff --git a/packages/ai/src/providers/google-vertex-responses.ts b/packages/ai/src/providers/google-vertex-responses.ts index e36c67472c1..d03358f36c1 100644 --- a/packages/ai/src/providers/google-vertex-responses.ts +++ b/packages/ai/src/providers/google-vertex-responses.ts @@ -1,8 +1,9 @@ import type { ProviderPackage } from "../provider-package" import { OpenAICompatibleResponses } from "../protocols/openai-compatible-responses" import type { RouteDefaultsInput } from "../route/client" -import { ProviderID, type ModelID, type ProviderOptions } from "../schema" +import { ProviderID, type ModelID } from "../schema" import { GoogleVertexShared } from "./google-vertex-shared" +import type { OpenResponsesProviderOptionsInput } from "./open-responses-options" export const id = ProviderID.make("google-vertex") @@ -11,6 +12,7 @@ export type Config = RouteDefaultsInput & readonly baseURL?: string readonly location?: string readonly project?: string + readonly providerOptions?: OpenResponsesProviderOptionsInput } export interface Settings extends ProviderPackage.Settings { @@ -19,7 +21,7 @@ export interface Settings extends ProviderPackage.Settings { readonly baseURL?: string readonly location?: string readonly project?: string - readonly providerOptions?: ProviderOptions + readonly providerOptions?: OpenResponsesProviderOptionsInput } const route = OpenAICompatibleResponses.route.with({ @@ -58,7 +60,7 @@ export const configure = (input: Config = {}) => { const route = configuredRoute(input) return { id, - model: (modelID: string | ModelID) => route.model({ id: modelID }), + model: (modelID: string | ModelID) => route.model({ id: modelID }), configure, } } @@ -68,7 +70,10 @@ export const provider = { configure, } -export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { +export const model: ProviderPackage.Definition["model"] = ( + modelID, + settings, +) => { if (settings.apiKey !== undefined) throw new Error("Google Vertex Responses does not support API keys") return configure({ accessToken: settings.accessToken, diff --git a/packages/ai/test/provider-options/google-vertex-responses.types.ts b/packages/ai/test/provider-options/google-vertex-responses.types.ts new file mode 100644 index 00000000000..3a646891022 --- /dev/null +++ b/packages/ai/test/provider-options/google-vertex-responses.types.ts @@ -0,0 +1,13 @@ +import { LLM } from "../../src" +import { GoogleVertexResponses } from "../../src/providers" + +const model = GoogleVertexResponses.configure({ accessToken: "test", project: "project" }).model("gemini") + +LLM.request({ model, prompt: "Hello", providerOptions: { openresponses: { textVerbosity: "high" } } }) + +LLM.request({ + model, + prompt: "Hello", + // @ts-expect-error Vertex Responses verbosity uses the Open Responses union. + providerOptions: { openresponses: { textVerbosity: "verbose" } }, +})