corp-env / server /llm_env.py
Navigam's picture
feat: enhance inference and logging capabilities with SWD tracing
e085a33
Raw
History Blame Contribute Delete
2.69 kB
"""Resolve OpenAI-compatible API key and base URL per role (master, worker, judge)."""
from __future__ import annotations
import os
from typing import Any, Dict, Optional
def _first(*values: Optional[str]) -> Optional[str]:
for v in values:
if v is not None and str(v).strip() != "":
return str(v).strip()
return None
def openai_client_kwargs_master() -> Dict[str, Any]:
"""Credentials for the master model (inference loop)."""
api_key = _first(
os.getenv("CORP_MASTER_API_KEY"),
os.getenv("HF_TOKEN"),
os.getenv("OPENAI_API_KEY"),
os.getenv("API_KEY"),
)
base_url = _first(
os.getenv("CORP_MASTER_BASE_URL"),
os.getenv("API_BASE_URL"),
os.getenv("OPENAI_BASE_URL"),
)
return _kwargs(api_key, base_url)
def openai_client_kwargs_worker(canonical_agent_id: str) -> Dict[str, Any]:
"""
Credentials for a frozen worker (dev_agent, hr_agent, finance_agent).
Per-agent overrides use uppercase id with hyphens as underscores, e.g.:
CORP_WORKER_DEV_AGENT_API_KEY, CORP_WORKER_DEV_AGENT_BASE_URL
"""
suffix = canonical_agent_id.upper().replace("-", "_")
api_key = _first(
os.getenv(f"CORP_WORKER_{suffix}_API_KEY"),
os.getenv("CORP_WORKER_DEFAULT_API_KEY"),
os.getenv("OPENAI_API_KEY"),
os.getenv("HF_TOKEN"),
os.getenv("API_KEY"),
)
base_url = _first(
os.getenv(f"CORP_WORKER_{suffix}_BASE_URL"),
os.getenv("CORP_WORKER_DEFAULT_BASE_URL"),
os.getenv("API_BASE_URL"),
os.getenv("OPENAI_BASE_URL"),
)
return _kwargs(api_key, base_url)
def openai_client_kwargs_judge() -> Dict[str, Any]:
"""Credentials for the optional LLM judge (reward)."""
api_key = _first(
os.getenv("CORP_JUDGE_API_KEY"),
os.getenv("OPENAI_API_KEY"),
os.getenv("HF_TOKEN"),
os.getenv("API_KEY"),
)
base_url = _first(
os.getenv("CORP_JUDGE_BASE_URL"),
os.getenv("API_BASE_URL"),
os.getenv("OPENAI_BASE_URL"),
)
return _kwargs(api_key, base_url)
def _kwargs(api_key: Optional[str], base_url: Optional[str]) -> Dict[str, Any]:
out: Dict[str, Any] = {}
if api_key:
out["api_key"] = api_key
if base_url:
out["base_url"] = base_url
return out
def worker_model_for(canonical_agent_id: str) -> str:
suffix = canonical_agent_id.upper().replace("-", "_")
return _first(
os.getenv(f"CORP_WORKER_{suffix}_MODEL"),
os.getenv("CORP_WORKER_DEFAULT_MODEL"),
os.getenv("CORP_WORKER_MODEL"),
os.getenv("MODEL_NAME"),
) or "Qwen/Qwen2.5-7B-Instruct"