最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java制作專(zhuān)屬智能陪聊機(jī)器人詳解

 更新時(shí)間:2021年11月29日 09:58:19   作者:大數(shù)據(jù)小禪  
人工智能一直是最近的熱點(diǎn)話(huà)題,,這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)智能陪聊機(jī)器人,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.智能陪聊機(jī)器人演示

人工智能一直是最近的熱點(diǎn)話(huà)題,自動(dòng)人工智能但是以來(lái)應(yīng)用領(lǐng)域就不斷的擴(kuò)大,在未來(lái)人工智能也會(huì)在人們的生活中不斷普及與應(yīng)用。這篇博文中的陪聊機(jī)器人,使用java進(jìn)行編寫(xiě),可以根據(jù)你發(fā)的信息進(jìn)行智能的回應(yīng),還算挺有意思的一個(gè)小玩意。最終效果的演示如下圖~

2.智能問(wèn)答平臺(tái)API介紹

這個(gè)陪聊機(jī)器人項(xiàng)目使用了青云課的智能API,通過(guò)調(diào)用API得到信息反饋。

具體的調(diào)用格式如下:

http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s
其中的%s傳入我們需要發(fā)送給機(jī)器人的內(nèi)容,就可以得到API調(diào)用結(jié)果的反饋。
  • key 固定參數(shù) free
  • appid 設(shè)置成0,為智能識(shí)別
  • msg 為搜索關(guān)鍵詞
  • result 表示返回狀態(tài),返回0表示正常
  • content api返回的信息內(nèi)容

可以看到數(shù)據(jù)是以JSON的形式進(jìn)行返回。

3.整合第三方JSON開(kāi)源庫(kù)

Gson是Google提供的類(lèi)庫(kù),可以用來(lái)處理java對(duì)象與JSON數(shù)據(jù)之間的映射,將一個(gè)JSON字符串轉(zhuǎn)換成一個(gè)java對(duì)象,方便我們對(duì)API返回的JSON格式的數(shù)據(jù)進(jìn)行處理,下面演示如何將Gson類(lèi)庫(kù)導(dǎo)入到我們的工程中。

首先可以去官網(wǎng)下載對(duì)應(yīng)的jar包,或者直接私信我獲取。獲取jar包之后找個(gè)全英文路徑進(jìn)行保存。這里我們使用的編輯器是IDEA,所以使用IDEA進(jìn)行演示,小伙伴們使用的是其他編輯器的話(huà)導(dǎo)入方法都是類(lèi)似的哦。在IDEA打開(kāi)如下界面,找到j(luò)ar包導(dǎo)入即可。

4.智能機(jī)器人項(xiàng)目框架搭建與模塊劃分

項(xiàng)目搭建:搭建的部分無(wú)太多要求,只需要使用IDEA創(chuàng)建一個(gè)新的普通java工程即可

項(xiàng)目模塊搭建:

  • model 類(lèi) 用來(lái)存放請(qǐng)求所返回的對(duì)象
  • util 類(lèi)用來(lái)存放工程所用到的工具類(lèi),比如說(shuō)HTTP請(qǐng)求解析類(lèi)
  • app 類(lèi)用來(lái)當(dāng)作機(jī)器人項(xiàng)目的入口
  • service 類(lèi)用來(lái)實(shí)現(xiàn)業(yè)務(wù)的接口

相關(guān)的兩個(gè)實(shí)體類(lèi)如下:

public class Request {

    private String key = "free";

    private String appid = "0";

    private String msg = "";


    public Request(){}


