Configuration
This guide covers the configuration options for digitalNXT Agency.
Environment Configuration
Required Variables
# Azure OpenAI Configuration (Primary)
AZURE_OPENAI_API_KEY=your_azure_openai_api_key_here
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_VERSION=2024-02-01
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4
# Standard OpenAI Configuration (Optional fallback)
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Memory and Observability Configuration
LANGFUSE_PUBLIC_KEY=pk-lf-1234567890abcdef
LANGFUSE_SECRET_KEY=sk-lf-1234567890abcdef1234567890abcdef
LANGFUSE_HOST=http://localhost:3000
Optional Variables
# Memory Configuration
AGENCY_DATA_DIR=data # Base directory for data storage
AGENCY_SESSION_DIR=data/sessions # Directory for session files
AGENCY_CONVERSATION_DIR=data/conversations # Directory for conversation files
# Performance Configuration
AGENCY_MAX_SESSIONS=1000 # Maximum number of active sessions
AGENCY_SESSION_TIMEOUT=3600 # Session timeout in seconds
AGENCY_CLEANUP_INTERVAL=3600 # Session cleanup interval in seconds
# Logging Configuration
LOG_LEVEL=INFO # Logging level (DEBUG, INFO, WARNING, ERROR)
LOG_FORMAT=json # Log format (json, text)
Agency Configuration
Memory Configuration
Configure memory settings for your agency:
from agency.factories.agency_factory import AgencyFactory
from agency.sessions.session_factory import SessionFactory
from agency.agency.config import AgencyConfig
# Basic configuration
config = AgencyConfig(
name="MyAgency",
strategy_type="router",
settings={
"max_tokens": 4000,
"temperature": 0.7,
"timeout": 60
}
)
# Session configuration
session = SessionFactory.create_file_session(
session_id="production_session",
db_path="data/sessions/production.db"
)
# Create agency
agency = AgencyFactory.create_agency(
config=config,
session=session,
user_id="production_user",
langfuse_mode="AUTO"
)
Conversation Configuration
Set up conversation management:
from agency.conversations.manager import ConversationManager
from agency.conversations.models import AgencyConfig
# Create conversation manager
manager = ConversationManager(
base_dir="data/conversations",
session_dir="data/sessions"
)
# Create conversation with custom config
conversation = manager.create_conversation(
name="Customer Support Chat",
config=AgencyConfig(
name="CustomerSupport",
strategy_type="router",
settings={
"response_style": "friendly",
"max_history": 50
}
)
)
Environment-Specific Configuration
Development Environment
def create_dev_agency():
"""Development agency configuration."""
config = AgencyConfig(
name="DevAgency",
strategy_type="simple",
settings={
"temperature": 0.9, # More creative for testing
"debug": True
}
)
session = SessionFactory.create_memory_session("dev_session")
return AgencyFactory.create_agency(
config=config,
session=session,
langfuse_mode="LOCAL" # Use local Langfuse
)
Production Environment
import os
def create_prod_agency(user_id: str):
"""Production agency configuration."""
config = AgencyConfig(
name="ProdAgency",
strategy_type="router",
settings={
"temperature": 0.3, # More deterministic
"max_tokens": 4000,
"timeout": 30
}
)
session = SessionFactory.create_file_session(
session_id=f"prod_{user_id}",
db_path=f"{os.getenv('AGENCY_SESSION_DIR', 'data/sessions')}/{user_id}.db"
)
return AgencyFactory.create_agency(
config=config,
session=session,
user_id=user_id,
langfuse_mode="REMOTE", # Use remote Langfuse
auto_flush=True
)
.env.example
You can use this template for the environment variables. Copy to .env and modify as needed:
Configuration Files
pyproject.toml
The main project configuration is defined in pyproject.toml. Key sections include:
- Dependencies: Core and development dependencies
- Tool Configuration: Ruff, pytest, coverage settings
.pre-commit-config.yaml
The pre-commit hooks configuration for this project.
Justfile
The just commands configuration for this project.