| from typing import Any, Optional | |
| from smolagents.tools import Tool | |
| class InfoTheoryExplainerTool(Tool): | |
| name = "information_theory_explainer" | |
| description = """ | |
| Five basic information theory concepts in simple terms. | |
| Given a concept name, it returns a high-school explanation with an example if applicable. | |
| """ | |
| inputs = {'concept': {'type': 'string', 'description': "The information theory concept to explain (e.g., 'entropy', 'mutual information', 'KL divergence')."}} | |
| output_type = "string" | |
| def forward(self, concept: str): | |
| explanations = { | |
| "entropy": "Entropy measures the uncertainty or unpredictability in a set of outcomes. Example: A fair coin flip has 1 bit of entropy.", | |
| "mutual information": "Mutual information quantifies how much information one random variable tells you about another. Example: Knowing the weather can reduce uncertainty about umbrella usage.", | |
| "kl divergence": "KL Divergence measures how one probability distribution differs from another. It's not symmetric and often used in model evaluation.", | |
| "cross entropy": "Cross-entropy measures the difference between the true distribution and the predicted one, often used as a loss function in classification tasks.", | |
| "channel capacity": "Channel capacity is the maximum rate at which information can be reliably transmitted over a communication channel." | |
| } | |
| key = concept.lower().strip() | |
| return explanations.get(key, "Concept not found. Try 'entropy', 'mutual information', 'KL divergence', 'cross entropy', or 'channel capacity'.") | |
| def __init__(self, *args, **kwargs): | |
| self.is_initialized = False | |