import streamlit as st import requests st.set_page_config(page_title="DevOps AI Assistant", page_icon="πŸš€") st.title("πŸ€– AI CI/CD Pipeline Generator") st.markdown("ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ сСрвиса для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ") with st.sidebar: st.header("Настройки") api_url = st.text_input("Backend URL", "http://localhost:8000/generate") model = st.selectbox("LLM МодСль", ["deepseek-r1:1.5b", "qwen2.5-coder:1.5b", "llama3.1:8b", "Arena Model"]) platform = st.radio("ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°", ["GitHub Actions", "GitLab CI"]) user_input = st.text_area("ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 'Python app with pytest and docker build')", height=150) if st.button("Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ", type="primary"): if user_input: with st.spinner("LLM Π΄ΡƒΠΌΠ°Π΅Ρ‚..."): try: res = requests.post(api_url, json={ "description": user_input, "platform": platform, "model": model }) data = res.json() if data["status"] == "ok": st.success("βœ… ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π²Π°Π»ΠΈΠ΄Π½Π°!") st.code(data["config"], language="yaml") st.download_button("Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ .yml", data["config"], file_name="pipeline.yml") else: st.error(f"❌ Ошибка Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ: {data['validation_error']}") st.code(data["config"], language="yaml") except Exception as e: st.error(f"Ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π΅ΠΊΠ΅Π½Π΄Ρƒ: {e}") else: st.warning("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ описаниС.")