【失敗談】ChatGPTに席替えを手伝ってもらえなかった話（2023年4月頃）

# はじめに
　これは2023年4月頃、ChatGPT大好きエンジニアである私・千葉に帰り亭がチームメンバーから「千葉さん！出社時のチームの座席、席替えしたいんだけど音頭取ってくれへん？」と頼まれたときの話です。
　依頼を受けたとき、他チームメンバーも周りにいたのですが「そういえば千葉さんChatGPTとか好きだし、そこら辺に頼っての席替え案も歓迎よ～」と話しかけてくださったこともあり、私は嬉々としてChatGPTに席替え案を考えてもらったのですが…結論から言うと、**席替えの案を出すのにChatGPTは不向きで、上手くいかなかった** のです。
　考えれば、上手くいかないのはまぁ当然とも言えるのですが、そのときの「:bulb: 気づき：ChatGPTに関する今回のポイント（ここだけでも読めばOK）」「:basketball_player: 経緯：どのようにChatGPTに席替え案を出力させたのか」をメモに残します。

　そういえば私、ChatGPT大好きなのでいろいろな方の活用法を積極的に拝見しているのですが、たまに「いや文書生成AI（ChatGPT）にソレやらせても、そりゃ上手くいかんがな😠😠」とちょっとした遺憾を抱くこともあるのですが…今回のように、そういった的外れなことを自分もやっていたという…お恥ずかしい…。
　同じ失敗が！他の方によって繰り替えされませんように！:pray:

※以下、長くなってしまったので「:bulb: 気づき：ChatGPTに関する今回のポイント（ここだけでも読めばOK）」だけ読んでいただければOKかと（他はオマケ程度に考えていただければ！）
※この記事をより詳細に書いたものを社内にて2023年10月頃に公開しています。

 ## ChatGPTスペック
 - ブラウザ版を使用
 - model：GPT-4(2023年4月現在)

# :bulb: 気づき：ChatGPTに関する今回のポイント（ここだけでも読めばOK）
:::note info
現在のChatGPT(GPT-4)は **計算は苦手** （というか「できない」がほぼほぼ正しい）
- そもそも**GPTは文書生成AI**ですもんね…そりゃそうか…
- 「席替え」にも計算的要素があるので、得意ではない。と思われる。
:::
:::note info
ChatGPTへの **プロンプトは「煩雑でないこと」をより優先的に記載**した方が精度が上がりそう
- **いろいろな条件を一度にぶっこむと、一部条件の優先度が勝手に下がる様子**。
- ChatGPTの使い方に「はじめにChatGPTに"どのような情報が必要か"質問し、その回答の内容を次のプロンプトで渡す」という有効な方法があるが…
    - この方法でかえってプロンプトが煩雑になるようなら、無理に従う必要は無い。
:::

# :basketball_player: 経緯：どのようにChatGPTに席替え案を出力させたのか
※プロンプトや出力結果に対して **[★略★]でマスキングor省略している** 箇所があります。実物を載せられずすみません…

　以下、ChatGPTを用いてどのように席替え案を考え、失敗に気づき、最終的にどういう結果になったのか（ChatGPTからの提案は役に立ったのか）を、若干ですが台本形式でお送りします。はじまり、はじまり～～

## 「案が思い浮かばないし、ChatGPTに提案してもらおう」
私・千葉に帰り亭（以下、千葉）「席替えっていろんな条件が絡むし、案出し難しいな。全然思い浮かばない…」
チームメンバー①「**案出しといえば、ChatGPT** 使って何かやってみてもエエんやない？」
チームメンバー②「千葉さんChatGPT好きだし、ChatGPTでどこまでできるか試しても良いかもよ～」
千葉「（ **ChatGPTに頼ることで責任の一部をGPT君に持ってもらえる** し）イイすね！」

## 席替えプロンプトが思い浮かばないので、ChatGPTに聞いてみた
千葉「早速ChatGPTに相談してみよう。けど、席替えに有効なプロンプトは今までに触れたことが無いし、思い浮かばないなあ。
　　でも、 **プロンプトが思い浮かばないときは、どういうプロンプトだと返しやすいかをChatGPTに質問** するのも良いんだよね。 **スレッド形式でやりとりを繰り返しながら情報を渡せるのもChatGPTの良いトコロ** だし。やってみよう！」

