add main.py
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
Демонстрация LangGraph-агента с рефлексией.
|
||||
|
||||
Граф: START -> draft_answer -> reflect -> (ok: END | needs_revision: rewrite -> reflect)
|
||||
max_rounds по умолчанию 2.
|
||||
|
||||
Запуск:
|
||||
python main.py
|
||||
"""
|
||||
import asyncio
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
from graph import graph, ReflectState # noqa: E402
|
||||
|
||||
async def run(question: str, max_rounds: int = 2) -> ReflectState:
|
||||
"""Запускает граф и возвращает финальное состояние."""
|
||||
print(f"Вопрос: {question}")
|
||||
print(f"max_rounds: {max_rounds}")
|
||||
print("=" * 60)
|
||||
|
||||
state = await graph.ainvoke({
|
||||
"question": question,
|
||||
"draft": "",
|
||||
"critique": "",
|
||||
"verdict": "",
|
||||
"round": 0,
|
||||
"max_rounds": max_rounds,
|
||||
})
|
||||
return state
|
||||
|
||||
def main() -> None:
|
||||
# Демо 1: основной вопрос из задания
|
||||
state = asyncio.run(run(
|
||||
question="Объясни студенту разницу между tool и resource в MCP",
|
||||
max_rounds=2,
|
||||
))
|
||||
print("\n" + "=" * 60)
|
||||
print(f"Итоговый ответ (раундов доработки: {state['round']}):")
|
||||
print(state["draft"])
|
||||
print(f"Финальный вердикт критика: {state['verdict']}")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
|
||||
# Демо 2: другой вопрос
|
||||
state2 = asyncio.run(run(
|
||||
question="Что такое LangGraph и чем он отличается от обычной цепочки LangChain?",
|
||||
max_rounds=2,
|
||||
))
|
||||
print(f"Итоговый ответ (раундов доработки: {state2['round']}):")
|
||||
print(state2["draft"])
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
|
||||
# Демо 3: короткий вопрос — проверяем что лимит соблюдается
|
||||
state3 = asyncio.run(run(
|
||||
question="Что такое StateGraph в LangGraph?",
|
||||
max_rounds=1,
|
||||
))
|
||||
print(f"Итоговый ответ (max_rounds=1, раундов: {state3['round']}):")
|
||||
print(state3["draft"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user