Menggunakan model teks dan Vertex AI SDK

Ada tiga jenis model dasar teks AI generatif di Vertex AI. Terdapat model pembuatan teks, model chat teks, dan model embedding teks. Chat teks dan model pembuatan teks menghasilkan teks. Model embedding teks menghasilkan representasi vektor dari teks yang Anda gunakan untuk menemukan item serupa.

  • Nama model pembuatan teks adalah text-bison dan text-unicorn, serta class-nya di Vertex AI SDK adalah TextGenerationModel.

  • Nama model chat teks adalah chat-bison dan class-nya di Vertex AI SDK adalah ChatModel.

  • Nama model embedding teks adalah textembedding-gecko dan class-nya di Vertex AI SDK adalah TextEmbeddingModel.

Topik berikut menunjukkan cara menggunakan class ini dan Vertex AI SDK untuk melakukan beberapa tugas AI generatif umum.

Membuat teks

Anda dapat menggunakan class TextGenerationModel Vertex AI SDK untuk menghasilkan teks. Kode contoh berikut memuat versi stabil

versi model text-bison, lalu menggunakan metode predict untuk membuat resep. Contoh kode ini tidak menyertakan parameter opsional. Metode prediksi menampilkan objek TextGenerationResponse yang memiliki atribut text, safety_attributes, dan is_blocked. Untuk mempelajari lebih lanjut cara membuat teks dengan model dasar pembuatan teks, lihat Mendesain prompt teks dan Menguji prompt teks.

from vertexai.language_models import TextGenerationModel

model = TextGenerationModel.from_pretrained("text-bison@002")

print(model.predict(
    "What is the best recipe for banana bread? Recipe:",
    # The following are optional parameters:
    #max_output_tokens=128,
    #temperature=0,
    #top_p=1,
    #top_k=5,
))

Awal output mungkin mirip dengan yang berikut ini:

Ingredients:

* 3 very ripe bananas, mashed
* 1/2 cup (1 stick) unsalted butter, at room temperature
* 3/4 cup granulated sugar
* 3/4 cup packed light brown sugar
* 2 large eggs
* 2 teaspoons vanilla extract
* 1 1/2 cups all-purpose flour
* 1 teaspoon baking soda
* 1/2 teaspoon salt
* 1/2 cup chopped walnuts or pecans (optional)

Instructions:

1. Preheat oven to 350 degrees F
   ...

Membuat chat teks

Kode contoh berikut menunjukkan cara memuat versi stabil dari model dasar chat teks. Selanjutnya, metode tersebut menggunakan metode start_chat untuk memulai chat, dan metode send_message untuk mengirim pesan chat. Untuk mempelajari lebih lanjut cara menggunakan model dasar chat teks, lihat Mendesain prompt chat dan Menguji prompt chat.

from vertexai.language_models import ChatModel, InputOutputTextPair

chat_model = ChatModel.from_pretrained("chat-bison@002")

chat = chat_model.start_chat(
    # Optional parameters, such ase top_p, top_k, temperature, max_output_tokens,
    # aren't specified in this example
    context="My name is Ned. You are my personal assistant. My favorite movies are Lord of the Rings and Hobbit.",
    examples=[
        InputOutputTextPair(
            input_text="Who do you work for?",
            output_text="I work for Ned.",
        ),
        InputOutputTextPair(
            input_text="What do I like?",
            output_text="Ned likes watching movies.",
        ),
    ],
)

print(chat.send_message("Are my favorite movies based on a book series?"))

Output send_message mungkin mirip dengan berikut ini:

Yes, your favorite movies are based on a book series.

send_message berikut mengirim pesan kedua menggunakan sesi chat teks yang sama.

print(chat.send_message("When where these books published?"))

Output untuk send_message kedua ini mungkin mirip dengan yang berikut ini:

The books were published in 1954 and 1955.

Men-streaming respons model teks

