Anshini commited on
Commit
2002f39
·
verified ·
1 Parent(s): ca86fbf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -11
app.py CHANGED
@@ -31,15 +31,12 @@ together_api_key = os.getenv("TOGETHER_API_KEY")
31
 
32
  # LangGraph State
33
  class State(TypedDict):
34
- messages: Annotated[list, add_messages]
35
- name: str
36
- birthday: str
37
  input : str
 
 
38
  code : str
39
  explanation:str
40
- execution_result=str
41
-
42
-
43
  # LLM
44
  code_generator = Together(
45
  model="deepseek-ai/DeepSeek-R1-Distill-Llama-70B-free",
@@ -51,6 +48,33 @@ code_generator = Together(
51
  # Memory
52
  memory = MemorySaver()
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  # Define node
55
  def ai_assistance(state: State):
56
  result =code_generator.invoke(state["messages"])
@@ -273,21 +297,24 @@ def router(state):
273
  return "AI_Assistance"
274
  builder = StateGraph(State)
275
 
276
- # Define Nodes
277
  builder.add_node("AI_Assistance", ai_assistance)
278
- builder.add_node("LLM_Agent", agent_node)
 
279
  builder.add_node("Generate_Code", generate_code)
280
  builder.add_node("Code_Explainer", explain_code)
281
 
282
- # Entry Point
283
  builder.set_entry_point("AI_Assistance")
284
 
285
  # Define Flow
286
- builder.add_edge("AI_Assistance", "LLM_Agent")
287
- builder.add_edge("LLM_Agent", "Generate_Code")
 
288
  builder.add_edge("Generate_Code", "Code_Explainer")
289
  builder.add_edge("Code_Explainer", END)
290
 
 
291
  graph = builder.compile(checkpointer=memory)
292
  # Streamlit UI setup
293
  st.set_page_config(page_title="MitraVerse", layout="wide")
 
31
 
32
  # LangGraph State
33
  class State(TypedDict):
34
+ messages: Annotated[list, add_messages]
 
 
35
  input : str
36
+ questions : List[str]
37
+ answers:List[str]
38
  code : str
39
  explanation:str
 
 
 
40
  # LLM
41
  code_generator = Together(
42
  model="deepseek-ai/DeepSeek-R1-Distill-Llama-70B-free",
 
48
  # Memory
49
  memory = MemorySaver()
50
 
51
+ def generate_questions(state: State):
52
+ user_input = state["messages"][-1].content
53
+ result = subtask_chain.invoke({"user_goal": user_input})
54
+ text = result["text"]
55
+ subtasks, questions = parse_subtasks_and_questions(text)
56
+
57
+ follow_up = "\n".join(f"Q{i+1}: {q}" for i, q in enumerate(questions))
58
+ state["messages"].append(AIMessage(content="To proceed, please answer these questions:\n" + follow_up))
59
+
60
+ return {
61
+ "messages": state["messages"],
62
+ "questions": questions,
63
+ "answers": [], # Wait for user
64
+ "next": "wait_for_answers"
65
+ }
66
+ if "questions" in state_input and state_input["questions"]:
67
+ for q in state_input["questions"]:
68
+ st.text_input(q, key=q) # Store answers in keys
69
+
70
+ submitted = st.form_submit_button("Submit Answers")
71
+ if submitted:
72
+ state_input["answers"] = [st.session_state[q] for q in state_input["questions"]]
73
+ state_input["questions"] = [] # Clear questions
74
+ def handle_answers(state: State):
75
+ full_input = state["input"] + "\n\n" + "\n".join(state["answers"])
76
+ return {**state, "input": full_input}
77
+
78
  # Define node
79
  def ai_assistance(state: State):
80
  result =code_generator.invoke(state["messages"])
 
297
  return "AI_Assistance"
298
  builder = StateGraph(State)
299
 
300
+ # Define All Nodes
301
  builder.add_node("AI_Assistance", ai_assistance)
302
+ builder.add_node("Generate_Questions", generate_questions)
303
+ builder.add_node("Handle_Answers", handle_answers)
304
  builder.add_node("Generate_Code", generate_code)
305
  builder.add_node("Code_Explainer", explain_code)
306
 
307
+ # Set Entry Point
308
  builder.set_entry_point("AI_Assistance")
309
 
310
  # Define Flow
311
+ builder.add_edge("AI_Assistance", "Generate_Questions")
312
+ builder.add_edge("Generate_Questions", "Handle_Answers")
313
+ builder.add_edge("Handle_Answers", "Generate_Code")
314
  builder.add_edge("Generate_Code", "Code_Explainer")
315
  builder.add_edge("Code_Explainer", END)
316
 
317
+
318
  graph = builder.compile(checkpointer=memory)
319
  # Streamlit UI setup
320
  st.set_page_config(page_title="MitraVerse", layout="wide")