Tsitsi19's picture
Initial deployment of OpenManus with Qwen local
0e45712 verified
Raw
History Blame Contribute Delete
2.38 kB
import streamlit as st
import subprocess
import threading
import queue
import os
import sys
import time
# Add the current directory to sys.path to import OpenManus modules
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".")))
st.set_page_config(page_title="OpenManus Web UI", page_icon="🤖")
st.title("🤖 OpenManus Web UI")
st.markdown("Déploiement persistant avec Qwen2.5-Coder-7B (GGUF)")
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
def run_openmanus(prompt, output_queue):
# This is a simplified way to run the CLI and capture output
# In a real scenario, we'd want to integrate with the Agent class directly
process = subprocess.Popen(
[sys.executable, "main.py"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
bufsize=1,
env=os.environ
)
# Send the prompt to the process
process.stdin.write(prompt + "\n")
process.stdin.flush()
# Read output
for line in iter(process.stdout.readline, ""):
output_queue.put(line)
process.stdout.close()
process.wait()
output_queue.put(None)
prompt = st.chat_input("Que puis-je faire pour vous ?")
if prompt:
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
response_placeholder = st.empty()
full_response = ""
output_queue = queue.Queue()
# Start OpenManus in a thread
thread = threading.Thread(target=run_openmanus, args=(prompt, output_queue))
thread.start()
while True:
try:
line = output_queue.get(timeout=1)
if line is None:
break
full_response += line
response_placeholder.markdown(full_response + "▌")
except queue.Empty:
if not thread.is_alive():
break
continue
response_placeholder.markdown(full_response)
st.session_state.messages.append({"role": "assistant", "content": full_response})