From 9ba11989b5cef44ef2a5ffa147e15f5f8989314c Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Fri, 15 Dec 2023 12:30:11 -0500 Subject: [PATCH] Restored "OpenAIAPICompletionURL" preferences setting for 13.3 users --- Source/Chatbook/PreferencesContent.wl | 50 +++++++++++++++++++++++---- Source/Chatbook/SendChat.wl | 9 ++--- Source/Chatbook/Services.wl | 2 +- 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/Source/Chatbook/PreferencesContent.wl b/Source/Chatbook/PreferencesContent.wl index 82602f51..45771a8b 100644 --- a/Source/Chatbook/PreferencesContent.wl +++ b/Source/Chatbook/PreferencesContent.wl @@ -310,7 +310,7 @@ createNotebookSettingsPanel // endDefinition; makeDefaultSettingsContent // beginDefinition; makeDefaultSettingsContent[ ] := Enclose[ - Module[ { assistanceCheckbox, personaSelector, modelSelector, temperatureInput }, + Module[ { assistanceCheckbox, personaSelector, modelSelector, temperatureInput, openAICompletionURLInput }, (* Checkbox to enable automatic assistance for normal shift-enter evaluations: *) assistanceCheckbox = ConfirmMatch[ makeAssistanceCheckbox[ ], _Style, "AssistanceCheckbox" ]; (* The personaSelector is a pop-up menu for selecting the default persona: *) @@ -319,14 +319,21 @@ makeDefaultSettingsContent[ ] := Enclose[ modelSelector = ConfirmMatch[ makeModelSelector[ ], _Dynamic, "ModelSelector" ]; (* The temperatureInput is an input field for setting the default 'temperature' for responses: *) temperatureInput = ConfirmMatch[ makeTemperatureInput[ ], _Style, "TemperatureInput" ]; + (* The openAICompletionURLInput is an input field for setting URL used for API calls to OpenAI: *) + openAICompletionURLInput = ConfirmMatch[ + makeOpenAICompletionURLInput[ ], + _Style|Nothing, (* Returns Nothing if we're relying on LLMServices for API requests *) + "OpenAICompletionURLInput" + ]; (* Assemble the persona selector, model selector, and temperature slider into a grid layout: *) Grid[ - { - { assistanceCheckbox }, - { personaSelector }, - { modelSelector }, - { temperatureInput } + List /@ { + assistanceCheckbox, + personaSelector, + modelSelector, + temperatureInput, + openAICompletionURLInput }, Alignment -> { Left, Baseline }, Spacings -> { 0, 0.7 } @@ -749,6 +756,37 @@ makeTemperatureInput[ ] := highlightControl[ makeTemperatureInput // endDefinition; +(* ::**************************************************************************************************************:: *) +(* ::Subsubsection::Closed:: *) +(*makeOpenAICompletionURLInput*) +makeOpenAICompletionURLInput // beginDefinition; + +makeOpenAICompletionURLInput[ ] := + makeOpenAICompletionURLInput @ $useLLMServices; + +makeOpenAICompletionURLInput[ True ] := + Nothing; + +makeOpenAICompletionURLInput[ False ] := highlightControl[ + prefsInputField[ + "Chat Completion URL:", + scopedDynamic[ + (* cSpell: ignore AIAPI *) + CurrentChatSettings[ $preferencesScope, "OpenAIAPICompletionURL" ], + { + None, + If[ StringQ @ #, CurrentChatSettings[ $preferencesScope, "OpenAIAPICompletionURL" ] = # ] & + } + ], + String, + ImageSize -> { 200, Automatic } + ], + "Notebooks", + "OpenAIAPICompletionURL" +]; + +makeOpenAICompletionURLInput // endDefinition; + (* ::**************************************************************************************************************:: *) (* ::Subsection::Closed:: *) (*makeInterfaceContent*) diff --git a/Source/Chatbook/SendChat.wl b/Source/Chatbook/SendChat.wl index 305a0e3d..5249e805 100644 --- a/Source/Chatbook/SendChat.wl +++ b/Source/Chatbook/SendChat.wl @@ -300,12 +300,13 @@ sendChat // endDefinition; (*makeHTTPRequest*) makeHTTPRequest // beginDefinition; -(* cSpell: ignore ENDTOOLCALL *) +(* cSpell: ignore ENDTOOLCALL, AIAPI *) makeHTTPRequest[ settings_Association? AssociationQ, messages: { __Association } ] := - Enclose @ Module[ { key, stream, model, tokens, temperature, topP, freqPenalty, presPenalty, data, body, apiCompletionURL }, + Enclose @ Module[ + { key, stream, model, tokens, temperature, topP, freqPenalty, presPenalty, data, body, apiCompletionURL }, - key = ConfirmBy[ Lookup[ settings, "OpenAIKey" ], StringQ ]; - stream = True; + key = ConfirmBy[ Lookup[ settings, "OpenAIKey" ], StringQ ]; + stream = True; apiCompletionURL = ConfirmBy[ Lookup[ settings, "OpenAIAPICompletionURL" ], StringQ ]; (* model parameters *) diff --git a/Source/Chatbook/Services.wl b/Source/Chatbook/Services.wl index 62e29afc..b0d4a7e2 100644 --- a/Source/Chatbook/Services.wl +++ b/Source/Chatbook/Services.wl @@ -192,7 +192,7 @@ $availableServices := getAvailableServices[ ]; (*getAvailableServices*) getAvailableServices // beginDefinition; getAvailableServices[ ] := getAvailableServices @ $useLLMServices; -getAvailableServices[ False ] := $fallBackServices; +getAvailableServices[ False ] := getAvailableServices0 @ $fallBackServices; getAvailableServices[ True ] := getAvailableServices0[ ]; getAvailableServices // endDefinition;