Pular para o conteúdo principal

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;
}