Jump to content

CLOVA STUDIO 테스트앱 API호출 문의


kobaco

Recommended Posts

안녕하세요.
현재 NAVER CLOVA STUDIO를 사용하다 문제가 생겼는데 해결이 안되어 문의드립니다!

다름이 아니라, 저는 지금 NAVER CLOVA STUDIO 플레이 그라운드를 활용하고 있습니다.
또한, CLOVA STUDIO에서 테스트 앱을 생성하여, Curl 방식으로 API를 통해 CLOVA STUDIO를 활용하려고 계획중입니다.

다만, 제가 Curl 방식으로 터미널에서 직접 호출도 해보고, 자바코드로 API를 직접 호출 해보기도 하였습니다.
하지만, 응답은 200으로 잘오고 내용도 잘 나오는거 같은데, text 부분의 한글 결과값만 깨져서 나옵니다...
분명히 응답 헤더값에는 utf-8로 인코딩이 되어있다고 나와 있는데, utf-8로 설정을 해도 한글은 계속 깨져서 나오는 상황입니다.
혹시나 다른 인코딩일까 싶어, EUC-KR, CP949, UTF-16, UTF-32 등의 버전으로도 설정을 해봤으나, 여전히 한글만 물음표(?)형식으로 깨지는 상황입니다.

해당 문제에 어떻게 해결할 수 있는지에 대한  문의를 드립니다!

아래 사진은 문제 상황에 대한 자료이며,
아래 코드는 제가 사용한 curl, invoke-WebRequest, 자바코드입니다.

 

 

CURL

curl --location --request POST 'https://clovastudio.apigw.ntruss.com/testapp/v1/completions/LK-D2' \
--header '' \
--header '' \
--header '' \
--header 'Content-Type: application/json' \
--data '{
  "text" : "##\n상품:현대자동차\n키워드:안전,가족\n메시지:현대자동차의 안전한 운전 환경과 가족 중심의 디자인은 정말 감명 깊어요. 가족 모두가 함께하는 여정을 안심하며 즐길 수 있어서 좋아요.\n##\n상품:멀티비타민\n키워드:에너지\n메시지:원래 건강기능식품 같은 거 잘 안 챙겨 먹는데 이건 꼭 먹어요. 야근과 회식 잦은 직장인들에게 필수템! 확실히 체력적으로 힘든게 덜 하네요.\n##\n상품:다짐 필라테스\n키워드:휴식\n메시지:무료 체험을 통해 다짐 필라테스의 매력을 느낄 수 있어요. 전문 강사와 함께 몸과 마음의 균형을 찾아낼 수 있어요.\n##\n상품:인터파크 동남아투어 패키지\n키워드:특별 혜택 3종 세트\n메시지:특별 혜택 3종 세트로 더욱 특별한 인터파크 동남아투어 패키지! 여행을 더욱 풍성하게 만들어준 최고의 선택이에요.\n##\n상품:\n키워드:\n메시지:",
  "start" : "",
  "restart" : "",
  "includeTokens" : true,
  "topP" : 0.8,
  "topK" : 0,
  "maxTokens" : 100,
  "temperature" : 0.6,
  "repeatPenalty" : 5.0,
  "stopBefore" : [ "상품:", "##" ],
  "includeAiFilters" : true
}'

 

Invoke-WebRequest

Invoke-WebRequest -Uri 'https://clovastudio.apigw.ntruss.com/testapp/v1/completions/LK-D2' -Method POST -Headers @{ 'X-NCP-CLOVASTUDIO-API-KEY' = ''; 'X-NCP-APIGW-API-KEY' = ''; 'X-NCP-CLOVASTUDIO-REQUEST-ID' = ''; 'Content-Type' = 'application/json' } -Body '{"text":"##\n상품:현대자동차\n키워드:안전,가족\n메시지:현대자동차의 안전한 운전 환경과 가족 중심의 디자인은 정말 감 명 깊어요. 가족 모두가 함께하는 여정을 안심하며 즐길 수 있어서 좋아요.\n##\n상품:멀티비타민\n키워드:에너지\n메시지:원래 건강기능식품 같은 거 잘 안 챙겨 먹는데 이건 꼭 먹어요.  야근과 회식 잦은 직장인들에게 필수템! 확실히 체력적으로 힘든게 덜 하네요.\n##\n상품:다짐 필라테스\n키워드:휴식\n메시지:무료 체험을 통해 다짐 필라테스의 매력을 느낄 수 있어요.  전문 강사와 함께 몸과 마음의 균형을 찾아낼 수 있어요.\n##\n상품:인터파크 동남아투어 패키지\n키워드:특별 혜택 3종 세트\n메시지:특별 혜택 3종 세트로 더욱 특별한 인터파크 동남아투어 패키지! 여행을 더욱 풍성하게 만들어준 최고의 선택이에요.\n##\n상품:\n키워드:\n메시지:","start":"","restart":"","includeTokens":true,"topP":0.8,"topK":0,"maxTokens":100,"temperature":0.6,"repeatPenalty":5.0,"stopBefore":["상품:","##"],"includeAiFilters":true}'

 

 

 

