From 5caa4cd9b1cfb31b0ed3b666b0c0a8007aebcc37 Mon Sep 17 00:00:00 2001 From: Farouk Adeleke Date: Sat, 25 Oct 2025 01:58:09 -0400 Subject: [PATCH] (no commit message) --- auto_classes.json | 4 ++++ pyproject.toml | 7 +++++++ setup.py | 23 +++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 auto_classes.json create mode 100644 pyproject.toml create mode 100644 setup.py diff --git a/auto_classes.json b/auto_classes.json new file mode 100644 index 0000000..8e16488 --- /dev/null +++ b/auto_classes.json @@ -0,0 +1,4 @@ +{ + "AutoConfig": "setup.ReceiptClassifierConfig", + "AutoAgent": "setup.ReceiptClassifier" +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..09dc750 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "receipt-classifier" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.11" +dependencies = ["dspy>=3.0.3", "modaic>=0.4.0"] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..4d17d67 --- /dev/null +++ b/setup.py @@ -0,0 +1,23 @@ +from modaic import PrecompiledAgent, PrecompiledConfig +import dspy + +class ReceiptClassifierConfig(PrecompiledConfig): # Configurable for each agent instance + lm: str = "openai/gpt-4o-mini" # Set OPENAI_API_KEY + max_tokens: int = 500 + +class ReceiptClassifier(PrecompiledAgent): # Extends dspy.module() + config: ReceiptClassifierConfig + + def __init__(self, config: ReceiptClassifierConfig, **kwargs): + super().__init__(config, **kwargs) + + self.extract = dspy.Predict("image -> total_cost") + lm = dspy.LM(config.lm, max_tokens=config.max_tokens) + self.extract.set_lm(lm) + + def forward(self, image_path: str) -> str: + receipt_image = dspy.Image.from_file(image_path) + return self.extract(receipt_image) + +agent = ReceiptClassifier(ReceiptClassifierConfig()) +agent.push_to_hub("farouk1/receipt-classifier", with_code=True)