CaffeinatedCoding commited on
Commit
2844ebb
·
verified ·
1 Parent(s): 1581024

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. src/llm.py +44 -6
src/llm.py CHANGED
@@ -20,6 +20,9 @@ logger = logging.getLogger(__name__)
20
  # ── HuggingFace Inference API ─────────────────────────────
21
  _hf_client = None
22
 
 
 
 
23
  def _init_hf():
24
  global _hf_client
25
  token = os.getenv("HF_TOKEN")
@@ -38,7 +41,25 @@ def _init_hf():
38
  logger.error(f"HF Inference API init failed: {e}")
39
  return False
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  # ── Groq fallback (works locally, may be blocked on HF Spaces) ──
 
42
  _groq_client = None
43
 
44
  def _init_groq():
@@ -69,14 +90,31 @@ def _call_hf(messages: list) -> str:
69
  )
70
  return response.choices[0].message.content
71
 
72
-
73
- def _call_groq(messages: list) -> str:
74
- """Call Groq as fallback."""
75
- response = _groq_client.chat.completions.create(
76
- model="llama-3.3-70b-versatile",
77
  messages=messages,
 
78
  temperature=0.3,
79
- max_tokens=1500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  )
81
  return response.choices[0].message.content
82
 
 
20
  # ── HuggingFace Inference API ─────────────────────────────
21
  _hf_client = None
22
 
23
+ # ── OpenRouter (free tier, reliable fallback) ──────────────
24
+ _openrouter_client = None
25
+
26
  def _init_hf():
27
  global _hf_client
28
  token = os.getenv("HF_TOKEN")
 
41
  logger.error(f"HF Inference API init failed: {e}")
42
  return False
43
 
44
+ def _init_openrouter():
45
+ global _openrouter_client
46
+ api_key = os.getenv("OPENROUTER_API_KEY")
47
+ if not api_key:
48
+ return False
49
+ try:
50
+ from openai import OpenAI
51
+ _openrouter_client = OpenAI(
52
+ base_url="https://openrouter.ai/api/v1",
53
+ api_key=api_key,
54
+ )
55
+ logger.info("OpenRouter ready as fallback")
56
+ return True
57
+ except Exception as e:
58
+ logger.error(f"OpenRouter init failed: {e}")
59
+ return False
60
+
61
  # ── Groq fallback (works locally, may be blocked on HF Spaces) ──
62
+ _openrouter_ready = _init_openrouter()
63
  _groq_client = None
64
 
65
  def _init_groq():
 
90
  )
91
  return response.choices[0].message.content
92
 
93
+ openrouter(messages: list) -> str:
94
+ """Call OpenRouter free tier."""
95
+ response = _openrouter_client.chat.completions.create(
96
+ model="meta-llama/llama-3.3-70b-instruct:free",
 
97
  messages=messages,
98
+ max_tokens=1500,
99
  temperature=0.3,
100
+ )
101
+ return response.choices[0].message.content
102
+
103
+
104
+ def _call_
105
+ def _call_groq(messages: list) -> str:
106
+ """Call Groq as fthen OpenRouter, then Groq."""
107
+ if _hf_ready and _hf_client:
108
+ try:
109
+ return _call_hf(messages)
110
+ except Exception as e:
111
+ logger.warning(f"HF Inference failed: {e}, trying OpenRouter")
112
+
113
+ if _openrouter_ready and _openrouter_client:
114
+ try:
115
+ return _call_openrouter(messages)
116
+ except Exception as e:
117
+ logger.warning(f"OpenRouter
118
  )
119
  return response.choices[0].message.content
120