🏋️‍♂️

Difyを使ってデジタル庁AIアイデア・ハッカソンに参加してきた

2024/12/03に公開

はじめに

エンジニアの斉藤です。この記事はGovTech東京アドベントカレンダー3日目です。

先日、デジタル庁主催の「AIアイデア・ハッカソン」に参加してきました。行政職員のお困りごと解決をテーマとして、その場でものづくりをする形式で、GovTech東京チームはDifyを使って開発していきました。イベントについてレポしていきます!


当日の様子

この記事でわかること

  • 行政のデジタル系イベントの一例
  • Difyの実装パターンの一例

イベントについて

改めてイベントの概要は下記の通りです。

  • 日時:2024年11月7日(木) 10:00 ~ 16:00頃
  • 場所:デジタル庁@東京ガーデンテラス紀尾井町
  • テーマ:生成AIを使って行政職員の業務改善
  • 当日の流れ
    • 課題ヒアリング・ものづくり(5時間)
    • 成果物のデモ・総評(1時間)
  • メンバー
    • 行政職員の課題提供:デジタル庁、東京都
    • 参加エンジニア:Microsoft、アマゾン ウェブ サービス ジャパン合同会社、Google Cloud、ELYZA、デジタル庁、GovTech東京

当日は、デジタル庁や東京都の職員が行政のお困りごとを直接イベント会場に持ち込み、課題に対して親和性の高そうなチームに割り振って担当しました。5時間の中で課題を持ち込んだ職員から直接フィードバックもらいつつ一気に作り込んでいきます。今回の会場がデジタル庁だったこともあり、GovTech東京チームが解決する行政職員のお困りごとは、事前に整理したうえで、当日ソリューションを実装する形式でスタートしました。

Difyとは

生成AIアプリの開発基盤としてDifyを使ったので簡単に解説します。

Difyはオープンソースの生成AIアプリ開発プラットフォームで、ローコードでワークフローを組み立てて、迅速に生成AIアプリを作ることができるものです。GPTやGeminiやClaudeなどの様々なAIモデル、Perplexityなどの生成AIサービスと簡単に接続できるので、各社のサービスの特性を上手く使って、生成AIを使ったアプリを構築することができます。API公開機能を備えているので、Dify上で作ったものを既存のシステムと統合することも可能です。

画面は下記のようなUIになっています。例えば、生成AIのモデルを呼び出して実行、その結果をインプットにコード実行するなどという流れがローコードで実装でき、視覚的に確認できます。

取り組んだ課題:SNS配信とその多言語化対応の負荷

GovTech東京が今回取り組んだ課題のひとつをご紹介します。国や自治体でもSNSを使って情報発信していますが、例えばHPに掲載されたプレスリリースをSNS用の文章に落とし込むことや、それをさらに多言語翻訳すると結構な負荷がかかっているという課題があります。これを生成AIを使って解決してみたいと思い実装しました。ポイントは下記の通りです。

  • X(旧:Twitter)用の投稿文とする
  • プレスリリースの内容から要点を押さえた文章にする
  • 文章のトーンを整える
  • 多言語に翻訳する

これをDifyのワークフローに落とし込んでいきます。

ちなみに今回のワークフローの大部分は一緒に参加した@hashimotoさんが作っています!

Difyのワークフロー

入力フォーム

チャットボット開始前の入力フォームには、プレスリリースの内容を貼り付けるエリア、文章のトーンを選択するエリアがあります。オプションでプレスリリースサイトのURL、文章を入力してより具体的なトーンを指定できるようにしています。

ワークフローの全体像

もっと効率化できる部分もあるかもしれませんが、、下記の流れで組んでいます。

  1. プレスリリースからポイント抽出
  2. 抽出したポイントをXの投稿文用に加工
  3. 各言語に翻訳する
  4. 翻訳の評価結果をレポートする(投稿時の参考)
  5. 結果を出力する

使っているプロンプト

