51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
"""Unified configuration manager for Graphiti MCP Server."""
|
|
|
|
import argparse
|
|
|
|
from embedder_config import GraphitiEmbedderConfig
|
|
from llm_config import GraphitiLLMConfig
|
|
from neo4j_config import Neo4jConfig
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class GraphitiConfig(BaseModel):
|
|
"""Configuration for Graphiti client.
|
|
|
|
Centralizes all configuration parameters for the Graphiti client.
|
|
"""
|
|
|
|
llm: GraphitiLLMConfig = Field(default_factory=GraphitiLLMConfig)
|
|
embedder: GraphitiEmbedderConfig = Field(default_factory=GraphitiEmbedderConfig)
|
|
neo4j: Neo4jConfig = Field(default_factory=Neo4jConfig)
|
|
group_id: str | None = None
|
|
use_custom_entities: bool = False
|
|
destroy_graph: bool = False
|
|
|
|
@classmethod
|
|
def from_env(cls) -> 'GraphitiConfig':
|
|
"""Create a configuration instance from environment variables."""
|
|
return cls(
|
|
llm=GraphitiLLMConfig.from_env(),
|
|
embedder=GraphitiEmbedderConfig.from_env(),
|
|
neo4j=Neo4jConfig.from_env(),
|
|
)
|
|
|
|
@classmethod
|
|
def from_cli_and_env(cls, args: argparse.Namespace) -> 'GraphitiConfig':
|
|
"""Create configuration from CLI arguments, falling back to environment variables."""
|
|
# Start with environment configuration
|
|
config = cls.from_env()
|
|
|
|
# Apply CLI overrides
|
|
if args.group_id:
|
|
config.group_id = args.group_id
|
|
else:
|
|
config.group_id = 'default'
|
|
|
|
config.use_custom_entities = args.use_custom_entities
|
|
config.destroy_graph = args.destroy_graph
|
|
|
|
# Update LLM config using CLI args
|
|
config.llm = GraphitiLLMConfig.from_cli_and_env(args)
|
|
|
|
return config
|