다음을 통해 공유


Azure AI Foundry SDK를 사용하여 Python에서 기본 채팅 앱 빌드

Important

이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

이 빠른 시작에서는 Azure AI Foundry SDK를 사용하여 로컬 개발 환경을 설정하는 단계를 안내합니다. 프롬프트를 작성하고 이를 앱 코드의 일부로 실행하며 진행 중인 LLM 호출을 추적하고 LLM 출력에 대한 기본 평가를 실행합니다.

필수 조건

  • 이 빠른 시작을 따르기 전에 AI Foundry 플레이그라운드 빠른 시작을 완료하여 gpt-4o-mini 모델을 프로젝트에 배포합니다.

Azure CLI 설치 및 로그인

사용자 자격 증명을 사용하여 Azure OpenAI 서비스를 호출할 수 있도록 Azure CLI를 설치하고 로컬 개발 환경에서 로그인합니다.

대부분의 경우 다음 명령을 사용하여 터미널에서 Azure CLI를 설치할 수 있습니다.

winget install -e --id Microsoft.AzureCLI

특정 운영 체제나 설정에서 이러한 명령이 작동하지 않는 경우 Azure CLI 설치 방법 지침을 따를 수 있습니다.

Azure CLI를 설치한 후 az login 명령을 사용하여 로그인하고 브라우저를 사용하여 로그인합니다.

az login

또는 디바이스 코드를 사용하여 브라우저를 통해 수동으로 로그인할 수 있습니다.

az login --use-device-code

새 Python 환경 만들기

먼저 이 자습서에 필요한 패키지를 설치하는 데 사용할 새 Python 환경을 만들어야 합니다. 전역 Python 설치에 패키지를 설치하지 마세요. Python 패키지를 설치할 때 항상 가상 환경 또는 conda 환경을 사용해야 합니다. 그렇지 않으면 Python의 전역 설치가 중단될 수 있습니다.

필요한 경우 Python을 설치합니다.

Python 3.10 이상을 사용하는 것이 좋지만 Python 3.8 이상이 필요합니다. 적합한 Python 버전이 설치되어 있지 않은 경우 운영 체제에 Python을 설치하는 가장 쉬운 방법을 알아보려면 VS Code Python 자습서의 지침을 따릅니다.

가상 환경 만들기

이미 Python 3.10 이상이 설치되어 있는 경우 다음 명령을 사용하여 가상 환경을 만들 수 있습니다.

py -3 -m venv .venv
.venv\scripts\activate

Python 환경을 활성화한다는 것은 명령줄에서 python 또는 pip를 실행할 때 애플리케이션의 .venv 폴더에 포함된 Python 인터프리터를 사용하게 된다는 의미입니다.

참고 항목

deactivate 명령을 사용하여 Python 가상 환경을 종료하고 나중에 필요할 때 다시 활성화할 수 있습니다.

패키지 설치

설치 azure-ai-projects(미리 보기), azure-ai-inference (미리 보기) 및 azure-identity 패키지:

pip install azure-ai-projects azure-ai-inference azure-identity 

채팅 앱 빌드

chat.py 파일을 만듭니다. 다음 코드를 복사하여 붙여넣습니다.

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

project_connection_string = "<your-connection-string-goes-here>"

project = AIProjectClient.from_connection_string(
    conn_str=project_connection_string, credential=DefaultAzureCredential()
)

chat = project.inference.get_chat_completions_client()
response = chat.complete(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "system",
            "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?",
        },
        {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."},
    ],
)

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

연결 문자열 삽입

코드에서 Azure OpenAI 서비스를 호출하려면 프로젝트 연결 문자열 필요합니다.

AI Foundry 플레이그라운드 빠른 시작에서 만든 Azure AI Foundry 프로젝트에서 연결 문자열 찾습니다. 프로젝트를 연 다음 개요 페이지에서 연결 문자열 찾습니다.

스크린샷은 프로젝트의 개요 페이지와 연결 문자열 위치를 보여줍니다.

연결 문자열 복사하고 chat.py 파일에서 바꿉 <your-connection-string-goes-here> 다.

채팅 스크립트 실행

스크립트를 실행하여 모델의 응답을 확인합니다.

python chat.py

사용자 입력 및 프롬프트 템플릿에서 프롬프트 생성

스크립트는 하드 코딩된 입력 및 출력 메시지를 사용합니다. 실제 앱에서는 클라이언트 애플리케이션의 입력을 받아 모델에 대한 내부 지침이 포함된 시스템 메시지를 생성한 다음 모든 메시지와 함께 LLM을 호출합니다.

클라이언트 애플리케이션에서 입력을 받아 프롬프트 템플릿을 사용하여 시스템 메시지를 생성하도록 스크립트를 변경해 보겠습니다.

  1. 응답을 인쇄하는 스크립트의 마지막 줄을 제거합니다.

  2. 이제 메시지와 컨텍스트를 get_chat_response 사용하고, 프롬프트 템플릿을 사용하여 시스템 메시지를 생성하고, 모델을 호출하는 함수를 정의합니다. chat.py 파일에 다음 코드를 추가합니다.

    from azure.ai.inference.prompts import PromptTemplate
    
    
    def get_chat_response(messages, context):
        # create a prompt template from an inline string (using mustache syntax)
        prompt_template = PromptTemplate.from_message(
            prompt_template="""
            system:
            You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun.
    
            The user's first name is {{first_name}} and their last name is {{last_name}}.
            """
        )
    
        # generate system message from the template, passing in the context as variables
        system_message = prompt_template.render(data=context)
    
        # add the prompt messages to the user messages
        return chat.complete(
            model="gpt-4o-mini",
            messages=system_message + messages,
            temperature=1,
            frequency_penalty=0.5,
            presence_penalty=0.5,
        )
    

    참고 항목

    프롬프트 템플릿은 콧수염 형식을 사용합니다.

    get_chat_response 함수를 FastAPI 또는 Flask 앱에 대한 경로로 쉽게 추가하여 프런트 엔드 웹 애플리케이션에서 이 함수를 호출할 수 있습니다.

  3. 이제 프런트 엔드 애플리케이션에서 이 함수로 정보 전달을 시뮬레이션합니다. chat.py 파일의 끝에 다음 코드를 추가합니다. 메시지를 자유롭게 플레이하고 고유한 이름을 추가하세요.

    if __name__ == "__main__":
        response = get_chat_response(
            messages=[{"role": "user", "content": "what city has the best food in the world?"}],
            context={"first_name": "Jessie", "last_name": "Irwin"},
        )
        print(response.choices[0].message.content)
    

스크립트를 실행하여 이 새 입력을 사용하여 모델의 응답을 확인합니다.

python chat.py

다음 단계