using AIStudio.Chat; namespace AIStudio.Agents; public interface IAgent { /// /// Gets the name of the agent. /// public string Id { get; } /// /// The provider to use for this agent. /// public AIStudio.Settings.Provider? ProviderSettings { get; set; } /// /// Processes a chat thread (i.e., context) and returns the updated thread. /// /// The chat thread to process. The thread is the context for the agent. /// Additional data to use for processing the chat thread. /// The updated chat thread. The last content block of the thread is the agent's response. public Task ProcessContext(ChatThread chatThread, IDictionary additionalData); /// /// Processes the input content block and returns the agent's response. /// /// The content block to process. It represents the input. /// Additional data to use for processing the input. /// The content block representing the agent's response. public Task ProcessInput(ContentBlock input, IDictionary additionalData); /// /// The agent makes a decision based on the input. /// /// The content block to process. Should be a question or a request. /// /// True if a decision has been made based on the input, false otherwise. /// public Task MadeDecision(ContentBlock input); /// /// Retrieves the context of the agent. /// /// The collection of content blocks representing the agent's context. This includes the user's and the other agent's messages. public IReadOnlyCollection GetContext(); /// /// Retrieves the answers from the agent's context. /// /// /// The collection of content blocks representing the answers provided by this agent. /// public IReadOnlyCollection GetAnswers(); }