From 0740ef60c3e8b637cb7beb106608db800ae00d70 Mon Sep 17 00:00:00 2001 From: andreass01 Date: Sun, 8 Jun 2025 01:25:54 +0200 Subject: [PATCH] Add files via upload --- app/lib/modules/llm/providers/chute.ts | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app/lib/modules/llm/providers/chute.ts diff --git a/app/lib/modules/llm/providers/chute.ts b/app/lib/modules/llm/providers/chute.ts new file mode 100644 index 00000000..8282cc7f --- /dev/null +++ b/app/lib/modules/llm/providers/chute.ts @@ -0,0 +1,49 @@ +import { BaseProvider, getOpenAILikeModel } from '~/lib/modules/llm/base-provider'; +import type { ModelInfo } from '~/lib/modules/llm/types'; +import type { IProviderSetting } from '~/types/model'; +import type { LanguageModelV1 } from 'ai'; + +export default class ChuteProvider extends BaseProvider { + name = 'Chute'; + + config = { + apiTokenKey: 'CHUTES_API_TOKEN', + baseUrl: 'https://llm.chutes.ai/v1', + }; + + staticModels: ModelInfo[] = [ + { + name: 'deepseek-ai/DeepSeek-V3-0324', + label: 'Deepseek V3 (Chute)', + provider: 'Chute', + maxTokenAllowed: 4096, + }, + ]; + + getModelInstance(options: { + model: string; + serverEnv: Env; + apiKeys?: Record; + providerSettings?: Record; + }): LanguageModelV1 { + const { model, serverEnv, apiKeys, providerSettings } = options; + + const { baseUrl, apiKey } = this.getProviderBaseUrlAndKey({ + apiKeys, + providerSettings: providerSettings?.[this.name], + serverEnv: serverEnv as any, + defaultBaseUrlKey: '', // Chute has a fixed base URL + defaultApiTokenKey: 'CHUTES_API_TOKEN', + }); + + if (!apiKey) { + throw new Error(`Missing API key for ${this.name} provider`); + } + + if (!baseUrl) { + throw new Error(`Missing base URL for ${this.name} provider`); + } + + return getOpenAILikeModel(baseUrl, apiKey, model); + } +} \ No newline at end of file