Customer Support Chat Session with .session()

Tip

What you’ll learn How to manage interactive sessions with agents.

Source: 13_interactive_session.py

from adk_fluent import Agent

# The fluent API wraps everything in an async context manager:
# async with (
#     Agent("support_bot")
#     .model("gemini-2.5-flash")
#     .instruct("You are a customer support agent for an online store. "
#               "Help customers with orders, returns, and product questions.")
#     .session()
# ) as chat:
#     response1 = await chat.send("I need to return an item I bought last week.")
#     response2 = await chat.send("The order number is ORD-98234.")
#     response3 = await chat.send("Thanks for the help!")

# Builder verification (no LLM call needed):
builder = (
    Agent("support_bot")
    .model("gemini-2.5-flash")
    .instruct(
        "You are a customer support agent for an online store. "
        "Help customers with orders, returns, and product questions."
    )
)
# Native ADK requires manual session lifecycle management:
#   from google.adk.agents.llm_agent import LlmAgent
#   from google.adk.runners import InMemoryRunner
#
#   agent = LlmAgent(
#       name="support_bot",
#       model="gemini-2.5-flash",
#       instruction="You are a customer support agent for an online store.",
#   )
#   runner = InMemoryRunner(agent=agent, app_name="support_app")
#   session = await runner.session_service.create_session(
#       app_name="support_app", user_id="customer_42"
#   )
#   # Then manually call runner.run_async() for each message
#   # No context manager -- you must track session/runner yourself

Equivalence

assert hasattr(builder, "session")
assert callable(builder.session)
assert builder._config["name"] == "support_bot"
assert builder._config["model"] == "gemini-2.5-flash"
assert "customer support" in builder._config["instruction"]

See also

API reference: InMemorySessionService