```text:プロンプト
あなたはチームリーダーです。あなたに、チームの座席替えの案を提案してほしいです。
そのために必要な情報がありましたらいくつでも質問してください。
```
```text:ChatGPT（GPT-4）からのレスポンス
承知しました。座席替え案を提案するために、以下の情報が必要です。

1. チームの人数とメンバーの名前
2. 現在の座席配置図
3. チームの役割や専門分野
4. 座席替えの目的（コミュニケーションの改善、プロジェクト効率向上など）
5. 事前に考慮すべきメンバー同士の関係（良好なコラボレーションがある組み合わせや避けるべき組み合わせ）
6. 座席に関する制約（デスクの数やサイズ、オフィススペースのレイアウト）

これらの情報をもとに、最適な座席配置案を提案いたします。
```
千葉「なるほど。今回はChatGPT APIではなくWebブラウザ上でChatGPTを使っているので、プロンプトが学習に使用される可能性があるし尚更 **"メンバーの名前"のような個人情報はマスキングが必要** だね。プロンプトを作成するときはマスキングしよう。
　　でも…"2. 現在の座席配置図"ってどう伝えるのが良いのかな？（2023年4月現在は）ChatGPTには図や画像、表は渡せないはずだし。これもChatGPTに聞いてみるか」

```text:プロンプト
「2. 現在の座席配置図」はどのように伝えたら良いですか？
chatGPTには画像などは添付できないですよね？
あなた、つまりchatGPTに「2. 現在の座席配置図」を伝えたいのですが、どのような表現が分かりやすいですか？
```
```text:ChatGPT（GPT-4）からのレスポンス
chatGPTに対して現在の座席配置図を伝える場合、文字での説明が最も適切です。以下の方法で座席配置図を説明してください。

1. 行と列で表現:
オフィススペースを行と列で表現し、それぞれの席にメンバーの名前や役割を記載します。例えば、「1行目左から右: 山田（デザイナー）、田中（エンジニア）」のように説明します。

2. 区画の名称とメンバー名:
オフィススペースに名称をつけて区画し、各区画にいるメンバーの名前や役割を列挙します。例えば、「A区画: 山田（デザイナー）、田中（エンジニア）」のように説明します。

以下の情報もあわせて教えていただくと、より正確な座席替え案を提案できます。

・座席の数と形状（デスクが個別かオープンスペースかなど）
・特定の設備や共有スペースの位置（会議室、プリンター、休憩スペースなど）

例えば、以下のような表現で現在の座席配置をお伝えください。

1行目左から右: 山田（デザイナー）、田中（エンジニア）
2行目左から右: 佐藤（プロジェクトマネージャー）、鈴木（マーケティング）

この情報をもとに、座席替え案を提案いたします。
```

千葉「なるほど、この方法なら文字情報だけでもなんとか伝えられるかも。ちょっと書くの大変そうだけど」

## ヒントをもとに作ったお試しプロンプトを使用→出力結果が途切れ…
千葉「プロンプトな必要な情報はそろったし、マスキングも完了！実際にChatGPTに提案してもらうぞ～！」

～～～ 席替え案を提案してほしい旨のプロンプトを入力 ※省略
～～～ **出力結果※途中で途切れている** 

千葉「あれ…？席替え案と一緒に案の理由を出力してくれているけど、**出力文字数の関係で結果が途切れちゃった**。今回は結果だけ出力してもらうよう、プロンプトを微修正しよう」

```text:プロンプトに新たに加えた文言
座席案を3種、提案してください。理由の出力は不要です。
```

## 渾身のプロンプトができた！ChatGPTの提案内容（出力結果）は…？
千葉「プロンプトに必要な情報はそろった、マスキングもした、結果だけ出力するようプロンプトに記述した…今度こそ！」

