MoralesLarios.Ai 1.0.0

dotnet add package MoralesLarios.Ai --version 1.0.0
                    
NuGet\Install-Package MoralesLarios.Ai -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MoralesLarios.Ai" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MoralesLarios.Ai" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="MoralesLarios.Ai" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MoralesLarios.Ai --version 1.0.0
                    
#r "nuget: MoralesLarios.Ai, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MoralesLarios.Ai@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MoralesLarios.Ai&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=MoralesLarios.Ai&version=1.0.0
                    
Install as a Cake Tool

MoralesLarios.Ai

Motor de filtrado en lenguaje natural asistido por IA para .NET.

Traduce lo que escribe (o dicta) el usuario a un AST JSON, de forma totalmente genérica: el prompt se construye por reflexión a partir del tipo de datos, sin una sola línea de código condicional por proveedor.

"pedidos de Madrid del último trimestre con importe mayor que 500"
                            ↓  (LLM)
{ "op": "and", "nodes": [ { "field": "Ciudad", "op": "eq", "value": "Madrid" }, ... ] }

Instalación

dotnet add package MoralesLarios.Ai

Proveedores soportados

Todos a través de Microsoft.Extensions.AI, con la misma API y sin condicionales por proveedor:

Proveedor Notas
Groq Muy rápido, endpoint compatible OpenAI (por defecto)
Ollama Modelos locales (qwen2.5:32b, llama3.2…)
Google Gemini Endpoint compatible OpenAI
Azure OpenAI Despliegues empresariales

Uso rápido

1. Configuración

appsettings.json (sección Ai, ver MlAiOptions.SectionName):

{
  "Ai": {
    "Provider": "Groq",
    "MaxRetries": 4,
    "Ollama": {
      "Endpoint": "http://localhost:11434",
      "Model": "qwen2.5:32b"
    },
    "Groq": {
      "Endpoint": "https://api.groq.com/openai/v1",
      "Model": "openai/gpt-oss-120b",
      "ApiKey": "gsk_..."
    },
    "Gemini": {
      "Endpoint": "https://generativelanguage.googleapis.com/v1beta/openai/",
      "Model": "gemini-2.0-flash-lite",
      "ApiKey": "..."
    },
    "AzureOpenAI": {
      "Endpoint": "https://<recurso>.openai.azure.com",
      "ApiKey": "...",
      "Deployment": "gpt-4o-mini"
    }
  }
}

2. Registro en el contenedor

using Microsoft.Extensions.Options;
using MoralesLarios.Ai;
using MoralesLarios.Ai.Config;

var aiOptions = builder.Configuration
                       .GetSection(MlAiOptions.SectionName)
                       .Get<MlAiOptions>() ?? new MlAiOptions();

builder.Services.AddAi(Options.Create(aiOptions));

3. Generar el AST

El punto de entrada más cómodo es IAiFilterClientExecutorFp<T>: construye el prompt a partir de T y devuelve el JSON del AST.

using MoralesLarios.Ai.Managers;

public class SearchService(IAiFilterClientExecutorFp<Order> executor)
{
    public async Task<string?> ToAstAsync(string userText, CancellationToken ct = default)
    {
        // providerOverride: "" para usar el configurado, o "Groq" / "Ollama" / "Gemini" / "AzureOpenAI"
        MlResult<string> result = await executor.GenerateFilterJsonAsync(userText, "", ct);

        return result.IsValid ? result.Value : null;
    }
}

Los resultados se devuelven como MlResult<T> (de MoralesLarios.OOFP), por lo que los errores se propagan como valores en lugar de excepciones.

Tipos principales

Tipo Rol
MlAiOptions Configuración: proveedor activo, reintentos y ajustes por proveedor
IAiChatClientFactoryFp Crea el IChatClient del proveedor seleccionado
IGenMlFieldCatalog<T> Catálogo de campos de T obtenido por reflexión
IMlFilterPromptBuilder<T> Construye el prompt (catálogo + gramática + few-shot)
IAiFilterClientFp Invoca el modelo con un PromptOptions ya construido
IAiFilterClientExecutorFp<T> Orquestador: lenguaje natural → JSON del AST

Cómo se construye el prompt

MlFilterPromptBuilder<T> genera automáticamente:

  1. Catálogo de campos — nombre, tipo CLR y metadatos obtenidos por reflexión sobre T (GenMlFieldCatalog<T>), incluyendo propiedades anidadas.
  2. Gramática del AST — operadores de comparación y nodos de unión (and / or).
  3. Ejemplos few-shot — pares pregunta → AST sintetizados a partir de los propios campos de T (GenMlFewShotExampleGenerator<T>), para que el modelo aprenda el formato exacto sin ejemplos escritos a mano.

El resultado es un prompt reutilizable con cualquier entidad, sin plantillas específicas por tipo.

Paquete relacionado

  • MoralesLarios.Blazor.Ia.IaFilterColection — componentes Blazor listos para usar (AiFilterPanel<TItem>) construidos sobre este motor, que además compilan el AST a Expression<Func<T, bool>> aplicable a cualquier IQueryable o colección en memoria.

Licencia

MIT © Morales Larios

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on MoralesLarios.Ai:

Package Downloads
MoralesLarios.Blazor.Ia.IaFilterColection

Librería de componentes Blazor. Incluye AiFilterPanel<TItem>: un panel de filtrado en lenguaje natural que convierte el texto (o la voz) del usuario en un AST JSON mediante un proveedor de IA (Ollama, Groq, Gemini, Azure OpenAI) y lo compila a una expresión LINQ aplicable a cualquier colección en memoria. Sin dependencias de librerías comerciales de UI.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 109 9/15/2026