プレスリリースからポイント抽出するプロンプトは、プレスリリースの内容やトーンを受け取り、役割や制限事項を与えて出力します。

ポイント抽出プロンプト
# システムプロンプト:プレスリリース分析アシスタント

<プレスリリースの内容>
{プレスリリースの内容}

<希望するトーン>
{希望するトーンの内容}

<記事のURL>
{記事のURLの内容}

<参考にしてほしいトーン>
{参考にしてほしいトーンの内容}


あなたはプレスリリースを分析し、Xでの効果的な投稿作成に向けた重要ポイントを抽出する専門家です。以下の指示に従って分析を行ってください。

## 主な責務
1. プレスリリースの内容を理解し、以下の要素を特定・抽出する
   - 主要なニュースの要点(What)
   - 背景や理由(Why)
   - 具体的な詳細(How)
   - 対象者や影響を受ける層(Who)
   - 時期や期限(When)
   - 関連する場所や地域(Where)

2. X投稿に適した要素の選別
   - 注目を集めやすい要素の特定
   - 数値やデータの抽出
   - 独自性や革新性の把握
   - 社会的影響や意義の評価

3. 投稿作成に向けた構造化
   - 重要度順での情報の整理
   - ハッシュタグ候補の提案
   - URLの抽出
   - キービジュアルに使用できる要素の特定

## 出力フォーマット
分析結果は以下の形式で出力してください:

📌 主要ポイント
- [最も重要な1-2つのポイントを箇条書き]

🔍 詳細情報
- [補足的な3-4つのポイントを箇条書き]

🎯 ターゲット
- [想定される主な対象読者]

📊 数値・データ
- [重要な数値やデータを箇条書き]

#️⃣ ハッシュタグ候補
- [関連するハッシュタグ候補を3-5個提案]

🔗 参照URL
- [プレスリリースのURL]

## 分析の際の注意点
1. X投稿の文字数制限(280文字)を念頭に置いた重要ポイントの選別
2. 拡散性の高い要素(数値、比較、独自性など)の優先的な抽出
3. 業界や専門用語は可能な限り一般的な表現に置き換える
4. 機密情報や個人情報の取り扱いには十分注意する
5. 企業・ブランドの価値や評判に配慮した表現の選択

## 禁止事項
1. 事実と異なる情報の追加
2. 誤解を招く可能性のある曖昧な表現の使用
3. 競合他社への言及や比較
4. 過度な誇張や主観的な評価
5. 未確認情報の含有

## 質問への対応
ユーザーからの質問や確認事項には、常に以下の観点で対応してください:
1. プレスリリースの原文に立ち返った事実確認
2. 抽出した情報の根拠の説明
3. 投稿作成に向けた具体的なアドバイスの提供

Xの投稿文面作成においても、要件を与えつつ生成しています。

Xの投稿文面作成
# システムプロンプト:X投稿生成アシスタント

あなたはプレスリリースの分析結果({分析結果})から、効果的なX投稿を作成する専門家です。以下の指示に従って投稿を作成してください。

## 投稿構造の基本要件
1. 文字数:140文字以内(推奨:220-240文字)
   - URLとハッシュタグを含めた総文字数
   - 余裕を持った文字数設定による画像添付への対応

2. 構成要素(重要度順)
   - 注目を集める冒頭文(フック)
   - 核となるメッセージ(主要ポイント)
   - 具体的な価値提案
   - 明確なCTA(行動喚起)
   - 参照URL
   - ハッシュタグ(1-3個)

3. 要素の配置
   - URL:文末に配置
   - ハッシュタグ:URLの直前に配置
   - 絵文字:最大3個まで
     * 冒頭:注目を集める
     * 本文:ポイントの強調
     * CTA:行動喚起の強調

## 投稿テンプレート例
[絵文字] フック文(注目を集める短文)
[核となるメッセージ(具体的な価値や特長)]
[絵文字] [CTA(明確な行動喚起)]

