Penyelesaian kode yang didukung AI

Codey untuk Penyelesaian Kode (code-gecko) adalah nama model yang mendukung penyelesaian kode. Ini adalah model dasar yang menghasilkan kode berdasarkan kode yang ditulis. Codey untuk Penyelesaian Kode menyelesaikan kode yang baru saja diketik oleh pengguna. Codey untuk Penyelesaian Kode didukung oleh API pembuatan kode. Codey API berada dalam kelompok PaLM API.

Untuk mempelajari lebih lanjut cara membuat perintah untuk menyelesaikan kode, lihat Membuat perintah untuk penyelesaian kode.

Untuk mempelajari model ini di konsol, lihat kartu model Codey for Code Completion di Model Garden.
Buka Model Garden

Kasus penggunaan

Beberapa kasus penggunaan umum untuk penyelesaian kode adalah:

  • Write code faster: Gunakan model code-gecko untuk menulis kode lebih cepat dengan memanfaatkan kode yang disarankan untuk Anda.

  • Minimize bugs in code: Gunakan saran kode yang benar secara sintaksis untuk menghindari error. Pelengkapan kode membantu Anda meminimalkan risiko yang secara tidak sengaja memperkenalkan bug yang dapat terjadi saat Anda menulis kode dengan cepat.

Permintaan HTTP

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

Versi model

Untuk menggunakan versi model terbaru, tentukan nama model tanpa nomor versi, misalnya code-gecko.

Untuk menggunakan versi model stabil, tentukan nomor versi model, misalnya code-gecko@002. Setiap versi stabil tersedia selama enam bulan setelah tanggal rilis versi stabil berikutnya.

Tabel berikut berisi versi model stabil yang tersedia:

model code-gecko Tanggal rilis Tanggal penghentian
code-gecko@002 6 Desember 2023 9 April 2025

Untuk mengetahui informasi selengkapnya, baca Versi dan siklus proses model.

Isi permintaan

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

Berikut adalah parameter untuk model pelengkapan kode bernama code-gecko. Model code-gecko adalah salah satu model Codey. Anda dapat menggunakan parameter ini untuk membantu mengoptimalkan upaya penyelesaian kode. Untuk mengetahui informasi selengkapnya, lihat Ringkasan model kode dan Membuat perintah untuk penyelesaian kode.

Parameter Deskripsi Nilai yang dapat diterima

prefix

(wajib)

Untuk model kode, prefix mewakili awal bagian kode pemrograman yang bermakna atau perintah natural language yang menjelaskan kode yang akan dibuat. Model mencoba mengisi kode di antara prefix dan suffix. String teks yang valid

suffix

(opsional)

Untuk penyelesaian kode, suffix mewakili akhir bagian kode pemrograman yang bermakna. Model mencoba mengisi kode di antara prefix dan suffix. String teks yang valid

temperature

Suhu digunakan untuk pengambilan sampel selama pembuatan respons. Suhu mengontrol tingkat keacakan dalam pemilihan token. Suhu yang lebih rendah cocok untuk perintah yang memerlukan respons yang kurang terbuka atau kreatif, sedangkan suhu yang lebih tinggi dapat memberikan hasil yang lebih beragam atau kreatif. Suhu 0 berarti token probabilitas tertinggi selalu dipilih. Dalam hal ini, respons untuk perintah tertentu sebagian besar bersifat deterministik, tetapi sejumlah kecil variasi masih memungkinkan.

0.0–1.0

Default: 0.2

maxOutputTokens

Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk respons yang berpotensi lebih panjang.

1-64

Default: 64

candidateCount

(opsional)

Jumlah variasi respons yang akan ditampilkan. Untuk setiap permintaan, Anda dikenai biaya untuk token output dari semua kandidat, tetapi hanya dikenai biaya satu kali untuk token input.

Menentukan beberapa kandidat adalah fitur Pratinjau yang berfungsi dengan generateContent (streamGenerateContent tidak didukung). Model berikut didukung:

  • Gemini 1.5 Flash: 1-8, default: 1
  • Gemini 1.5 Pro: 1-8, default: 1
  • Gemini 1.0 Pro: 1-8, default: 1

1-4

Default: 1

(opsional)

stopSequences

(opsional)

Menentukan daftar string yang memberi tahu model untuk berhenti menghasilkan teks jika salah satu string ditemukan dalam respons. Jika string muncul beberapa kali dalam respons, respons akan dipotong di tempatnya pertama kali ditemukan. String peka huruf besar/kecil.

Misalnya, jika kode berikut adalah respons yang ditampilkan saat stopSequences tidak ditentukan:

public static string reverse(string myString)

