J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»

Cet article utilise l '"API Talk" de l'IA "A3RT" fournie par Recruit pour créer une application de discussion, et même si cela peut être facilité en écrivant avec des commandes curl, Python et JavaScript, j'ose utiliser pleinement ** Java **. (Souffrance?) ~~ Il s'agit d'un article sur une personne de loisir qui a quitté GW.

introduction

Veuillez vous référer au Site officiel pour AI "A3RT".

API fournie

Cette fois, créons une application de conversation simple à l'aide de l'API Talk.

Environnement / préparation

Étant donné que la clé API est requise pour exécuter l'API, émettez-la à l'adresse ici.

Exemple de code

Une spécification simple qui boucle simplement cela en envoyant la chaîne de caractères acquise par l'entrée standard à l'API par POST et en obtenant le résultat. Tapez "bye" pour quitter. Étant donné que l'environnement créé était un environnement avec Proxy, l'exemple de code a une description autour de Proxy, mais il n'est pas nécessaire s'il s'agit d'un environnement sans Proxy. De plus, étant donné que certains des caractères de réponse sont des chaînes de caractères Unicode, il existe un processus pour les convertir en chaînes de caractères ordinaires. Veuillez me pardonner car la gestion des erreurs est lâche. : Ouvre la bouche et ferme les yeux:

python


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;

public class SmallTalkApp {

    public static void main(String[] args) {
        while (true) {
            HttpURLConnection conn = null;
            try {
                //Entrée standard
                System.out.print("[me]");
                BufferedReader br
                        = new BufferedReader(new InputStreamReader(System.in));
                String input = br.readLine();

                if (input == null || input.isEmpty()) {
                    continue;
                } else if (input.equals("bye")) {
                    System.out.println("Fin");
                    return;
                }

                //Données de transmission
                //Écrivez la clé API émise
                String data = "apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&query=" + input;

                //Connexion HTTP
                URL url = new URL("https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk");
                //Paramètres du proxy(Uniquement lorsqu'il y a un proxy dans l'environnement net)
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxyhost", 9999));
                conn = (HttpURLConnection) url.openConnection(proxy);
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setRequestMethod("POST");
                conn.setUseCaches(false);

                //Transmission POST
                try (DataOutputStream dos = new DataOutputStream(conn.getOutputStream())) {
                    dos.writeBytes(data);
                }

                //Recevoir une réponse
                int rescode = conn.getResponseCode();
                if (rescode == HttpURLConnection.HTTP_OK) {
                    try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
                        StringBuilder buf = new StringBuilder();
                        String line;

                        while ((line = reader.readLine()) != null) {
                            buf.append(line);
                        }
                        System.out.println(convertToOiginal(buf.toString()));
                    }
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {
                if (conn != null) {
                    conn.disconnect();
                }
            }
        }
    }

    /**
     *Convertir une chaîne Unicode en chaîne(u\3042 ⇒ Oh)
     *
     * @param unicode Chaîne de caractères contenant une chaîne de caractères unicode
     * @chaîne de retour
     */
    private static String convertToOiginal(String unicode) {
        String tmp = unicode;
        while (tmp.indexOf("\\u") > 0) {
            String str = tmp.substring(tmp.indexOf("\\u"), tmp.indexOf("\\u") + 6);
            int c = Integer.parseInt(str.substring(2), 16);
            tmp = tmp.replaceFirst("\\" + str, new String(new int[]{c}, 0, 1));
        }
        return tmp;
    }
}

résultat

Vous pouvez parler (yeux blancs: rolling_eyes:

[me]Vive le bon travail.
{"status": 0, "message": "ok", "results": [{"perplexity": 0.7773633993386415, "reply": "Je ne déteste pas tellement"}]}
[me]Merci beaucoup.
{"status": 0, "message": "ok", "results": [{"perplexity": 0.07521183094611102, "reply": "Tu fais bien?"}]}
[me]Oui. Tu fais bien?
{"status": 0, "message": "ok", "results": [{"perplexity": 1.5817458708187506, "reply": "Est-ce à moi?C'est un secret"}]}
[me]S'il vous plaît. s'il vous plaît dites-moi!
{"status": 0, "message": "ok", "results": [{"perplexity": 2.4087016492196223, "reply": "Tu fais bien?"}]}
[me]Je suis aussi un secret
{"status": 0, "message": "ok", "results": [{"perplexity": 0.23161212785866075, "reply": "Tu fais bien?"}]}
[me]Que faites-vous pendant vos vacances?
{"status": 0, "message": "ok", "results": [{"perplexity": 7.697953651890003, "reply": "Vous vérifiez bien?"}]}
[me]

en conclusion

Cette IA vient de sortir, alors attendons avec impatience les futurs apprentissages.

Recommended Posts

J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
J'ai essayé de créer une fonction de connexion avec Java
J'ai créé un client RESAS-API en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Un débutant Java a essayé de créer une application Web simple à l'aide de Spring Boot
J'ai essayé de créer une compétence Clova en Java
J'ai essayé d'utiliser JWT en Java
J'ai essayé de faire une demande en 3 mois d'inexpérimenté
J'ai essayé de moderniser une application Java EE avec OpenShift.
Je voulais juste créer une propriété réactive en Java
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé d'utiliser Dapr en Java pour faciliter le développement de microservices
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
J'ai essayé de faire une authentification de base avec Java
java j'ai essayé de casser un simple bloc
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
J'ai essayé de développer une application en 2 langues
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de casser le bloc avec java (1)
J'ai essayé de créer un exemple de programme en utilisant le problème du spécialiste des bases de données dans la conception pilotée par domaine
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
[Petite histoire] J'ai essayé de rendre java ArrayList un peu plus pratique
J'ai essayé d'utiliser une connexion à une base de données dans le développement Android
J'ai essayé d'implémenter la notification push Firebase en Java
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
J'ai essayé d'utiliser l'instruction Extended for en Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)
J'ai essayé de découvrir ce qui avait changé dans Java 9
J'ai essayé d'utiliser Java REPL
Faire un diamant en utilisant Java
J'ai essayé la métaprogrammation avec Java
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
J'ai trébuché lorsque j'ai essayé d'utiliser neo4j dans l'environnement jenv, alors prenez note
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
Faisons une application de calcul avec Java ~ Afficher la fenêtre de l'application
Je veux trouver un chemin relatif dans une situation où Path est utilisé
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
J'ai essayé de faire coexister Java Optional et la clause de garde
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java