こんにちはイワツカです。
食欲の秋ということでサツマイモやキノコが美味しい季節ですね。
さて今回は、生成AIを使おうと思ってもプロンプトの書き方がよく分からず、生成AIから思ったような回答を得られない...なんて方におススメのOpenAIのプロンプトジェネレーター機能を紹介します。
1. プロンプトジェネレーターとは
プロンプトジェネレーターとは、その名の通り、AIに対する指示文(プロンプト)を自動的に作成する機能です。
ユーザーが入力した簡単な指示やキーワードをもとに、AIが最適なプロンプトを生成します。
これにより、ユーザーは複雑なプロンプトを自分で考える手間を省き、プロンプトについて専門的な知識がなくてもAIから最適な応答を得ることができます。
特に、手間をかけずにクリエイティブなタスクをやらせたいときに便利です。
使い方
使い方は非常に簡単で、以下の3ステップで可能です。
- OpenAIのPlaygroundにアクセスする
※OpenAIのAPIへのログインとPlaygroundを利用できるようにするためのCredit balanceが必要です。
ただし、プロンプトジェネレーターだけを使う分には現時点では無料のようです。
入力画面に「Free beta」の表示があり、プロンプトジェネレーターを実行しただけでは、Creditは消費されませんでした。 platform.openai.com - 画面上部の星のようなマークを押す
- 簡単な指示やキーワードを入力し、Createボタンを押す
また、既存のプロンプトを修正したい場合は、System instructionsに既存のプロンプトを入力し、プロンプトジェネレーターに追加の指示を書いてUpdateボタンを押せば、追加の指示の通りにプロンプトを修正してくれます。
2. ユースケースごとのプロンプトと結果比較
プロンプトジェネレーターを使わない場合と使った場合の結果を比較してみました。
今回は、プロンプトジェネレーターで生成した内容を、通常のChatGPTのプロンプト画面に貼り付けて、実行していきます。
Pythonコードのリファクタリング
生成AIにPythonコードをリファクタリングさせる場合のプロンプトと結果を比較してみます。
プロンプトジェネレーターを使わない場合
プロンプトを工夫しない例として以下のプロンプトをChatGPTで利用しました。
以下のPythonコードをリファクタリングしてください。 --- def calculate_average(numbers): total = 0 for num in numbers: total += num average = total / len(numbers) return average
結果がこちらです。
以下のようにリファクタリングすることで、コードを簡潔にし、Pythonicな書き方になります。 def calculate_average(numbers): return sum(numbers) / len(numbers) ## 主な改善点 1. 合計計算の簡略化: sum(numbers)を使用することで、ループを省略しました。 2. 可読性の向上: 不要な変数 total を削除し、関数が何をしているかが直感的にわかりやすくなりました。 この変更により、関数がより簡潔かつ効率的になります。
プロンプトジェネレーターを使う場合
まずはプロンプトジェネレーターに「Pythonコードをリファクタリングしてください。」と入力し、プロンプトを生成させます。
生成されたプロンプトがこちらです。手順や出力形式、具体例が追加されています。
与えられたPythonコードをリファクタリングして、読みやすさ、効率、または保守性を向上させてください。 # 手順 1. 与えられたPythonコードを分析して、その現在の機能、構造、および動作を理解します。 2. 最適化、単純化、または再作成によって恩恵を受ける部分を特定します。これには次の内容が含まれることがあります: - 冗長なコードの削除 - 変数/関数名をより明確にするための改善 - 複雑なループやロジックの簡略化 - 大きな関数を小さく、よく定義された部分に分割する - ハードコーディングされた値を定数や設定変数に置き換える - エラーハンドリングの改善やよりPython的な構成の利用 3. リファクタリングプロセスを実行し、元の機能と同一の動作を保持します。 4. リファクタリングされたコードはドキュメントが整備され、読みやすさや効率が向上した部分にはコメントを付加してください。 # 出力形式 リファクタリングされたPythonコードをプレーンテキストで提供してください。変更点の大きい部分には、その変更がコードのどのように改善するかを明確にするコメントを含めてください。 # 例 **入力:** python def calc(a, b): result = 0 for i in range(a): result += b return result **リファクタリング後の出力:** python def calc(a, b): # 効率化のためループの代わりに乗算を使用 return a * b # 注意事項 - 同じ全体的な機能を維持してください。 - リファクタリングされたコードは簡潔で、Python的で、理解しやすいものであるべきです。 - 変数名と関数名にはスネークケース(snake_case)を使用するなど、ベストプラクティスに従ってください。 - 元のバージョンと一致することを確認するためにコードをテストしてください。
このプロンプトにリファクタリングしたいPythonコードを追加してChatGPTに生成させました。
結果がこちらです。
プロンプトジェネレーターを使わない場合と比較して、コメントが追加されていたり、入力が空リストの場合の処理が追加されています。
リファクタリングされたコードを以下に示します。変更点として、リスト内包表記と組み込み関数を活用してコードを簡潔にし、コメントを追加して改善点を明示しました。 def calculate_average(numbers): """ Calculate the average of a list of numbers. Args: numbers (list of float): List of numbers to calculate the average for. Returns: float: The average value of the numbers. """ # シンプルで効率的な合計計算と平均値算出 return sum(numbers) / len(numbers) if numbers else 0 # 空リストの場合は0を返す ## 改善点の詳細 1. sum()関数の利用: sum()はPythonに組み込まれた効率的な方法でリストの合計を計算します。ループを手動で書く必要がなくなり、コードがシンプルになります。 2. 空リストのハンドリング: numbersが空のリストだった場合、ゼロ除算エラーが発生する可能性があるため、三項演算子を使ってデフォルト値(0)を返すようにしました。 3. コメントとドキュメンテーション: 関数にdocstringを追加し、コードの目的と引数/戻り値の説明を明確にしました。 リファクタリング後のコードは、元の機能を保持しつつ、よりPython的で簡潔かつ安全な実装になっています。
API設計
次にFastAPIを使ったToDoアプリの設計を比較してみます。
プロンプトジェネレーターを使わない場合
簡単なプロンプトとして以下をChatGPTに入力しました。
FastAPIを使ったToDOアプリの設計をしてください。
結果はこちらです。
以下は、FastAPIを使ったシンプルなToDoアプリの設計案です。この設計では、以下の機能を実現します: ## 機能一覧 1. タスクの作成: タスクを新規作成。 2. タスクの取得: - 全タスクのリスト取得。 - 特定のタスク詳細を取得。 3. タスクの更新: - タイトルやステータスなどの変更。 4. タスクの削除: - 特定のタスクを削除。 ## 使用技術 - フレームワーク: FastAPI - データベース: SQLite (SQLAlchemy + Pydantic) - 認証 (オプション): OAuth2 (JWTを使用) ## ディレクトリ構成 todo_app/ ├── app/ │ ├── main.py # エントリーポイント │ ├── models.py # データベースモデル │ ├── schemas.py # Pydanticスキーマ │ ├── database.py # データベース接続設定 │ ├── crud.py # データ操作用ロジック │ └── routers/ │ ├── todo.py # タスク関連のエンドポイント │ └── auth.py # 認証関連 (オプション) └── requirements.txt # 必要なPythonパッケージ ## ファイルの内容 1. main.py FastAPIのエントリーポイント。 from fastapi import FastAPI from app.routers import todo app = FastAPI(title="ToDo App") # ルーター登録 app.include_router(todo.router) @app.get("/") def read_root(): return {"message": "Welcome to the ToDo API!"} (以下省略)
プロンプトジェネレーターを使う場合
まずはプロンプトジェネレーターに「FastAPIを使ったToDOアプリの設計をしてください。」と入力し、プロンプトを生成させます。
生成されたプロンプトがこちらです。要件やデータモデル、エンドポイントの定義が明確になっています。
FastAPIを使用してToDoアプリの設計を行ってください。データの処理、APIのインターフェース、エンドポイント、必要なリクエスト/レスポンス形式、ならびにデータモデルについて具体的に定義してください。 # 要件 以下の機能を備えたToDoアプリを設計してください: 1. ToDoリストの作成:新しいToDoタスクを追加できる。 2. ToDoリストの取得:現在のタスクのリストをすべて取得できる。 3. ToDoタスクの更新:指定されたタスクの情報(タイトル、ステータスなど)を更新できる。 4. ToDoタスクの削除:指定されたタスクを削除できる。 # データモデル 設計するためには、ToDoタスクに関して次の情報を考慮してください: - ID: タスクの一意の識別子 - タイトル: タスクの内容を示す文字列 - 詳細(任意): タスクの詳細説明 - 期限(任意): タスクの締切日 - 完了状態: タスクの進行状況を示すフラグ(完了か未完了か) # API エンドポイントの定義 必要なエンドポイントを含めて、FastAPIアプリの設計を行ってください。各エンドポイントには以下のものが含まれるべきです: - メソッド(GET, POST, PUT, DELETE) - エンドポイントURL(パス) - 必要なリクエストのパラメータ(クエリパラメータ、パスパラメータ、リクエストボディなど) - 期待されるレスポンスの形式 # Steps 1. **データモデル設計**: ToDoタスクに必要な属性(id, タイトル、状態など)をPythonの`pydantic`を使って定義。 2. **FastAPIサーバーのセットアップ**: 必要なエンドポイントと、それに関連する関数をFastAPIで構築。 3. **CRUD機能**: CRUD操作すべてに対応するエンドポイントを実装 (`create_to_do`, `read_to_do`, `update_to_do`, `delete_to_do`). 4. **エラーハンドリング**: 適切なステータスコードと共にエラーメッセージの設計。 5. **データの保存方法**: 一時的にメモリにデータを保持する方法を使用し、将来的にデータベースに移行可能である設計。 # Output Format 具体的なエンドポイントのURL、一つひとつのエンドポイントに関する説明、それぞれに対するリクエスト形式およびレスポンス形式、例外発生時のステータスコードなどを詳細に提供してください。出力は以下の形式で記述してください: - **エンドポイントURL:** `/todos` (POST): 新規タスク追加 - **リクエストボディ:** ```json { "title": "タスクのタイトル", "details": "タスクの詳細", "due_date": "YYYY-MM-DD", "completed": false } ``` - **レスポンス:** ```json { "id": 1, "title": "タスクのタイトル", "details": "タスクの詳細", "due_date": "YYYY-MM-DD", "completed": false } ``` - **その他 CRUD 操作のエンドポイントについても同様に記述**。 # Examples **エンドポイントの作成例**: 1. 新しいToDoタスクを追加する: - **リクエスト** - メソッド: `POST` - パス: `/todos` - ボディ: { "title": "買い物", "details": "牛乳とパンを買う", "due_date": "2023-05-30", "completed": false } - **レスポンス** - ステータスコード: `200 OK` - ボディ: { "id": 1, "title": "買い物", "details": "牛乳とパンを買う", "due_date": "2023-05-30", "completed": false } **注**:本設計はベースとして簡単なToDoアプリですので、スケーリングやデータ永続化の詳細についての検討が将来的には必要です。
次にこのプロンプトを使ってChatGPTに生成させた結果がこちらです。
プロンプトジェネレーターを使わない場合と比較して、DBや認証の有無について違いがあります。
また、何度か同じプロンプトを試した場合に、プロンプトジェネレーターを使った場合は安定して同じような結果が得られるのに対し、使わない場合はランダム性が高い出力になりました。
以下は、FastAPI を使用して設計したシンプルな ToDo アプリの仕様とコード例です。 ## 設計概要 ### データモデル pydantic を使用して、以下のデータモデルを定義します。 - ID: 一意の識別子 (自動生成) - タイトル: タスク名 (必須) - 詳細: タスクの詳細説明 (任意) - 期限: 締切日 (任意、ISOフォーマットの日付) - 完了状態: 完了/未完了のフラグ (デフォルトは未完了) ## API エンドポイント ### エンドポイント一覧 1. ToDoリストの作成 - メソッド: POST - パス: /todos - 説明: 新しい ToDo タスクを作成する。 2. ToDoリストの取得 - メソッド: GET - パス: /todos - 説明: すべての ToDo タスクを取得する。 3. ToDoタスクの更新 - メソッド: PUT - パス: /todos/{id} - 説明: 指定された ID の ToDo タスクを更新する。 4. ToDoタスクの削除 - メソッド: DELETE - パス: /todos/{id} - 説明: 指定された ID の ToDo タスクを削除する。 ## データモデル 以下は pydantic モデルの定義です。 from pydantic import BaseModel, Field from typing import Optional from datetime import date class Todo(BaseModel): title: str details: Optional[str] = None due_date: Optional[date] = None completed: bool = Field(default=False) class TodoResponse(Todo): id: int ## FastAPI アプリ 以下は main.py の内容です。 (以下省略)
ブログ作成
最後に、生成AIの比較記事をChatGPTで作成させた場合の違いについて見てみます。
プロンプトジェネレーターを使わない場合
「対話型生成AIの比較に関するブログを書いてください。」というプロンプトでChatGPTを実行した結果が以下です。
# 対話型生成AIの比較:どのAIが最適なのか? 近年、対話型生成AIは急速に進化し、私たちの日常生活やビジネスシーンにおいて重要な役割を果たすようになっています。この記事では、代表的な対話型生成AIを比較し、それぞれの特徴や用途について詳しく解説します。 --- ## 比較対象のAI 以下の3つの対話型生成AIを比較します: - **ChatGPT (OpenAI)** - **Bard (Google)** - **Claude (Anthropic)** --- ### 1. ChatGPT (OpenAI) **特徴** ChatGPTはOpenAIが開発した対話型AIで、高度な自然言語処理(NLP)技術を活用しています。多様なタスクに対応可能で、ビジネスや教育、クリエイティブな作業に適しています。 **メリット** - 柔軟な会話能力 - プラグインを活用した拡張機能(プレミアムプラン) - 多言語対応の精度が高い **デメリット** - 最新情報を取得するにはインターネット接続やプラグインが必要 - 無料版は性能が制限される **主な用途** ビジネスドキュメントの作成、学習サポート、カスタマーサポート。 --- ### 2. Bard (Google) **特徴** BardはGoogleが開発した対話型AIで、検索エンジンとの強い統合が特徴です。最新情報の提供やデータ検索が得意です。 **メリット** - 最新のウェブ情報を即座に取得可能 - Googleツール(Gmail, Docs, Sheetsなど)との連携 - 簡潔な回答を得意とする **デメリット** - 一部の創造的なタスクでの応答が限定的 - ユーザーのカスタマイズ性が低い **主な用途** ニュースの検索、プロジェクト管理、簡単な質問への迅速な回答。 --- ### 3. Claude (Anthropic) **特徴** Claudeは人間中心の設計哲学に基づき、安全性と信頼性を重視した対話型AIです。エラーや誤解の少ない、慎重な回答を提供します。 **メリット** - 高い安全性と倫理基準 - 長文テキストの処理能力 - 応答の透明性が高い **デメリット** - 創造性やユーモアがやや控えめ - 特定のタスクでの柔軟性が制限される **主な用途** 契約書レビュー、倫理的な意思決定支援、教育コンテンツの作成。 --- ## 比較表 | **特徴** | **ChatGPT** | **Bard** | **Claude** | |----------------|-------------|-----------------|-----------------| | **柔軟性** | 高い | 中程度 | 中程度 | | **最新情報** | プラグインが必要 | 非常に高い | 中程度 | | **安全性** | 高い | 中程度 | 非常に高い | | **創造性** | 高い | 中程度 | 低い | | **用途の幅広さ** | 非常に広い | 広い | 狭い | --- ## どのAIを選ぶべきか? 選ぶべきAIは、利用目的によります。 - **クリエイティブな作業や多様なタスクが必要な場合**:ChatGPT - **最新情報やGoogleツールとの連携を重視する場合**:Bard - **安全性や正確な回答を求める場合**:Claude --- ## まとめ 対話型生成AIは日々進化しており、どのAIも独自の強みを持っています。どのAIを選ぶかは、あなたの目的や期待する成果次第です。今後も新たな機能や性能向上が期待されるため、常に最新の情報をキャッチアップし、最適なAIを選択しましょう。
プロンプトジェネレーターを使う場合
まずはプロンプトジェネレーターに「対話型生成AIの比較に関するブログを書いてください。」と入力してプロンプトを生成させた結果がこちらです。
ブログの構成や出力形式、例がプロンプトに含まれています。
対話型生成AIの比較に関するブログ記事を書いてください。 あなたのブログでは、異なる対話型生成AIツールについて、主な特長、メリット、デメリット、使い方の違いを取り上げ、読者にとってどのツールが最適かについてわかりやすく説明します。 # ブログ作成の手順 1. **対話型生成AIの概要**: 対話型生成AIとは何か、どのような目的で使用されるのかを簡単に説明してください。 2. **代表的なAIツールの紹介**: 対話型生成AIとして知られている代表的なツール(例: ChatGPT, Bing AI, Google Bardなど)について簡潔に紹介し、それぞれの開発企業とツールの違いを読者にわかりやすく説明してください。 3. **各ツールの特長と機能比較**: - 各ツールの特長をまとめましょう。特に、生成能力、対応するコミュニケーションスタイル、応答速度、価格、追加機能(例えば、情報の検索、API連携)などを考慮してください。 - 比較表形式でも良いですし、個別に詳しく説明しても構いません。 4. **メリットとデメリットの分析**: - 各AIツールの長所と短所を具体的に解説してください。読者がどのような場面でどのAIを利用すべきかの参考になるようにすることを意識しましょう。 5. **使用する場面によって異なる推奨AI**: - 例えば、「ビジネスでの使用」、「教育目的」、「リサーチのための補助」別に、最適なツールを推薦してください。 6. **結論と推奨**: - 各ツールの使い勝手から最も適した利用シナリオを提示し、どのAIが読者にとって理想的であるかを導き出してください。 # 出力形式 - **全体の構成**: セクションごとに整理し、段落を使用して流れをわかりやすくしてください。 - **長さ**: 1000〜1500語のブログ。 - **語調**: 読み手に優しく、わかりやすく説明するトーンを使用してください。 # 例 **例1: 対話型生成AIの紹介部分**: 「ChatGPTはOpenAIによって開発された有名な対話型生成AIです。自然でフレンドリーな会話を通じて、幅広い質問に回答することができます。特にクリエイティブな文章生成に強みを持ち、マーケティングやコンテンツ作成などの場面で広く使用されています。」 **例2: 比較と推奨**: 「ビジネス用途の場合、精度と応答速度を重視するため、Bing AIが良い選択肢かもしれません。一方で、創造性や自由な会話を求めるのであれば、ChatGPTが最も使いやすいでしょう。」 # 注意事項 - 各ツールの最新の情報(リリース日、アップデート等)に基づいて記事を書いてください。 - 偏った評価は避け、公平かつ客観的な見解を述べることが重要です。
次にこのプロンプトを使ってブログを生成させた結果がこちらです。
プロンプトジェネレーターを使わない場合と比較して、どのような場面で使えるかが追加されていたり、タイトルやまとめの表現が読者に印象が残るような形に工夫されています。
# 対話型生成AIの徹底比較:自分に最適なツールを見つけよう 日常会話から専門的なリサーチまで、対話型生成AIは私たちの生活を一変させました。この記事では、ChatGPT、Bing AI、Google Bardといった主要な対話型生成AIツールを比較し、それぞれの特長、メリット、デメリット、適切な使用シナリオを解説します。どのツールがあなたに最適なのかを知るための参考にしてください。 --- ## 対話型生成AIとは? 対話型生成AIとは、自然言語処理(NLP)を活用して、人間と自然な会話ができるAIツールです。これらのAIは質問への回答、アイデアの提案、問題解決、クリエイティブな文章生成、そして学習支援など、幅広い用途で使用されています。ユーザーはこれらのツールを通じて、仕事の効率化や新しい知見の獲得を実現できます。 --- ## 代表的なAIツールの紹介 ### 1. ChatGPT - **開発企業**: OpenAI - **概要**: ChatGPTは、OpenAIが開発した汎用性の高い対話型生成AIです。優れた自然言語生成能力を備え、創造的な文章作成や親しみやすい会話が得意です。 ### 2. Bing AI - **開発企業**: Microsoft - **概要**: Bing AIはMicrosoftが提供するツールで、Bing検索エンジンと統合されています。リアルタイムのウェブ検索機能を活用して、最新情報を迅速に提供します。 ### 3. Google Bard - **開発企業**: Google - **概要**: Google BardはGoogleの対話型生成AIで、Googleの膨大なデータベースを活用し、幅広い質問に対応可能。検索と知識提供をスムーズに行えます。 --- ## 各ツールの特長と機能比較 | **特長** | **ChatGPT** | **Bing AI** | **Google Bard** | |------------------|-------------------------------------|--------------------------------------|--------------------------------------| | **生成能力** | 創造性が高く、文章の質が非常に高い | 実用性が高く、事実に基づく回答に強い | 情報の網羅性が高い | | **応答速度** | 高速 | 高速 | 高速 | | **最新情報の提供** | 最新情報には非対応 | リアルタイムのウェブ検索が可能 | リアルタイムのデータに対応 | | **価格** | 無料プランあり、有料プラン(ChatGPT Plus)は追加機能提供 | 無料 | 無料 | | **追加機能** | API連携やプラグインが豊富 | Bing検索エンジンとの統合 | Googleサービスとのシームレスな統合 | --- ## 各ツールのメリットとデメリット ### ChatGPT **メリット** - 創造性が高く、マーケティングやコンテンツ作成に最適 - 親しみやすい会話スタイルで初心者にも使いやすい - プラグインで機能拡張が可能 **デメリット** - 最新の情報には対応していない - 情報の正確性に欠ける場合がある --- ### Bing AI **メリット** - 最新情報をリアルタイムで取得可能 - 事実に基づいた実用的な回答が得意 - 無料で使える **デメリット** - 創造的な文章生成や柔軟な会話には弱い - 一部の専門的な質問に対する対応が制限されることがある --- ### Google Bard **メリット** - Google検索と連動した膨大な知識にアクセス可能 - 高度な質問に対応しやすい - 無料で利用でき、Googleサービスとの相性が良い **デメリット** - 応答の自然さや創造性ではChatGPTに劣る場合がある - 個別の詳細なリサーチには不向き --- ## 使用する場面による推奨AI ### 1. ビジネスでの使用 - **おすすめツール**: Bing AI - **理由**: 最新情報の検索が必要なプレゼン資料やリサーチ、顧客対応のための正確な情報提供に最適。 ### 2. 教育目的 - **おすすめツール**: Google Bard - **理由**: 知識の網羅性が高く、学術的な質問にも対応しやすい。Google ClassroomやGoogleドキュメントとの連携も便利。 ### 3. リサーチのための補助 - **おすすめツール**: Bing AI - **理由**: リアルタイムで正確な情報を引き出せるため、最新のデータを必要とするリサーチに向いている。 ### 4. クリエイティブな作業 - **おすすめツール**: ChatGPT - **理由**: 創造性に優れ、物語の作成、広告コピーの作成、ブログ記事のアイデア出しなどに最適。 --- ## 結論と推奨 対話型生成AIは、それぞれ異なる特長を持っており、使用する目的や場面によって選ぶべきツールが異なります。 - **創造性を重視するなら**: ChatGPT - **正確で最新の情報を必要とするなら**: Bing AI - **幅広い知識とGoogleサービスの連携を活用したいなら**: Google Bard すべてのツールには無料プランがあるので、まずはそれぞれ試してみて、あなたの目的に最適なツールを見つけてください。これらのAIを活用することで、あなたの生活や仕事がさらに効率的で豊かになることでしょう!
3. まとめ
新しく登場した、OpenAIのプロンプトジェネレーターについて紹介しました。
プロンプトジェネレーターを使うことで、誰でも簡単に高品質なプロンプトを作成でき、生成AIから得られる出力の質が上がります。
実際の使い方としては、プロンプトジェネレーターで生成されたプロンプトをそのまま使うというよりは、プロンプトジェネレーターでまずはプロンプトを作成し、内容を修正するというのが良さそうです。
自分でイチからプロンプトを書くより遥かに効率化できるので、ぜひ使ってみてください。
参考までに、プロンプトジェネレーターで生成されるプロンプトをAPIで実現したい人は、OpenAIのドキュメントにプロンプト生成の記事があるので見てみてください。
Acroquest Technologyでは、キャリア採用を行っています。少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。 www.wantedly.com
- Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- マイクロサービス、DevOps、最新のOSSやクラウドサービスを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長