Azure OpenAI Translator를 사용한 C# 콘솔 애플리케이션 구현

  • 5 minutes to read

소개

이 문서에서는 Azure Translator Text API를 활용하여 C# 콘솔 응용프로그램을 통해 영어 문장을 스페인어로 번역하는 방법을 설명합니다. 이 프로그램은 간단한 HTTP POST 요청을 사용하여 텍스트 번역을 수행하며, Azure Cognitive Services에서 제공하는 API와 연동됩니다.

사전 준비

Azure Translator Text API를 사용하려면 먼저 Azure Portal에서 리소스를 생성하고 API 키와 엔드포인트 URL을 준비해야 합니다. 다음은 필수 준비 단계입니다.

  1. Azure Portal에 로그인하여 Translator 리소스를 생성합니다.
  2. 생성된 리소스에서 API 키엔드포인트 URL을 확인합니다.
  3. **리소스 지역(Region)**을 기억해둡니다. 예: koreacentral.

좀 더 자세한 Translator 서비스 설정 가이드는 다음 문서를 참고하세요.

Azure Translator 서비스 설정 가이드

코드 구현

아래의 코드는 사용자가 입력한 영어 문장을 Azure Translator Text API를 통해 스페인어로 번역한 후 결과를 콘솔에 출력합니다.

TranslatorConsoleApp 이름으로 C# 12.0 이상의 프로젝트를 생성하고 다음 코드를 작성합니다.

전체 코드

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Text.Json;

class Program
{
    // Translator Text API 키와 엔드포인트 URL을 여기에 입력합니다.
    private const string subscriptionKey = "YOUR_AZURE_SUBSCRIPTION_KEY";
    private const string endpoint = "https://api.cognitive.microsofttranslator.com/";

    // 사용할 API 버전과 지역을 지정합니다.
    private const string region = "YOUR_RESOURCE_REGION";  // 예: "koreacentral"
    private const string route = "/translate?api-version=3.0&to=es";

    static async Task Main(string[] args)
    {
        Console.Write("번역할 영어 문장을 입력하세요: ");
        string textToTranslate = Console.ReadLine();

        string translatedText = await TranslateText(textToTranslate);
        Console.WriteLine($"\n번역된 문장 (스페인어): {translatedText}");
    }

    static async Task<string> TranslateText(string text)
    {
        using (var client = new HttpClient())
        {
            // HTTP 요청 헤더 설정
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Region", region);

            // 요청할 텍스트를 JSON 형식으로 변환
            var requestBody = new object[] { new { Text = text } };
            var content = new StringContent(JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json");

            // HTTP POST 요청 보내기
            var response = await client.PostAsync(endpoint + route, content);
            string result = await response.Content.ReadAsStringAsync();

            // JSON 응답에서 번역된 텍스트 추출
            using (JsonDocument doc = JsonDocument.Parse(result))
            {
                JsonElement root = doc.RootElement;
                JsonElement translations = root[0].GetProperty("translations");
                string translatedText = translations[0].GetProperty("text").GetString();
                return translatedText;
            }
        }
    }
}

위 코드에 API 키와 지역정보명을 정확히 입력하고 실행하면 다음과 같이 정상적으로 영어에서 스페인어로 번역이 완료됩니다.

다음 그림과 같이 "koreacentral"에 생성한 Translator 서비스의 Access Key를 subscriptionKey 상수에 넣고 테스트를 하면 됩니다.

액세스 키가 적용된 소스 코드

출력 결과

코드 설명

  1. API 키와 엔드포인트 설정

    • subscriptionKey: Azure Portal에서 제공된 API 키를 입력합니다.
    • endpoint: 생성한 Translator 리소스의 엔드포인트 URL을 설정합니다.
    • region: 리소스가 위치한 지역을 지정합니다. 예: koreacentral.
  2. HTTP 요청 구성

    • HttpClient를 사용해 Azure Translator API로 HTTP POST 요청을 보냅니다.
    • 사용자가 입력한 텍스트를 JSON 형식으로 직렬화하여 요청 본문에 포함합니다.
  3. 번역 결과 추출

    • JSON 응답에서 translations 필드를 파싱하여 번역된 텍스트를 추출하고 반환합니다.

NuGet 패키지 설치

프로젝트에서 JSON 처리를 위해 System.Text.Json 패키지가 필요합니다. 아래 명령어를 사용해 설치하세요.

dotnet add package System.Text.Json

실행 방법

  1. 위 코드를 Visual Studio 또는 다른 C# IDE에 복사하여 새 콘솔 프로젝트에 붙여넣습니다.
  2. API 키, 엔드포인트 URL, 리소스 지역을 코드에 맞게 수정합니다.
  3. 프로젝트를 빌드하고 실행합니다.
  4. 콘솔에서 영어 문장을 입력하면 스페인어로 번역된 결과가 출력됩니다.

예제 실행 화면

번역할 영어 문장을 입력하세요: Hello, how are you?
번역된 문장 (스페인어): Hola, ¿cómo estás?

결론

이 C# 콘솔 응용프로그램은 Azure Translator Text API를 사용하여 손쉽게 영어에서 스페인어로 번역을 수행합니다. 이 코드는 확장성과 유연성을 갖추고 있어, 추가적인 언어 지원이나 기능 구현이 가능합니다. 더 나아가 비동기 API 호출을 통해 네트워크 작업 중에도 효율적인 응답 처리를 보장합니다.

필요에 따라 예외 처리와 입력 검증 로직을 추가해 실무 환경에 맞게 개선할 수 있습니다.

이제 Azure OpenAI Translator API를 활용한 번역 프로그램을 성공적으로 개발했습니다. 다양한 언어와 기능을 추가해보세요!

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com