5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIハッカソン参加録【2024 最優秀賞】

Posted at

はじめに

開発経緯

先日、「生成AIで山梨を盛り上げよう」というテーマでYAMANASHI AIハッカソン2024が開催されました。そこで、私のグループは山梨県のコロナ後の観光業の回復に着目し、山梨県の魅力を伝えるAIエージェント、やまなしNAVIを開発することになりました。

アプリの概要

  • 対話形式のチャットボット(というよりはエージェント
  • 現在地、移動手段、季節、やりたいこと(行く、食べる、遊ぶ)などに基づき、候補となるスポットの提案をする
  • ユーザーの要求に応じて、スポットについての詳細な説明をしたり、天気などのアドバイスもできる

フロントエンド

ハッカソンでは、LINEの他にオリジナルのWEBを作成したましたが、今回はLINEのみを取り上げます。

LINE MessegingAPI

バックエンドとLINEと連携するのにLINE MessegingAPIを使用しました。
以前、GoogleAppScriptを用いてLINEチャットボットを開発したことがありましたが、今回はバックエンドにDjangoを採用したことからPythonで呼び出すことになりました。

バックエンド

フレームワーク

豊富なライブラリを備えていて、柔軟なコーディングが...というのは建前で、一番長く使っているのがDjangoだったからです(´;ω;`)
Django==4.2.0を使用しました。APIを簡単に扱うため、REST Frameworkを採用しました。(djangorestframework==3.15.2)

API

使用したのは

AIプラットフォーム

選定(時系列)

  • ChatGPTのカスタムモデルであるGPTs
    RAGの機能を持つことから、ローカルなデータを扱うのに適していると考え採用し、回答にもそれなりの精度が得られた。が、APIを提供していないことが判明し、断念。
  • OpenAIのAssistantsAPI
    こちらはAPIを提供しており、RAGも備えていました!が、GPTs程の精度が得られず、没。
  • Dify
    こちらはAPIも提供しており、精度もかなりよかったので採用!!

プラットフォームの課題と工夫

LLMモデルのみによるチャットボットは情報が古かったり、ローカル情報に弱かったりしますが、Difyを採用することでRAGによるローカル情報の補完リアルタイム検索による適時性の向上が期待されます。

Difyの特徴

  1. ノーコードツール
    ノードを線で繋いでいくことで、簡単にAIアプリが作成できるので、プログラミング経験者でなくても開発に参画できる!
  2. RAG機能
    RAG(RAGとはなにか?)を用いることで、LLMに蓄積された一般的な情報だけでなく、ローカルな情報(例えば、〇〇レストランの営業時間、など)を出力に加味することができる!
  3. ブラウジング機能
    インターネット検索の結果から情報を補完できるから、比較的新しい情報にアクセスできて、回答の精度も向上する!今回はGoolge Search、Wikipedia、Open weather or Googleをアクション出来るようにしました
  4. AIモデルが選べる
    使用するモデルやバージョンを選べるから用途よって、速度や精度のトレードオフを簡単に反映できる!
  5. デフォルトのフロントエンドが用意されている
    モデルの作成後、簡単に挙動の確認、配布ができる!

技術スタック

技術スタック.png

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?