CoolFace
Apppublic

evteev777/bpmn-generator

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py50 linesDownload Raw Back to root
1import os2from huggingface_hub import InferenceClient3import gradio as gr4 5# Настраиваем HF‑клиент6HF_TOKEN = os.getenv("HF_HUB_TOKEN")7if not HF_TOKEN:8    raise RuntimeError("Не задан HF_HUB_TOKEN в настройках Space")9client = InferenceClient(token=HF_TOKEN)10 11def generate_bpmn(description: str) -> str:12    prompt = (13        "You are a BPMN 2.0 XML generator.\n"14        "Given this plain-text process description:\n"15        f"{description}\n"16        "Output ONLY valid BPMN 2.0 XML, without any extra text."17    )18    # Вызываем HF Inference API (без FastAPI)19    result = client.text_generation(20        prompt,21        model="ministral/Ministral-3b-instruct",22        max_new_tokens=1024,23        temperature=0.0,24        do_sample=False,25        details=True26    )27    xml = result[0].generated_text28    # отрезаем всё до <definitions>29    if "<definitions" in xml:30        xml = xml[xml.index("<definitions"):]31    return xml32 33# Собираем Gradio‑интерфейс34with gr.Blocks() as demo:35    gr.Markdown("## Генератор BPMN 2.0 XML на основе текста")36    inp = gr.Textbox(37        lines=5,38        placeholder="Опиши процесс: «Клиент подаёт заявку, …»",39        label="Описание процесса"40    )41    out = gr.Textbox(lines=15, label="BPMN 2.0 XML")42    btn = gr.Button("Сгенерировать BPMN")43    btn.click(fn=generate_bpmn, inputs=inp, outputs=out)44 45# HF Spaces поднимет это автоматически, порт подхватится из окружения46demo.launch(47    server_name="0.0.0.0",48    server_port=int(os.environ.get("PORT", 7860))49)50