feat(mistral): add Mistral provider with native PDF OCR and chat integration
This commit is contained in:
@@ -2,6 +2,7 @@ import { Conversation } from './classes.conversation.js';
|
||||
import * as plugins from './plugins.js';
|
||||
import { AnthropicProvider } from './provider.anthropic.js';
|
||||
import { ElevenLabsProvider } from './provider.elevenlabs.js';
|
||||
import { MistralProvider } from './provider.mistral.js';
|
||||
import { OllamaProvider } from './provider.ollama.js';
|
||||
import { OpenAiProvider } from './provider.openai.js';
|
||||
import { PerplexityProvider } from './provider.perplexity.js';
|
||||
@@ -15,12 +16,18 @@ export interface ISmartAiOptions {
|
||||
anthropicToken?: string;
|
||||
perplexityToken?: string;
|
||||
groqToken?: string;
|
||||
mistralToken?: string;
|
||||
xaiToken?: string;
|
||||
elevenlabsToken?: string;
|
||||
exo?: {
|
||||
baseUrl?: string;
|
||||
apiKey?: string;
|
||||
};
|
||||
mistral?: {
|
||||
chatModel?: string;
|
||||
ocrModel?: string;
|
||||
tableFormat?: 'markdown' | 'html';
|
||||
};
|
||||
ollama?: {
|
||||
baseUrl?: string;
|
||||
model?: string;
|
||||
@@ -32,7 +39,7 @@ export interface ISmartAiOptions {
|
||||
};
|
||||
}
|
||||
|
||||
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'xai' | 'elevenlabs';
|
||||
export type TProvider = 'openai' | 'anthropic' | 'perplexity' | 'ollama' | 'exo' | 'groq' | 'mistral' | 'xai' | 'elevenlabs';
|
||||
|
||||
export class SmartAi {
|
||||
public options: ISmartAiOptions;
|
||||
@@ -43,6 +50,7 @@ export class SmartAi {
|
||||
public ollamaProvider: OllamaProvider;
|
||||
public exoProvider: ExoProvider;
|
||||
public groqProvider: GroqProvider;
|
||||
public mistralProvider: MistralProvider;
|
||||
public xaiProvider: XAIProvider;
|
||||
public elevenlabsProvider: ElevenLabsProvider;
|
||||
|
||||
@@ -75,6 +83,15 @@ export class SmartAi {
|
||||
});
|
||||
await this.groqProvider.start();
|
||||
}
|
||||
if (this.options.mistralToken) {
|
||||
this.mistralProvider = new MistralProvider({
|
||||
mistralToken: this.options.mistralToken,
|
||||
chatModel: this.options.mistral?.chatModel,
|
||||
ocrModel: this.options.mistral?.ocrModel,
|
||||
tableFormat: this.options.mistral?.tableFormat,
|
||||
});
|
||||
await this.mistralProvider.start();
|
||||
}
|
||||
if (this.options.xaiToken) {
|
||||
this.xaiProvider = new XAIProvider({
|
||||
xaiToken: this.options.xaiToken,
|
||||
@@ -119,6 +136,9 @@ export class SmartAi {
|
||||
if (this.groqProvider) {
|
||||
await this.groqProvider.stop();
|
||||
}
|
||||
if (this.mistralProvider) {
|
||||
await this.mistralProvider.stop();
|
||||
}
|
||||
if (this.xaiProvider) {
|
||||
await this.xaiProvider.stop();
|
||||
}
|
||||
@@ -150,6 +170,8 @@ export class SmartAi {
|
||||
return Conversation.createWithOllama(this);
|
||||
case 'groq':
|
||||
return Conversation.createWithGroq(this);
|
||||
case 'mistral':
|
||||
return Conversation.createWithMistral(this);
|
||||
case 'xai':
|
||||
return Conversation.createWithXai(this);
|
||||
case 'elevenlabs':
|
||||
|
||||
Reference in New Issue
Block a user