Vai al contenuto principale

DeepSeek-V3-0324: una guida con progetto demo

Impara a usare DeepSeek V3-0324 per creare un generatore di componenti UI con Streamlit e Tailwind CSS.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

DeepSeek torna con un potente aggiornamento: DeepSeek V3-0324, una versione messa a punto del già notevole DeepSeek-V3. Questa release porta miglioramenti significativi nel ragionamento, nello sviluppo frontend e nelle capacità di utilizzo degli strumenti. 

In questo post, ti spiegherò passo dopo passo come costruire un generatore di componenti UI con DeepSeek-V3-0324. Ma prima, lascia che ti presenti le novità di DeepSeek-V3-0324.

Che cos'è DeepSeek-V3-0324?

DeepSeek-V3-0324 si basa sul suo predecessore, DeepSeek-V3, con importanti miglioramenti nel ragionamento, nella generazione front-end e nelle capacità aumentate da strumenti.

Se vuoi la mia opinione, credo che avrebbero potuto fare molto più rumore chiamando il nuovo modello 3.5 invece di 0324, che è difficile da ricordare. A giudicare dal nome, la nuova versione suggerisce solo un miglioramento incrementale, ma i benchmark raccontano un'altra storia:

benchmark deepseek v3 0324

Fonte: DeepSeek

I risultati nel grafico a barre sopra riflettono notevoli miglioramenti nel ragionamento logico, nella risoluzione di problemi matematici e nella generazione di codice.

DeepSeek-V3-0324 mostra miglioramenti concreti nella generazione di HTML/CSS/JS utilizzabile, in particolare per attività come:

  • Componenti UI basati su Tailwind
  • Front-end di giochi interattivi
  • Codice web eseguibile

Il modello aggiornato offre anche funzionalità di utilizzo degli strumenti potenziate, tra cui:

  • Le chiamate di funzione sono ora più accurate grazie alla correzione di incoerenze nelle versioni V3 precedenti.
  • Migliore riscrittura multi-turno, traduzione e qualità della scrittura in cinese.

Proprio come DeepSeek-R1, V3-0324 è:

  • Open-source (pesi disponibili su Hugging Face)
  • Con licenza MIT (gratuito per uso commerciale)

Panoramica del progetto: generatore di UI con DeepSeek in Streamlit

Per mettere alla prova le capacità frontend di DeepSeek-V3-0324, ho realizzato una piccola demo con Streamlit e Tailwind CSS. Il progetto è un generatore da linguaggio naturale a componente UI, e funziona così:

  • Accetta un prompt in linguaggio naturale, ad esempio: "Un pulsante rosso con la scritta Hello in bianco"
  • Poi lo invia a DeepSeek-V3-0324 tramite API
  • Renderizza i seguenti componenti:
    • Il componente HTML generato con Tailwind.
    • Un'anteprima live in un iframe.

Passo 1: Prerequisiti

Prima di iniziare, assicuriamoci di avere installati i seguenti strumenti e librerie:

python3 --version  # Python 3.8+
pip install requests streamlit

Controlla la versione di Python, che dovrebbe essere almeno 3.8 o superiore. Poi installa tutte le altre dipendenze indicate sopra.

Successivamente, dobbiamo impostare la chiave API di DeepSeek come variabile d'ambiente tramite terminale. Per ottenere la tua chiave API:

  1. Vai alla piattaforma API di DeepSeek e crea un account.
  2. Clicca sulla scheda API keys a sinistra

deepseek api

  1. Clicca sul pulsante Create new API key e segui le istruzioni a schermo.

Se ti serve saperne di più sull'uso dell'API, questo tutorial sulla DeepSeek API è ottimo.

Ora dobbiamo impostare la chiave API di DeepSeek come variabile d'ambiente tramite terminale:

export DEEPSEEK_API_KEY=”Your_API_Key”

Ora abbiamo tutte le dipendenze per la nostra applicazione, quindi costruiamo il generatore di UI.

Passo 2: Costruire il generatore di UI

Iniziamo creando un file frontend_generator.py, che funge da wrapper backend per generare codice di componenti frontend usando DeepSeek-V3-0324.

1. Import

Partiamo configurando gli import delle nostre dipendenze.

import requests
import json
import os

