Existem três tipos de modelos de fundação de IA generativa na Vertex AI. Há um modelo de geração de texto, um modelo de chat de texto e um modelo de embedding de texto. Modelos de chat e geração de texto geram texto. O modelo de embedding de texto gera uma representação vetorial de um texto que você usa para encontrar itens semelhantes.
Os nomes dos modelos de geração de texto são
text-bison
etext-unicorn
, e a classe deles no SDK da Vertex AI éTextGenerationModel
.O nome do modelo de chat de texto é
chat-bison
, e a classe dele no SDK da Vertex AI éChatModel
.O nome do modelo de embedding de texto é
textembedding-gecko
, e a classe dele no SDK da Vertex AI éTextEmbeddingModel
.
Os tópicos a seguir mostram como usar essas classes e o SDK da Vertex AI para realizar algumas tarefas comuns de IA generativa.
Gerar texto
É possível usar a classe TextGenerationModel
do SDK da Vertex AI para
gerar texto. O exemplo de código a seguir carrega uma
versão estável
do modelo text-bison
e usa o método predict
para gerar um roteiro. Esse exemplo de código não inclui parâmetros opcionais. O método de previsão retorna um objeto TextGenerationResponse
que tem os atributos text
, safety_attributes
e is_blocked
. Para
saber mais sobre como gerar texto com o modelo de fundação de geração de texto, consulte
Criar comandos de texto e
Testar comandos de texto.
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,
))
O início da saída pode ser semelhante à seguinte:
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
...
Gerar chat de texto
O exemplo de código a seguir mostra como carregar uma
versão estável
do modelo de fundação de chat de texto. Em seguida, ele usa o método start_chat
para iniciar um chat e o método send_message
para enviar mensagens. Para saber
mais sobre como usar o modelo de fundação de chat de texto, consulte
Criar comandos de chat e
Testar comandos de 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?"))
A saída send_message
será mais ou menos assim:
Yes, your favorite movies are based on a book series.
O send_message
a seguir envia uma segunda mensagem usando a mesma sessão de chat
de texto.
print(chat.send_message("When where these books published?"))
A saída para esse segundo send_message
pode ser semelhante a esta:
The books were published in 1954 and 1955.
Fazer streaming de respostas do modelo de texto
Talvez você queira receber respostas dos modelos de geração de texto e chat
de texto à medida que são gerados. O recebimento de respostas de um modelo de fundação à medida que
elas são geradas é conhecido como streaming. Durante o streaming da geração de texto e das respostas dos modelos de chat, os tokens de saída são enviados no momento em que são gerados. Para fazer streaming da geração de texto, use o
método TextGenerationModel.predict_streaming
. Para fazer streaming um chat de texto, use o
método ChatModel.predict_streaming
. Para saber mais sobre streaming de modelos de fundação, consulte Fazer streaming de respostas de modelos de IA generativa.
Fazer streaming de geração de texto
O exemplo de código a seguir faz streaming de texto que conta até 100 à medida que o texto é
gerado. Ele também retorna o tempo anterior e posterior à chamada de from_pretrained
, para demonstrar quanto tempo leva para fazer o streaming da saída.
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())
A resposta pode ser semelhante a esta:
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
Fazer streaming de chat de texto
O exemplo de código a seguir faz streaming de um chat de texto que é resposta a uma solicitação do bot de chat para contar até 99. O exemplo de código também exibe o tempo anterior e posterior à chamada de from_pretrained
, para demonstrar quanto tempo leva para
fazer o streaming da saída.
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())
O resultado será mais ou menos assim:
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
Gerar embeddings de texto
É possível usar a classe TextEmbeddingModel
no SDK da Vertex AI para
calcular embeddings de texto. O exemplo de código Python a seguir usa o método TextEmbeddingModel.get_embeddings
para gerar embeddings de texto usando um prompt. Neste exemplo, get_embeddings
retorna um objeto embeddings
que
contém um objeto embedding
. O exemplo imprime o comprimento e as estatísticas do vetor retornado. Para saber mais sobre embeddings de texto e o modelo de base correspondente, consulte Receber embeddings de texto.
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)
A resposta será semelhante a esta:
768
TextEmbeddingStatistics(token_count=4.0, truncated=False)
A seguir
- Saiba como usar classes de modelo de código e o SDK da Vertex AI.
- Saiba como usar o SDK da Vertex AI para ajustar modelos de fundação.
- Saiba mais sobre classes do SDK da Vertex AI não relacionadas a IA generativa.