|
|
@@ -4,13 +4,15 @@ import type { RouteDefaultsInput } from "../route/client"
|
|
|
import { AuthOptions, type ProviderAuthOption } from "../route/auth-options"
|
|
|
import type { ProviderPackage } from "../provider-package"
|
|
|
import { profiles, type OpenAICompatibleProfile } from "./openai-compatible-profile"
|
|
|
+import type { OpenAIProviderOptionsInput } from "./openai-options"
|
|
|
|
|
|
export const id = ProviderID.make("openai-compatible")
|
|
|
|
|
|
-type GenericModelOptions = RouteDefaultsInput &
|
|
|
+type GenericModelOptions = Omit<RouteDefaultsInput, "providerOptions"> &
|
|
|
ProviderAuthOption<"optional"> & {
|
|
|
readonly provider?: string
|
|
|
readonly baseURL: string
|
|
|
+ readonly providerOptions?: OpenAIProviderOptionsInput
|
|
|
}
|
|
|
|
|
|
export interface Settings extends ProviderPackage.Settings {
|
|
|
@@ -19,9 +21,10 @@ export interface Settings extends ProviderPackage.Settings {
|
|
|
readonly provider?: string
|
|
|
}
|
|
|
|
|
|
-export type FamilyModelOptions = RouteDefaultsInput &
|
|
|
+export type FamilyModelOptions = Omit<RouteDefaultsInput, "providerOptions"> &
|
|
|
ProviderAuthOption<"optional"> & {
|
|
|
readonly baseURL?: string
|
|
|
+ readonly providerOptions?: OpenAIProviderOptionsInput
|
|
|
}
|
|
|
|
|
|
export const routes = [OpenAICompatibleChat.route]
|
|
|
@@ -37,7 +40,8 @@ export const configure = (input: GenericModelOptions) => {
|
|
|
})
|
|
|
return {
|
|
|
id: ProviderID.make(provider),
|
|
|
- model: (modelID: string | ModelID) => route.model({ id: modelID, provider: ProviderID.make(provider) }),
|
|
|
+ model: (modelID: string | ModelID) =>
|
|
|
+ route.model<OpenAIProviderOptionsInput>({ id: modelID, provider: ProviderID.make(provider) }),
|
|
|
configure,
|
|
|
}
|
|
|
}
|
|
|
@@ -63,7 +67,7 @@ export const provider = {
|
|
|
configure,
|
|
|
}
|
|
|
|
|
|
-export const model: ProviderPackage.Definition<Settings>["model"] = (modelID, settings) =>
|
|
|
+export const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>["model"] = (modelID, settings) =>
|
|
|
configure({
|
|
|
apiKey: settings.apiKey,
|
|
|
baseURL: settings.baseURL,
|