👾
ChatGPTにコードレビューをさせてみた
有給を取って4連休だったので、
流行りのChatGPTにコードレビューさせるWebアプリをつくってみた。
着想
個人開発してたりするとレビュー相手が欲しくなるもので、流行りのChatGPTを使っていたりした。
しかし、やり取りがまあまあ面倒なので「ファイルをアップロードしたら勝手にレビューしてくれないかなー」と思い開発に至った。
ターゲット
- 個人開発をしている人
- ジュニアレベルのITエンジニア
実装
最低限の機能要件的としては
- ファイルのアップロード
- アップロードしたファイルの解析をOpenAIのAPIで行う
- コードレビュー指摘を日本語200文字以内で行う(文章が途切れるため)
実装は極めて簡単だった。
技術スタックは以下
- Python3.11.2
- Django4.0.3
- TailwindCSS2.2.19
review.py
import requests
import os
def generate_review(code):
# APIキーを環境変数から取得
OPENAI_API_KEY = os.environ['OPENAI_API_KEY']
# APIリクエスト用のヘッダーを設定
headers = {
'Authorization': f'Bearer {OPENAI_API_KEY}',
'Content-Type': 'application/json',
}
# APIリクエスト用のデータを設定
data = {
'prompt': f'200文字以内で日本語のみでコードレビュー指摘をしてください:\n{code}\nレビュー:',
'temperature': 0.7,
'max_tokens': 300,
}
# APIリクエストを送信
response = requests.post('https://api.openai.com/v1/engines/text-davinci-002/completions', headers=headers, json=data)
# APIリクエストのレスポンスをプリントアウト
print(response.text)
# 応答をJSON形式で取得し、生成されたテキストを抽出
response_json = response.json()
if response_json.get('choices'):
generated_text = response_json['choices'][0]['text'].strip()
else:
generated_text = 'Error: APIからのレスポンスがありません'
# 生成されたテキストを整形
formatted_text = generated_text.replace('\n\n', '\n')
return formatted_text
24時間経たないぐらいで完成して、どこにデプロイするか考えていた。
デプロイ先をChatGPTに聞いてみると何故かとてもHerokuをおすすめしてきたが、
あまり使ったことのないGCPにデプロイを行った。
GCPへのデプロイは以下を参考にした。
デプロイしてツイートした後のめちゃめちゃ試されてる感...
詳しい実装内容は以下
完成品
ファイルをアップロードすると、日本語でのレビューとコードの改善例を表示してくれる
これから
ディレクトリごとアップロードしたらどうなるのかな...など考えています🤔
あとは使っていただいてのフィードバックや、自分でも使いにくいところは修正していきます🧑💻
宣伝
私が働いている株式会社ファンコミュニケーションズではエンジニアの採用を強化しています。
Java, PHP, JavaScript, Spring Boot, Codeigniter4でビビッとくる方はDMください!
Discussion