Google Colab上で、「長いテキストを読み込ませると、自動で要約し、さらにその要約のポイントを解説してくれるAIエージェント」を作成する具体的な手順とコードを解説します。
今回は、Pythonの強力なAIエージェントフレームワークである「LangChain(LangGraph)」と、Google Colabで無料で使いやすい「Gemini API(Google Generative AI)」を組み合わせて構築します。
1. 準備:APIキーの取得
このコードを動かすには、GoogleのAI(Gemini)を利用するためのAPIキーが必要です。
Google AI Studio にアクセスし、無料のAPIキーを取得します。
Google Colabを開き、左メニューの「鍵マーク(シークレット)」をクリックして、名前を GOOGLE_API_KEY、値に取得したキーを入力し、「ノートブックへのアクセス」をオンにしてください。
2. 構築コード
Google Colabのセルに以下のコードを貼り付けて実行してください。必要なライブラリのインストールから、エージェントの実行まで一通り行えます。
Python
# 1. 必要なライブラリのインストール
!pip install -qU langchain-google-genai langchain-core
# 2. 環境変数の設定とライブラリのインポート
import os
from google.colab import userdata
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# ColabのシークレットからAPIキーを取得
os.environ["GOOGLE_API_KEY"] = userdata.get('GOOGLE_API_KEY')
# 3. AIモデルの初期化 (高速で賢い Gemini 1.5 Flash を使用)
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0.3)
# 4. エージェントの「思考プロセス(プロンプト)」を定義
prompt = ChatPromptTemplate.from_messages([
("system", """あなたは優秀な「テキスト要約・分析エージェント」です。
与えられたテキストを分析し、以下のフォーマットに厳密に従って出力してください。
■ 1. 一言要約(30文字以内)
ここにテキストの核心を1文で記述。
■ 2. 重要なポイント(箇条書き3点)
・ポイント1
・ポイント2
・ポイント3
■ 3. エージェントの考察
このテキストから読み取れる背景や、次にどのようなアクションを取るべきかの提案。
"""),
("human", "以下のテキストを要約・分析してください:\n\n{text}")
])
# 5. エージェントの「チェーン(仕組み)」を結合
# プロンプト(指示) -> LLM(AI) -> 文字列として出力
summary_agent = prompt | llm | StrOutputParser()
# --- 動かしてみる ---
# 要約させたい長いテキスト(例として、リモートワークに関する架空の社内ニュース)
target_text = """
当社は、来月から新しい働き方として「ハイブリッドワーク制度」を本格導入することを決定しました。
これまでは原則リモートワークとしていましたが、社内アンケートの結果、「チーム内のコミュニケーションが不足している」「新入社員のサポートが難しい」という課題が浮き彫りになりました。
新制度では、週2日の出社を推奨日とし、残りの3日はリモートワークを選択可能とします。出社日には対面でのミーティングやアイデア出しのワークショップを集中して行い、リモート日には個人の業務に集中するというメリハリをつけた働き方を目指します。
なお、地方在住などの理由で出社が困難な社員については、個別申請によりフルリモートワークの継続を認めます。
交通費の支給ルールや出社日の運用ガイドラインについては、来週月曜日に社内ポータルサイトにて公開予定です。
全体の生産性向上と、社員のエンゲージメント向上を同時に達成するための工夫として、全社的な協力を期待しています。
"""
print("🤖 エージェントがテキストを分析中...\n")
# エージェントを実行
response = summary_agent.invoke({"text": target_text})
# 結果を表示
print(response)
3. コードの解説(何が行われているか)
このコードは、ただAIに質問しているのではなく、「LangChain」という仕組みを使って、特定の役割を持ったエージェント(部品)を作っています。
① モデルの選定(ChatGoogleGenerativeAI)
Python
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0.3)
Googleの最新AIである「Gemini 1.5 Flash」を呼び出しています。要約タスクは、事実に基づいた正確性が求められるため、temperature(ランダム性・創造性)を 0.3 と低めに設定し、嘘(ハルシネーション)をつきにくくしています。
② 役割の固定(Systemプロンプト)
Python
("system", "あなたは優秀な「テキスト要約・分析エージェント」です。...")
AIに「要約・分析エージェント」という役割(ペルソナ)を与え、出力フォーマット(一言要約、箇条書き3点、考察)を厳密に指定しています。これにより、毎回同じ綺麗な形で結果が返ってくるようになります。
③ パイプライン化(| 記号の秘密)
Python
summary_agent = prompt | llm | StrOutputParser()
LangChainの最大の特徴です。|(パイプ)を使って、「指示(Prompt)をAI(llm)に渡し、AIの返答をテキスト(Parser)に変換する」という一連の工場ライン(エージェント)を1行で組み立てています。
4. さらにエージェントを発展させるには?
今回は「要約して出力する」というシンプルなエージェントですが、ここからさらに機能を拡張できます。
ファイルを読み込ませる: Colab上にPDFやテキストファイルをアップロードし、open('file.txt').read() でテキストを読み込んで target_text に渡せば、長大なドキュメントの自動要約マシーンになります。
翻訳エージェントを追加する: | を使って「要約エージェント」の後ろに「英語翻訳エージェント」を繋げれば、「日本語の長文を要約し、それを一瞬で英語に翻訳して出力する」という複数エージェントの連携(マルチエージェントの基礎)が可能になります。
0 件のコメント:
コメントを投稿