26 lines
900 B
Python
26 lines
900 B
Python
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_url: str) -> str:
|
|
receipt_image = dspy.Image(url=image_url)
|
|
return self.extract(image=receipt_image)
|
|
|
|
agent = ReceiptClassifier(ReceiptClassifierConfig())
|
|
agent.push_to_hub("farouk1/receipt-classifier", with_code=True) # Set MODAIC_TOKEN
|