VOOZH about

URL: https://qiita.com/kaizen_nagoya/items/8765136bd360d6aeca1c

⇱ Gemini Colab連携 #Gemini - Qiita


👁 Image
0

Go to list of users who liked

2

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

@kaizen_nagoya(Dr. Kiyoshi Ogawa)

Gemini Colab連携

0
Last updated at Posted at 2025-10-09

倧芏暡蚀語モデル講座 基瀎線 2025 Autumn 敗因を勝因に
https://qiita.com/kaizen_nagoya/items/34ffd2b0c47a5f3665d9

Google Colab ずGeminiを連携したこずがない。

ChatGPT

Gemini ずColabの連携の利点は䜕がありたすか。

ChatGPT:

「Gemini」ず「Google Colab」の連携の利点に぀いお敎理したす。たず、ここでの Gemini は䞀般的に Google Gemini倧芏暡蚀語モデル / AIプラットフォヌム を指すず仮定したす。もし異なるサヌビスを指しおいる堎合は教えおください。

  1. 蚈算リ゜ヌスの最適化
    Colab は GPU / TPU を䜿った実行環境をクラりド䞊で提䟛したす。
    Gemini 偎で生成AIモデルや倧芏暡蚀語モデルを管理し、Colab から API を通じお呌び出せば、ロヌカル環境に重いモデルを眮かずに掚論や孊習を行える。
    Colab では自前でモデルをダりンロヌドしお動かすよりも、Gemini API 経由の利甚は ストレヌゞやメモリ消費を倧幅に削枛できたす。
  2. デヌタ掻甚の柔軟性
    Colab は Google Drive ずの連携が簡単で、孊習デヌタや入力デヌタをアップロヌド可胜。
    Gemini API を Colab ノヌトブックから呌ぶこずで、倧芏暡モデルを盎接ロヌカルで動かすこずなくデヌタを凊理できたす。
    䟋: デヌタ分析 → Gemini に送信 → モデルで芁玄 / 分類 → 結果を Colab で可芖化。
  3. プロトタむピングの効率化
    Colab はコヌドの共有や実隓が簡単で、Gemini の AI 機胜を組み合わせるず プロトタむプ䜜成が迅速に。
    たずえば
    GPT 系モデルを䜿った文章生成
    デヌタセットに察する自動ラベル付け
    察話型アプリケヌションの詊䜜
    などをすぐに詊せたす。
  4. 環境䟝存の問題の回避
    Colab はクラりド䞊で実行されるため、OS やラむブラリの䟝存関係の問題を回避できたす。
    Gemini API ぞのアクセスも同じ Colab 環境から行えるため、ロヌカルで環境構築するよりも安定しお利甚可胜。
  5. 自動化ず拡匵性
    Colab の Python スクリプトから Gemini API を呌び出すこずで、孊習 → 掚論 → 結果出力 → 可芖化たでをノヌトブック内で自動化できたす。
    Google Drive、BigQuery、Sheets などず組み合わせおワヌクフロヌ党䜓を Colab 䞊で完結させられたす。
    たずめ
    項目 利点
    蚈算リ゜ヌス 倧芏暡モデルをロヌカルで動かさずに利甚可胜
    デヌタ連携 Drive / BigQuery デヌタを即座に凊理
    プロトタむピング 短時間でモデルの詊䜜・実隓が可胜
    環境安定性 OS やラむブラリ䟝存を気にせず利甚
    自動化 ワヌクフロヌ党䜓を Colab ノヌトブック内で完結
    💡 補足
    Gemini API は通垞 トヌクン認蚌が必芁。Colab で安党に環境倉数ずしお管理するず䟿利です。
    Colab の無料枠では GPU の利甚時間やメモリに制限があるため、Gemini API のような倖郚モデルず組み合わせるず制玄を緩和できたす。
    もしよければ、Colab から Gemini API を呌ぶ具䜓的な Python サンプルも瀺せたす。
    䜜りたすか

はい。

ChatGPT:

了解です。では、Google Colab から Gemini API を呌び出す簡単な Python サンプルを瀺したす。ここでは テキスト生成 を䟋にしたす。

  1. API キヌの蚭定
    Colab ではセキュアに管理するために 環境倉数 を䜿いたす。
import os

# Colab のセルで䞀床だけ実行
# !export GEMINI_API_KEY="ここにAPIキヌを入力"
# たたは、Python内で蚭定
os.environ['GEMINI_API_KEY'] = "ここにあなたのGemini APIキヌ"
2. Gemini API 呌び出し甚ラむブラリ䟋: requests
import requests
import json

# APIキヌ取埗
api_key = os.environ['GEMINI_API_KEY']

# API゚ンドポむント䟋: Gemini Text Generation
endpoint = "https://api.gemini.google.com/v1/generateText"

# 入力デヌタ
payload = {
 "prompt": "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "maxTokens": 150
}

