using AIStudio.Chat;
using AIStudio.Provider;
namespace AIStudio.Tools.RAG;
public interface IAugmentationProcess
{
///
/// How is the augmentation process called?
///
public string TechnicalName { get; }
///
/// How is the augmentation process called in the UI?
///
public string UIName { get; }
///
/// How works the augmentation process?
///
public string Description { get; }
///
/// Starts the augmentation process.
///
/// The LLM provider. Gets used, e.g., for automatic retrieval context validation.
/// The last prompt that was issued by the user.
/// The chat thread.
/// The retrieval contexts that were issued by the retrieval process.
/// The cancellation token.
/// The altered chat thread.
public Task ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, IReadOnlyList retrievalContexts, CancellationToken token = default);
}