Files
doc-extract/program.py
2026-04-02 18:18:59 -07:00

34 lines
1.0 KiB
Python

# Here you can define your dspy.Module as a modaic.PrecompiledProgram
from typing import Literal
import dspy
from modaic import PrecompiledProgram
DocumentLabel = Literal["legal", "healthcare", "personal", "tax", "other"]
class ExtractSignature(dspy.Signature):
"""Classify a document snippet into one of the supported label buckets."""
context: str = dspy.InputField(desc="Document text or snippet to classify")
label: DocumentLabel = dspy.OutputField(
desc="Return exactly one of: legal, healthcare, personal, tax, or other"
)
class DocExtract(PrecompiledProgram):
def __init__(self):
super().__init__()
self.cot = dspy.ChainOfThought(ExtractSignature)
def forward(self, context: str) -> dspy.Prediction:
return self.cot(context=context)
if __name__ == "__main__":
program = DocExtract()
dspy.configure(lm=dspy.LM(model="gpt-5-mini"))
result = program(context="This is a legal document")
print(result.label)
program.push_to_hub("tyrin/doc-extract")