add main.py
This commit is contained in:
@@ -1,25 +1,67 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from models import TaskCard
|
||||||
from parser import TaskParser
|
from parser import TaskParser
|
||||||
|
|
||||||
# Example raw texts
|
load_dotenv()
|
||||||
RAW_TEXTS = [
|
|
||||||
"Напишите мини-отчёт по LangChain до пятницы, 3-5 страниц, критерии: полнота и примеры кода",
|
# Example raw task descriptions
|
||||||
"Сделать агента на LangGraph который умеет искать в интернете, сдать ссылку на github",
|
EXAMPLES = [
|
||||||
"Реализовать REST API на FastAPI с авторизацией JWT, покрыть тестами, дедлайн 1 июня",
|
"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 main() -> None:
|
def demo_single(parser: TaskParser, text: str, idx: int) -> TaskCard:
|
||||||
parser = TaskParser()
|
"""Parse one example and print result."""
|
||||||
cards = parser.batch_parse(RAW_TEXTS)
|
print(f"\n=== Example {idx} ===")
|
||||||
for idx, card in enumerate(cards, start=1):
|
print(f"Raw: {text[:80]}")
|
||||||
print(f"\n=== Task {idx} ===")
|
card = parser.parse(text)
|
||||||
print(card.to_markdown())
|
print(card.to_markdown())
|
||||||
filename = f"task_{idx}.json"
|
return card
|
||||||
parser.save_to_file(card, filename)
|
|
||||||
print(f"Saved to {filename}")
|
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()
|
||||||
|
|
||||||
|
# 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__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
# End of main.py
|
|
||||||
|
|||||||
Reference in New Issue
Block a user