From 626c10c1298e19b36eef705831b79099b8aeca79 Mon Sep 17 00:00:00 2001 From: Franziska Gerold Date: Sun, 24 May 2026 14:42:58 +0200 Subject: [PATCH] milestone 3 - Chatmanager: rudimentary version implemented --- ChatManager.py | 30 ++++++++++++++++++++++++++++-- FileManager.py | 17 +++++++++-------- app.py | 8 ++++++-- example_2.py | 2 +- 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/ChatManager.py b/ChatManager.py index 9c2ff6b..010efb7 100644 --- a/ChatManager.py +++ b/ChatManager.py @@ -1,8 +1,34 @@ +from openai import OpenAI +from dotenv import load_dotenv +import os +load_dotenv(dotenv_path=".env") + + +HOST = os.getenv('HOST') +PORT = os.getenv('PORT') +API_KEY = os.getenv('API_KEY') +MODEL = os.getenv('MODEL') + +def get_client() -> OpenAI: + """Return an OpenAI-compatible client pointing at the vLLM server.""" + base_url = f"http://{HOST}:{PORT}/v1" + return OpenAI(base_url=base_url, api_key=API_KEY) + +client = get_client() + def send_message(message): - pass + # hier gehts darum, die message vorzubereiten -> also nachricht aus den Chatfenster mit systemprompts und file_conntext verknüpfen + # hier auch Zeug zusammenkürzen wenns zu lang wird? + return "Explain what a system prompt is." def receive_response(): - pass \ No newline at end of file + # hier wird send_message() aufgerufen, damit dann geschickt werden kann + response = client.responses.create( + input=send_message("")) + return response.output_text + +print(receive_response()) + diff --git a/FileManager.py b/FileManager.py index 027d11d..6ec8647 100644 --- a/FileManager.py +++ b/FileManager.py @@ -12,18 +12,19 @@ def list_files() -> list: files = list(mypath.glob('*.py')) return files -def read_file(file_path: Path) -> str : - #wenn eine Datei im Sidebar angeklickt wird, soll die Funktion sie lesen und im Code Editor anzeigen - #file = open(file_path, 'r').read() - with file_path.open("r") as file: +def read_file(file_path: Path) -> str: + # ErrorHandling einbauen, falls der Pfad falsch ist? + # wenn eine Datei im Sidebar angeklickt wird, soll die Funktion sie lesen und im Code Editor anzeigen + # file = open(file_path, 'r').read() + with file_path.open('r') as file: return file.read() def save_file(file_path: Path, content: str): #wenn eine Datei im Code Editor abgeändert wird, soll die Funktion die Änderungen abspeichern - with file_path.open('w') as f: - f.write(content) + with file_path.open('w') as file: + file.write(content) print(list_files()) -print(read_file(Path("C:/FH_Graubünden/26FS/AI_in_SE/project_ai_se/pages/example.py"))) -print(save_file(Path("C:/FH_Graubünden/26FS/AI_in_SE/project_ai_se/pages/example_2.py"), "haHa")) \ No newline at end of file +print(read_file(Path("C:/FH_Graubünden/26FS/AI_in_SE/project_ai_se/example.py"))) +print(save_file(Path("C:/FH_Graubünden/26FS/AI_in_SE/project_ai_se/example_2.py"), "hiHa")) \ No newline at end of file diff --git a/app.py b/app.py index 7de1de1..1eddc2a 100644 --- a/app.py +++ b/app.py @@ -9,17 +9,21 @@ def callback_test(): bsp_list = ["Projekt", ["Datei 1", "Datei 2"]] with st.sidebar: + #wenn FileManager integriert wird: Elemente mit list_files bauen st.write(bsp_list[0]) st.button(bsp_list[1][0], key="datei1", on_click=callback_test) st.button(bsp_list[1][1], key="datei2") # wenn Datei ausgewählt wird, sollte FileManager aufgerufen werden, der dann im Code Editor den Inhalt anzeigt + # on_click: FileManager: read_file(file_path) col_editor_output, col_chat = st.columns([0.6, 0.4], gap="xxlarge") with col_editor_output: st.text_area("Code Editor", key="editor", on_change=callback_test) - #Verhalten bei Veränderungen mit on_change festlegen - #wenn angezigter Code bearbeitet wird, sollte ExecutionEngine aufgerufen werden, diese soll den Code ausführen und im Outputfenster angezeigt werden mit DebugLogger + # Verhalten bei Veränderungen mit on_change festlegen, mit File_Manager verknüpfen + # on_change(save_file(file_path, content( -> das wär dann der Inhalt von text_area)) + # wenn angezigter Code bearbeitet wird, sollte ExecutionEngine aufgerufen werden, diese soll den Code ausführen und im Outputfenster angezeigt werden mit DebugLogger + # fürs Ausführen vllt eigener Button machen? st.button("execute code", key="execution", on_click=run_code) st.write("Output and debugging messages") # hier wird der Output angezeigt, der mit DebugLogger erstellt wurde diff --git a/example_2.py b/example_2.py index 3cf5bb7..c57fd9f 100644 --- a/example_2.py +++ b/example_2.py @@ -1 +1 @@ -haHa \ No newline at end of file +hiHa \ No newline at end of file