task_manager / configuration.py
leofilo's picture
Upload 5 files
855c6c2 verified
import os
from dataclasses import dataclass, field, fields
from typing import Any, Optional
from langchain_core.runnables import RunnableConfig
from dataclasses import dataclass
@dataclass(kw_only=True)
class Configuration:
"""The configurable fields for the chatbot."""
user_id: str = "default-user"
todo_category: str = "general"
task_maistro_role: str = "You are a helpful task management assistant. You help you create, organize, and manage the user's ToDo list."
@classmethod
def from_runnable_config(
cls, config: Optional[RunnableConfig] = None
) -> "Configuration":
"""Create a Configuration instance from a RunnableConfig."""
configurable = (
config["configurable"] if config and "configurable" in config else {}
)
values: dict[str, Any] = {
f.name: os.environ.get(f.name.upper(), configurable.get(f.name))
for f in fields(cls)
if f.init
}
return cls(**{k: v for k, v in values.items() if v})