Spaces:
Running
Running
Update app2.py
Browse files
app2.py
CHANGED
@@ -1,9 +1,11 @@
|
|
|
|
1 |
import streamlit as st
|
2 |
-
from langchain.utilities import GoogleSearchAPIWrapper
|
3 |
from langchain.chains import ConversationChain
|
4 |
from langchain.memory import ConversationBufferMemory
|
5 |
import subprocess
|
6 |
import git
|
|
|
7 |
|
8 |
# API Key Input
|
9 |
if "GOOGLE_API_KEY" not in st.session_state:
|
@@ -73,10 +75,14 @@ if st.session_state.GOOGLE_API_KEY:
|
|
73 |
return f"An unexpected error occurred while running the command."
|
74 |
|
75 |
def get_agent_response(message: str, system_prompt: str):
|
76 |
-
|
|
|
77 |
memory = ConversationBufferMemory()
|
78 |
conversation = ConversationChain(llm=llm, memory=memory)
|
79 |
-
|
|
|
|
|
|
|
80 |
return response
|
81 |
|
82 |
def display_agent_info(agent_name: str):
|
@@ -102,7 +108,9 @@ if st.session_state.GOOGLE_API_KEY:
|
|
102 |
st.info("Starting autonomous build process...")
|
103 |
for agent in selected_agents:
|
104 |
st.write(f"Agent {agent} is working on the project...")
|
105 |
-
|
|
|
|
|
106 |
add_code_to_workspace(project_name, code, f"{agent.lower()}_app.py")
|
107 |
st.write(f"Agent {agent} has completed its task.")
|
108 |
st.success("Autonomous build process completed!")
|
@@ -122,6 +130,7 @@ if st.session_state.GOOGLE_API_KEY:
|
|
122 |
def combine_and_process_responses(responses: dict[str, str], task: str) -> str:
|
123 |
combined = "\n\n".join([f"{agent}: {response}" for agent, response in responses.items()])
|
124 |
return f"Combined response for task '{task}':\n\n{combined}"
|
|
|
125 |
# Streamlit UI
|
126 |
st.title("DevToolKit: AI-Powered Development Environment")
|
127 |
|
@@ -132,6 +141,8 @@ if st.session_state.GOOGLE_API_KEY:
|
|
132 |
if project_name and project_name not in st.session_state.workspace_projects:
|
133 |
st.session_state.workspace_projects[project_name] = {'files': []}
|
134 |
st.success(f"Created project: {project_name}")
|
|
|
|
|
135 |
elif project_name in st.session_state.workspace_projects:
|
136 |
st.warning(f"Project {project_name} already exists")
|
137 |
else:
|
@@ -140,17 +151,18 @@ if st.session_state.GOOGLE_API_KEY:
|
|
140 |
# Code Editor
|
141 |
st.subheader("Code Editor")
|
142 |
if st.session_state.workspace_projects:
|
143 |
-
selected_project =
|
144 |
-
if selected_project:
|
145 |
-
files = [file['file_name'] for file in st.session_state.workspace_projects[selected_project]['files']]
|
146 |
-
selected_file = st.selectbox("Select file to edit", files) if files else None
|
147 |
if selected_file:
|
148 |
file_content = next((file['code'] for file in st.session_state.workspace_projects[selected_project]['files'] if file['file_name'] == selected_file), "")
|
149 |
-
|
150 |
if st.button("Save Changes"):
|
151 |
for file in st.session_state.workspace_projects[selected_project]['files']:
|
152 |
if file['file_name'] == selected_file:
|
153 |
file['code'] = edited_code
|
|
|
|
|
|
|
|
|
154 |
st.success("Changes saved successfully!")
|
155 |
break
|
156 |
else:
|
|
|
1 |
+
import os
|
2 |
import streamlit as st
|
3 |
+
from langchain.utilities import GoogleSearchAPIWrapper
|
4 |
from langchain.chains import ConversationChain
|
5 |
from langchain.memory import ConversationBufferMemory
|
6 |
import subprocess
|
7 |
import git
|
8 |
+
import logging
|
9 |
|
10 |
# API Key Input
|
11 |
if "GOOGLE_API_KEY" not in st.session_state:
|
|
|
75 |
return f"An unexpected error occurred while running the command."
|
76 |
|
77 |
def get_agent_response(message: str, system_prompt: str):
|
78 |
+
# Access API key from session state
|
79 |
+
llm = GoogleSearchAPIWrapper(google_api_key=st.session_state.GOOGLE_API_KEY)
|
80 |
memory = ConversationBufferMemory()
|
81 |
conversation = ConversationChain(llm=llm, memory=memory)
|
82 |
+
|
83 |
+
# Combine system prompt and user message
|
84 |
+
full_prompt = f"{system_prompt}\n{message}"
|
85 |
+
response = conversation.run(full_prompt)
|
86 |
return response
|
87 |
|
88 |
def display_agent_info(agent_name: str):
|
|
|
108 |
st.info("Starting autonomous build process...")
|
109 |
for agent in selected_agents:
|
110 |
st.write(f"Agent {agent} is working on the project...")
|
111 |
+
# More specific prompt for code generation
|
112 |
+
prompt = f"Generate Python code for a simple web application using Flask framework in project {project_name}. Include instructions for running the application."
|
113 |
+
code = get_agent_response(prompt, agents[agent]['system_prompt'])
|
114 |
add_code_to_workspace(project_name, code, f"{agent.lower()}_app.py")
|
115 |
st.write(f"Agent {agent} has completed its task.")
|
116 |
st.success("Autonomous build process completed!")
|
|
|
130 |
def combine_and_process_responses(responses: dict[str, str], task: str) -> str:
|
131 |
combined = "\n\n".join([f"{agent}: {response}" for agent, response in responses.items()])
|
132 |
return f"Combined response for task '{task}':\n\n{combined}"
|
133 |
+
|
134 |
# Streamlit UI
|
135 |
st.title("DevToolKit: AI-Powered Development Environment")
|
136 |
|
|
|
141 |
if project_name and project_name not in st.session_state.workspace_projects:
|
142 |
st.session_state.workspace_projects[project_name] = {'files': []}
|
143 |
st.success(f"Created project: {project_name}")
|
144 |
+
# Create the project directory
|
145 |
+
os.makedirs(project_name, exist_ok=True)
|
146 |
elif project_name in st.session_state.workspace_projects:
|
147 |
st.warning(f"Project {project_name} already exists")
|
148 |
else:
|
|
|
151 |
# Code Editor
|
152 |
st.subheader("Code Editor")
|
153 |
if st.session_state.workspace_projects:
|
154 |
+
selected_project = st.selectbox("Select file to edit", files) if files else None
|
|
|
|
|
|
|
155 |
if selected_file:
|
156 |
file_content = next((file['code'] for file in st.session_state.workspace_projects[selected_project]['files'] if file['file_name'] == selected_file), "")
|
157 |
+
edited_code = st.text_area("Edit code", value=file_content, height=300) # Using st.text_area for now
|
158 |
if st.button("Save Changes"):
|
159 |
for file in st.session_state.workspace_projects[selected_project]['files']:
|
160 |
if file['file_name'] == selected_file:
|
161 |
file['code'] = edited_code
|
162 |
+
# Save the changes to the actual file in the project directory
|
163 |
+
file_path = os.path.join(selected_project, selected_file)
|
164 |
+
with open(file_path, "w") as f:
|
165 |
+
f.write(edited_code)
|
166 |
st.success("Changes saved successfully!")
|
167 |
break
|
168 |
else:
|