Chat kode

Codey for Code Chat (codechat-bison) adalah nama model yang mendukung chat kode. Ini adalah model dasar yang mendukung percakapan multi-giliran yang khusus untuk kode. Model ini memungkinkan developer melakukan chat dengan chatbot guna mendapatkan bantuan untuk berbagai pertanyaan terkait kode. API chat kode digunakan untuk berinteraksi dengan Codey for Code Chat model transformer.

Codey untuk Code Chat ideal untuk tugas kode yang diselesaikan dengan interaksi dua arah sehingga Anda dapat terlibat dalam percakapan yang berkelanjutan. Untuk tugas kode yang memerlukan satu interaksi, gunakan API untuk penyelesaian kode atau API untuk pembuatan kode.

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

Kasus penggunaan

Beberapa kasus penggunaan umum untuk chat kode adalah:

  • Mendapatkan bantuan tentang kode: Mendapatkan bantuan terkait pertanyaan yang Anda miliki tentang kode, seperti pertanyaan tentang API, sintaksis dalam bahasa pemrograman yang didukung, atau versi library mana yang diperlukan untuk kode yang Anda tulis.

  • Proses debug: Mendapatkan bantuan terkait kode proses debug yang tidak dikompilasi atau yang berisi bug.

  • Dokumentasi: Mendapatkan bantuan untuk memahami kode agar Anda dapat mendokumentasikannya dengan akurat.

  • Pelajari kode: Mendapatkan bantuan untuk mempelajari kode yang belum Anda pahami.

Permintaan HTTP

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

Versi model

Untuk menggunakan versi model terbaru, tentukan nama model tanpa nomor versi, misalnya codechat-bison.

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

Tabel berikut berisi versi model stabil yang tersedia:

model codechat-bison Tanggal rilis Tanggal penghentian
codechat-bison@002 6 Desember 2023 9 Oktober 2024

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

Isi permintaan

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

Berikut adalah parameter untuk model chat kode bernama codechat-bison. Model codechat-bison adalah salah satu model di Codey. Anda dapat menggunakan parameter ini guna membantu mengoptimalkan perintah untuk percakapan chatbot tentang kode. Untuk informasi selengkapnya, lihat Ringkasan model kode dan Membuat perintah untuk membahas kode.

Parameter Deskripsi Nilai yang dapat diterima

context

Teks yang harus disediakan ke model terlebih dahulu untuk melandasi respons. Teks

messages

(wajib)

Histori percakapan yang diberikan kepada model dalam formulir penulis alternatif terstruktur. Pesan muncul dalam urutan kronologis: terlama dulu, terbaru terakhir. Jika histori pesan menyebabkan input melebihi panjang maksimum, pesan yang paling lama akan dihapus hingga seluruh perintah berada dalam batas yang diizinkan.
List[Structured Message]
    "author": "user",
     "content": "user message"

temperature

(opsional)

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

(opsional)

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 lama yang dihasilkan.

1–2048

Default: 1024

candidateCount

(opsional)

Jumlah variasi respons yang akan ditampilkan. Untuk setiap permintaan, Anda ditagih 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

1-4

Default: 1

logprobs

(opsional)

Menampilkan logprobs token kandidat yang paling mungkin dengan probabilitas lognya di setiap langkah pembuatan. Token yang dipilih dan probabilitas lognya di setiap langkah akan selalu ditampilkan. Token yang dipilih mungkin termasuk atau tidak termasuk dalam logprobs teratas para kandidat.

0-5

frequencyPenalty

(opsional)

Nilai positif menghukum token yang berulang kali muncul di teks yang dihasilkan, sehingga mengurangi probabilitas konten berulang. Nilai yang dapat diterima adalah -2.02.0.

Minimum value: -2.0 Maximum value: 2.0

presencePenalty

(opsional)

Nilai positif akan menghukum token yang sudah muncul di teks yang dihasilkan, sehingga meningkatkan kemungkinan menghasilkan konten yang lebih beragam. Nilai yang dapat diterima adalah -2.02.0.

Minimum value: -2.0 Maximum value: 2.0

seed

Ketika seed ditetapkan ke nilai tertentu, model akan berupaya sebaik mungkin untuk menyediakan respons yang sama untuk permintaan berulang. Output determenistik tidak dijamin. Selain itu, mengubah setelan model atau parameter, seperti suhu, dapat menyebabkan variasi dalam respons walaupun Anda menggunakan nilai awal yang sama. Menurut secara default, nilai awal acak akan digunakan.

Fitur ini adalah 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/codechat-bison:predict

    Isi JSON permintaan:

    {
      "instances": [
        {
          "messages": [
            {
              "author": "AUTHOR",
              "content": "CONTENT"
            }
          ]
        }
      ],
      "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/codechat-bison: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/codechat-bison: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 informasi selengkapnya, lihat Dokumentasi referensi Python API.

from vertexai.language_models import CodeChatModel

# TODO developer - override these parameters as needed:
parameters = {
    "temperature": 0.5,  # 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

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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

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

Isi respons

{
  "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
    }
  ]
}
Elemen respons Deskripsi
author string yang menunjukkan penulis respons chat.
blocked Tanda boolean yang terkait dengan atribut keamanan yang menunjukkan apakah input model atau output diblokir. Jika blocked adalah true, maka errors dalam respons berisi satu atau beberapa kode {i>error<i}. Jika blocked adalah false, maka responsnya tidak 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.
content Konten respons chat.
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 memahami kode error, Error keamanan.
license Lisensi yang terkait dengan kutipan.
publicationDate Tanggal penerbitan kutipan. Formatnya yang valid adalah YYYY, YYYY-MM, dan YYYY-MM-DD.
safetyAttributes Array atribut keamanan. Array berisi satu atribut keamanan untuk setiap kandidat respons.
score Nilai float yang kurang dari nol. Makin tinggi nilai untuk score, makin besar keyakinan model terhadap responsnya.
scores Array nilai float. Setiap nilai merupakan skor yang menunjukkan kemungkinan bahwa respons melanggar kategori keamanan yang diperiksa. Makin rendah nilainya, makin aman model mempertimbangkan respons. Urutan skor dalam array sesuai dengan urutan atribut keamanan dalam elemen respons categories.
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 yang diambil sampelnya.
tokenLogProbs Token yang diambil sampelnya probabilitas log.
topLogProbs Token kandidat yang paling mungkin dan probabilitas lognya di setiap langkah.
logprobs Hasil parameter `logprobs`. Pemetaan 1-1 terhadap `kandidat`.

Contoh respons

{
  "predictions": [
    {
      "citationMetadata": [
        {
          "citations": []
        }
      ],
      "candidates": [
        {
          "author": "AUTHOR",
          "content": "RESPONSE"
        }
      ],
      "safetyAttributes": {
        "categories": [],
        "blocked": false,
        "scores": []
      },
      "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.