【클라우드 AI 개발 강좌】 CognitiveServices를 사용해 보았다

개요



이 기사는 클라우드 AI 개발 강좌의 3주차 진행 보고서입니다.
이전 기사 → 【클라우드 AI 개발 강좌】 Teams의 앵무새 돌려주는 봇을 만들어 보았다
다음 기사 → 힘이 다했기 때문에 업데이트가 없다고 생각합니다 ... 미안 해요!

클라우드 AI 개발 강좌 공식 페이지 → h tps://오오네. 코센-카레 r. 테 ch / 아이

진척



이번은 @ 미카와 씨의 기사인 부드러운 채팅봇을 만드는 방법 -1.Bot Framework에서 채팅봇을 만들어 보자! 를 참고로 하여 Azure Cognitive Services 을 사용한 Bot 만들기에 도전했습니다.

구독 필터 함정



조속히 빠졌습니다.
리소스 그룹에 앱을 추가하려고 했지만 어떻게 하면 구독을 업그레이드하는 것이 좋습니다.


2시간 정도 시행착오한 결과, 만료된 서브스크립션을 가지고 있어, 「서브스크립션 필터」에 의해 만료된 서브스크립션 밖에 보이지 않는 설정이 되어 있었던 것이 원인이라고 알았습니다.


TextAnalytics를 사용한 텍스트 분석



이전 기사에서 이미 Teams의 앵무새 반환 봇을 만들었기 때문에 이번은 부드러운 채팅봇을 만드는 방법 -3.Cognitive Service에서 텍스트 분석을 해보자!부터 시작합니다.

먼저 앵무새 반환 봇으로 만든 리소스 그룹에 '텍스트 분석' 앱을 추가합니다.
그 후, 참고로 한 기사를 참고로 EchoBot.cs를 다음과 같이 변경했습니다.

EchoBot.cs
// usingは省略
namespace TeamsEchoBot.Bots
{
    class ApiKeyServiceClientCredentials : ServiceClientCredentials
    {
        private readonly string apiKey;

        public ApiKeyServiceClientCredentials(string apiKey)
        {
            this.apiKey = apiKey;
        }

        public override Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            request.Headers.Add("Ocp-Apim-Subscription-Key", this.apiKey);
            return base.ProcessHttpRequestAsync(request, cancellationToken);
        }
    }

    public class EchoBot : ActivityHandler
    {
        private static readonly string CogKey = "xxxxxxxxxxxxxxxx";
        private static readonly string CogEndpoint = "https://xxxxxxxx.azure.com/";

        static TextAnalyticsClient AuthenticateClient()
        {
            var credentials = new ApiKeyServiceClientCredentials(CogKey);
            var client = new TextAnalyticsClient(credentials)
            {
                Endpoint = CogEndpoint
            };
            return client;
        }

        protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            var activity = turnContext.Activity;
            var messageText = activity.RemoveRecipientMention();

            if (string.IsNullOrEmpty(messageText))
            {
                return;
            }

            var client = AuthenticateClient();
            var lang = await client.DetectLanguageAsync(messageText, countryHint: "US");
            var score = await client.SentimentAsync(
                inputText: messageText,
                language: lang.DetectedLanguages[0].Iso6391Name,
                cancellationToken: cancellationToken
                );

            var replyText = $"{messageText}\n\nLang: {lang.DetectedLanguages[0].Name}   \nScore: {score.Score:0.00}";

            await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
        }
    }
}

사용자가 전달한 텍스트를 TextAnalytics로 분석한 후 앵무새를 반환하면서 언어와 점수를 회신합니다.
Azure에 배포하여 Teams에서 언어와 점수를 회신할 수 있었습니다.


다음 목표



이것으로 7/25까지의 미션은 모두 완료했습니다.
다음번에는 오리지날의 Bot를 만들기 위해서 다른 서비스도 여러가지 시험해 보고 싶습니다.
(최근 Discord의 봇을 만드는데 빠져서 모티베가 내려간다)

좋은 웹페이지 즐겨찾기