import { createOpenAI } from '@ai-sdk/openai'; import { generateObject, embed } from 'ai'; import { z } from 'zod'; import { AIProvider, TagSuggestion } from '../types'; export class DeepSeekProvider implements AIProvider { private model: any; private embeddingModel: any; constructor(apiKey: string, modelName: string = 'deepseek-chat', embeddingModelName: string = 'deepseek-embedding') { // Create OpenAI-compatible client for DeepSeek const deepseek = createOpenAI({ baseURL: 'https://api.deepseek.com/v1', apiKey: apiKey, }); this.model = deepseek(modelName); this.embeddingModel = deepseek.embedding(embeddingModelName); } async generateTags(content: string): Promise { try { const { object } = await generateObject({ model: this.model, schema: z.object({ tags: z.array(z.object({ tag: z.string().describe('Le nom du tag, court et en minuscules'), confidence: z.number().min(0).max(1).describe('Le niveau de confiance entre 0 et 1') })) }), prompt: `Analyse la note suivante et suggère entre 1 et 5 tags pertinents. Contenu de la note: "${content}"`, }); return object.tags; } catch (e) { console.error('Erreur génération tags DeepSeek:', e); return []; } } async getEmbeddings(text: string): Promise { try { const { embedding } = await embed({ model: this.embeddingModel, value: text, }); return embedding; } catch (e) { console.error('Erreur embeddings DeepSeek:', e); return []; } } }