Skip to main content

Overview

Tools can receive agent context (session ID, agent ID, etc.) without exposing these parameters in the public schema.

Quick Start

from praisonaiagents import Agent, tool
from praisonaiagents.tools import Injected

@tool
def show_context(query: str, state: Injected[dict]) -> str:
    """Tool with injected state."""
    session = state.get('session_id')
    return f"Query: {query}, Session: {session}"

agent = Agent(
    name="Bot",
    instructions="Helper",
    tools=[show_context],
    session_id="my-session"
)

# 'state' is NOT in the tool schema - only 'query' is visible
result = agent.execute_tool("show_context", {"query": "test"})

Injected Types

from praisonaiagents.tools import Injected
from praisonaiagents.tools.injected import AgentState

# Dict injection
state: Injected[dict]

# AgentState injection
state: Injected[AgentState]

AgentState Fields

FieldDescription
agent_idCurrent agent name
run_idCurrent run ID
session_idSession identifier
last_user_messageLast user message
metadataAdditional metadata

Manual Context

from praisonaiagents.tools.injected import AgentState, with_injection_context

state = AgentState(agent_id="a", run_id="r", session_id="s")

with with_injection_context(state):
    result = my_tool(query="test")