# HTTPリク゚スト
headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
}

response = requests.post(endpoint, headers=headers, json=payload)

if response.status_code == 200:
 result = response.json()
 print(result.get("text", "No text returned"))
else:
 print(f"Error {response.status_code}: {response.text}")
  1. 補足ポむント
    maxTokens で生成するテキストの長さを制埡できたす。
    Colab では生成結果を Pandas や Matplotlib ず組み合わせお可芖化可胜。
    ファむルに曞き出しお Google Drive に保存するこずも簡単です。
import pandas as pd

df = pd.DataFrame([{"prompt": payload["prompt"], "response": result.get("text", "")}])
df.to_csv("/content/colab_gemini_output.csv", index=False)

💡 これで Colab 䞊で Gemini API を呌び出し、結果を保存・分析する基本的なワヌクフロヌ が完成したす。
垌望であれば、耇数プロンプトをたずめおバッチで凊理する方法や、生成結果を自動で可芖化する方法 もサンプルにできたす。
䜜りたすか

はい。

ChatGPT:

では、Colab 䞊で 耇数プロンプトをたずめお Gemini API に送信し、生成結果を自動で可芖化するサンプル を䜜りたす。ここでは 棒グラフで各プロンプトの文字数を可芖化する䟋にしたす。

  1. 必芁なラむブラリのむンポヌト
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
  1. APIキヌ蚭定
# Colabで環境倉数ずしお蚭定枈みの堎合は取埗
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
  1. 耇数プロンプトの定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。"
]
  1. API呌び出し関数の䜜成
def generate_text(prompt, max_tokens=150):
 payload = {"prompt": prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 return response.json().get("text", "")
 else:
 print(f"Error {response.status_code}: {response.text}")
 return ""
  1. 耇数プロンプトを䞀括凊理しお DataFrame に保存
results = []
for prompt in prompts:
 text = generate_text(prompt)
 results.append({"prompt": prompt, "response": text, "length": len(text)})

df = pd.DataFrame(results)
df.to_csv("/content/colab_gemini_batch.csv", index=False)
df
  1. 結果の可芖化棒グラフ文字数
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()

✅ このサンプルでできるこず
耇数のプロンプトを たずめお Gemini に送信
生成結果を DataFrame に保存
文字数などの統蚈情報を棒グラフで可芖化
垌望であれば、さらに 生成結果のキヌワヌド抜出や芁玄、自動分類 たで Colab 䞊でワンストップ凊理する拡匵䟋も䜜れたす。
䜜りたすか

はい。

ChatGPT:

では、Colab 䞊で Gemini の生成結果を自動で芁玄・キヌワヌド抜出・分類 たで行うサンプルを䜜りたす。ここでは Python 内で簡単に凊理する䟋を瀺したす。

  1. 必芁なラむブラリ
import os
import requests
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS
from sklearn.preprocessing import LabelEncoder
>2. API キヌ蚭定
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText

3.耇数プロンプトの定矩

prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。"
]
  1. Gemini API 呌び出し関数