Le librerie requests, json e os vengono importate per gestire la comunicazione HTTP, la serializzazione JSON e l'accesso alle variabili d'ambiente per la chiave API.

2. Impostare la chiave API e l'URL

Poi impostiamo la chiave API di DeepSeek e l'URL dell'API per l'applicazione.

API_KEY = os.getenv("DEEPSEEK_API_KEY")
API_URL = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

Le variabili API_KEY e API_URL (già impostate prima) vengono definite per autenticarsi e puntare all'endpoint di chat completions di DeepSeek. Le intestazioni della richiesta specificano il tipo di contenuto e includono il token Bearer per l'autorizzazione.

3. Prompt di sistema

Il SYSTEM_PROMPT definisce il comportamento dell'assistente. Guida il modello a generare HTML leggibile e ben strutturato usando classi Tailwind CSS, assicurando che gli elementi siano gradevoli alla vista e correttamente centrati.

SYSTEM_PROMPT = """
Generate clean HTML with Tailwind CSS classes. Focus on:
1. Use appropriate Tailwind utility classes
2. Ensure text is centered
3. Use clear, visible colors
4. Make content readable
Example for "red button with white text":
<button class="bg-red-500 text-white px-4 py-2 rounded">Click me</button>
Prompt: "A gray box with the text "Hello World" centered inside"
Expected Output:
<div class="bg-gray-300 flex items-center justify-center p-6 rounded-lg">
    <p class="text-black text-xl">Hello World</p>
</div>
"""

4. Creare il payload

