File size: 4,263 Bytes
964e368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import os
from autoagents.system.tools import SearchEngineType, WebBrowserEngineType


# Core LLM settings
# Support both OPENAI_API_KEY and legacy LLM_API_KEY
LLM_API_KEY = os.getenv("OPENAI_API_KEY") or os.getenv("LLM_API_KEY", "")
LLM_MODEL = os.getenv("OPENAI_API_MODEL", "gpt-4o")

# OpenAI/Azure-style settings
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE", "")
OPENAI_API_TYPE = os.getenv("OPENAI_API_TYPE", "")
OPENAI_API_VERSION = os.getenv("OPENAI_API_VERSION", "")
DEPLOYMENT_ID = os.getenv("DEPLOYMENT_ID", "")

# Rates and limits
def _as_int(name: str, default: int | None) -> int | None:
    try:
        val = os.getenv(name)
        return int(val) if val is not None else default
    except Exception:
        return default

def _as_float(name: str, default: float | None) -> float | None:
    try:
        val = os.getenv(name)
        return float(val) if val is not None else default
    except Exception:
        return default

def _as_bool(name: str, default: bool = False) -> bool:
    val = os.getenv(name)
    if val is None:
        return default
    return str(val).strip().lower() in ("1", "true", "yes", "y", "on")

RPM = _as_int("RPM", 10) or 10
# Ensure RPM is at least 1
RPM = max(1, int(RPM))

MAX_TOKENS = _as_int("MAX_TOKENS", None)

# Generation/sampling settings
TEMPERATURE = _as_float("TEMPERATURE", 0.2)
# Clamp to OpenAI-compatible range
if TEMPERATURE is not None:
    TEMPERATURE = max(0.0, min(2.0, TEMPERATURE))

TOP_P = _as_float("TOP_P", 1.0)
PRESENCE_PENALTY = _as_float("PRESENCE_PENALTY", 0.0)
FREQUENCY_PENALTY = _as_float("FREQUENCY_PENALTY", 0.0)
N = _as_int("N", 1) or 1

# Comma-separated stop words, e.g. "STOP,END"
_STOP_RAW = os.getenv("STOP", os.getenv("STOP_WORDS", "")).strip()
STOP = [s.strip() for s in _STOP_RAW.split(",") if s.strip()] if _STOP_RAW else None

# Budget/billing
MAX_BUDGET = _as_float("MAX_BUDGET", 100.0) or 100.0
TOTAL_COST = 0.0

# Proxies
GLOBAL_PROXY = os.getenv("GLOBAL_PROXY", "")
OPENAI_PROXY = os.getenv("OPENAI_PROXY", "")

# Anthropic via LiteLLM
# Compatible with common env var aliases
CLAUDE_API_KEY = (
    os.getenv("Anthropic_API_KEY")
    or os.getenv("ANTHROPIC_API_KEY")
    or os.getenv("CLAUDE_API_KEY")
    or ""
)
CLAUDE_MODEL = os.getenv("CLAUDE_MODEL", "anthropic/claude-2")

# Memory settings
LONG_TERM_MEMORY = _as_bool("LONG_TERM_MEMORY", False)

# Search / Google related API keys
SERPAPI_API_KEY = os.getenv("SERPAPI_API_KEY", "")
SERPER_API_KEY = os.getenv("SERPER_API_KEY", "")
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "")
GOOGLE_CSE_ID = os.getenv("GOOGLE_CSE_ID", "")

# Search engine selection
_SEARCH_ENGINE_NAME = os.getenv("SEARCH_ENGINE", SearchEngineType.SERPAPI_GOOGLE.value)
try:
    SEARCH_ENGINE = SearchEngineType(_SEARCH_ENGINE_NAME)
except Exception:
    SEARCH_ENGINE = SearchEngineType.SERPAPI_GOOGLE

# Browser engine settings
try:
    WEB_BROWSER_ENGINE = WebBrowserEngineType(os.getenv("WEB_BROWSER_ENGINE", WebBrowserEngineType.PLAYWRIGHT.value))
except Exception:
    WEB_BROWSER_ENGINE = WebBrowserEngineType.PLAYWRIGHT
PLAYWRIGHT_BROWSER_TYPE = os.getenv("PLAYWRIGHT_BROWSER_TYPE", "chromium")
SELENIUM_BROWSER_TYPE = os.getenv("SELENIUM_BROWSER_TYPE", "chrome")

# Network / timeouts
LLM_TIMEOUT = _as_float("LLM_TIMEOUT", 60.0) or 60.0

# Optional: inject proxies into HTTP client env (e.g., httpx/requests)
_proxy_to_apply = OPENAI_PROXY or GLOBAL_PROXY
if _proxy_to_apply:
    # Do not override if already set
    os.environ.setdefault("HTTP_PROXY", _proxy_to_apply)
    os.environ.setdefault("HTTPS_PROXY", _proxy_to_apply)

# LLM parsing repair/safeguards
LLM_PARSER_REPAIR = _as_bool("LLM_PARSER_REPAIR", True)
LLM_PARSER_REPAIR_ATTEMPTS = max(0, _as_int("LLM_PARSER_REPAIR_ATTEMPTS", 1) or 1)

SUPERVISOR_API_KEY = os.getenv("SUPERVISOR_API_KEY")
SUPERVISOR_MODEL = os.getenv("SUPERVISOR_MODEL")
SUPERVISOR_API_BASE = os.getenv("SUPERVISOR_API_BASE")

REASONING_API_KEY = os.getenv("REASONING_API_KEY")
REASONING_MODEL = os.getenv("REASONING_MODEL")
REASONING_API_BASE = os.getenv("REASONING_API_BASE")

MANAGER_API_KEY = os.getenv("MANAGER_API_KEY")
MANAGER_MODEL = os.getenv("MANAGER_MODEL")
MANAGER_API_BASE = os.getenv("MANAGER_API_BASE")

TASK_ID = -1
OUTPUT_FILE = os.getenv("OUTPUT_FILE", "output.json")