Spaces:
Runtime error
Runtime error
Commit
Β·
36e014d
1
Parent(s):
041d087
Update
Browse files
app.py
CHANGED
|
@@ -8,6 +8,7 @@ import uuid
|
|
| 8 |
from PIL import Image
|
| 9 |
from typing import List, Dict, Any, Iterator
|
| 10 |
import gradio as gr
|
|
|
|
| 11 |
|
| 12 |
# Add the project root to the Python path
|
| 13 |
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
@@ -89,6 +90,7 @@ class Solver:
|
|
| 89 |
self.executor.set_query_cache_dir(_cache_dir)
|
| 90 |
|
| 91 |
# Step 1: Display the received inputs
|
|
|
|
| 92 |
if user_image:
|
| 93 |
messages.append(ChatMessage(role="assistant", content=f"π Received Query: {user_query}\nπΌοΈ Image Uploaded"))
|
| 94 |
else:
|
|
@@ -190,17 +192,18 @@ def parse_arguments():
|
|
| 190 |
parser.add_argument("--enabled_tools", default="Generalist_Solution_Generator_Tool", help="List of enabled tools.")
|
| 191 |
parser.add_argument("--root_cache_dir", default="demo_solver_cache", help="Path to solver cache directory.")
|
| 192 |
parser.add_argument("--output_json_dir", default="demo_results", help="Path to output JSON directory.")
|
| 193 |
-
parser.add_argument("--max_steps", type=int, default=10, help="Maximum number of steps to execute.")
|
| 194 |
-
parser.add_argument("--max_time", type=int, default=60, help="Maximum time allowed in seconds.")
|
| 195 |
parser.add_argument("--verbose", type=bool, default=True, help="Enable verbose output.")
|
| 196 |
return parser.parse_args()
|
| 197 |
|
| 198 |
|
| 199 |
-
def solve_problem_gradio(user_query, user_image, api_key):
|
| 200 |
"""
|
| 201 |
Wrapper function to connect the solver to Gradio.
|
| 202 |
Streams responses from `solver.stream_solve_user_problem` for real-time UI updates.
|
| 203 |
"""
|
|
|
|
|
|
|
|
|
|
| 204 |
|
| 205 |
# Initialize Tools
|
| 206 |
enabled_tools = args.enabled_tools.split(",") if args.enabled_tools else []
|
|
@@ -240,8 +243,8 @@ def solve_problem_gradio(user_query, user_image, api_key):
|
|
| 240 |
task_description=args.task_description,
|
| 241 |
output_types=args.output_types, # Add new parameter
|
| 242 |
verbose=args.verbose,
|
| 243 |
-
max_steps=
|
| 244 |
-
max_time=
|
| 245 |
output_json_dir=args.output_json_dir,
|
| 246 |
root_cache_dir=args.root_cache_dir
|
| 247 |
)
|
|
@@ -261,16 +264,26 @@ def main(args):
|
|
| 261 |
gr.Markdown("# π§ OctoTools AI Solver") # Title
|
| 262 |
|
| 263 |
with gr.Row():
|
| 264 |
-
with gr.Column(scale=1
|
| 265 |
-
|
| 266 |
-
api_key = gr.Textbox(label="API Key", placeholder="Your API key will not be stored in any way.", type="password")
|
| 267 |
user_image = gr.Image(type="pil", label="Upload an image") # Accepts multiple formats
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
|
| 272 |
# Link button click to function
|
| 273 |
-
run_button.click(fn=solve_problem_gradio, inputs=[user_query, user_image, api_key], outputs=chatbot_output)
|
| 274 |
|
| 275 |
# Launch the Gradio app
|
| 276 |
demo.launch()
|
|
|
|
| 8 |
from PIL import Image
|
| 9 |
from typing import List, Dict, Any, Iterator
|
| 10 |
import gradio as gr
|
| 11 |
+
# from gradio import ChatMessage
|
| 12 |
|
| 13 |
# Add the project root to the Python path
|
| 14 |
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
| 90 |
self.executor.set_query_cache_dir(_cache_dir)
|
| 91 |
|
| 92 |
# Step 1: Display the received inputs
|
| 93 |
+
import pdb; pdb.set_trace()
|
| 94 |
if user_image:
|
| 95 |
messages.append(ChatMessage(role="assistant", content=f"π Received Query: {user_query}\nπΌοΈ Image Uploaded"))
|
| 96 |
else:
|
|
|
|
| 192 |
parser.add_argument("--enabled_tools", default="Generalist_Solution_Generator_Tool", help="List of enabled tools.")
|
| 193 |
parser.add_argument("--root_cache_dir", default="demo_solver_cache", help="Path to solver cache directory.")
|
| 194 |
parser.add_argument("--output_json_dir", default="demo_results", help="Path to output JSON directory.")
|
|
|
|
|
|
|
| 195 |
parser.add_argument("--verbose", type=bool, default=True, help="Enable verbose output.")
|
| 196 |
return parser.parse_args()
|
| 197 |
|
| 198 |
|
| 199 |
+
def solve_problem_gradio(user_query, user_image, max_steps=10, max_time=60, api_key=None):
|
| 200 |
"""
|
| 201 |
Wrapper function to connect the solver to Gradio.
|
| 202 |
Streams responses from `solver.stream_solve_user_problem` for real-time UI updates.
|
| 203 |
"""
|
| 204 |
+
|
| 205 |
+
if api_key is None:
|
| 206 |
+
return [["assistant", "β οΈ Error: API Key is required."]]
|
| 207 |
|
| 208 |
# Initialize Tools
|
| 209 |
enabled_tools = args.enabled_tools.split(",") if args.enabled_tools else []
|
|
|
|
| 243 |
task_description=args.task_description,
|
| 244 |
output_types=args.output_types, # Add new parameter
|
| 245 |
verbose=args.verbose,
|
| 246 |
+
max_steps=max_steps,
|
| 247 |
+
max_time=max_time,
|
| 248 |
output_json_dir=args.output_json_dir,
|
| 249 |
root_cache_dir=args.root_cache_dir
|
| 250 |
)
|
|
|
|
| 264 |
gr.Markdown("# π§ OctoTools AI Solver") # Title
|
| 265 |
|
| 266 |
with gr.Row():
|
| 267 |
+
with gr.Column(scale=1):
|
| 268 |
+
api_key = gr.Textbox(show_label=False, placeholder="Your API key will not be stored in any way.", type="password", container=False)
|
|
|
|
| 269 |
user_image = gr.Image(type="pil", label="Upload an image") # Accepts multiple formats
|
| 270 |
+
max_steps = gr.Slider(value=5, minimum=1, maximum=10, step=1)
|
| 271 |
+
max_time = gr.Slider(value=180, minimum=60, maximum=300, step=20)
|
| 272 |
+
with gr.Column(scale=3):
|
| 273 |
+
chatbot_output = gr.Chatbot(label="Problem-Solving Output", show_copy_button=True)
|
| 274 |
+
chatbot_output.like(lambda x: print(f"User liked: {x}"))
|
| 275 |
+
with gr.Row():
|
| 276 |
+
with gr.Column(scale=8):
|
| 277 |
+
user_query = gr.Textbox(show_label=False, placeholder="Type your question here...", container=False)
|
| 278 |
+
with gr.Column(scale=1):
|
| 279 |
+
run_button = gr.Button("Run") # Run button
|
| 280 |
+
with gr.Row(elem_id="buttons") as button_row:
|
| 281 |
+
upvote_btn = gr.Button(value="π Upvote", interactive=False)
|
| 282 |
+
downvote_btn = gr.Button(value="π Downvote", interactive=False)
|
| 283 |
+
clear_btn = gr.Button(value="ποΈ Clear history", interactive=False)
|
| 284 |
|
| 285 |
# Link button click to function
|
| 286 |
+
run_button.click(fn=solve_problem_gradio, inputs=[user_query, user_image, max_steps, max_time, api_key], outputs=chatbot_output)
|
| 287 |
|
| 288 |
# Launch the Gradio app
|
| 289 |
demo.launch()
|