У нас СhatGPT відповідає на відгуки в Google Play Market

Усі статті, обговорення, новини про Mobile — в одному місці. Підписуйтеся на телеграм-канал!

Мене звати Юлія, я Android розробник і автор декількох мобільних застосунків з рейтингом 4.9/5, 4K+ відгуками та 500K+ інсталами.

play.google.com/...​ev?id=7572373447067384777

В мене виникла ідея написати програму, яка б відповідала на відгуки моїх користувачів замість мене. Раніше я відповідала на відгуки сама, але коли їх стало багато, я перестала це робити.

Чому відгуки мають отримувати відповідь від розробника?

  • Користувачі люблять отримувати відповідь.
  • Це збільшує шанси, що користувач перепише негативний відгук і він стане позитивним.
  • Це генерує контент, який містить потрібні бізнесу ключові слова.
  • Можу припустити, що додатки, які мають відповіді, ранжуються вище в рейтингу Маркету, так само як і додатки, які мають регулярні апдейти. Для Google це означає, що про додаток не забутий і удосконалюється. Google містить закритий алгоритм ранжування додатків, а значить нічого на 100% стверджувати не можна, проте припускаю, що це впливає позитивно.

⚠️ Google не хоче, щоб користувачі отримували автоматичні відповіді та попереджає про це в Документації. Наразі це працює як рекомендація, а не заборона.

Отримати доступ до API ChatGPT 3.5 може кожен за посиланням platform.openai.com/docs/introduction А до новішої версії API, ChatGPT 4.0, ті, хто хоча б раз сплатив за API GPT 3.5. Тобто має білінгову історію.

На цьому скріншоті видно, як стрімко зросла кількість оцінок після запуску програми.

У моєму випадку в 33% після відповіді на відгук, користувач накине зірочок. Рейтинг зросте. В 17% навпаки впаде. В 50% нічого не зміниться. Непоганий результат.

Приклад відповіді на не позитивний відгук.

Приклад відповіді на позитивний відгук. Програма завжди відповідає тією мовою, якою написано відгук.

Наступна Java функція запущена в хмарі GCP в Cloud Functions і викликається автоматично Cloud Scheduler кожні 3 год. Користувачі отримують відповідь швидко і при цьому я сплачую за Google сервіси менше 1 USD на місяць. Шаблон для відповіді на ★★★★★ відгуки та 1-4 зіркові різний. В першому випадку прошу ChatGPT подякувати користувачу. В другому прошу відповісти та врахувати, що моя мета, отримати 5-зірковий відгук. ChatGPT може звертатися до користувача на ім’я та завжди відповідає мовою користувача. Завжди ввічливий та емпатичний.

public void respondToReviews() throws GeneralSecurityException, IOException, ServerException, URISyntaxException {
        HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(getServiceAccountCredentials());
        AndroidPublisher service =  new AndroidPublisher.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                JSON_FACTORY,
                requestInitializer).setApplicationName("applicationName")
                .build();
        final AndroidPublisher.Reviews reviews = service.reviews();
        for (String packageName : packageNamesToProcess) {
            List<Review> reviewList = reviews.list(packageName).setMaxResults(50L).execute().getReviews();
            if (reviewList != null) {
                for (Review review : reviewList) {
                    boolean needRespond = true;
                    List<Comment> comments = review.getComments();
                    for (Comment comment : comments) {
                        if (comment.getDeveloperComment() != null) {
                            needRespond = false; //already responded
                            break;
                        }
                    }
                    if (needRespond) {
                        List<Comment> commentsList = review.getComments();
                        for (Comment comment : commentsList) {
                            if (comment.getUserComment() != null) {
                                UserComment userComment = comment.getUserComment();
                                final AndroidPublisher.Edits edits = service.edits();
                                AndroidPublisher.Edits.Insert editRequest =
                                        edits.insert(packageName, null /** no content */);
                                AppEdit appEdit = editRequest.execute();
                                Listing listing =
                                        edits.listings().get(packageName, appEdit.getId(), Locale.US.toString()).execute();
                                String requestToChatGPT;
                                if (userComment.getStarRating() < 5) {
                                    requestToChatGPT = "I received feedback from user \"" +
                                            review.getAuthorName() + "\" about my mobile application \"" +
                                            listing.getTitle() + "\" with score " +
                                            userComment.getStarRating() + " of 5 and text \"" +
                                            userComment.getText() + "\". Please give very short response on feedback in language " +
                                            userComment.getReviewerLanguage() + ". My goal is receiving 5 stars feedback.";
                                } else {
                                    requestToChatGPT = "I received positive feedback from user \"" +
                                            review.getAuthorName() + "\" about my mobile application \"" +
                                            listing.getTitle() + "\" with score " +
                                            userComment.getStarRating() + " of 5 and text \"" +
                                            userComment.getText() + "\". Please give short response on feedback in language " +
                                            userComment.getReviewerLanguage() + ". Thank the user.";
                                }
                                String reviewResponse = chatGPTProcessor.httpGetResponse(requestToChatGPT);
                            service.reviews().reply(packageName, review.getReviewId(),
                                    new ReviewsReplyRequest().setReplyText(reviewResponse)).execute();
                                break;
                            }
                        }
                    }
                }
            }
        }
    }

Застереження:

1. Якщо клієнт просить пофіксити баг, жаліється, chatGPT не надасть якісну відповідь. Часто він може пообіцяти виправити щось в наступному апдейті, хоча ви це не плануєте.

2. Відгук це зворотний зв’язок від клієнта і він фактично ігнорується, що не дає авторам продукту реагувати на важливі проблеми. Для продуктів розважальної тематики, як у мене, це ок. Для сфери охорони здоров’я, банкінгу тощо — погана ідея.

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вже й так помітно, що з через 4-5 місяців після релізу публічного ChatGPT підозріло багато апок стало відповідати на кожен відгук, де раніше взагалі на відгуки не відповідали.

Зазвичай я лишаю відгук, коли щось не працює або працює через одне місце.
Тому chatgpt тільки вибісить мене ще більше.

Індуські шаблонні відповіді ні про що вибішують так само. Обидва підходи свідчать про те що твій фідбек їм по цимбалах.

Дякую за статтю, цікава реалізація.

Підписатись на коментарі