using AIStudio.Models;
namespace AIStudio.Assistants.BeyondFactsLab;
///
/// What a model needs to run the chats of the BeyondFacts Lab.
///
///
/// Every chat of the lab keeps its guide in the context, which alone takes about 20,000 tokens. A model with a
/// smaller context window would lose the beginning of each conversation, or fail right away.
///
public static class BflModelRequirements
{
///
/// The smallest context window the lab accepts, in tokens.
///
///
/// The fixed part of the longest system prompt may take about 22,000 tokens, see BflPromptLibraryTests; the
/// rest is left for the details of the person and the conversation.
///
public const int MINIMUM_CONTEXT_TOKENS = 32_000;
///
/// Checks whether a model reads enough at once for the lab.
///
///
/// A window nobody knows is accepted: many self-hosted models have no statement, and the token budget of the chat
/// tells the person when a conversation grows too long.
///
/// The context window of the model.
/// True when the window is large enough or unknown.
public static bool HasEnoughContext(ContextWindow contextWindow) => !contextWindow.IsKnown || contextWindow.DefaultTokens >= MINIMUM_CONTEXT_TOKENS;
}