52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
import os
|
|
|
|
from dotenv import load_dotenv
|
|
from pydantic import BaseModel, Field
|
|
|
|
load_dotenv()
|
|
|
|
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
|
class LLMConfig(BaseModel):
|
|
api_key: str = Field(default=os.getenv("LLM_API_KEY", ""))
|
|
base_url: str = Field(default=os.getenv("LLM_BASE_URL", "https://api.deepseek.com/v1"))
|
|
model: str = Field(default=os.getenv("LLM_MODEL", "deepseek-chat"))
|
|
max_tokens: int = Field(default=64000)
|
|
temperature: float = Field(default=0.95)
|
|
|
|
|
|
class EmbeddingConfig(BaseModel):
|
|
api_key: str = Field(default=os.getenv("EMBEDDING_API_KEY", ""))
|
|
api_base: str = Field(default=os.getenv("EMBEDDING_BASE_URL", "https://api.openai.com/v1"))
|
|
model: str = Field(default=os.getenv("EMBEDDING_MODEL", "text-embedding-3-small"))
|
|
|
|
|
|
class StorageConfig(BaseModel):
|
|
data_dir: str = Field(default=os.path.join(PROJECT_ROOT, "data"))
|
|
raw_dir: str = Field(default=os.path.join(PROJECT_ROOT, "data", "raw"))
|
|
|
|
|
|
class VectorStoreConfig(BaseModel):
|
|
persist_dir: str = Field(default=os.path.join(PROJECT_ROOT, "vector_store_data"))
|
|
|
|
|
|
class Neo4jConfig(BaseModel):
|
|
enabled: bool = Field(default=os.getenv("NEO4J_ENABLED", "false").lower() == "true")
|
|
uri: str = Field(default=os.getenv("NEO4J_URI", "bolt://localhost:7687"))
|
|
user: str = Field(default=os.getenv("NEO4J_USER", "neo4j"))
|
|
password: str = Field(default=os.getenv("NEO4J_PASSWORD", ""))
|
|
database: str = Field(default=os.getenv("NEO4J_DATABASE", "neo4j"))
|
|
|
|
|
|
class ProjectConfig(BaseModel):
|
|
llm: LLMConfig = Field(default_factory=LLMConfig)
|
|
embedding: EmbeddingConfig = Field(default_factory=EmbeddingConfig)
|
|
storage: StorageConfig = Field(default_factory=StorageConfig)
|
|
vector_store: VectorStoreConfig = Field(default_factory=VectorStoreConfig)
|
|
neo4j: Neo4jConfig = Field(default_factory=Neo4jConfig)
|
|
state_path: str = Field(default=os.path.join(PROJECT_ROOT, "data", "meeting_state.json"))
|
|
|
|
|
|
config = ProjectConfig()
|