社内でLLMハッカソンを実施しました!
Smart Craft エンジニアの岡部です。前回の投稿からだいぶ経ちましたが元気にやってます!
今回は先日社内で開催した LLM ハッカソンの様子について紹介します。
ハッカソン実施の背景
昨今、OpenAI の ChatGPT や Google の Bard などの LLM(大規模言語モデル)を利用した技術が急速に成長しています。
Smart Craft はテクノロジーの力を活用して、日本の基幹産業である製造業の変革をすることを目指しています。LLM はその変革に必要な技術であり、LLM を活用した機能やプロダクトをリリースすることで、製造現場の効率化、品質管理の高度化、そして現場に関わる方の負担軽減を実現できると考えています。
今回のハッカソンは、各メンバーが LLM 技術に触れ、近い将来に実用的な機能やプロダクトをリリースするための第一歩として実施されました。
ハッカソンの準備から実施までの流れ
1 回目: アイデアソン
いきなりハッカソンを始めるのではなく、まずは LLM を使ってどんな機能を作りたいかを参加メンバー全員でアイデアソンを実施しました。
アイデアの幅を広げるためにアイデアソンでは全職種のメンバーが参加することになりました。
アイデア出し
リモートのメンバーもいるため Zoom で画面共有をしながら Figma の FigJam を使ってオンライン上で実施しました。
対象は Smart Craft の管理者向けと現場作業向けのアプリで作る機能、業務効率化の 3 グループで考えました。
できるかどうかはここでは考えずに LLM でこんなことをやってみたい! というアイデアを参加メンバーで自由に付箋に貼っていきました。
投票とグループ分け
沢山出たアイデアから良いと思ったアイデアを各メンバーがスタンプで投票し、各メンバーがどのアイデアに興味・関心があるかを見ていきました。
投票したアイデアをメンバーで眺め、参加メンバーで気づいたことをディスカッションするうちに「スタンプが多いかつそれに関連したアイデア」と「現実的にやれなそうやつ(スタンプの数は少ないが実現性が高そうなアイデア)」でグループ分けができることに気づき、グループ分けをしてみました。
2 回目: やることを決める&チーム分け
前回実施したアイデアソンで出た沢山のアイデアから実際にやることを決めます。
ここからはエンジニアのメンバーが参加をして進めます。
最初は参加メンバーでアイデアを眺めながらやりたいアイデアを話し合っていましたが以下のような議論が続き、やることが中々決まらずに時間が掛かっていました。
👨🦱「このアイデアやりたいです!」
👨🦰「良いね! でもこのアイデアは △ の部分をはどう実現しようか」
👨🦱「あぁ...やっぱ無理かぁ...」
…
👨🦰「このアイデアなら実現性高そうだからやってみない?」
👨🦱「できそうだけど、他のサービスやってそうなアイデアだからやってもなぁ...」
👨🦰「そっかぁ...違うのにしようか」
議論を続けていく中で、「アイデアの実現性(お手軽/難しい)」と「夢(ロマン)がある/ない」という 2 つの軸で議論していることに気づき、思い切ってマトリックス表にしてアイデアを整理してみました。
ここから「お手軽かつ夢がある」のアイデアに絞りました。
これでやることがだいぶ見えるようになってきました!
「お手軽かつ夢がある」アイデアを眺めていると「映像」と「音声」でグループ分けができるとわかりました。
あとはこの中から各メンバーがやりたいものを選択し、映像系改め画像認識チーム(3 人)、音声系改め音声認識チーム(2 人)の 2 チームが結成されました。
3 回目 技術調査
3 回目はチーム単位で集まり、出てきたアイデアをどう実現するかの具体的な仕様決めや必要な技術について Notion にまとめていきました。
画像認識チームの調査メモ
両チームとも OpenAI API を利用するためハッカソン当日に焦らないよう、今の時点で OpenAI のアカウントの作成し、API キーを取得しておきました。
4 回目 ハッカソン開催!
これでやっと準備ができたのでついにハッカソンを実施しました!
この日は可能な限りオフラインで参加メンバーが集まり、朝から夕方まで全力で開発をしました!
作ったもの
ここから各チームが作った機能について紹介します。
画像認識チーム
画像認識チームでは Open AI の Vision を使って現場アプリの工程実績詳細画面を PC を操作せずにジェスチャーを使って操作ができる機能を開発しよう...としたのですが、1 日 100 回の制限が入ってしまい、開発を進められなくなりました。
そのため、代わりに tasks-vision packageを使ってジェスチャーの検出をするようにしました。
手をグーにすると作業が開始され、パーで良品数が+1 ずつ増え、離席すると工程が停止され、再び席に着くと再開します。最後にピースをすると工程が終了します。
製造業の現場では PC やタブレットの操作をする暇がない作業もあるため、こういったジェスチャーでの操作ができるというのは、今後より便利なプロダクトを開発をする上での大きなヒントになると感じました。
音声認識チーム
音声認識チームでは指示を音声で検索し、工程の開始や中断ができる機能を作りました。
「エージェントを呼び出す」でスタート | 工程指示を音声で検索し、工程の開始や中断を音声から実行する |
---|---|
また、指示とはまったく関係ないこと(天気など)を発言した場合は対応を受け付けない旨の返事を返すようにもしました。
この機能を開発するために Function calling を使いました。Function calling とは呼び出して欲しい関数の定義情報を Open AI に予め与えておくと、OpenAI のモデルが文脈に応じて呼び出すべき関数と引数を教えてくれる仕組みです。
この仕組みを使って、ウェブ音声 API で音声をテキストに変換し、変換したテキストと呼び出すべき関数の定義情報を Chat Completions API を使って OpenAI に渡します。
送られた情報を元に関数の定義情報から Open AI がどの関数を実行すべきか判断し、判断した結果をレスポンスとして返します。
その返ってきたレスポンスにある実行すべき関数名で関数を実行します。
返って来たメッセージは Text to speech で読み上げます。
おわりに
今回は社内での LLM ハッカソンの進め方や作ったものを紹介しました。
ハッカソン自体私も久しぶりで普段の業務では経験できない技術に触れられて充実した時間を過ごすことができました。
最後に作ったものをメンバー全員にお披露目し、大変盛り上がりました!
ハッカソン実施だけではなく準備から携わることができたため、今回で終わらせずに今後も定期的に社内でイベントを開催し、社内のメンバーと切磋琢磨して今までに無いプロダクトをリリースしていきたいと思います!
ということで、僕たちと一緒に今までに新しいプロダクトをリリースしていきたい方、Smart Craft のビジネスに興味を持っていただいた方はぜひご連絡ください!
Discussion