이 빠른 시작에서는 로컬 함수 호출을 사용하도록 설정된 AI 모델에 연결하는 .NET 콘솔 AI 채팅 앱을 만듭니다. 앱은 특정 SDK가 아닌 AI 추상화로 코드를 작성할 수 있도록 Microsoft.Extensions.AI 라이브러리를 사용합니다. AI 추상화는 최소한의 코드 변경으로 기본 AI 모델을 변경할 수 있습니다.
필수 구성 요소
- .NET 8.0 SDK 이상 - .NET 8.0 SDK설치하기.
- 이 샘플을 실행할 수 있도록 OpenAI API 키입니다.
필수 구성 요소
- .NET 8.0 SDK 이상 - .NET 8 SDK설치하십시오.
- Azure 구독 - 무료로 하나 만드세요.
- Azure 개발자 CLI(선택 사항) - Azure Developer CLI를 설치하거나 업데이트하십시오.
앱 만들기
다음 단계를 완료하여 AI 모델에 연결할 .NET 콘솔 앱을 만듭니다.
컴퓨터의 빈 디렉터리에서
dotnet new명령을 사용하여 새 콘솔 앱을 만듭니다.dotnet new console -o FunctionCallingAI디렉터리를 앱 폴더로 변경합니다.
cd FunctionCallingAI필요한 패키지를 설치합니다.
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsdotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsVisual Studio Code 또는 선택한 편집기에서 앱 열기
code .
AI 서비스 만들기
Azure OpenAI 서비스 및 모델을 프로비전하려면 Azure OpenAI 서비스 리소스 만들기 및 배포 문서의 단계를 완료합니다.
터미널 또는 명령 프롬프트에서 프로젝트 디렉터리의 루트로 이동합니다.
다음 명령을 실행하여 샘플 앱에 대한 Azure OpenAI 엔드포인트 및 모델 이름을 구성합니다.
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name> dotnet user-secrets set AZURE_OPENAI_API_KEY <your-Azure-OpenAI-key>
앱 구성
터미널 또는 명령 프롬프트에서 .NET 프로젝트의 루트로 이동합니다.
다음 명령을 실행하여 OpenAI API 키를 샘플 앱의 비밀로 구성합니다.
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
앱 코드 추가
앱은 Microsoft.Extensions.AI 패키지를 사용하여 AI 모델에 요청을 보내고 받습니다.
Program.cs 파일에서 다음 코드를 추가하여 AI 모델에 연결하고 인증합니다.
ChatClient또한 AI 모델이 코드에서 .NET 함수를 호출할 수 있도록 함수 호출을 사용하도록 구성됩니다.IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; string apiKey = config["AZURE_OPENAI_API_KEY"]; IChatClient client = new ChatClientBuilder( new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(apiKey)) .GetChatClient(deployment).AsIChatClient()) .UseFunctionInvocation() .Build();using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder(new OpenAIClient(key).GetChatClient(model ?? "gpt-4o").AsIChatClient()) .UseFunctionInvocation() .Build();AI 모델이 현재 날씨를 가져오기 위해 호출할 수 있는 인라인 함수를 포함하는 새
ChatOptions개체를 만듭니다. 함수 선언에는 논리를 실행하는 대리자와 AI 모델에 대한 함수의 용도를 설명하는 이름 및 설명 매개 변수가 포함됩니다.// Add a new plugin with a local .NET function // that should be available to the AI model. var chatOptions = new ChatOptions { Tools = [AIFunctionFactory.Create((string location, string unit) => { // Here you would call a weather API // to get the weather for the location. return "Periods of rain or drizzle, 15 C"; }, "get_current_weather", "Gets the current weather in a given location")] };chatHistory시스템 프롬프트를 추가하여 모델에 컨텍스트 및 지침을 제공합니다. AI 모델이 질문에 제대로 대답하기 위해 등록된 함수를 호출해야 하는 질문과 함께 사용자 프롬프트를 보냅니다.// System prompt to provide context. List<ChatMessage> chatHistory = [new(ChatRole.System, """ You are a hiking enthusiast who helps people discover fun hikes in their area. You are upbeat and friendly. """)]; // Weather conversation relevant to the registered function. chatHistory.Add(new ChatMessage(ChatRole.User, "I live in Montreal and I'm looking for a moderate intensity hike. What's the current weather like?")); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}"); ChatResponse response = await client.GetResponseAsync(chatHistory, chatOptions); Console.WriteLine($"Assistant >>> {response.Text}");dotnet run명령을 사용하여 앱을 실행합니다.dotnet run앱은 .NET 함수에서 제공하는 데이터를 포함하는 AI 모델의 완료 응답을 출력합니다. AI 모델은 등록된 함수를 사용할 수 있음을 이해하고 적절한 응답을 생성하기 위해 자동으로 호출했습니다.
리소스 정리
더 이상 필요하지 않은 경우 Azure OpenAI 리소스 및 GPT-4 모델 배포를 삭제합니다.
- Azure PortalAzure OpenAI 리소스로 이동합니다.
- Azure OpenAI 리소스를 선택한 다음, 삭제선택합니다.
다음 단계
.NET