Artan commited on
Commit
80ae18e
·
verified ·
1 Parent(s): 4e01363

Upload tool

Browse files
Files changed (3) hide show
  1. app.py +6 -0
  2. requirements.txt +1 -0
  3. tool.py +26 -0
app.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from smolagents import launch_gradio_demo
2
+ from tool import InfoTheoryExplainerTool
3
+
4
+ tool = InfoTheoryExplainerTool()
5
+
6
+ launch_gradio_demo(tool)
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ smolagents
tool.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any, Optional
2
+ from smolagents.tools import Tool
3
+
4
+ class InfoTheoryExplainerTool(Tool):
5
+ name = "information_theory_explainer"
6
+ description = """
7
+ Five basic information theory concepts in simple terms.
8
+ Given a concept name, it returns a high-school explanation with an example if applicable.
9
+ """
10
+ inputs = {'concept': {'type': 'string', 'description': "The information theory concept to explain (e.g., 'entropy', 'mutual information', 'KL divergence')."}}
11
+ output_type = "string"
12
+
13
+ def forward(self, concept: str):
14
+ explanations = {
15
+ "entropy": "Entropy measures the uncertainty or unpredictability in a set of outcomes. Example: A fair coin flip has 1 bit of entropy.",
16
+ "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.",
17
+ "kl divergence": "KL Divergence measures how one probability distribution differs from another. It's not symmetric and often used in model evaluation.",
18
+ "cross entropy": "Cross-entropy measures the difference between the true distribution and the predicted one, often used as a loss function in classification tasks.",
19
+ "channel capacity": "Channel capacity is the maximum rate at which information can be reliably transmitted over a communication channel."
20
+ }
21
+
22
+ key = concept.lower().strip()
23
+ return explanations.get(key, "Concept not found. Try 'entropy', 'mutual information', 'KL divergence', 'cross entropy', or 'channel capacity'.")
24
+
25
+ def __init__(self, *args, **kwargs):
26
+ self.is_initialized = False