In Vertex AI esistono tre tipi di modelli di base testuali per l'IA generativa. C'è un modello di generazione di testo, un modello di chat di testo e un modello di incorporamento di testo. I modelli di chat di testo e di generazione di testi generano testo. Il modello di incorporamento del testo genera una rappresentazione vettoriale del testo che utilizzi per trovare elementi simili.
I nomi dei modelli di generazione del testo sono
text-bison
etext-unicorn
e la loro classe nell'SDK Vertex AI èTextGenerationModel
.Il nome del modello di chat di testo è
chat-bison
e la sua classe nell'SDK Vertex AI èChatModel
.Il nome del modello di incorporamento del testo è
textembedding-gecko
e la sua classe nell'SDK Vertex AI èTextEmbeddingModel
.
I seguenti argomenti mostrano come utilizzare queste classi e l'SDK Vertex AI per eseguire alcune attività comuni di IA generativa.
Genera testo
Puoi utilizzare la classe TextGenerationModel
dell'SDK Vertex AI per generare testo. Il seguente codice campione carica una versione stabile
versione del modello text-bison
, quindi utilizza il metodo predict
per generare una
formula. Questo esempio di codice non include parametri facoltativi. Il metodo di previsione restituisce un oggetto TextGenerationResponse
con attributi text
, safety_attributes
e is_blocked
. Per
scoprire di più sulla generazione di testo con il modello di base per la generazione di testo, consulta
Progettare prompt di testo e
Testare prompt di testo.
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,
))
L'inizio dell'output potrebbe essere simile al seguente:
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
...
Genera chat di testo
Il seguente codice campione mostra come caricare una versione stabile del modello di base della chat di testo. Successivamente, utilizza il metodo start_chat
per avviare una chat e il metodo send_message
per inviare messaggi di chat. Per scoprire
di più sull'utilizzo del modello di base della chat di testo, consulta
Progettare prompt di chat e
Testare prompt di 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?"))
L'output di send_message
potrebbe essere simile al seguente:
Yes, your favorite movies are based on a book series.
Il seguente elemento send_message
invia un secondo messaggio utilizzando la stessa sessione di chat di testo.
print(chat.send_message("When where these books published?"))
L'output per questo secondo send_message
potrebbe essere simile al seguente:
The books were published in 1954 and 1955.
Risposte del modello di testo in streaming
Potresti voler ricevere risposte dai modelli di generazione del testo e di chat di testo man mano che vengono generati. La ricezione di risposte da un modello di base
quando vengono generate le risposte è nota come flusso di dati. Quando la generazione di testo e le risposte del modello di chat di testo vengono trasmesse in streaming, i token di output vengono inviati quando vengono generati. Per generare lo streaming del testo, usa il
metodo TextGenerationModel.predict_streaming
. Per trasmettere una chat di testo in streaming, utilizza il
metodo ChatModel.predict_streaming
. Per scoprire di più sull'inserimento di flussi di dati dai modelli di base, consulta Trasmettere le risposte in streaming dai modelli di IA generativa.
Generazione di testo in streaming
Il codice campione riportato di seguito trasmette il testo che viene conteggiato fino a 100 quando il testo viene generato. Restituisce come output anche l'ora precedente e quella successiva alla chiamata di from_pretrained
per dimostrare quanto tempo occorre per trasmettere l'output in streaming.
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())
La risposta potrebbe essere simile alla seguente:
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
Chat di testo in streaming
Il seguente codice campione trasmette in streaming una chat di testo in risposta alla richiesta di un chatbot per conteggiare fino a 99. L'esempio di codice restituisce anche l'ora precedente e quella successiva alla chiamata di from_pretrained
per dimostrare il tempo necessario per il flusso dell'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())
La risposta potrebbe essere simile alla seguente:
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
Genera incorporamenti di testo
Puoi usare la classe TextEmbeddingModel
nell'SDK Vertex AI per calcolare gli incorporamenti di testo. Il seguente esempio di codice Python utilizza il metodo TextEmbeddingModel.get_embeddings
per generare incorporamenti di testo utilizzando un prompt. In questo esempio, get_embeddings
restituisce un oggetto embeddings
che
contiene un oggetto embedding
. L'esempio mostra la lunghezza e le statistiche
del vettore restituito. Per scoprire di più sugli incorporamenti di testo e sul modello di base per l'incorporamento del testo, consulta Ottenere gli incorporamenti di testo.
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)
L'output è simile al seguente:
768
TextEmbeddingStatistics(token_count=4.0, truncated=False)
Passaggi successivi
- Scopri di più su come utilizzare le classi dei modelli di codice e l'SDK Vertex AI.
- Scopri come utilizzare l'SDK Vertex AI per ottimizzare i modelli di base.
- Scopri di più sulle classi dell'SDK Vertex AI non correlate all'IA generativa.