애플리케이션에 생성형 AI를 구축해 넣을 때 발생하는 대표적인 문제는 프롬프트 관리를 위한 표준 방법이 없다는 점이다. AI를 각자의 코드에 넣는 팀마다 서로 다른 접근 방법을 사용하고 서로 다른 방식으로 데이터를 관리하는 경우가 많다. 다른 팀과 프로젝트의 사례에서 배우지 못한 채, 계속해서 이미 있는 것을 다시 만들고 있다.
애플리케이션마다 새로운 AI 상호작용 모델을 구축하고 서로 다른 방법으로 프롬프트를 저장, 사용, 업데이트하는 것은 시간 낭비다. AI 개발자 자원은 한정적이며 숙련된 개발자는 여러 프로젝트를 오가며 작업한다. 각 애플리케이션이 어떻게 작동하고 프롬프트를 어떻게 구성해 테스트해야 하는지 일일이 기억하는 방식은 효과적이지 않다.
다양한 AI 모델을 사용할 경우 복잡성이 가중된다. 한 팀에서 오픈 AI의 GPT, 페이스북 라마(Llama), 앤트로픽의 클로드(Claude)와 같은 LLM 또는 허깅 페이스의 오픈소스 모델을 기반으로 한 맞춤형 툴을 사용할 수 있다. 또는 마이크로소프트 파이(Phi)와 같은 로컬 소규모 언어 모델을 사용하는 애플리케이션을 구축할 수도 있다.
‘프롬프티’란?
지금 필요한 것은 컨텍스트 전환 없이 사용할 수 있도록 개발 툴 내에서 LLM을 실험할 수 있게 해주는, 모델에 관계없이 LLM을 다루는 방식이다. 마이크로소프트가 후원하는 프롬프티(Prompty)가 바로 이를 위한 프로젝트다. 프롬프티는 비주얼 스튜디오 코드 확장 프로그램으로, LLM 및 다른 생성형 AI 툴을 사용한 작업과 관련된 많은 문제를 해결하는 데 도움이 된다.
프롬프티는 깃허브에서 찾을 수 있으며 활발한 오픈소스 프로젝트다. 코드를 기여하거나 개발팀의 요청 사항을 전달할 수 있다. 프롬프티는 비주얼 스튜디오 코드 마켓플레이스에서 제공되며 비주얼 스튜디오 코드 파일 시스템 및 코드 편집기와 통합된다. 문서는 프로젝트 웹사이트에서 볼 수 있다. 아직 문서 내용이 풍부한 편은 아니지만 시작하는 데는 충분하다.
프롬프티는 매우 직관적인 툴이다. 이해하기 쉬운 형식은 YAML과 같은 익숙한 구성 언어를 본떴다. 프롬프트로 하는 일이 생성형 AI를 구성하는 것임을 감안하면 합리적인 접근 방식이다. 프롬프트는 모델이 응답을 제공하기 위해 검색하는 시맨틱 공간을 정의하는 방법이라고 생각하면 된다.
프롬프티의 중심은 생성형 AI와의 상호작용을 설명하는 도메인별 언어다. 이 언어는 서식 및 린팅, 오류 하이라이팅, 코드 완성을 위한 언어 서버와 같은 기능을 활용하는 비주얼 스튜디오 코드 확장에 내장된다. 파이썬과 C# 출력을 모두 지원하며 이후 버전에서는 자바스크립트와 타입스크립트도 지원할 예정이다.
빌드(Build) 2024 세션 콘텐츠를 아직 자세히 살펴보지 않았다면 프롬프티를 AI 개발 플랫폼의 일부로 사용하는 방법에 관한 흥미로운 세션을 놓치지 말고 볼 것을 추천한다.
프롬프티를 사용한 프롬프트 구축
코드에서 프롬프티를 사용하는 방식은 다른 라이브러리와 다를 바 없다. 비주얼 스튜디오 코드 확장과 함께, 적절한 패키지가 포함된 애플리케이션 프레임워크를 만들어야 한다. LLM 엔드포인트에 액세스할 수 있는 애플리케이션 골격을 갖추면 프롬프티 확장을 사용해서 코드에 프롬프트 에셋을 추가할 수 있다. 비주얼 스튜디오 코드 탐색기 내에서 애플리케이션의 루트 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 프롬프티를 생성한다. 이렇게 하면 폴더에 .prompty 파일이 추가된다. 파일 이름은 필요에 따라 변경할 수 있다.
프롬프트 에셋 만들기를 시작하려면 .prompty 파일을 연다. 이 파일은 두 개의 섹션이 포함된 서식 있는 문서다. 첫 번째 섹션은 구축 중인 애플리케이션에 대한 자세한 설명으로, 사용 중인 모델과 애플리케이션에서 사용해야 하는 매개변수에 대한 세부 사항, 그리고 모델의 기반이 되는 정보의 샘플이 포함된다. 두 번째 섹션에는 예상하는 출력의 유형을 정의하기 위한 기본 시스템 프롬프트가 포함된다. 그다음에는 자연어 출력을 위해 LLM을 사용하는 사용자나 애플리케이션이 제공하는 컨텍스트, 정보가 있다.
일반적으로 프롬프티를 사용해서 프롬프트를 테스트하고 비주얼 스튜디오 코드의 출력 창에 출력을 표시할 수 있다. 이를 통해 예를 들어 비공식적인 채팅 형태의 출력에서 더 공식적인 출력으로 전환하는 등 LLM 출력이 사용할 동작을 구체화할 수 있다. 인증 토큰을 포함해서 적절한 환경 변수를 제공해야 한다. 항상 그렇듯이 이런 변수는 별도의 파일에 보관해서 우발적으로 노출되는 일이 없도록 해야 한다.
LM 오케스트레이터와 프롬프티 함께 사용하기
프롬프트를 작성하고 테스트한 다음에는 프롬프트 에셋 데이터를 내보내서 애저 AI 스튜디오의 프롬프트 플로우(Prompt Flow), 독립형 AI 기반 에이전트를 구축하기 위한 시맨틱 커널(Semantic Kernel)을 포함한 원하는 LLM 오케스트레이터와 함께 사용할 수 있다. 이렇게 하면 근거 데이터를 추가하고 프롬프트를 사용해 외부 데이터 소스에 대한 자연어 인터페이스를 생성함으로써 부정확한 출력의 위험을 낮출 수 있다.
결과 함수는 프롬프티 프롬프트 설명을 사용해서 비동기 연산으로 래핑할 수 있는 LLM과의 상호작용을 구축한다. 이렇게 해서 얻는 결과는 사용자 입력을 조합하고 LLM 출력을 표시하는 것 이외의 코드는 거의 없는 AI 애플리케이션이다. 무거운 작업의 대부분은 시맨틱 커널과 같은 툴이 처리하며, 프롬프트 정의를 애플리케이션에서 분리함으로써 .prompty 에셋 파일을 사용해 애플리케이션 외부에서 LLM 상호작용을 업데이트하는 것이 가능하다.
애플리케이션에 프롬프티 에셋을 포함하려면 오케스트레이터를 선택하고 애플리케이션에 프롬프트를 포함하기 위한 코드를 자동으로 생성하기만 하면 된다. 현재 지원되는 오케스트레이터는 제한적이지만 오픈소스 프로젝트이므로 추가 코드 생성기를 제출해서 대안 애플리케이션 개발 툴체인을 지원할 수 있다.
마지막 부분이 특히 중요하다. 프롬프티는 현재 클라우드에 호스팅되는 LLM을 위한 프롬프트 구축에 초점을 두지만 현재 우리는 대규모 모델에서 작은 모델로 전환하는 중이며, 개인 및 엣지 하드웨어, 그리고 스마트폰의 신경망 처리 장치에서 실행되도록 설계된 마이크로소프트 파이 실리카(Phi Silica)와 같은 툴에 초점을 두고 있다.
엣지 AI 애플리케이션을 제공하려면 프롬프티와 같은 툴이 툴체인의 일부가 되어야 하며 로컬 엔드포인트와 함께 작동해서 일반적인 SDK를 위한 API 호출을 생성해야 한다. 마이크로소프트가 코파일럿 런타임의 일부로 윈도우 앱 SDK에서 제공하기로 약속한 파이 실리카 클래스와 함께 작동하도록 프롬프티를 확장할 것인지 여부가 흥미롭다. 이렇게 되면 닷넷과 C++ 개발자는 로컬 프롬프트와 클라우드를 대상으로 하는 프롬프트를 관리하는 데 필요한 툴을 확보하게 된다.
AI 툴체인의 성장
이와 같은 툴은 각기 다른 기술을 가진 사람이 협업할 수 있게 해주므로 AI 애플리케이션 개발 툴체인의 중요한 부분이다. 프롬프트 엔지니어는 애플리케이션 개발자가 코드에서 사용할 수 있는 방식으로 일관성 있는 AI 애플리케이션을 제공하는 데 필요한 프롬프트를 작성하고 관리하기 위한 툴을 얻게 된다. 비주얼 스튜디오 코드는 여러 확장을 하나의 일관적인 툴체인으로 결합할 수 있게 해준다. 이 접근 방식이 단일 AI 개발 환경보다 더 좋을 수 있다.
모델을 튜닝하는 경우 윈도우 AI 툴킷을 사용할 수 있다. 프롬프트를 구축한다면 프롬프티를 사용하면 된다. 개발자는 자신이 선택한 오케스트레이터를 위한 툴과 함께 윈도우 앱 SDK, 그리고 원하는 C+ 또는 C++ 툴을 사용할 수 있다. 비주얼 스튜디오 코드는 프로젝트에 필요한 확장을 선택할 수 있게 해주며, 설계자는 마이크로소프트 데브 박스(Dev Box) 가상 머신 또는 깃허브 코드스페이스(Codespace)를 사용해 적절한 툴체인으로 적절한 개발 환경을 구축하고 관리할 수 있다.
프롬프티는 LLM 애플리케이션 개발을 위한 더 성숙한 접근 방식을 제공하는 데 있어 중요한 부분이다. 코드 외부에서 프롬프트를 테스트하고 디버깅하는 동안 문서화함으로써 애플리케이션과 프롬프트를 병렬로 구축할 수 있고, 이는 피그마(Figma)와 같은 프론트엔드 기술이 웹에서 디자이너와의 유사한 협업을 지원하는 것과 마찬가지로 프롬프트 엔지니어와 애플리케이션 개발자가 더 효과적으로 협업하는 데 도움이 된다.
dl-ciokorea@foundryco.com