Aisyah AIは、複数のAI機能を組み合わせたCloudFlareワーカーで構築された強力な電報ボットです。 Webを閲覧したり、リマインダーを設定したり、話したり、天気を予測したり、画像を分析したり、音声メッセージを理解したりできます。ボットは、Redisを通じて会話のコンテキストを維持し、プライベートチャットとグループの相互作用の両方に最適です。
?高度なAI機能
スマートツール
☁️現代建築
? API統合
いくつかの理由で、OpenAIモデル(特にGPT-3.5-TurboおよびGPT-4O-MINI)のみをサポートすることを選択しました。
注:代替モデルやプロバイダー(OpenRouter、Anthropicなど)への関心を理解しています。ただし、コードのシンプルさを維持し、一貫したボット動作を確保するために、Openaiの提供に焦点を当てることにしました。異なるモデルを使用する必要がある場合は、それに応じてプロジェクトをフォークしてモデル構成を変更する必要があります。
/start
ボットとの相互作用を開始します/settings
- ボット設定(LLMモデル、ペルソナ、音声など)の構成/help
- 利用可能なコマンドについてヘルプを取得します注:これは、学習と実験のために設計された個人的なプロジェクトです。
このプロジェクトは、いくつかのマイクロサービスに編成されています。
aisyah-ai-telegraph
:電報の相互作用を処理するメインオーケストレーターaisyah-ai-agent
:リクエストを処理するコアAIエージェントaisyah-ai-explorer
:Webブラウジング機能aisyah-ai-reminder
:リマインダー管理aisyah-ai-sonata
:テキストからスピーチサービスaisyah-ai-storm
:天候の予測aisyah-ai-vision
:画像分析aisyah-ai-whisper
:スピーチツーテキストサービスリポジトリをクローンします:
git clone https://github.com/husniadil/aisyah-ai.git
cd aisyah-ai
依存関係をインストールします:
yarn install
CloudFlareのセットアップ:最初に、CloudFlare APIトークンを取得します。
export CLOUDFLARE_API_TOKEN=your_api_token_here
echo ' export CLOUDFLARE_API_TOKEN=your_api_token_here ' >> ~ /.zshrc
注:APIトークン認証方法と競合するため、 wrangler login
使用しないでください。
環境ファイルの構成:
# Copy Cloudflare configuration files
cp packages/aisyah-ai-agent/wrangler.toml.example packages/aisyah-ai-agent/wrangler.toml
cp packages/aisyah-ai-explorer/wrangler.toml.example packages/aisyah-ai-explorer/wrangler.toml
cp packages/aisyah-ai-reminder/wrangler.toml.example packages/aisyah-ai-reminder/wrangler.toml
cp packages/aisyah-ai-sonata/wrangler.toml.example packages/aisyah-ai-sonata/wrangler.toml
cp packages/aisyah-ai-storm/wrangler.toml.example packages/aisyah-ai-storm/wrangler.toml
cp packages/aisyah-ai-telegraph/wrangler.toml.example packages/aisyah-ai-telegraph/wrangler.toml
cp packages/aisyah-ai-vision/wrangler.toml.example packages/aisyah-ai-vision/wrangler.toml
cp packages/aisyah-ai-whisper/wrangler.toml.example packages/aisyah-ai-whisper/wrangler.toml
# Copy environment variables
cp packages/aisyah-ai-agent/.dev.vars.example packages/aisyah-ai-agent/.dev.vars
cp packages/aisyah-ai-explorer/.dev.vars.example packages/aisyah-ai-explorer/.dev.vars
cp packages/aisyah-ai-reminder/.dev.vars.example packages/aisyah-ai-reminder/.dev.vars
cp packages/aisyah-ai-sonata/.dev.vars.example packages/aisyah-ai-sonata/.dev.vars
cp packages/aisyah-ai-storm/.dev.vars.example packages/aisyah-ai-storm/.dev.vars
cp packages/aisyah-ai-telegraph/.dev.vars.example packages/aisyah-ai-telegraph/.dev.vars
cp packages/aisyah-ai-vision/.dev.vars.example packages/aisyah-ai-vision/.dev.vars
cp packages/aisyah-ai-whisper/.dev.vars.example packages/aisyah-ai-whisper/.dev.vars
パッケージ固有の設定を構成します:
必要なKVネームスペースを作成し、IDをメモします。
# For settings storage
yarn w aisyah-ai-agent wrangler kv:namespace create SETTINGS
# For chat history
yarn w aisyah-ai-telegraph wrangler kv:namespace create CHAT_HISTORY
# For reminders
yarn w aisyah-ai-reminder wrangler kv:namespace create REMINDERS
# In packages/aisyah-ai-telegraph/.dev.vars
CLOUDFLARE_SUBDOMAIN=your_subdomain
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
UPSTASH_REDIS_REST_URL=your_redis_rest_url
UPSTASH_REDIS_REST_TOKEN=your_redis_rest_token
# In packages/aisyah-ai-agent/.dev.vars
OPENAI_API_KEY=your_openai_api_key
LANGCHAIN_API_KEY=your_langchain_api_key
CLOUDFLARE_SUBDOMAIN=your_subdomain
AGENT_PERSONA_AISYAH_DEFAULT=your_system_prompt_for_persona_default
AGENT_PERSONA_AISYAH_JAWIR=your_system_prompt_for_persona_jawir
AGENT_PERSONA_PERSONAL_ASSISTANT=your_system_prompt_for_persona_personal_assistant
# In packages/aisyah-ai-vision/.dev.vars
OPENAI_API_KEY=your_openai_api_key
# In packages/aisyah-ai-whisper/.dev.vars
OPENAI_API_KEY=your_openai_api_key
# In packages/aisyah-ai-sonata/.dev.vars
OPENAI_API_KEY=your_openai_api_key
# Get from https://supabase.io
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_storage_key
# Get from https://elevenlabs.io
ELEVENLABS_API_KEY=your_elevenlabs_api_key
# In packages/aisyah-ai-storm/.dev.vars
OPEN_WEATHER_MAP_API_KEY=your_openweathermap_api_key
# In packages/aisyah-ai-explorer/.dev.vars
# Get from https://programmablesearchengine.google.com/
GOOGLE_SEARCH_API_KEY=your_google_api_key
GOOGLE_SEARCH_ENGINE_ID=your_search_engine_id
# In packages/aisyah-ai-reminder/.dev.vars
REMINDERS_APP_ID=your_reminders_app_id
REMINDERS_API_KEY=your_reminders_api_key
前のステップから対応するKV名空間IDを使用して、各パッケージのwrangler.toml
更新します。
# In packages/aisyah-ai-telegraph/wrangler.toml
kv_namespaces = [
{ binding = " CHAT_HISTORY " , id = " your_chat_history_namespace_id " }
]
# In packages/aisyah-ai-agent/wrangler.toml
kv_namespaces = [
{ binding = " SETTINGS " , id = " your_settings_namespace_id " }
]
# In packages/aisyah-ai-reminder/wrangler.toml
kv_namespaces = [
{ binding = " REMINDERS " , id = " your_reminders_namespace_id " }
]
労働者を展開する:
yarn deploy
電報ボットをセットアップします:
yarn w
:ワークスペース固有のコマンドを実行しますyarn deploy
:すべての労働者を展開しますyarn types
:タイプスクリプトタイプを生成しますyarn format
:Biomeを使用したフォーマットコードpackages
ディレクトリに新しいパッケージを作成しますwrangler.toml
に構成を追加しますaisyah-ai-agent
に新しい機能を登録しますRedisインスタンスを設定します:
環境でRedisを構成します:
# Add to packages/aisyah-ai-telegraph/.dev.vars
UPSTASH_REDIS_REST_URL=your_redis_rest_url
UPSTASH_REDIS_REST_TOKEN=your_redis_rest_token
これらのAPIキーを取得して構成してください。
各パッケージのそれぞれの.dev.vars
ファイルにそれらを追加します。
ワーカーの展開は失敗します
wrangler.toml
の労働者名が一意であるかどうかを確認してくださいボットは応答しません
機能していない機能
設定してデバッグモードを有効にします。
# Add to .dev.vars
DEBUG_MODE=true
これにより、ワーカーコンソールでより詳細なログが提供されます。
問題が発生した場合:
このプロジェクトは、MITライセンスに基づいてライセンスされています。詳細については、ライセンスファイルを参照してください。