user【週刊】今日から始めるAI生活search
【プロンプト圧縮!】これでPerplexityのコレクション機能にも長文プロンプトが設定できる!
Perplexityには事前にプロンプトを仕込んでおくことができる「コレクション機能」があります。しかし入力制限が2,000文字のため、長文プロンプトを仕込むには四苦八苦していました。今回は長文がザクッと圧縮できる「Lisp式プロンプト圧縮法」を実際に試してみましょう!
like
5
user
テツメモ|tetumemo
2024/04/22

最近、ChatGPTよりPerplexityの使用頻度が増しています。

特にニュースレターで紹介してからは反響が大きく、このツールの強さをヒシヒシと感じます。


今回は、前回紹介したPerplexityのコレクション機能を、さらに使いやすくするためのコツをシェアします。


最終ゴールは、Perplexityのコレクション機能に、プロンプトデザイナーひろ吉さんの『出来る‼️非エンジニアでもAIの力を使ってシステム構築の要件定義を頑張るプロンプト』(約3,000文字)を、圧縮して登録することです。


ちなみに、この要件仕様書を頑張るプロンプトを実行すると・・・、


  1. アイデア出し
  2. 要件仕様書出力
  3. フォルダ構成出力
  4. 処理フローのシーケンス図をMermaidで出力
  5. requirements.txtを詳細に出力


という企画職からエンジニア職までを一気通貫に体験することができます。

自分のアイデアがカタチになる様子を把握できるのは、非常にワクワクしますよ♪


ちなみに、「Perplexityって何?便利なの?」という方は、ぜひこちらの記事を先にお読みください。





📕Perplexityのコレクション機能の利点

まず、Perplexityのコレクション機能の利点についてはこちら


Perplexityの「コレクション機能」は、ユーザーがチャットの会話履歴を整理し、後から参照しやすくするための便利な機能です。主な特徴は以下の通りです。

1,会話のグループ化と整理

  • 関連するチャットをまとめて「コレクション」として保存できる
  • 仕事、趣味、リサーチなどカテゴリ別に会話をグループ化
  • 各コレクションにわかりやすい名前をつけて整理

2,履歴の検索と参照

  • キーワード検索で過去の会話を素早く見つけられる
  • 重要な情報や知見を後から簡単に参照可能
  • URLを共有して他のユーザーとコレクションを共有することも可能

3,ナレッジベースの構築

  • 有益な会話を蓄積することで、自分だけのナレッジベースを構築
  • 過去の会話から必要な情報を見つけ、新しい会話に活かせる
  • AIアシスタントとの会話を通じて知識を増やし、アウトプットの質を高められる

4,カスタムプロンプトの設定

  • 各コレクションに対して、事前にプロンプト(指示)を設定可能
  • AIアシスタントとの会話に一貫性を持たせ、目的に沿った対話を誘導
  • 例えば「このコレクションでは〇〇について議論する」といった指示を与えられる

5,文脈に沿った会話の継続

  • 事前に設定したプロンプトに基づき、AIアシスタントが文脈を理解
  • ユーザーの意図に沿った回答や提案を返してくれる
  • 会話の流れを途切れさせることなくスムーズに進行できる

6,ロールプレイや特定タスクの実行

  • AIアシスタントに特定の役割を演じさせたり、タスクを実行させたりできる
  • 例えば「このコレクションではあなたは〇〇のような口調で話す」と設定
  • ロールプレイを通じて様々な視点からの意見を引き出せる


カスタムプロンプトを活用することで、コレクション内の会話をより目的志向で実りあるものにできます。状況に応じて的確な指示を与え、AIアシスタントを効果的に活用することができます。


この中で、前回の記事で熱く説明したのが4~6項目の内容です。「各コレクションに対して、事前にプロンプト(指示)を設定可能」➔カスタムプロンプトが可能

ただ、非常に素晴らしい機能ですが、1点だけ課題がありました。


🤔Perplexityのコレクション機能の課題

それは、カスタムプロンプトの文字数が2,000文字制限ということです。

一方でGPTsのInstructionsに設定可能な文字数は8,000文字なので、約4倍も差があります。

つまり、GPTsに設定するくらいの長文プロンプトは仕込めません。

