Artan's picture
Upload tool
80ae18e verified
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