Svelte と ElizaBot を使用してシンプルなチャットボットを構築する
Svelte と ElizaBot を使用してシンプルなチャットボットを構築する
シンプルなチャットボットを作成したいと思ったことはありますか?この記事では、Svelte と古典的な ElizaBot を使用して、軽量のチャットボット アプリケーションを構築します。ユーザー インタラクションの処理方法、反応状態の管理方法、さらには入力遅延をシミュレートして現実的なエクスペリエンスを実現する方法を学びます。
飛び込んでみましょう!
前提条件
この手順を進めるには、次のものが必要です:
- Svelte の基礎知識。
- Svelte アプリを構築するための作業環境。お持ちでない場合は、Svelte 入門ガイドをご覧ください。
プロジェクトのセットアップ
まず、単純なチャットボット ライブラリである ElizaBot をインストールします。
npm install elizabot
好みの方法で新しい Svelte アプリを作成し、次のコードを Svelte コンポーネント ファイル (Chatbot.svelte など) に含めます。
コード
チャットボットの完全なコードは次のとおりです:
スクリプト
<script> import Eliza from 'elizabot'; import { afterUpdate, beforeUpdate } from 'svelte'; let div; let autoscroll; const eliza = new Eliza(); let comments = [{ author: 'eliza', text: eliza.getInitial() }]; function handleKeydown(event) { if (event.key === 'Enter') { const text = event.target.value.trim(); if (!text) return; comments = comments.concat({ author: 'user', text }); event.target.value = ''; const reply = eliza.transform(text); setTimeout(() => { comments = comments.concat({ author: 'eliza', text: '...', placeholder: true }); setTimeout(() => { comments = comments.filter((comment) => !comment.placeholder).concat({ author: 'eliza', text: reply }); }, Math.random() * 500); }, Math.random() * 200); } } beforeUpdate(() => { autoscroll = div && (div.offsetHeight + div.scrollTop) > (div.scrollHeight - 20); }); afterUpdate(() => { if (autoscroll) div.scrollTo(0, div.scrollHeight); }); </script>
スタイリング
<style> .chat { display: flex; flex-direction: column; height: 100%; max-width: 320px; } .scrollable { flex: 1 1 auto; border-top: 1px solid #eee; margin: 0 0 0.5em 0; overflow-y: auto; } article { margin: 0.5em 0; } .user { text-align: right; } span { padding: 0.5em 1em; display: inline-block; } .eliza span { background-color: #eee; border-radius: 1em 1em 1em 0; } .user span { background-color: #ea0a0a; color: white; border-radius: 1em 1em 0 1em; word-break: break-all; } </style>
HTMLマークアップ
<div> <hr> <h2> 仕組み </h2> <ol> <li> <p><strong>ユーザー入力の処理</strong>:</p> <ul> <li>ユーザーがメッセージを入力して「Enter」を押すと、作成者がユーザーとして設定されたメッセージがコメント配列に追加されます。</li> </ul> </li> <li> <p><strong>ElizaBot の返信</strong>:</p> <ul> <li>メッセージは、eliza.transform(text) を使用して応答のために ElizaBot に渡されます。</li> <li>入力の遅延がシミュレートされている間、プレースホルダー メッセージ (...) が表示されます。その後、入力をシミュレートするために、短いランダムな遅延の後に最終応答が表示されます。</li> </ul> </li> <li> <p><strong>自動スクロール</strong>:</p> <ul> <li>beforeUpdate および afterUpdate ライフサイクル フックにより、ユーザーが手動で上にスクロールしない限り、チャットが最新のメッセージまで自動的にスクロールされます。</li> </ul> </li> <li> <p><strong>スタイリング</strong>:</p> <ul> <li>ボットとユーザーからのメッセージは、動的 CSS クラス (eliza と user) を使用して異なるスタイルで表示されます。これは、ボットの応答とユーザーの入力を視覚的に区別するのに役立ちます。</li> </ul> </li> </ol> <hr> <h2> アプリの実行 </h2> <p>Svelte アプリを起動すると、ElizaBot とのチャット インターフェイスが表示されます。メッセージを入力してボットの応答を確認してください。遅延により、インタラクションに自然な感触が与えられます。</p> <hr> <h2> 機能強化 </h2> <p>これをさらに進めたいですか?以下にいくつかのアイデアを示します:</p> <ul> <li> <strong>送信ボタンを追加</strong>: 「Enter」を押す以外にメッセージを送信するボタンを追加します。これにより、アクセシビリティとユーザー エクスペリエンスが向上します。</li> <li> <strong>キーワード固有の応答</strong>: 特定のキーワードまたはフレーズにカスタム ロジックを追加して、ElizaBot の応答を強化します。</li> <li> <strong>メッセージのタイムスタンプ</strong>: 各メッセージのタイムスタンプを表示して、チャットをより現実的なものにします。</li> <li> <strong>チャット履歴の保存</strong>: チャット履歴をローカル ストレージまたはデータベースに保存して、ユーザーが以前の会話を再訪できるようにします。</li> <li> <strong>タイピング アニメーション</strong>: ElizaBot のアニメーションまたはスピナーを追加して、タイピングの遅延をより視覚的に魅力的にします。</li> <li> <strong>モバイルの応答性</strong>: モバイル デバイスでのシームレスなエクスペリエンスを実現するために、チャット インターフェイスがさまざまな画面サイズに適切に適応していることを確認します。</li> </ul> <hr> <h2> 結論 </h2> <p>このチュートリアルでは、Svelte と ElizaBot を使用して単純なチャットボットを構築しました。この例では、Svelte の反応性とライフサイクル フックの動作を示すとともに、チャットボットを実験する楽しくインタラクティブな方法も提供します。</p> </div>
以上がSvelte と ElizaBot を使用してシンプルなチャットボットを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Zustand非同期操作のデータの更新問題。 Zustand State Management Libraryを使用する場合、非同期操作を不当にするデータ更新の問題に遭遇することがよくあります。 �...
