diff --git a/src/modules/llms/store-llms.ts b/src/modules/llms/store-llms.ts index dd7336d20..e44b38ffc 100644 --- a/src/modules/llms/store-llms.ts +++ b/src/modules/llms/store-llms.ts @@ -272,7 +272,7 @@ export function useChatLLM() { /** * Source-specific read/write - great time saver */ -export function useSourceSetup(sourceId: DModelSourceId, getAccess: (partialSetup?: Partial) => TAccess) { +export function useSourceSetup(sourceId: DModelSourceId, getTransportAccess: (partialSetup?: Partial) => TAccess) { // invalidate when the setup changes const { updateSourceSetup, ...rest } = useModelsStore(state => { const source: DModelSource | null = state.sources.find(source => source.id === sourceId) ?? null; @@ -281,7 +281,7 @@ export function useSourceSetup(sourceId: DModelSourceId, source, sourceLLMs, sourceHasLLMs: !!sourceLLMs.length, - access: getAccess(source?.setup), + access: getTransportAccess(source?.setup), updateSourceSetup: state.updateSourceSetup, }; }, shallow); diff --git a/src/modules/llms/transports/streamChat.ts b/src/modules/llms/transports/streamChat.ts index ae117b4c0..3dfb5de85 100644 --- a/src/modules/llms/transports/streamChat.ts +++ b/src/modules/llms/transports/streamChat.ts @@ -27,7 +27,7 @@ export async function streamChat( onUpdate: (update: Partial<{ text: string, typing: boolean, originLLM: string }>, done: boolean) => void, ): Promise { const { llm, vendor } = findVendorForLlmOrThrow(llmId); - const access = vendor.getAccess(llm._source.setup) as ChatStreamInputSchema['access']; + const access = vendor.getTransportAccess(llm._source.setup) as ChatStreamInputSchema['access']; return await vendorStreamChat(access, llm, messages, abortSignal, onUpdate); } diff --git a/src/modules/llms/vendors/IModelVendor.ts b/src/modules/llms/vendors/IModelVendor.ts index f1d9c8db4..c05231d80 100644 --- a/src/modules/llms/vendors/IModelVendor.ts +++ b/src/modules/llms/vendors/IModelVendor.ts @@ -24,7 +24,8 @@ export interface IModelVendor TSourceSetup; - getAccess(setup?: Partial): TAccess; + // get a TAccess object, translating from TSourceSetup + getTransportAccess(setup?: Partial): TAccess; callChatGenerate(llm: TDLLM, messages: VChatMessageIn[], maxTokens?: number): Promise; diff --git a/src/modules/llms/vendors/anthropic/AnthropicSourceSetup.tsx b/src/modules/llms/vendors/anthropic/AnthropicSourceSetup.tsx index c93eba4cb..dbbe9dd44 100644 --- a/src/modules/llms/vendors/anthropic/AnthropicSourceSetup.tsx +++ b/src/modules/llms/vendors/anthropic/AnthropicSourceSetup.tsx @@ -23,7 +23,7 @@ export function AnthropicSourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, sourceHasLLMs, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorAnthropic.getAccess); + useSourceSetup(props.sourceId, ModelVendorAnthropic.getTransportAccess); // derived state const { anthropicKey, anthropicHost, heliconeKey } = access; diff --git a/src/modules/llms/vendors/anthropic/anthropic.vendor.ts b/src/modules/llms/vendors/anthropic/anthropic.vendor.ts index e289b8eac..d2d366b58 100644 --- a/src/modules/llms/vendors/anthropic/anthropic.vendor.ts +++ b/src/modules/llms/vendors/anthropic/anthropic.vendor.ts @@ -36,14 +36,14 @@ export const ModelVendorAnthropic: IModelVendor ({ + getTransportAccess: (partialSetup): AnthropicAccessSchema => ({ dialect: 'anthropic', anthropicKey: partialSetup?.anthropicKey || '', anthropicHost: partialSetup?.anthropicHost || null, heliconeKey: partialSetup?.heliconeKey || null, }), callChatGenerate(llm, messages: VChatMessageIn[], maxTokens?: number): Promise { - return anthropicCallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, /*null, null,*/ maxTokens); + return anthropicCallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, /*null, null,*/ maxTokens); }, callChatGenerateWF(): Promise { throw new Error('Anthropic does not support "Functions" yet'); diff --git a/src/modules/llms/vendors/azure/AzureSourceSetup.tsx b/src/modules/llms/vendors/azure/AzureSourceSetup.tsx index 9d94323c1..363b26f57 100644 --- a/src/modules/llms/vendors/azure/AzureSourceSetup.tsx +++ b/src/modules/llms/vendors/azure/AzureSourceSetup.tsx @@ -18,7 +18,7 @@ export function AzureSourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, sourceHasLLMs, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorAzure.getAccess); + useSourceSetup(props.sourceId, ModelVendorAzure.getTransportAccess); // derived state const { oaiKey: azureKey, oaiHost: azureEndpoint } = access; diff --git a/src/modules/llms/vendors/azure/azure.vendor.ts b/src/modules/llms/vendors/azure/azure.vendor.ts index 7e211e3d5..66b585e4a 100644 --- a/src/modules/llms/vendors/azure/azure.vendor.ts +++ b/src/modules/llms/vendors/azure/azure.vendor.ts @@ -50,7 +50,7 @@ export const ModelVendorAzure: IModelVendor ({ + getTransportAccess: (partialSetup): OpenAIAccessSchema => ({ dialect: 'azure', oaiKey: partialSetup?.azureKey || '', oaiOrg: '', @@ -59,9 +59,9 @@ export const ModelVendorAzure: IModelVendor { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); }, callChatGenerateWF(llm, messages: VChatMessageIn[], functions: VChatFunctionIn[] | null, forceFunctionName: string | null, maxTokens?: number): Promise { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); }, }; \ No newline at end of file diff --git a/src/modules/llms/vendors/localai/LocalAISourceSetup.tsx b/src/modules/llms/vendors/localai/LocalAISourceSetup.tsx index 16fb11ad3..cc734aea2 100644 --- a/src/modules/llms/vendors/localai/LocalAISourceSetup.tsx +++ b/src/modules/llms/vendors/localai/LocalAISourceSetup.tsx @@ -19,7 +19,7 @@ export function LocalAISourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorLocalAI.getAccess); + useSourceSetup(props.sourceId, ModelVendorLocalAI.getTransportAccess); // derived state const { oaiHost } = access; diff --git a/src/modules/llms/vendors/localai/localai.vendor.ts b/src/modules/llms/vendors/localai/localai.vendor.ts index 52d00a6a4..0a35df050 100644 --- a/src/modules/llms/vendors/localai/localai.vendor.ts +++ b/src/modules/llms/vendors/localai/localai.vendor.ts @@ -30,7 +30,7 @@ export const ModelVendorLocalAI: IModelVendor ({ oaiHost: 'http://localhost:8080', }), - getAccess: (partialSetup) => ({ + getTransportAccess: (partialSetup) => ({ dialect: 'localai', oaiKey: '', oaiOrg: '', @@ -39,9 +39,9 @@ export const ModelVendorLocalAI: IModelVendor { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); }, callChatGenerateWF(llm, messages: VChatMessageIn[], functions: VChatFunctionIn[] | null, forceFunctionName: string | null, maxTokens?: number): Promise { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); }, }; \ No newline at end of file diff --git a/src/modules/llms/vendors/ollama/OllamaSourceSetup.tsx b/src/modules/llms/vendors/ollama/OllamaSourceSetup.tsx index e8792d454..6133d7987 100644 --- a/src/modules/llms/vendors/ollama/OllamaSourceSetup.tsx +++ b/src/modules/llms/vendors/ollama/OllamaSourceSetup.tsx @@ -22,7 +22,7 @@ export function OllamaSourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorOllama.getAccess); + useSourceSetup(props.sourceId, ModelVendorOllama.getTransportAccess); // derived state const { ollamaHost } = access; diff --git a/src/modules/llms/vendors/ollama/ollama.vendor.ts b/src/modules/llms/vendors/ollama/ollama.vendor.ts index 5519485a5..9bb2b051e 100644 --- a/src/modules/llms/vendors/ollama/ollama.vendor.ts +++ b/src/modules/llms/vendors/ollama/ollama.vendor.ts @@ -32,12 +32,12 @@ export const ModelVendorOllama: IModelVendor ({ + getTransportAccess: (partialSetup): OllamaAccessSchema => ({ dialect: 'ollama', ollamaHost: partialSetup?.ollamaHost || '', }), callChatGenerate(llm, messages: VChatMessageIn[], maxTokens?: number): Promise { - return ollamaCallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, maxTokens); + return ollamaCallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, maxTokens); }, callChatGenerateWF(): Promise { throw new Error('Ollama does not support "Functions" yet'); diff --git a/src/modules/llms/vendors/oobabooga/OobaboogaSourceSetup.tsx b/src/modules/llms/vendors/oobabooga/OobaboogaSourceSetup.tsx index 322d04cc0..87d23f8ac 100644 --- a/src/modules/llms/vendors/oobabooga/OobaboogaSourceSetup.tsx +++ b/src/modules/llms/vendors/oobabooga/OobaboogaSourceSetup.tsx @@ -18,7 +18,7 @@ export function OobaboogaSourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, sourceHasLLMs, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorOoobabooga.getAccess); + useSourceSetup(props.sourceId, ModelVendorOoobabooga.getTransportAccess); // derived state const { oaiHost } = access; diff --git a/src/modules/llms/vendors/oobabooga/oobabooga.vendor.ts b/src/modules/llms/vendors/oobabooga/oobabooga.vendor.ts index 74dcbf9e3..bf4e69414 100644 --- a/src/modules/llms/vendors/oobabooga/oobabooga.vendor.ts +++ b/src/modules/llms/vendors/oobabooga/oobabooga.vendor.ts @@ -30,7 +30,7 @@ export const ModelVendorOoobabooga: IModelVendor ({ oaiHost: 'http://127.0.0.1:5000', }), - getAccess: (partialSetup): OpenAIAccessSchema => ({ + getTransportAccess: (partialSetup): OpenAIAccessSchema => ({ dialect: 'oobabooga', oaiKey: '', oaiOrg: '', @@ -39,9 +39,9 @@ export const ModelVendorOoobabooga: IModelVendor { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); }, callChatGenerateWF(llm, messages: VChatMessageIn[], functions: VChatFunctionIn[] | null, forceFunctionName: string | null, maxTokens?: number): Promise { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); }, }; \ No newline at end of file diff --git a/src/modules/llms/vendors/openai/OpenAISourceSetup.tsx b/src/modules/llms/vendors/openai/OpenAISourceSetup.tsx index 2a0ad0545..686891089 100644 --- a/src/modules/llms/vendors/openai/OpenAISourceSetup.tsx +++ b/src/modules/llms/vendors/openai/OpenAISourceSetup.tsx @@ -29,7 +29,7 @@ export function OpenAISourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, sourceHasLLMs, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorOpenAI.getAccess); + useSourceSetup(props.sourceId, ModelVendorOpenAI.getTransportAccess); // derived state const { oaiKey, oaiOrg, oaiHost, heliKey, moderationCheck } = access; diff --git a/src/modules/llms/vendors/openai/openai.vendor.ts b/src/modules/llms/vendors/openai/openai.vendor.ts index 88fbba593..c1cc25a64 100644 --- a/src/modules/llms/vendors/openai/openai.vendor.ts +++ b/src/modules/llms/vendors/openai/openai.vendor.ts @@ -42,7 +42,7 @@ export const ModelVendorOpenAI: IModelVendor ({ + getTransportAccess: (partialSetup): OpenAIAccessSchema => ({ dialect: 'openai', oaiKey: '', oaiOrg: '', @@ -52,11 +52,11 @@ export const ModelVendorOpenAI: IModelVendor { - const access = this.getAccess(llm._source.setup); + const access = this.getTransportAccess(llm._source.setup); return openAICallChatGenerate(access, llm.options, messages, null, null, maxTokens); }, callChatGenerateWF(llm, messages: VChatMessageIn[], functions: VChatFunctionIn[] | null, forceFunctionName: string | null, maxTokens?: number): Promise { - const access = this.getAccess(llm._source.setup); + const access = this.getTransportAccess(llm._source.setup); return openAICallChatGenerate(access, llm.options, messages, functions, forceFunctionName, maxTokens); }, }; diff --git a/src/modules/llms/vendors/openrouter/OpenRouterSourceSetup.tsx b/src/modules/llms/vendors/openrouter/OpenRouterSourceSetup.tsx index 5aa0274ff..79ffe6b2d 100644 --- a/src/modules/llms/vendors/openrouter/OpenRouterSourceSetup.tsx +++ b/src/modules/llms/vendors/openrouter/OpenRouterSourceSetup.tsx @@ -19,7 +19,7 @@ export function OpenRouterSourceSetup(props: { sourceId: DModelSourceId }) { // external state const { source, sourceHasLLMs, access, updateSetup } = - useSourceSetup(props.sourceId, ModelVendorOpenRouter.getAccess); + useSourceSetup(props.sourceId, ModelVendorOpenRouter.getTransportAccess); // derived state const { oaiKey } = access; diff --git a/src/modules/llms/vendors/openrouter/openrouter.vendor.ts b/src/modules/llms/vendors/openrouter/openrouter.vendor.ts index ae29c4ece..3617205f4 100644 --- a/src/modules/llms/vendors/openrouter/openrouter.vendor.ts +++ b/src/modules/llms/vendors/openrouter/openrouter.vendor.ts @@ -51,7 +51,7 @@ export const ModelVendorOpenRouter: IModelVendor ({ + getTransportAccess: (partialSetup): OpenAIAccessSchema => ({ dialect: 'openrouter', oaiKey: partialSetup?.oaiKey || '', oaiOrg: '', @@ -60,9 +60,9 @@ export const ModelVendorOpenRouter: IModelVendor { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, null, null, maxTokens); }, callChatGenerateWF(llm, messages: VChatMessageIn[], functions: VChatFunctionIn[] | null, forceFunctionName: string | null, maxTokens?: number): Promise { - return openAICallChatGenerate(this.getAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); + return openAICallChatGenerate(this.getTransportAccess(llm._source.setup), llm.options, messages, functions, forceFunctionName, maxTokens); }, }; \ No newline at end of file