```text:プロンプト
# 命令
下記情報を参考に座席案を3種、提案してください。理由の出力は不要です。

# 1. チームの人数とメンバーの名前
人数：社員[★略★]名、業務委託[★略★]名の計[★略★]名
## 社員（[★略★]名）
### 課長
[★略★]
### デザイングループ
[★略★]
### テックグループ
[★略★]
社員M（テックメンバー）
社員J（テックメンバー）
## 業務委託（[★略★]名）
委託A（[★略★]グループ寄り）
委託N（[★略★]グループ寄り）
[★略★]
## その他
※別途、「PC席」「新人用席」の[★略★]席を確保したい
⇒計[★略★]席を考える必要がある

# 2. 現在の座席配置図
1行目左から右：[★略★]、（フリー）、委託A、委託N、（通路）、[★略★]、（フリー）
2行目左から右：[★略★]、委託J、（別）、[★略★]、（通路）、社員J、[★略★]
3列目左から右：[★略★]、（PC）
※上記は、このようなルールも設けて記述している。
（フリー）：フリースペースのこと。だれでも利用化。PCモニターも設置されている席。
（通路）：通路となっているため机は無く、だれも座ることはできない。
（別）：別のチームが使用している席。
（PC）：チームで使用している特別なPCが配置してある席。
## 現在の座席の補足
・[★略★]は[★略★]なため隣同士、かつ[★略★]にいる。
・[★略★]の教育担当が[★略★]だった。
・[★略★]と[★略★]は業務上、一緒に動くことが多い。
[★略★]
・デザイングループ社員とテックグループ社員が遠いのが気になった。
　ので、[★略★]を用意しコミュニケーションに活かそうと思ったが、いまいち活かせず。
・[★略★]は同じ所属。かつ、[★略★]。
[★略★]

# 3. チームの役割や専門分野
・「[★略★]」を実現するためのチーム（[★略★]がモットー）
・「[★略★]」を意識し、[★略★]システムを開発していく

# 4. 座席替えの目的（コミュニケーションの改善、プロジェクト効率向上など）
[★略★]、チームの[★略★]を実施したため、
　・役割が最大限に活きるようにしたい
　・出社時はコミュニケーションが生まれるよう改善したい

# 5. 事前に考慮すべきメンバー同士の関係（良好なコラボレーションがある組み合わせや避けるべき組み合わせ）
## 席を近づけたい組み合わせ
・[★略★]は[★略★]で、隣同士、もしくは向かい合うように配置したい。また、[★略★]に配置したい。
・[★略★]はより多く会話するため席を隣同士に配置したい
・[★略★]は[★略★]に近い仕事を行うことがあるので、[★略★]の近くに配置したい。
## メンバーの役割
・[★略★]を起点に考えることが多いため、[★略★]は社員の中でもできれば中心に配置したい。
・[★略★]は[★略★]ともある程度の会話ができる位置に配置したい。
・[★略★]の中でも、[★略★]と会話する機会が多い（担当案件が近い）
## 出社率を考慮した配置
・[★略★]の方が、[★略★]より出社が多く、また出社した際に会話をすることが多い。
・出社した際はできるだけ会話がしやすいように席を配置したい。
・社員でも、[★略★]はあまり出社しない。
・[★略★]はほとんど出社しない。[★略★]は週に[★略★]出社することがある。
## メンバーの座席以外の考慮点
・PC席を用意する必要があるが、使用率は高くない
・新人席を用意する必要があるが、[★略★]フリー席として使用することも可能。
## メイン案件の各リーダー
ほぼ全員のメンバーが参画しているメイン案件がある。
そのメイン案件の主な各リーダー的ポジションは以下のメンバー。
[★略★]、社員J（[★略★]）、[★略★]

# 6. 座席に関する制約（デスクの数やサイズ、オフィススペースのレイアウト）
## 席替え先（引っ越し先）の座席のレイアウト
1行目左から右：[空1]、[空2]、[★略★]、（通路）、[空7]、[★略★]
2行目左から右：[★略★]、（通路）、[★略★]
3行目左から右：[★略★]、（通路）、[★略★]、（別）
※上記は、このようなルールも設けて記述している。
　[空]：空席。ここにメンバーを座らせたい。
　[★略★]：確定している[★略★]用の席。
（通路）：通路となっているため机は無く、だれも座ることはできない。
（別）：別のチームが使用している席。 
## 行間のルール
・1行目と2行目は向かい合わせ（対面）となる。[★略★]
・2行目と3行目は背中合わせになる。
## デスクのサイズ
[★略★]
## 配置の制約
前述「5. 事前に考慮すべきメンバー同士の関係」の「席を近づけたい組み合わせ」でも少し触れたが、
[★略★]は[★略★]で、席が近い（隣or向かい）、かつ[★略★]にいる必要がある。
また、[★略★]は既に席が決まっている。そのため、[★略★]の座席は上記「席替え先（引っ越し先）の座席のレイアウト」で示すと、
　[空11]または[★略★]
このどちらかである必要がある。
```

