using AIStudio.Chat;
using AIStudio.Provider;
namespace AIStudio.Tools.RAG;
public interface IRagProcess
{
///
/// How is the RAG process called?
///
public string TechnicalName { get; }
///
/// How is the RAG process called in the UI?
///
public string UIName { get; }
///
/// How works the RAG process?
///
public string Description { get; }
///
/// Starts the RAG process.
///
/// The LLM provider. Used to check whether the data sources are allowed to be used by this LLM.
/// The last prompt that was issued by the user.
/// The chat thread.
/// The cancellation token.
/// The altered chat thread.
public Task ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, CancellationToken token = default);
}