本日は、PythonとChatGPT APIを利用して、Googleシートにある大量のデータに対して各行にAIによる処理を適用する方法を解説します。
以下のような場面で有効です。
- SEOのキーワードデータがGoogleスプレッドシートに5万個あるため、各キーワードを「指名系」と「一般系」に分類したい。
- ユーザーフィードバックのデータがGoogleスプレッドシートに10万個あるため、それを分類したい。
- Googleシートに英語の単語が5000個あるため、全てを翻訳したい。
今回は1番目の「各キーワードを分類する」という作業内容をお見せします。
目次
必要な環境と費用
以下の環境で行います。
- データ:Googleスプレッドシート
- コードエディタ:Google Colab
- 生成AIのAPI:OpenAIのAPIを使用します。
データは架空のECサイト「NIDAS(ナイダス)」のキーワードデータをChatGPTに生成させました。
かかる費用は、「chatgpt-4o-mini」というモデルを使用すれば、5万行で数百円以内に済みます。
ヘイショー
有料APIを利用して大量の処理を行うため、試す場合は必ず最初は20行くらいで試してください。もし間違えて高価な費用を課金されてしまった場合の責任は負いかねますので、ご了承ください。
STEP 1. Open AIのサイトから、APIキーを取得する
手順2
APIキーをコピペする
STEP 2. Google ColabにAPIキーを設定する
STEP 3. Google ColabにPythonコードを入力、実行
コード
!pip install openai import pandas as pd from google.colab import auth, drive from google.colab import userdata import gspread from google.auth import default from openai import OpenAI import os # Import os to manage environment variables # Googleシートを認証する drive.mount('/content/drive', force_remount=True) auth.authenticate_user() creds, _ = default() gc = gspread.authorize(creds) # Googleシートのファイルを開ける filename = "sample-gsc-data" ss = gc.open(filename) # Googleシートのシートを読み込む def load_sheet_data(sheet_name): worksheet = ss.worksheet(sheet_name) data = worksheet.get_all_values() return pd.DataFrame(data[1:], columns=data[0]) sheet = "sample_gsc_data_ja" df = load_sheet_data(sheet) # OpenAI APIを設定する OPENAI_API_KEY = userdata.get('OPENAI_API_KEY') client = OpenAI(api_key=OPENAI_API_KEY) gpt_model = "gpt-4o-mini" def apply_chatgpt(keyword): response = client.chat.completions.create( model= gpt_model, messages=[{"role": "user", "content": f""" Classify the following keyword as either 'Branded' or ''Generic' A branded keyword is a keyword related to the company 'Nidas(ナイダス)', including its name in English or Japanese, common synonyms, or product names. No explanation needed, just answer by either 'Branded' or 'Generic' Keyword: {keyword}. """ }], max_tokens=100) result = response.choices[0].message.content return result.strip() # 処理を実行する start_row = 4 worksheet = ss.worksheet(sheet) for index, row in df.iterrows(): if index + 2 < start_row: # Skip rows before the start row continue result = apply_chatgpt(row['Query']) df.at[index, 'Category'] = result worksheet.update_cell(index + 2, df.columns.get_loc('Category') + 1, result)
まとめ
もしコードが動かなければお知らせください。
ヘイショー
ご精読ありがとうございました。