Completamento del codice

Codey for Code Complete (code-gecko) è il nome del modello che supporta il completamento del codice. È una modello di base che genera codice basato sul codice che viene scritto. Codey per il completamento del codice completa il codice digitato di recente da un utente. Codey per il completamento del codice è supportato dall'API di generazione del codice. Le API Codey fanno parte della famiglia di API PaLM.

Per scoprire di più sulla creazione di prompt per il completamento del codice, consulta Crea prompt per il completamento del codice.

Per esplorare questo modello nella console, consulta la scheda del modello Codey per Codey in Model Garden.
Vai a Model Garden

Casi d'uso

Alcuni casi d'uso comuni per il completamento del codice sono:

  • Scrivere codice più velocemente: utilizza il modello code-gecko per scrivere codice più velocemente sfruttando il codice suggerito per te.

  • Riduci al minimo i bug nel codice: utilizza i suggerimenti di codice che sai essere sintatticamente corretti per evitare errori. Il completamento del codice aiuta a ridurre al minimo il rischio di errori introducendo bug che possono verificarsi quando si scrive il codice rapidamente.

Richiesta HTTP

POST https://us-central1-googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/code-gecko:predict

Versioni modello

Per utilizzare la versione più recente del modello, specifica il nome del modello senza numero di versione, ad esempio code-gecko.

Per utilizzare una versione del modello stabile, specifica il numero di versione del modello, ad esempio code-gecko@002. Ogni versione stabile è disponibile per sei mesi dopo la data di rilascio della versione stabile successiva.

La tabella seguente contiene le versioni stabili del modello disponibili:

modello code-gecko Data di uscita Data di interruzione
code-gecko@002 6 dicembre 2023 9 aprile 2025

Per saperne di più, consulta Versioni dei modelli e ciclo di vita.

Corpo della richiesta

{
  "instances":[
    {
      "prefix": string,
      "suffix": string
    }
  ],
  "parameters": {
    "temperature": number,
    "maxOutputTokens": integer,
    "candidateCount": integer,
    "stopSequences": [ string ],
    "logprobs": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "echo": boolean,
    "seed": integer
  }
}

Di seguito sono riportati i parametri per il modello di completamento del codice denominato code-gecko. Il modello code-gecko è uno dei modelli Codey. Puoi utilizzare questi parametri per ottimizzare la richiesta di completamento del codice. Per ulteriori informazioni, consulta la Panoramica dei modelli di codice e Creare prompt per il completamento del codice.

Parametro Descrizione Valori accettabili

prefix

(obbligatorio)

Per i modelli di codice, prefix rappresenta l'inizio di un codice di programmazione significativo o un prompt in linguaggio naturale che descrive il codice da generare. Il modello tenta di inserire il codice tra le prefix e suffix. Una stringa di testo valida

suffix

(facoltativo)

Per il completamento del codice, suffix rappresenta la fine di una porzione di un codice di programmazione significativo. Il modello tenta di inserire il codice tra prefix e suffix. Una stringa di testo valida

temperature

La temperatura viene utilizzata per il campionamento durante la generazione della risposta. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono risposte meno creative o aperte, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 indica che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato prompt sono per lo più deterministiche, ma è ancora possibile una piccola variazione.

0.0–1.0

Default: 0.2

maxOutputTokens

Numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe diverse.

1-64

Default: 64

candidateCount

(facoltativo)

Il numero di varianti di risposta da restituire. Per ogni richiesta ti vengono addebitati i costi i token di output di tutti i candidati, ma vengono addebitati una sola volta per i token di input.

La specifica di più candidati è una funzionalità di anteprima che funziona con generateContent (streamGenerateContent non è supportato). Sono supportati i seguenti modelli:

  • Gemini 1.5 Flash: 1-8, valore predefinito: 1
  • Gemini 1.5 Pro: 1-8, valore predefinito: 1
  • Gemini 1.0 Pro: 1-8, valore predefinito: 1

1-4

Default: 1

(facoltativo)

stopSequences

(facoltativo)

Specifica un elenco di stringhe che indicano al modello di interrompere la generazione di testo se uno delle stringhe incontrate nella risposta. Se una stringa viene visualizzata più volte nella risposta, la risposta viene troncata nel punto in cui viene rilevata per la prima volta. Le stringhe sono sensibili alle maiuscole.

Ad esempio, se la seguente è la risposta restituita quando stopSequences non è specificato:

public static string reverse(string myString)

Quindi la risposta restituita con il campo stopSequences impostato su ["Str", "reverse"] è:

public static string
Un elenco di stringhe

logprobs

(facoltativo)

