Study 70 files ยท 12 subfolders
Copy to Workspace 12_CONTEXT Shared from "Study" on Inkdown
Context - Comprehensive Deep Dive
Overview
Context in the OpenAI Agents SDK is a powerful mechanism for sharing state across tool calls, guardrails, handoffs, and lifecycle hooks. Think of Context as a "shared workspace" or "carrying case" that travels with the agent run, allowing you to pass custom data, configuration, and state to various components without relying on global variables or complex threading mechanisms.
Core Concepts
What is Context?
Context is a user-defined object that:
Carries custom data throughout an agent run
Is accessible from tools, guardrails, handoffs, and hooks
Is mutable - can be modified during execution
Is type-safe - uses generics for compile-time checking
Is isolated - each run has its own context instance
Why Context Matters
- Share data across tool calls without globals
basic-ques
State Sharing
Configuration - Pass configuration to tools and guardrails
User Data - Track user-specific information
Session Data - Maintain session-specific state
Business Logic - Implement custom business rules
Type Safety - Ensure data consistency with types
Context Basics
Defining Context Context is typically a dataclass:
Using Context Pass context when running an agent:
Context in Tools Tools can access context:
RunContextWrapper
RunContextWrapper Class RunContextWrapper wraps the context and provides additional functionality:
Accessing Context
ToolContext
ToolContext Class ToolContext extends RunContextWrapper with tool-specific metadata:
Using ToolContext
Context and Generics
Generic Context Agents are generic over context type:
Type Safety Generics provide compile-time type checking:
Context Inference Type inference works in many cases:
Context Patterns
1. User Session Context Track user-specific data:
2. Database Context Pass database connection:
3. API Client Context
4. Configuration Context
5. Accumulator Context Accumulate results across tool calls:
Context Mutability
Modifying Context
Thread Safety Considerations Context is not thread-safe by default:
Context and Guardrails
Input Guardrails with Context
Output Guardrails with Context
Context and Handoffs
Handoff Functions with Context
Handoff Input Filter with Context
Context and Lifecycle Hooks
Run Hooks with Context
Agent Hooks with Context
Context and Tool Approvals
Approval Decisions with Context
Custom Approval Logic
Context and Usage Tracking
Accessing Usage
Context-Based Usage Limits
Context and RunConfig
Accessing RunConfig
Context-Based Configuration
Context and RunState
Context in RunState RunState includes context:
Context Serialization Context requires serializers for RunState:
Context Best Practices
1. Use Dataclasses Use dataclasses for context:
2. Keep Context Focused Keep context focused on relevant data:
3. Use Type Hints
4. Document Context Fields
5. Avoid Circular Dependencies Avoid circular references in context:
Common Context Patterns
1. Request Context Track request-specific data:
2. Multi-Tenant Context Handle multi-tenant applications:
3. Audit Context
4. Cache Context
5. State Machine Context
Context and Testing
Mock Context for Testing
Context Fixtures Use fixtures for common contexts:
Summary Context enables state sharing across agent runs. Key takeaways:
Context is a user-defined object for state sharing
RunContextWrapper wraps context with additional functionality
ToolContext extends RunContextWrapper with tool metadata
Generics provide type safety
Dataclasses are the recommended context type
Mutability allows context modification during runs
Tools can access context via RunContextWrapper
Guardrails can use context for validation
Handoffs can access context during delegation
Lifecycle hooks receive context in callbacks
Approvals can use context for decisions
Usage tracking is available in context
RunConfig is accessible from context
RunState includes context for serialization
Serialization requires custom serializers for complex context
Type hints ensure type safety
Documentation helps understand context fields
Focused context avoids bloat
Testing with mock contexts
Patterns exist for common use cases
Context is essential for building stateful, configurable, and type-safe agent workflows.