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)