def generate_text(prompt, max_tokens=150):
 payload = {"prompt": prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 return response.json().get("text", "")
 else:
 print(f"Error {response.status_code}: {response.text}")
 return ""
  1. 生成 → 芁玄簡易: 最初の文だけ → キヌワヌド抜出 → 仮分類
results = []

def extract_keywords(text, top_n=5):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords

def classify_text(text):
 # 簡易分類: キヌワヌドによる仮分類
 categories = ["AI", "ML", "Python", "Other"]
 text_lower = text.lower()
 if "ai" in text_lower:
 return "AI"
 elif "machine" in text_lower or "learning" in text_lower:
 return "ML"
 elif "python" in text_lower:
 return "Python"
 else:
 return "Other"

for prompt in prompts:
 generated = generate_text(prompt)
 summary = generated.split(".")[0] # 最初の文を芁玄ずしお䜿甚
 keywords = extract_keywords(generated)
 category = classify_text(generated)
 results.append({
 "prompt": prompt,
 "response": generated,
 "summary": summary,
 "keywords": ", ".join(keywords),
 "category": category
 })

df = pd.DataFrame(results)
df.to_csv("/content/colab_gemini_advanced.csv", index=False)
df
  1. 結果のポむント
    summary簡易的に最初の文を抜出
    keywordsテキスト䞭の䞊䜍キヌワヌドを自動抜出
    categoryキヌワヌドベヌスの簡易分類必芁に応じお ML モデルで匷化可胜
    💡 さらに拡匵䟋
    芁玄を Gemini API に䟝頌 → より自然な文章に
    分類を機械孊習モデルに眮き換え → 粟床向䞊
    可芖化 → プロンプト別のカテゎリ分垃やキヌワヌド頻床をグラフ化
    垌望であれば、このサンプルをさらに 可芖化たで含めた Colab ワンストップノヌトブック にたずめるこずもできたす。
    䜜りたすか

はい。

ChatGPT:

では、これたでの内容をたずめお Colab 䞊で Gemini 生成 → 芁玄・キヌワヌド抜出・分類 → 可芖化 たでワンストップで行うサンプルノヌトブック圢匏にたずめたす。

  1. ラむブラリのむンポヌト
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.feature_extraction.text import CountVectorizer
  1. APIキヌず゚ンドポむント蚭定
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
>3. 耇数プロンプトの定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。",
 "生成AIを教育に掻甚する利点ず課題に぀いお述べおください。",
 "Pythonでテキスト凊理する際の䟿利なラむブラリを教えおください。"
]
>4. Gemini API 呌び出し関数
def generate_text(prompt, max_tokens=150):
 payload = {"prompt": prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 return response.json().get("text", "")
 else:
 print(f"Error {response.status_code}: {response.text}")
 return ""
>5. 芁玄・キヌワヌド抜出・分類関数
def extract_keywords(text, top_n=5):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords

def classify_text(text):
 text_lower = text.lower()
 if "ai" in text_lower:
 return "AI"
 elif "machine" in text_lower or "learning" in text_lower:
 return "ML"
 elif "python" in text_lower:
 return "Python"
 else:
 return "Other"
>6. 耇数プロンプトを凊理しお DataFrame に栌玍
results = []

for prompt in prompts:
 generated = generate_text(prompt)
 summary = generated.split(".")[0] # 最初の文を芁玄
 keywords = extract_keywords(generated)
 category = classify_text(generated)
 results.append({
 "prompt": prompt,
 "response": generated,
 "summary": summary,
 "keywords": ", ".join(keywords),
 "category": category,
 "length": len(generated)
 })

df = pd.DataFrame(results)
df.to_csv("/content/colab_gemini_full.csv", index=False)
df
>7. 可芖化䟋
(a) プロンプトごずの生成文字数
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()
(b) カテゎリ分垃
category_counts = df["category"].value_counts()
plt.figure(figsize=(6,4))
category_counts.plot(kind="bar", color="salmon")
plt.xlabel("カテゎリ")
plt.ylabel("件数")
plt.title("生成結果のカテゎリ分垃")
plt.tight_layout()
plt.show()
(c) キヌワヌド頻床䞊䜍5個たで抜出しお集蚈
all_keywords = [kw for sublist in df["keywords"].str.split(", ") for kw in sublist]
keyword_series = pd.Series(all_keywords).value_counts().head(10)

plt.figure(figsize=(8,5))
keyword_series.plot(kind="barh", color="lightgreen")
plt.xlabel("出珟回数")
plt.ylabel("キヌワヌド")
plt.title("䞊䜍キヌワヌドの出珟頻床")
plt.tight_layout()
plt.show()
✅ このノヌトブックでできるこず
耇数プロンプトの Gemini 生成
簡易芁玄の自動抜出
キヌワヌド抜出
カテゎリ分類
生成文字数・カテゎリ分垃・キヌワヌド頻床の可芖化
CSV出力で結果保存
必芁であれば、次のステップずしお Gemini API に芁玄や分類も任せおより自然な結果を埗る拡匵版 も䜜れたす。
䜜りたすか

はい。

ChatGPT:
>では、Colab 䞊で Gemini API に芁玄・分類たで任せお自然な結果を埗る拡匵版 を䜜りたす。
ここでは、生成 → 芁玄 → 分類たで すべお Gemini に䟝頌 するワヌクフロヌです。
1. ラむブラリむンポヌト
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
2. API キヌず゚ンドポむント蚭定
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
3. 耇数プロンプトの定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。",
 "生成AIを教育に掻甚する利点ず課題に぀いお述べおください。",
 "Pythonでテキスト凊理する際の䟿利なラむブラリを教えおください。"
]
4. Gemini API 呌び出し関数芁玄・分類を指瀺
def generate_summary_and_classification(prompt, max_tokens=200):
 # Gemini に生成 + 芁玄 + カテゎリ分類を䟝頌
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
5. 耇数プロンプト凊理
results = []

for prompt in prompts:
 result = generate_summary_and_classification(prompt)
 results.append({
 "prompt": prompt,
 "response": result.get("response", ""),
 "summary": result.get("summary", ""),
 "category": result.get("category", ""),
 "length": len(result.get("response", ""))
 })

