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 리소스를 생성한다.
참고로 사용한 만큼만 지불하는 시스템이다.
그 다음 세부 사항을 작성한다.
구독이나 리소스 그룹이 없으면 만들면 된다. 중요한건 지역 부분이다. 각 지역마다 할당량이라는 것이 존재한다. 해당 지역에 할당량이 없으면 차후 진행할 배포 만들기에서 진행을 할 수 가 없다.
참고로 현재 한국(Korean central)의 경우에는 gpt-3.5나 gpt-4 등의 할당량이 아예 없다.
가능한 할당량은 이 문서에서 확인하자. Azure OpenAI Service models - Azure OpenAI
배포 생성하기
리소스가 생성되면 model deplyments 에서 배포 관리를 눌러 Azure OpenIAI Studio로 넘어가 배포를 생성해야 한다.
AI studio로 넘어간 후 배포에서 새 배포 만들기를 눌러 생성하면 된다.
그런데 여기에서 모델 선택을 할 때 할당량이 없다고 나오는 경우가 많다. 이건 해당 지역에 리소스가 없는거다.
일본 지역의 경우 gpt-3.5 리소스만 있고 gpt-4 할당량이 없다.
왼쪽 사이드바에 있는 할당량 탭을 누르면 각 영역에 있는 할당량들을 확인할 수 있다.
일본 지역에는 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에서 배포할 때 적었던 '배포 이름'을 의미한다.
만약 이 배포 이름을 잘못 쓰면 다음과 같은 에러를 만나게 된다.
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를 만들 수 있는 권한이 생기는거 같다.
속도가 느린거 같아서 분당 토큰 속도 제한을 최대치로 해서 했다.
지금은 새로나온 azure ai studio로 하는게 제일 괜찮은거 같다. Azure AI Studio