Maka respons yang ditampilkan di mana stopSequences ditetapkan ke ["Str", "reverse"] adalah:

public static string
Daftar string

logprobs

(opsional)

Menampilkan log probabilitas token kandidat teratas pada setiap langkah pembuatan. Token yang dipilih model mungkin tidak sama dengan token kandidat teratas di setiap langkah. Tentukan jumlah kandidat yang akan ditampilkan menggunakan nilai bilangan bulat dalam rentang 1-5.

0-5

frequencyPenalty

(opsional)

Nilai positif akan menghukum token yang berulang kali muncul dalam teks yang dihasilkan, sehingga mengurangi kemungkinan konten berulang. Nilai minimumnya adalah -2.0. Nilai maksimumnya adalah hingga, tetapi tidak termasuk, 2.0.

Minimum value: -2.0 Maximum value: 2.0

presencePenalty

(opsional)

Nilai positif akan menghukum token yang sudah muncul dalam teks yang dihasilkan, sehingga meningkatkan probabilitas untuk menghasilkan konten yang lebih beragam. Nilai minimumnya adalah -2.0. Nilai maksimumnya adalah hingga, tetapi tidak termasuk, 2.0.

Minimum value: -2.0 Maximum value: 2.0

echo

(opsional)

Jika benar, perintah akan diulang dalam teks yang dihasilkan.

Optional

seed

Jika seed ditetapkan ke nilai tertentu, model akan berusaha sebaik mungkin untuk memberikan respons yang sama untuk permintaan berulang. Output deterministik tidak dijamin. Selain itu, mengubah setelan model atau parameter, seperti suhu, dapat menyebabkan variasi respons meskipun Anda menggunakan nilai seed yang sama. Secara default, nilai seed acak akan digunakan.

Ini adalah fitur pratinjau.

Optional

Permintaan sampel

REST

Untuk menguji prompt teks menggunakan Vertex AI API, kirim permintaan POST ke endpoint model penayang.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • Untuk kolom lainnya, lihat tabel Isi permintaan.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan menerima respons JSON yang mirip seperti contoh respons.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

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}")
# Example response:
# Response from Model:
#     return s[::-1]

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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();
  }
}

Isi respons

{
  "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
    }
  ]
}
Elemen respons Deskripsi
blocked Flag boolean yang terkait dengan atribut keamanan yang menunjukkan apakah input atau output model diblokir. Jika blocked adalah true, kolom errors dalam respons akan berisi satu atau beberapa kode error. Jika blocked adalah false, respons tidak akan menyertakan kolom errors.
categories Daftar nama kategori atribut keamanan yang terkait dengan konten yang dihasilkan. Urutan skor dalam parameter scores sesuai dengan urutan kategori. Misalnya, skor pertama dalam parameter scores menunjukkan kemungkinan respons melanggar kategori pertama dalam daftar categories.
citationMetadata Elemen yang berisi array kutipan.
citations Array kutipan. Setiap kutipan memuat metadatanya.
content Hasil yang dihasilkan oleh model menggunakan teks input.
endIndex Bilangan bulat yang menentukan tempat kutipan diakhiri dalam content.
errors Array kode error. Kolom respons errors hanya disertakan dalam respons jika kolom blocked dalam respons adalah true. Untuk informasi tentang cara memahami kode error, lihat Error keselamatan.
license Lisensi yang terkait dengan kutipan.
publicationDate Tanggal penerbitan kutipan. Formatnya yang valid adalah YYYY, YYYY-MM, dan YYYY-MM-DD.
score Nilai float yang kurang dari nol. Makin tinggi nilai untuk score, makin besar keyakinan model terhadap responsnya.
startIndex Bilangan bulat yang menentukan tempat kutipan dimulai dalam content.
title Judul sumber kutipan. Contoh judul sumber mungkin dari artikel berita atau buku.
url URL sumber kutipan. Contoh sumber URL dapat berupa situs berita atau repositori GitHub.
tokens Token sampel.
tokenLogProbs Probabilitas log token sampel.
topLogProbs Token kandidat yang paling mungkin dan probabilitas lognya di setiap langkah.
logprobs Hasil parameter `logprobs`. Pemetaan 1-1 ke `candidates`.

Contoh respons

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

Streaming respons dari model AI Generatif

Parameternya sama untuk permintaan streaming dan non-streaming ke API.

Untuk melihat contoh permintaan dan respons kode menggunakan REST API, lihat Contoh menggunakan REST API streaming.

Untuk melihat contoh permintaan dan respons kode menggunakan Vertex AI SDK untuk Python, lihat Contoh penggunaan Vertex AI SDK untuk Python untuk streaming.