minichain-stats / app.py
srush's picture
Upload with huggingface_hub
757c4ed
desc = """
### Typed Extraction
Information extraction that is automatically generated from a typed specification. [[Code](https://github.com/srush/MiniChain/blob/main/examples/stats.py)]
(Novel to MiniChain)
"""
# $
from minichain import prompt, show, type_to_prompt, OpenAI
from dataclasses import dataclass
from typing import List
from enum import Enum
# Data specification
# +
class StatType(Enum):
POINTS = 1
REBOUNDS = 2
ASSISTS = 3
@dataclass
class Stat:
value: int
stat: StatType
@dataclass
class Player:
player: str
stats: List[Stat]
# -
@prompt(OpenAI(), template_file="stats.pmpt.tpl", parser="json")
def stats(model, passage):
out = model(dict(passage=passage, typ=type_to_prompt(Player)))
return [Player(**j) for j in out]
# $
article = open("sixers.txt").read()
gradio = show(lambda passage: stats(passage),
examples=[article],
subprompts=[stats],
out_type="json",
description=desc,
code=open("stats.py", "r").read().split("$")[1].strip().strip("#").strip(),
)
if __name__ == "__main__":
gradio.launch()
# ExtractionPrompt().show({"passage": "Harden had 10 rebounds."},
# '[{"player": "Harden", "stats": {"value": 10, "stat": 2}}]')
# # View the run log.
# minichain.show_log("bash.log")