From aee33d81dbc5bccde2bb3bee28acc11b01ffa6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=80=D0=B8=D0=BB=D0=BB=20=D0=9A=D1=83=D1=82?= =?UTF-8?q?=D0=BB=D0=B0=D1=85=D0=BC=D0=B5=D1=82=D0=BE=D0=B2?= Date: Wed, 27 May 2026 14:04:34 +0000 Subject: [PATCH] add main.py --- main.py | 70 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/main.py b/main.py index d350b9a..587e0eb 100644 --- a/main.py +++ b/main.py @@ -1,25 +1,67 @@ import os import json +from dotenv import load_dotenv +from models import TaskCard from parser import TaskParser -# Example raw texts -RAW_TEXTS = [ - "Напишите мини-отчёт по LangChain до пятницы, 3-5 страниц, критерии: полнота и примеры кода", - "Сделать агента на LangGraph который умеет искать в интернете, сдать ссылку на github", - "Реализовать REST API на FastAPI с авторизацией JWT, покрыть тестами, дедлайн 1 июня", +load_dotenv() + +# Example raw task descriptions +EXAMPLES = [ + "Write a mini-report on LangChain for Friday, 3-5 pages, include code examples", + "Build a LangGraph agent with memory and interrupts, push code to github by Monday", + "Implement a REST API with FastAPI and JWT auth, add unit tests, deadline in 1 week", + "Create a RAG pipeline using Qdrant vector store and OpenAI embeddings", + "Build a chat bot with multi-turn memory using LangChain ConversationBufferMemory", ] +def demo_single(parser: TaskParser, text: str, idx: int) -> TaskCard: + """Parse one example and print result.""" + print(f"\n=== Example {idx} ===") + print(f"Raw: {text[:80]}") + card = parser.parse(text) + print(card.to_markdown()) + return card + +def demo_batch(parser: TaskParser, texts: list) -> list: + """Parse a batch of texts and save as JSON.""" + print("\n=== Batch parse ===") + cards = parser.batch_parse(texts) + for i, card in enumerate(cards): + fname = f"card_{i+1}.json" + with open(fname, "w", encoding="utf-8") as f: + json.dump(card.model_dump(), f, ensure_ascii=False, indent=2) + print(f" Saved {fname}: {card.title}") + return cards + +def demo_format(card: TaskCard) -> None: + """Demonstrate different output formats.""" + print("\n=== Formats ===") + print("Markdown:") + print(card.to_markdown()) + print("\nJSON:") + print(json.dumps(card.model_dump(), ensure_ascii=False, indent=2)) + def main() -> None: + """Run all demos.""" parser = TaskParser() - cards = parser.batch_parse(RAW_TEXTS) - for idx, card in enumerate(cards, start=1): - print(f"\n=== Task {idx} ===") - print(card.to_markdown()) - filename = f"task_{idx}.json" - parser.save_to_file(card, filename) - print(f"Saved to {filename}") + + # Demo 1: single parse + card1 = demo_single(parser, EXAMPLES[0], 1) + + # Demo 2: another single parse + demo_single(parser, EXAMPLES[1], 2) + + # Demo 3: third single parse + demo_single(parser, EXAMPLES[2], 3) + + # Demo 4: batch parse all examples + demo_batch(parser, EXAMPLES) + + # Demo 5: show formats + demo_format(card1) + + print("\nDone!") if __name__ == "__main__": main() - -# End of main.py