用Java實現基於Web端的AI機器人聊天

本文詳細介紹瞭如何用Java實現Web聊天機器人。經過建立一個新項目來學習一下!css


1、建立一個新項目java


添加所需的依賴項git

  1. 打開pom.xml文件在IDE中github

  2. 將下列內容添加到<repositories>區域web

    <repository> <id>JCenter</id> <url>https://jcenter.bintray.com</url></repository>
  3. 將下列內容添加到<dependencies>區域typescript

<dependency> <groupId>org.goldrenard</groupId> <artifactId>ab</artifactId> <version>1.0.7</version></dependency><dependency> <groupId>org.vaadin.artur</groupId> <artifactId>avataaar</artifactId> <version>1.0.0</version></dependency>


2、實現bot邏輯瀏覽器

bot邏輯是用人工智能標記語言(AIML)定義的。org.alicebot.ab.Bot類可以生成很是智能的答案。您只須要添加AIML文件並定義一個Spring管理的bean來訪問bot邏輯。服務器


添加現成的AIML文件微信

組成聊天機器人使用的人工智能的規則集在AIML文件中定義。您能夠建立本身的或下載隨時可用的文件。本文使用Richard Wallace的免費A.L.I.C.E.AIML文件。app

要將A.L.I.C.E.AIML添加到項目中:

  1. 去https://github.com/drwallace/aiml-en-us-foundation-alice .

  2. 下載zip文件包

  3. 解壓縮zip文件並將內容(僅.aiml文件)複製到Maven項目中的新src/resources/bots/alice/aiml/目錄(必須建立bots/alice/aiml/子目錄)。


定義Bean以訪問Bot邏輯


實現邏輯

  1. 在IDE中打開應用程序類

  2. 添加如下方法

@Beanpublic Bot alice() { return new Bot(BotConfiguration.builder() .name("alice") .path("src/main/resources") .build() );}@Beanpublic ScheduledExecutorService executorService() { return Executors.newScheduledThreadPool(2);}

3. 添加如下類成員

private final Chat chatSession;

4. 添加如下構造函數

public ChatService() { BotConfiguration botConfiguration = BotConfiguration.builder() .name("alice") .path("src/main/resources") .build(); Bot bot = new Bot(botConfiguration); chatSession = new Chat(bot);}

5. 向類中添加如下方法

public String answer(String message) { return chatSession.multisentenceRespond(message);}


實現Web用戶界面


要嚮應用程序添加web UI,您將實現一個UI組件來顯示消息和視圖。您還將添加CSS樣式,使應用程序看起來像一個典型的在線聊天。

實現可滾動的消息列表

要在Java中實現可滾動的消息列表,請執行如下操做:

  1. 建立新的MessageList類

  2. 實現類以下

public class MessageList extends Div { public MessageList() { setClassName(getClass().getSimpleName()); }
public void addMessage(String from, Avataaar avatar, String text, boolean isCurrentUser) { Span fromContainer = new Span(new Text(from)); fromContainer.addClassName(getClass().getSimpleName() + "-name"); Div textContainer = new Div(new Text(text)); textContainer.addClassName(getClass().getSimpleName() + "-bubble"); Div avatarContainer = new Div(avatar, fromContainer); avatarContainer.addClassName(getClass().getSimpleName() + "-avatar"); Div line = new Div(avatarContainer, textContainer); line.addClassName(getClass().getSimpleName() + "-row"); add(line); if (isCurrentUser) { line.addClassName(getClass().getSimpleName() + "-row-currentUser"); textContainer.addClassName(getClass().getSimpleName() + "-bubble-currentUser"); } line.getElement().callJsFunction("scrollIntoView"); }}

實現聊天視圖

要實現應用程序的聊天視圖,請執行如下操做:

  1. 在IDE中打開ChatView類

  2. 刪除構造函數

  3. 將如下成員添加到類中

private final UI ui;private final MessageList messageList = new MessageList();private final TextField message = new TextField();private final Chat chatSession;private final ScheduledExecutorService executorService;

4. 將如下構造函數添加到類中

public ChatView(Bot alice, ScheduledExecutorService executorService) { this.executorService = executorService; ui = UI.getCurrent(); chatSession = new Chat(alice); message.setPlaceholder("Enter a message..."); message.setSizeFull(); Button send = new Button(VaadinIcon.ENTER.create(), event -> sendMessage()); send.addClickShortcut(Key.ENTER); HorizontalLayout inputLayout = new HorizontalLayout(message, send); inputLayout.addClassName("inputLayout"); add(messageList, inputLayout); expand(messageList); setSizeFull();}

5. 向類中添加如下方法

private void sendMessage() { String text = message.getValue(); messageList.addMessage("You", new Avataaar("Name"), text, true); message.clear(); executorService.schedule(() -> { String answer = chatSession.multisentenceRespond(text); ui.access(() -> messageList.addMessage( "Alice", new Avataaar("Alice2"), answer, false)); },new Random().ints(1000, 3000).findFirst().getAsInt(), TimeUnit.MILLISECONDS);}

添加自定義樣式

要嚮應用程序添加自定義CSS樣式,請執行如下操做:

  1. 打開聊天室-視圖.css在IDE中的文件

  2. 添加如下選擇器和規則

.inputLayout {    width: 100%;}.MessageList { overflow-y: scroll; width: 100%; height: 100%;}
.MessageList-name { font-weight: bold;}
.MessageList-bubble { margin: .5em; padding: 1em; border-radius: var(--lumo-border-radius-s); background-color: var(--lumo-shade-20pct);}
.MessageList-bubble-currentUser { background-color: var(--lumo-primary-text-color); color: var(--lumo-base-color);}
.MessageList-avatar { display: flex; flex-direction: column; align-items: center; width: unset; height: unset; padding: 0;}
.MessageList-row { display: flex; align-items: center;}.MessageList-row-currentUser { flex-direction: row-reverse;}


生成並運行應用程序


第一次構建應用程序服務器端和客戶端依賴關係時,將下載。這可能須要一些時間。可是,後續的構建要快得多。

要構建和運行應用程序,請在IDE中執行application::main(String[])標準Java應用程序入口點。或者,能夠執行java-jar target/vaadin-chat-1.0-快照.jar或mvn彈簧-啓動:運行命令。

您能夠在瀏覽器中輸入http://localhos8080並運行。



   
你點的每一個「在看」,我都當成了喜歡

本文分享自微信公衆號 - Java學習提高(javaxuexitisheng)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索