https://github.com/sito-sikino/avatar-ui-core.git のプログラムを基に、Difyフロントとして改造したものです。
クラシックなターミナル調のUIコア。チャットUIからCLI統合まで拡張可能なプロジェクト基盤を提供します。
- ターミナルUI - グリーンオンブラックの古典的ターミナルインターフェース
- AIアバター - 発話同期型のピクセルアートアバター表示
- タイプライター効果 - 文字単位のリアルタイム表示アニメーション
- サウンドエフェクト - Web Audio APIによるタイピング音生成
- 完全な設定管理 - すべての動作パラメータを
.env
ファイルで一元管理
- メッセージ送信: 画面下部の入力欄にテキストを入力してEnterキー
- 会話履歴: 自動的にスクロールされる会話履歴を確認
- アバター: AIの応答中はアバターが応答アニメーション
- Python 3.8以上
- Dify環境があり、APIアクセス可能な事
- Dify Base URL
- Dify API KEY
# リポジトリのクローン(またはZIPダウンロード後に解凍)
git clone https://gh.iiji.jp/y-tominaga/avatar-ui-core.git
cd avatar-ui-core
仮想環境を使用することで、システムのPython環境を汚さずにプロジェクトを実行できます。
# 仮想環境の作成
python -m venv venv
# 仮想環境の有効化
# Linux/Mac:
source venv/bin/activate
# Windows (コマンドプロンプト):
venv\Scripts\activate
# Windows (PowerShell):
venv\Scripts\Activate.ps1
仮想環境が有効化されると、ターミナルのプロンプトに(venv)
が表示されます。
# requirements.txtに記載されたパッケージを一括インストール
pip install -r requirements.txt
# テンプレートファイルをコピーして.envファイルを作成
cp .env.example .env
# Windows: copy .env.example .env
テキストエディタで.env
ファイルを開き、必須項目を設定:
重要: .env
ファイルには機密情報が含まれるため、絶対にGitにコミットしないでください。
# アプリケーションの起動
python app.py
起動に成功すると以下のようなメッセージが表示されます:
* Running on http://0.0.0.0:45000
ブラウザで http://<your ip addr>:45000
にアクセスしてください。
当方では、Nginxをリバースプロキシにして利用しています。この時、特定ディレクトリ配下にこのプログラムを配置する場合、ルートディレクトリ階層の名前と深度を合わせるようにCUSTOM_PATHを合わせてください。
avatar-ui-core/
├── app.py # Flaskアプリケーション本体
├── settings.py # 設定管理モジュール
├── requirements.txt # Python依存関係
├── .env.example # 環境変数テンプレート
├── static/
│ ├── css/
│ │ └── style.css # UIスタイル定義
│ ├── js/
│ │ ├── app.js # メインエントリーポイント
│ │ ├── chat.js # チャット機能
│ │ ├── animation.js # アニメーション制御
│ │ ├── sound.js # 音響効果
│ │ └── settings.js # フロントエンド設定
│ └── images/
│ ├── idle.png # アバター(静止)
│ └── talk.png # アバター(発話)
└── templates/
└── index.html # HTMLテンプレート
systemd管理へ追加するためのファイルをsystemdディレクトリ配下に配置しています。
- avatar-ui-core-example.sh # avatar-ui-core起動スクリプト
- avatar-ui-core.service # avatar-ui-coreサービス化ファイル
すべての設定は.env
ファイルで調整できます。
- 事前にDifyを使用してアプリケーションを作成してください。
- Difyアプリケーションの「API」メニューを表示し、API用URLベースとAPIキーを確認してください。
.env
内の以下の設定が必要です:
AI_PROVIDER='dify'
DIFY_API_BASE=https://<dify-api-base-hostname>/v1
DIFY_API_KEY="<dify-api-key>"
DEFAULT_RESPONSE_MODE='blocking' # Streamingに関しては作成していませんのでこれで固定してください。
CUSTOM_PATH='/webapp' #こちらはサブディレクトリをNginx設定等で配下に設置する場合はそのパス構成に合わせてください。
画像ファイルを差し替える
static/images/idle.png
: 静止時のアバター(推奨: 140x140px)static/images/talk.png
: 発話時のアバター(推奨: 140x140px)
.env
ファイルで以下の項目を編集:
AVATAR_NAME=Spectra
AVATAR_FULL_NAME=Spectra Communicator
SYSTEM_INSTRUCTION=あなたはSpectraというAIアシスタントです。技術的で直接的なスタイルで簡潔に応答してください。回答は短く要点を押さえたものにしてください。
.env
ファイルで各種速度を調整:
# タイピング速度(ミリ秒、小さいほど高速)
TYPEWRITER_DELAY_MS=30
# 口パクアニメーション間隔(ミリ秒)
MOUTH_ANIMATION_INTERVAL_MS=100
.env
ファイルで音響効果をカスタマイズ:
BEEP_FREQUENCY_HZ=600 # 音の高さ(Hz)
BEEP_VOLUME=0.1 # 音量(0.0-1.0)
BEEP_DURATION_MS=30 # 音の長さ(ミリ秒)
注意: 設定変更後はアプリケーションの再起動が必要です。
- Flask 3.0.0 - Webアプリケーションフレームワーク
- python-dotenv 1.0.0 - 環境変数管理
- ES6 Modules - モジュール化されたJavaScript
- Web Audio API - ブラウザネイティブ音響生成
- CSS3 - モダンなスタイリング
- Fira Code - プログラミング用等幅フォント
MIT License - 詳細はLICENSEファイルを参照
- Developed by Sito Sikino
- Modified by Yuichi Tominaga ([email protected])
- requests
- Flask Framework
- Fira Code Font
注意: このプロジェクトはチャットフロントエンド開発の一環として開発したものです。本番環境での使用時は適切なセキュリティ対策を実施してください。