Camada de Infra - AI Models
O projeto WMS.AI.Infra.AiModels é responsável pela integração com modelos de inteligência artificial utilizados no WMS.
Aqui aplicamos o padrão Strategy, permitindo que diferentes modelos de IA possam ser utilizados de forma intercambiável, mantendo uma interface comum.
Estrutura de Pastas
- Abstractions → Interfaces e contratos que definem como os modelos de IA devem ser consumidos.
- Enums → Definições de constantes usadas na seleção e configuração dos modelos.
- Exceptions → Exceções específicas de processos de IA (erros de integração, timeouts, etc).
- Extensions → Responsáveis por configuração de IoC e registro de dependências no container de DI.
Também incluem utilitários auxiliares para inicialização dos serviços. - Models → Estruturas de dados necessárias para interação com os modelos (ex: requests/responses).
- Services → Serviços que fazem a ponte entre a camada de aplicação e os modelos de IA.
- Strategies → Implementações do padrão Strategy.
BaseAiStrategy.cs→ define a interface comum.OpenAiStrategy.cs,GeminiStrategy.cs,GroqStrategy.cs,DeepSeekStrategy.cs→ implementações específicas para cada provedor de IA.
Padrão Strategy aplicado
A arquitetura permite que a aplicação selecione dinamicamente o modelo de IA a ser utilizado, sem alterar o restante do código.
Interface base
IAiModelStrategy.cs
public interface IAiModelStrategy
{
Task<AiChatMessage> CompleteAsync(List<AiChatMessage> messages, string? system,
CancellationToken cancellationToken = default);
IAsyncEnumerable<string> CompleteStreamAsync(
List<AiChatMessage> messages,
string? system,
CancellationToken cancellationToken = default
);
IAsyncEnumerable<T> GenerateStreamedDataAsync<T>(
List<AiChatMessage> messages,
string? system,
CancellationToken cancellationToken = default,
AiRetryOptions? retryOptions = null
) where T : class;
}