This commit is contained in:
duanfuxiang
2025-04-13 15:04:27 +08:00
parent 169c687ed3
commit 812aa76376
8 changed files with 139 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
import { ALIBABA_QWEN_BASE_URL, DEEPSEEK_BASE_URL, OPENROUTER_BASE_URL, SILICONFLOW_BASE_URL } from '../../constants'
import { ALIBABA_QWEN_BASE_URL, DEEPSEEK_BASE_URL, GROK_BASE_URL, OPENROUTER_BASE_URL, SILICONFLOW_BASE_URL } from '../../constants'
import { ApiProvider, LLMModel } from '../../types/llm/model'
import {
LLMOptions,
@@ -39,6 +39,7 @@ class LLMManager implements LLMManagerInterface {
private anthropicProvider: AnthropicProvider
private googleProvider: GeminiProvider
private groqProvider: GroqProvider
private grokProvider: OpenAICompatibleProvider
private infioProvider: InfioProvider
private openrouterProvider: OpenAICompatibleProvider
private siliconflowProvider: OpenAICompatibleProvider
@@ -77,6 +78,16 @@ class LLMManager implements LLMManagerInterface {
this.anthropicProvider = new AnthropicProvider(settings.anthropicProvider.apiKey)
this.googleProvider = new GeminiProvider(settings.googleProvider.apiKey)
this.groqProvider = new GroqProvider(settings.groqProvider.apiKey)
console.log('GrokProvider',
settings.grokProvider.apiKey,
settings.grokProvider.baseUrl,
settings.grokProvider.useCustomUrl
)
this.grokProvider = new OpenAICompatibleProvider(settings.grokProvider.apiKey,
settings.grokProvider.baseUrl && settings.grokProvider.useCustomUrl ?
settings.grokProvider.baseUrl
: GROK_BASE_URL
)
this.ollamaProvider = new OllamaProvider(settings.ollamaProvider.baseUrl)
this.openaiCompatibleProvider = new OpenAICompatibleProvider(settings.openaicompatibleProvider.apiKey, settings.openaicompatibleProvider.baseUrl)
this.isInfioEnabled = !!settings.infioProvider.apiKey
@@ -145,6 +156,12 @@ class LLMManager implements LLMManagerInterface {
request,
options,
)
case ApiProvider.Grok:
return await this.grokProvider.generateResponse(
model,
request,
options,
)
case ApiProvider.OpenAICompatible:
return await this.openaiCompatibleProvider.generateResponse(model, request, options)
default:
@@ -182,6 +199,8 @@ class LLMManager implements LLMManagerInterface {
return await this.googleProvider.streamResponse(model, request, options)
case ApiProvider.Groq:
return await this.groqProvider.streamResponse(model, request, options)
case ApiProvider.Grok:
return await this.grokProvider.streamResponse(model, request, options)
case ApiProvider.Ollama:
return await this.ollamaProvider.streamResponse(model, request, options)
case ApiProvider.OpenAICompatible:

View File

@@ -22,7 +22,8 @@ export class OpenAICompatibleProvider implements BaseLLMProvider {
private baseURL: string
constructor(apiKey: string, baseURL: string) {
this.adapter = new OpenAIMessageAdapter()
console.log('OpenAICompatibleProvider constructor', apiKey, baseURL)
this.adapter = new OpenAIMessageAdapter()
this.client = new OpenAI({
apiKey: apiKey,
baseURL: baseURL,
@@ -37,6 +38,7 @@ export class OpenAICompatibleProvider implements BaseLLMProvider {
request: LLMRequestNonStreaming,
options?: LLMOptions,
): Promise<LLMResponseNonStreaming> {
console.log('OpenAICompatibleProvider generateResponse', this.baseURL, this.apiKey)
if (!this.baseURL || !this.apiKey) {
throw new LLMBaseUrlNotSetException(
'OpenAI Compatible base URL or API key is missing. Please set it in settings menu.',