namespace Tango.Portal.Chat.Web.Services { public enum LlmProvider { OpenAI, Claude } public sealed class LlmOptions { // Provider selection: OpenAI, AzureOpenAI, or Claude public LlmProvider Provider { get; set; } = LlmProvider.OpenAI; // If using OpenAI, set Provider = OpenAI and Endpoint = https://api.openai.com/v1/chat/completions // If using Claude, set Provider = Claude and Endpoint = https://api.anthropic.com/v1/messages public string Endpoint { get; set; } = string.Empty; public string ApiKey { get; set; } = string.Empty; public string Model { get; set; } = "gpt-4o-mini"; // or your Azure deployment name, or claude-3-5-sonnet-20241022 public double Temperature { get; set; } = 0.2; public string AnswererAssistantId { get; set; } = string.Empty; // NEW public string DocsAssistantId { get; set; } = string.Empty; // NEW // Claude-specific settings public string ClaudeApiKey { get; set; } = string.Empty; public string ClaudeModel { get; set; } = "claude-3-5-sonnet-20241022"; public string ClaudeEndpoint { get; set; } = "https://api.anthropic.com/v1/messages"; public int MaxTokens { get; set; } = 4000; } public sealed class AdxOptions { public string ClusterUri { get; set; } = string.Empty; public string Database { get; set; } = string.Empty; public string TenantId { get; set; } = string.Empty; public string ClientId { get; set; } = string.Empty; public string ClientSecret { get; set; } = string.Empty; } public sealed class AzureStorageOptions { public string ConnectionString { get; set; } = string.Empty; } public sealed class N8NOptions { public string URL { get; set; } = string.Empty; public string User { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; } }