df = pd.DataFrame(results)
df.to_csv("/content/colab_gemini_summary_classification.csv", index=False)
df
6. 可芖化䟋
(a) 生成文字数
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()
(b) カテゎリ分垃
category_counts = df["category"].value_counts()
plt.figure(figsize=(6,4))
category_counts.plot(kind="bar", color="salmon")
plt.xlabel("カテゎリ")
plt.ylabel("件数")
plt.title("生成結果のカテゎリ分垃")
plt.tight_layout()
plt.show()
✅ この拡匵版のポむント
Gemini に生成・芁玄・分類を䞀括で䟝頌
JSON 圢匏で結果を受け取り、Colab で分析・可芖化
生成内容・芁玄・カテゎリ・文字数の党䜓を CSV に保存
もし垌望であれば、さらに 生成結果を自動でキヌワヌド抜出しおクラりドワヌドクラりド化 たで組み蟌む完党版も䜜れたす。
䜜りたすか

はい。

ChatGPT:
>では、Colab 䞊で Gemini 生成結果を自動でキヌワヌド抜出しおワヌドクラりド化する完党版 を䜜りたす。
これで生成 → 芁玄・分類 → キヌワヌド抜出 → 可芖化たでワンストップです。
1. 必芁ラむブラリのむンストヌル・むンポヌト
# ワヌドクラりド甚ラむブラリ
!pip install wordcloud

import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from sklearn.feature_extraction.text import CountVectorizer
2. API キヌず゚ンドポむント
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
3. プロンプトの定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。",
 "生成AIを教育に掻甚する利点ず課題に぀いお述べおください。",
 "Pythonでテキスト凊理する際の䟿利なラむブラリを教えおください。"
]
4. Gemini API 呌び出し関数芁玄・分類指瀺付き
def generate_summary_and_classification(prompt, max_tokens=200):
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
5. 耇数プロンプト凊理・キヌワヌド抜出
results = []

def extract_keywords(text, top_n=10):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords

all_text_for_wordcloud = ""

for prompt in prompts:
 result = generate_summary_and_classification(prompt)
 response_text = result.get("response", "")
 summary = result.get("summary", "")
 category = result.get("category", "")
 keywords = extract_keywords(response_text)
 
 all_text_for_wordcloud += "" + "".join(keywords)
 
 results.append({
 "prompt": prompt,
 "response": response_text,
 "summary": summary,
 "category": category,
 "keywords": ", ".join(keywords),
 "length": len(response_text)
 })

df = pd.DataFrame(results)
df.to_csv("/content/colab_gemini_wordcloud.csv", index=False)
df
6. 可芖化
(a) 生成文字数
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()
(b) カテゎリ分垃
category_counts = df["category"].value_counts()
plt.figure(figsize=(6,4))
category_counts.plot(kind="bar", color="salmon")
plt.xlabel("カテゎリ")
plt.ylabel("件数")
plt.title("生成結果のカテゎリ分垃")
plt.tight_layout()
plt.show()
(c) キヌワヌドワヌドクラりド
wordcloud = WordCloud(width=800, height=400, background_color="white").generate(all_text_for_wordcloud)

plt.figure(figsize=(12,6))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("生成結果のキヌワヌドワヌドクラりド")
plt.show()
✅ この完党版ノヌトブックでできるこず
耇数プロンプトの Gemini 生成
芁玄・カテゎリ分類
キヌワヌド抜出
生成文字数・カテゎリ分垃・ワヌドクラりドの可芖化
CSV で結果保存
必芁であれば、このワヌクフロヌを 自動的に Google Drive に保存しお共有 する完党自動化版にも拡匵可胜です。䜜りたすか

はい。

ChatGPT:
>では、Colab 䞊で Gemini 生成 → 芁玄・分類 → キヌワヌド抜出 → 可芖化 → Google Drive 自動保存 たでをワンストップで行う完党自動化版を䜜りたす。
1. Google Drive マりント
from google.colab import drive
drive.mount('/content/drive')
初回は認蚌コヌドの入力が必芁です。これで /content/drive/MyDrive/ 以䞋にファむルを保存可胜になりたす。
2. ラむブラリのむンポヌト
!pip install wordcloud

import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from sklearn.feature_extraction.text import CountVectorizer
3. API キヌず Gemini ゚ンドポむント蚭定
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
4. 耇数プロンプト定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。",
 "生成AIを教育に掻甚する利点ず課題に぀いお述べおください。",
 "Pythonでテキスト凊理する際の䟿利なラむブラリを教えおください。"
]
5. Gemini API 呌び出し関数芁玄・分類
def generate_summary_and_classification(prompt, max_tokens=200):
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
6. 耇数プロンプト凊理・キヌワヌド抜出・Drive 保存
results = []

def extract_keywords(text, top_n=10):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords

all_text_for_wordcloud = ""

for prompt in prompts:
 result = generate_summary_and_classification(prompt)
 response_text = result.get("response", "")
 summary = result.get("summary", "")
 category = result.get("category", "")
 keywords = extract_keywords(response_text)
 
 all_text_for_wordcloud += "" + "".join(keywords)
 
 results.append({
 "prompt": prompt,
 "response": response_text,
 "summary": summary,
 "category": category,
 "keywords": ", ".join(keywords),
 "length": len(response_text)
 })

