import os import streamlit as st from huggingface_hub import InferenceClient # 🔒 HF token olvasása titkos változóból HF_TOKEN = st.secrets["HF_TOKEN"] client = InferenceClient(token=HF_TOKEN) # Oldal beállítások st.set_page_config(page_title="Major Plato Szimulátor", layout="wide") st.title("🎖️ Major Plato – Katonai Etikai Szimuláció") # Rendszer prompt betöltése if os.path.exists("system.txt"): system = open("system.txt", encoding="utf-8").read().strip() else: st.error("Hiba: Nincs 'system.txt' fájl! Ide írd Major Plato karakterleírását.") st.stop() # Forgatókönyv feltöltése vagy kézi kérdés scenario = "" uploaded = st.file_uploader("Tölts fel forgatókönyv fájlt (.txt):", type="txt") if uploaded: scenario = uploaded.read().decode("utf-8") user_in = st.text_area("Vagy írd be kézzel a kérdésedet:") # Paraméterek az oldalsávban max_tokens = st.sidebar.slider("Max token", 100, 1000, 600, 50) temperature = st.sidebar.slider("Temperature", 0.2, 1.0, 0.7, 0.1) # CSS a scrollozható expanderhez st.markdown( """ """, unsafe_allow_html=True ) if st.button("Indítás"): if not (scenario.strip() or user_in.strip()): st.error("Kérlek, tölts fel forgatókönyvet vagy írj kérdést!") else: usr_content = scenario.strip() if user_in.strip(): usr_content += "\n\n" + user_in.strip() messages = [ {"role": "system", "content": system}, {"role": "user", "content": usr_content} ] with st.spinner("Major Plato gondolkodik..."): stream = client.chat_completion( model="meta-llama/Meta-Llama-3-8B-Instruct", messages=messages, max_tokens=max_tokens, temperature=temperature, stream=True # folyamatos válasz fogadó ) placeholder = st.empty() full_resp = "" with st.expander("🗣️ Major Plato válasza:", expanded=True): for chunk in stream: delta = chunk.choices[0].delta.content if delta: full_resp += delta placeholder.markdown(full_resp)