Chat di codice

Codey for Code Chat (codechat-bison) è il nome del modello che supporta la chat del codice. È una base che supporta conversazioni multi-turno specializzate per il codice. Il modello consente agli sviluppatori di chattare con un chatbot per ricevere assistenza relativamente al codice domande. L'API Codey Chat viene utilizzata per interfacciarsi con Codey for Codey Chat model.

Codey per Codey Chat è ideale per attività di programmazione completate con delle interazioni in maniera continuativa, in modo da poter avere una conversazione continua. Per le attività con codice che richiedono una singola interazione, utilizza l'API per completamento del codice o API per la generazione del codice.

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

Casi d'uso

Ecco alcuni casi d'uso comuni per la chat di codice:

  • Ricevi assistenza per il codice: ricevi assistenza per domande relative al codice, ad esempio domande su un'API, sulla sintassi in un linguaggio di programmazione supportato o su di una libreria è richiesta per il codice che stai scrivendo.

  • Debug: ricevi assistenza per il codice di debug che non si compila o che contiene un bug.

  • Documentazione: ricevi assistenza per comprendere il codice in modo da documentarlo con precisione.

  • Scopri di più sul codice: ricevi assistenza per apprendere il codice che non conosci.

Richiesta HTTP

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

Versioni modello

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

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

La tabella seguente contiene le versioni dei modelli stabili disponibili:

modello codechat-bison Data di uscita Data di interruzione
codechat-bison@002 6 dicembre 2023 9 ottobre 2024

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

Corpo della richiesta

{
  "instances": [
    {
      "context": string,
      "messages": [
        {
          "content": string,
          "author": string
        }
      ]
    }
  ],
  "parameters":{
    "temperature": number,
    "maxOutputTokens": integer,
    "candidateCount": integer,
    "logprobs": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "seed": integer
  }
}

Di seguito sono riportati i parametri per il modello di chat codice denominato codechat-bison. Il modello codechat-bison è uno dei modelli di Codey. Puoi utilizzare questi per ottimizzare il prompt per una conversazione di chatbot sul codice. Per ulteriori informazioni, consulta Modelli di codice panoramica e Creare prompt per parlare di codice.

Parametro Descrizione Valori accettabili

context

Testo da fornire prima al modello per stabilire la risposta. Testo

messages

(obbligatorio)

Cronologia della conversazione fornita al modello in un formato strutturato di autore alternativo. I messaggi vengono visualizzati in ordine cronologico: dal meno recente al più recente. Quando la cronologia dei messaggi fa sì che l'input superi la lunghezza massima, i messaggi meno recenti vengono rimossi fino a quando l'intero prompt non rientra nel limite consentito.
List[Structured Message]
    "author": "user",
     "content": "user message"

temperature

(facoltativo)

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 una temperatura una risposta aperta o creativa, mentre le temperature più alte possono portare a una maggiore diversificazione o creatività che consentono di analizzare i dati e visualizzare i risultati. Una temperatura di 0 indica che i token con la probabilità più alta sono sempre selezionato. In questo caso, le risposte per un determinato prompt sono per lo più deterministiche, ma una piccola quantità una variante è ancora possibile.

0.0–1.0

Default: 0.2

maxOutputTokens

(facoltativo)

Numero massimo di token che possono essere generati nella risposta. Un token è di 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–2048

Default: 1024

candidateCount

(facoltativo)

Il numero di varianti della risposta da restituire.

1-4

Default: 1

logprobs

(facoltativo)

Restituisce i primi logprobs token candidati più probabili con le relative probabilità di log in ogni passaggio della generazione. I token scelti e le relative probabilità di log in ogni passaggio vengono sempre restituiti. Il token scelto potrebbe essere o meno tra i primi logprobs con maggiore probabilità candidati.

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 il valore probabilità di generare contenuti più diversificati. I valori accettati sono -2.02.0.

Minimum value: -2.0 Maximum value: 2.0

seed

Il decodificatore genera rumore casuale con uno pseudo generatore di numeri casuali; viene aggiunto il rumore della temperatura * ai logit prima del campionamento. Lo pseudo generatore di numeri casuali (prng) prende un seed come input, genera lo stesso output con lo stesso seed.

Se il seed non è impostato, il seed utilizzato nel decoder non sarà deterministico, quindi l'output casuale il rumore non sarà deterministico. Se il seed è impostato, il rumore casuale generato sarà deterministici.

Optional

Richiesta di esempio

REST

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

