38 lines
1.8 KiB
Python
38 lines
1.8 KiB
Python
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("Пожалуйста, введите описание.") |