Menggunakan model kode dan Vertex AI SDK

Terdapat tiga model dasar kode AI generatif di dalam Vertex AI. Ketiga model tersebut adalah model pembuatan kode, model penyelesaian kode, dan model chat kode.

  • Nama model pembuatan kode adalah code-bison, dan class-nya di dalam Vertex AI SDK adalah CodeGenerationModel.

  • Nama model penyelesaian kode adalah code-gecko, dan class-nya di dalam Vertex AI SDK adalah class yang sama dengan yang digunakan untuk pembuatan kode, CodeGenerationModel.

  • Nama model chat kode adalah codechat-bison, dan class-nya di dalam Vertex AI SDK adalah CodeChatModel.

Topik berikut ini menunjukkan Anda cara untuk menggunakan class ini, dan Vertex AI SDK untuk melakukan beberapa tugas AI generatif terkait kode yang umum.

Membuat fungsi kode

Kasus penggunaan untuk model dasar pembuatan kode termasuk mendesain pengujian unit, menulis fungsi, dan membuat class. Untuk membuat kode, gunakan class yang sama dengan yang digunakan untuk membuat penyelesaian kode, yaitu CodeGenerationModel. Untuk membuat solusi yang membuat kode, teruskan nama versi model pembuatan kodenya, seperti code-bison@002. Untuk mempelajari model dasar pembuatan kode lebih lanjut, lihat Membuat perintah untuk membuat kode, dan Menguji perintah pembuatan kode.

Contoh kode berikut ini menulis fungsi yang mendeteksi apakah tahun adalah tahun kabisat.

from vertexai.language_models import CodeGenerationModel

code_generation_model = CodeGenerationModel.from_pretrained("code-bison@001")
print(code_generation_model.predict(
    prefix="Write a function that checks if a year is a leap year.",
    # The following parameters are optional:
    # max_output_tokens=1024,
    # temperature=0.0,
))

Outputnya mungkin mirip dengan contoh berikut ini:

I will write a function to check if a year is a leap year.

**The function will take a year as input and return a boolean value**.

**The function will first check if the year is divisible by 4.**

**If the year is divisible by 4, the function will then check if the year is divisible by 100.**

**If the year is divisible by 100, the function will then check if the year is divisible by 400.**

**If the year is divisible by 400, the function will ...

Membuat kode untuk penyelesaian kode

Penyelesaian kode adalah kode yang diprediksi akan menyelesaikan kode seperti yang dituliskan. Prediksi yang dihasilkan akan muncul pada saat Anda mengetik. Jika Anda ingin membuat solusi penyelesaian kode, gunakan class CodeGenerationModel. Class ini sama dengan yang digunakan untuk membuat kode, seperti fungsi. Untuk membuat kode yang diprediksi akan menyelesaikan kode seperti yang dituliskan, panggil CodeGenerationModel.from_pretrained dan teruskan nama versi model penyelesaian kode tersebut. Untuk mempelajari model dasar penyelesaian kode lebih lanjut, lihat Membuat perintah untuk penyelesaian kode, dan Menguji perintah penyelesaian kode.

Kode contoh berikut menggunakan versi stabil terbaru dari code-gecko untuk menampilkan kode yang diprediksi akan menyelesaikan awal fungsi yang membalikkan suatu string.

from vertexai.language_models import CodeGenerationModel

code_completion_model = CodeGenerationModel.from_pretrained("code-gecko@001")
print(code_completion_model.predict(
    prefix="def reverse_string(s):",
    # Optional:
    suffix="    return reversed_str",
    max_output_tokens=64,
    # temperature=0.0,
))

Outputnya mirip dengan hal berikut ini:

"""
:type s: str
:rtype: str
"""
reversed_str = ""
for i in range(len(s) - 1, -1, -1):
    reversed_str += s[i]

Membuat chat kode

Anda mungkin ingin membuat sesi chat yang dikhususkan untuk membahas kode. Misalnya, Anda mungkin ingin menggunakan chat untuk mempelajari bahasa, atau sintaksis coding. Untuk membuat sesi chat kode dengan Vertex AI SDK, gunakan metode start_chat pada instance CodeChatModel. Tidak seperti chat teks chat kode yang dibuat dengan Vertex AI SDK tidak menggunakan class InputOutputTextPair. Untuk mempelajari model dasar chat kode lebih lanjut, lihat Membuat prompt untuk chat kode dan Menguji prompt chat kode.

