Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -3,37 +3,272 @@ from huggingface_hub import InferenceClient
|
|
3 |
import os
|
4 |
import sys
|
5 |
import pickle
|
|
|
6 |
|
7 |
st.title("CODEFUSSION ☄")
|
8 |
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
model_links = {
|
13 |
-
"LegacyLift🚀":
|
14 |
-
"ModernMigrate⭐":
|
15 |
-
"RetroRecode🔄":
|
16 |
}
|
17 |
|
18 |
model_info = {
|
19 |
"LegacyLift🚀": {
|
20 |
-
'description': "
|
21 |
'logo': './11.jpg'
|
22 |
},
|
23 |
"ModernMigrate⭐": {
|
24 |
-
'description': "
|
25 |
'logo': './2.jpg'
|
26 |
},
|
27 |
"RetroRecode🔄": {
|
28 |
-
'description': "
|
29 |
'logo': './3.jpg'
|
30 |
},
|
31 |
}
|
32 |
|
33 |
-
def
|
34 |
prompt = ""
|
35 |
if custom_instructions:
|
36 |
-
prompt += f"\[INST\] {custom_instructions}
|
37 |
|
38 |
# Add conversation history to the prompt
|
39 |
prompt += "\[CONV_HISTORY\]\n"
|
@@ -42,7 +277,7 @@ def format_promt(message, conversation_history, custom_instructions=None):
|
|
42 |
prompt += "\[/CONV_HISTORY\]\n"
|
43 |
|
44 |
# Add the current message
|
45 |
-
prompt += f"\[INST\] {message}
|
46 |
|
47 |
# Add the response format
|
48 |
prompt += "\[RESPONSE\]\n"
|
@@ -115,26 +350,125 @@ if st.session_state.chat_state == "normal":
|
|
115 |
formated_text = format_promt(prompt, conversation_history, custom_instruction)
|
116 |
|
117 |
with st.chat_message("assistant"):
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
max_new_tokens=max_new_tokens,
|
126 |
-
stream=True
|
127 |
-
)
|
128 |
-
response = st.write_stream(output)
|
129 |
-
except ValueError as e:
|
130 |
-
if "Input validation error" in str(e):
|
131 |
-
st.error("Error: The input prompt is too long. Please try a shorter prompt.")
|
132 |
-
else:
|
133 |
-
st.error(f"An error occurred: {e}")
|
134 |
else:
|
135 |
-
st.
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
elif st.session_state.chat_state == "reset":
|
139 |
st.session_state.chat_state = "normal"
|
140 |
-
st.experimental_rerun()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
import os
|
4 |
import sys
|
5 |
import pickle
|
6 |
+
import json
|
7 |
|
8 |
st.title("CODEFUSSION ☄")
|
9 |
|
10 |
+
# --- Agent Definitions ---
|
11 |
+
class Agent:
|
12 |
+
def __init__(self, name, role, tools, knowledge_base=None):
|
13 |
+
self.name = name
|
14 |
+
self.role = role
|
15 |
+
self.tools = tools
|
16 |
+
self.knowledge_base = knowledge_base
|
17 |
+
self.memory = []
|
18 |
|
19 |
+
def act(self, prompt, context):
|
20 |
+
self.memory.append((prompt, context))
|
21 |
+
action = self.choose_action(prompt, context)
|
22 |
+
return action
|
23 |
+
|
24 |
+
def choose_action(self, prompt, context):
|
25 |
+
# Placeholder for action selection logic
|
26 |
+
# This should be implemented based on the specific agent's capabilities
|
27 |
+
# and the available tools
|
28 |
+
return {"tool": "Code Generation", "arguments": {"language": "python", "code": "print('Hello, World!')"}}
|
29 |
+
|
30 |
+
def observe(self, observation):
|
31 |
+
# Placeholder for observation processing
|
32 |
+
# This should be implemented based on the agent's capabilities and the nature of the observation
|
33 |
+
pass
|
34 |
+
|
35 |
+
def learn(self, data):
|
36 |
+
# Placeholder for learning logic
|
37 |
+
# This should be implemented based on the agent's capabilities and the type of data
|
38 |
+
pass
|
39 |
+
|
40 |
+
def __str__(self):
|
41 |
+
return f"Agent: {self.name} (Role: {self.role})"
|
42 |
+
|
43 |
+
# --- Tool Definitions ---
|
44 |
+
class Tool:
|
45 |
+
def __init__(self, name, description):
|
46 |
+
self.name = name
|
47 |
+
self.description = description
|
48 |
+
|
49 |
+
def run(self, arguments):
|
50 |
+
# Placeholder for tool execution logic
|
51 |
+
# This should be implemented based on the specific tool's functionality
|
52 |
+
# and the provided arguments
|
53 |
+
return {"output": "Tool Output"}
|
54 |
+
|
55 |
+
# --- Tool Examples ---
|
56 |
+
class CodeGenerationTool(Tool):
|
57 |
+
def __init__(self):
|
58 |
+
super().__init__("Code Generation", "Generates code snippets in various languages.")
|
59 |
+
|
60 |
+
def run(self, arguments):
|
61 |
+
# This is a simplified example, real implementation would use a code generation model
|
62 |
+
language = arguments.get("language", "python")
|
63 |
+
code = arguments.get("code", "print('Hello, World!')")
|
64 |
+
return {"output": f"```{language}\n{code}\n```"}
|
65 |
+
|
66 |
+
class DataRetrievalTool(Tool):
|
67 |
+
def __init__(self):
|
68 |
+
super().__init__("Data Retrieval", "Accesses data from APIs, databases, or files.")
|
69 |
+
|
70 |
+
def run(self, arguments):
|
71 |
+
# This is a simplified example, real implementation would use APIs, databases, or file systems
|
72 |
+
source = arguments.get("source", "https://example.com/data")
|
73 |
+
return {"output": f"Data from {source}"}
|
74 |
+
|
75 |
+
class CodeExecutionTool(Tool):
|
76 |
+
def __init__(self):
|
77 |
+
super().__init__("Code Execution", "Runs code snippets in various languages.")
|
78 |
+
|
79 |
+
def run(self, arguments):
|
80 |
+
# This is a simplified example, real implementation would use a code execution engine
|
81 |
+
code = arguments.get("code", "print('Hello, World!')")
|
82 |
+
return {"output": f"Code executed: {code}"}
|
83 |
+
|
84 |
+
class CodeDebuggingTool(Tool):
|
85 |
+
def __init__(self):
|
86 |
+
super().__init__("Code Debugging", "Identifies and resolves errors in code snippets.")
|
87 |
+
|
88 |
+
def run(self, arguments):
|
89 |
+
# This is a simplified example, real implementation would use a code debugger
|
90 |
+
code = arguments.get("code", "print('Hello, World!')")
|
91 |
+
return {"output": f"Code debugged: {code}"}
|
92 |
+
|
93 |
+
class CodeSummarizationTool(Tool):
|
94 |
+
def __init__(self):
|
95 |
+
super().__init__("Code Summarization", "Provides a concise overview of the functionality of a code snippet.")
|
96 |
+
|
97 |
+
def run(self, arguments):
|
98 |
+
# This is a simplified example, real implementation would use a code summarization model
|
99 |
+
code = arguments.get("code", "print('Hello, World!')")
|
100 |
+
return {"output": f"Code summary: {code}"}
|
101 |
+
|
102 |
+
class CodeTranslationTool(Tool):
|
103 |
+
def __init__(self):
|
104 |
+
super().__init__("Code Translation", "Translates code snippets between different programming languages.")
|
105 |
+
|
106 |
+
def run(self, arguments):
|
107 |
+
# This is a simplified example, real implementation would use a code translation model
|
108 |
+
code = arguments.get("code", "print('Hello, World!')")
|
109 |
+
return {"output": f"Translated code: {code}"}
|
110 |
+
|
111 |
+
class CodeOptimizationTool(Tool):
|
112 |
+
def __init__(self):
|
113 |
+
super().__init__("Code Optimization", "Optimizes code for performance and efficiency.")
|
114 |
+
|
115 |
+
def run(self, arguments):
|
116 |
+
# This is a simplified example, real implementation would use a code optimization model
|
117 |
+
code = arguments.get("code", "print('Hello, World!')")
|
118 |
+
return {"output": f"Optimized code: {code}"}
|
119 |
+
|
120 |
+
class CodeDocumentationTool(Tool):
|
121 |
+
def __init__(self):
|
122 |
+
super().__init__("Code Documentation", "Generates documentation for code snippets.")
|
123 |
+
|
124 |
+
def run(self, arguments):
|
125 |
+
# This is a simplified example, real implementation would use a code documentation generator
|
126 |
+
code = arguments.get("code", "print('Hello, World!')")
|
127 |
+
return {"output": f"Code documentation: {code}"}
|
128 |
+
|
129 |
+
class ImageGenerationTool(Tool):
|
130 |
+
def __init__(self):
|
131 |
+
super().__init__("Image Generation", "Generates images based on text descriptions.")
|
132 |
+
|
133 |
+
def run(self, arguments):
|
134 |
+
# This is a simplified example, real implementation would use an image generation model
|
135 |
+
description = arguments.get("description", "A cat sitting on a couch")
|
136 |
+
return {"output": f"Generated image based on: {description}"}
|
137 |
+
|
138 |
+
class ImageEditingTool(Tool):
|
139 |
+
def __init__(self):
|
140 |
+
super().__init__("Image Editing", "Modifying existing images.")
|
141 |
+
|
142 |
+
def run(self, arguments):
|
143 |
+
# This is a simplified example, real implementation would use an image editing library
|
144 |
+
image_path = arguments.get("image_path", "path/to/image.jpg")
|
145 |
+
return {"output": f"Image edited: {image_path}"}
|
146 |
+
|
147 |
+
class ImageAnalysisTool(Tool):
|
148 |
+
def __init__(self):
|
149 |
+
super().__init__("Image Analysis", "Extracting information from images, such as objects, scenes, and emotions.")
|
150 |
+
|
151 |
+
def run(self, arguments):
|
152 |
+
# This is a simplified example, real implementation would use an image analysis model
|
153 |
+
image_path = arguments.get("image_path", "path/to/image.jpg")
|
154 |
+
return {"output": f"Image analysis results: {image_path}"}
|
155 |
+
|
156 |
+
# --- Agent Pool ---
|
157 |
+
agent_pool = {
|
158 |
+
"IdeaIntake": Agent("IdeaIntake", "Idea Intake", [DataRetrievalTool(), CodeGenerationTool(), SentimentAnalysisTool(), TextGenerationTool()], knowledge_base=""),
|
159 |
+
"CodeBuilder": Agent("CodeBuilder", "Code Builder", [CodeGenerationTool(), CodeDebuggingTool(), CodeOptimizationTool()], knowledge_base=""),
|
160 |
+
"ImageCreator": Agent("ImageCreator", "Image Creator", [ImageGenerationTool(), ImageEditingTool()], knowledge_base=""),
|
161 |
+
}
|
162 |
+
|
163 |
+
# --- Workflow Definitions ---
|
164 |
+
class Workflow:
|
165 |
+
def __init__(self, name, agents, task, description):
|
166 |
+
self.name = name
|
167 |
+
self.agents = agents
|
168 |
+
self.task = task
|
169 |
+
self.description = description
|
170 |
+
|
171 |
+
def run(self, prompt, context):
|
172 |
+
# Placeholder for workflow execution logic
|
173 |
+
# This should be implemented based on the specific workflow's steps
|
174 |
+
# and the interaction between the agents
|
175 |
+
for agent in self.agents:
|
176 |
+
action = agent.act(prompt, context)
|
177 |
+
# Execute the tool
|
178 |
+
if action.get("tool"):
|
179 |
+
tool = next((t for t in agent.tools if t.name == action["tool"]), None)
|
180 |
+
if tool:
|
181 |
+
output = tool.run(action["arguments"])
|
182 |
+
# Update context
|
183 |
+
context.update(output)
|
184 |
+
# Observe the output
|
185 |
+
agent.observe(output)
|
186 |
+
return context
|
187 |
+
|
188 |
+
# --- Workflow Examples ---
|
189 |
+
class AppBuildWorkflow(Workflow):
|
190 |
+
def __init__(self):
|
191 |
+
super().__init__("App Build", [agent_pool["IdeaIntake"], agent_pool["CodeBuilder"]], "Build a mobile application", "A workflow for building a mobile application.")
|
192 |
+
|
193 |
+
class WebsiteBuildWorkflow(Workflow):
|
194 |
+
def __init__(self):
|
195 |
+
super().__init__("Website Build", [agent_pool["IdeaIntake"], agent_pool["CodeBuilder"]], "Build a website", "A workflow for building a website.")
|
196 |
+
|
197 |
+
class GameBuildWorkflow(Workflow):
|
198 |
+
def __init__(self):
|
199 |
+
super().__init__("Game Build", [agent_pool["IdeaIntake"], agent_pool["CodeBuilder"]], "Build a game", "A workflow for building a game.")
|
200 |
+
|
201 |
+
class PluginBuildWorkflow(Workflow):
|
202 |
+
def __init__(self):
|
203 |
+
super().__init__("Plugin Build", [agent_pool["IdeaIntake"], agent_pool["CodeBuilder"]], "Build a plugin", "A workflow for building a plugin.")
|
204 |
+
|
205 |
+
class DevSandboxWorkflow(Workflow):
|
206 |
+
def __init__(self):
|
207 |
+
super().__init__("Dev Sandbox", [agent_pool["IdeaIntake"], agent_pool["CodeBuilder"]], "Experiment with code", "A workflow for experimenting with code.")
|
208 |
+
|
209 |
+
# --- Model Definitions ---
|
210 |
+
class Model:
|
211 |
+
def __init__(self, name, description, model_link):
|
212 |
+
self.name = name
|
213 |
+
self.description = description
|
214 |
+
self.model_link = model_link
|
215 |
+
self.inference_client = InferenceClient(model=model_link)
|
216 |
+
|
217 |
+
def generate_text(self, prompt, temperature=0.5, max_new_tokens=2048):
|
218 |
+
try:
|
219 |
+
output = self.inference_client.text_generation(
|
220 |
+
prompt,
|
221 |
+
temperature=temperature,
|
222 |
+
max_new_tokens=max_new_tokens,
|
223 |
+
stream=True
|
224 |
+
)
|
225 |
+
response = "".join(output)
|
226 |
+
except ValueError as e:
|
227 |
+
if "Input validation error" in str(e):
|
228 |
+
return "Error: The input prompt is too long. Please try a shorter prompt."
|
229 |
+
else:
|
230 |
+
return f"An error occurred: {e}"
|
231 |
+
return response
|
232 |
+
|
233 |
+
# --- Model Examples ---
|
234 |
+
class LegacyLiftModel(Model):
|
235 |
+
def __init__(self):
|
236 |
+
super().__init__("LegacyLift🚀", "The LegacyLift model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model is best for minimal problem-solving, content writing, and daily tips.", "mistralai/Mistral-7B-Instruct-v0.2")
|
237 |
+
|
238 |
+
class ModernMigrateModel(Model):
|
239 |
+
def __init__(self):
|
240 |
+
super().__init__("ModernMigrate⭐", "The ModernMigrate model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model excels in coding, logical reasoning, and high-speed inference.", "mistralai/Mixtral-8x7B-Instruct-v0.1")
|
241 |
+
|
242 |
+
class RetroRecodeModel(Model):
|
243 |
+
def __init__(self):
|
244 |
+
super().__init__("RetroRecode🔄", "The RetroRecode model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model is best suited for critical development, practical knowledge, and serverless inference.", "microsoft/Phi-3-mini-4k-instruct")
|
245 |
+
|
246 |
+
# --- Streamlit Interface ---
|
247 |
model_links = {
|
248 |
+
"LegacyLift🚀": "mistralai/Mistral-7B-Instruct-v0.2",
|
249 |
+
"ModernMigrate⭐": "mistralai/Mixtral-8x7B-Instruct-v0.1",
|
250 |
+
"RetroRecode🔄": "microsoft/Phi-3-mini-4k-instruct"
|
251 |
}
|
252 |
|
253 |
model_info = {
|
254 |
"LegacyLift🚀": {
|
255 |
+
'description': "The LegacyLift model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model is best for minimal problem-solving, content writing, and daily tips.",
|
256 |
'logo': './11.jpg'
|
257 |
},
|
258 |
"ModernMigrate⭐": {
|
259 |
+
'description': "The ModernMigrate model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model excels in coding, logical reasoning, and high-speed inference.",
|
260 |
'logo': './2.jpg'
|
261 |
},
|
262 |
"RetroRecode🔄": {
|
263 |
+
'description': "The RetroRecode model is a Large Language Model (LLM) that's able to have question and answer interactions.\n \n\nThis model is best suited for critical development, practical knowledge, and serverless inference.",
|
264 |
'logo': './3.jpg'
|
265 |
},
|
266 |
}
|
267 |
|
268 |
+
def format_prompt(message, conversation_history, custom_instructions=None):
|
269 |
prompt = ""
|
270 |
if custom_instructions:
|
271 |
+
prompt += f"\[INST\] {custom_instructions} $$/INST$$\n"
|
272 |
|
273 |
# Add conversation history to the prompt
|
274 |
prompt += "\[CONV_HISTORY\]\n"
|
|
|
277 |
prompt += "\[/CONV_HISTORY\]\n"
|
278 |
|
279 |
# Add the current message
|
280 |
+
prompt += f"\[INST\] {message} $$/INST$$\n"
|
281 |
|
282 |
# Add the response format
|
283 |
prompt += "\[RESPONSE\]\n"
|
|
|
350 |
formated_text = format_promt(prompt, conversation_history, custom_instruction)
|
351 |
|
352 |
with st.chat_message("assistant"):
|
353 |
+
# Select the appropriate model based on the user's choice
|
354 |
+
if selected_model == "LegacyLift🚀":
|
355 |
+
model = LegacyLiftModel()
|
356 |
+
elif selected_model == "ModernMigrate⭐":
|
357 |
+
model = ModernMigrateModel()
|
358 |
+
elif selected_model == "RetroRecode🔄":
|
359 |
+
model = RetroRecodeModel()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
else:
|
361 |
+
st.error("Invalid model selection.")
|
362 |
+
return
|
363 |
+
|
364 |
+
response = model.generate_text(formated_text, temperature=temp_values)
|
365 |
+
st.markdown(response)
|
366 |
+
st.session_state.messages.append({"role": "assistant", "content": response})
|
367 |
+
save_conversation_history(st.session_state.messages)
|
368 |
|
369 |
elif st.session_state.chat_state == "reset":
|
370 |
st.session_state.chat_state = "normal"
|
371 |
+
st.experimental_rerun()
|
372 |
+
|
373 |
+
# --- Agent-Based Workflow Execution ---
|
374 |
+
def execute_workflow(workflow, prompt, context):
|
375 |
+
# Execute the workflow
|
376 |
+
context = workflow.run(prompt, context)
|
377 |
+
# Display the output
|
378 |
+
for agent in workflow.agents:
|
379 |
+
st.write(f"{agent}: {agent.memory}")
|
380 |
+
for action in agent.memory:
|
381 |
+
st.write(f" Action: {action}")
|
382 |
+
return context
|
383 |
+
|
384 |
+
# --- Example Usage ---
|
385 |
+
if st.button("Build an App"):
|
386 |
+
app_build_workflow = AppBuildWorkflow()
|
387 |
+
context = {"task": "Build a mobile application"}
|
388 |
+
context = execute_workflow(app_build_workflow, "Build a mobile app for ordering food.", context)
|
389 |
+
st.write(f"Workflow Output: {context}")
|
390 |
+
|
391 |
+
if st.button("Build a Website"):
|
392 |
+
website_build_workflow = WebsiteBuildWorkflow()
|
393 |
+
context = {"task": "Build a website"}
|
394 |
+
context = execute_workflow(website_build_workflow, "Build a website for a restaurant.", context)
|
395 |
+
st.write(f"Workflow Output: {context}")
|
396 |
+
|
397 |
+
if st.button("Build a Game"):
|
398 |
+
game_build_workflow = GameBuildWorkflow()
|
399 |
+
context = {"task": "Build a game"}
|
400 |
+
context = execute_workflow(game_build_workflow, "Build a simple 2D platformer game.", context)
|
401 |
+
st.write(f"Workflow Output: {context}")
|
402 |
+
|
403 |
+
if st.button("Build a Plugin"):
|
404 |
+
plugin_build_workflow = PluginBuildWorkflow()
|
405 |
+
context = {"task": "Build a plugin"}
|
406 |
+
context = execute_workflow(plugin_build_workflow, "Build a plugin for a text editor that adds a new syntax highlighting theme.", context)
|
407 |
+
st.write(f"Workflow Output: {context}")
|
408 |
+
|
409 |
+
if st.button("Dev Sandbox"):
|
410 |
+
dev_sandbox_workflow = DevSandboxWorkflow()
|
411 |
+
context = {"task": "Experiment with code"}
|
412 |
+
context = execute_workflow(dev_sandbox_workflow, "Write a Python function to reverse a string.", context)
|
413 |
+
st.write(f"Workflow Output: {context}")
|
414 |
+
|
415 |
+
# --- Displaying Agent and Tool Information ---
|
416 |
+
st.subheader("Agent Pool")
|
417 |
+
for agent_name, agent in agent_pool.items():
|
418 |
+
st.write(f"**{agent_name}**")
|
419 |
+
st.write(f" Role: {agent.role}")
|
420 |
+
st.write(f" Tools: {', '.join([tool.name for tool in agent.tools])}")
|
421 |
+
|
422 |
+
st.subheader("Workflows")
|
423 |
+
st.write("**App Build**")
|
424 |
+
st.write(f" Description: {AppBuildWorkflow().description}")
|
425 |
+
st.write("**Website Build**")
|
426 |
+
st.write(f" Description: {WebsiteBuildWorkflow().description}")
|
427 |
+
st.write("**Game Build**")
|
428 |
+
st.write(f" Description: {GameBuildWorkflow().description}")
|
429 |
+
st.write("**Plugin Build**")
|
430 |
+
st.write(f" Description: {PluginBuildWorkflow().description}")
|
431 |
+
st.write("**Dev Sandbox**")
|
432 |
+
st.write(f" Description: {DevSandboxWorkflow().description}")
|
433 |
+
|
434 |
+
# --- Displaying Tool Definitions ---
|
435 |
+
st.subheader("Tool Definitions")
|
436 |
+
for tool_class in [CodeGenerationTool, DataRetrievalTool, CodeExecutionTool, CodeDebuggingTool, CodeSummarizationTool, CodeTranslationTool, CodeOptimizationTool, CodeDocumentationTool, ImageGenerationTool, ImageEditingTool, ImageAnalysisTool]:
|
437 |
+
tool = tool_class()
|
438 |
+
st.write(f"**{tool.name}**")
|
439 |
+
st.write(f" Description: {tool.description}")
|
440 |
+
|
441 |
+
# --- Displaying Example Output ---
|
442 |
+
st.subheader("Example Output")
|
443 |
+
code_generation_tool = CodeGenerationTool()
|
444 |
+
st.write(f"Code Generation Tool Output: {code_generation_tool.run({'language': 'python', 'code': 'print(\'Hello, World!\')'})}")
|
445 |
+
|
446 |
+
data_retrieval_tool = DataRetrievalTool()
|
447 |
+
st.write(f"Data Retrieval Tool Output: {data_retrieval_tool.run({'source': 'https://example.com/data'})}")
|
448 |
+
|
449 |
+
code_execution_tool = CodeExecutionTool()
|
450 |
+
st.write(f"Code Execution Tool Output: {code_execution_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
451 |
+
|
452 |
+
code_debugging_tool = CodeDebuggingTool()
|
453 |
+
st.write(f"Code Debugging Tool Output: {code_debugging_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
454 |
+
|
455 |
+
code_summarization_tool = CodeSummarizationTool()
|
456 |
+
st.write(f"Code Summarization Tool Output: {code_summarization_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
457 |
+
|
458 |
+
code_translation_tool = CodeTranslationTool()
|
459 |
+
st.write(f"Code Translation Tool Output: {code_translation_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
460 |
+
|
461 |
+
code_optimization_tool = CodeOptimizationTool()
|
462 |
+
st.write(f"Code Optimization Tool Output: {code_optimization_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
463 |
+
|
464 |
+
code_documentation_tool = CodeDocumentationTool()
|
465 |
+
st.write(f"Code Documentation Tool Output: {code_documentation_tool.run({'code': 'print(\'Hello, World!\')'})}")
|
466 |
+
|
467 |
+
image_generation_tool = ImageGenerationTool()
|
468 |
+
st.write(f"Image Generation Tool Output: {image_generation_tool.run({'description': 'A cat sitting on a couch'})}")
|
469 |
+
|
470 |
+
image_editing_tool = ImageEditingTool()
|
471 |
+
st.write(f"Image Editing Tool Output: {image_editing_tool.run({'image_path': 'path/to/image.jpg'})}")
|
472 |
+
|
473 |
+
image_analysis_tool = ImageAnalysisTool()
|
474 |
+
st.write(f"Image Analysis Tool Output: {image_analysis_tool.run({'image_path': 'path/to/image.jpg'})}")
|