소개
OpenAI, ChatGPT, Bing 채팅, DALL-E, Copliot 등 언론 매체나 세미나 등을 통해 이미 많이 들어 알고 있거나 이미 사용하고 계시죠? 저도 Bing AI, Github Copliot, Microsoft Designer 등을 이용해서 Visual Studio에서 개발할 때, Azure Data Studio를 이용해서 SQL를 사용할 때, 텍스트 기반으로 이미지를 생성할 때, 그 외 투자나 기타 정보가 필요할 때 등등 다양하게 활용하고 있습니다.
최근에 Azure OpenAI 서비스와 Azure OpenAI Studio 설명을 들었는데요, 이 때 만들어진 AI 모델을 Application에서 사용할 수 있도록 API로 지원한다는 것을 알게 되었습니다. Python, C#, JSON, Curl 등 다양한 언어를 지원했습니다(AI 모델에 따라 조금씩 다름).
저의 경우 학교 공부를 할 때 Python, R 등을 사용하지만 업무나 솔루션 개발은 C#과 Winform 기반이기 때문에 C#으로 API를 호출해서 서비스를 구현할 수 있다는 것에 관심이 생겼습니다. 해서 간단히 테스트해 본 내용을 살짝 소개하겠습니다.
참고 자료
Azure OpenAI 서비스
위 링크의 MS 문서를 참조하면 다음과 같습니다.
Azure OpenAI Service는 GPT-4, GPT-4 Turbo with Vision, GPT-3.5-Turbo 및 Embeddings 모델 시리즈를 포함하여 OpenAI의 강력한 언어 모델에 대한 REST API 액세스를 제공합니다. 또한 새로운 GPT-4 및 GPT-3.5-Turbo 모델 시리즈는 이제 일반 공급에 도달했습니다. 이러한 모델은 콘텐츠 생성, 요약, 이미지 이해, 의미 체계 검색 및 자연어를 포함하여 특정 작업에 쉽게 적응할 수 있습니다. 사용자는 REST API, Python SDK 또는 Azure OpenAI Studio의 웹 기반 인터페이스를 통해 서비스에 액세스할 수 있습니다.소개가 조금 어려우신분들을 위해 아주 쉽게 설명하면, 위에 나오는 AI 모델들을 Azure 클라우드상에 생성하고 배포해서 .NET, Python 등에서 호출함으로써 나만의 AI 서비스를 개발하고 서비스할 수 있다는 것입니다. 이를 위해서 두 가지 작업과 작업 환경을 제공합니다.
- AI 서비스를 위한 Azure 리소스 (Azure Portal에서 작업)
- AI 모델을 탐색하고 필요 시 미세조정 및 배포, 테스트 (Azure OpenAI Studio)
Azure OpenAI 리소스 구성
Azure Portal에서 Azure 리소스 그룹과 Azure OpenAI 리소스를 생성합니다. 아래는 제가 만들어 본 예입니다.
[그림-1] Azure 리소스 그룹(“AzureOpenAI”) 생성한 결과
[그림-2] 해당 리소스 그룹 내에 Azure OpenAI 서비스(“…-AI-1”)생성
Azure OpenAI Studio 사용
[그림-3] Azure OpenAI Studion 웹 초기 화면 (https://oai.azure.com/)
아래 Windows 응용 프로그램 테스트에서 GPT에 질문한 결과를 옮기면 다음과 같습니다.
Azure OpenAI Studio는 Microsoft Azure에서 호스팅되는 OpenAI의 통합 개발 환경입니다. 이 스튜디오를 사용하면 AI 모델을 만들고 훈련시키는 데 필요한 도구와 리소스를 제공받을 수 있습니다. 또한, Azure의 다양한 서비스와 통합하여 AI 솔루션을 구축할 수 있습니다. Azure OpenAI Studio를 사용하면 머신 러닝, 딥 러닝 및 강화 학습을 위한 환경을 구축하고, 모델을 배포하고 관리할 수 있습니다.Azure OpenAI에서 만든 리소스를 기반으로 원하는 AI 모델을 선택/구성하고 이를 배포해서 C#, Python 같은 응용 프로그램에서 사용할 수 있습니다. 간단한 테스트를 할 수도 있고 원하는 언어로 테스트하는 코드를 참조할 수도 있습니다.
[그림-4] 원하는 AI 모델 선택, 조정, 필요 시 사용자 지정 모델 생성 그리고 나서 배포
[그림-5] 배포한 모델 관리 (배포명: “dev-gpt-35-turbo”)
[그림-6] 플레이그라운드 탭에서 모델별로 테스트, 옵션 조정, 개발 언어별 코드 참조, 필요 시 Azure Web App에 배포
[그림-7] 샘플 코드 (주석. C#의 경우 ChatMessage 클래스가 적용되지 않았습니다, 아마도 제가 테스트한 버전 차이로 변경된 것으로 추측됩니다-미 확인)
API 호출 시 필요한 엔드포인트와 키 정보도 참조 가능(혹은 Azure Portal에서도 확인 가능)
C#과 WinForm으로 Chat용 API 테스트
[그림-8] 아래와 같은 간단한 WinForm를 하나 만들고 위에서 배포한 AI 모델(GPT)에 텍스트로 질문(Prompt)을 보내고 응답(Completion)을 받아서 텍스트로 출력하는 기능을 구현해 보고 싶었습니다. 위 코드나 혹은 인터넷, 유투브 등에 공개된 코드를 참조해서 구현해 봤습니다.
[그림-9] 배포한 AI 모델을 API로 호출하기위해 Azure.AI.OpenAI NuGet 패키지 추가해야 합니다.
[그림-10] TextBox에 질문(Prompt)를 입력하고 Button을 클릭하면 응답을 비동기로 받아서 결과를 RichTextBox에 출력하고자 만든 테스트 코드
중요 참조. 코드 작성 단계에서 ChatMessage 클래스가 인식되지 않아 오류가 발생했습니다, 아마도 제가 추가한 NuGet 패키지가 버전이 다르고 OpenAPI에 변경이 있어서가 아닐까 추측했습니다. 어떻게든 동작하도록 구현해 보고 싶었기에 눈대중? 통밥? 으로 ChatRequestSystemMessage(), ChatRequestUserMessage() 등을 대신 적용해 봤습니다. 맞게 한 것인지 잘 한건지는 모르겠습니다^^; 그저 가능한지 동작하는지 등만 관심 있었기에 그 정도 수준에서 만족했습니다.
그러니 혹여 위 코드를 보신다면 그저 참조만 하시길 바랍니다, Bing에게 코드 구현을 부탁해보면 조금 더 간단한 코드를 만들어 주기도 합니다. 실제 정확한 코드를 아시는 분이 계시면 알려주셔도 감사하겠습니다 😀
Azure AI Studio (preview 상태)
실제로 Azure AI에 관심있는, 특히 개발자 분들이라면 Azure AI Studio도 살펴보시기 바랍니다.
정리
AI에 변화와 그 속도도 놀랍고 충격적입니다. 앞으로 또 얼마나 많은 놀랄 일들이 벌어질지 그것이 미래의 내 삶의 어떤 영향을 미칠지 걱정과 고민도 됩니다. 얼마전 개발쪽 지인들과 저녁자리에서 이 주제로 몇 시간을 토론하기도 했습니다. 우리가 할 수 있는 건 그저 열심히 대비하고 대응하는 것일까요?
모두 건강하세요.
김정선 드림