[Microsoft Azure] Prompt Flow 구성하기
0. Prompt Flow 란?
Prompt flow는 아이디어 구상, 프로토타이핑, 테스트, 평가부터 프로덕션 배포 및 모니터링에 이르기까지 LLM 기반 AI 애플리케이션의 엔드투엔드 개발 주기를 간소화하도록 설계된 개발 도구 모음이다. Prompt Flow를 통해 엔지니어링을 쉽고 빠르게 수행할 수 있으며, LLM 어플리케이션을 구축할 수 있다. 이는 Microsoft에서 출시된 Azure AI를 이용하여 Prompt Flow를 구성할 수 있다.
1. 개발환경 설정
conda create --name pf python=3.9
conda activate pf
2. prompt flow 설치하기
pip install promptflow promptflow-tools
3. promptflow 버전 체크하여 설치 확인하기
# should print promptflow version, e.g. "0.1.0b3"
pf -v
4. prompt flow, web-classification 예제 확인하기
promptflow 레포를 받으면 examples/flows 폴더 내에 여러개의 샘플 코드를 볼 수 있다.
git clone https://github.com/microsoft/promptflow.git
cd promptflow/examples/flows/standard/web-classification
그 중 web-classification 샘플 코드를 확인해보면 아래와 같이 구성된다.
- flow.dag.yaml: The flow definition with inputs/outputs, nodes, tools and variants for authoring purpose.
- .promptflow/flow.tools.json: It contains tools meta referenced in flow.dag.yaml.
- Source code files (.py, .jinja2): User managed, the code scripts referenced by tools.
- requirements.txt: Python package dependencies for this flow.
간단히 말하자면 promptflow를 구성하기 위해서 사용자는 yaml 파일을 통해 flow의 입출력 노드를 구성해주면 되고,
python 파일과 jinja2 파일을 통해 플로우를 구성하는데 필요한 소스코드를 짜면 된다.
Prompt Flow를 잘 만들었다고 생각한 이유 중 하나가 예제 파일들이 굉장히 잘 짜여져 있었다는 점이다.
하나하나 실행해보면 충분히 활용 가능한 예제들이 많다는 것을 알 수 있었다.
5. web-classification 예제 실행하기 (유료 리소스 플랜 필요)
web-classification 예제는 특정 url을 입력으로 받아, 웹 페이지가 어떤 카테고리에 속하는지 OpenAI api를 통해 답해주는 예제다.
아래 명령어를 통해 web-classification 예제를 실행하기 위한 패키지를 설치해준다.
pip install -r requirements.txt
그 다음에 꼭 봐야 하는 파일은 flow.dag.yaml 파일이다.
yaml 파일을 통해 각 노드의 입출력을 정의해주고,
각 노드에서 어떤 파이썬 파일을 실행시킬건지, 어떤 jinja2 파일을 실행시킬건지 정의해주게 된다.
참고로 vscode에서 prompt flow 플러그인을 다운 받을 수 있다.
다운 받고 나면 아래 사진과 같이 왼편에 prompt flow 표시가 생기게 되고,
각 예제가 들어있는 폴더에서 web-classification 을 누르게 되면 flow를 열 수 있다.
open 을 누르면 아래와 같이 뜬다.
처음에 flow를 띄우게 되면 노드에 초록색 띠가 아닌 빨간색 띠로 보일 수 있다.
이건 prompt flow에서 connection을 하지 않아서 생기는 문제다.
예를 들면 처음에는 아래와 같이 connection 정보를 설정하라고 빨간 표시로 박스가 뜰 것이다.
이걸 정상적으로 실행하기 위해서는 Azure OpenAI 연결이 필요하다.
+ 버튼을 누르게 되면 create 할 수 있도록 new_AzureOpenAI_connection.yaml 이 뜬다.
이 때 Azure 계정과 유료 리소스 플랜이 필요하다.
계정 설정하는 방법은 아래 김현수님의 유튜브를 참고하는 것을 추천한다.
간단히 설명하자면 여기서 Azure OpenAI에서 할당받은 api_base와 apt_key를 입력해주면 된다.
https://youtu.be/ECl0D8rHoDc?si=Ois95YDQwGM-iOYM&t=937
참고로 Microsoft Azure에서 유료 리소스 플랜을 구매하고,
계정에 들어가면 아래와 같이 Azure OpenAI 항목에 접속해서 키 및 엔드포인트 리소스를 받을 수 있다.
prompt flow run은 아래 삼각형 버튼을 통해서 실행 할 수 있다.
현재 input은 아래와 같이 twitter 어플의 웹페이지를 표시하게끔 설정되어있다.
실행하면 아래와 같이 App 이라는 카테고리로 분류되었음을 알려준다.
각 노드들이 어떻게 구성되어있는지 확인해보자. 그러기 위해서는 각 노드들 옆에 연결고리? 아이콘을 눌러주면 code file을 볼 수 있다.
파이썬 코드는 아래와 같이 구성되어있다.
jinja2 파일은 아래와 같이 구성되어있다.
다양한 예제들이 많으니 간단한 예제들을 보면서 원하는 프로젝트를 쉽게 만들 수 있다.
prompt flow 구성을 위해 참고한 자료들은 아래와 같다.
참고자료 1 : https://github.com/HyounsooKim/azure-openai-samples-kr
참고자료 2 : https://www.youtube.com/watch?v=ECl0D8rHoDc
참고자료 3 : https://microsoft.github.io/promptflow/how-to-guides/quick-start.html