Skip to content

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:

cp .env.example .env

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.