자바 코드

 public String generateHeadCopy(
            GenerateHeadCopyRequest generateHeadCopyRequest
    )  {
        HttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("https://clovastudio.apigw.ntruss.com/testapp/v1/completions/LK-D2");

        // Headers
        httpPost.addHeader("");
        httpPost.addHeader("X-NCP-APIGW-API-KEY", "");
        httpPost.addHeader("X-NCP-CLOVASTUDIO-REQUEST-ID", "");
        httpPost.addHeader("Content-Type", "application/json");

        // Request body
        String requestBody = "{\n" +
                "  \"text\" : \"##\\n상품:현대자동차\\n키워드:안전,가족\\n메시지:현대자동차의 안전한 운전 환경과 가족 중심의 디자인은 정말 감명 깊어요. 가족 모두가 함께하는 여정을 안심하며 즐길 수 있어서 좋아요.\\n##\\n상품:멀티비타민\\n키워드:에너지\\n메시지:원래 건강기능식품 같은 거 잘 안 챙겨 먹는데 이건 꼭 먹어요. 야근과 회식 잦은 직장인들에게 필수템! 확실히 체력적으로 힘든게 덜 하네요.\\n##\\n상품:다짐 필라테스\\n키워드:휴식\\n메시지:무료 체험을 통해 다짐 필라테스의 매력을 느낄 수 있어요. 전문 강사와 함께 몸과 마음의 균형을 찾아낼 수 있어요.\\n##\\n상품:인터파크 동남아투어 패키지\\n키워드:특별 혜택 3종 세트\\n메시지:특별 혜택 3종 세트로 더욱 특별한 인터파크 동남아투어 패키지! 여행을 더욱 풍성하게 만들어준 최고의 선택이에요.\\n##\\n상품:\\n키워드:\\n메시지:\",\n" +
                "  \"start\" : \"\",\n" +
                "  \"restart\" : \"\",\n" +
                "  \"includeTokens\" : true,\n" +
                "  \"topP\" : 0.8,\n" +
                "  \"topK\" : 0,\n" +
                "  \"maxTokens\" : 100,\n" +
                "  \"temperature\" : 0.6,\n" +
                "  \"repeatPenalty\" : 5.0,\n" +
                "  \"stopBefore\" : [ \"상품:\", \"##\" ],\n" +
                "  \"includeAiFilters\" : true\n" +
                "}";
        try {
            httpPost.setEntity(new StringEntity(requestBody));

            // Send the request and get the response
            HttpResponse response = httpClient.execute(httpPost);
            Header contentTypeHeader = response.getFirstHeader("Content-Type");
            if (contentTypeHeader != null) {
                String contentType = contentTypeHeader.getValue();
                System.out.println("Content-Type: " + contentType);
            }

            // Get the response body as a byte array
            InputStream inputStream = response.getEntity().getContent();
            ByteArrayOutputStream result = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int length;
            while ((length = inputStream.read(buffer)) != -1) {
                result.write(buffer, 0, length);
            }

            String responseBody = result.toString("UTF-8");
            System.out.println(responseBody);
            log.info(responseBody);
            return responseBody;
        } catch (Exception e) {
            System.err.println("An error occurred: " + e.getMessage());
        }

 

image.png

링크 복사
다른 사이트에 공유하기

안녕하세요, @kobaco 님,

터미널 인코딩 설정이 필요해보입니다.

자바 코드의 경우 try 아래의 setEntity를 수정 부탁드립니다.

httpPost.setEntity(new StringEntity(requestBody)); // 변경전

httpPost.setEntity(new StringEntity(requestBody, "UTF-8")); // 변경후 

감사합니다.

링크 복사
다른 사이트에 공유하기

게시글 및 댓글을 작성하려면 로그인 해주세요.



로그인
×
×
  • Create New...