Spaces:
Build error
Build error
Update app.py
Browse files
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 |
-
|
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{
|
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()
|