생각
AI를 최대한 활용하여 컨텐츠를 작성하고,
얼마나 자동화가 가능할지, AI 도움이 가능할지를 지속적으로 기록을 남깁니다.
목표
내 생각을 말하면 자동으로 컨텐츠를 작성하고 작성한 컨텐츠를 업로드 해주고, 이후 자동으로 컨텐츠 추가 요청 받도록 구성하기
로드맵
구상, 콘티 제작, 영상 제작 순으로 작성
user message :
나는 Microsoft 직원이면서 개발에 관심이 많은 엔지니어야. 사람들이 Microsoft와 GitHub을 가지고 빠르고 쉬운 생성형 AI를 활용한 개발을 할 수 있기를 희망해. 특히 Azure OpenAI의 GPT-4o 모델을 활용하여 Prompt Flow를 통해서 생성형 AI 앱을 직접 개발하고 배포할 수 있는 것을 돕기 위한 유투브를 만들고 싶어. 나는 Powerpoint 기반으로 수백회의 강연을 했었고, 수백번의 기술 실습 워크샵을 만들고 고객에게 진행했었지만, 나는 유투브 영상을 만들어 본 경험이 거의 없어. 그래서 이번에 네가 유투브 컨텐츠 크리레이터 전문가로서 사람들이 쉽게 Promptflow 기반으로 앱을 만들고 Azure에 배포하고 실습하고 평가하고 보안과 안전성을 일련의 과정을 알려주는 컨텐츠의 전체 목차를 만들고 각 목차별로 해야할 일들을 요약해 주길 바래.
assistant message :
멋진 목표예요! 전체 유튜브 콘텐츠 목차를 만들기 위해 몇 가지를 더 여쭤보고 싶어요: 1. 대상 시청자는 누구인가요? (예: 초급 개발자, 기업 고객, 학생, 기존 Microsoft 사용자 등) 2. 영상의 전체 길이나 각 영상의 분량은 어느 정도로 계획하고 계신가요? 3. 사용 언어는 한국어인가요, 영어인가요? 4. 보안과 안전성은 어떤 수준까지 다룰 예정인가요? (예: 인증, 네트워크 보안, 데이터 프라이버시 등) 5. Azure OpenAI의 GPT-4o와 Prompt Flow 외에 포함하고 싶은 기술이 있다면 알려주세요. (예: Azure Logic Apps, GitHub Actions 등) 이 정보를 알려주시면 더 구체적이고 유용한 목차와 작업 요약을 만들어드릴 수 있어요!
user message :
대상은 초 중급 개발자들이 대상이야. 영상의 전체 길이는 Powerpoint로 개요에 대해서 설명하고 각 실습을 하는 방법을 소개하는 것으로 회당 30분을 예상해. 예를 들면, Prompt Flow로 처음 소개하는 실습은 Web classification 이고 이를 위해서 Prompt Flow Github 리포지토리에서 CodeSpace로 시작하여 Azure OpenAI의 API Endpoint와 Key를 설정하고 해당 Flow를 실행하고, 변형을 활용하는 방법, Development Server 에서 배포하고 실행하고, 외부에서 Postman을 이용해서 API를 호출하는 방법을 설명할거야. 이 외에도 여러가지 예들을 설명하는 영상을 제작할 것이야. 먼저 이런 백엔드 API로 컨텐츠를 만드는게 1차적 목표야. 2차 목표는 Streamlit을 활용하여 프론트엔드와 백엔드를 동시에 만들어서 Chat 프로그램으로 동작하게 만드는 것이야. 주 사용 언어는 한국어야. 보안과 안전성은 인프라 네트워크에 대해서는 다루지 않을 예정이야. 이유는 주된 소개 목적과 달리 네트워크나 보안으로 시선이 바뀌는 것을 선호하지 않아. 최대한 가볍게 다루겠으나, 생성형 AI를 활용하는 컨텐츠 필터링 관련해서는 한번 다룰 생각이야. Azure AI Foundry와 GitHub Action, GitHub Codespace, GitHub Copilot, GitHub Project 등을 필요에 따라 활용할 것이야. 무조건 다 넣지는 않고, 매번 집중해야 하는 것은 생성형 AI를 이용하여 App을 만들기 쉬운 방법과 환경을 최대한 적극 활용한다는게 방향이야. 모르거나 애매한 부분은 다시 물어줘.
assistant message :
Azure OpenAI GPT-4와 Prompt Flow를 활용한 생성 AI 앱 개발 시리즈 (중급 개발자용)
에피소드 1: Azure OpenAI와 Prompt Flow 소개 및 환경 설정
학습 목표: Azure OpenAI 서비스의 GPT-4 모델과 Prompt Flow 프레임워크의 기본 개념을 이해하고 실습을 위한 개발 환경을 준비합니다.
• Azure OpenAI Service 및 GPT-4 소개: Azure OpenAI 서비스의 특징과 GPT-4 모델 활용 방법을 개괄합니다. API 사용을 위해 필요한 리소스 생성과 API 키 발급 과정을 설명합니다 .
• Prompt Flow 프레임워크 개요: 프롬프트 플로우(Prompt Flow)의 개념과 역할을 소개합니다. LLM(거대 언어 모델)과 프롬프트, Python 코드 및 기타 도구들을 연결하여 생성 AI 애플리케이션 개발 사이클을 간소화하는 도구 모음임을 강조합니다 . 이 프레임워크를 통해 프로토타이핑부터 테스트, 평가, 배포까지 손쉽게 수행할 수 있음을 설명합니다.
• 개발 환경 세팅: GitHub Codespaces를 이용하여 클라우드 기반 개발환경을 신속히 구축합니다. Prompt Flow SDK 및 CLI를 설치하고, VS Code의 Prompt Flow 확장을 설정합니다 (Codespaces 내에서 사전 구성). 이를 통해 별도의 로컬 설정 없이 바로 실습을 시작할 수 있습니다.
• Azure OpenAI 연결 구성: Azure OpenAI API 키와 엔드포인트 정보를 Prompt Flow에 연결합니다. pf connection create 명령어를 사용해 Azure OpenAI 연결 프로파일을 생성하고 , 이후 플로우에서 해당 연결을 참조하도록 설정하는 방법을 시연합니다.
• Hello World 프롬프트 테스트: 설정 확인을 위해 GPT-4 모델에 간단한 프롬프트를 보내봅니다. 예를 들어 “Hello GPT-4!“와 같은 입력을 주고 응답을 출력하여 환경이 제대로 작동하는지 검증합니다. 이때 GitHub Copilot을 활용해 코드나 프롬프트 작성을 보조받는 방법도 간략히 보여줍니다.
• 사용 도구: Azure OpenAI 서비스(GPT-4), Prompt Flow CLI/SDK 및 VS Code 확장, GitHub Codespaces, GitHub Copilot (코드 자동완성 도움).
에피소드 2: Prompt Flow 웹 분류 예제 실습
학습 목표: Prompt Flow GitHub 예제 중 웹 사이트 분류 데모를 직접 실행하며, Prompt Flow로 구성된 LLM 어플리케이션의 구조와 작동 방식을 체험합니다.
• 예제 시나리오 소개: 웹 URL을 분류하는 Prompt Flow 예제를 다룹니다. 이 플로우는 LLM을 활용한 다중 클래스 분류를 데모하며, 몇 가지 예시(샘플 웹사이트와 카테고리)를 프롬프트에 포함시켜 주어진 URL을 해당 카테고리로 분류합니다 . 예제의 개요와 사용 사례를 설명합니다.
• 플로우 구성 파악: Codespaces에서 예제 프로젝트를 열어 flow.dag.yaml 및 관련 프롬프트(Jinja 템플릿)와 Python 코드 파일을 살펴봅니다. LLM 도구 노드와 Python 도구 노드가 어떻게 연결되어 있는지 분석하고, few-shot learning 방식으로 URL 내용을 요약하고 분류하도록 프롬프트가 구성된 것을 확인합니다.
• 예제 플로우 실행: Prompt Flow CLI를 사용하여 예제를 실행해봅니다. 단일 입력으로 테스트하기 위해 pf flow test --flow . 명령을 실행하고, 사용자 지정 URL을 넣어 결과를 확인합니다 . 예를 들어 pf flow test --flow . --inputs url="https://www.example.com" 형태로 명령을 실행한 뒤 콘솔에 출력되는 분류 결과를 확인합니다.
• 결과 확인 및 이해: 모델의 출력이 어떤 카테고리로 분류되었는지 확인하고, few-shot 예시에 따라 분류 근거가 어떻게 프롬프트에 제공되었는지 해설합니다. 필요하면 추가 테스트 데이터(data.jsonl)를 활용해 여러 URL을 한번에 분류하고, 스트리밍으로 결과를 보는 방법도 시연합니다.
• 평가 플로우 소개: (시간 여유 시) 예제에 포함된 평가용 플로우를 간략히 소개합니다. 분류 결과의 정확도를 계산하는 평가 플로우를 실행하여 , 모델 출력과 정답 라벨을 비교하는 방법을 보여줍니다. 이를 통해 Prompt Flow에서 모델 성능을 체계적으로 측정하는 접근도 있다는 것을 이해합니다.
• 사용 도구: Azure OpenAI (분류 모델로 GPT-4 활용), Prompt Flow CLI, GitHub Codespaces (예제 코드 실행 환경). (GitHub Copilot도 코드나 명령 입력 시 도움을 받을 수 있음을 언급)
에피소드 3: 나만의 생성 AI 플로우 구성하기 (Backend 개발)
학습 목표: 새로운 요구사항에 맞게 직접 프롬프트 플로우를 설계 및 구현하여 GPT-4 기반 생성 AI 기능(백엔드 로직)을 만들어봅니다.
• 시나리오 선정 및 설계: 구현할 간단한 생성 AI 시나리오를 선정합니다 (예: 질문-답변 챗봇 혹은 텍스트 요약기). 선택한 시나리오에 대해 필요한 입력과 출력, 그리고 처리 단계를 구상합니다. 이 단계에서 LLM의 역할과 필요한 보조 로직(Python 함수 등)을 설계합니다.
• 새 플로우 프로젝트 생성: Prompt Flow CLI를 사용하여 새 플로우 디렉토리를 초기화합니다 (예: pf flow init --flow ./my_app --type standard). 생성된 flow.dag.yaml 파일을 열어 플로우 구조를 하나씩 채워나갑니다. VS Code Prompt Flow 확장의 비주얼 에디터를 활용하면 노드 추가와 구성이 수월하며, 이를 통해 LLM 노드와 Python 노드를 배치합니다.
• 프롬프트 템플릿 작성: LLM 노드에 사용할 프롬프트를 Jinja 템플릿으로 작성합니다. 예를 들어 요약기라면 요약 지시문과 예시를 포함한 프롬프트를, Q&A 챗봇이라면 시스템 메시지와 예시 Q&A 쌍을 few-shot으로 제공하는 형태를 만듭니다. GPT-4의 성능을 끌어낼 수 있도록 명확한 지시와 필요한 경우 예시를 포함하는 방법을 시연합니다. (이때 Copilot의 제안을 받아 프롬프트 초안을 잡는 모습을 보여줄 수 있습니다.)
• 맞춤 Python 도구 개발: 필요에 따라 Python Tool 노드를 추가하고 코드를 구현합니다. 예를 들어, 사용자 입력이나 LLM 출력에 전처리/후처리 작업이 필요하면 해당 로직을 Python 함수로 작성합니다. Prompt Flow에서는 Python 함수를 간단히 정의하고 데코레이터로 표시하여 플로우 내에서 실행할 수 있게 합니다.
• 플로우 테스트: 구현한 플로우를 실제로 실행하여 제대로 동작하는지 확인합니다. pf flow test 명령으로 몇 가지 테스트 입력을 넣어 보고, 예상한 출력이 나오는지 검사합니다. 초기 결과가 만족스럽지 않은 경우 프롬프트를 수정하거나 추가 예시를 넣는 등 실험적 튜닝을 거칩니다.
• GitHub Copilot 활용: 개발 과정 전반에서 Copilot을 활용하여 생산성을 높입니다. 프롬프트 작성 예시, Python 함수 코드 등의 초안을 Copilot이 제안하도록 하여 빠르게 구현하고, 개발자가 그 내용을 검토/수정하며 작업을 진행합니다.
• 사용 도구: Azure OpenAI (GPT-4), Prompt Flow (CLI 및 VS Code 확장), GitHub Codespaces (개발 환경), GitHub Copilot.
에피소드 4: 플로우 검증과 개선 및 안전한 프롬프트 설계
학습 목표: 이전 에피소드에서 만든 프롬프트 플로우의 출력 품질을 다양한 입력에 대해 검증하고, 프롬프트를 개선합니다. 또한 Azure OpenAI의 콘텐츠 필터링 등 안전장치를 이해하여 앱이 안전하게 동작하도록 고려합니다.
• 샘플 데이터로 플로우 결과 평가: 여러 검증용 입력 사례를 준비하고 플로우를 실행하여 결과를 살펴봅니다. 예를 들어 JSON Lines 형식의 테스트 데이터 파일을 만들어 pf run create --flow . --data data.jsonl 명령으로 일괄 실행해봅니다. 각 입력에 대한 모델의 응답을 검토하여 품질을 평가하고, 일관성이나 정확도 면에서 개선이 필요한 부분을 식별합니다. (이때 응답을 수동으로 평가하거나, 가능하다면 정답이 있는 경우 간단한 평가 스크립트를 작성해 볼 수도 있습니다.)
• 프롬프트 튜닝 및 플로우 개선: 평가 결과를 바탕으로 프롬프트를 조정합니다. 모델이 오답을 내거나 원하는 형식과 다르게 응답하면 프롬프트에 추가 지침을 넣거나 예시를 수정합니다. 필요하면 Temperature 등 파라미터도 조절하여 응답의 다양성과 안정성을 맞춥니다. 여러 번의 실험을 통해 프롬프트 엔지니어링 감각을 익히고 최적의 흐름을 만들어갑니다.
• Azure OpenAI 콘텐츠 필터 이해: Azure OpenAI 서비스에는 유해하거나 부적절한 콘텐츠를 감지 및 제한하는 필터링 시스템이 내장되어 있습니다 . 모델에게 특정 요청을 할 때 이 필터 때문에 응답이 거부되거나 수정될 수 있음을 설명합니다.
• 안전성 고려 및 오류 처리: 콘텐츠 필터에 의해 응답이 막히는 상황을 코드 레벨에서 다루는 방법을 소개합니다. 예를 들어, OpenAI API가 특별 응답(예: 오류 코드 또는 필터링됨을 나타내는 메시지)을 반환하면 이를 감지하여 사용자에게 안내메시지를 보여주거나 우회 로직을 탈 수 있도록 합니다. 간단한 예외 처리 구현을 통해 앱이 안전하고 견고하게 동작하는 방법을 설명합니다. 또한 개발자가 Azure OpenAI 정책을 준수하면서 프롬프트를 작성해야 함을 강조합니다 (예: 과도하게 민감한 주제는 피하기 등).
• 사용 도구: Prompt Flow CLI (로컬 테스트 및 평가), Azure OpenAI 콘텐츠 필터 (Azure AI Content Safety) 개념, (필요 시) Azure OpenAI 정책 가이드 문서. 이전 에피소드와 동일한 개발 도구 활용.
에피소드 5: Streamlit을 활용한 프론트엔드 통합
학습 목표: 앞서 구축한 백엔드 플로우에 Streamlit 기반의 프론트엔드 인터페이스를 결합하여, 사용자가 웹 애플리케이션 형태로 생성 AI 기능을 이용할 수 있도록 합니다. 백엔드(API)와 프론트엔드(UI)를 연결하는 실습을 통해 풀스택 생성 AI 앱을 완성합니다.
• Streamlit 소개 및 설정: 간단한 웹 대시보드를 만들 수 있는 Python 프레임워크인 Streamlit의 개념과 장점을 소개합니다. Codespaces 혹은 로컬 환경에 pip install streamlit으로 설치하고, Streamlit 앱 개발을 위한 폴더/파일을 준비합니다.
• Prompt Flow 백엔드 로드: Streamlit 앱 코드에서 Prompt Flow SDK를 사용하여 앞서 만든 플로우를 로드합니다. promptflow.load_flow() 함수를 통해 저장된 플로우를 불러오고 파이썬 함수처럼 사용할 수 있습니다 . 이렇게 로드된 플로우 객체는 지정된 입력을 받아 실행되며, 곧바로 출력 결과를 반환합니다.
• UI 구성: Streamlit을 활용해 사용자 입력을 받을 인터페이스를 구축합니다. 예를 들어 st.text_input으로 질문이나 요청을 입력받고, st.button으로 실행을 트리거합니다. 사용자가 입력 폼에 데이터를 넣고 버튼을 누르면 백엔드의 Prompt Flow를 호출하도록 코드를 작성합니다.
• 플로우 호출 및 결과 처리: 버튼 동작 콜백이나 조건문 내에서 앞에서 로드한 플로우 함수를 호출하여 결과를 얻습니다. result = flow_function(user_input) 형태로 GPT-4 모델의 응답을 받고, 해당 결과를 가공하여 화면에 출력합니다 . 텍스트 결과라면 그대로 표시하고, 이미지나 표 등일 경우 Streamlit의 적절한 API (st.image, st.table 등)를 사용합니다.
• 응용 시연: 완성된 Streamlit 앱을 실행하여 (Codespaces의 포트 포워딩 등을 통해) 웹 브라우저에서 동작을 확인합니다. 사용자 질문을 입력하고 GPT-4 응답이 화면에 나타나는 과정을 데모합니다. 이때 백엔드 플로우가 잘 연동되어 있는지, 여러 번 요청에도 안정적으로 동작하는지 점검합니다. 간단한 개선으로, 입력 내용과 응답을 대화 형태로 쌓아나가거나, 응답에 대한 추가 요청을 처리하도록 기능을 확장하는 아이디어도 제시합니다.
• 사용 도구: Streamlit (프론트엔드 프레임워크), Prompt Flow Python SDK (promptflow.load_flow 등), Azure OpenAI (백엔드 모델), GitHub Codespaces (실행 환경).
에피소드 6: CI/CD 및 Azure 클라우드로의 배포
학습 목표: 개발한 생성 AI 애플리케이션에 CI/CD 파이프라인을 도입하여 품질을 지속적으로 검증하고, Azure 클라우드에 배포하여 실제 서비스로 운영하는 방법을 다룹니다. 이를 통해 프로젝트를 프로덕션 수준으로 올리는 데 필요한 절차를 이해합니다.
• 자동화된 테스트 파이프라인 구성: GitHub Actions를 활용하여 레포지토리에 CI 파이프라인을 설정합니다. 코드 푸시 시 이전 에피소드에서 구축한 Prompt Flow에 대한 테스트를 자동 실행하여 정상 동작을 확인하도록 워크플로를 작성합니다. 예를 들어, pf flow test나 커스텀 스크립트를 CI에서 돌려 모델 응답을 검증하고, 실패 시 알림을 주도록 구성합니다. 이러한 자동 테스트는 앱 업데이트 시 기존 기능이 안정적으로 유지되는지 보장해줍니다.
• GitHub Copilot을 활용한 CI 설정: Workflow YAML이나 배포 스크립트를 작성할 때 Copilot의 도움을 받아 보다 빠르게 구성합니다. 예를 들어, Actions에서 Azure에 로그인하고 리소스를 만드는 YAML을 Copilot에게 묻거나 부분적으로 완성시켜, 개발자가 수정/검토하는 방식으로 생산성을 높입니다.
• 컨테이너 이미지 빌드: 애플리케이션(백엔드 + 프론트엔드)을 배포하기 위해 Docker 등을 이용해 컨테이너 이미지를 만드는 방법을 소개합니다. Streamlit 앱과 Prompt Flow 코드, 필요한 패키지들을 포함하는 Dockerfile을 작성하고, 로컬 또는 CI에서 이미지를 빌드합니다. 이 이미지로 어디서든 동일한 환경으로 앱을 실행할 수 있음을 설명합니다. (만약 컨테이너 사용이 익숙하지 않은 경우, Streamlit Cloud나 Azure Container Instances 등의 대안 언급)
• Azure에 배포: Azure의 PaaS 서비스를 이용해 애플리케이션을 배포하는 방법을 다룹니다. 예를 들어 Azure App Service에 컨테이너를 배포하거나 Azure Machine Learning 엔드포인트로 Prompt Flow를 배포하는 시나리오를 설명합니다. 실제 예제로, 앞서 만든 플로우와 Streamlit 웹앱을 포함한 컨테이너를 Azure에 배포하여 인터넷 상에서 접근 가능한 서비스로 만드는 과정을 소개합니다 . (Azure CLI 또는 GitHub Actions를 통한 배포 방법을 언급하고, 필요한 최소한의 설정만 다룹니다.)
• Azure AI Foundry로 협업 및 운영: 엔터프라이즈 수준에서 Azure AI Foundry(구 Azure AI Studio)를 활용하면 팀 협업과 프로젝트 관리가 수월함을 설명합니다. Foundry 내에서 프로젝트를 생성하고 Prompt Flow를 관리하면, 웹 포털에서 플로우 편집, 버전 관리, 모니터링이 가능하며 , 조직 내 협업과 승격 배포에 유리합니다. 이 시리즈에서는 주로 CLI와 코드로 다뤘지만, Azure AI Foundry를 통해 클라우드 상에서 Prompt Flow를 시각적으로 편집 및 배포할 수 있음을 간략히 소개합니다.
• 마무리 및 추가 팁: 전체 애플리케이션이 개발에서 배포까지 완료되었습니다. 마지막으로 모니터링이나 로깅(예: 앱에서 사용량 통계나 오류 로깅) 등에 대해 간단히 조언하고, 개발자들이 참고할만한 리소스(Azure OpenAI 모범 사례, Prompt Flow 문서, MS Learn 모듈 등)를 공유합니다.
• 사용 도구: GitHub Actions (CI/CD), Docker 및 Azure App Service (배포), Azure AI Foundry (통합 프로젝트 관리), Azure OpenAI, Prompt Flow. 지속적인 개발을 위한 버전 관리와 협업 툴 전체를 활용.
내용 수정 부분 확인
아래 흐름과 머릿속에 있는 의도간의 gap이 있음.
예시들을 하나씩 소개하는것을 목표로 하고 있으며, 이를 위한 여정의 전제 조건 강의들을 설명하는 Map이 있고, 이를 바탕으로 예시들을 익히면서 각각의 방법을 익히는 것이 목표임.
예시는 다음과 같이 존재함.
Standard Examples
autonomous-agent
basic-with-builtin-llm
basic-with-connection
basic
conditional-flow-for-if-else
conditional-flow-for-switch
customer-intent-extraction
describe-image
flow-with-additional-includes
flow-with-symlinks
gen-docstring
maths-to-code
named-entity-recognition
question-simulation
web-classification
Chat Examples
chat-basic
chat-math-variant
chat-with-image
chat-with-pdf
chat-with-wikipedia
promptflow-copilot
use_functions_with_chat_models
Evaluation
val-accuracy-maths-to-code
eval-basic
eval-chat-math
eval-classification-accuracy
eval-entity-match-rate
eval-groundedness
eval-multi-turn-metrics
eval-perceived-intelligence
eval-qna-non-rag
eval-qna-rag-metrics
eval-single-turn-metrics
eval-summarization