function check_configuration
A comprehensive configuration verification function that checks and displays the status of all DocChat system settings, including API keys, models, ChromaDB connection, directories, and LLM initialization.
/tf/active/vicechatdev/docchat/verify_setup.py
13 - 141
moderate
Purpose
This diagnostic function verifies the complete configuration of a DocChat RAG (Retrieval-Augmented Generation) system. It checks API key availability, validates model configurations, tests ChromaDB connectivity, verifies directory structures, and attempts to initialize LLM instances. The function provides detailed console output with visual indicators (โ , โ ๏ธ, โ) to help developers quickly identify configuration issues before running the main application. It's designed to be run as a standalone verification script during setup or troubleshooting.
Source Code
def check_configuration():
"""Verify all configuration settings"""
print("=" * 60)
print("DocChat Configuration Verification")
print("=" * 60)
print()
try:
import config
print("โ
Config module loaded successfully")
except Exception as e:
print(f"โ Failed to load config: {e}")
return False
# Check API keys
print("\n๐ API Keys Status:")
print("-" * 60)
keys_to_check = {
'OPENAI_API_KEY': config.OPENAI_API_KEY,
'GEMINI_API_KEY': config.GEMINI_API_KEY,
'ANTHROPIC_API_KEY': config.ANTHROPIC_API_KEY,
'SERPER_API_KEY': config.SERPER_API_KEY,
'AZURE_OPENAI_API_KEY': config.AZURE_OPENAI_API_KEY,
}
for key_name, key_value in keys_to_check.items():
if key_value and len(key_value) > 10:
print(f"โ
{key_name}: {key_value[:20]}... ({len(key_value)} chars)")
else:
print(f"โ ๏ธ {key_name}: Not set or too short")
# Check available models
print("\n๐ค Available LLM Models:")
print("-" * 60)
for model_id, model_info in config.AVAILABLE_MODELS.items():
print(f"โ
{model_id}")
print(f" Provider: {model_info['provider']}")
print(f" Name: {model_info['name']}")
print(f" Description: {model_info['description']}")
print()
# Check default models
print("๐ Default Model Configuration:")
print("-" * 60)
print(f"โ
Main LLM Model: {config.DEFAULT_MODEL}")
print(f"โ
Small LLM Model: {config.SMALL_LLM_MODEL}")
print(f"โ
Embedding Model: {config.EMBEDDING_MODEL}")
# Check ChromaDB configuration
print("\n๐๏ธ ChromaDB Configuration:")
print("-" * 60)
print(f"โ
Host: {config.CHROMA_HOST}")
print(f"โ
Port: {config.CHROMA_PORT}")
print(f"โ
Collection: {config.CHROMA_COLLECTION_NAME}")
print(f" Connection Type: External HTTP (oneco_chroma)")
# Check paths
print("\n๐ Directory Configuration:")
print("-" * 60)
print(f"โ
Base Directory: {config.BASE_DIR}")
print(f"โ
Documents Directory: {config.DOCUMENTS_DIR}")
print(f"โ
Data Directory: {config.DATA_DIR}")
print(f"โ
Upload Directory: {config.UPLOAD_DIR}")
print(f"โ
Temp Directory: {config.TEMP_DIR}")
# Check if directories exist
print("\n๐ Directory Existence Check:")
print("-" * 60)
for dir_name, dir_path in [
('Documents (qa_docs)', config.DOCUMENTS_DIR),
('Data', config.DATA_DIR),
('Uploads', config.UPLOAD_DIR),
('Temp', config.TEMP_DIR),
]:
if dir_path.exists():
print(f"โ
{dir_name}: {dir_path} (exists)")
else:
print(f"โ ๏ธ {dir_name}: {dir_path} (will be created)")
# Test ChromaDB connection (optional)
print("\n๐ ChromaDB Connection Test:")
print("-" * 60)
try:
import chromadb
client = chromadb.HttpClient(
host=config.CHROMA_HOST,
port=config.CHROMA_PORT
)
collections = client.list_collections()
print(f"โ
Connected to ChromaDB at {config.CHROMA_HOST}:{config.CHROMA_PORT}")
print(f" Available collections: {len(collections) if collections else 0}")
if collections:
for coll in collections[:5]: # Show first 5
coll_name = coll if isinstance(coll, str) else coll.name
print(f" - {coll_name}")
except Exception as e:
print(f"โ ๏ธ ChromaDB connection test: {str(e)[:100]}")
print(f" Note: This is OK if oneco_chroma is not running yet")
# Test LLM initialization
print("\n๐งช LLM Initialization Test:")
print("-" * 60)
try:
from rag_engine import get_llm_instance
for model_name in ['gpt-4o', 'claude-sonnet-4-5-20250929', 'gemini-2.0-flash-exp']:
try:
llm = get_llm_instance(model_name, temperature=0, max_tokens=100)
print(f"โ
{model_name}: Initialized successfully")
except Exception as e:
print(f"โ ๏ธ {model_name}: {str(e)[:80]}")
except Exception as e:
print(f"โ ๏ธ LLM test skipped: {str(e)[:100]}")
print(f" Note: Install dependencies first: pip install -r requirements.txt")
print("\n" + "=" * 60)
print("โ
Configuration Verification Complete!")
print("=" * 60)
print()
print("Next steps:")
print("1. Install dependencies: pip install -r requirements.txt")
print("2. Ensure oneco_chroma is running and accessible")
print("3. Add documents to data/qa_docs/")
print("4. Run: python app.py")
print()
return True
Return Value
Returns a boolean value: True if the configuration verification completes successfully (even if some optional components like ChromaDB connection fail), False only if the config module itself fails to load. The return value indicates whether the verification process completed, not whether all checks passed.
Dependencies
configchromadbrag_engine
Required Imports
import config
Conditional/Optional Imports
These imports are only needed under specific conditions:
import chromadb
Condition: only for ChromaDB connection testing section
Optionalfrom rag_engine import get_llm_instance
Condition: only for LLM initialization testing section
OptionalUsage Example
# Run as standalone verification script
if __name__ == '__main__':
success = check_configuration()
if success:
print('Configuration check completed')
else:
print('Configuration check failed')
sys.exit(1)
# Or import and use in another script
from config_checker import check_configuration
# Verify configuration before starting application
if check_configuration():
# Proceed with application startup
from app import main
main()
else:
print('Please fix configuration issues before running the application')
Best Practices
- Run this function during initial setup to verify all configuration before starting the main application
- Use as a troubleshooting tool when experiencing configuration-related issues
- The function gracefully handles missing optional components (ChromaDB, LLM libraries) and continues verification
- API keys are partially masked in output for security (only first 20 characters shown)
- The function returns True even if optional tests fail, allowing for partial configurations during development
- Review the console output carefully - warnings (โ ๏ธ) indicate non-critical issues while errors (โ) indicate critical failures
- Ensure the config module is properly structured with all required attributes before running
- The ChromaDB connection test is optional and will show a warning if the server is not running
- LLM initialization tests require proper API keys and installed dependencies to pass
- Use this function as part of a deployment checklist or CI/CD pipeline health check
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function test_config 77.8% similar
-
function test_config_loading 65.4% similar
-
function test_configuration 65.1% similar
-
function test_configuration_v2 64.1% similar
-
function test_configuration_v1 63.0% similar