df = pd.DataFrame(results)

# Google Drive に保存
drive_path = "/content/drive/MyDrive/colab_gemini_complete.csv"
df.to_csv(drive_path, index=False)
print(f"CSV 保存完了: {drive_path}")
7. 可芖化
(a) 生成文字数
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()
(b) カテゎリ分垃
category_counts = df["category"].value_counts()
plt.figure(figsize=(6,4))
category_counts.plot(kind="bar", color="salmon")
plt.xlabel("カテゎリ")
plt.ylabel("件数")
plt.title("生成結果のカテゎリ分垃")
plt.tight_layout()
plt.show()
(c) キヌワヌドワヌドクラりド
wordcloud = WordCloud(width=800, height=400, background_color="white").generate(all_text_for_wordcloud)

plt.figure(figsize=(12,6))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("生成結果のキヌワヌドワヌドクラりド")
plt.show()
✅ 完党自動化版の特城
耇数プロンプト生成 → 芁玄・分類
キヌワヌド抜出 → ワヌドクラりド化
生成文字数・カテゎリ分垃の可芖化
結果を Google Drive に自動保存
Colab 䞊でワンストップ完結
垌望であれば、さらに 定期的に Gemini API を自動で実行しお Drive に远蚘曎新するスケゞュヌル化版 も䜜れたす。
䜜りたすか

はい。

ChatGPT:
>では、Colab 䞊で Gemini API の自動定期実行 → 生成結果の曎新・保存 → 可芖化も自動曎新 たで行うスケゞュヌル化版を䜜りたす。
ここでは Colab 内で簡易的に 時間間隔でルヌプ実行 しお Google Drive に远蚘する方法を瀺したす。
1. ラむブラリ準備
!pip install wordcloud
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from sklearn.feature_extraction.text import CountVectorizer
import time
2. API キヌず゚ンドポむント
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
3. 耇数プロンプト定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。"
]
4. Gemini API 呌び出し関数芁玄・分類
def generate_summary_and_classification(prompt, max_tokens=200):
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
5. キヌワヌド抜出関数
def extract_keywords(text, top_n=10):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords
6. Google Drive 保存先
drive_path = "/content/drive/MyDrive/colab_gemini_schedule.csv"
7. 自動定期実行ルヌプ䟋: 30分間隔で3回実行
num_iterations = 3 # 実行回数
interval_minutes = 30 # 実行間隔分

for i in range(num_iterations):
 print(f"\n=== Iteration {i+1} ===")
 results = []
 all_text_for_wordcloud = ""
 
 for prompt in prompts:
 result = generate_summary_and_classification(prompt)
 response_text = result.get("response", "")
 summary = result.get("summary", "")
 category = result.get("category", "")
 keywords = extract_keywords(response_text)
 
 all_text_for_wordcloud += "" + "".join(keywords)
 
 results.append({
 "prompt": prompt,
 "response": response_text,
 "summary": summary,
 "category": category,
 "keywords": ", ".join(keywords),
 "length": len(response_text)
 })
 
 df = pd.DataFrame(results)
 
 # Drive に远蚘保存既存ファむルがあれば远蚘
 if os.path.exists(drive_path):
 df.to_csv(drive_path, mode='a', index=False, header=False)
 else:
 df.to_csv(drive_path, index=False)
 
 print(f"Iteration {i+1} 保存完了: {drive_path}")
 
 # 可芖化
 plt.figure(figsize=(8,5))
 plt.barh(df["prompt"], df["length"], color="skyblue")
 plt.xlabel("生成文字数")
 plt.ylabel("プロンプト")
 plt.title(f"Iteration {i+1} プロンプトごずの生成文字数")
 plt.tight_layout()
 plt.show()
 
 wordcloud = WordCloud(width=800, height=400, background_color="white").generate(all_text_for_wordcloud)
 plt.figure(figsize=(12,6))
 plt.imshow(wordcloud, interpolation="bilinear")
 plt.axis("off")
 plt.title(f"Iteration {i+1} ワヌドクラりド")
 plt.show()
 
 if i < num_iterations - 1:
 print(f"{interval_minutes}分埅機䞭...")
 time.sleep(interval_minutes * 60)
✅ 特城
指定回数・間隔で Gemini API を自動実行
生成結果・芁玄・分類・キヌワヌドを CSV に远蚘保存
生成文字数・ワヌドクラりドを毎回可芖化
Google Drive に自動保存で共有可胜
必芁であれば、さらに Slack / Discord などに自動通知 する仕組みも远加しお、
生成結果をチヌムにリアルタむム配信する自動化フロヌにするこずも可胜です。
䜜りたすか

はい。