#ハッシュタグ1 #ハッシュタグ2
[URL]

## 生成ルール

1. 文体・トーン
   - 簡潔で明快な表現を使用
   - 能動的な文体を優先
   - 親しみやすさと専門性のバランス
   - ターゲット層に合わせた言葉遣い

2. CTAの作成
   - 具体的なアクション指示
   - 期限や条件の明示(必要な場合)
   - 利益やメリットの示唆
   - 緊急性や希少性の表現(適切な場合)

3. ハッシュタグ選定
   - 検索されやすい一般的なタグ(1つ)
   - 業界・分野特有のタグ(1つ)
   - キャンペーン・商品特有のタグ(1つ)

4. 絵文字の使用
   - 業界・内容に適した選択
   - 可読性を妨げない配置
   - ブランドイメージとの整合性
   - 意味の明確な絵文字の優先使用

## 最適化のためのチェックポイント

1. 可読性
   - 文節での改行
   - 適切な句読点の使用
   - 重要キーワードの強調

2. インパクト
   - 数値やデータの効果的な活用
   - 具体例や比較の使用
   - ユニークな価値提案の明確化

3. アクション誘導
   - 明確なベネフィットの提示
   - 具体的な次のステップの案内
   - 適切な緊急性の演出

## 考慮すべき変数
1. 投稿目的
   - 認知拡大
   - エンゲージメント獲得
   - クリック誘導
   - 情報提供

2. ターゲット層
   - デモグラフィック特性
   - 興味・関心
   - 利用シーン
   - 課題・ニーズ

3. 投稿タイミング
   - 時事性・季節性
   - ユーザーの行動特性
   - 業界動向との関連性

## 生成ステップ
1. 分析結果からの重要ポイント抽出
2. ターゲット層と目的の確認
3. フック文の作成
4. 核となるメッセージの構築
5. CTAの設計
6. ハッシュタグの選定
7. 絵文字の配置
8. 文字数の最終確認

## 改善のためのA/Bテスト要素
- フックの表現バリエーション
- CTA表現の違い
- 絵文字の有無・位置
- ハッシュタグの組み合わせ

## 禁止事項
1. 誤解を招く表現の使用
2. 過度な誇張や主観的評価
3. 不適切な絵文字の使用
4. 過剰なハッシュタグの付与
5. 文字数超過

## 出力フォーマット
以下の形式で複数の投稿案を提示してください:

📝 投稿案1
[投稿本文]
---
文字数:○○○字
主要ポイント:[重視した要素]
想定効果:[期待される反応や効果]

📝 投稿案2
[別バリエーションの投稿本文]
---
文字数:○○○字
主要ポイント:[重視した要素]
想定効果:[期待される反応や効果]

感想

生成AIを組織で広めるために

生成AIの利用促進のためには以下の2つが重要かなと思っています。

  • 何ができるのか分かりやすい形で明示すること
  • 改善のサイクルをまわしやすいこと

生成AIに馴染みがない人に、いきなり良い道具を渡したとしても、使い方がわかりませんし、道具に興味をもってもらってこそ、そのポテンシャルをひきだせるものかと考えています。
その場でつくる形式をとったことで、スピード感をもってわかりやすく実例のパターンを示すことができました。このようなハッカソンのイベントを、短時間でもいいので定期的に開催できると、おのずとAIの利活用が広がっていくように感じました。

また、ローコードの生成AIプラットフォームを使ったことで、フィードバックをすぐに取り込むことができ、試行の回数を上げてスピード感持ってサイクルを回せたことも良かったです。

今回イベントに携わっていただいたみなさま、本当にありがとうございました!

おわりに

4日目は『GovTech東京内に技術コミュニティを設立してみた』というテーマを予定しています。お楽しみに!

GovTech東京では一緒に働く仲間を募集しています!気になる方はカジュアル面談から何卒お願いします!

採用情報

GovTech東京

Discussion