File size: 4,115 Bytes
8c85b97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5360de3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c85b97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# config.py
import os
from dotenv import load_dotenv
import torch

import warnings
warnings.filterwarnings("ignore", message="torchaudio._backend.list_audio_backends has been deprecated")
# warnings.filterwarnings("ignore", message="Model was trained with.*Bad things might happen")
warnings.filterwarnings("ignore", message="std(): degrees of freedom is <= 0")

load_dotenv()

class Config:
    # API Keys
    HUGGINGFACE_TOKEN = os.getenv("HUGGINGFACE_TOKEN")
    PINECONE_API_KEY = os.getenv("PINECONE_API_KEY")

    OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
    # Model Settings 1 (Default)
    # MODEL_NAME = "gpt-3.5-turbo"
    # METADATA_MODEL = "gpt-4o-mini" # Cheaper model for metadata extraction

    # Model Settings 2 (Upgrade Setup)
    # Primary Brain: Fixes routing bugs and reduces latency
    # Significantly better at tool-calling than 3.5 Turbo
    # MODEL_NAME = "gpt-4.1-mini"
    # Extraction: Swap to 5-nano for cost, or 5-mini for "better than ok" results
    # For Speaker Mapping, 5-nano is sufficient; 5-mini is the high-quality choice.
    # METADATA_MODEL = "gpt-5-mini"

    # Model Settings 3 (Power Setup)
    # THE BRAIN: GPT-5.2 (Reasoning Model)
    # Why: 98.7% tool-use accuracy. It "thinks" before it acts.
    # Cost: $1.75/1M input. This will solve your routing bugs.
    MODEL_NAME = "gpt-5.2" 
    # THE WORKER: GPT-5-mini
    # Why: High-speed extraction with reasoning capabilities. 
    # Better than 4o-mini at inferring speaker roles from context.
    METADATA_MODEL = "gpt-5-mini"


    # # Zoom API Settings
    # ZOOM_CLIENT_ID = os.getenv("ZOOM_CLIENT_ID")
    # ZOOM_CLIENT_SECRET = os.getenv("ZOOM_CLIENT_SECRET")
    # ZOOM_ACCOUNT_ID = os.getenv("ZOOM_ACCOUNT_ID")
    # ZOOM_WEBHOOK_SECRET = os.getenv("ZOOM_WEBHOOK_SECRET")

    # Pinecone Settings
    PINECONE_INDEX = "meeting-transcripts-1-dev"
    PINECONE_ENVIRONMENT = "us-west1-gcp"  # Change to your environment
    PINECONE_NAMESPACE = "development" # Default namespace for environment isolation options: "default", "development", "production"
    
    # LangSmith Settings (optional - for tracing and debugging)
    LANGCHAIN_TRACING_V2 = os.getenv("LANGCHAIN_TRACING_V2", "false")
    LANGCHAIN_API_KEY = os.getenv("LANGCHAIN_API_KEY", "")
    LANGCHAIN_PROJECT = os.getenv("LANGCHAIN_PROJECT", "meeting-agent")
    
    # Service Configuration
    DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
    COMPUTE_TYPE = "float16" if DEVICE == "cuda" else "int8"
    
    # Model Settings
    WHISPER_MODEL = "small" # Options: tiny, base, small, medium, large-v2, large-v3
    
    # MCP (Model Context Protocol) Settings
    ENABLE_MCP = os.getenv("ENABLE_MCP", "false").lower() == "true"
    # Read from NOTION_TOKEN (the variable name in .env)
    NOTION_TOKEN = os.getenv("NOTION_TOKEN", "")
    
    # MCP Server Configurations
    @staticmethod
    def get_mcp_servers():
        """Get MCP server configurations."""
        if not Config.ENABLE_MCP:
            return {}

        servers = {}
        
        # 1. Notion MCP Server (if token is present)
        if Config.NOTION_TOKEN:
            servers["notion"] = {
                "command": "npx",
                "args": ["-y", "@notionhq/notion-mcp-server"],
                "transport": "stdio",
                "env": {
                    "NOTION_TOKEN": Config.NOTION_TOKEN
                }
            }
            
        # 2. World Time MCP Server (Remote HF Space)
        # This connects to your Space running app_world_time_mcp_server.py
        servers["world_time"] = {
            "url": "https://gfiamon-date-time-mpc-server-tool.hf.space/gradio_api/mcp/sse",
            "transport": "sse"
        }
        
        return servers


# Enable LangSmith tracing if configured
if Config.LANGCHAIN_TRACING_V2 == "true" and Config.LANGCHAIN_API_KEY:
    os.environ["LANGCHAIN_TRACING_V2"] = "true"
    os.environ["LANGCHAIN_API_KEY"] = Config.LANGCHAIN_API_KEY
    os.environ["LANGCHAIN_PROJECT"] = Config.LANGCHAIN_PROJECT
    print(f"✅ LangSmith tracing enabled for project: {Config.LANGCHAIN_PROJECT}")