Microsoft Foundry 빠른 시작(클래식)

현재 보기:Foundry(클래식) 포털 버전 - 새 Foundry 포털의 버전으로 전환

이 빠른 시작에서는 Microsoft Foundry를 사용하여 다음을 수행합니다.

  • 프로젝트 만들기
  • 모델 배포
  • 채팅 완료 프로세스 실행
  • 에이전트 만들기 및 실행
  • 에이전트에 파일 업로드

Microsoft Foundry SDK는 Python, Java, TypeScript 및 C#을 비롯한 여러 언어로 제공됩니다. 이 빠른 시작에서는 이러한 각 언어에 대한 지침을 제공합니다.

이 문서의 나머지 부분에는 Foundry 프로젝트를 만들고 사용하는 방법이 설명되어 있습니다. 허브 기반 프로젝트를 대신 사용하려면 Quickstart: Microsoft Foundry(허브 프로젝트) 시작하세요. 어떤 유형의 프로젝트가 필요한가요?

필수 구성 요소

  • 활성 구독이 있는 Azure 계정입니다. 계정이 없는 경우, 무료 평가판 구독이 포함된 무료 Azure 계정을 만드세요.
  • 구독 또는 리소스 그룹에서 Foundry 계정 소유자 또는 Foundry 소유자 와 같은 Foundry 리소스를 만들 수 있는 역할에 액세스합니다. 권한에 대한 자세한 내용은 Microsoft Foundry에 대한Role 기반 액세스 제어 참조하세요.

    중요

    Foundry RBAC 역할의 이름이 최근에 바뀌었습니다. Foundry User, Foundry OwnerFoundry 계정 소유자Foundry Project Manager는 이전에 Azure AI 사용자, Azure AI 소유자, Azure AI 계정 소유자 및 Azure AI Project Manager로 이름이 지정되었습니다. 이름 바꾸기가 롤아웃되는 동안 일부 위치에서는 이전 이름이 계속 표시될 수 있습니다. 역할 ID 및 핵심 권한은 이름 바꾸기에 의해 변경되지 않습니다.

  • 개발 환경 준비에 설명된 대로 필요한 언어 런타임, 전역 도구 및 VS Code 확장을 설치합니다.

중요

시작하기 전에 개발 환경이 준비되었는지 확인합니다.
이 빠른 시작에서는 SDK 설치, 인증 및 샘플 코드 실행과 같은 시나리오별 단계에 중점을 둡니다.

포털에서 다양한 공급자의 다양한 최첨단 모델 카탈로그를 탐색할 수 있습니다. 이 자습서에서는 gpt-4o 모델을 검색한 다음 선택합니다.

  1. Microsoft Foundry 로그인합니다. New Foundry 토글이 꺼져 있는지 확인합니다. 이러한 단계는 Foundry(클래식)를 참조합니다.

  2. 프로젝트에 있는 경우 왼쪽 위 이동 경로에서 Microsoft Foundry를 선택하여 프로젝트를 종료합니다. 잠시 후에 새 항목을 만듭니다.

  3. 방문 페이지 또는 모델 카탈로그에서 gpt-4o (또는 gpt-4o-mini)를 선택합니다.

    스크린샷은 Foundry 포털에서 모델을 시작하는 방법을 보여 줍니다.

  4. 이 모델 사용을 선택합니다. 메시지가 표시되면 새 프로젝트 이름을 입력하고 만들기를 선택합니다.

  5. 배포 이름을 검토하고 만들기를 선택합니다.

  6. 그런 다음 배포 유형을 선택한 후 연결 및 배포를 선택합니다.

  7. 배포 이후 배포 페이지에서 플레이그라운드에서 열기를 선택합니다.

  8. 모델을 미리 배포하고 사용할 준비가 된 채 채팅 플레이그라운드에 방문합니다.

에이전트를 빌드하는 경우 에이전트 만들기로 시작할 수 있습니다. 단계는 비슷하지만 순서는 다릅니다. 프로젝트가 만들어지면 채팅 플레이그라운드 대신 에이전트 놀이터에 도착합니다.

코드 준비

코드는 Azure AI Projects 1.x SDK를 사용하며 Azure AI Projects 2.x와 호환되지 않습니다. Azure AI Projects 2.x 버전에 대한 Foundry(새) 설명서를 참조하세요.

  1. 다음 패키지를 설치합니다.

    pip install openai azure-identity azure-ai-projects==1.0.0
    
  2. 프로젝트의 시작 화면에서 프로젝트 엔드포인트를 찾습니다.

     Microsoft Foundry 모델 시작 화면의 스크린샷으로, 엔드포인트 URL과 복사 버튼을 보여줍니다.

  3. Python 스크립트를 실행하기 전에 CLI az login(또는 az login --use-device-code) 명령을 사용하여 로그인해야 합니다.

