From 2d979d89f85e49f4e63a8a71ae16801efd217fc3 Mon Sep 17 00:00:00 2001 From: Neko Date: Sun, 16 Feb 2025 22:00:49 +0800 Subject: [PATCH] feat(providers): add novita (#49) --- cspell.config.yaml | 5 ++++ packages/providers/src/providers/index.ts | 1 + packages/providers/src/providers/novita.ts | 34 ++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 packages/providers/src/providers/novita.ts diff --git a/cspell.config.yaml b/cspell.config.yaml index 9deb97d..7d21096 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -8,6 +8,7 @@ words: - BAAI - bumpp - changelogithub + - cognitivecomputations - deepseek - elevenlabs - eslintcache @@ -16,6 +17,8 @@ words: - importantimport - koemotion - masknet + - mistralai + - mixtral - moeru - moeru-ai - mxbai-embed-large @@ -23,6 +26,7 @@ words: - nemotron - netease - nomic-embed-text + - Novita - ollama - openrouter - pkgroll @@ -36,6 +40,7 @@ words: - unspeech - valibot - vitest + - wizardlm - xsai - xsfetch - xsschema diff --git a/packages/providers/src/providers/index.ts b/packages/providers/src/providers/index.ts index 9776fd3..f4b1604 100644 --- a/packages/providers/src/providers/index.ts +++ b/packages/providers/src/providers/index.ts @@ -1,5 +1,6 @@ export * from './deepseek' export * from './google-generative-ai' +export * from './novita' export * from './ollama' export * from './openai' export * from './openrouter' diff --git a/packages/providers/src/providers/novita.ts b/packages/providers/src/providers/novita.ts new file mode 100644 index 0000000..3697254 --- /dev/null +++ b/packages/providers/src/providers/novita.ts @@ -0,0 +1,34 @@ +import type { ChatProvider, ModelProvider, ProviderOptions, ProviderResult } from '../types' + +import { generateCRO } from '../utils/generate-cro' + +export const createNovita = (userOptions: ProviderOptions): + /** @see {@link https://novita.ai/pricing} */ + ChatProvider< | 'cognitivecomputations/dolphin-mixtral-8x22b' + | 'deepseek/deepseek-r1' + | 'deepseek/deepseek-r1-distill-llama-8b' + | 'deepseek/deepseek-r1-distill-llama-70b' + | 'deepseek/deepseek-r1-distill-qwen-14b' + | 'deepseek/deepseek-r1-distill-qwen-32b' + | 'deepseek/deepseek_v3' + | 'meta-llama/llama-3.2-1b-instruct' + | 'meta-llama/llama-3.2-3b-instruct' + | 'meta-llama/llama-3.2-11b-vision-instruct' + | 'meta-llama/llama-3.3-70b-instruct' + | 'microsoft/wizardlm-2-8x22b' + | 'mistralai/mistral-7b-instruct' + | 'mistralai/mistral-nemo' + > + & ModelProvider => { + const options: ProviderResult = { + ...userOptions, + baseURL: userOptions.baseURL ?? new URL('https://api.novita.ai/v3/openai/'), + } + + const result = (model: string) => generateCRO(model, options) + + return { + chat: result, + model: () => options, + } +}