127 lines
5.4 KiB
C#
127 lines
5.4 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace ChatRAG.Settings
|
|
{
|
|
/// <summary>
|
|
/// Configurações para verificação de confiança por estratégia
|
|
/// </summary>
|
|
public class ConfidenceSettings
|
|
{
|
|
public bool StrictModeByDefault { get; set; } = true;
|
|
|
|
[Required]
|
|
public Dictionary<string, ConfidenceThresholds> Thresholds { get; set; } = new()
|
|
{
|
|
["overview"] = new ConfidenceThresholds
|
|
{
|
|
MinDocuments = 5,
|
|
MinRelevantDocuments = 3,
|
|
MinHighQualityDocuments = 1,
|
|
MinContextLength = 1000,
|
|
MinOverallScore = 0.3,
|
|
MinMaxScore = 0.4,
|
|
MinAverageScore = 0.3
|
|
},
|
|
["specific"] = new ConfidenceThresholds
|
|
{
|
|
MinDocuments = 2,
|
|
MinRelevantDocuments = 2,
|
|
MinHighQualityDocuments = 1,
|
|
MinContextLength = 500,
|
|
MinOverallScore = 0.4,
|
|
MinMaxScore = 0.5,
|
|
MinAverageScore = 0.4
|
|
},
|
|
["detailed"] = new ConfidenceThresholds
|
|
{
|
|
MinDocuments = 3,
|
|
MinRelevantDocuments = 2,
|
|
MinHighQualityDocuments = 2,
|
|
MinContextLength = 800,
|
|
MinOverallScore = 0.5,
|
|
MinMaxScore = 0.6,
|
|
MinAverageScore = 0.5
|
|
}
|
|
};
|
|
|
|
/// <summary>
|
|
/// Mensagens de fallback por idioma
|
|
/// </summary>
|
|
public Dictionary<string, ConfidenceFallbackMessages> FallbackMessages { get; set; } = new()
|
|
{
|
|
["pt"] = new ConfidenceFallbackMessages
|
|
{
|
|
NoDocuments = "Não encontrei informações sobre isso no projeto atual. Você poderia reformular a pergunta ou ser mais específico?",
|
|
NoRelevantDocuments = "Encontrei alguns documentos, mas nenhum parece diretamente relacionado à sua pergunta. Pode tentar ser mais específico ou usar outras palavras-chave?",
|
|
InsufficientOverview = "Não tenho informações suficientes para fornecer uma visão geral completa do projeto. Talvez você possa fazer uma pergunta mais específica?",
|
|
InsufficientSpecific = "Não encontrei documentação suficiente sobre esse tópico específico. Você pode tentar reformular a pergunta?",
|
|
InsufficientDetailed = "Preciso de mais contexto técnico para responder adequadamente. Você pode ser mais específico sobre o que está procurando?",
|
|
Generic = "Não tenho informações suficientes para responder com segurança. Pode tentar reformular a pergunta?"
|
|
},
|
|
["en"] = new ConfidenceFallbackMessages
|
|
{
|
|
NoDocuments = "I couldn't find information about this in the current project. Could you rephrase the question or be more specific?",
|
|
NoRelevantDocuments = "I found some documents, but none seem directly related to your question. Could you try being more specific or use different keywords?",
|
|
InsufficientOverview = "I don't have enough information to provide a complete project overview. Perhaps you could ask a more specific question?",
|
|
InsufficientSpecific = "I didn't find sufficient documentation about this specific topic. Could you try rephrasing the question?",
|
|
InsufficientDetailed = "I need more technical context to respond adequately. Could you be more specific about what you're looking for?",
|
|
Generic = "I don't have enough information to respond safely. Could you try rephrasing the question?"
|
|
}
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Thresholds de confiança para uma estratégia específica
|
|
/// </summary>
|
|
public class ConfidenceThresholds
|
|
{
|
|
/// <summary>
|
|
/// Número mínimo de documentos encontrados
|
|
/// </summary>
|
|
public int MinDocuments { get; set; }
|
|
|
|
/// <summary>
|
|
/// Número mínimo de documentos relevantes (score >= 0.3)
|
|
/// </summary>
|
|
public int MinRelevantDocuments { get; set; }
|
|
|
|
/// <summary>
|
|
/// Número mínimo de documentos de alta qualidade (score >= 0.6)
|
|
/// </summary>
|
|
public int MinHighQualityDocuments { get; set; }
|
|
|
|
/// <summary>
|
|
/// Tamanho mínimo do contexto combinado (caracteres)
|
|
/// </summary>
|
|
public int MinContextLength { get; set; }
|
|
|
|
/// <summary>
|
|
/// Score geral mínimo (0.0 a 1.0)
|
|
/// </summary>
|
|
public double MinOverallScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// Score máximo mínimo entre os documentos encontrados
|
|
/// </summary>
|
|
public double MinMaxScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// Score médio mínimo entre os documentos encontrados
|
|
/// </summary>
|
|
public double MinAverageScore { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Mensagens de fallback quando não há confiança suficiente
|
|
/// </summary>
|
|
public class ConfidenceFallbackMessages
|
|
{
|
|
public string NoDocuments { get; set; } = "";
|
|
public string NoRelevantDocuments { get; set; } = "";
|
|
public string InsufficientOverview { get; set; } = "";
|
|
public string InsufficientSpecific { get; set; } = "";
|
|
public string InsufficientDetailed { get; set; } = "";
|
|
public string Generic { get; set; } = "";
|
|
}
|
|
}
|