そのため、一部の簡易的なプロンプトのみ設定して使っていました。


そんな時、とあるポストで衝撃を受けました!

💡プロンプト革命|Lisp方式で長文プロンプトを半分以上圧縮できる!

衝撃の内容は、いつも最新の有益情報をすぐるさんの投稿から ↓


つまり、これを活用すれば長文プロンプトの精度そのままで、文字量だけ圧縮することが可能です。


しかも、圧縮された文章を解凍することができます。


そして、すぐるさんはこれを実行できるGPTsを公開してくれました!ありがたすぎます!


それでは早速実証していきましょう!


📃Lisp方式を使って長文を圧縮してみる

わかりやすい事例として、「桃太郎」のあらすじを圧縮してみましょう。

圧縮に使うのはすぐるさん作成のGPTs「Lisp Prompt Compressor」です。

ChatGPTに月額課金している方は、一緒に実践してみましょう。


「桃太郎」のあらすじをLisp方式で圧縮

PerplexityCompile3.png
「桃太郎」のあらすじはこちら 約1,200文字

むかし、むかし、ある所におじいさんとおばあさんが住んでいました。
おじいさんは山へしば刈りに、おばあさんは川へ洗濯に行きました。
おばあさんが川で洗濯をしていると大きな桃が流れてきました。
「なんと大きな桃じゃろう!家に持って帰ろう。」
とおばあさんは背中に担いで家に帰り、その桃を切ろうとすると、なんと桃から大きな赤ん坊が出てきたのです。
「おっとたまげた。」
二人は驚いたけれども、とても喜び、
「何という名前にしましょうか。」
「桃から生まれたから、桃太郎というのはどうだろう。」
「それがいい。」
桃太郎はあっと言う間に大きくなり、立派な優しい男の子になりました。
ある日、桃太郎は二人に言いました。
「鬼ケ島に悪い鬼が住んでいると聞きました。」
「時々村に来て悪いことをするのでみんな困っている。」
とおじいさんが答えると、
「それでは私が行って退治しましょう。おかあさん、きび団子を作って下さい。」
おばあさんはとてもおいしい日本一のきび団子を作り、桃太郎はそれを腰の袋に入れるとさっそく鬼ケ島に向けて旅立ちました。
旅の途中、桃太郎は犬に会い、
「桃太郎さん、袋の中に何が入っているだい。」
「日本一のきび団子だよ。」
「僕に一つくれればお伴します。」
犬は桃太郎から一つ団子をもらい家来になりました。
桃太郎と犬が歩いて行くと、猿がやってきて、
「桃太郎さん、袋の中に何が入っているんだい。」
「日本一のきび団子だよ。」
「僕に一つくれればお伴します。」
猿は桃太郎から一つ団子をもらい家来になりました。
しばらく行くと、キジが飛んできて、
「桃太郎さん、袋の中に何が入っているんだい。」
「日本一のきび団子だよ。」
「僕に一つくれればお伴します。」
キジは桃太郎から一つ団子をもらい家来になりました。
しばらく行くと鬼ケ島が見えてきました。
「あれが鬼ケ島に違いない。」犬が吠えました。
鬼ケ島に着くと、お城の門の前に、大きな鬼が立っており、桃太郎は大きな石をつかむと鬼に向かって投げました。
猿は門に登り鍵を開けました。キジは鬼の目をつつきました。
「こりあ参った。助けてくれ~」
そういうと、鬼はお城の中に逃げていきました。
するとお城から沢山の鬼が出てきて、ついに大きな鬼があらわれました。
「生意気な小僧。俺様が懲らしめてやる。」
大きな鉄棒を振り回しながら言いました。
「あなたがかしらですか。」と言うと桃太郎はすばやく鉄棒の上に飛び乗り、
「悪い鬼、村人に悪いことをしたからには許せない。私のこぶしを受けてみろ。」
「アイタタ、ごめん。ごめん。許してくれ。降参だ。」
「本当に約束するか。」
「約束する。嘘はつきません。宝物をやります。」
桃太郎はお城の金や銀や織物や、荷車一杯の宝物を手に入れました。
こうして、桃太郎はおじいさんとおばあさんの待つ家に帰り、みんなで幸せにくらしました。

GPTs「Lisp Prompt Compressor」を使って圧縮した結果