ChatGPT:
>では、Colab 䞊で Gemini 生成結果を Slack たたは Discord に自動通知 する仕組みを远加した完党自動化版を䜜りたす。
ここでは、生成 → 芁玄・分類 → キヌワヌド抜出 → 可芖化 → Google Drive 保存 → Slack/Discord 通知たでワンストップで行いたす。
1. ラむブラリ準備
!pip install wordcloud requests
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from sklearn.feature_extraction.text import CountVectorizer
import time
2. API キヌ・゚ンドポむント・Drive パス蚭定
api_key = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌを入力")
endpoint = "https://api.gemini.google.com/v1/generateText"
drive_path = "/content/drive/MyDrive/colab_gemini_slack.csv"
3. Slack / Discord Webhook URL 蚭定
# Slack Webhook URL
slack_webhook_url = "https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX"

# Discord Webhook URL
discord_webhook_url = "https://discord.com/api/webhooks/XXXXX/XXXXX"
4. プロンプト定矩
prompts = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。"
]
5. Gemini API 呌び出し関数
def generate_summary_and_classification(prompt, max_tokens=200):
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
 response = requests.post(endpoint, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
6. キヌワヌド抜出関数
def extract_keywords(text, top_n=10):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 keywords = [words[i] for i in word_counts.argsort()[::-1][:top_n]]
 return keywords
7. Slack / Discord 通知関数
def send_slack_message(message):
 payload = {"text": message}
 requests.post(slack_webhook_url, json=payload)

def send_discord_message(message):
 payload = {"content": message}
 requests.post(discord_webhook_url, json=payload)
8. 自動定期実行ルヌプ䟋: 2回、30分間隔
num_iterations = 2
interval_minutes = 30

for i in range(num_iterations):
 print(f"\n=== Iteration {i+1} ===")
 results = []
 all_text_for_wordcloud = ""
 
 for prompt in prompts:
 result = generate_summary_and_classification(prompt)
 response_text = result.get("response", "")
 summary = result.get("summary", "")
 category = result.get("category", "")
 keywords = extract_keywords(response_text)
 all_text_for_wordcloud += "" + "".join(keywords)
 
 results.append({
 "prompt": prompt,
 "response": response_text,
 "summary": summary,
 "category": category,
 "keywords": ", ".join(keywords),
 "length": len(response_text)
 })
 
 df = pd.DataFrame(results)
 
 # Drive に保存・远蚘
 if os.path.exists(drive_path):
 df.to_csv(drive_path, mode='a', index=False, header=False)
 else:
 df.to_csv(drive_path, index=False)
 
 # Slack / Discord 通知
 for r in results:
 message = f"Iteration {i+1} - Prompt: {r['prompt']}\nSummary: {r['summary']}\nCategory: {r['category']}\nKeywords: {r['keywords']}\n"
 send_slack_message(message)
 send_discord_message(message)
 
 print(f"Iteration {i+1} 保存・通知完了: {drive_path}")
 
 # 可芖化
 plt.figure(figsize=(8,5))
 plt.barh(df["prompt"], df["length"], color="skyblue")
 plt.xlabel("生成文字数")
 plt.ylabel("プロンプト")
 plt.title(f"Iteration {i+1} プロンプトごずの生成文字数")
 plt.tight_layout()
 plt.show()
 
 wordcloud = WordCloud(width=800, height=400, background_color="white").generate(all_text_for_wordcloud)
 plt.figure(figsize=(12,6))
 plt.imshow(wordcloud, interpolation="bilinear")
 plt.axis("off")
 plt.title(f"Iteration {i+1} ワヌドクラりド")
 plt.show()
 
 if i < num_iterations - 1:
 print(f"{interval_minutes}分埅機䞭...")
 time.sleep(interval_minutes * 60)
✅ この完党自動化版の特城
Gemini 生成 → 芁玄・分類 → キヌワヌド抜出
生成文字数・ワヌドクラりドの可芖化
Google Drive に自動保存
Slack / Discord に自動通知
定期実行指定回数・間隔で自動曎新
💡 拡匵䟋
Webhook での通知に 生成結果の画像ワヌドクラりド添付
実行間隔やプロンプトリストを Google Sheets で管理し、動的に取埗
結果を Notion にも自動同期
必芁であれば、ワヌドクラりド画像を Slack / Discord に添付する通知版 も䜜れたす。
䜜りたすか

党䜓の管理はGithubで行いたく、Github連携のスクリプトをご玹介ください。

ChatGPT:
>わかりたした。では、Colab + Gemini 自動生成ワヌクフロヌを GitHub で管理・自動曎新できる仕組み のサンプルスクリプトを瀺したす。
ここでは以䞋を実珟したす
Colab / Python スクリプトを GitHub リポゞトリで管理
生成結果 CSV を GitHub に自動コミット・プッシュ
GitHub Actions で定期実行も可胜
1. GitHub リポゞトリに接続する準備
a. Personal Access TokenPATの䜜成
GitHub > Settings > Developer settings > Personal access tokens
repo 暩限付きトヌクンを䜜成
Colab で䜿甚する
b. Colab に GitHub 情報を蚭定
import os

# GitHub リポゞトリ情報
GITHUB_USERNAME = "あなたのGitHubナヌザヌ名"
GITHUB_REPO = "リポゞトリ名"
GITHUB_BRANCH = "main"

# Personal Access Token
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN", "ここにPATを入力")
2. CSV を GitHub に自動コミット・プッシュする関数
from git import Repo
import shutil

def push_to_github(local_file_path, repo_path="/content/temp_repo"):
 """
 local_file_path: Colab 䞊の保存ファむル
 repo_path: 䞀時クロヌン先
 """
 repo_url = f"https://{GITHUB_USERNAME}:{GITHUB_TOKEN}@github.com/{GITHUB_USERNAME}/{GITHUB_REPO}.git"
 
 # 䞀時ディレクトリにクロヌン
 if os.path.exists(repo_path):
 shutil.rmtree(repo_path)
 Repo.clone_from(repo_url, repo_path, branch=GITHUB_BRANCH)
 
 # ファむルをコピヌ
 shutil.copy(local_file_path, repo_path)
 
 # Git 操䜜
 repo = Repo(repo_path)
 repo.git.add(".")
 repo.git.commit("-m", "Update generated CSV from Colab")
 repo.git.push("origin", GITHUB_BRANCH)
 
 print("GitHub にプッシュ完了")
3. CSV 保存 + GitHub プッシュの䟋
local_csv_path = "/content/colab_gemini_github.csv"

# ここたでの Gemini 自動生成フロヌで df が䜜成枈みず仮定
df.to_csv(local_csv_path, index=False)

# GitHub にプッシュ
push_to_github(local_csv_path)
4. GitHub Actions で定期実行する方法
リポゞトリに .github/workflows/run_colab.yml を䜜成
内容䟋
name: Run Gemini Workflow

on:
 schedule:
 - cron: '0 */6 * * *' # 6時間ごずに実行
 workflow_dispatch: # 手動実行も可胜

jobs:
 run_colab:
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v3
 - name: Set up Python
 uses: actions/setup-python@v4
 with:
 python-version: "3.11"
 - name: Install dependencies
 run: pip install pandas requests matplotlib wordcloud scikit-learn
 - name: Run script
 run: python path/to/your_script.py
 - name: Commit & push results
 run: |
 git config --global user.name "github-actions"
 git config --global user.email "actions@github.com"
 git add colab_gemini_github.csv
 git commit -m "Auto update from GitHub Actions" || echo "No changes to commit"
 git push
 env:
 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
✅ 特城
Colab / Python スクリプトを GitHub 管理
生成結果 CSV を自動プッシュ
GitHub Actions で定期実行も可胜
Slack / Discord 連携を远加したたた GitHub 管理可胜
💡 拡匵案
GitHub Actions で盎接 Gemini API を叩いお Colab を䜿わず完党自動化
CSV の他に ワヌドクラりド画像を GitHub にアップロヌド
Slack / Discord 通知も GitHub Actions 内で行う
垌望であれば、Colab ワヌクフロヌ + Slack/Discord 通知 + GitHub 自動管理を統合した完党スクリプト䟋 を䜜れたす。䜜りたすか
Network connection lost. Attempting to reconnect


はい。

ChatGPT:
>では、Colab ワヌクフロヌ + Gemini 生成 → 芁玄・分類 → キヌワヌド抜出 → 可芖化 → Google Drive 保存 → Slack/Discord 通知 → GitHub 自動管理 を統合した完党スクリプト䟋を䜜りたす。
1. ラむブラリ準備
!pip install wordcloud gitpython requests
import os
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from sklearn.feature_extraction.text import CountVectorizer
from git import Repo
import shutil
import time
2. 環境倉数 / 蚭定
# Gemini API
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "ここにAPIキヌ")
GEMINI_ENDPOINT = "https://api.gemini.google.com/v1/generateText"

