import json import streamlit as st from pathlib import Path from ChatManager import send_message from FileManager import list_files, save_file, open_file from ExecutionEngine import run_code from DebugLogger import format_debug_output, log_error st.set_page_config(layout="wide") # Initialisierung wichtiger keys im session_state if not "file_content" in st.session_state: st.session_state["file_content"] = "" if not "selected_file" in st.session_state: st.session_state["selected_file"] = "" with st.sidebar: # baut den Sidebar aus den vorhanden .py Dateien im Arbeitsverzeichnis for file in list_files(): st.button(file.name, on_click=open_file, args=[file]) col_editor_output, col_chat = st.columns([0.6, 0.4], gap="large", vertical_alignment="top") with col_editor_output: if "file_content" in st.session_state: text = st.text_area("Code Editor", height="stretch", key="file_content") # Oberfläche erhält zusätzliche Buttons, wenn eine Datei geöffnet wird if st.session_state["selected_file"] != "": st.button("Save", on_click=save_file, args=[st.session_state["selected_file"], st.session_state["file_content"]]) st.button("Execute Code", on_click=run_code, args=[st.session_state["selected_file"]]) if "code_output" in st.session_state: st.text_area("Output", key="code_output") if "code_error" in st.session_state: st.text_area("Errors", key="code_error") with col_chat: if "messages" not in st.session_state: st.session_state.messages = [] # zeigt Chatverlauf als Abschnitt mit eigenem Scrollbalken with st.container(border=True, height=500): for msg in st.session_state.messages: with st.chat_message(msg["role"]): st.write(msg["content"]) # regelt Verhalten bei Chat mit qwen. Nach Eingabe wird einer der Promptopitionen gewählt und fertiger Prompt sowie qwen Antwort in die messages gespeichert message = st.chat_input("How can qwen help you?", key="chat") internet = st.toggle("enable internet search", key="internet") if "code_output" in st.session_state or "code_error" in st.session_state: debug = st.toggle("debug with qwen", key="debug") if message: st.session_state.messages.append({"role": "user", "content": message}) response = send_message(message) if "debug" in st.session_state and st.session_state["debug"]: response = format_debug_output(json.loads(response)) log_error(response) st.session_state.messages.append({"role": "assistant", "content": response}) st.rerun()