[Azure OpenAI] 빠르고 꼬운 채찍피티 4세 고용하기

3
post-thumbnail

현재 Azure OpenAI는 신청 후 사용이 가능하므로
따라하시기 전에 미리 신청을 해두시길 바랍니다.

지난 이야기

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

지난 글이었던 빠르고 꼬운말 '만들어 줘' 에서
채찍피티님을 이용해 빠르게 꼬운말을 사과문으로 바꾸는 방법을 소개하고
다음 글에서 자동화 하는 방법을 알려주겠다고 한 지상 최강의 개발자 쥬니니,

그리하여 채찍피티 4세를 이용해 자동으로 꼬운 말을 사과문으로 만들게 되는데...
빠빰!!

Azure Portal에서 할 작업

리전 선택

Standard deployment model availability 를 보면
어떤 모델을 쓰기 위해서는 어느 리전을 써야하는지 파악할 수 있습니다.
2024년 4월 기준, 나는 한국인이니까 한국 리전 할꺼야 하면 ㅈ되는거

그리고 좀 재밌는(?)게, 위의 링크에서 휠 조금만 내려보면

이런게 나오는데, 숫자가 높다고 버전이 높은게 아닙니다?
마치 1106이 제일 높을 것 같은데
0125가 제일 높아요?
이거 미리보기 라고 뭐 미리보기 떼면 다 바꾸려고 그러나

그래서, 채찍피티 4세를 고용해야 하니
australiaeast 리전으로 하겠습니다.

OpenAI 인스턴스 만들기

Azure Portal 들어가서 상단 검색창에 openai 치면 나오는거 클릭해서 들어가시면 됩니다.
리전은 아까 얘기했던 대로 Australia East 선택하시면 되구요.
딱히 리전 말고 뭐 선택할게 없어서 그대로 만드시면 됩니다.

다 만들고나면 이렇게 나올텐데, 빨간 네모 쳐둔
Azure OpenAI Studio로 이동 을 클릭합니다.

들어가서 빨간삭 네모 쳐둔 배포 클릭하세요.

들어가서 새 배포 만들기 누르시면 이런 창이 뜨는데, gpt-4 선택하고
버전 선택한 뒤에
배포 이름은 하고싶은걸로 지으시면 됩니다.

배포 이름 이 중요한데, 나중에 뭐 넣어야 되는지 햇갈리는게 하나 있는데
그거를 위해서 저는 배포 이름을 fast-and-hoxy 라고 지어놓겠습니다.

다 하셨으면, 다시 Azure Portal로 돌아가서, 키 및 엔드포인트 쪽에서

  • 키(1, 2 둘중에 아무거나 하나)
  • 위치/지역
  • 엔드포인트

이 세가지를 저장해두세요.

코딩

https://github.com/juunini/fast-and-hoxy

AI나 LLM쪽은 안타깝게도 대부분 파이썬입니다.

LangChain

LLM은 LangChain이 인터페이스화가 잘 되어있는데
뭐, 각자 공식 라이브러리 배포하는데 굳이 저걸 써야하냐 라면

https://learn.microsoft.com/ko-kr/azure/ai-services/openai/how-to/chatgpt?tabs=python-new

위 링크를 보면 response.choices[0].message.content 이런 식으로
LLM 답변을 뽑아오는걸 볼 수 있는데,
만약 ollama나 Claude3이나 Gemini 같은걸로
모델을 한번 바꿀라 치면 아주 그냥 대환장 파티 열리는겁니다.

LLM으로 뭐 하다보면 모델을 바꿔서 시도해보는걸 종종 하게 됩니다.

https://python.langchain.com/docs/integrations/chat/azure_chat_openai/

그래서 여기서는 LangChain 인터페이스로 구현된 Azure OpenAI를 씁니다.
위 링크 가서 보면 거의 대부분의 LLM 모델이 LangChain 인터페이스로 구현된걸 보실 수 있습니다.

LangChain 인터페이스로 구현된건
model.invoke(message).content 로 LLM의 대답을 확인할 수 있게 되어 있습니다.

langchain_openai

import os
from langchain_openai import AzureChatOpenAI

os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_API_KEY"] = "api key"
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://your-instance-name.openai.azure.com/"

model = AzureChatOpenAI(
    azure_deployment="your-deployment-name",
)

print(model.invoke("hi").content)

OpenAI 인스턴스 만들기 에서 제가 나중에 햇갈리는게 있으니
fast-and-hoxy 라고 썼다는걸 azure_deployment에 넣습니다.

다들 처음 하면 저 부분에다가 모델명 넣어야 하나 해서
gpt-4, gpt-4-0613 같은거 넣어보고 왜 안되지 하거든요
나도 그랬음

그럼 프롬프트를 넣어보자

사실 위에꺼 된 상황에선 이제 뭐 없습니다.
그냥 빠르고 꼬운말 '만들어 줘'에서 썼던 프롬프트 그대로 들고와서 붙여넣으면 되거든요

사과문 = model.invoke("대충 빠르고 꼬운 말 만드는 프롬프트").content
print(model.invoke(f"대충 {사과문} 잘 작성됐는지 확인해달라는 프롬프트").content)

이러면 끝납니다.
정말 별거 없는데
직접 해보시면 '별거'가 되는 부분은 따로 등장합니다.

관측에 따라(?) 달라지는 리턴 값

LLM한테 질문을 할 때 마다 답변의 내용이 다릅니다.
기존의 코딩은 항상 정해진 리턴 값을 받았는데

LLM은 temperature를 낮추거나 이런저런 수치를 바꿔도
딱 이거다 하는 한 가지 정확한 답을 리턴하는 지점을 찾기는 굉장히 어렵습니다.

직접 다른 무언가를 만들어보려고 시도해보면
공감하게 되실겁니다.
LLM이 딱 저런 표정으로 대답하는 느낌이 오는데

애초에 '질문' 을 어떻게 잘 만드냐가 관건이 되죠.
그래서 프롬프트 엔지니어링 이라는 노가다 개념이 생겨난겁니다.

그러니 뭐... 해보시려는 분들은 화이팅입니다! ㅎㅎ
나름 해보시면 재밌을거에요
고생 많이들 해보세요

profile
지상 최강의 개발자 쥬니니

2개의 댓글

comment-user-thumbnail
2024년 4월 22일

최고 멋있다아

답글 달기
comment-user-thumbnail
2024년 5월 2일

great

답글 달기