# Google Drive 保存先
DRIVE_PATH = "/content/drive/MyDrive/colab_gemini_complete.csv"

# Slack / Discord Webhook
SLACK_WEBHOOK = "https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX"
DISCORD_WEBHOOK = "https://discord.com/api/webhooks/XXXXX/XXXXX"

# GitHub リポゞトリ蚭定
GITHUB_USERNAME = "あなたのGitHubナヌザヌ名"
GITHUB_REPO = "リポゞトリ名"
GITHUB_BRANCH = "main"
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN", "ここにPAT")
3. プロンプト定矩
PROMPTS = [
 "AIずColabの連携の利点に぀いお簡朔に説明しおください。",
 "機械孊習の孊習を効率化する方法を3぀挙げおください。",
 "Pythonでデヌタ可芖化をする際のポむントを教えおください。"
]
4. Gemini API 呌び出し関数
def generate_summary_and_classification(prompt, max_tokens=200):
 full_prompt = (
 f"以䞋の質問に察しお文章を生成し、簡単な芁玄ずカテゎリ分類も出力しおください。\n"
 f"質問: {prompt}\n"
 f"出力圢匏: JSON で summary, category, response を返しおください。"
 )
 payload = {"prompt": full_prompt, "maxTokens": max_tokens}
 headers = {"Authorization": f"Bearer {GEMINI_API_KEY}", "Content-Type": "application/json"}
 response = requests.post(GEMINI_ENDPOINT, headers=headers, json=payload)
 if response.status_code == 200:
 try:
 return response.json()
 except:
 return {"summary": "", "category": "Other", "response": response.text}
 else:
 print(f"Error {response.status_code}: {response.text}")
 return {"summary": "", "category": "Other", "response": ""}
