Azure AI Foundry
Foundry란?
AIServices, OpenAI Service 유형의 프로젝트, 리소스를 관리하는 플랫폼
Azure AI Foundry 아키텍처
•
Azure OpenAI : 최신 OpenAI 모델에 대한 액세스를 제공한다.
◦
보안 배포를 만들고, 플레이그라운드를 시도하고, 모델을 미세 조정하고, 콘텐츠 필터를 적용하고, 일괄 작업을 수행할 수 있다.
◦
Azure AI Foundry 포털을 사용하면 Azure Studio 프로젝트 없이도 Azure OpenAI와 직접 작업할 수 있다.
•
관리 센터 : 관리 센터는 허브, 프로젝트, 연결된 리소스, 배포와 같은 Azure AI Foundry 리소스의 거버넌스와 관리를 간소화한다.
•
Azure AI Foundry 허브 : Azure AI Foundry 포털의 최상위 리소스, Azure Machine Learning 서비스 기반.
◦
프로젝트와 모델 엔드포인트에 걸쳐 관리되는 네트워크를 포함한 보안 구성.
◦
대화형 개발, 미세 조정, 오픈 소스 및 서버리스 모델 배포를 위한 컴퓨팅 리소스.
◦
Azure OpenAI, Azure AI 서비스, Azure AI Search와 같은 다른 Azure 서비스에 대한 연결. 허브 범위 연결은 허브에서 생성된 프로젝트와 공유된다.
◦
프로젝트 관리. 허브에는 여러 자식 프로젝트가 있을 수 있다.
◦
데이터 업로드 및 아티팩트 저장을 위한 연결된 Azure Storage 계정.
•
Azure AI Foundry 프로젝트 : 허브의 자식 리소스.
◦
AI 애플리케이션을 구축하고 사용자 정의하기 위한 개발 도구에 액세스.
◦
데이터 세트, 모델, 인덱스를 포함한 재사용 가능한 구성 요소.
◦
허브로부터 상속받은 저장소 내에서 데이터를 업로드하기 위한 격리된 컨테이너.
◦
프로젝트 범위 연결.
프로젝트 멤버는 다른 프로젝트에 동일한 액세스 권한을 부여하지 않고도 Azure Storage 계정에 저장된 데이터에 대한 개인 액세스 권한이 필요할 수 있다.
◦
카탈로그와 미세 조정된 모델 엔드포인트에서 오픈소스 모델 배포.
Hub, Project, Service의 관계
•
연결(Connections): Azure AI Foundry 허브와 프로젝트는 연결을 사용하여 다른 서비스에서 제공하는 리소스에 액세스한다.
Azure Storage 계정, Azure OpenAI 또는 다른 Azure AI 서비스의 데이터이다.
Azure 리소스 유형 및 공급자
•
Azure AI Foundry는 Azure Machine Learning 리소스 공급자를 기반으로 구축되었으며, 여러 다른 Azure 서비스에 종속된다.
•
이러한 서비스의 리소스 공급자는 Azure 구독에 등록되어야 한다.
리소스 유형 | 리소스 제공자(공급자) | 리소스 종류 |
Azure AI Foundry hub | Microsoft.MachineLearningServices/workspace | hub |
Azure AI Foundry project | Microsoft.MachineLearningServices/workspace | project |
Azure AI services or Azure AI OpenAI Service | Microsoft.CognitiveServices/account | AIServicesOpenAI |
Foundry Portal | OpenAI Service
진입
•
Portal에서 하단 빨간색 영역을 클릭하여 진입
모델 배포
모델을 사용하려면 먼저 프로젝트에 배포해야 한다.
아직 프로젝트가 없다면 배포 단계의 일부로 프로젝트를 만든다.
1.
Azure AI Foundry 에 로그인 .
2.
Studio는 사용자가 마지막으로 있었던 위치를 기억하므로 다음에 무엇을 할지는 사용자가 있는 위치에 따라 달라진다.
•
Azure AI Foundry를 처음 사용하는 경우 모델 탐색을 선택해라 .
•
프로젝트는 있지만 해당 프로젝트에 속하지 않은 경우, 사용하려는 프로젝트를 선택한 후 왼쪽 탐색 창에서 모델 카탈로그를 선택.
•
프로젝트에 있는 경우 왼쪽 탐색 창에서 모델 카탈로그를 선택.
3.
모델 목록에서 gpt-4o-mini 모델을 선택 . 검색 창을 사용하여 찾을 수 있다.
4.
모델 세부 정보 페이지에서 배포를 선택.
5.
이미 프로젝트에 있는 경우 모델은 해당 프로젝트에 배포된다. 아직 프로젝트에 없는 경우 프로젝트를 선택하거나 만들 수 있는 양식이 표시된다.
•
사용하고 싶은 프로젝트가 있다면 선택.
•
아직 프로젝트가 없다면:
1.
새 프로젝트 만들기를 선택 .
2.
프로젝트 이름 입력.
3.
프로젝트 만들기를 선택 .
6.
기본 배포 이름을 그대로 둔다. 배포를 선택.
7.
모델이 배포되면 플레이그라운드에서 열기를 선택하여 모델을 테스트.
플레이그라운드 (Playground)
•
Azure OpenAI Studio 내에서 제공되는 Playground 기능과 유사하다.
•
GPT 계열 모델을 직접 테스트하고, 프롬프트 설계나 파라미터 조정을 해볼 수 있다.
채팅 (Chat)
•
Azure OpenAI의 Chat GPT 모델 등을 사용해 대화형으로 질의응답을 수행하는 인터페이스.
•
사용자 메시지에 따라 모델의 응답을 확인하고, 로그로 관리할 수 있다.
필수 조건
•
Azure AI Foundry 허브를 만들려면 권한이 필요하거나 허브를 만들어 달라고 요청해야 한다.
◦
역할이 기여자 또는 소유자인 경우 그대로 진행.
◦
역할이 Azure AI Developer인 경우 허브가 이미 만들어져 있어야 한다.
◦
사용자 역할은 허브에서 Azure AI Developer or ContributorOwner여야 한다.
•
상단 메뉴바
•
코드 보기: 플레이그라운드 환경의 프롬프트와 설정을 애플리케이션에 통합할 수 있도록 언어별 코드 제공
•
배포: 웹앱에 배포, 웹앱 사용 시 계정에서 사용량이 발생
•
가져오기/내보내기: JSON/Prompty 파일로 가져오기/내보내기 가능
설정
1.
기존 배포를 사용하거나 기본/미세조정 모델에서 선택하여 불러올 수 있음.
2.
모델에 지침 및 컨텍스트 제공 ≒ 시스템 프롬프트.
a.
변경 내용 적용: 설정을 수정한 후 반드시 해당 버튼을 눌러야 반영됨.
b.
프롬프트 생성: 프롬프트 초안을 제공하면 해당 내용을 바탕으로 증강된 프롬프트를 생성해줌.
3.
섹션 추가
a.
안전 시스템 메시지: 프롬프트에 준비된 시스템 메시지를 하나 이상 삽입. 원하는 경우 변경하거나 추가할 수 있다. 토큰 사용은 플레이그라운드의 모델과 채팅을 시작할 때 발생한다.
b.
예: Few Shot 삽입
c.
Variable: 변수 추가
4.
데이터 원본 추가
•
데이터에 근거하는 데 사용
•
기존 데이터 원본을 선택하거나 기본 데이터가 빌드되는 원본으로 Azure Blob Storage, 데이터베이스, URL 또는 로컬 파일을 사용하여 새 데이터 연결을 만든다.
5.
매개 변수
•
기본 값
•
지난 메시지 포함
◦
각 새 API 요청에 포함할 이전 메시지 수.
◦
새 사용자 쿼리에 모델 컨텍스트를 제공하는 데 도움이 됨.
◦
이 숫자를 10으로 설정하면 사용자 쿼리 5개와 시스템 응답 5개가 포함된다.
•
최대 응답
◦
모델 응답당 토큰 수 제한을 설정.
◦
지원되는 토큰 수는 프롬프트(시스템 메시지, 예제, 메시지 기록 및 사용자 쿼리 포함)와 모델의 응답 간에 공유된다.
◦
토큰 하나는 일반적인 영어 텍스트의 경우 약 4자.
•
온도 & 상위 P(Top P)
◦
임의성을 제어.
◦
온도
▪
온도를 낮추면 모델이 더 반복적이고 결정적인 응답을 생성한다.
▪
온도를 높이면 예기치 않은 응답이나 창의적 응답이 늘어난다.
◦
Top P
▪
Top P를 낮추면 모델의 토큰 선택 영역이 우도가 더 높은 토큰으로 좁아진다.
▪
Top P를 늘리면 모델이 높은 우도와 낮은 우도를 가진 토큰 중에서 선택할 수 있다.
◦
온도와 Top P를 각각 조정하는 것을 추천 (둘 다 조정해서는 안 됨).
•
중지 시퀀스
◦
모델이 원하는 지점에서 응답을 종료하도록 설정.
◦
모델 응답이 지정 시퀀스 전에 종료되므로 중지 시퀀스 텍스트를 포함하지 않는다.
◦
ChatGPT의 경우 모델 응답이 후속 사용자 쿼리를 생성하지 않도록 하는 <|im_end|>를 사용.
◦
중지 시퀀스는 4개까지 포함할 수 있다.
•
빈도 패널티
◦
지금까지 텍스트에 나타난 빈도에 따라 토큰을 비례적으로 반복할 가능성을 줄인다.
→ 이렇게 하면 응답에서 정확히 동일한 텍스트를 반복할 가능성이 줄어든다.
•
현재 상태 패널티
◦
지금까지 텍스트에 표시된 토큰을 반복할 가능성을 줄인다.
→ 이렇게 하면 응답에 새 항목이 도입될 가능성이 높아진다.
도우미 (Assistant)
•
Azure OpenAI Service Assistants를 사용하면 사용자 지정 지침을 통해 필요에 맞게 조정되고 코드 인터프리터 및 사용자 지정 기능과 같은 고급 도구로 증강된 AI 도우미를 만들 수 있다.
•
추가 도구
◦
파일 검색 ≒ RAG
▪
파일에 액세스하기 위해 파일 검색 도구는 벡터 저장소 개체를 사용.
▪
파일을 벡터 저장소에 업로드.
▪
최대 크기가 512MB인 파일을 최대 10,000개 업로드할 수 있다.
▪
각 도우미에는 최대 1개의 벡터 저장소가 연결될 수 있다.
◦
코드 인터프리터 ≒ MCP
▪
Assistants API가 샌드박스 실행 환경에서 코드를 작성하고 실행할 수 있다.
▪
도우미가 코드를 반복적으로 실행하여 더 까다로운 코드, 수학 및 데이터 분석 문제를 해결할 수 있다.
▪
코드 인터프리터 도구와 함께 사용할 파일을 업로드할 수 있다.
◦
함수
▪
Assistants API는 함수 호출을 지원하므로 도우미에 대한 함수 구조를 설명한 다음 해당 인수와 함께 호출해야 하는 함수를 반환할 수 있다.
•
채팅, 채팅 로그
◦
채팅을 남기게 되면 로그가 기록된다.
◦
스레드 파일: 스레드에 연결된 리소스 목록, 현재 스레드로 범위가 지정되어 있으며 도우미 설정에 저장되어 있지 않는다.
◦
JSON 응답: 모델에서 JSON 응답을 가져오려면 이 컨트롤을 사용하도록 설정한다.
▪
또한 지침 또는 메시지에서 JSON을 언급하여 JSON을 생성하도록 모델에 지시해야 한다.
참고: 이 컨트롤은 GPT-4o, GPT-4 Turbo 및 gpt-3.5-turbo-1106 이후의 모든 GPT-3.5 Turbo 모델과 호환된다.
Foundry Portal | Agent
•
질문에 답하고(RAG), 작업을 수행하거나 워크플로를 완전히 자동화하는 데 사용할 수 있는 "스마트" 마이크로서비스 역할
•
생성 AI 모델의 힘과 실제 데이터 소스에 액세스하고 상호 작용할 수 있는 도구를 결합하여 이를 달성한다.
•
Azure AI Agent Service는 Azure OpenAI Assistants 와 동일한 와이어 프로토콜을 사용하므로 OpenAI SDK 또는 Azure AI Foundry SDK를 사용하여 몇 줄의 코드만으로 에이전트를 만들고 실행할 수 있다.
Azure AI Foundry SDK로 AI Agent를 만들려면 AI가 사용하는 모델, 작업을 완료하는 방법에 대한 지침, 다른 서비스에 액세스하고 상호 작용하는 데 사용할 수 있는 도구를 간단히 정의하면 된다.
agent = project_client.agents.create_agent(
model="gpt-4o-mini",
name="my-agent",
instructions="You are helpful agent",
tools=code_interpreter.definitions,
tool_resources=code_interpreter.resources,
)
Python
복사
•
에이전트를 정의한 후에는 활동 스레드¹ 위에서 실행을 호출하여 작업을 수행하도록 요청할 수 있다.
활동 스레드: 여러 에이전트와 사용자 간의 간단한 대화.
# Create a thread with messages
thread = project_client.agents.create_thread()
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Could you please create a bar chart for the operating profit using the following data and provide the file to me? Company A: $1.2 million, Company B: $2.5 million, Company C: $3.0 million, Company D: $1.8 million",
)
# Ask the agent to perform work on the thread
run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_id=agent.id)
# Fetch and log all messages to see the agent's response
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")
Python
복사
•
실행 작업이 호출될 때마다 Azure AI Agent Service는
1.
제공된 지침에 따라 모델을 실행하고
2.
에이전트가 호출하는 대로 도구를 호출하고
3.
결과를 사용자에게 반환하여 전체 도구 호출 수명 주기를
완료한다.
•
이점
•
자동 도구 호출
◦
도구 호출을 구문 분석하고 도구를 호출하고 응답을 처리할 필요가 없다.
◦
이 모든 작업은 이제 서버 측에서 수행된다.
•
안전하게 관리되는 데이터
◦
대화 상태를 직접 관리하는 대신 스레드를 사용하여 필요한 모든 정보를 저장할 수 있다.
•
기본 제공 도구
◦
Azure OpenAI Assistants에서 제공하는 파일 검색 및 코드 인터프리터 도구 외에도 Azure AI Agent Service에는 Bing, Azure AI Search, Azure Functions 등 데이터 소스와 상호 작용하는 데 사용할 수 있는 도구 세트도 함께 제공된다.
Azure 에이전트(Agent)와 Azure OpenAI 도우미(Assistant) 비교
•
두 서비스 모두 동일한 API와 SDK를 사용하여 에이전트를 빌드할 수 있지만, 추가적인 엔터프라이즈 요구 사항이 있는 경우 Azure AI Agent Service를 사용하는 것을 고려할 수 있다.
•
Azure AI Agent Service는 다음을 포함하여 어시스턴트의 모든 기능을 제공한다.
◦
유연한 모델 선택
▪
Azure OpenAI 모델이나 Llama 3, Mistral, Cohere와 같은 다른 모델을 사용하는 에이전트를 만든다.
▪
비즈니스 요구 사항을 충족하는 가장 적합한 모델을 선택한다.
◦
광범위한 데이터 통합
▪
Microsoft Bing, Azure AI Search 및 기타 API 등 다양한 데이터 소스에서 관련성 있고 안전한 엔터프라이즈 지식을 바탕으로 AI 에이전트를 지원한다.
◦
기업 수준의 보안
▪
안전한 데이터 처리, 키리스 인증 및 공개 출입 금지로 데이터 개인 정보 보호 및 규정 준수를 보장한다.
◦
저장소 솔루션 선택
▪
저장소 리소스에 대한 완벽한 가시성과 제어를 위해 자체 Azure Blob 저장소를 사용하거나, 안전하고 편리한 사용을 위해 플랫폼 관리 저장소를 사용할 수 있다.
허브 및 프로젝트 만들기
1.
Azure AI Foundry로 이동
프로젝트에 있는 경우 페이지 왼쪽 상단에서 Azure AI Foundry를 선택하여 홈 페이지로 이동.
2.
+ 프로젝트 만들기 선택 .
3.
프로젝트 이름 입력.
4.
허브가 있는 경우 가장 최근에 사용한 허브가 선택된 상태로 표시됨.
5.
두 개 이상의 허브에 접근할 수 있는 경우 드롭다운에서 다른 허브를 선택할 수 있다.
6.
7.
만들기(Create) 선택
모델 배포
1.
Azure AI Foundry 로그인.
2.
3.
프로젝트 개요에서 빌드 및 사용자 지정 아래에 있는 에이전트 선택 .
4.
Azure OpenAI 리소스 선택.
5.
Quotas and limits
Limit Name | Limit Value |
에이전트/스레드당 최대 파일 수 | |
에이전트 및 미세 조정을 위한 최대 파일 크기 | 512MB |
에이전트가 업로드한 모든 파일의 최대 크기 | 100GB |
에이전트 토큰 한도 | 토큰 한도 2,000,000개 |
빌드 및 사용자 지정
에이전트 / 플레이 그라운드
•
에이전트 탭
◦
설정
▪
지식: 접지 응답에 사용할 수 있는 데이터 원본을 연결하여 에이전트가 액세스할 수 있는 지식을 확장. 현재 각 데이터 원본 유형당 하나의 instance 지원된다.
▪
작업: 에이전트에게 이러한 작업에 대한 액세스 권한을 부여하여 작업을 수행할 수 있는 기능 제공. API 또는 SDK를 통해 모든 작업을 추가할 수 있다. 코드에 추가되면 플레이그라운드에 표시된다.
•
스레드 탭
◦
지금까지 실행된 에이전트 디버깅 가능
프롬프트 흐름
•
흐름
◦
새 흐름 만들기
▪
기본 흐름 예시가 포함되어 있음.
◦
흐름 진입
흐름은 컴퓨팅 세션이 활성화된 상태에서 실행 및 추가 도구 등 기타 설정 가능
▪
LLM, Prompt : 템플릿 언어로 jinja2를 사용, 다양한 입력 값을 허용하는 파라메트릭 프롬프트를 생성하는 데 도움이 되는 템플릿 전략을 제공, 고정 텍스트 대신 입력 이름을 {{}}로 둘러싸면 변경 가능
▪
Python: python 함수를 작성, 함수 입력 정의는 각 입력 필드에 대한 값을 입력할 수 있는 입력 섹션에 표시됨.
•
실행
◦
컴퓨팅 세션이 활성화된 상태에서 실행시키게 되면 에이전트 탭과 동일하게 실행 기록 추적이 가능하고 입력, 출력, 추적, 로그를 확인할 수 있다.
◦
일괄 처리 실행 기록도 볼 수 있으며 출력 상세 정보도 확인할 수 있다.