Prima di utilizzare i dati 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/codechat-bison:predict

    Corpo JSON della richiesta:

    {
      "instances": [
        {
          "messages": [
            {
              "author": "AUTHOR",
              "content": "CONTENT"
            }
          ]
        }
      ],
      "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. 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/codechat-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/codechat-bison: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, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.

from vertexai.language_models import CodeChatModel

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

code_chat_model = CodeChatModel.from_pretrained("codechat-bison@001")
chat = code_chat_model.start_chat()

response = chat.send_message(
    "Please help write a function to calculate the min of two numbers", **parameters
)
print(f"Response from Model: {response.text}")

Node.js

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Node.js Vertex AI documentazione di riferimento.

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.

/**
 * 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 = 'codechat-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}`;

  // Learn more about creating prompts to work with a code chat model at:
  // https://cloud.google.com/vertex-ai/docs/generative-ai/code/code-chat-prompts
  const prompt = {
    messages: [
      {
        author: 'user',
        content: 'Hi, how are you?',
      },
      {
        author: 'system',
        content: 'I am doing good. What can I help you in the coding world?',
      },
      {
        author: 'user',
        content:
          'Please help write a function to calculate the min of two numbers',
      },
    ],
  };
  const instanceValue = helpers.toValue(prompt);
  const instances = [instanceValue];

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

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

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  console.log('Get code chat 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 per la configurazione di Java nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Java Vertex AI documentazione di riferimento.

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 PredictCodeChatSample {

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

    // Learn more about creating prompts to work with a code chat model at:
    // https://cloud.google.com/vertex-ai/docs/generative-ai/code/code-chat-prompts
    String instance =
        "{ \"messages\": [\n"
            + "{\n"
            + "  \"author\": \"user\",\n"
            + "  \"content\": \"Hi, how are you?\"\n"
            + "},\n"
            + "{\n"
            + "  \"author\": \"system\",\n"
            + "  \"content\": \"I am doing good. What can I help you in the coding world?\"\n"
            + " },\n"
            + "{\n"
            + "  \"author\": \"user\",\n"
            + "  \"content\":\n"
            + "     \"Please help write a function to calculate the min of two numbers.\"\n"
            + "}\n"
            + "]}";
    String parameters = "{\n" + "  \"temperature\": 0.5,\n" + "  \"maxOutputTokens\": 1024\n" + "}";
    String location = "us-central1";
    String publisher = "google";
    String model = "codechat-bison@001";

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

  // Use a code chat model to generate a code function
  public static void predictCodeChat(
      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": [
    {
      "candidates": [
        {
          "author": string,
          "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": false,
        "scores": [ float ]
      },
      "score": float
    }
  ]
}
Elemento risposta Descrizione
author Un string che indica l'autore di una risposta della chat.
blocked Un flag boolean associato a un attributo di sicurezza che indica se l'input del modello o l'output è 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 degli attributi di sicurezza associati al generati. L'ordine dei punteggi nel parametro scores corrisponda all'ordine delle categorie. Ad esempio, il primo punteggio nel Il parametro scores indica la probabilità che la risposta violi la prima categoria nell'elenco categories.
content I contenuti di una risposta in chat.
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.
safetyAttributes Un array di attributi di sicurezza. L'array contiene un attributo di sicurezza per ogni risposta candidata.
score Un valore float minore di zero. Più alto è il valore di score, maggiore è la fiducia che il modello ha nella sua risposta.
scores Un array di valori float. Ogni valore è un punteggio che indica probabilità che la risposta violi la categoria di sicurezza in base alla quale viene controllata. Più basso è il valore, più sicuro il modello prende in considerazione la risposta. L'ordine di i punteggi nell'array corrispondono all'ordine degli attributi di sicurezza Elemento risposta categories.
startIndex Un numero intero che specifica dove inizia una citazione in content.
title Il titolo della fonte di una citazione. Esempi di titoli di origine potrebbero essere quelli di un un articolo di giornale o un libro.
url L'URL della fonte della citazione. Un esempio di sorgente URL può essere un sito web di notizie o un repository GitHub.
tokens I token campionati.
tokenLogProbs I token campionati registrare le probabilità.
topLogProbs I token candidati più probabili e le relative probabilità di log in ogni passaggio.
logprobs Risultati del parametro "logprobs". Mappatura 1:1 sui "candidati".

Esempio di risposta

{
  "predictions": [
    {
      "citationMetadata": [
        {
          "citations": []
        }
      ],
      "candidates": [
        {
          "author": "AUTHOR",
          "content": "RESPONSE"
        }
      ],
      "safetyAttributes": {
        "categories": [],
        "blocked": false,
        "scores": []
      },
      "score": -1.1161688566207886
    }
  ]
}

Trasmetti la risposta dai modelli di IA generativa

I parametri sono gli stessi per le richieste di flusso e non di streaming le API.

Per visualizzare richieste di codice e risposte di esempio utilizzando l'API REST, consulta Esempi di utilizzo dell'API REST per lo streaming.

Per visualizzare richieste di codice e risposte di esempio utilizzando l'SDK Vertex AI per Python, consulta Esempi di utilizzo dell'SDK Vertex AI per Python per i flussi.