千葉「プロンプト、長いな…結果はどうなるだろう……アレレ？」
```text:ChatGPT（GPT-4）からのレスポンス
以下、3つの座席案を提案します。

案1：
1行目：[★略★]、委託A、委託N、（通路・柱）、社員M、[★略★]、（フリー/新人用席）、[★略★]
2行目：[★略★]、（フリー）、社員J、[★略★]、（通路）、[★略★]
3行目：[★略★]、（通路）、[★略★]、（別）

案2：
[★略★]

案3：
[★略★]
```
## 出力結果、ココがダメ！使用できない！！

千葉「結果（レスポンス）、主にココがダメじゃね？」

- **同じ人が2人いる。一回も登場しない人がいる。**
- **プロンプトに含めた条件を無視している**
    - 座ってほしくない席に勝手に座っている
    - その他、プロンプトに記載した条件の無視を発見
- 人間なら何も言わずに考慮する **「暗黙の条件」は考慮されない**。
    - 考慮してほしいならプロンプトに含めるべきだった。「当たり前すぎてプロンプトを作っている際は気づけなかった、暗黙の条件」に気づいた。
    - 例えば…偶然ながら、（図で言うと）横並びで並べてグループ・塊を作りたがる傾向が見られた。
        - 席替えによってより活性化させたかった「チーム全体のコミュニケーション」は、縦並び（列）でもかなり実施できる。横並びに縛られるのはもったいない。むしろ同じグループで横並びにしてしまうと、少なくともグループ内のコミュニケーションは取りづらい。

## でも、提案の良い箇所だけ~~パクろう~~採用しよう

千葉「良い提案は出てないなあ。提案内容をまるっとそのまま使用するのは難しい…。でも、（以下のような）使える要素はあるかな。この要素は有り難くパクって案を作るか！」
  
- [★略★]にフリー席を配置している。
- 横（行）でグループを分ける傾向。
    - グループ内でのコミュニケーションはしづらくなりそうなので盲点だったが、グループを越えた「チーム全体のコミュニケーション活性化」という観点から試してみても良いかも。
- [★略★]を（隣同士ではなく）対面に配置する傾向。
- [★略★]を中心に配置する傾向。

千葉「よし、ヒント（ChatGPTからの提案にあった良い要素）からいくつか案が出せた！早速チームに展開するぞ～！」

～～こうして千葉は、 ChatGPTから得られたヒント（観点）も頼りに考えた席替え案をいくつか提案し、なんとか席替えを乗り切ったのでした。
　ちなみに **実際に採用した案は、ChatGPTからのヒントも考慮し考えた案だった** のでした。めでたし、めでたし～～


# おわりに
　今回の言いたいことは前述の「:bulb: 気づき：ChatGPTに関する今回のポイント（ここだけでも読めばOK）」に詰め込んでいますので、ここまで読んでくださった方でポイントを忘れてしまった～という方はお手数ですがもっかい「:bulb: 気づき：ChatGPTに関する今回のポイント（ここだけでも読めばOK）」に目を通してください！
 　つくづく、**「使用したいAIモデルが、どういうデータで・どういう学習をしているのか」という根本に立ち戻る**のは大事ですね。あと「乱雑な情報をできるかぎり簡潔にプロンプトに落とし込む」という"プロンプトエンジニア"力、磨きたい！いろんなプロンプトに触れてみよう～頑張ります！
　また、こうやって冷静にプロンプトを見返してみると、条件部分の煩雑さが目に付きました…。**プロンプトの条件部分、もう少し絞って＆簡潔に書けそう**だったので、そこが改善されたプロンプトだったら、ChatGPTからの良い提案は得られなくても、その提案から得られる気づきはもっと多かったかもしれませんね。

　長々と失礼しました！もし何かありましたらお気軽にコメント等くださいませ◎

## オマケ
　記事にまとめている中で、こんなツイートをみつけましたので添付してみます。重複しなくても「位置が変わらない」などが発生する可能性はある様子。
 
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">これ見て「ChatGPT競プロ出来そう」って言ってる人がちょこちょこいて、「あれこういうの出来なくなかったっけ？」って思って見てみたら、やっぱり条件を満たしてなかった。<br>（1の位置が変わってない）<a href="https://t.co/VRQ81v8dVD">https://t.co/VRQ81v8dVD</a></p>&mdash; chokudai(高橋 直大)@AtCoder社長 (@chokudai) <a href="https://twitter.com/chokudai/status/1629393107560325120?ref_src=twsrc%5Etfw">February 25, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>