diff --git a/examples/_context.py b/examples/_context.py index c7f2c91..3de2ea5 100644 --- a/examples/_context.py +++ b/examples/_context.py @@ -5,6 +5,7 @@ import sys sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) +import simplemind import simplemind as sm -__all__ = ["sm"] +__all__ = ["simplemind", "sm"] diff --git a/examples/bible_verses.py b/examples/bible_verses.py new file mode 100644 index 0000000..6df7ade --- /dev/null +++ b/examples/bible_verses.py @@ -0,0 +1,77 @@ +from _context import simplemind as sm +from pydantic import BaseModel +from rich.console import Console +from rich.panel import Panel +from rich.text import Text + +console = Console() + +claude = sm.Session(llm_provider="anthropic") + + +class BibleVerse(BaseModel): + book: str + chapter: int + verse: int + text: str + translation: str + + +class CrossReference(BaseModel): + verse: BibleVerse + notes: str + origin_verse: BibleVerse + + +def get_random_bible_verse() -> BibleVerse: + verse = claude.generate_data( + prompt="Get a random Bible verse", response_model=BibleVerse + ) + + return verse + + +def get_cross_reference(verse: BibleVerse) -> CrossReference: + ref = claude.generate_data( + prompt=f"Get a cross reference for the verse: {verse.text}", + response_model=CrossReference, + ) + + return ref + + +def pretty_print_reference(ref: CrossReference): + # Create origin verse panel + origin_text = Text() + origin_text.append( + f"{ref.origin_verse.book} {ref.origin_verse.chapter}:{ref.origin_verse.verse}\n", + style="bold blue", + ) + origin_text.append(f"{ref.origin_verse.text}\n", style="italic") + origin_text.append(f"({ref.origin_verse.translation})", style="dim") + + origin_panel = Panel(origin_text, title="Original Verse", border_style="blue") + + # Create cross reference panel + ref_text = Text() + ref_text.append( + f"{ref.verse.book} {ref.verse.chapter}:{ref.verse.verse}\n", style="bold green" + ) + ref_text.append(f"{ref.verse.text}\n", style="italic") + ref_text.append(f"({ref.verse.translation})", style="dim") + + ref_panel = Panel(ref_text, title="Cross Reference", border_style="green") + + # Create notes panel + notes_panel = Panel(ref.notes, title="Connection Notes", border_style="yellow") + + # Print all panels + console.print(origin_panel) + console.print(ref_panel) + console.print(notes_panel) + + +if __name__ == "__main__": + verse = get_random_bible_verse() + ref = get_cross_reference(verse) + pretty_print_reference(ref) diff --git a/examples/requirements.txt b/examples/requirements.txt index ea40e41..a1348ca 100644 --- a/examples/requirements.txt +++ b/examples/requirements.txt @@ -2,3 +2,4 @@ numpy openai pydantic faiss-cpu +rich