生成 AI は研究室の外へ飛び出し、今やビジネス現場の常識を塗り替えています。SAPは全速力でその波に乗っており、Joule という AI Agent を公開しました。このブログシリーズでは、AI Agent が裏側でどうなっているかを理解するため、SAP AI Core の既定モデルを最速で呼び出し、実務で使える AI Agent へ拡張する“秒速ハンズオン”をお届けします。
お知らせ
You can find the English version here.
学習時間
各章は 10–15 分 で読める&手を動かせるを予定しています。
注記
続編は順次公開予定です。
この記事が気に入っていただけたら、ぜひ「Kudos」をお願いします!皆さんの応援が本当に励みになります。また、もっと知りたいことがあれば、ぜひコメントを残してください!
AI Agent は、単なるチャットモデルではありません。2022年に Yao らが提唱した ReAct(Reason + Act)パラダイムに従い、LLMが推論過程を生成し、さらに具体的な行動(ツール呼び出し)も実行できるようになりました。例えば、Google 検索やデータベース参照などの行動を実行し、その結果を再び LLM に渡すことで、次の思考が常に最新情報に基づくものになります。この仕組みによって、ハルシネーションを抑え、より精度の高い生成が期待できる AI Agent が実現しました。
LangChain には “ReAct Agent” パターンが標準搭載されています。google_search などのツールを登録するだけで、実行時にモデルが「思考すべきか/行動すべきか」を自律的に判断します。
LangchainでGoogleの検索ツールを使用できるようにするためには、Google API キーとカスタム検索エンジン(CSE)ID が必要です。これは、AI Agent に Web にアクセスするためのバッジを与えるようなものだと考えてください。
公式ドキュメント : LangChain の Google Search Tool 解説ページ
Google Cloud コンソールを開きます。
プロジェクトを選択または新規作成して 「認証情報を作成 → API キー」 をクリックします。ダイアログに新しいキーが表示されます。
Tip: 後で識別しやすいようにキー名を変更しておくと便利です。
Programmable Search Engine の作成画面へ移動します。任意の検索エンジン名を入力し、検索対象を「ウェブ全体」に設定して 「作成」 をクリックします。
すると下記のような HTML スニペットと管理画面が表示されます。
<script async src="https://cse.google.com/cse.js?cx=GOOGLE_CSE_ID">
</script>
<div class="gcse-search"></div>
2 つの値をプロジェクト直下の .env に追記し、ソースコードへベタ書きしないようにしましょう。
GOOGLE_CSE_ID = "your GOOGLE_CSE_ID"
GOOGLE_API_KEY = "your GOOGLE_API_KEY"
Agentが google_search ツールを呼び出す際に Google へ認証できる準備が整いました!
Google の JSON API を LangChain Tool にラップし、エージェントが LLM と同じ感覚で google_search を呼べるようにします。
Part 2 のノートブックを開きます。そして、次のセルを追加します。
# ▶ Notebook Cell 3
from langchain.tools import Tool
from langchain_community.utilities import GoogleSearchAPIWrapper
search = GoogleSearchAPIWrapper(k=5) # return top‑5 results
google_tool = Tool.from_function(
name="google_search",
description="Search Google and return the first results",
func=search.run
)
このステップで何をしているか?
Part 2 で作った チャットモデル と Google ツール を合体させ、必要に応じて外部情報を取りに行く Agent を作成します。
# ▶ Notebook Cell 4
from langchain.agents import initialize_agent, AgentType
agent = initialize_agent(
tools=[google_tool],
llm=chat_llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True,
)
agent.invoke("Who won the Tokyo Marathon in 2025, and what was the finishing time?")
このステップで何をしているか?
google_search 呼び出しログとともに、優勝者とタイムが表示されれば OK です!
LangChain の「ツールの作り方(How to create tools)」を参考にしながら、おみくじを引く Agent を作ってみましょう。
# ▶ Notebook Cell 5
import random
def omikuji(_: str) -> str:
return random.choice([
"XXXXXX"
])
omikuji_tool = Tool.from_function(
name="xxxxxx",
description="......",
# ?????
)
omikuji_agent = initialize_agent(
tools=XXXXXXXX,
llm=chat_llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True,
)
omikuji_agent.invoke("おみくじを引いてください")
agent.invoke("おみくじを引いてください") が、指定した結果のいずれかを返せば合格です!
自分だけのツールをどんどん追加して遊んでみましょう!
Part 4 RAG 基礎 ①: HANA Cloud VectorEngineと埋め込み処理
Part 4 では PDF をアップロードし HANA Cloud Vector Engine にベクトル化。エージェントが自社文書を引用して回答する RAG の第一歩に進みます。
本ブログに記載された見解および意見はすべて私個人のものであり、私の個人的な立場で発信しています。SAP は本ブログの内容について一切の責任を負いません。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
58 | |
20 | |
11 | |
11 | |
10 | |
6 | |
6 | |
6 | |
6 | |
5 |