검색
검색
공개 노트 검색
회원가입로그인

Azure OpenAI Studio 활용하여 개발하기

요즘 ChatGPT API 기반에서 Azure 기반으로 전환 중이다. 사용하면서 진행했던 사항을 간단하게 기록으로 남긴다.

Azure OpenAI Studio 승인 받기

azure에서 Azure OpenAI를 사용하기 위해서는 현재 승인을 받아야 한다. Request Access to Azure OpenAI Service

개인 이메일이 아닌 회사 이메일이 있어야 한다. 예를 들면 glevel@tilnote.io 로 도메인으로 되어 있는 이메일이 있어야 한다.

어떤 분야에서 사용할지 잘 체크해야 한다.

승인은 꽤 빠른 편이다.

Azure OpenAI

azure에서 Azure OpenAI 리소스를 생성한다.

Azure OpenAI Studio 활용하여 개발하기 image 1

참고로 사용한 만큼만 지불하는 시스템이다.

그 다음 세부 사항을 작성한다.

Azure OpenAI Studio 활용하여 개발하기 image 2

구독이나 리소스 그룹이 없으면 만들면 된다. 중요한건 지역 부분이다. 각 지역마다 할당량이라는 것이 존재한다. 해당 지역에 할당량이 없으면 차후 진행할 배포 만들기에서 진행을 할 수 가 없다.

참고로 현재 한국(Korean central)의 경우에는 gpt-3.5나 gpt-4 등의 할당량이 아예 없다.

가능한 할당량은 이 문서에서 확인하자. Azure OpenAI Service models - Azure OpenAI

배포 생성하기

리소스가 생성되면 model deplyments 에서 배포 관리를 눌러 Azure OpenIAI Studio로 넘어가 배포를 생성해야 한다.

Azure OpenAI Studio 활용하여 개발하기 image 3

AI studio로 넘어간 후 배포에서 새 배포 만들기를 눌러 생성하면 된다.

화면 캡처 2024-02-29 130906

그런데 여기에서 모델 선택을 할 때 할당량이 없다고 나오는 경우가 많다. 이건 해당 지역에 리소스가 없는거다.

Azure OpenAI Studio 활용하여 개발하기 image 5

일본 지역의 경우 gpt-3.5 리소스만 있고 gpt-4 할당량이 없다.

왼쪽 사이드바에 있는 할당량 탭을 누르면 각 영역에 있는 할당량들을 확인할 수 있다.

화면 캡처 2024-02-29 131158

일본 지역에는 GPT-35-Turbo 할당량만 있는 것을 확인할 수 있다.

이것 때문에 엄청 고생했다. 한국은 아예 지원되는 할당량이 없고 일본은 gpt-3.5만 가능하고 미국 동서부는 할당량은 있는데 정작 배포를 누르면 안되는 문제가 있었다. 아마 GPU에 따른 할당량을 제한하는 것 같다. 서비스를 할거면 지원을 늘렸으면 좋겠다.

그래서 나는 오스트레일리아(AUSTRALIAEAST)나 미국 남부 중앙(SOUTHCENTRALUS) 중 고민하다 오스트래일리아로 선택했다. 그 후 미국 동부로 최종 결정했다.

사용하기

다시 azure openai 서비스(portal.azure.com)로 돌아와서 키 및 엔드포인트에서 서비스에 필요한 값들을 얻어서 사용할 수 있다. 참고로 키가 2개가 있는데 나중에 rotaion해서 사용할 때 중단이 없게 2개 다 작동이 가능하다.

사용 방법은 공식 문서를 활용하자.

빠른 시작 - Azure OpenAI 서비스에서 GPT-35-Turbo 및 GPT-4 사용 시작 - Azure OpenAI Service

자바스크립트의 경우 @azure/openai 패키지를 사용한다. stream이 필요한 경우 다음과 같이 구현하면 된다.

const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");

async function chatSend(modelId, messages) {
  const endpoint = process.env["AZURE_OPENAI_ENDPOINT"];
  const azureApiKey = process.env["AZURE_OPENAI_API_KEY"];
  const client = new OpenAIClient(
    endpoint,
    new AzureKeyCredential(azureApiKey)
  );
  const deploymentId = modelId; // 'gpt3', 'gpt4' (id = 별칭)
  const response = await client.streamChatCompletions(deploymentId, messages);
  return response;
}

module.exports = { chatSend };

여기에서 가장 중요한 것은 deplymentId 부분이다. 이건 gpt-35-turbo와 같은 모델명을 적는게 아니라 azure ai studio에서 배포할 때 적었던 '배포 이름'을 의미한다.

화면 캡처 2024-02-29 132215

만약 이 배포 이름을 잘못 쓰면 다음과 같은 에러를 만나게 된다.

code: 'DeploymentNotFound',

message: 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'

생각

마이크로소프트 지원이 있어서 앞으로 이걸로 틸노트에 6개월 간 AI 기능을 무료로 제공하려고 한다. 고마워요 마소...ㅋ

트러블 슈팅

모델 배포 관리에서 새 배포 만들기나, 배포 편집 및 삭제가 안되는 경우가 있다. 이 경우 구독에서 액세스 제어(IAM)에서 Cognitive Services OpenAI Contributor 권한을 주면 된다. 이러면 배포를 수정 못하는 문제를 해결할 수 있다.

Azure AI Developer 권한을 주면 새로 나온 Azure AI studio에서 새로운 workspace를 만들 수 있는 권한이 생기는거 같다.

속도가 느린거 같아서 분당 토큰 속도 제한을 최대치로 해서 했다.

화면 캡처 2024-03-24 023505

지금은 새로나온 azure ai studio로 하는게 제일 괜찮은거 같다. Azure AI Studio

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 832
heart
T
페이지 기반 대답
AI Chat