diff --git a/src/complete/completers/chatgpt/chatgpt.tsx b/src/complete/completers/chatgpt/chatgpt.tsx index c88cde1..14939ad 100644 --- a/src/complete/completers/chatgpt/chatgpt.tsx +++ b/src/complete/completers/chatgpt/chatgpt.tsx @@ -140,6 +140,7 @@ export default class ChatGPT implements Model { get_api() { return new OpenAI({ apiKey: this.provider_settings.api_key, + baseURL: this.provider_settings.base_url, dangerouslyAllowBrowser: true, }); } diff --git a/src/complete/completers/chatgpt/provider_settings.tsx b/src/complete/completers/chatgpt/provider_settings.tsx index c3737ed..458211f 100644 --- a/src/complete/completers/chatgpt/provider_settings.tsx +++ b/src/complete/completers/chatgpt/provider_settings.tsx @@ -4,12 +4,14 @@ import { z } from "zod"; export const settings_schema = z.object({ api_key: z.string(), + base_url: z.string(), }); export type Settings = z.infer; const default_settings: Settings = { api_key: "", + base_url: "", }; export const parse_settings = (data: string | null): Settings => { @@ -31,25 +33,46 @@ export function SettingsUI({ settings: string | null; saveSettings: (settings: string) => void; }) { + const parsed_settings = parse_settings(settings); return ( - - Your OpenAI{" "} - - API key - - - } - > - - saveSettings(JSON.stringify({ api_key: e.target.value })) + <> + + Your OpenAI{" "} + + API key + + } - /> - + > + + saveSettings(JSON.stringify({ ...parsed_settings, api_key: e.target.value })) + } + /> + + + + Your OpenAI Base URL + + } + > + + saveSettings(JSON.stringify({ ...parsed_settings, base_url: e.target.value })) + } + /> + + + ); }