
【Python】ChatGPTでコード生成をするプロンプトの作り方
公開: 更新:ChatGPTでPythonのコードを生成するプロンプトの作り方
ChatGPTでPythonのコードを生成するプロンプトの作り方について、以下3つを簡単に解説していきます。
- 明確な目的と条件を指定する
- 必ず実装したい機能詳細の説明をする
- ライブラリやフレームワークを指定する
【PR】『Python』を学べる企業・個人向けのプログラミングコース
明確な目的と条件を指定する
ChatGPTでPythonコードを生成する際は、目的と実行条件を明確かつ詳細に指定することがプロンプト作成の基本となります。プログラムが解決すべき問題の定義からはじまり、入力データの形式、出力形式まで一連の流れを体系的に説明することによって、ChatGPTは要件に沿ったコードを生成できるようになります。漠然とした要求では具体性に欠けるコードしか生成できないため、「何のために」「どのように」「どんな結果を期待して」いるかを具体的に伝えることが重要です。
実行環境やパフォーマンス要件も明示することで、より実用的なコードが得られます。Python 3のどのバージョンで動作させるのか、メモリ使用量や実行速度に制約があるのか、また特定のプラットフォーム(Windows、Linux、macOSなど)で動作させる必要があるのかを指定すると良いでしょう。コードの品質基準(コーディング規約、テストカバレッジ、ドキュメント要件など)についても事前に明確にしておくことで、後工程での修正作業を最小限に抑えることができます。
期待する入出力例を提示することも非常に効果的です。実際のデータサンプルと期待される処理結果を示すことによって、ChatGPTは具体的な処理イメージを把握しやすくなります。複雑なデータ構造や特殊なケースの処理方法も、具体例を通じて伝えることで適切に実装されやすくなります。入力値の範囲や型、エラー処理の方針についても明確に指示することによって、堅牢性の高いコードを生成できるようになるでしょう。
【サンプルプロンプト】
以下の条件を満たすPythonスクリプトを作成してください:
目的: ウェブサイトからテキストデータを抽出し、キーワード出現頻度を分析する
入力:
- URL: https://example.com/article
- 抽出対象: 本文テキスト(タグ内のテキスト)
- 分析対象キーワード: ["Python", "データ分析", "機械学習"]
出力:
- 各キーワードの出現回数
- キーワード出現密度(キーワード出現回数/総単語数)
- 結果をCSVファイルに保存
環境条件:
- Python 3.9で動作すること
- 処理時間は5秒以内であること
- メモリ使用量を最小限に抑えること
必ず実装したい機能詳細の説明をする
ChatGPTにPythonコードを生成させる際は、実装したい機能の詳細を段階的かつ体系的に説明することが重要です。機能要件をリスト形式で列挙し、各機能がどのように連携して動作するべきかの全体像を示すことによって、ChatGPTは要件間の関連性を理解したコードを生成できるようになります。単に機能名を挙げるだけではなく、その機能が必要な理由や背景も含めることで意図に沿った実装が促進されます。
エラーハンドリングやエッジケースの処理についても明確に指示することが必須です。想定されるエラーシナリオ(ファイルが存在しない、ネットワーク接続がない、入力データが不正など)とその対処方法を具体的に説明することによって、実運用に耐えうる堅牢なコードが生成されます。ユーザー入力の検証方法や例外処理の方針、ログ出力の要件なども詳細に指定することで、デバッグやメンテナンスが容易なコードが得られます。
また、機能の優先順位やオプション機能と必須機能の区別も明確にするべきです。限られたリソース内で実装する場合、どの機能が最も重要で、どの機能が後回しにできるのかを伝えることによって、効率的な開発計画に沿ったコードを生成できます。また、将来的な拡張性や保守性に関する要件(モジュール化、設計パターンの適用、ユニットテストの容易さなど)も指定しておくと、長期的に価値のあるコードを生成できるようになります。
【サンプルプロンプト】
画像処理アプリケーションの次の機能を実装するPythonコードを生成してください:
必須機能(優先度高):
1. 画像のリサイズ機能
- 入力: 画像ファイルパス、新しい幅と高さ
- 処理: アスペクト比を維持または無視してリサイズ
- 出力: リサイズされた画像をファイルに保存
2. フィルター適用機能
- グレースケール変換
- ぼかし(ガウシアンブラー、半径を指定可能)
- シャープ化(強度を指定可能)
エラーハンドリング要件:
- 存在しない画像ファイルを指定した場合は適切なメッセージを表示
- サポートしていない画像形式の場合は変換を試みるか適切なエラーを表示
- メモリ不足の場合は段階的に処理する仕組みを実装
拡張性要件:
- 新しいフィルターを追加しやすい設計にすること
- コマンドラインとGUIの両方から使用できるように設計すること
【PR】『Python』を学べる個人・中高生向けのプログラミングコース
ライブラリやフレームワークを指定する
ChatGPTでPythonコードを効率的に生成するには、使用すべきライブラリやフレームワークを明示的に指定することが極めて重要です。具体的なライブラリ名とそのバージョンを指定することによって、互換性の問題を事前に回避し、実行環境に適したコードを生成できるようになります。特に機械学習やデータ分析のタスクでは、NumPyやpandas、scikit-learnなどの特定ライブラリの機能を活用することで、コードの効率性と可読性が大幅に向上します。
標準ライブラリのみで実装すべきか、サードパーティライブラリを使用してよいかの判断基準も明確にするべきです。外部依存関係を最小限に抑えたいシナリオでは標準ライブラリのみの使用を指定し、機能性や開発効率を優先するシナリオでは適切なサードパーティライブラリの使用を許可することによって、プロジェクト要件に最適なコードが生成されます。ライブラリの選定理由や代替選択肢についての考慮事項も伝えておくと、より的確な実装が期待できます。
特定のフレームワークに基づいたコードを要求する場合は、そのフレームワークの設計思想や規約にも言及するとよいでしょう。例えばDjangoやFlask、FastAPIなどのWebフレームワークを使用する場合、そのフレームワーク特有のパターンやベストプラクティスに準拠したコードを要求することによって、フレームワークの利点を最大限に活かしたコードを生成できます。また、既存のコードベースとの統一性を保つために、特定のコーディングスタイルやプロジェクト固有の規約があれば、それらも明示的に伝えることが重要です。
【サンプルプロンプト】
REST APIを実装するPythonコードを生成してください。
使用するフレームワークとライブラリ:
- FastAPI 0.95.0(Webフレームワーク)
- SQLAlchemy 2.0.7(ORMライブラリ)
- pydantic 1.10.7(データバリデーション)
- pytest 7.3.1(テスト用)
- PostgreSQL 14(データベース)
コーディング規約:
- PEP 8に準拠すること
- タイプヒントを使用すること
- DocstringはGoogle styleで記述すること
アーキテクチャ要件:
- レイヤードアーキテクチャ(Router, Service, Repository)を採用
- 依存性の注入パターンを使用すること
- 設定は環境変数から読み込むこと
セキュリティ要件:
- JWT認証を実装すること
- SQLインジェクション対策を行うこと
- CORS設定を適切に行うこと
ChatGPTでPythonのスクレイピングツールを実際に生成したプロンプト
以下の条件を全て満たすPythonスクリプトを生成してください。
**目的:**
- ウェブサイトから指定された記事の本文テキストを抽出し、分析対象キーワードの出現頻度と出現密度を計算し、結果をCSVに保存する。
**入力:**
- URL: `https://example.com/article`
- 抽出対象: ``タグ内のテキスト
- 分析対象キーワード: `["Python", "データ分析", "機械学習"]`
**出力:**
- 各キーワードの出現回数
- キーワード出現密度(= キーワード出現回数 / 総単語数)
- 結果のCSVファイル出力(ファイル名:`keyword_analysis.csv`)
**環境条件:**
- Python 3.9で動作すること
- 処理時間は5秒以内を目標とすること
- メモリ使用量は最小限に抑えること(特に大規模な記事にも対応できる設計)
**必須機能(優先度高):**
1. **ウェブスクレイピング機能**
- 指定URLからHTMLを取得し、``タグ内のテキストを抽出する
- 抽出したテキストを前処理(不要なHTMLタグや改行の除去)する
2. **テキスト解析機能**
- 抽出テキストを単語ごとに分割し、全単語数を算出する
- 各キーワードの出現回数を計算し、出現密度(出現回数/総単語数)を求める
3. **結果のCSVファイル出力**
- キーワード、出現回数、出現密度の情報をCSV形式で保存する
- 保存ファイル名は`keyword_analysis.csv`とする
**エラーハンドリング要件:**
- **接続エラー:** 指定URLにアクセスできない場合、適切なエラーメッセージを標準出力に表示する
- **データ抽出エラー:** ``タグが存在しない、または本文が空の場合は、警告メッセージを出力し、処理を中断する
- **ファイル入出力エラー:** CSVの書き込み時にエラーが発生した場合、例外処理を行いログに記録する
- **一般例外:** その他予期しないエラーが発生した場合も、エラーメッセージと共に適切に処理する
**拡張性の要件:**
- 新たなキーワード追加が容易に行えるよう、キーワードリストを外部設定ファイルまたは定数として管理する
- ウェブスクレイピングとテキスト解析処理をモジュール化し、他の処理と連携できる設計にする
- 将来的に別の出力形式(JSON等)への対応が容易になるよう、結果出力機能を独立した関数として実装する
**使用するライブラリ・バージョン:**
- `requests` (HTTPリクエスト用)
- `BeautifulSoup` from `bs4` (HTMLパース用)
- `pandas` (CSVファイル作成用)
- ※標準ライブラリも併用して実装すること
**コーディング規約:**
- PEP 8に準拠すること
- 型ヒントを適切に使用すること
- 関数やクラスにはGoogleスタイルのDocstringで説明を記載すること
- 主要な処理は関数またはクラスで分割し、可読性と再利用性を考慮すること
- **実装例:**
- URL取得、HTMLパース、テキスト抽出、テキスト前処理、分析処理、CSV出力を分割して実装する
- 各関数の役割を明確にし、適切なコメントを入れること
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】画像認識で個数カウントをする方法
- 【Python】在庫管理システムを自作する方法
- 【Python】pipenvでバージョン変更を行う方法
- Pythonを使ったAndroidアプリの作り方(開発方法)