AIがSakeSaySoの英語学習を支える仕組み
AIによる英語学習を表現したChatGPT/DALL·Eイラスト。 SakeSaySoのプロジェクトを進める中で、私たちは様々なAIツールを試行錯誤しながら、学習体験を自動化し豊かにする方法を探ってきました。このプロジェクトは当初、コンテンツ作成の自動化やセルフホスティング、プライバシー、オープンソースの原則を取り入れることを目指したサイドプロジェクトとして始まりました。ほとんどのアイデアは、東京の居酒屋での会話から生まれ、そこでは、飲み物よりも自由に流れている唯一のものは、言語学習を変えることについてのアイデアです。 アプリ自体、ロゴ、翻訳やコンテンツのほとんどは、ChatGPTやDALL·E 3(まさに、本アプリのロゴは数秒で作成され、その後SVGに変換されました)、Github Copilot、Claude.ai、その他のAIツールを使って開発されました。コンテンツを常に新鮮で魅力的に保つことが課題でしたが、これは大きなリソースを割くことなく解決する必要がありました。これはあくまで小規模なサイドプロジェクトです。そのため、私たちは大規模言語モデル(LLM)を活用し、日々のニュースサマリーやソーシャルメディアコンテンツの自動生成に挑戦しました。 自動ニュースサマリー(アプリ内) 私たちはRSSフィードを通じて様々なソースからニュースのヘッドラインを集約するシステムを開発しました。このプロセスは次のように進行します: ヘッドラインの取得: システムは、一般ニュース、科学、経済、スポーツなどのトピックに関する最近の記事を取得し、1週間以上前のコンテンツは除外します。 サマリーの生成: LLMを使用して、これらの記事の簡潔なサマリーと翻訳を生成します。モデルは、学習者に適した自然な言語を生成するのに役立ちます。 学習のためのフォーマット: サマリーは、重要な語彙やフレーズが強調されるようにフォーマットされ、語学習得に役立つ教育的な文脈を提供します。 自動ソーシャルメディア投稿 私たちは、エンゲージメントのための追加の接点を提供するため、ソーシャルメディアの自動化にも取り組みました。以下がそのアプローチです: ツイートの作成: システムは、日本語で軽いテーマの短いツイートを生成します。文化的に関連性があり、エンターテイニングな内容を作ることが目標であり、センシティブな話題や不快な内容を避けることに苦心しました。これはプロンプトエンジニアリング自体の挑戦でした。 多段階の精緻化: 生成されたツイートは、いくつかの段階を経て精緻化されます: コンテンツ評価: 適切さ、長さ(プラットフォームの文字数制限を守る)、教育的価値を確認します。 言語の質: 言語の自然さと明確さが確認され、語学学習において重要な要素となります。 翻訳と注釈: 英語の翻訳と簡単な説明を追加し、理解を助けます。 自動投稿: 承認されたコンテンツは自動的にスケジュールされ、手動の介入なしに投稿されます。 コンテンツが必ずしも驚くほど完璧で、完全に意味が通るとは限りませんが、楽しく言語や文化に触れる方法です。 生成されたツイート例(日本語とその英語翻訳を含む): 円相場が安定(あんてい)して、インフレイザーさんのツイートも減ったけど、BARではまだまだ盛り上がっているみたい。 The Bitcoin price has stabilized, and even the influencers' tweets have slowed down, but the bars are still lively. 🍺🎉 @sakesayso の投稿を参照 X で元の投稿を見る 私たちは、プロンプトやワークフローステップをさらに洗練させながら、その結果を見守っています。 データパイプラインとワークフローツール これらの自動化されたプロセスを管理するため、既存のソリューションは複雑すぎるか、私たちのニーズに合わないものでした。その結果、コンテンツ生成と配信に関わるワークフローを効率的に管理するために、カスタムツールを開発しました。Goで構築された軽量なワークフローオーケストレーションフレームワークであるKyodo TechのOrchidフレームワーク (GitHub)を使用し、複数ステップのワークフローを効率的に処理しています。主な機能は以下の通りです: 有向グラフ構造: ワークフローは、各ノードがタスクを表し、エッジが依存関係に基づいた実行順序を定義する有向非巡回グラフ(DAG)として定義されます。 タスク間のデータ受け渡し: タスクは標準化されたフォーマットでデータを受け渡し、モジュール性とスケーラビリティを確保します。 エラーハンドリングとリトライ: Orchidは堅牢なエラーハンドリングを提供し、一時的な問題で失敗したタスクに対してカスタマイズ可能なリトライポリシーを持ちます。 動的ルーティング: 実行時データや条件に基づいてワークフローが動的に分岐し、柔軟な実行パスが可能です。 コンテキスト管理: Goのcontextパッケージを活用してキャンセルシグナルやメタデータをワークフロー全体で管理します。 このOrchidフレームワークにより、データの取得からAIモデルによる処理、結果の精緻化、最終的な配信までの複雑なシーケンスを自動化し、手動の監督なしで実行可能にしました。 ...