Submit solution for task 699cc158d6d3a5544a3ed35b: update main.py

This commit is contained in:
2026-06-02 17:01:26 +00:00
parent 95fc1f54f7
commit d4c4370605
+47 -31
View File
@@ -1,36 +1,52 @@
import sys
from agent import graph
if __name__ == "__main__":
def main():
print("LangGraph streammode demo. Type 'exit' to quit.")
state = {"messages": []}
for line in sys.stdin:
user_input = line.rstrip('\n')
if not user_input:
continue
if user_input.lower() in {"exit", "quit"}:
break
# Stream output with separators between steps
current_step = None
for chunk_type, chunk_data in graph.stream({"input": user_input, "messages": state["messages"]}, stream_mode=["messages", "updates"]):
if chunk_type == "messages":
message, meta = chunk_data
step = meta.get("langgraph_step")
if current_step is None:
current_step = step
elif step != current_step:
print("\n--- --- ---\n", end="")
current_step = step
if message.content:
print(message.content, end="")
elif chunk_type == "updates":
last_message = chunk_data.get("model", {}).get("messages", [-1])[-1]
# If the last message is an AIMessage with content, print it
try:
if hasattr(last_message, "content") and last_message.content:
print(last_message.content, end="")
except Exception:
pass
print()
state["messages"] = graph.invoke({"input": user_input, "messages": state["messages"]})["messages"]
print("Goodbye!")
# Если передан аргумент, используем его как сообщение; иначе читаем из stdin
if len(sys.argv) > 1:
user_input = " ".join(sys.argv[1:])
process(user_input, state)
else:
while True:
try:
user_input = input("You: ")
except EOFError:
break
if not user_input:
continue
if user_input.lower() in {"exit", "quit"}:
break
process(user_input, state)
def process(user_input, state):
current_step = None
for chunk_type, chunk_data in graph.stream(
{"input": user_input, "messages": state["messages"]},
stream_mode=["messages", "updates"],
):
if chunk_type == "messages":
message, meta = chunk_data
step = meta.get("langgraph_step")
if current_step is None:
current_step = step
elif step != current_step:
print("\n--- --- ---\n", end="")
current_step = step
if message.content:
print(message.content, end="")
elif chunk_type == "updates":
last_message = chunk_data.get("model", {}).get("messages", [-1])[-1]
try:
if hasattr(last_message, "content") and last_message.content:
print(last_message.content, end="")
except Exception:
pass
print()
state["messages"] = graph.invoke(
{"input": user_input, "messages": state["messages"]}
)["messages"]
if __name__ == "__main__":
main()