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
+24 -8
View File
@@ -1,18 +1,31 @@
import sys import sys
from agent import graph from agent import graph
if __name__ == "__main__": def main():
print("LangGraph streammode demo. Type 'exit' to quit.") print("LangGraph streammode demo. Type 'exit' to quit.")
state = {"messages": []} state = {"messages": []}
for line in sys.stdin: # Если передан аргумент, используем его как сообщение; иначе читаем из stdin
user_input = line.rstrip('\n') 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: if not user_input:
continue continue
if user_input.lower() in {"exit", "quit"}: if user_input.lower() in {"exit", "quit"}:
break break
# Stream output with separators between steps process(user_input, state)
def process(user_input, state):
current_step = None current_step = None
for chunk_type, chunk_data in graph.stream({"input": user_input, "messages": state["messages"]}, stream_mode=["messages", "updates"]): for chunk_type, chunk_data in graph.stream(
{"input": user_input, "messages": state["messages"]},
stream_mode=["messages", "updates"],
):
if chunk_type == "messages": if chunk_type == "messages":
message, meta = chunk_data message, meta = chunk_data
step = meta.get("langgraph_step") step = meta.get("langgraph_step")
@@ -25,12 +38,15 @@ if __name__ == "__main__":
print(message.content, end="") print(message.content, end="")
elif chunk_type == "updates": elif chunk_type == "updates":
last_message = chunk_data.get("model", {}).get("messages", [-1])[-1] last_message = chunk_data.get("model", {}).get("messages", [-1])[-1]
# If the last message is an AIMessage with content, print it
try: try:
if hasattr(last_message, "content") and last_message.content: if hasattr(last_message, "content") and last_message.content:
print(last_message.content, end="") print(last_message.content, end="")
except Exception: except Exception:
pass pass
print() print()
state["messages"] = graph.invoke({"input": user_input, "messages": state["messages"]})["messages"] state["messages"] = graph.invoke(
print("Goodbye!") {"input": user_input, "messages": state["messages"]}
)["messages"]
if __name__ == "__main__":
main()