Kode berikut ini menggunakan chat kode untuk meminta informasi tentang cara menulis fungsi.

from vertexai.language_models import CodeChatModel

code_chat_model = CodeChatModel.from_pretrained("codechat-bison@002")
code_chat = code_chat_model.start_chat()
print(code_chat.send_message("Please help write a function that prints its own source code"))

Outputnya mungkin mirip dengan contoh berikut ini:

Sure, here is a function that prints its own source code:

```
def print_source_code():
  """Prints the source code of this function."""

  # Get the source code of this function.
  source_code = inspect.getsource(print_source_code)

  # Print the source code.
  print(source_code)

```

This function works by first getting the source code of the function using the
`inspect.getsource()` function. Then, it prints the source code to the console.

Respons model kode streaming

Anda mungkin ingin menerima respons dari pembuatan kode dan model chat kode saat model tersebut dibuat. Menerima respons dari model dasar pada saat respons dihasilkan dikenal sebagai streaming. Saat pembuatan kode dan respons model chat kode di-streaming, token output akan dikirim saat kode dan model dibuat. Untuk melakukan streaming pembuatan kode, gunakan metode CodeGenerationModel.predict_streaming. Untuk melakukan streaming chat kode, gunakan metode CodeChatModel.predict_streaming. Untuk mempelajari streaming dari model dasar lebih lanjut, baca Melakukan streaming respons dari model AI Generatif.

Pembuatan kode streaming

Kode contoh berikut ini melakukan streaming kode yang memeriksa apakah suatu tahun adalah tahun kabisat. Kode ini juga menghasilkan waktu sebelum dan waktu setelah from_pretrained dipanggil untuk menunjukkan waktu yang diperlukan untuk melakukan streaming output.

import datetime
from vertexai.language_models import CodeGenerationModel

code_generation_model = CodeGenerationModel.from_pretrained("code-bison@001")

print("Start: ", datetime.datetime.now())
for response in code_generation_model.predict_streaming(
    prefix="Write a function that checks if a year is a leap year.",
    # Optional:
    # max_output_tokens=1024,
    # temperature=0.0,
):
    print(datetime.datetime.now(), "|", response)
print("End: ", datetime.datetime.now())

Responsnya mungkin mirip dengan contoh berikut ini:

Start:  YYYY-MM-DD 06:31:45.759810
YYYY-MM-DD 06:31:46.536173 | To check if a year is a leap year, we can use the following step
YYYY-MM-DD 06:31:46.611856 | s:

1. **Check if the year is divisible by 4.** If it is not, th
YYYY-MM-DD 06:31:46.667330 | en it is not a leap year.
2. **Check if the year is divisible by
YYYY-MM-DD 06:31:46.805714 |  100.** If it is, then it is not a leap year unless it is also d
YYYY-MM-DD 06:31:46.940925 | ivisible by 400.
3. **If the year is divisible by 4 but not by 1
YYYY-MM-DD 06:31:47.033529 | 00, then it is a leap year.**

For example, the year 2020 is div
YYYY-MM-DD 06:31:47.110856 | isible by
End:  YYYY-MM-DD 06:31:47.112951

Chat kode streaming

Kode contoh berikut ini melakukan streaming chat kode yang merespons permintaan chatbot untuk menulis fungsi yang mencetak kode sumbernya sendiri. Contoh kode tersebut juga menampilkan waktu sebelum dan waktu setelah from_pretrained dipanggil untuk menunjukkan waktu yang diperlukan untuk melakukan streaming output.

import datetime
from vertexai.language_models import CodeChatModel

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

print("Start: ", datetime.datetime.now())
for response in code_chat.send_message_streaming(
    message="Please help write a function that prints its own source code",
    # Optional:
    max_output_tokens=1024,
):
    #print(datetime.datetime.now(), "|", response)
    print(">>>")
    print(response)
print("End: ", datetime.datetime.now())

Responsnya mungkin mirip dengan contoh berikut ini:

```
Start:  YYYY-MM-DD 06:32:10.733415
>>>
```python
def print_source(func):
    with open(func.__file__, '
>>>
r') as f:
        source = f.read()
    print(source)
```
End:  YYYY-MM-DD 06:32:11.764794
```

Langkah selanjutnya