OpenManus-Web / app.py
The-JDdev's picture
Clean Gradio 6 compatible app
1922b90 verified
Raw
History Blame Contribute Delete
2.26 kB
"""
JD OpenManus Engine - Web UI for AI Agent Interactions
Compatible with Gradio 6.x
"""
import gradio as gr
import os
# Global State
agent_config = {"base_url": "", "model_name": "", "api_key": ""}
# Chat Function
def chat_response(prompt, history):
if not prompt.strip():
return history, ""
history.append({"role": "user", "content": prompt})
if not agent_config.get("api_key"):
response = "Please configure API Key first."
elif not agent_config.get("base_url"):
response = "Please configure Base URL first."
else:
response = f"Message received! Config: {agent_config.get('base_url')}"
history.append({"role": "assistant", "content": response})
return history, ""
def save_config(base_url, model_name, api_key):
agent_config["base_url"] = base_url
agent_config["model_name"] = model_name
agent_config["api_key"] = api_key
return "Configuration saved!"
# Build UI
with gr.Blocks(title="JD OpenManus Engine") as demo:
gr.Markdown("# JD OpenManus Engine")
with gr.Tab("Chat"):
chatbot = gr.Chatbot(height=500)
msg_input = gr.Textbox(placeholder="Type message...", lines=3)
with gr.Row():
submit_btn = gr.Button("Send", variant="primary")
clear_btn = gr.Button("Clear")
gr.Markdown("### Configuration")
base_url = gr.Textbox(label="Base URL")
model_name = gr.Textbox(label="Model Name")
api_key = gr.Textbox(label="API Key", type="password")
save_btn = gr.Button("Save")
config_status = gr.Markdown("")
submit_btn.click(chat_response, [msg_input, chatbot], [chatbot, msg_input])
msg_input.submit(chat_response, [msg_input, chatbot], [chatbot, msg_input])
clear_btn.click(lambda: ([], ""), [chatbot, msg_input])
save_btn.click(save_config, [base_url, model_name, api_key], [config_status])
with gr.Tab("Files"):
gr.Markdown("### File Upload")
file_input = gr.File(file_count="multiple")
with gr.Tab("About"):
gr.Markdown("## JD OpenManus Engine\nVersion 1.0.0")
# Launch
if __name__ == "__main__":
port = int(os.environ.get("PORT", "7860"))
demo.launch(server_name="0.0.0.0", server_port=port)