File size: 1,932 Bytes
333447c
3d09fd3
333447c
 
3d09fd3
 
 
 
062f01a
3d09fd3
 
062f01a
333447c
3d09fd3
129d284
3d09fd3
129d284
 
333447c
 
3d09fd3
 
 
333447c
129d284
 
 
 
062f01a
 
129d284
 
333447c
062f01a
129d284
 
062f01a
 
 
129d284
333447c
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import gradio as gr
import os
from huggingface_hub import InferenceClient

# Получаем токен из переменной окружения
HF_TOKEN = os.getenv("HF_TOKEN")

# Клиент Hugging Face для выбранной модели
client = InferenceClient(
    model="deepseek-ai/deepseek-coder-1.3b-base",  # Можешь заменить на starcoder2 или codegemma
    token=HF_TOKEN
)

# Функция генерации без stream (deepseek не поддерживает stream=True)
def complete_code(prompt, max_tokens, temperature, top_p):
    response = client.text_generation(
        prompt,
        max_new_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stream=False  # ⚠️ обязательно False для этой модели
    )
    return response

# Интерфейс Gradio
demo = gr.Interface(
    fn=complete_code,
    inputs=[
        gr.Textbox(lines=10, label="Введите код или комментарий"),
        gr.Slider(minimum=1, maximum=1024, value=128, step=1, label="Максимум новых токенов"),
        gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.9, step=0.05, label="Top-p"),
    ],
    outputs=gr.Textbox(lines=15, label="Дополненный код"),
    title="🛠️ Уязвимый агент автодополнения кода",
    description=(
        "Этот агент демонстрирует поведение LLM без фильтрации: он уязвим к prompt injection, "
        "может генерировать вредоносные команды и не имеет встроенных ограничений. "
        "Использовать только в исследовательских целях!"
    ),
)

if __name__ == "__main__":
    demo.launch()