ð°ïžéçºè åãææ°Google AIãšãŒãžã§ã³ãã³ãŒã¹ã培åºè§£èª¬: ã³ã³ãã¯ã¹ãã»ãšã³ãžãã¢ãªã³ã°ã«å¿ èŠãªã»ãã·ã§ã³ãšã¡ã¢ãªãŒðŸ
AIãšãŒãžã§ã³ãã«é¢ããã¢ããããŒããããæ°ããæè¡ãç¥èãåŠã¹ã°åŠã¶ã»ã©ããŒãããæ°ããã³ã³ã»ãããç¿ã£ãŠãããããªæèŠã«é¥ããŸãã
ããŒã«ã®äœ¿ãæ¹ããã©ã³ãã³ã°ããžãã¯ã«æ £ããŠããæšä»ãDay 3ã§ã¯æ¹æ°ãããå±€ãŒãŒãã¡ã¢ãªãŒããç»å ŽããŸãã人éãšåãããã«ããšãŒãžã§ã³ãã«ããçæçãªæèããšãé·æçãªèšæ¶ããå¿ èŠã«ãªã£ãŠããŸãã
ä»åã®ããŒãã¯ãã³ã³ãã¯ã¹ãã»ãšã³ãžãã¢ãªã³ã°ãã§ãã
ããã¯ããšãŒãžã§ã³ãããä»ãäœãç¥ã£ãŠããã¹ããããåçã«æŽçã»ç®¡çããèšèšææ³ã®ããšã§ããšãŒãžã§ã³ããã¹ã ãŒãºã«åãããã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã«æ¬ ãããªãéšåã§ãã
éåžžã®ç°¡åãªãã£ãããããã¯ãã¡ãã»ãŒãžãéããã³ã«å šãŠãå¿ããŠããŸããŸãããã³ã³ãã¯ã¹ãã»ãšã³ãžãã¢ãªã³ã°ã§ã¯ãäœãèŠãããäœãå¿ããããã€æãåºããããèšèšããçæçã»é·æçãªããŒã¿ã®ä¿åæ©èœã§ã¯ãªããæéããŸããã§æèãã€ãªãä»çµã¿ãã®ãã®ãšããŠæ©èœããŸãã
Session ã¯ãä»ãã®ç¬éã®äŒè©±ããæ±ãââã€ãŸãçæçèšæ¶ã
Memory ã¯ãéå»ã«åŠãã ããšããŠãŒã¶ãŒæ å ±ããæ±ãââã€ãŸãé·æçèšæ¶ã
ãã®2ã€ãçµã¿åãããããšã§ããšãŒãžã§ã³ãã¯åãªãäžåäžçã®ååšãè¶ ããæéãè¶ããŠãæèãçè§£ããååšãã«é²åããŸãã
ðçæçèšæ¶ãšããŠæ©èœããã»ãã·ã§ã³
SessionïŒã»ãã·ã§ã³ïŒã¯ããšãŒãžã§ã³ãã®äœæ¥çšã¡ã¢ãªã«ããããŸããçŸåšé²è¡äžã®äŒè©±ãä¿åããè€æ°ã¿ãŒã³ã«ãããããåãã®æŽåæ§ãä¿ã€äºãç®çãšããŠããŸãã
ã¢ãã«èªäœã¯æ¬æ¥ãã¹ããŒãã¬ã¹ïŒç¡ç¶æ ïŒãã§ãããSessionã䜿ãããšã§ãéå»ã®ããåããæ¯åã³ã³ããã¹ããŠã£ã³ããŠã«åæ§ç¯ããæ¬äŒŒçã«èšæ¶ãæã€ããã«ã§ããŸãã
ããã§ã¯ãGoogleã®ADKïŒãšãŒãžã§ã³ãã»ããŽã§ãããã¡ã³ãã»ãããïŒã®ã»ãã·ã§ã³ç®¡çæ©èœã䜿ã£ãŠãæãã·ã³ãã«ãªãç¶æ ãæã€ãšãŒãžã§ã³ãïŒã¹ããŒããã«ã»ãšãŒãžã§ã³ãïŒããå®è£ ããŠã¿ãŸãã
ããã«è©³ããå 容ã¯Kaggleã®ããŒãããã¯ãåç §ããŠã¿ãŠãã ããã
ðã¹ããŒããã«ã»ãšãŒãžã§ã³ãã®ç°¡åå®è£
ADKã«ã¯å¹Ÿã€ãã®ã»ãã·ã§ã³ç®¡çæ¹æ³ãçšæãããŠããŸãããããã§ã¯InMemorySessionServiceã䜿ã£ãŠã¡ã¢ãªãŒäžã«äŒè©±å±¥æŽãäžæä¿åãããã³ãŒãã玹ä»ããŸãã
# Step 0: 宿°ãå®çŸ©
APP_NAME = "default" # ã¢ããªã±ãŒã·ã§ã³å
USER_ID = "default" # ãŠãŒã¶ãŒID
SESSION = "default" # ã»ãã·ã§ã³ID
MODEL_NAME = "gemini-2.5-flash-lite" # 䜿çšããã¢ãã«å
# Step 1: LLMãšãŒãžã§ã³ããäœæ
# ãã®ãšãŒãžã§ã³ããäŒè©±ã®äžå¿ãšãªã
root_agent = Agent(
model=Gemini(model=MODEL_NAME, retry_options=retry_config),
name="text_chat_bot",
description="ããã¹ããã£ããçšã®ãšãŒãžã§ã³ã", # ãšãŒãžã§ã³ãã®ç®çã説æ
)
# Step 2: ã»ãã·ã§ã³ç®¡çãã»ããã¢ãã
# InMemorySessionServiceã¯ãäŒè©±å±¥æŽãRAMã«äžæä¿åãã
session_service = InMemorySessionService()
# Step 3: Runnerãäœæ
# Runnerã¯ãšãŒãžã§ã³ãã»ã¢ããªåã»ã»ãã·ã§ã³ç®¡çãã€ãªãå®è¡ç°å¢
runner = Runner(
agent=root_agent,
app_name=APP_NAME,
session_service=session_service
)
print("â
ã¹ããŒããã«ã»ãšãŒãžã§ã³ãã®åæåå®äº")
print(f" - ã¢ããªã±ãŒã·ã§ã³å: {APP_NAME}")
print(f" - ãŠãŒã¶ãŒID: {USER_ID}")
print(f" - 䜿çšããŠããã»ãã·ã§ã³ç®¡ç: {session_service.__class__.__name__}")
ãã®ç¶æ ã§ãšãŒãžã§ã³ããèµ·åãããšãInMemorySessionService ããŠãŒã¶ãŒããã®è³ªåãšãšãŒãžã§ã³ãã®è¿çããã¹ãŠã¡ã¢ãªäžã«èšé²ããŠãããŸããããã«ããããšãŒãžã§ã³ãã¯ïŒ
åãäŒè©±å ã§ãåã«èšã£ãããšããèŠãã
æèãèžãŸããèªç¶ãªè¿çãè¡ãã
äŒè©±ã®æµããç¶ç¶çã«æ§ç¯ã§ããŸãã
ãã ãããInMemoryããªã®ã§ãã¢ããªãåèµ·åãããšèšé²ã¯æ¶ããŸããããã§ããã®ä»çµã¿ã¯ãçæçãªã³ã³ããã¹ã管çãçè§£ããæåã®ã¹ããããšããŠæé©ã§ãã
次ã®ã¹ããŒãžã§ã¯ãããã«ãé·æçãªèšæ¶ïŒMemoryïŒããå ãããšãŒãžã§ã³ããã»ãã·ã§ã³ãè¶ ããŠåŠã³ãåŒãç¶ããããã«ããŠãããŸãã
ðŸã¡ã¢ãªãŒïŒé·æçèšæ¶ã®ä»çµã¿
ã»ãã·ã§ã³ããä»äº€ããããŠããäŒè©±ããæ±ãçæçèšæ¶ã ãšããã°ãã¡ã¢ãªãŒã¯ã»ãã·ã§ã³ãè¶ ããŠæ å ±ãä¿æããé·æçèšæ¶ã§ãããã®æ©èœã䜿ãããšã§ããšãŒãžã§ã³ãã¯éå»ã®äŒè©±ããŠãŒã¶ãŒæ å ±ãæãåºããããããŒãœãã©ã€ãºããã察話ãå¯èœã«ãªããŸããGoogle ADKã§ã¯ãã¡ã¢ãªãŒã®çµ±åã¯ä»¥äžã®ïŒã¹ãããã«ãã£ãŠè¡ããŸãã
ð§© ã¹ããã1: Memory ãåæåãã
ãŸãã¯ã¡ã¢ãªãŒãµãŒãã¹ãäœæãããšãŒãžã§ã³ããšRunnerã«æ¥ç¶ããŸãã
from adk.memory import InMemoryMemoryService
# MemoryãµãŒãã¹ãåæåïŒéçºã»ãã¹ãçšïŒ
memory_service = InMemoryMemoryService()
# 宿°
APP_NAME = "MemoryDemoApp" # ã¢ããªã±ãŒã·ã§ã³å
USER_ID = "demo_user" # ãŠãŒã¶ãŒID
# ãšãŒãžã§ã³ãäœæ
user_agent = LlmAgent(
model=Gemini(model="gemini-2.5-flash-lite", retry_options=retry_config),
name="MemoryDemoAgent",
instruction="ãŠãŒã¶ãŒã®è³ªåã«ããããããçãã", # ãšãŒãžã§ã³ãã®æç€º
)
print("â
ãšãŒãžã§ã³ãäœæå®äº")
# SessionãµãŒãã¹ãäœæïŒäŒè©±å±¥æŽãæ±ãïŒ
session_service = InMemorySessionService()
# Runnerã«äž¡æ¹ã®ãµãŒãã¹ãæž¡ããŠã»ããã¢ãã
runner = Runner(
agent=user_agent,
app_name=APP_NAME,
session_service=session_service,
memory_service=memory_service, # MemoryãµããŒãã远å
)
print("â
ãšãŒãžã§ã³ããšã©ã³ããŒã®ã»ããã¢ããå®äº")
âœã¹ãããïŒ: ã»ãã·ã§ã³å 容ãã¡ã¢ãªãŒã«è¿œå ãã
ãŠãŒã¶ãŒãšã®äŒè©±å 容ïŒã»ãã·ã§ã³ïŒãã¡ã¢ãªãŒã«ç§»ãããšã§ããšãŒãžã§ã³ãã¯éå»ã®äŒè©±æ å ±ãä¿æããããšãã§ããŸãã
# ãŠãŒã¶ãŒã奜ããªè²ãæãã
await run_session(
runner,
"ç§ã®å¥œããªè²ã¯éç·ã§ãããã®è²ã顿ã«ä¿³å¥ãæžããŠãããŸããïŒ",
"conversation-01", # ã»ãã·ã§ã³ID
)
# ã»ãã·ã§ã³ãååŸ
session = await session_service.get_session(
app_name=APP_NAME, user_id=USER_ID, session_id="conversation-01"
)
# ã»ãã·ã§ã³ã®å
容ã確èª
print("ð ã»ãã·ã§ã³ã®å
容:")
for event in session.events:
text = (
event.content.parts[0].text[:60]
if event.content and event.content.parts
else "(空)"
)
print(f" {event.content.role}: {text}...")
# ãããéèŠïŒã»ãã·ã§ã³ãMemoryã«è¿œå
await memory_service.add_session_to_memory(session)
print("â
ã»ãã·ã§ã³ãã¡ã¢ãªãŒã«è¿œå å®äº")
è£è¶³:
ã³ãŒãäŸã«ã¯ await ãç»å ŽããŸãããããã¯ãšãŒãžã§ã³ãã®åŠçãéåæïŒasyncïŒã§åãããã§ãã
å®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãasync def ã®é¢æ°ã®äžã§åŒã³åºãããasyncio.run() ã§åæç°å¢ããå®è¡ã§ããŸãã
ðïžã¡ã¢ãªãŒã䜿ã£ãæ å ±ã®æ€çŽ¢ïŒæŽ»çšæ¹æ³
ä¿åããã¡ã¢ãªãŒããšãŒãžã§ã³ããå¿ èŠã«å¿ããŠæ€çŽ¢ã§ããããã«èšå®ããŸãã
# ãšãŒãžã§ã³ãäœæïŒMemoryæ€çŽ¢ããŒã«ã远å ïŒ
user_agent = LlmAgent(
model=Gemini(model="gemini-2.5-flash-lite", retry_options=retry_config),
name="MemoryDemoAgent",
instruction="ãŠãŒã¶ãŒã®è³ªåã«ããããããçããå¿
èŠã«å¿ããŠéå»ã®äŒè©±ãåŒã³åºãããŒã«ã䜿ã",
tools=[load_memory], # Google ADKçµã¿èŸŒã¿ã®Memoryæ€çŽ¢ããŒã«ã远å
)
print("â
load_memoryããŒã«ä»ããšãŒãžã§ã³ãäœæå®äº")
# æ°ããRunnerã§åã»ããã¢ãã
runner = Runner(
agent=user_agent,
app_name=APP_NAME,
session_service=session_service,
memory_service=memory_service,
)
# éå»ã®äŒè©±ãåŒã³åºããŠè³ªåã«çãããã
await run_session(runner, "ç§ã®å¥œããªè²ãèŠããŠããŸããïŒ", "color-test")
ãã€ã³ã:
Google ADK æèŒã®load_memory ããŒã«ã䜿ãããšã§ããšãŒãžã§ã³ãã¯å¿ èŠãªæ å ±ãéå»ã® Memory ããæ€çŽ¢ããŠåçã«æŽ»ãããŸã
ð§ ãŸãšã
åæåïŒã¡ã¢ãªãŒãµãŒãã¹ãäœãããšãŒãžã§ã³ãã«æ¥ç¶ããã
ä¿åïŒäŒè©±å 容ïŒã»ãã·ã§ã³ïŒãã¡ã¢ãªãŒã«ä¿åããã
æ€çŽ¢ïŒåŒã³åºãïŒå¿ èŠãªæ å ±ãã¡ã¢ãªãŒããæ€çŽ¢ããŠäŒè©±ã«æŽ»çšããã
ãã®æµãã§ããšãŒãžã§ã³ãã¯çæçèšæ¶ãšé·æçèšæ¶ãçµã¿åãããŠãæéããŸããã æèçè§£ãå¯èœã«ãªããåãªããã£ãããããããç¶ç¶çã«æèãç©ã¿éããååè ã®ãããªæ¯ãèããå¯èœã«ãªããŸãã
ð Day 3ãŸãšãïŒSession ãš Memory ãçã âã€ãªããâ
Day 3ã§æ±ã£ã SessionïŒçæèšæ¶ïŒãš MemoryïŒé·æèšæ¶ïŒã¯ãã©ã¡ãããã³ã³ããã¹ããã©ãæ±ããããšããããŒãã«ã€ãªãã£ãŠããŸãã
Session ã¯ããŸé²è¡äžã®äŒè©±ãä¿æããããã¿
Memory ã¯äŒè©±ãè¶ããŠæ®ãããæ å ±ãåãåºãããã¿
ãã®2ã€ãæãããšã§ããšãŒãžã§ã³ãã¯åãªã質åå¿çã§ã¯ãªãã
äŒè©±ã®ç©ã¿éããçè§£ãç¶ããâçžæ£âã®ãããªååšã«ãªã£ãŠãããŸãã
次åã®Day 4ã§ã¯ãã®ç¹ãããããã«ç£šããŠãããŸããã©ããŸãšããããåå®å®ãããããã©ãäžè²«æ§ãä¿ã€ã®ãââã€ãŸããšãŒãžã§ã³ãã®å質èšèšãããŒãã«ãªããŸãã
ãããªãšæã£ããå¿æŽãããïŒ
ããã ãããããã¯ã³ãã¥ããã£ãŒèšçœ®ããããžã§ã¯ãå§åã»éå¶ãªã©ã®æŽ»åè²»ã«äœ¿ãããŠããã ããŸãïŒãããŠNoteã«ããã»ã¹ãªã©ãã·ã§ã¢ããŠãããŸãããããããé¡ãããŸãïŒ
