94 lines
2.1 KiB
C#
94 lines
2.1 KiB
C#
namespace GreenHome.Domain;
|
|
|
|
/// <summary>
|
|
/// AI Query record - stores questions, answers and token usage
|
|
/// </summary>
|
|
public class AIQuery
|
|
{
|
|
/// <summary>
|
|
/// Unique identifier
|
|
/// </summary>
|
|
public int Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Device ID associated with the query (optional)
|
|
/// </summary>
|
|
public int? DeviceId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Navigation property to Device
|
|
/// </summary>
|
|
public Device? Device { get; set; }
|
|
|
|
/// <summary>
|
|
/// User's question
|
|
/// </summary>
|
|
public required string Question { get; set; }
|
|
|
|
/// <summary>
|
|
/// AI's answer
|
|
/// </summary>
|
|
public required string Answer { get; set; }
|
|
|
|
/// <summary>
|
|
/// Number of prompt tokens used
|
|
/// </summary>
|
|
public int PromptTokens { get; set; }
|
|
|
|
/// <summary>
|
|
/// Number of completion tokens used
|
|
/// </summary>
|
|
public int CompletionTokens { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total tokens used (prompt + completion)
|
|
/// </summary>
|
|
public int TotalTokens { get; set; }
|
|
|
|
/// <summary>
|
|
/// Model used for the query
|
|
/// </summary>
|
|
public string? Model { get; set; }
|
|
|
|
/// <summary>
|
|
/// AI profile used for this query
|
|
/// </summary>
|
|
public int? ProfileId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Navigation property to AIProfile
|
|
/// </summary>
|
|
public AIProfile? Profile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Estimated cost of the query in USD (0 = not calculable)
|
|
/// </summary>
|
|
public decimal CostUsd { get; set; }
|
|
|
|
/// <summary>
|
|
/// Temperature parameter used
|
|
/// </summary>
|
|
public double? Temperature { get; set; }
|
|
|
|
/// <summary>
|
|
/// When the query was created
|
|
/// </summary>
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
/// <summary>
|
|
/// Response time in milliseconds
|
|
/// </summary>
|
|
public long? ResponseTimeMs { get; set; }
|
|
|
|
/// <summary>
|
|
/// User ID (if authenticated)
|
|
/// </summary>
|
|
public int? UserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Navigation property to User
|
|
/// </summary>
|
|
public User? User { get; set; }
|
|
}
|
|
|