Go で記述され、YAML で構成されたシンプルなチャットボット フレームワーク。このプロジェクトの目的は、いくつかの構成ファイルを使用して、非常にシンプルなテキストベースのチャットボットを作成することです。
このプロジェクトのインスピレーションはもともと Flottbot と Rasa を使用した私の経験から来ました。
インストール
ドキュメント
初めてのボット
clf.ymlファイル
fsm.ymlファイル
ボットを実行する
ボットと対話する
使用法
CLI
Docker Compose
Kubernetes
輸入
例
go get -u github.com/jaimeteb/chatto
Docker経由:
docker pull jaimeteb/chatto:latest
例、構成ガイド、リファレンスについては、ドキュメントを参照してください。
Chatto は、有限状態マシンの一貫性と機械学習の柔軟性を組み合わせています。これには、分類器、有限状態マシン、拡張機能という 3 つの主要コンポーネントがあります。
Chatto の非常に基本的なディレクトリ構造は次のようになります。
. └──data ├── clf.yml └── fsm.yml
まず、 data
ディレクトリと YAML ファイルを作成します。
mkdir datatouch データ/clf.yml データ/fsm.yml
clf.ymlファイルは、ユーザー メッセージをコマンド(インテント) に分類する方法を定義します。この非常に単純な構成から始めます。
分類: - コマンド: "turn_on" テキスト: - 「オンにする」 - 「オン」 - コマンド: "turn_off" テキスト: - 「オフにする」 - 「オフ」
fsm.ymlファイルは、状態間の遷移、これらの遷移を行うコマンド、およびその中で送信される応答を定義します。このファイルの内容から始めます。
トランジション: - から: - "initial"into: "on" コマンド: "turn_on" 答え: - テキスト: 「電源を入れています。」 - から: - "on" に: "initial" コマンド: "turn_off" 答え: - テキスト: 「電源を切ります。」 - テキスト: ""デフォルト: 不明: "それはできません。"
ボットを起動するには、次を実行します。
chatto --path データ/
Docker を使用している場合は、次を実行します。
ドッカーラン -それ -e CHATTO_DATA=./data -v $PWD/データ:/データ ジャイメテブ/チャット:最新 chatto --パスデータ
ボットと対話するには、次を実行します。
chatto cli
それでおしまい!これで、 「オン」または「オン」と言うとオン状態になり、 「オフ」または「オフ」と言うと初期状態に戻ります。ただし、 onからonに移行したり、 initialからInitialに移行したりすることはできません。
この単純な有限状態マシンの図は次のとおりです。
ボットをTelegram、Twilio、Slackなど好きなものと統合できます
YAML ファイルが配置されているディレクトリでchatto
実行するか、 --path
フラグを使用してファイルへのパスを指定します。
chatto --path ./your/data
Docker 上で実行するには、以下を使用します。
ドッカーラン -p 4770:4770 -e CHATTO_DATA=./your/data -v $PWD/your/data:/data ハイメテブ/チャット
chatto cli
ツールを使用できます。 CLI を使用すると、ボットの対話を簡単にテストできます。
chatto cli --url 'http://mybot.com' -port 4770
Chatto は Docker Compose 上でも使用できます。 docker-compose.yml
次のようになります。
バージョン: "3" サービス: chatto:image: jaimeteb/chatto:${CHATTO_VERSION} env_file: .envports: - 「4770:4770」ボリューム: - ${CHATTO_DATA}:/datadepends_on: - 外部 - redis ext:image: odise/busybox-curl # 証明書付きビジーボックスcommand: ext/extexpose: - 8770 ボリューム: - ${CHATTO_DATA}/ext:/ext redis:イメージ: bitnami/redis:6.0環境: - REDIS_PASSWORD=${STORE_PASSWORD} を公開: - 6379
これには、必要な環境変数を含む.env
ファイルが必要です。
# Chatto configuration CHATTO_VERSION=latest CHATTO_DATA=./your/data # Extension configuration CHATTO_BOT_EXTENSIONS_EXTENSION_NAME_URL=http://ext:8770 # Redis CHATTO_BOT_STORE_HOST=redis CHATTO_BOT_STORE_PASSWORD=pass # Logs CHATTO_BOT_DEBUG=true
すべてのファイルを含むディレクトリ構造は次のようになります。
. ├── data │ ├── ext │ │ ├── ext │ │ └── ext.go │ ├── bot.yml │ ├── chn.yml │ ├── clf.yml | └── fsm.yml ├── docker-compose.yml └── .env
最後に、次を実行します。
docker-compose up -d redis ext docker-compose up -d chatto
拡張機能サーバーは、その言語に従って実行する必要があります。
このdocker-compose.yml
ファイルでは、最初に Go 拡張機能をビルドする必要があります。
go build -o data/ext/ext data/ext/ext.go
Chatto を初期化する前に、拡張機能サーバーが実行されている必要があります。
展開の例は、 deploy/kubernetes
ディレクトリの下にあります。
親切 | 名前 | 説明 |
---|---|---|
秘密 | chatto-config-secrets | Chatto が認証に使用するトークンが含まれています |
構成マップ | chatto-config-envs | bot.ymlファイルの環境変数が含まれます |
構成マップ | chatto-config-files | clf.ymlおよびfsm.ymlファイルが含まれています |
導入 | chatto | jaimeteb/chatto Docker イメージに基づく Chatto のデプロイメント |
サービス | chatto-service | chatto 導入向けサービス |
イングレス | chatto-ingress | chatto-service サービスの Ingress |
次のコマンドを実行して Kubernetes にデプロイします。
kubectl apply -f ./deploy/kubernetes/
インポート可能なボット サーバーとクライアント パッケージが提供されており、独自のアプリケーションに埋め込むことができます。
サーバーを埋め込むには:
package mainimport ( "flag""github.com/jaimeteb/chatto/bot")func main() { port := flag.Int("port", 4770, "使用するポートを指定します。") path := flag.String (「パス」、「.」、「YAML ファイルへのパス」) flag.Parse() サーバー := bot.NewServer(*path, *port)サーバー.Run() }
クライアントを埋め込むには:
package myserviceimport ( "log""github.com/jaimeteb/chatto/bot")type MyService struct { chatto bot.Client}func NewMyService(url string, port int) *MyService { return &MyService{chatto: bot.NewClient(url,ポート)} }func (s *MyService) Submit(question *query.Question) error { 答え、err := s.chatto.Submit(question) if err != nil { return err } // 回答を stdoutfor _ に出力します、answer := 範囲の回答 { fmt.Println(answer.Text) nilを返す}
例の下にいくつかの構成ファイルを提供しました。リポジトリのクローンを作成し、目的のサンプルの-path
を指定してchatto
実行してテストします (拡張機能を使用するものについては、最初にそれぞれの拡張機能を実行します)。
これらの例の詳細については、ドキュメントを参照してください。
Mood Bot - Rasa の Mood Bot の chatto バージョン ボットに挨拶して会話を始めます。
ポケモン検索- ポケモンを名前または番号で検索します。
トリビア クイズ- 「開始」と入力して、簡単なトリビア クイズに答えます。