Proveedores de Modelos de Lenguaje Grande (LLM)
La arquitectura de DiktaMe.Core trata a los servicios de IA de formato de texto como proveedores intercambiables. Debido a que soportamos modelos masivos en la Nube y modelos Locales ligeros de forma simultánea, el motor de formato confía enteramente en la interfaz ILLMProvider para cerrar la brecha.
Si deseas agregar soporte para un nuevo endpoint de Modelo de Lenguaje (como Groq, TogetherAI, o Google Vertex), simplemente necesitas implementar la interfaz ILLMProvider.
La Interfaz
public interface ILLMProvider
{
// El nombre legible por humanos del proveedor (ej. "Ollama Local")
string Name { get; }
// Asegura que la clave API exista o que el servidor local esté realmente ejecutándose
Task<bool> IsReadyAsync();
// El bucle de ejecución central para el reemplazo de texto de un solo intento
Task<string> ProcessTextAsync(
string input,
string systemPrompt,
CancellationToken cancellationToken);
// Streams asíncronos de C# 8.0 para emitir respuestas de chat nativamente
// Requerido para soportar la superposición de Chat Rápido
IAsyncEnumerable<string> ProcessChatStreamAsync(
IEnumerable<ChatMessage> history,
string systemPrompt,
CancellationToken cancellationToken);
}
Ejemplos en el código base: AnthropicProvider.cs, GeminiProvider.cs, OllamaProvider.cs, OpenAICompatProvider.cs
El Enrutador LLM (LLMRouter)
Exactamente igual que en la arquitectura STT, las Vistas y Modelos de Vista nunca instancian directamente a un proveedor. En su lugar, solicitan el singleton LLMRouter.
Cuando se activa una canalización de dictado, el LLMRouter determina si el usuario está en "Modo Nube (Cloud Mode)" o "Modo Local (Local Mode)" en la superposición principal del Panel de Control.
- Modo Nube (Cloud Mode): El Enrutador lee el proveedor de API configurado (ej.,
Anthropic), lee el Modelo de Chat seleccionado por el usuario (ej.,claude-3-5-sonnet-20240620), y pasa la ejecución alAnthropicProvider. - Modo Local (Local Mode): El Enrutador omite por completo los ajustes BYOK y crea una instancia exclusivamente del
OllamaProvider.
Ingestión de Instrucciones (Prompt Ingestion)
A diferencia de STT, que simplemente devuelve texto en crudo, los proveedores LLM requieren Instrucciones del Sistema (System Prompts).
dIKta.me soporta infinitos modos personalizados, por lo que el LLMRouter también es responsable de inyectar el esquema de instrucciones correcto. Cuando se llama al método ProcessTextAsync() de un proveedor, el Enrutador se asegura de pasarle nativamente la Instrucción en la Nube (Cloud Prompt) o la Instrucción Local (Local Prompt) específica adjunta a ese perfil de Modo de Dictado.
Agregando un Nuevo Proveedor
- Crea
MiNuevoLLMProvider.csensrc/DiktaMe.Core/LLM/. - Implementa
ILLMProvider. Concéntrate en manejar adecuadamente las excepciones HTTP 429 de Límite de Frecuencia (Rate Limits) y HTTP 401 No Autorizado. - Agrega tu proveedor al enumerador
LlmProviderType. - Regístralo dentro de
LLMProviderFactory.cs. - (Inyección de Dependencias): Registra tu nueva clase como un servicio Transitorio (Transient) en
App.xaml.cs.