    public Request(String msg){
        this.msg = msg;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

public class Response {


    private int code;

    private String content;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}


5.封裝一個(gè)機(jī)器人HTTP工具類(lèi)

HTTP工具類(lèi)主要用來(lái)對(duì)api進(jìn)行請(qǐng)求,獲取返回的內(nèi)容

public class HttpUtils {

    public static String request(String api){

        HttpURLConnection connection = null;
        int responseCode = 0;
        try{
            URL url = new URL(api);
            //獲取對(duì)應(yīng)的連接對(duì)象
            connection = (HttpURLConnection) url.openConnection();
            responseCode = connection.getResponseCode();
        }catch (Exception e){
            e.printStackTrace();
        }

        if(200 <= responseCode && responseCode<=299){
            try(InputStream inputStream = connection.getInputStream();
                BufferedReader in =  new BufferedReader(new InputStreamReader(inputStream));
            ){
                StringBuilder response = new StringBuilder();
                String currentLine;
                while ((currentLine = in.readLine())!= null){
                    response.append(currentLine);
                }
                String result = response.toString();
                return result;
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return null;

    }

}

6.實(shí)現(xiàn)機(jī)器人service層的接口與定義

實(shí)現(xiàn)機(jī)器人接口層

public interface RobotService {

    Response qa(String msg) ;

}

實(shí)現(xiàn)機(jī)器人接口實(shí)現(xiàn)類(lèi),這個(gè)類(lèi)用來(lái)實(shí)現(xiàn)API的請(qǐng)求,將結(jié)果進(jìn)行封裝成實(shí)體類(lèi)返回

public class QkyRobotServiceImpl implements RobotService {

    private static final String apiTpl = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s";
    private static  final Gson gson = new Gson();
    @Override
    public Response qa(String msg) {
        

        String api = null;
        try {
            api = String.format(apiTpl, URLEncoder.encode(msg,"UTF-8") );
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        String result =  HttpUtils.request(api);

        //可以做邏輯判斷,比如null的時(shí)候,或者出錯(cuò)

        Response response = gson.fromJson(result,Response.class);

        return response;
    }
}

7.制作專(zhuān)屬于你的機(jī)器人入口

編寫(xiě)入口主類(lèi),調(diào)用封裝好的模塊進(jìn)行機(jī)器人入口主類(lèi)的編寫(xiě)

public class Main {

    private static final RobotService robotService = new QkyRobotServiceImpl();


    public static void main(String[] args)throws Exception {

        Scanner scanner = new Scanner(System.in);
        System.out.println("尊敬的C站大佬,請(qǐng)給我取個(gè)響亮的名字??!");
        System.out.println("-------------------------------");
        String name = scanner.nextLine();
        System.out.println("大佬好,我是大數(shù)據(jù)小禪博客里的機(jī)器人,直接給我下達(dá)指令哦~");
        System.out.println("-------------------------------");
        while (true){

            String input = scanner.nextLine();
            if("88".equalsIgnoreCase(input)){
                System.out.println("歡迎下次使用,拜拜");
                break;
            }else {
              Response response = robotService.qa(input);
              if(response != null && response.getCode() == 0){
                  System.out.println("-------------------------------");
                  System.out.println(name+":"+ new String(response.getContent().getBytes(),"UTF-8"));
                  System.out.println("-------------------------------");
              }else {
                  System.out.println(name+": 大佬你剛剛這句話(huà)我沒(méi)聽(tīng)懂,可否再陳述一次~");
              }
            }

        }
        scanner.close();


    }
}

8.把你的機(jī)器人打包使用

為了方便我們對(duì)項(xiàng)目的使用,這里我們使用IDEA將項(xiàng)目打包成jar包。通過(guò)下面的步驟,就可以將我們項(xiàng)目里的全部模塊與類(lèi)庫(kù)打包,需要調(diào)用的時(shí)候只需要使用 java -jar jar名字 即可。

首先點(diǎn)開(kāi)IDEA的Project Structure之后找到Artifacts選項(xiàng)

點(diǎn)擊Bulid,將項(xiàng)目進(jìn)行打包

最后回產(chǎn)生一個(gè)out文件夾,這里面的jar包也就是我們打包后的最終結(jié)果。

之后上傳到有java環(huán)境的終端就可以運(yùn)行。

9.總結(jié)

打包完成后我們的機(jī)器人項(xiàng)目就完成啦,希望小伙伴們通過(guò)這篇博文可以有所收獲。?

到此這篇關(guān)于java制作專(zhuān)屬智能陪聊機(jī)器人詳解的文章就介紹到這了,更多相關(guān)java 陪聊機(jī)器人內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 手把手帶你用java搞定青蛙跳臺(tái)階

    手把手帶你用java搞定青蛙跳臺(tái)階

    這篇文章主要給大家介紹了關(guān)于Java青蛙跳臺(tái)階問(wèn)題的解決思路與代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java實(shí)現(xiàn)微信搶紅包算法

    java實(shí)現(xiàn)微信搶紅包算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信搶紅包算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • SpringMVC處理Form表單實(shí)例

    SpringMVC處理Form表單實(shí)例

    這篇文章主要介紹了使用SpringMVC處理Form表單實(shí)例,非常具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-10-10
  • SpringBoot+Quartz實(shí)現(xiàn)定時(shí)任務(wù)的代碼模版分享

    SpringBoot+Quartz實(shí)現(xiàn)定時(shí)任務(wù)的代碼模版分享

    quartz?是一款開(kāi)源且豐富特性的Java?任務(wù)調(diào)度庫(kù),用于實(shí)現(xiàn)任務(wù)調(diào)度和定時(shí)任務(wù),本文主要和大家分享一個(gè)SpringBoot整合Quartz實(shí)現(xiàn)定時(shí)任務(wù)的代碼模版,需要的可以參考一下
    2023-06-06
  • 微服務(wù)SpringBoot整合Jasypt加密工具的場(chǎng)景分析

    微服務(wù)SpringBoot整合Jasypt加密工具的場(chǎng)景分析

    Jasypt是Java加密工具包,能支持對(duì)密碼的哈希加密,對(duì)文本和二進(jìn)制數(shù)據(jù)的對(duì)稱(chēng)加解密,還能集成SpringBoot項(xiàng)目對(duì)配置文件中的密鑰進(jìn)行加密存儲(chǔ),這篇文章主要介紹了微服務(wù)SpringBoot整合Jasypt加密工具,需要的朋友可以參考下
    2022-10-10
  • Java封裝好的mail包發(fā)送電子郵件的類(lèi)

    Java封裝好的mail包發(fā)送電子郵件的類(lèi)

    本文給大家分享了2個(gè)java封裝好的mail包發(fā)送電子郵件的類(lèi),并附上使用方法,小伙伴們可以根據(jù)自己的需求自由選擇。
    2016-01-01
  • Java中的遞歸方法示例介紹

    Java中的遞歸方法示例介紹

    大家好,本篇文章主要講的是Java中的遞歸方法示例介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • 將JSON字符串?dāng)?shù)組轉(zhuǎn)對(duì)象集合方法步驟

    將JSON字符串?dāng)?shù)組轉(zhuǎn)對(duì)象集合方法步驟

    這篇文章主要給大家介紹了關(guān)于將JSON字符串?dāng)?shù)組轉(zhuǎn)對(duì)象集合的方法步驟,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java SpringMVC異步處理詳解

    Java SpringMVC異步處理詳解

    這篇文章主要介紹了Java springmvc的處理異步,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • SpringBoot的@EnableAsync和@Async注解分析

    SpringBoot的@EnableAsync和@Async注解分析

    這篇文章主要介紹了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一個(gè)快速開(kāi)發(fā)框架,可以幫助開(kāi)發(fā)人員快速構(gòu)建基于Spring的應(yīng)用程序,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

太康县| 兴安盟| 临桂县| 沂水县| 楚雄市| 怀柔区| 元氏县| 遂溪县| 商河县| 镶黄旗| 长汀县| 饶阳县| 乐都县| 增城市| 扬州市| 从江县| 龙山县| 南丹县| 朝阳市| 惠水县| 曲麻莱县| 镇雄县| 内丘县| 博白县| 昌图县| 秭归县| 礼泉县| 尚义县| 杭锦旗| 绥江县| 崇义县| 乌兰察布市| 怀远县| 祁门县| 通河县| 莫力| 台江县| 东阳市| 新蔡县| 德格县| 利辛县|