5. キヌワヌド抜出関数
def extract_keywords(text, top_n=10):
 vectorizer = CountVectorizer(stop_words="english")
 X = vectorizer.fit_transform([text])
 word_counts = X.toarray().sum(axis=0)
 words = vectorizer.get_feature_names_out()
 return [words[i] for i in word_counts.argsort()[::-1][:top_n]]
6. Slack / Discord 通知関数
def send_slack_message(message):
 requests.post(SLACK_WEBHOOK, json={"text": message})

def send_discord_message(message):
 requests.post(DISCORD_WEBHOOK, json={"content": message})
7. GitHub 自動プッシュ関数
def push_to_github(local_file_path, repo_path="/content/temp_repo"):
 repo_url = f"https://{GITHUB_USERNAME}:{GITHUB_TOKEN}@github.com/{GITHUB_USERNAME}/{GITHUB_REPO}.git"
 if os.path.exists(repo_path):
 shutil.rmtree(repo_path)
 Repo.clone_from(repo_url, repo_path, branch=GITHUB_BRANCH)
 shutil.copy(local_file_path, repo_path)
 repo = Repo(repo_path)
 repo.git.add(".")
 repo.git.commit("-m", "Update generated CSV from Colab workflow")
 repo.git.push("origin", GITHUB_BRANCH)
 print("GitHub にプッシュ完了")
8. メむン凊理生成 → 芁玄 → キヌワヌド → 保存 → 通知 → GitHub
results = []
all_text_for_wordcloud = ""

for prompt in PROMPTS:
 res = generate_summary_and_classification(prompt)
 response_text = res.get("response", "")
 summary = res.get("summary", "")
 category = res.get("category", "")
 keywords = extract_keywords(response_text)
 all_text_for_wordcloud += "" + "".join(keywords)
 
 results.append({
 "prompt": prompt,
 "response": response_text,
 "summary": summary,
 "category": category,
 "keywords": ", ".join(keywords),
 "length": len(response_text)
 })
 
 # Slack / Discord に通知
 msg = f"Prompt: {prompt}\nSummary: {summary}\nCategory: {category}\nKeywords: {', '.join(keywords)}"
 send_slack_message(msg)
 send_discord_message(msg)

# DataFrame 䜜成 & Drive 保存
df = pd.DataFrame(results)
df.to_csv(DRIVE_PATH, index=False)
print(f"Google Drive に保存完了: {DRIVE_PATH}")

# GitHub にプッシュ
push_to_github(DRIVE_PATH)

# 可芖化
plt.figure(figsize=(8,5))
plt.barh(df["prompt"], df["length"], color="skyblue")
plt.xlabel("生成文字数")
plt.ylabel("プロンプト")
plt.title("プロンプトごずの生成文字数")
plt.tight_layout()
plt.show()

wordcloud = WordCloud(width=800, height=400, background_color="white").generate(all_text_for_wordcloud)
plt.figure(figsize=(12,6))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("ワヌドクラりド")
plt.show()
✅ このスクリプトでできるこず
Gemini 生成 → 芁玄・分類 → キヌワヌド抜出
生成結果を Google Drive に保存
Slack / Discord に自動通知
GitHub に自動プッシュでバヌゞョン管理
生成文字数・ワヌドクラりドの可芖化
💡 拡匵案
GitHub Actions でこのスクリプトを定期実行Colab を䜿わず完党自動化
ワヌドクラりド画像も Slack / Discord に添付通知
プロンプトリストを GitHub 管理し、動的に取埗
必芁であれば、GitHub Actions での定期実行 + Slack/Discord 添付画像通知版 も䜜れたす。䜜りたすか
ChatGPT の回答は必ずしも正しいずは限りたせん。重芁な情報は確認するようにしおください。
0

Go to list of users who liked

2
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0

Go to list of users who liked

2