Restituisce le probabilità di log dei token candidati principali in ogni generazione passaggio. I token e le probabilità logaritmiche scelti dal modello vengono sempre restituiti in ogni fase, ma potrebbero non essere presenti nell'elenco dei principali candidati. Specifica il numero di candidati da restituire utilizzando un valore intero nell'intervallo 1-5.

0-5

frequencyPenalty

(facoltativo)

I valori positivi penalizzano i token che appaiono ripetutamente nel testo generato, diminuendo probabilità di ripetere i contenuti. I valori accettati sono -2.0-2.0.

Minimum value: -2.0 Maximum value: 2.0

presencePenalty

(facoltativo)

I valori positivi penalizzano i token già presenti nel testo generato, aumentando la probabilità di generare contenuti più diversi. I valori accettati sono -2.0-2.0.

Minimum value: -2.0 Maximum value: 2.0

echo

(facoltativo)

Se il valore è true, il prompt viene ripetuto nel testo generato.

Optional

seed

Quando il seed è fissato a un valore specifico, il modello fa del suo meglio per fornire la stessa risposta per richieste ripetute. L'output deterministico non è garantito. Inoltre, la modifica delle impostazioni del modello o dei parametri, come la temperatura, può causano variazioni nella risposta anche se utilizzi lo stesso valore seed. Di predefinito, viene usato un valore seed casuale.

Questa è una funzionalità in anteprima.

Optional

Richiesta di esempio

REST

Per testare un prompt di testo utilizzando l'API Vertex AI, invia una richiesta POST al l'endpoint del modello del publisher.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto.
  • Per gli altri campi, consulta la tabella Testo della richiesta.

    Metodo HTTP e URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/code-gecko:predict

    Corpo JSON della richiesta:

    {
      "instances": [
        { "prefix": "PREFIX",
          "suffix": "SUFFIX"}
      ],
      "parameters": {
        "temperature": TEMPERATURE,
        "maxOutputTokens": MAX_OUTPUT_TOKENS,
        "candidateCount": CANDIDATE_COUNT
      }
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/code-gecko:predict"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/code-gecko:predict" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla risposta di esempio.

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.

from vertexai.language_models import CodeGenerationModel

parameters = {
    "temperature": 0.2,  # Temperature controls the degree of randomness in token selection.
    "max_output_tokens": 64,  # Token limit determines the maximum amount of text output.
}

code_completion_model = CodeGenerationModel.from_pretrained("code-gecko@001")
response = code_completion_model.predict(
    prefix="def reverse_string(s):", **parameters
)

print(f"Response from Model: {response.text}")

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta API Node.js Vertex AI documentazione di riferimento.

Per autenticarti in Vertex AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Update these variables before running the sample.
 */
const PROJECT_ID = process.env.CAIP_PROJECT_ID;
const LOCATION = 'us-central1';
const PUBLISHER = 'google';
const MODEL = 'code-gecko@001';
const aiplatform = require('@google-cloud/aiplatform');

// Imports the Google Cloud Prediction service client
const {PredictionServiceClient} = aiplatform.v1;

// Import the helper module for converting arbitrary protobuf.Value objects.
const {helpers} = aiplatform;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);

async function callPredict() {
  // Configure the parent resource
  const endpoint = `projects/${PROJECT_ID}/locations/${LOCATION}/publishers/${PUBLISHER}/models/${MODEL}`;

  const prompt = {
    prefix:
      'def reverse_string(s): \
        return s[::-1] \
      #This function',
  };
  const instanceValue = helpers.toValue(prompt);
  const instances = [instanceValue];

  const parameter = {
    temperature: 0.2,
    maxOutputTokens: 64,
  };
  const parameters = helpers.toValue(parameter);

  const request = {
    endpoint,
    instances,
    parameters,
  };

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  console.log('Get code completion response');
  const predictions = response.predictions;
  console.log('\tPredictions :');
  for (const prediction of predictions) {
    console.log(`\t\tPrediction : ${JSON.stringify(prediction)}`);
  }
}

callPredict();

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.


