Vertex AI에는 3가지 유형의 생성형 AI 텍스트 기반 모델이 있습니다. 텍스트 생성 모델, 텍스트 채팅 모델, 텍스트 임베딩 모델이 있습니다. 텍스트 채팅 및 텍스트 생성 모델은 텍스트를 생성합니다. 텍스트 임베딩 모델은 유사한 항목을 찾는 데 사용하는 텍스트의 벡터 표현을 생성합니다.
텍스트 생성 모델 이름은
text-bison
및text-unicorn
이고 Vertex AI SDK의 클래스는TextGenerationModel
입니다.텍스트 채팅 모델 이름은
chat-bison
이고 Vertex AI SDK의 클래스는ChatModel
입니다.텍스트 임베딩 모델 이름은
textembedding-gecko
이고 Vertex AI SDK의 클래스는TextEmbeddingModel
입니다.
다음 주제에서는 이러한 클래스와 Vertex AI SDK를 사용하여 일반적인 생성형 AI 태스크를 수행하는 방법을 보여줍니다.
텍스트 생성
Vertex AI SDK TextGenerationModel
클래스를 사용하여 텍스트를 생성할 수 있습니다. 다음 샘플 코드는 안정적인 버전을 로드합니다.
text-bison
모델의 버전을 로드한 후 predict
메서드를 사용하여 레시피를 생성합니다. 이 코드 샘플에는 선택적 매개변수가 포함되지 않습니다. 예측 메서드는 text
, safety_attributes
, is_blocked
속성이 있는 TextGenerationResponse
객체를 반환합니다. 텍스트 생성 기반 모델을 사용하여 텍스트를 생성하는 방법에 대한 자세한 내용은 텍스트 프롬프트 설계 및 텍스트 프롬프트 테스트를 참조하세요.
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,
))
출력의 시작 부분은 다음과 비슷합니다.
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
...
텍스트 채팅 생성
다음 샘플 코드에서는 텍스트 채팅 기반 모델의 안정적인 버전 버전을 로드하는 방법을 보여줍니다. 그런 다음 start_chat
메서드를 사용하여 채팅을 시작하고 send_message
메서드를 사용하여 채팅 메시지를 보냅니다. 텍스트 채팅 기반 모델 사용에 대한 자세한 내용은 채팅 프롬프트 설계 및 채팅 프롬프트 테스트를 참조하세요.
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?"))
send_message
출력은 다음과 비슷합니다.
Yes, your favorite movies are based on a book series.
다음 send_message
은 동일한 텍스트 채팅 세션을 사용하여 두 번째 메시지를 보냅니다.
print(chat.send_message("When where these books published?"))
이 두 번째 send_message
의 출력은 다음과 비슷합니다.
The books were published in 1954 and 1955.
텍스트 모델 응답 스트리밍
텍스트 생성 모델과 텍스트 채팅 모델이 생성될 때 응답을 받을 수 있습니다. 응답이 생성될 때 기반 모델에서 응답을 받는 것을 스트리밍이라고 합니다. 텍스트 생성 및 텍스트 채팅 모델 응답이 스트리밍되면 출력 토큰이 생성될 때 전송됩니다. 텍스트 생성을 스트리밍하려면 TextGenerationModel.predict_streaming
메서드를 사용합니다. 텍스트 채팅을 스트리밍하려면 ChatModel.predict_streaming
메서드를 사용합니다. 기반 모델의 스트리밍에 대한 자세한 내용은 생성형 AI 모델의 응답 스트리밍을 참조하세요.
텍스트 생성 스트리밍
다음 샘플 코드는 텍스트가 생성될 때 100으로 계산되는 텍스트를 스트리밍합니다. 또한 출력을 스트리밍하는 데 걸리는 시간을 보여주기 위해 from_pretrained
호출 전후의 시간을 출력합니다.
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())
응답은 다음과 비슷합니다.
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
텍스트 채팅 스트리밍
다음 샘플 코드는 챗봇 요청에 대한 응답으로 텍스트 채팅을 스트리밍하여 99를 계산합니다. 또한 코드 샘플은 출력을 스트리밍하는 데 걸리는 시간을 보여주기 위해 from_pretrained
호출 전후의 시간을 출력합니다.
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())
응답은 다음과 비슷합니다.
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
텍스트 임베딩 생성
Vertex AI SDK의 TextEmbeddingModel
클래스를 사용하여 텍스트 임베딩을 계산할 수 있습니다. 다음 Python 코드 샘플에서는 TextEmbeddingModel.get_embeddings
메서드를 사용하여 프롬프트를 통해 텍스트 임베딩을 생성합니다. 이 예시에서 get_embeddings
는 embedding
객체 하나를 포함하는 embeddings
객체 하나를 반환합니다. 이 예시에서는 반환된 벡터의 길이와 통계를 출력합니다. 텍스트 임베딩 및 텍스트 임베딩 기반 모델에 대한 자세한 내용은 텍스트 임베딩 가져오기를 참조하세요.
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)
출력은 다음과 비슷합니다.
768
TextEmbeddingStatistics(token_count=4.0, truncated=False)
다음 단계
- 코드 모델 클래스와 Vertex AI SDK를 사용하는 방법 알아보기
- Vertex AI SDK를 사용하여 기반 모델을 조정하는 방법 알아보기
- 생성형 AI와 관련이 없는 Vertex AI SDK 클래스 알아보기