Es gibt drei Arten von Textbasismodellen für generative KI in Vertex AI. Es gibt ein Textgenerierungsmodell, ein Text-Chatmodell und ein Text-Einbettungsmodell. Textchat- und Textgenerierungsmodelle generieren Text. Das Texteinbettungsmodell generiert eine Vektordarstellung von Text, mit der Sie ähnliche Elemente finden.
Die Namen der Modelle zur Textgenerierung lauten
text-bison
undtext-unicorn
und ihre Klasse im Vertex AI SDK istTextGenerationModel
.Der Name des Textchat-Modells lautet
chat-bison
und die Klasse im Vertex AI SDK istChatModel
.Der Name des Texteinbettungsmodells lautet
textembedding-gecko
und die Klasse im Vertex AI SDK istTextEmbeddingModel
.
In den folgenden Themen wird gezeigt, wie Sie mit diesen Klassen und dem Vertex AI SDK einige gängige Aufgaben der generativen KI ausführen.
Texte erstellen
Sie können die Vertex AI SDK-Klasse TextGenerationModel
verwenden, um Text zu generieren. Mit dem folgenden Beispielcode wird eine stabile Version geladen
Version des text-bison
-Modells, dann wird die Methode predict
verwendet, um ein Schema zu generieren. Dieses Codebeispiel enthält keine optionalen Parameter. Die Vorhersagemethode gibt ein TextGenerationResponse
-Objekt mit den Attributen text
, safety_attributes
und is_blocked
zurück. Weitere Informationen zum Generieren von Text mit dem Basismodell für die Textgenerierung finden Sie unter Texteingabeaufforderungen entwerfen und Texteingabeaufforderungen testen.
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,
))
Der Anfang der Ausgabe kann in etwa so aussehen:
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
...
Textchat generieren
Der folgende Beispielcode zeigt, wie Sie eine stabile Version des Textchat-Basismodells laden. Als Nächstes wird die Methode start_chat
verwendet, um einen Chat zu starten, und die Methode send_message
, um Chatnachrichten zu senden. Weitere Informationen zur Verwendung des Basismodells für Textchat finden Sie unter Chateingabeaufforderungen entwerfen und Chateingabeaufforderungen testen.
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?"))
Die entsprechende Ausgabe send_message
sieht etwa so aus:
Yes, your favorite movies are based on a book series.
Mit der folgenden send_message
wird eine zweite Nachricht mit derselben Text-Chatsitzung gesendet.
print(chat.send_message("When where these books published?"))
Die Ausgabe für diese zweite send_message
könnte in etwa so aussehen:
The books were published in 1954 and 1955.
Antworten des Textmodells streamen
Möglicherweise möchten Sie Antworten von den Textgenerierungs- und Textchat-Modellen erhalten, sobald diese generiert werden. Das Empfangen von Antworten von einem Basismodell, während die Antworten generiert werden, wird als Streaming bezeichnet. Wenn die Textgenerierung und die Antworten des Text-Chatmodells gestreamt werden, werden die Ausgabe-Tokens bereits bei der Generierung gesendet. Verwenden Sie zum Streamen von Textgenerierung die Methode TextGenerationModel.predict_streaming
. Verwenden Sie zum Streamen von Textchat die Methode ChatModel.predict_streaming
. Weitere Informationen zum Streamen von Basismodellen finden Sie unter Antworten von generativen KI-Modellen streamen.
Streamtext-Generierung
Der folgende Beispielcode streamt Text, der bis 100 zählt, während der Text generiert wird. Außerdem wird die Zeit vor und die Zeit nach dem Aufruf von from_pretrained
ausgegeben, um zu zeigen, wie lange es dauert, die Ausgabe zu streamen.
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())
Die Antwort sieht etwa so aus:
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
Textchat streamen
Der folgende Beispielcode streamt einen Text-Chat, der auf die Anfrage eines Chatbots reagiert, bis 99 zu zählen. Das Codebeispiel gibt auch die Zeit davor und die Zeit nach dem Aufruf von from_pretrained
aus, um zu zeigen, wie lange es dauert, die Ausgabe zu streamen.
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())
Die Antwort sieht etwa so aus:
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
Texteinbettungen generieren
Sie können die Klasse TextEmbeddingModel
im Vertex AI SDK verwenden, um Texteinbettungen zu berechnen. Im folgenden Python-Codebeispiel wird die Methode TextEmbeddingModel.get_embeddings
verwendet, um Texteinbettungen mithilfe eines Prompts zu generieren. In diesem Beispiel gibt get_embeddings
ein embeddings
-Objekt zurück, das ein embedding
-Objekt enthält. Im Beispiel werden die Länge und Statistiken des zurückgegebenen Vektors ausgegeben. Weitere Informationen zu Texteinbettungen und dem Basismodell für Texteinbettungen finden Sie unter Texteinbettungen abrufen.
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)
Die Ausgabe sieht in etwa so aus:
768
TextEmbeddingStatistics(token_count=4.0, truncated=False)
Nächste Schritte
- Codemodellklassen und Vertex AI SDK verwenden.
- Vertex AI SDK mit der Abstimmung von Basismodellen verwenden.
- Informationen zu Vertex AI SDK-Klassen, die nicht mit der generativen KI zusammenhängen.