Claude commited on
Commit
a807df1
·
unverified ·
1 Parent(s): 1006080

Fix LLM client: lazy init to ensure env vars are loaded on HF Spaces

Browse files
Files changed (1) hide show
  1. app/llm.py +13 -6
app/llm.py CHANGED
@@ -5,11 +5,16 @@ import os
5
 
6
  from openai import AsyncOpenAI
7
 
8
- _api_key = os.environ.get("OPENROUTER_API_KEY", "")
9
- _base_url = os.environ.get("LLM_BASE_URL", "")
10
- _model = os.environ.get("LLM_MODEL", "mistralai/mistral-7b-instruct")
11
 
12
- _client = AsyncOpenAI(api_key=_api_key, base_url=_base_url)
 
 
 
 
 
 
 
13
 
14
  # ---------------------------------------------------------------------------
15
  # System prompts (verbatim from spec)
@@ -93,10 +98,12 @@ def build_system_prompt(mode: str, topic: str, phase: int, rag_chunks: list[str]
93
 
94
  async def chat(system_prompt: str, messages: list[dict]) -> str:
95
  """Send chat completion request and return assistant message."""
 
 
96
  api_messages = [{"role": "system", "content": system_prompt}] + messages
97
 
98
- response = await _client.chat.completions.create(
99
- model=_model,
100
  messages=api_messages,
101
  )
102
  return response.choices[0].message.content
 
5
 
6
  from openai import AsyncOpenAI
7
 
8
+ _client: AsyncOpenAI | None = None
 
 
9
 
10
+
11
+ def _get_client() -> AsyncOpenAI:
12
+ global _client
13
+ if _client is None:
14
+ api_key = os.environ.get("OPENROUTER_API_KEY", "")
15
+ base_url = os.environ.get("LLM_BASE_URL", "") or None
16
+ _client = AsyncOpenAI(api_key=api_key, base_url=base_url)
17
+ return _client
18
 
19
  # ---------------------------------------------------------------------------
20
  # System prompts (verbatim from spec)
 
98
 
99
  async def chat(system_prompt: str, messages: list[dict]) -> str:
100
  """Send chat completion request and return assistant message."""
101
+ client = _get_client()
102
+ model = os.environ.get("LLM_MODEL", "mistralai/mistral-7b-instruct")
103
  api_messages = [{"role": "system", "content": system_prompt}] + messages
104
 
105
+ response = await client.chat.completions.create(
106
+ model=model,
107
  messages=api_messages,
108
  )
109
  return response.choices[0].message.content