spandana30 commited on
Commit
46c0430
·
verified ·
1 Parent(s): 2e1d572

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -14
app.py CHANGED
@@ -54,6 +54,7 @@ def call_model(prompt: str, model, tokenizer) -> str:
54
  class AgentState(TypedDict):
55
  messages: List[Dict[str, str]]
56
  html: str
 
57
  feedback: str
58
  iteration: int
59
  done: bool
@@ -63,12 +64,10 @@ def agent(prompt_template, state: AgentState, agent_key: str, timing_label: str)
63
  start = time.time()
64
  model, tokenizer = load_agent_model(**AGENT_MODEL_CONFIG[agent_key])
65
 
66
- latest_input = state["messages"][-1]["content"]
67
- html_content = state.get("html", "")
68
 
69
- prompt = prompt_template.format(user_input=latest_input, html=html_content)
70
  response = call_model(prompt, model, tokenizer)
71
-
72
  state["messages"].append({"role": agent_key, "content": response})
73
  state["timings"][timing_label] = time.time() - start
74
  gc.collect()
@@ -76,8 +75,8 @@ def agent(prompt_template, state: AgentState, agent_key: str, timing_label: str)
76
 
77
  PROMPTS = {
78
  "product_manager": "You're a Product Manager. Refine this user request:\n{user_input}",
79
- "project_manager": "You're a Project Manager. Break down this refined request:\n{user_input}",
80
- "software_engineer": "You're a Software Engineer. Generate HTML+CSS code for:\n{user_input}",
81
  "qa_engineer": "You're a QA Engineer. Review this HTML:\n{html}\nGive feedback or reply APPROVED."
82
  }
83
 
@@ -85,6 +84,7 @@ def generate_ui(user_prompt: str, max_iter: int):
85
  state: AgentState = {
86
  "messages": [{"role": "user", "content": user_prompt}],
87
  "html": "",
 
88
  "feedback": "",
89
  "iteration": 0,
90
  "done": False,
@@ -101,15 +101,13 @@ def generate_ui(user_prompt: str, max_iter: int):
101
  workflow.add_node("project_manager", lambda s: {
102
  "messages": s["messages"] + [{
103
  "role": "project_manager",
104
- "content": agent(PROMPTS["project_manager"], s, "project_manager", "project_manager")
105
- }]
 
106
  })
107
  workflow.add_node("software_engineer", lambda s: {
108
- "html": agent(PROMPTS["software_engineer"], s, "software_engineer", "software_engineer"),
109
- "messages": s["messages"] + [{
110
- "role": "software_engineer",
111
- "content": s["html"]
112
- }]
113
  })
114
  def qa_fn(s):
115
  feedback = agent(PROMPTS["qa_engineer"], s, "qa_engineer", "qa_engineer")
@@ -148,4 +146,4 @@ def main():
148
  st.markdown(f"**{msg['role'].title()}**:\n```\n{msg['content']}\n```")
149
 
150
  if __name__ == "__main__":
151
- main()
 
54
  class AgentState(TypedDict):
55
  messages: List[Dict[str, str]]
56
  html: str
57
+ final_prompt: str
58
  feedback: str
59
  iteration: int
60
  done: bool
 
64
  start = time.time()
65
  model, tokenizer = load_agent_model(**AGENT_MODEL_CONFIG[agent_key])
66
 
67
+ latest_input = state.get("final_prompt", state["messages"][-1]["content"])
68
+ prompt = prompt_template.format(user_input=latest_input, html=state.get("html", ""), final_prompt=state.get("final_prompt", ""))
69
 
 
70
  response = call_model(prompt, model, tokenizer)
 
71
  state["messages"].append({"role": agent_key, "content": response})
72
  state["timings"][timing_label] = time.time() - start
73
  gc.collect()
 
75
 
76
  PROMPTS = {
77
  "product_manager": "You're a Product Manager. Refine this user request:\n{user_input}",
78
+ "project_manager": "You're a Project Manager. Break down this refined request into a clear spec:\n{user_input}",
79
+ "software_engineer": "You're a Software Engineer. Generate clean HTML+CSS code for this spec:\n{final_prompt}",
80
  "qa_engineer": "You're a QA Engineer. Review this HTML:\n{html}\nGive feedback or reply APPROVED."
81
  }
82
 
 
84
  state: AgentState = {
85
  "messages": [{"role": "user", "content": user_prompt}],
86
  "html": "",
87
+ "final_prompt": "",
88
  "feedback": "",
89
  "iteration": 0,
90
  "done": False,
 
101
  workflow.add_node("project_manager", lambda s: {
102
  "messages": s["messages"] + [{
103
  "role": "project_manager",
104
+ "content": (pm_out := agent(PROMPTS["project_manager"], s, "project_manager", "project_manager"))
105
+ }],
106
+ "final_prompt": pm_out
107
  })
108
  workflow.add_node("software_engineer", lambda s: {
109
+ "html": (html_out := agent(PROMPTS["software_engineer"], s, "software_engineer", "software_engineer")),
110
+ "messages": s["messages"] + [{"role": "software_engineer", "content": html_out}]
 
 
 
111
  })
112
  def qa_fn(s):
113
  feedback = agent(PROMPTS["qa_engineer"], s, "qa_engineer", "qa_engineer")
 
146
  st.markdown(f"**{msg['role'].title()}**:\n```\n{msg['content']}\n```")
147
 
148
  if __name__ == "__main__":
149
+ main()