Generazione del codice

code-bison è il nome del modello che supporta la generazione del codice. È un modello di base che genera codice sulla base di una descrizione in linguaggio naturale. Il tipo di contenuti che code-bison può creare include funzioni, pagine web e test delle unità. code-bison è supportato dalle API Codey per la generazione del codice. Le API Codey fanno parte della famiglia di API PaLM.

Per esplorare questo modello nella console, consulta la scheda del modello code-bison in Model Garden.
<a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="kDsq5VTi6ASK/vNFlrWmnltigmNHgUGOXn/QVSGplOi71dheYhG9dKuvm3s+0

Casi d'uso

Di seguito sono riportati alcuni casi d'uso comuni per la generazione del codice:

  • Test delle unità: utilizza la richiesta di richiedere un test delle unità per una funzione.

  • Scrivi una funzione: passa un problema al modello per ottenere una funzione che lo risolva.

  • Creare una classe: utilizza un prompt per descrivere lo scopo di una classe e avere il codice che definisce la classe restituita.

Richiesta HTTP

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

Versioni modello

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

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

La tabella seguente contiene le versioni del modello stabile disponibili:

modello code-bisonte Data di uscita
codice-bison@001 29 giugno 2023

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

Corpo della richiesta

{
  "instances": [
    { "prefix": string }
  ],
  "parameters": {
    "temperature": number,
    "maxOutputTokens": integer,
    "candidateCount": integer,
    "stopSequences": [ string ]
  }
}

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

Parametro Description Valori accettati

prefix

(obbligatorio)

Per i modelli di codice, prefix rappresenta l'inizio di una porzione di codice di programmazione significativo o di un prompt in linguaggio naturale che descrive il codice da generare. 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 le richieste che richiedono una risposta più deterministica e meno aperta o creativa, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 è deterministica, il che significa che viene sempre selezionata la risposta con la probabilità più alta.

0.0–1.0

Default: 0.2

maxOutputTokens

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

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

1–2048

Default: 1024

candidateCount

(Facoltativo)

Il numero di varianti della risposta da restituire. Il parametro di conteggio dei candidati non è supportato quando utilizzi l'SDK Vertex AI.

1-4

Default: 1

stopSequences

(Facoltativo)

Specifica un elenco di stringhe che indica al modello di interrompere la generazione di testo se nella risposta viene rilevata una delle stringhe. Se una stringa compare 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 seguente è la risposta restituita quando stopSequences non è specificato:

public static string reverse(string myString)

La risposta restituita con stopSequences impostato su ["Str", "reverse"] è:

public static string
Un elenco di stringhe

Richiesta di esempio

REST

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

Prima di utilizzare qualsiasi dato della richiesta, effettua le seguenti sostituzioni:

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

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    arricciare

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

    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-bison:predict"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

    $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-bison:predict" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla risposta di esempio.

SDK Vertex AI per Python

Per scoprire come installare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'SDK Vertex AI per l'API Python.

from vertexai.preview.language_models import CodeGenerationModel

def generate_a_function(temperature: float = 0.5) -> object:
    """Example of using Code Generation to write a function."""

    # TODO developer - override these parameters as needed:
    parameters = {
        "temperature": temperature,  # Temperature controls the degree of randomness in token selection.
        "max_output_tokens": 256,  # Token limit determines the maximum amount of text output.
    }

    code_generation_model = CodeGenerationModel.from_pretrained("code-bison@001")
    response = code_generation_model.predict(
        prefix="Write a function that checks if a year is a leap year.", **parameters
    )

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

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Node.js Vertex AI.

Per l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';
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',
};
const publisher = 'google';
const model = 'code-bison@001';

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

async function callPredict() {
  // Configure the parent resource
  const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`;

  const prompt = {
    prefix: 'Write a function that checks if a year is a leap year.',
  };
  const instanceValue = helpers.toValue(prompt);
  const instances = [instanceValue];

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

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

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  console.log('Get code generation 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 di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java Vertex AI.

Per l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina Configurare l'autenticazione per un ambiente di sviluppo locale.