Codegenerierung

code-bison ist der Name des Modells, das die Codegenerierung unterstützt. Es ist ein Foundation Model, das Code anhand einer Natural Language-Beschreibung generiert. Zu der Art der Inhalte, die code-bison erstellen kann, gehören Funktionen, Webseiten und Unittests. code-bison wird von den Codey APIs zur Codegenerierung unterstützt. Codey APIs befinden sich in der PaLM API-Familie.

Weitere Informationen zu diesem Modell finden Sie in der Console auf der code-bison-Modellkarte im Model Garden.
<a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="kDsq5VTi6ASK/vNFlrWmnltigmNHgUGOXn/QVSGplOi71dheYhG9dKuv3S+0ajmQkfzB9oP/Mo2x7xIe1klR5YSKTX7LV1jkkg0C2Ndofq2g0LY5rER9QL0JoE/A8FHO" target="console" track-name="consoleLink" track-type="tasks" }="">Go to the Model Garden</a{:>

Anwendungsfälle

Im Folgenden sind einige gängige Anwendungsfälle für die Codegenerierung aufgeführt:

  • Unittests: Verwenden Sie die Eingabeaufforderung, um einen Unittest für eine Funktion anzufordern.

  • Funktion schreiben: Übergeben Sie ein Problem an das Modell, um eine Funktion zu erhalten, die dieses Problem löst.

  • Klasse erstellen: Verwenden Sie eine Eingabeaufforderung, um den Zweck einer Klasse zu beschreiben und Code zur Definition der Klasse zu erhalten.

HTTP-Anfrage

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

Modellversionen

Wenn Sie die neueste Modellversion verwenden möchten, geben Sie den Modellnamen ohne Versionsnummer an, z. B. code-bison.

Wenn Sie eine stabile Modellversion verwenden möchten, geben Sie die Modellversionsnummer an, z. B. code-bison@001. Stabile Versionen sind ab dem Releasedatum der nachfolgenden stabilen Version noch sechs Monate verfügbar.

Die folgende Tabelle enthält die verfügbaren stabilen Modellversionen:

Code-bison-Modell Veröffentlicht
code-bison@001 29. Juni 2023

Weitere Informationen finden Sie unter Modellversionen und Lebenszyklus.

Anfragetext

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

Im Folgenden finden Sie die Parameter für das Codegenerierungsmodell code-bison. Das code-bison-Modell ist eines der Modelle in Codey. Mit diesen Parametern können Sie die Eingabeaufforderung zur Codevervollständigung optimieren. Weitere Informationen finden Sie unter Codemodelle – Übersicht und Prompts für die Codevervollständigung erstellen.

Parameter Beschreibung Zulässige Werte

prefix

(erforderlich)

Bei Codemodellen stellt prefix den Anfang eines sinnvollen Programmiercodes oder eine Eingabeaufforderung in natürlicher Sprache dar, die den zu generierenden Code beschreibt. Ein gültiger Textstring

temperature

Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich für Aufforderungen, die deterministischere und weniger offene oder kreative Reaktionen erfordern, während höhere Temperaturen zu vielfältigeren oder kreativen Ergebnissen führen können. Eine Temperatur von 0 ist deterministisch, d. h., die Antwort mit der höchsten Wahrscheinlichkeit wird immer ausgewählt.

0.0–1.0

Default: 0.2

maxOutputTokens

Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

1–2048

Default: 1024

candidateCount

(optional)

Die Anzahl der zurückzugebenden Antwortvarianten. Der Parameter für die Anzahl der Kandidaten wird bei Verwendung des Vertex AI SDK nicht unterstützt.

1-4

Default: 1

stopSequences

(optional)

Gibt eine Liste an Strings an, die das Modell anweist, Text nicht mehr zu generieren, wenn einer der Strings in der Antwort gefunden wird. Kommt ein String mehrmals in der Antwort vor, so wird die Antwort an der Stelle abgeschnitten, an der er erfasst wurde. Bei den Strings wird zwischen Groß- und Kleinschreibung unterschieden.

Wenn zum Beispiel folgende Antwort zurückgegeben wird und stopSequences nicht angegeben ist:

public static string reverse(string myString)

Dann lautet zurückgegebene Antwort mit stopSequences auf ["Str", "reverse"] gesetzt:

public static string
Eine Liste von Strings

Beispielanfrage

REST

Senden Sie zum Testen eines Text-Prompts mit der Vertex AI API eine POST-Anfrage an den Endpunkt des Publisher-Modells.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • Informationen zu anderen Feldern finden Sie in der Tabelle Anfragetext.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

    PowerShell

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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 "http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/code-bison:predict" | Select-Object -Expand Content

    Sie sollten eine JSON-Antwort ähnlich der Beispielantwort erhalten.

Vertex AI SDK für Python

Informationen zur Installation des Vertex AI SDK für Python finden Sie unter Vertex AI SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.aiplatform.v1beta1.EndpointName;
import com.google.cloud.aiplatform.v1beta1.PredictResponse;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1beta1.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 PredictCodeGenerationFunctionSample {

  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 generate code:
    // http://cloud.go888ogle.com.fqhub.com/vertex-ai/docs/generative-ai/code/code-generation-prompts
    String instance = "{ \"prefix\": \"Write a function that checks if a year is a leap year.\"}";
    String parameters = "{\n" + "  \"temperature\": 0.5,\n" + "  \"maxOutputTokens\": 256,\n" + "}";
    String location = "us-central1";
    String publisher = "google";
    String model = "code-bison@001";

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

  // Use Code Generation to generate a code function
  public static void predictFunction(
      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();
  }
}

Antworttext

{
  "predictions": [
    {
      "content": string,
      "score": float,
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "url": string,
            "title": string,
            "license": string,
            "publicationDate": string
          }
        ]
      },
      "safetyAttributes":{
        "categories": [],
        "blocked": false,
        "scores": []
      },
      "score": float
    }
  ]
}
Antwortelement Beschreibung
blocked Ein boolean-Flag, das mit einem Sicherheitsattribut verknüpft ist, das angibt, ob die Ein- oder Ausgabe des Modells blockiert wurde.
categories Eine Liste der Namen der Sicherheitsattribute, die den generierten Inhalten zugeordnet sind Die Reihenfolge der Scores im scores-Parameter entspricht der Reihenfolge der Kategorien. Der erste Wert im scores-Parameter gibt beispielsweise die Wahrscheinlichkeit an, mit der die Antwort gegen die erste Kategorie in der categories-Liste verstößt.
citationMetadata Ein Element, das ein Array von Zitationen enthält.
citations Ein Array von Zitationen. Jedes Zitat enthält seine Metadaten.
content Das Ergebnis, das vom Modell mit dem Eingabetext generiert wird.
endIndex Eine Ganzzahl, die angibt, wo eine Zitation in content endet.
license Die mit einer Zitation verknüpfte Lizenz.
publicationDate Das Datum, an dem ein Zitat veröffentlicht wurde. Die gültigen Formate sind YYYY, YYYY-MM und YYYY-MM-DD.
safetyAttributes Eine Reihe von Sicherheitsattributen. Das Array enthält für jeden Antwortkandidaten ein Sicherheitsattribut.
score Ein float-Wert, der kleiner als null ist. Je höher der Wert für score, desto größer ist das Vertrauen des Modells in seine Antwort.
scores Ein Array mit float-Werten. Die einzelnen Werte sind Scores, die die Wahrscheinlichkeit angeben, dass die Antwort gegen die Sicherheitskategorie verstößt, auf die sie geprüft wird. Je niedriger der Wert ist, als desto sicherer nimmt das Modell die Antwort an. Die Reihenfolge der Scores im Array entspricht der Reihe