아래를 따르거나 코드를 가져옵니다.

모델과 채팅

채팅 완성은 AI 애플리케이션의 기본 구성 요소입니다. 채팅 완료를 사용하여 메시지 목록을 보내고 모델에서 응답을 받을 수 있습니다.

코드는 Azure AI Projects 1.x SDK를 사용하며 Azure AI Projects 2.x와 호환되지 않습니다. Azure AI Projects 2.x 버전에 대한 Foundry(새) 설명서를 참조하세요.

코드에서 endpoint를 당신의 엔드포인트로 대체하세요.

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

project = AIProjectClient(
    endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
    credential=DefaultAzureCredential(),
)

models = project.get_openai_client(api_version="2024-10-21")
response = models.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful writing assistant"},
        {"role": "user", "content": "Write me a poem about flowers"},
    ],
)

print(response.choices[0].message.content)

에이전트와 채팅

에이전트를 만들고 채팅합니다.

코드는 Azure AI Projects 1.x SDK를 사용하며 Azure AI Projects 2.x와 호환되지 않습니다. Azure AI Projects 2.x 버전에 대한 Foundry(새) 설명서를 참조하세요.

코드에서 endpoint를 당신의 엔드포인트로 대체하세요.

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FilePurpose

project = AIProjectClient(
    endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
    credential=DefaultAzureCredential(),
)

agent = project.agents.create_agent(
    model="gpt-4o",
    name="my-agent",
    instructions="You are a helpful writing assistant")

thread = project.agents.threads.create()
message = project.agents.messages.create(
    thread_id=thread.id, 
    role="user", 
    content="Write me a poem about flowers")

run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
if run.status == "failed":
    # Check if you got "Rate limit is exceeded.", then you want to get more quota
    print(f"Run failed: {run.last_error}")

# Get messages from the thread
messages = project.agents.messages.list(thread_id=thread.id)

# Get the last message from the sender
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
    if message.run_id == run.id and message.text_messages:
        print(f"{message.role}: {message.text_messages[-1].text.value}")

# Delete the agent once done
project.agents.delete_agent(agent.id)
print("Deleted agent")

에이전트에 파일 추가

에이전트는 도구를 사용하여 강력한 기능을 제공합니다. 지식 검색을 수행할 수 있는 파일 검색 도구를 추가해 보겠습니다.

코드는 Azure AI Projects 1.x SDK를 사용하며 Azure AI Projects 2.x와 호환되지 않습니다. Azure AI Projects 2.x 버전에 대한 Foundry(새) 설명서를 참조하세요.

코드에서 endpoint를 당신의 엔드포인트로 대체하세요.

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FileSearchTool

project = AIProjectClient(
    endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
    credential=DefaultAzureCredential(),
)

# Upload file and create vector store
file = project.agents.files.upload(file_path="./product_info_1.md", purpose=FilePurpose.AGENTS)
vector_store = project.agents.vector_stores.create_and_poll(file_ids=[file.id], name="my_vectorstore")

# Create file search tool and agent
file_search = FileSearchTool(vector_store_ids=[vector_store.id])
agent = project.agents.create_agent(
    model="gpt-4o",
    name="my-assistant",
    instructions="You are a helpful assistant and can search information from uploaded files",
    tools=file_search.definitions,
    tool_resources=file_search.resources,
)

# Create thread and process user message
thread = project.agents.threads.create()
project.agents.messages.create(thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?")
run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)

# Handle run status
if run.status == "failed":
    print(f"Run failed: {run.last_error}")

# Print thread messages
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
    if message.run_id == run.id and message.text_messages:
        print(f"{message.role}: {message.text_messages[-1].text.value}")

# Cleanup resources
project.agents.vector_stores.delete(vector_store.id)
project.agents.files.delete(file_id=file.id)
project.agents.delete_agent(agent.id)

리소스 정리

만든 리소스가 더 이상 필요하지 않은 경우 프로젝트와 연결된 리소스 그룹을 삭제합니다.

  • Azure 포털에서 리소스 그룹을 선택한 다음 삭제 선택합니다. 리소스 그룹을 삭제할지 확인합니다.