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 adalahCodeGenerationModel
.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 adalahCodeChatModel
.
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
- Mempelajari cara untuk menggunakan class model teks dan Vertex AI SDK.
- Mempelajari cara untuk menggunakan Vertex AI SDK untuk menyesuaikan model dasar.
- Mempelajari class Vertex AI SDK yang tidak terkait dengan AI generatif.