PerplexityCompile4.png

圧縮結果 ➔ 約720文字になりました

(((((むかし むかし) (ある 所) (おじいさん おばあさん) (住んでいました)) (((おじいさん (山 しば刈り)) (おばあさん (川 洗濯))) (おばあさん ((川 洗濯) ((大きな 桃) 流れてきました)) (家に持って帰ろう))) (桃 ((切ろうとする) (桃から 大きな赤ん坊 出てきた) (おっとたまげた))) ((桃太郎 ((あっと言う間に 大きくなり) (立派な優しい 男の子になりました)) ((桃太郎 ((鬼ケ島 悪い鬼) (村 悪いこと 困っている)) (退治しましょう (おばあさん きび団子)))) ((おばあさん (日本一 きび団子)) (桃太郎 ((腰の袋に入れる) (鬼ケ島に向けて 旅立ちました))) ((桃太郎 ((犬 (桃太郎さん 袋の中)) (日本一のきび団子だよ)) (家来になりました)) ((猿 (桃太郎さん 袋の中)) (家来になりました)) ((キジ (桃太郎さん 袋の中)) (家来になりました))) ((鬼ケ島 (大きな 鬼) (桃太郎 大きな石 投げました)) (猿 鍵を開けました) (キジ 鬼の目をつつきました) ((鬼 ((お城の中に逃げていきました) (沢山の鬼 出てきて)) (大きな 鬼 (生意気な小僧)) (桃太郎 鉄棒の上に飛び乗り) ((悪い鬼 村人に悪いこと) (許せない 私のこぶしを受けてみろ)) ((アイタタ ごめん ごめん 許してくれ 降参だ) (約束する 嘘はつきません 宝物をやります)))) (桃太郎 (お城の金や銀や織物や 荷車一杯の宝物を手に入れました)))) (桃太郎 (おじいさんとおばあさんの待つ家に帰り みんなで幸せにくらしました))))

いかがでしょうか?この方式を使うことで文字量を圧縮することができます。


次は実際の長文プロンプト圧縮してみましょう。


🔖Lisp方式で、3,000文字ある長文プロンプトを圧縮してみる

いつもお世話になっているプロンプトデザイナーのひろ吉さん。


こちらの記事をシェアすることで「非エンジニアでもAIの力を使ってシステム構築の要件定義を頑張るプロンプト」を入手することができます。



💡非エンジニアでもAIの力を使ってシステム構築の要件定義を頑張るプロンプト

PerplexityCompile1.png

Lisp方式で、3,000文字ある長文プロンプトを圧縮した結果➔550文字へ

PerplexityCompile2.png

圧縮したプロンプトをPerplexityのコレクション機能に設定

文字が3,000から720へ圧縮されたので、余裕でコレクション機能に設定できました!

PerplexityCompile5.png

圧縮したプロンプトを使って、実際に要件定義の指示をした結果

PerplexityCompile7.png

■コレクション機能を経由して実行したプロンプト

現役大学生が高校生に受験勉強を教える会員制SNSを作りたい。
ターゲットは受験を控える高校生

■アウトプット

## プロジェクト概要

現役大学生が高校生に受験勉強を教える会員制SNSを作成する。ターゲットユーザーは受験を控える高校生。

## 機能要件

- 会員登録・ログイン機能
- 高校生会員と大学生会員で権限を分ける
- 掲示板機能
- 高校生が質問を投稿し、大学生が回答できる
- カテゴリ分けして教科ごとの質問ができる
- チャット機能
- 高校生と大学生が11でチャットできる
- コンテンツ配信機能
- 大学生が勉強に役立つ記事やノウハウを配信できる
- 高校生は会員限定コンテンツを閲覧できる
- 進捗管理機能
- 高校生が自分の勉強の進捗を記録・可視化できる
- 目標設定と達成度の管理ができる

## 非機能要件

- ユーザビリティ
- シンプルで直感的なUIデザイン
- スマートフォンに最適化したレスポンシブデザイン
- パフォーマンス
- 同時アクセス数500人程度を想定
- ページ表示速度3秒以内
- セキュリティ
- HTTPS通信で個人情報を保護
- パスワードの暗号化
- 不正アクセス対策

## 開発環境

- フロントエンド
- HTML5, CSS3, JavaScript
- Reactフレームワーク
- Material-UIライブラリ
- バックエンド
- Node.js
- Expressフレームワーク
- AWSサーバーレスアーキテクチャ
- Lambda, API Gateway, DynamoDB, Cognito, S3
- インフラ
- AWS Amplifyでのデプロイ
- Route53でのドメイン管理
- CloudFrontでのCDN設定

## フォルダ構成

```
/
├── amplify/
├── public/
│ ├── index.html
│ └── favicon.ico
└── src/
├── components/
│ ├── Header.js
│ ├── Footer.js
│ └── ...
├── pages/
│ ├── Top.js
│ ├── Login.js
│ ├── SignUp.js
│ ├── MyPage.js
│ ├── Forum.js
│ ├── Chat.js
│ └── Contents.js
├── hooks/
├── contexts/
├── graphql/
├── images/
├── styles/
├── App.js
└── index.js
```

## バックエンドアーキテクチャ

- API Gateway + Lambdaでサーバーレスなバックエンドを構築
- DynamoDBをメインのデータストアとして利用
- Cognitoで会員認証・認可を実装
- S3に画像などの静的ファイルを保存

## 認証認可

- Cognitoのユーザープールで会員管理
- ログイン時にJWTを発行し、APIリクエスト時に検証
- 高校生会員と大学生会員でアクセス制御

## デプロイ方法

- フロントエンドコードをAmplifyでホスティング
- バックエンドのLambda関数とインフラをAmplifyでデプロイ
- AmplifyのGitHub連携でCI/CD

## ユーザーストーリー

1. 高校生Aさんがサービスに会員登録
2. トップページから教科を選択し、掲示板に質問を投稿
3. 大学生Bさんがその質問に回答
4. AさんとBさんが11のチャットで詳しく質疑応答
5. Aさんが勉強の進捗を記録し、目標達成度を可視化
6. Bさんが数学の勉強法に関する記事を配信
7. Aさんが会員限定の勉強法記事を閲覧

## 優先順位

1. 会員登録・ログイン機能
2. 掲示板機能
3. チャット機能
4. コンテンツ配信機能
5. 進捗管理機能

以上が、現役大学生が高校生に受験勉強を教える会員制SNSの要件定義書の提案です。
シンプルで使いやすいUIと、高校生の学習ニーズに合ったコンテンツ提供を重視しました。
AWSのサーバーレスアーキテクチャを活用し、スケーラビリティと運用コストの最適化を図ります。
ご検討よろしくお願いいたします。

いかがでしょうか?

長文プロンプトの精度を変えず、文字量だけ圧縮できる非常に優れた方法です。

Perplexityに設定できるプロンプトの幅が一気に広がりますので、仕事効率がさらにUPしますね。


圧縮はこちらから ↓


💡GPTs「Lisp Prompt Compressor


余談ですが、「Lisp方式って何?」と疑問を持った方もいると思います。

Perplexityで調べてもらいましたので、興味がある方はこちらのリンクからチェックしてみてください♪ 

説明は、高校生と先生の対話形式なので、理解しやすいと思います ↓


💡Lisp方式とは?


ここまで読んでいただき、「ChatGPTの有料プランに登録していないからPerplexityでLisp方式試せないよ・・・」という方もいると思います。


そんな方のために、ひろ吉さんの『出来る‼️非エンジニアでもAIの力を使ってシステム構築の要件定義を頑張るプロンプト』を、Perplexityを使い、Lisp方式に圧縮するためのプロンプトを作ったのでシェアします。


色々試行錯誤して作ったため、出来は完全ではありませんが、長文プロンプトが圧縮される体験と、実際にコレクション機能に仕込んで使うことができます。


ちなみに、この要件仕様書プロンプトを実行すると・・・、


  1. アイデア出し
  2. 要件仕様書出力
  3. フォルダ構成出力
  4. 処理フローのシーケンス図をMermaidで出力
  5. requirements.txtを詳細に出力


という企画職からエンジニア職までを一気通貫に体験することができます。

数分でここまでアウトプットされる素晴らしさを、ぜひ体験してほしいです!


以降は、ひろ吉さんのプロンプトを入手した方のみ読み進めてください。