mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-10 20:27:21 +00:00
43 lines
2.1 KiB
C#
43 lines
2.1 KiB
C#
using AIStudio.Models;
|
|
|
|
namespace AIStudio.Assistants.BeyondFactsLab;
|
|
|
|
/// <summary>
|
|
/// What a model needs to run the chats of the BeyondFacts Lab.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Every chat of a step keeps the guide of the lab 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. The conversation
|
|
/// about whether the lab fits a task leaves out the guide, so it runs with any model; its token budget tells the
|
|
/// person when it grows too long.
|
|
/// </remarks>
|
|
public static class BflModelRequirements
|
|
{
|
|
/// <summary>
|
|
/// The smallest context window the lab accepts, in tokens.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// 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.
|
|
/// </remarks>
|
|
public const int MINIMUM_CONTEXT_TOKENS = 32_000;
|
|
|
|
/// <summary>
|
|
/// Checks whether a model reads enough at once for the lab.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// 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.
|
|
/// </remarks>
|
|
/// <param name="contextWindow">The context window of the model.</param>
|
|
/// <returns>True when the window is large enough or unknown.</returns>
|
|
public static bool HasEnoughContext(ContextWindow contextWindow) => !contextWindow.IsKnown || contextWindow.DefaultTokens >= MINIMUM_CONTEXT_TOKENS;
|
|
|
|
/// <summary>
|
|
/// Checks whether a model reads enough at once for a chat of the lab.
|
|
/// </summary>
|
|
/// <param name="location">Where the chat belongs.</param>
|
|
/// <param name="contextWindow">The context window of the model.</param>
|
|
/// <returns>True when the chat needs no minimum, or when the window is large enough or unknown.</returns>
|
|
public static bool HasEnoughContext(BflThreadLocation location, ContextWindow contextWindow) => location is BflOnboardingThreadLocation || HasEnoughContext(contextWindow);
|
|
} |