Flusso del processo delle richieste utente in GitHub Copilot
In questa unità verrà spiegato in che modo GitHub Copilot trasforma le richieste utente in codice intelligente e utilizzabile. In genere, GitHub Copilot riceve richieste e restituisce suggerimenti di codice o risposte nel flusso di dati. Questo processo suggerisce un flusso in ingresso e in uscita.
Flusso in ingresso:
Per iniziare, verranno esaminati tutti i passaggi eseguiti da Copilot per elaborare la richiesta di un utente in un suggerimento di codice.
1. Trasmissione sicura della richiesta e raccolta del contesto
Il processo inizia con la trasmissione sicura della richiesta utente tramite HTTPS. In questo modo si garantisce che il commento in linguaggio naturale venga inviato ai server di GitHub Copilot in modo sicuro e riservato, proteggendo le informazioni sensibili.
GitHub Copilot riceve in modo sicuro la richiesta utente, che potrebbe essere una chat di Copilot o un commento in linguaggio naturale fornito dall'utente all'interno del codice.
Contemporaneamente, Copilot raccoglie i dettagli relativi al contesto:
- Codice prima e dopo la posizione del cursore, che consente di comprendere il contesto immediato della richiesta.
- Nome e tipo del file da modificare, che consentono di personalizzare i suggerimenti di codice per il tipo di file specifico.
- Informazioni sulle schede aperte adiacenti, per assicurarsi che il codice generato sia allineato ad altri segmenti di codice nello stesso progetto.
- Informazioni sulla struttura del progetto e sui percorsi di file
- Informazioni su framework e linguaggi di programmazione
- Pre-elaborazione tramite la tecnica FIM (Fill-in-the-Middle) per prendere in considerazione sia il contesto di codice precedente che quello seguente, espandendo in modo efficace la comprensione del modello, consentendo a Copilot di generare suggerimenti di codice più accurati e pertinenti sfruttando un contesto più ampio.
Questi passaggi convertono la richiesta di alto livello dell'utente in un'attività concreta di scrittura del codice.
2. Filtro proxy
Dopo aver acquisito il contesto e aver compilato il prompt, passa in modo sicuro a un server proxy ospitato in un tenant di Microsoft Azure di proprietà di GitHub. Il proxy filtra il traffico, bloccando i tentativi di violare la richiesta (prompt) o manipolare il sistema in relazione alla rivelazione dei dettagli su come il modello genera suggerimenti di codice.
3. Filtro tossicità
Copilot incorpora meccanismi di filtro dei contenuti prima di procedere con l'estrazione delle finalità e la generazione di codice, per garantire che il codice e le risposte generate non includano o diffondano:
- Parole di incitamento all'odio e contenuto inappropriato: Copilot usa algoritmi per rilevare e impedire l'acquisizione di parole d'odio, linguaggio offensivo o contenuto inappropriato che potrebbero essere dannosi od offensivi.
- Dati personali: Copilot esclude attivamente tutti i dati personali, ad esempio nomi, indirizzi o numeri di identificazione, per proteggere la privacy degli utenti e la sicurezza dei dati.
4. Generazione di codice con LLM
Infine, il prompt filtrato e analizzato viene passato ai modelli LLM, che generano suggerimenti di codice appropriati. Tali suggerimenti si basano sulla comprensione della richiesta e del contesto circostante di Copilot, assicurandosi che il codice generato sia pertinente, funzionale e allineato ai requisiti specifici del progetto.
Flusso in uscita:
5. Post-elaborazione e convalida della risposta
Una volta che il modello produce le risposte, il filtro di tossicità rimuove qualsiasi contenuto dannoso od offensivo generato. Il server proxy applica quindi un livello finale di controlli per garantire la qualità del codice, nonché la sicurezza e gli standard etici. I controlli includono quanto segue:
- Qualità del codice: Le risposte vengono controllate per individuare bug o vulnerabilità comuni, ad esempio scripting intersito (XSS) o SQL injection, assicurandosi che il codice generato sia affidabile e sicuro.
- Codice pubblico corrispondente (facoltativo): Facoltativamente, gli amministratori possono abilitare un filtro che impedisce a Copilot di restituire suggerimenti su circa 150 caratteri se sono molto simili al codice pubblico esistente in GitHub. Ciò impedisce che le corrispondenze coincidenti vengano suggerite come contenuto originale. Se una parte della risposta non supera tali controlli, viene troncata o eliminata.
6. Avvio del ciclo di feedback e presentazione dei suggerimenti
Solo le risposte che passano tutti i filtri vengono presentate all'utente. Copilot avvia un ciclo di feedback basato sulle azioni dell'utente per ottenere quanto segue:
- Sviluppare le proprie conoscenze a partire dai suggerimenti accettati.
- Apprendere e migliorare attraverso le modifiche e i suggerimenti rifiutati.
7. Ripetizione per le richieste successive
Il processo viene ripetuto non appena l'utente invia altre richieste. Copilot gestisce continuamente le richieste utente, ne comprende la finalità e genera codice in risposta. Con il passare del tempo, Copilot applica il feedback cumulativo e i dati delle interazioni, inclusi i dettagli sul contesto, per migliorare la comprensione della finalità dell'utente e perfezionare le proprie capacità di generazione del codice.