빠르고 꼬운말 '만들어 줘' 에서 빠르고 꼬운 말을 만들어 낸 뒤,
빠르고 꼬운 채찍피티 4세 고용하기 에서 자동화를 해낸 지상 최강의 개발자 쥬니니
그 정도면 나도 하겠다 라는 느낌이 들도록 하기 위해
이번엔 잼민이를 찾아가 빠르고 꼬운 말을 시키게 되는데...
빠빰!
Google Cloud쪽은 준비물이 굉장히 간소합니다.
IAM
> 서비스 계정
에서 새로 만들기를 합니다.
엑세스 권한은 Vertex AI 서비스 에이전트
를 넣으면 됩니다.
생성 후 해당 서비스 계정에 들어가서 키
탭으로 가서
키 추가
버튼을 누릅니다.
위와 같은 팝업이 뜰텐데, 그대로 만들기를 누르면
.json
파일이 다운로드 될겁니다.
나중에 코드에 나올
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "your-service-account-key-file"
부분에 다운로드 된 파일의 이름을 넣어주면 됩니다.
저번에도 왜 LangChain 쓰는지 설명을 했는데,
이번에도 대략 설명을 하자면
https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini?hl=ko#sample_requests
Google Cloud의 Gemini API 공식 가이드를 살펴보면 아래와 같습니다.
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession
# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.0-pro")
chat = model.start_chat()
def get_chat_response(chat: ChatSession, prompt: str) -> str:
text_response = []
responses = chat.send_message(prompt, stream=True)
for chunk in responses:
text_response.append(chunk.text)
return "".join(text_response)
prompt = "Hello."
print(get_chat_response(chat, prompt))
prompt = "What are all the colors in a rainbow?"
print(get_chat_response(chat, prompt))
prompt = "Why does it appear when it rains?"
print(get_chat_response(chat, prompt))
지난번에 Azure의 OpenAI쪽은 response.choices[0].message.content
이런 식으로 대답을 받았는데,
여기서는 get_chat_response(chat, prompt)
이렇게 대답을 받습니다.
Gemini 쓰다가 다른 플랫폼의 모델로 갈아타려 하면
대략 환상의 똥꼬쇼 한 번 해야되는겁니다.
이런 짓 안하려면 단일화된 인터페이스의 LangChain 을 쓰는게
정신건강에 이로울겁니다.
https://github.com/juunini/fast-and-hoxy
위 레포지토리에 들어가면 어떻게 썼는지 샘플을 보실 수 있습니다.
Gemini든, ChatGPT든 코드의 변경 없이
똑같은 인터페이스를 타고 들어가게 해놨는데
이래서 LangChain을 쓰는구나 라고 생각하실 수 있을겁니다.
좀 더 간소하게 설명드리자면 코드는 아래와 같이 작성하면 끝납니다.
import os
from langchain_google_vertexai import ChatVertexAI
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "your-service-account-key-file"
model = ChatVertexAI(model_name="gemini-pro")
print(model.invoke("hi").content)
사과문 = model.invoke("대충 빠르고 꼬운 말 만드는 프롬프트").content
print(model.invoke(f"대충 {사과문} 잘 작성됐는지 확인해달라는 프롬프트").content)
참 쉽죠?
추가로, 한창 핫한 Gemini 1.5 Pro를 쓰고싶다면
model_name
에 gemini-1.5-pro-preview-0409
를 입력하시면 됩니다.
쉬워요 한 번 해보세요 ㅋㅋㅋ
ㅋㅋㅋ 컨셉도 너무 재밌네요
항상 응원해요 쥬니니님