import com.google.cloud.aiplatform.v1.EndpointName;
import com.google.cloud.aiplatform.v1.PredictResponse;
import com.google.cloud.aiplatform.v1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1.PredictionServiceSettings;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class PredictCodeCompletionCommentSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace this variable before running the sample.
    String project = "YOUR_PROJECT_ID";

    // Learn how to create prompts to work with a code model to create code completion suggestions:
    // https://cloud.google.com/vertex-ai/docs/generative-ai/code/code-completion-prompts
    String instance =
        "{ \"prefix\": \""
            + "def reverse_string(s):\n"
            + "  return s[::-1]\n"
            + "#This function"
            + "\"}";
    String parameters = "{\n" + "  \"temperature\": 0.2,\n" + "  \"maxOutputTokens\": 64,\n" + "}";
    String location = "us-central1";
    String publisher = "google";
    String model = "code-gecko@001";

    predictComment(instance, parameters, project, location, publisher, model);
  }

  // Use Codey for Code Completion to complete a code comment
  public static void predictComment(
      String instance,
      String parameters,
      String project,
      String location,
      String publisher,
      String model)
      throws IOException {
    final String endpoint = String.format("%s-aiplatform.googleapis.com:443", location);
    PredictionServiceSettings predictionServiceSettings =
        PredictionServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (PredictionServiceClient predictionServiceClient =
        PredictionServiceClient.create(predictionServiceSettings)) {
      final EndpointName endpointName =
          EndpointName.ofProjectLocationPublisherModelName(project, location, publisher, model);

      Value instanceValue = stringToValue(instance);
      List<Value> instances = new ArrayList<>();
      instances.add(instanceValue);

      Value parameterValue = stringToValue(parameters);

      PredictResponse predictResponse =
          predictionServiceClient.predict(endpointName, instances, parameterValue);
      System.out.println("Predict Response");
      System.out.println(predictResponse);
    }
  }

  // Convert a Json string to a protobuf.Value
  static Value stringToValue(String value) throws InvalidProtocolBufferException {
    Value.Builder builder = Value.newBuilder();
    JsonFormat.parser().merge(value, builder);
    return builder.build();
  }
}

Corpo della risposta

{
  "predictions": [
    {
      "content": string,
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "url": string,
            "title": string,
            "license": string,
            "publicationDate": string
          }
        ]
      },
      "logprobs": {
        "tokenLogProbs": [ float ],
        "tokens": [ string ],
        "topLogProbs": [ { map<string, float> } ]
      },
      "safetyAttributes":{
        "categories": [ string ],
        "blocked": boolean,
        "scores": [ float ],
        "errors": [ int ]
      },
      "score": float
    }
  ]
}
Elemento Response Descrizione
blocked Un flag boolean associato a un attributo di sicurezza che indica se l'input o l'output del modello è stato bloccato. Se blocked è true, allora errors della risposta contiene uno o più codici di errore. Se blocked è false, la risposta non include il campo errors.
categories Un elenco dei nomi delle categorie di attributi di sicurezza associati ai contenuti generati. L'ordine dei punteggi nel parametro scores corrisponda all'ordine delle categorie. Ad esempio, il primo punteggio nel parametro scores indica la probabilità che la risposta violi la prima categoria nell'elenco categories.
citationMetadata Un elemento che contiene un array di citazioni.
citations Un array di citazioni. Ogni citazione contiene i relativi metadati.
content Il risultato generato dal modello utilizzando il testo di input.
endIndex Un numero intero che specifica il punto in cui termina una citazione in content.
errors Un array di codici di errore. Il campo di risposta errors è incluso solo nella risposta quando il campo blocked della risposta è true. Per informazioni sui codici di errore, consulta Errori di sicurezza.
license La licenza associata a una citazione.
publicationDate La data di pubblicazione di una citazione. I suoi formati validi YYYY, YYYY-MM e YYYY-MM-DD.
score Un valore float minore di zero. Maggiore è il valore di score, maggiore è la confidenza del modello nella sua risposta.
startIndex Un numero intero che specifica dove inizia una citazione in content.
title Il titolo della fonte di una citazione. Esempi di titoli delle fonti possono essere quelli di un articolo di notizie o di un libro.
url L'URL della fonte della citazione. Esempi di una sorgente URL possono essere un sito web di notizie o un repository GitHub.
tokens I token campionati.
tokenLogProbs Le probabilità in logaritmo dei token campionati.
topLogProbs I token candidati più probabili e le relative probabilità in logaritmo in ogni passaggio.
logprobs Risultati del parametro "logprobs". Mappatura 1:1 sui "candidati".

Esempio di risposta

{
  "predictions": [
    {
      "safetyAttributes": {
        "blocked": false,
        "categories": [],
        "scores": []
      },
      "content": " reverses a string",
      "citationMetadata": {
        "citations": []
      }
    },
    "score": -1.1161688566207886
  ]
}

Trasmetti la risposta dai modelli di IA generativa

I parametri sono gli stessi per le richieste in streaming e non in streaming alle API.

Per visualizzare richieste e risposte di codice di esempio che utilizzano l'API REST, consulta Esempi di utilizzo dell'API REST in streaming.

Per visualizzare richieste e risposte di codice di esempio che utilizzano l'SDK Vertex AI per Python, consulta Esempi di utilizzo dell'SDK Vertex AI per Python per lo streaming.