Anda mungkin ingin menerima respons dari pembuatan teks dan model chat teks saat model tersebut dibuat. Menerima respons dari model dasar saat respons dihasilkan dikenal sebagai streaming. Saat respons pembuatan teks dan model chat teks di-streaming, token output akan dikirim saat dibuat. Untuk melakukan streaming pembuatan teks, gunakan metode TextGenerationModel.predict_streaming. Untuk melakukan streaming chat teks, gunakan metode ChatModel.predict_streaming. Untuk mempelajari lebih lanjut streaming dari model dasar, lihat Men-streaming respons dari model AI Generatif.

Pembuatan teks streaming

Kode contoh berikut men-streaming teks yang dihitung hingga 100 saat teks dibuat. 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 TextGenerationModel

text_generation_model = TextGenerationModel.from_pretrained("text-bison@002")

print("Start: ", datetime.datetime.now())
for response in text_generation_model.predict_streaming(
    prompt="Count to 100",
    max_output_tokens=1000,
    # The following parameters are optional
    #temperature=0,
    #top_p=1,
    #top_k=5,
):
    print(datetime.datetime.now(), "|", response)
print("End: ", datetime.datetime.now())

Responsnya mungkin mirip dengan berikut ini:

Start:  YYYY-MM-DD 06:31:07.825599
YYYY-MM-DD 06:31:08.933534 | 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 1
YYYY-MM-DD 06:31:09.335374 | 9. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 3
YYYY-MM-DD 06:31:09.738079 | 5. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 5
YYYY-MM-DD 06:31:10.142726 | 1. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 6
YYYY-MM-DD 06:31:10.535045 | 7. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 8
YYYY-MM-DD 06:31:10.937847 | 3. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 9
YYYY-MM-DD 06:31:10.996782 | 9. 100.
End:  YYYY-MM-DD 06:31:10.998498

Men-streaming chat teks

Kode contoh berikut men-streaming chat teks sebagai respons terhadap permintaan chatbot untuk menghitung hingga 99. Contoh kode juga menghasilkan waktu sebelum dan waktu setelah from_pretrained dipanggil untuk menunjukkan waktu yang diperlukan untuk men-streaming output.

import datetime
from vertexai.language_models import ChatModel

chat_model = ChatModel.from_pretrained("chat-bison@002")
chat = chat_model.start_chat()

print("Start: ", datetime.datetime.now())
for response in chat.send_message_streaming(
    message="Hello. How are you today? Please count to 99",
    max_output_tokens=1024,
):
    print(datetime.datetime.now(), "|", response)
print("End: ", datetime.datetime.now())

Responsnya mungkin mirip dengan berikut ini:

Start:  YYYY-MM-DD 06:31:19.808735
YYYY-MM-DD 06:31:20.957465 | Hello, I am doing well today. Thank you for asking. 1, 2, 3, 4,
YYYY-MM-DD 06:31:21.312577 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2
YYYY-MM-DD 06:31:DD.709306 | 2, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 3
YYYY-MM-DD 06:31:22.132016 | 8, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 5
YYYY-MM-DD 06:31:22.517211 | 4, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 7
YYYY-MM-DD 06:31:22.911003 | 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 8
YYYY-MM-DD 06:31:23.257773 | 6, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99.
End:  YYYY-MM-DD 06:31:23.265454

Membuat embedding teks

Anda dapat menggunakan class TextEmbeddingModel di Vertex AI SDK untuk menghitung embedding teks. Contoh kode Python berikut menggunakan metode TextEmbeddingModel.get_embeddings untuk membuat embedding teks menggunakan prompt. Dalam contoh ini, get_embeddings menampilkan satu objek embeddings yang berisi satu objek embedding. Contoh ini mencetak panjang dan statistik vektor yang ditampilkan. Untuk mempelajari lebih lanjut embedding teks dan model dasar embedding teks, baca artikel Mendapatkan embedding teks.

from vertexai.language_models import TextEmbeddingModel

model = TextEmbeddingModel.from_pretrained("textembedding_gecko_current")
embeddings = model.get_embeddings(["What is life?"])
for embedding in embeddings:
    vector = embedding.values
    print(len(vector))
    print(embedding.statistics)

Outputnya mirip dengan hal berikut ini:

768
TextEmbeddingStatistics(token_count=4.0, truncated=False)

Langkah selanjutnya