일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 마이크로소프트
- microsoft ai school
- micsrosoft ai
- 마이크로소프트 ai school 6기
- 마이크로소프트 AI
- microsoft ai school 6기
- msai
- 마이크로소프트 ai 스쿨
- MS
- microsoft ai
- microsoft
- 마이크로소프트 ai 스클
- 마이크로소프트 ai 스쿨 6기
- Today
- Total
연랩
[Microsoft AI School 6기] 3/10(52일차) 정리 - Azure Open AI(1) 본문
[Microsoft AI School 6기] 3/10(52일차) 정리 - Azure Open AI(1)
parkjiyon7 2025. 3. 10. 17:50Azure Open AI 활용
생성 AI & GPT
- 생성 AI는 인공 지능이 다양한 형태의 콘텐츠를 생성하는 기술이며, GPT는 텍스트 생성에 탁월한 성능을 보이는
모델
- GPT는 딥러닝과 자연어 처리를 결합하여 인터넷의 텍스트 데이터를 학습하고, 적절한 텍스트를 생성할 수 있음.
-> 챗봇, 요약, 번역, 작문, 검색 등 다양한 분야에서 활용될 수 있음
Azure Open AI Service
- Azure OpenAI Service는 Azure 플랫폼에서 생성 AI 모델을 제공
- REST API, 다양한 SDK 및 Studio 인터페이스를 통해 애플리케이션을 제작할 수 있음
Azure OpenAI 서비스 액세스 제한
- https://aka.ms/oai/access에서 서비스 액세스 신청
- 윤리적 사용을 지원하기 위해 제한된 액세스 권한으로 릴리스
Azure OpenAI 서비스 액세스 권한
- Azure Portal 리소스 생성 또는 Azure CLI 사용 시작
생성 AI 모델의 유형 살펴 보기
GPT -o 모델은 추론 시간을 늘려 성능을 올리는 것
Azure OpenAI의 기본 모델 선택 및 배포 필요
- Microsoft에서 기본 모델 및 사용자 지정
기본 모델 제공
- 여러 유형의 모델 포함
- GPT-4 모델: 자연어 및 코드 완성 생성 가능
GPT 3.5 모델
- 자연어 및 코드 완성 생성
- GPT-35-turbo 모델은 채팅 기반 상호 작용에 최적화
Embeddings 모델
- 텍스트를 숫자 벡터로 변환
- 언어 분석 시나리오에 유용
DALL-E 모델
- 자연어 프롬프트를 기반으로 이미지 생성
- 미리 보기로 제공
- Azure OpenAI Studio 인터페이스에 나열되지 않음
프롬프트 형식
프롬프트는 작업에 따라 요청 유형으로 그룹화 가능
--> REST API를 사용하여 배포
모델 호출
REST API, Python, C# 또는 Studio를 통해 배포된 모델에 대한 호출을 시작할 수 있음
Azure OpenAI Studio의 플레이그라운드에서 모델 테스트
완료 플레이그라운드 매개 변수
온도
- 임의성 제어
- 온도 낮추면 반복적 응답
- 온도 높이면 창의적 응답
최대 길이(토큰)
- 모델 응답당 토큰 수 제한
- 최대 4,000개 토큰 지원
- 한 토큰은 약 4자
중지 시퀀스
- 원하는 지점에서 응답 중지
- 최대 4개 중지 시퀀스 지정
- 반환된 텍스트에 중지 시퀀스 미포함
상위 P: 단어를 선택하는 분포
- 정규분포를 생각하면 됨.
상위 확률은 온도와 유사하게 임의성을 제어하지만 다른 방법을 사용
- 상위 P를 낮추면 모델의 토큰 선택이 유사 토큰으로 좁혀짐
- 상위 P를 늘리면 모델이가능성이 높고 낮은 토큰 중에서 선택할 수 있음
- 온도 또는 상위 P를 조정하되 둘 다 조정하지는 말 것
채팅 플레이그라운드
채팅 플레이그라운드는 대화형 메시지 출력 인터페이스를 기반으로 하며, 시스템 메시지를 사용하여 세션을 초기화하고 채팅 컨텍스트를 설정할 수 있다
- 온도(Temperature) 매개 변수가 포함
- 완료 플레이그라운드에서 사용할 수 없는 다른 매개 변수도 지원
- 최대 응답: 모델 응답당 토큰 수에 대한 제한을 설정
- API는 프롬프트와 모델 응답 간에 공유되는 최대 4,000개의 토큰을 지원
- 한 토큰은 일반적인 영어 텍스트의 경우 약 4자
- 상위 P는 온도와 유사하게 임의성을 제어
- 상위 P를 낮추면 모델의 토큰 선택이 유사 토큰으로 좁혀짐
- 상위 P를 늘리면 모델이 가능성이 높고 낮은 토큰 중에서 선택할 수 있음
- 온도 또는 상위 P를 조정하되 둘 다 조정하지는 말것
이전 메시지 포함: 새 API 요청에 포함할 과거 메시지 수 선택
- 과거 메시지는 새 사용자 쿼리에 대한 컨텍스트 제공에 도움
- 숫자 10 설정시 사용자 쿼리 5개와 시스템 응답 5개 포함
현재 토큰 수: 채팅 플레이그라운드에서 확인 가능
- API 호출은 토큰별로 가격 책정
- 최대 응답 토큰 제한 설정 가능
- 현재 토큰 수 감시하여 대화가 최대 응답 토큰 수 초과하지 않도록
시스템 메세지 조정
모델에서 생성된 응답 종류를 더 효과적으로 제어할 수 있도록 시스템 설정을 사용자 정의할 수 있음
- 설정 패널에서 ‘사용자‘-’도우미‘ 예제를 제공하여 추가적으로 학습시킬 수 있다. 이러한 예제를 여러 개 제공하는
러닝을 ‘퓨샷 러닝’(fewshot-learning)이라고 한다.
프롬프트 설계
입력 프롬프트를 작성하는 방법은 AI 모델이 응답하는 방식에서 큰 역할을 함
간단한 프롬프트
Azure Open AI가 뭐야? -> 검색 엔진을 사용하는 것과 유사한 응답
응답에서 원하는 내용에 대한 자세한 정보를 제공하는 프롬프트 -> 구체적인 응답을 얻을 수 있음
REST API
(Representational State Transfer)
- 마이크로서비스 아키텍처에서 컴포넌트를 연결하는 가장 일반적인 방법
- REST API는 HTTP 요청을 통해 통신하여 리소스 내에서 레코드를 생성(Create), 읽기(Read), 업데이트(Update), 삭제(Delete)와 같은 표준 데이터베이스 기능(CRUD라고함)을 수행
- 예를 들어, REST API는 GET 요청을 사용하여 레코드를 검색하고, POST 요청은 새 레코드를 생성하며, PUT 요청은 레코드를 업데이트하고, DELETE 요청은 레코드를 삭제
API와 상호 작용시 필요한 요소
- API와 상호 작용하기 전에 Azure Portal에서 Azure OpenAI 리소스를 만들면 리소스에 대한 앤드포인트와 키값이
생성
- Azure OpenAI Studio에서 모델을 배포하면 배포된 모델에 대한 이름이 필요
- Azure OpenAI 리소스에 모델을 배포한 후에는 POST 요청을 사용하여 Azure OpenAI 서비스에 프롬프트를 보낼
수 있음
Microsoft Python SDK
라이브러리
- Azure 서비스를 사용하는데 도움이 되는 라이브러리를 제공
- 이 라이브러리들은 Azure 서비스와의 통신을 단순화하고 표준화
Microsoft Python SDK는 Microsoft 서비스를 Python에서 쉽게 사용할 수 있도록 도와주는 도구 및 라이브러리의 모음
도구
- 코드 작성, 디버깅, 테스트, 배포 등을 지원하는 도구 포함
- 이 도구들은 개발자가 효율적으로 코드를 작성하고 관리할 수 있도록 지원
Azure Open AI
아래 링크로 playground 접속
https://oai.azure.com/resource/playground
Azure AI Foundry
oai.azure.com
온도와 상위 P를 조절하여 답변을 비교하여 볼 수 있다
온도와 상위P가 높을 수록 창의적인 답변을 생성하여 준다
(욕을 먹었다, 충격을 먹었다 와 같은 답변이 나오는 사람도 있었음)
API 키는 리소스에 따르는 것을 확인할 수 있다
상단의 view code를 통해 키를 얻을 수 있다
> curl로 변경
Postman으로 접속하여 연결 확인
-d data인 것은 자동으로 post
Headers >
Content-Type: application/json
api-key: [복사한 api key]
Body > 위의 view code를 json으로 변경 한뒤 복사 붙여넣기
역할은 크게 3가지
system은 system의 역할을 부여
assistant는 답변을 의미함
user는 사용자의 질문
system의 역할의 부여 위에는 서울 맛집 블로거로서의 답변이다
이와 마찬가지로 각 역할에 따라 대답을 준다. 즉, 시스템의 설정으로 활용할 수 있다
퓨삿 러닝
이외에도 assistant의 답변 조정 기능은 채팅 플레이그라운드 > 색션 추가 > user, 도우미의 역할로 지정할 수 있다. -> (퓨샷 러닝)
퓨삿 러닝을 적용하여 보면 아래와 같다
포털에서 만들면 위와 같이 나온다
포스트맨으로도 질문과 답변 예시를 몇가지 넣으면 해당 양식에 맞게 답변을 하여 주는 것을 확인할 수 있다.
Deploy를 통해 web app으로 배포가 가능하며, 이는 리소스 그룹에서 확인할 수 있다.
파이썬 코드로 구현
postman에서 실험한 것을 파이썬으로 가져오면 다음과 같다
이때, endpoint, method, header, body만 있으면 된다
디버깅 중단점을 찍고 확인해 보면 다음과 같다.
vs code 좌측에 벌레가 있는 아이콘을 누르면 디버깅하여 확인이 가능하다
디버그 콘솔 > response.json() > 'choices' > 0 > 'message'
에 들어가면 해당 메세지를 확인할 수 있다
위와 같이 메세지가 입력되었음을 알 수 있다.
프롬프트 엔지니어링
- 프롬프트 품질에 따라 AI 모델의 응답 품질이 달라짐
- 프롬프트 엔지니어링을 통해 프롬프트 품질 개선
- Azure OpenAI 모델 성능 최적화 방법으로 프롬프트 디자인 및 최적화를 포함함 프롬프트 엔지니어링 활용
프롬프트 엔지니어링은 AI 모델을 활용하기 위해 프롬프트를 디자인하고 최적하는 프로세스
- 효과적인 프롬프트 설계는 프롬프트 엔지니어링의 성공에 매우 중요
- 특정 작업에 대한 AI 모델의 성능을 크게 향상시킬 수 있음
관련 있고 구체적이며 명확하며 잘 구성된 프롬프트를 제공하면 모델이 컨텍스트를 이해하여 정확한 응답을 생성하는데 도움이 됨
효과적인 프롬프트 작성
Azure OpenAI 모델은 뛰어난 정확도로 자연어 쿼리에 대한 응답을 생성할 수 있다
- 응답의 품질은 프롬프트가 얼마나 잘 작성되었는지에 따라 크게 달라진다
- 개발자는 프롬프트에서 다양한 기술을사용하여 Azure OpenAI 모델의 성능을 최적화할 수 있다
- 보다 정확하고 관련성 있는 응답을 생성할 수 있다
기본 콘텐츠
프롬프트에 모델이 응답하는 데 사용할 콘텐츠를 포함하면 더 높은 정확도로 응답할 수 있음
- 기본 콘텐츠는 번역할 문장 또는 요약할 문서와 같이 쿼리의 주제인 콘텐츠를 나타낸다
- 이 콘텐츠는 프롬프트의 시작 또는 끝에 포함되는 경우가 많다
- 이를 사용하여 수행할 작업을 설명하는 지침이 포함되어 있다
- 예를 들어 요약할 긴 문서가 있다고 가정 -> 프롬프트의--- 블록에 넣은 다음 명령으로 끝날 수 있습니다.
지원 콘텐츠
응답을 변경할 수 있지만 프롬프트의 포커스 또는 주제가 아닌 콘텐츠
- 지원 콘텐츠의 예로는 이름, 기본 설정, 응답에 포함할 날짜, 웹사이트 주소 등이 있음.
- 지원 콘텐츠를 제공하면 모델이 보다 안전하고 정확하게 응답하며 원하는 정보를 포함할 가능성이 높아짐.
- 예를 들어 매우 긴 홍보용 이메일이 제공되면 모델은 주요 정보를 추출 가능 -> 원하는 특정 항목을 지정하는 지원 콘텐츠를 프롬프트에 추가 -> 모델이 더 유용한 응답 제공
- 이메일 – 기본 콘텐츠, 관심 있는 내용 – 지원 콘텐츠
그라운딩 콘텐츠
모델이 답변을 생성하는데 필요한 콘텐츠를 제공하여 신뢰할 수 있는 답변을 생성
- 그라운딩 콘텐츠에는 모델이 학습된 데이터보다 최근 정보, 회사 FAQ 문서, 질문형 에세이 또는 기사 등이 포함
- 더 안정적이고 최신 응답이 필요하거나 게시되지 않은 정보 또는 특정 정보를 참조해야 하는 경우에 그라운딩 콘텐츠 사용
- 예를 들어, AI의 역사에 대한 게시되지 않은 연구 논문을 제공하면 모델은 이 연구논문을 그라운딩 콘텐츠로 사용하여 질문에 답할 수 있음.
- 그라운딩 콘텐츠 내의 데이터를 사용하면 모델이 학습된 데이터세트의 일부가 아닐 수 있는 보다 정확한 정보에 입각한 답변 제공 가능
시스템 메세지
- 시스템 메시지는 Azure OpenAI Studio의 Chat Playground에서 사용할 수 있다
- 특정 형식의 응답을 지정하는 시스템 프롬프트를 정의하고 모델과 채팅하여 응답이 어떻게 다른지 확인할 수 있다
ex) 맛집 블로거라고 가정하고 대답해줘
생각의 사슬
단계별로 생각한 프로세스를 볼 수 있음
- 모델에 생각의 사슬을 설명하도록 요청 가능
-> 생각의 사슬은 이용하여 모델에서 최고 품질의 답변을 얻기 위해 프롬프트를 반복하고 개선하는 데 가장 적합
광고 프롬포트 만들기
오늘의 간단한 후기
생각보다 Azure 내에서 할 수 있는 활동이 많아서 놀랐다. Open AI 를 활용하여 다양한 활동을 하고 이를 조정하여 맞춤형 모델을 만들 수 있다는 것이 즐거웠다.
출처
-If any problem for references, or any questions please contact me by comments.
-This content is only for recording my studies and personal profiles
일부 출처는 사진 내에 표기되어 있습니다
본문의 내용은 학습과 개인 profile 이외의 다른 목적이 없습니다
출처 관련 문제 있을 시 말씀 부탁드립니다
상업적인 용도로 사용하는 것을 금합니다
본문의 내용을 Elixirr 강의자료 내용(정종현)을 기반으로 제작되었습니다
깃허브 소스코드의 내용을 담고 있습니다
본문의 내용은 MS AI School 6기의 강의 자료 및 수업 내용을 담고 있습니다
'MS AI school 6기' 카테고리의 다른 글
[Microsoft AI School 6기] 3/12(54일차) 정리 - Azure Open AI(3): RAG (2) | 2025.03.12 |
---|---|
[Microsoft AI School 6기] 3/11(53일차) 정리 - Azure Open AI(2) (0) | 2025.03.11 |
[Microsoft AI School 6기] 3/7(51일차) 정리 - HTML/CSS/JS (5) (0) | 2025.03.07 |
[Microsoft AI School 6기] 3/6(51일차) 정리 - MS 타운홀미팅 (1) | 2025.03.06 |
[Microsoft AI School 6기] 3/5(50일차) 정리 - HTML/CSS/JS (4) (0) | 2025.03.05 |