Configuration
This page documents all configuration options available in Manas.
Global Configuration
Environment Variables
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# OpenAI configuration
OPENAI_API_KEY=your-api-key
OPENAI_ORG_ID=your-org-id    # Optional
# Anthropic configuration
ANTHROPIC_API_KEY=your-api-key
# HuggingFace configuration
HUGGINGFACE_API_KEY=your-api-key
# Pinecone configuration
PINECONE_API_KEY=your-api-key
PINECONE_ENVIRONMENT=your-environment
# Logging configuration
MANAS_LOG_LEVEL=INFO        # DEBUG, INFO, WARNING, ERROR
MANAS_LOG_FORMAT=detailed   # simple, detailed, json
LLM Configuration
LLMConfig
Configuration for language models:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from manas_ai.models import LLMConfig
config = LLMConfig(
    provider="openai",           # Provider name
    model_name="gpt-4",         # Model identifier
    temperature=0.7,            # Response randomness (0-1)
    max_tokens=100,             # Maximum response length
    top_p=1.0,                  # Nucleus sampling parameter
    frequency_penalty=0.0,      # Repetition penalty
    presence_penalty=0.0,       # Topic steering
    stop=None,                  # Stop sequences
    timeout=30,                 # Request timeout
    retry_attempts=3,           # Retry failed requests
    cache_ttl=3600,            # Cache lifetime
    streaming=False            # Enable streaming
)
Node Configuration
NodeConfig
Base configuration for all nodes:
1
2
3
4
5
6
7
8
9
10
11
12
13
from manas_ai.models import NodeConfig
config = NodeConfig(
    name="my_node",            # Node name
    description=None,          # Node description
    metadata={},               # Custom metadata
    timeout=30,                # Processing timeout
    retry_attempts=3,          # Retry attempts
    cache_enabled=True,        # Enable caching
    cache_ttl=3600,           # Cache lifetime
    async_execution=True,      # Run asynchronously
    error_handler=None        # Custom error handler
)
QAConfig
Configuration for QA nodes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from manas_ai.models import QAConfig
config = QAConfig(
    system_prompt="You are...",  # System instructions
    use_rag=True,               # Enable RAG
    rag_config={                # RAG settings
        "chunk_size": 500,
        "chunk_overlap": 50,
        "max_sources": 3,
        "min_relevance": 0.7
    },
    conversation_window=10,     # Message history
    temperature=0.7,            # Model temperature
    max_tokens=500             # Max response length
)
DocumentConfig
Configuration for document processing:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from manas_ai.models import DocumentConfig
config = DocumentConfig(
    chunk_size=500,            # Chunk size
    chunk_overlap=50,          # Overlap between chunks
    chunk_strategy="token",    # token or character
    preserve_structure=True,   # Maintain formatting
    extract_metadata=True,     # Extract doc metadata
    supported_types=[          # Allowed file types
        "text/plain",
        "application/pdf",
        "text/markdown"
    ],
    processors={               # Custom processors
        "pdf": pdf_processor,
        "markdown": md_processor
    }
)
Flow Configuration
FlowConfig
Configuration for flows:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from manas_ai.models import FlowConfig
config = FlowConfig(
    name="my_flow",             # Flow name
    description=None,           # Flow description
    parallel_execution=True,    # Allow parallel
    max_concurrency=4,         # Max parallel nodes
    timeout=60,                # Flow timeout
    error_handler=None,        # Error handler
    middleware=[],             # Flow middleware
    state_manager=None,        # State management
    visualization={            # Vis settings
        "enabled": True,
        "format": "mermaid",
        "details": "minimal"
    }
)
RAG Configuration
RAGConfig
Configuration for RAG systems:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from manas_ai.models import RAGConfig
config = RAGConfig(
    chunk_size=500,            # Chunk size
    chunk_overlap=50,          # Chunk overlap
    embedding_model="text-embedding-ada-002",
    embedding_dimension=1536,   # Vector dimension
    similarity_metric="cosine", # Similarity measure
    min_relevance=0.7,         # Relevance threshold
    max_sources=3,             # Sources per query
    reranking_enabled=False,   # Enable reranking
    cache_embeddings=True,     # Cache vectors
    preprocessing=[            # Text processors
        clean_text,
        remove_duplicates
    ],
    postprocessing=[          # Result processors
        format_sources,
        add_citations
    ]
)
Vector Store Configuration
VectorStoreConfig
Configuration for vector stores:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from manas_ai.models import VectorStoreConfig
config = VectorStoreConfig(
    store_type="faiss",        # Store backend
    dimension=1536,            # Vector dimension
    metric="cosine",           # Distance metric
    index_type="flat",         # Index structure
    serialization={            # Storage settings
        "enabled": True,
        "path": "vectors.idx",
        "format": "binary"
    },
    optimization={             # Performance
        "nprobe": 10,
        "quantization": None
    }
)
Provider Configuration
ProviderConfig
Configuration for LLM providers:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from manas_ai.models import ProviderConfig
config = ProviderConfig(
    api_key="your-key",        # API key
    organization=None,         # Org ID
    base_url=None,            # API endpoint
    timeout=30,               # Request timeout
    rate_limit=60,            # Requests per minute
    retry={                   # Retry settings
        "attempts": 3,
        "delay": 1,
        "backoff": 2
    },
    proxy=None,               # Proxy settings
    ssl_verify=True          # SSL verification
)
Tool Configuration
ToolConfig
Configuration for tools:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from manas_ai.models import ToolConfig
config = ToolConfig(
    name="my_tool",            # Tool name
    description=None,          # Tool description
    async_execution=True,      # Run async
    timeout=30,               # Execution timeout
    retry_attempts=3,         # Retry attempts
    validation={              # Input validation
        "enabled": True,
        "schema": {...}
    },
    rate_limit=None,          # Rate limiting
    cache_config={            # Caching
        "enabled": True,
        "ttl": 3600
    }
)
Best Practices
- Environment Variables
    - Use for sensitive data
- Set in deployment
- Document requirements
- Provide examples
 
- Configuration Files
    - Use for static config
- Version control safe
- Environment specific
- Well documented
 
- Runtime Configuration
    - Validate inputs
- Provide defaults
- Allow overrides
- Type safety
 
- Security
    - Protect API keys
- SSL verification
- Rate limiting
- Input validation
 
- Performance
    - Cache settings
- Timeouts
- Retries
- Resource limits
 
Notes
- Validate configurations
- Use type hints
- Document options
- Provide examples
- Consider security
- Test configurations