add main.py
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user