Infine, costruiamo il payload (i dati strutturati che invieremo all'API di DeepSeek per richiedere una risposta).

def get_component_code(user_prompt: str) -> str:
    payload = {
        "model": "deepseek-chat",
        "messages": [
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": user_prompt}
        ],
        "stream": False
    }
    response = requests.post(API_URL, headers=headers, data=json.dumps(payload))
    if response.status_code == 200:
        content = response.json()['choices'][0]['message']['content']
        # Remove markdown code block markers if present
        if "```"in content:
            content = content.split("```")[1].strip()
        return content.strip() or f"""
            <div class="bg-gray-300 flex items-center justify-center p-6 rounded-lg">
                <p class="text-black text-xl">{user_prompt}</p>
            </div>
        """
    else:
        raise Exception(f"DeepSeek API error {response.status_code}: {response.text}")

La funzione get_component_code() accetta un prompt definito dall'utente (per esempio: “Una card blu con testo bianco”) e costruisce un payload adatto al formato di messaggistica compatibile con OpenAI di DeepSeek. Il payload include:

  • Il nome del modello, cioè “deepseek-chat”
  • Una cronologia di messaggi in due parti, cioè “system + user”
  • L'impostazione stream=False per ricevere una risposta completa in un'unica soluzione

La funzione invia una richiesta POST all'API di DeepSeek usando la funzione requests.post(). Se la richiesta va a buon fine, estrae l'output del modello dal campo choices[0].message.content.

Nota: “deepseek-chat” usa di default l'ultima versione di DeepSeek V3-0324 (non è necessario specificare esattamente il modello).

Passo 3: Costruire la UI con Streamlit

Ora che il nostro generatore di codice frontend è pronto, costruiamo l'interfaccia Streamlit che mette insieme il tutto.

1. Import

Iniziamo importando le dipendenze dell'applicazione. Streamlit costruisce la UI e gestisce le interazioni dell'utente, mentre html incorpora in sicurezza contenuti HTML in un iframe.

import streamlit as st
from frontend_generator import get_component_code
import html

2. Anteprima del componente

Costruiamo la funzione di anteprima dei componenti della nostra applicazione, che permette agli utenti di visualizzare l'anteprima dei loro componenti nella finestra di Streamlit.

def create_component_preview(raw_code: str) -> str:
    clean_code = raw_code.strip()
    return f"""
    <!DOCTYPE html>
    <html>
    <head>
        <script src="https://cdn.tailwindcss.com"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            html, body {{
                
                
                height: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                background-
            }}
            .preview-container {{
                width: 100%;
                height: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                
                box-sizing: border-box;
            }}
            .component-wrapper {{
                width: 100%;
                max-width: 300px;
                display: flex;
                justify-content: center;
                align-items: center;
            }}
        </style>
    </head>
    <body>
        <div class="preview-container">
            <div class="component-wrapper">
                {clean_code}
            </div>
        </div>
    </body>
    </html>
    """

La funzione get_component_code() è importata dal file frontend_generator.py creato in precedenza. Si collega all'API di DeepSeek e genera un componente Tailwind CSS in base a un prompt dell'utente.

Quindi, la funzione create_component_preview() incapsula il codice HTML grezzo restituito dal modello in un documento HTML completo con Tailwind abilitato. Applica uno stile di base per centrare e contenere il componente UI all'interno di un layout reattivo.

3. UI di Streamlit

Ora che abbiamo tutti i componenti, dobbiamo unirli nella nostra applicazione Streamlit. 

st.set_page_config(page_title="UI Generator", layout="centered")
st.markdown("## Generate UI Components with AI")
prompt = st.text_input("Describe your component", value="A red button with Hello text")
if st.button("⚡ Generate"):
    try:
        code = get_component_code(prompt)
        st.subheader("Generated Code")
        st.code(code, language="html")
        preview_html = create_component_preview(code)
        iframe_html = f'<iframe srcdoc="{html.escape(preview_html)}" width="100%" height="300" style="border:none;"></iframe>'  
        st.subheader("Live Preview")
        st.components.v1.html(iframe_html, height=320)
    except Exception as e:
        st.error(f"Error generating component: {str(e)}")

La funzione st.text_input() usa un valore precompilato con un esempio come "A red button with Hello text" per guidare l'utente. Quando l'utente clicca il pulsante "Generate", l'app fa quanto segue:

  1. Chiama la funzione get_component_code(prompt) per recuperare l'HTML generato.
  2. Mostra l'HTML grezzo usando st.code() e racchiude l'HTML in un layout di anteprima completo usando la funzione create_component_preview().
  3. Infine, incorpora il risultato in un iframe usando la funzione st.components.v1.html() per il rendering live.

L'uso di srcdoc all'interno dell'iframe permette allo script e agli stili di Tailwind di caricarsi nel frame di anteprima isolato, superando i limiti del rendering HTML grezzo in Streamlit.

Questa configurazione abilita un flusso fluido dal prompt all'anteprima, in cui gli utenti possono descrivere i componenti UI in linguaggio naturale e vedere subito sia il codice sottostante sia il risultato renderizzato.

Passo 4: Testare l'app Streamlit

Ora che abbiamo tutti i componenti a posto, avviamo la nostra applicazione Streamlit. Esegui il seguente comando nel terminale:

streamlit run streamlit_app.py

Interfaccia UI per un'applicazione DeepSeek-V3-0324 con Streamlit

Possiamo descrivere a parole il nostro componente e cliccare Generate. Questo porterà DeepSeek V3-0324 a produrre codice HTML basato su Tailwind, che verrà poi visualizzato come anteprima live.

Generazione di codice e anteprima live con DeepSeek V3-0324

Generazione di codice e anteprima live con DeepSeek V3-0324

Conclusione

DeepSeek V3-0324 compie passi concreti in avanti nel ragionamento pratico, nell'esecuzione di codice, nella generazione di UI e nell'prompt engineering multimodale. Con la sua natura open-source e l'elevata velocità, è un'ottima opzione per sviluppatori che lavorano su:

  • App con strumenti integrati
  • Assistenti multi-turno
  • Generatori di UI
  • Copilot basati sul ragionamento

Per esplorare altri nuovi strumenti e modelli di AI, ti consiglio questi blog:


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

Sono una Google Developers Expert in ML (Gen AI), una Kaggle 3x Expert e una Women Techmakers Ambassador con oltre 3 anni di esperienza nel tech. Ho co-fondato una startup health-tech nel 2020 e sto conseguendo un master in informatica al Georgia Tech, con specializzazione in machine learning.

Argomenti
Intelligenza artificiale
Large Language Models

Impara l'AI con questi corsi!

Programma

Sviluppare applicazioni AI

21 ore
Impara a creare applicazioni basate sull'intelligenza artificiale con i più recenti strumenti per sviluppatori di AI, tra cui OpenAI API, Hugging Face e LangChain.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro