Feat Contexto Fijo Espacio-Temporal

This commit is contained in:
2025-11-21 13:05:40 -03:00
parent c0bd373db1
commit d8e2ff8ebf

View File

@@ -9,7 +9,7 @@ using Microsoft.AspNetCore.RateLimiting;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Text.Json; using System.Text.Json;
using Microsoft.EntityFrameworkCore; using System.Globalization;
// Clases de Request/Response // Clases de Request/Response
public class GenerationConfig public class GenerationConfig
@@ -220,7 +220,7 @@ namespace ChatbotApi.Controllers
_logger.LogInformation("Ejecutando intención: Noticias de Portada."); _logger.LogInformation("Ejecutando intención: Noticias de Portada.");
// 1. Obtenemos la lista de artículos de la portada. // 1. Obtenemos la lista de artículos de la portada.
var articles = await GetWebsiteNewsAsync(_siteUrl, 25); var articles = await GetWebsiteNewsAsync(_siteUrl, 50);
// 2. Usamos la IA para encontrar el mejor artículo. // 2. Usamos la IA para encontrar el mejor artículo.
var bestMatch = await FindBestMatchingArticleAsync(userMessage, articles); var bestMatch = await FindBestMatchingArticleAsync(userMessage, articles);
@@ -271,6 +271,24 @@ namespace ChatbotApi.Controllers
var promptBuilder = new StringBuilder(); var promptBuilder = new StringBuilder();
promptBuilder.AppendLine("INSTRUCCIONES:"); promptBuilder.AppendLine("INSTRUCCIONES:");
promptBuilder.AppendLine("Eres DiaBot, el asistente virtual del periódico El Día. Tu personalidad es profesional, servicial y concisa. Responde siempre en español Rioplatense."); promptBuilder.AppendLine("Eres DiaBot, el asistente virtual del periódico El Día. Tu personalidad es profesional, servicial y concisa. Responde siempre en español Rioplatense.");
// CONTEXTO FIJO
try
{
// Forzamos la zona horaria de Argentina para ser independientes de la configuración del servidor.
var argentinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Argentina/Buenos_Aires");
var localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, argentinaTimeZone);
var formattedTime = localTime.ToString("dddd, dd/MM/yyyy HH:mm 'Hs.'", new CultureInfo("es-AR"));
promptBuilder.AppendLine("\n--- CONTEXTO FIJO ESPACIO-TEMPORAL (Tu Identidad) ---");
promptBuilder.AppendLine($"Tu base de operaciones y el foco principal de tus noticias es La Plata, Provincia de Buenos Aires, Argentina.");
promptBuilder.AppendLine($"La fecha y hora actual en La Plata es: {formattedTime}.");
promptBuilder.AppendLine("Usa esta información para dar contexto a las noticias y responder preguntas sobre el día o la ubicación.");
promptBuilder.AppendLine("--------------------------------------------------");
}
catch(Exception ex)
{
_logger.LogWarning(ex, "No se pudo determinar la zona horaria de Argentina. El contexto de tiempo será omitido.");
}
promptBuilder.AppendLine(promptInstructions); promptBuilder.AppendLine(promptInstructions);
promptBuilder.AppendLine("NUNCA INVENTES información. Si la respuesta no está en el contexto, indica amablemente que no encontraste la información."); promptBuilder.AppendLine("NUNCA INVENTES información. Si la respuesta no está en el contexto, indica amablemente que no encontraste la información.");
promptBuilder.AppendLine("\nCONTEXTO:\n---"); promptBuilder.AppendLine("\nCONTEXTO:\n---");