File size: 2,385 Bytes
dd67d34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Configuration for ContextFlow Research
"""

import os
from dataclasses import dataclass, field
from typing import List, Optional


@dataclass
class LLMConfig:
    api_key: str = os.environ.get('LLM_API_KEY', '')
    base_url: str = os.environ.get('LLM_BASE_URL', 'https://api.openai.com/v1')
    model: str = os.environ.get('LLM_MODEL', 'gpt-4-turbo')
    temperature: float = 0.7
    max_tokens: int = 4000


@dataclass
class SupabaseConfig:
    url: str = os.environ.get('SUPABASE_URL', '')
    anon_key: str = os.environ.get('SUPABASE_ANON_KEY', '')
    service_key: str = os.environ.get('SUPABASE_SERVICE_KEY', '')


@dataclass
class NotionConfig:
    api_key: str = os.environ.get('NOTION_API_KEY', '')
    database_id: str = os.environ.get('NOTION_DATABASE_ID', '')


@dataclass
class ZepConfig:
    api_key: str = os.environ.get('ZEP_API_KEY', '')


@dataclass
class Config:
    secret_key: str = os.environ.get('SECRET_KEY', 'contextflow-research-secret-2024')
    debug: bool = os.environ.get('DEBUG', 'False').lower() == 'true'
    host: str = os.environ.get('HOST', '0.0.0.0')
    port: int = int(os.environ.get('PORT', 5001))
    
    llm: LLMConfig = field(default_factory=LLMConfig)
    supabase: SupabaseConfig = field(default_factory=SupabaseConfig)
    notion: NotionConfig = field(default_factory=NotionConfig)
    zep: ZepConfig = field(default_factory=ZepConfig)
    
    upload_folder: str = 'uploads'
    max_content_length: int = 100 * 1024 * 1024
    
    allowed_domains: List[str] = field(default_factory=lambda: [
        'wikipedia.org', 'khanacademy.org', 'coursera.org', 'edx.org',
        'stackoverflow.com', 'developer.mozilla.org', 'geeksforgeeks.org',
        'chatgpt.com', 'claude.ai', 'gemini.google', 'chat.google.com',
        'github.com', 'huggingface.co', 'arxiv.org', 'arxiv.org',
        'youtube.com', ' Khanacademy', ' Brilliant', ' Brilliant.org',
        'udemy.com', 'pluralsight.com', 'w3schools.com', 'tutorialspoint.com',
        'medium.com', 'dev.to', 'stackoverflow.com', 'stackexchange.com',
        'learn.microsoft.com', 'docs.python.org', 'docs.oracle.com',
        'pandas.pydata.org', 'numpy.org', 'scikit-learn.org', 'tensorflow.org',
        'pytorch.org', 'keras.io', 'huggingface.co/docs', 'langchain.ai'
    ])
    
    rl_training_interval: int = 100
    simulation_rounds: int = 50
    graph_batch_size: int = 5