빠르고 꼬운 잼민이(Gemini) 만들기

16
post-thumbnail
post-custom-banner

지난 이야기

대충 드래곤볼 지난 이야기 할 때 나오는 브금

빠르고 꼬운말 '만들어 줘' 에서 빠르고 꼬운 말을 만들어 낸 뒤,
빠르고 꼬운 채찍피티 4세 고용하기 에서 자동화를 해낸 지상 최강의 개발자 쥬니니

그 정도면 나도 하겠다 라는 느낌이 들도록 하기 위해
이번엔 잼민이를 찾아가 빠르고 꼬운 말을 시키게 되는데...
빠빰!

준비물

Google Cloud쪽은 준비물이 굉장히 간소합니다.

IAM > 서비스 계정 에서 새로 만들기를 합니다.
엑세스 권한은 Vertex AI 서비스 에이전트 를 넣으면 됩니다.

생성 후 해당 서비스 계정에 들어가서 탭으로 가서
키 추가 버튼을 누릅니다.

위와 같은 팝업이 뜰텐데, 그대로 만들기를 누르면
.json 파일이 다운로드 될겁니다.

나중에 코드에 나올
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "your-service-account-key-file"
부분에 다운로드 된 파일의 이름을 넣어주면 됩니다.

이번에도 LangChain

저번에도 왜 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_namegemini-1.5-pro-preview-0409 를 입력하시면 됩니다.

쉬워요 한 번 해보세요 ㅋㅋㅋ

profile
지상 최강의 개발자 쥬니니
post-custom-banner

6개의 댓글

comment-user-thumbnail
2024년 4월 22일

ㅋㅋㅋ 컨셉도 너무 재밌네요
항상 응원해요 쥬니니님

1개의 답글
comment-user-thumbnail
2024년 4월 22일

글 재미있게 잘 읽었습니다!!

1개의 답글
comment-user-thumbnail
2024년 4월 24일

재밌네요 ㅋㅋ 안그래도 llm 한번 써보고 싶었는데 꼭 따라해 보겠습니다 👍

1개의 답글