Spaces:
Running
Running
jisubae
commited on
Commit
Β·
ca1e416
1
Parent(s):
066aab5
feat: random key rotation
Browse files- freshqa/fresheval_parallel.py +3 -2
- src/api_key_rotator.py +22 -0
freshqa/fresheval_parallel.py
CHANGED
|
@@ -93,8 +93,9 @@ class FreshEvalParallel:
|
|
| 93 |
"""μ컀 ν¨μ - κ° μ컀λ§λ€ λ
립μ μΈ FreshEval μΈμ€ν΄μ€ μμ±"""
|
| 94 |
row, mode, current_date = args
|
| 95 |
|
| 96 |
-
# κ° μ컀λ§λ€
|
| 97 |
-
|
|
|
|
| 98 |
worker_eval = FreshEval(model=self.model, api_key=api_key)
|
| 99 |
|
| 100 |
# κΈ°μ‘΄ evaluate_single_row λ©μλ μ¬μ©
|
|
|
|
| 93 |
"""μ컀 ν¨μ - κ° μ컀λ§λ€ λ
립μ μΈ FreshEval μΈμ€ν΄μ€ μμ±"""
|
| 94 |
row, mode, current_date = args
|
| 95 |
|
| 96 |
+
# κ° μ컀λ§λ€ λλ€ν ν€λ‘ μμ (λΆν λΆμ°)
|
| 97 |
+
# 429 μλ¬ λ°μ μ FreshEval λ΄λΆμμ μλμΌλ‘ λ€μ ν€λ‘ μμ°¨ λ‘ν
μ΄μ
|
| 98 |
+
api_key = get_rotator().pick_key_random()
|
| 99 |
worker_eval = FreshEval(model=self.model, api_key=api_key)
|
| 100 |
|
| 101 |
# κΈ°μ‘΄ evaluate_single_row λ©μλ μ¬μ©
|
src/api_key_rotator.py
CHANGED
|
@@ -4,6 +4,7 @@ API ν€ λ‘ν
μ΄ν° λͺ¨λ
|
|
| 4 |
"""
|
| 5 |
|
| 6 |
import threading
|
|
|
|
| 7 |
from itertools import count
|
| 8 |
from typing import List
|
| 9 |
|
|
@@ -42,6 +43,27 @@ class ApiKeyRotator:
|
|
| 42 |
with self._lock:
|
| 43 |
index = next(self._counter) % len(self.keys)
|
| 44 |
return self.keys[index]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
|
| 47 |
# μ μ μΈμ€ν΄μ€ (μ±κΈν€ ν¨ν΄)
|
|
|
|
| 4 |
"""
|
| 5 |
|
| 6 |
import threading
|
| 7 |
+
import random
|
| 8 |
from itertools import count
|
| 9 |
from typing import List
|
| 10 |
|
|
|
|
| 43 |
with self._lock:
|
| 44 |
index = next(self._counter) % len(self.keys)
|
| 45 |
return self.keys[index]
|
| 46 |
+
|
| 47 |
+
def pick_key_random(self) -> str:
|
| 48 |
+
"""
|
| 49 |
+
λλ€νκ² ν€λ₯Ό μ νν©λλ€ (Thread-safe)
|
| 50 |
+
|
| 51 |
+
Returns:
|
| 52 |
+
λλ€νκ² μ νλ API ν€
|
| 53 |
+
|
| 54 |
+
Example:
|
| 55 |
+
>>> rotator = ApiKeyRotator(["key1", "key2", "key3"])
|
| 56 |
+
>>> rotator.pick_key_random() # "key2" (λλ€)
|
| 57 |
+
>>> rotator.pick_key_random() # "key1" (λλ€)
|
| 58 |
+
>>> rotator.pick_key_random() # "key3" (λλ€)
|
| 59 |
+
|
| 60 |
+
Note:
|
| 61 |
+
- μ컀 μμ μ 첫 ν€λ₯Ό μ νν λ μ¬μ©νμ¬ λΆνλ₯Ό λΆμ°μν΅λλ€.
|
| 62 |
+
- κ° μ μ /μμ»€κ° μλ‘ λ€λ₯Έ ν€λ‘ μμνμ¬ νΉμ ν€μ λΆνκ° μ§μ€λλ κ²μ λ°©μ§ν©λλ€.
|
| 63 |
+
"""
|
| 64 |
+
with self._lock:
|
| 65 |
+
index = random.randint(0, len(self.keys) - 1)
|
| 66 |
+
return self.keys[index]
|
| 67 |
|
| 68 |
|
| 69 |
# μ μ μΈμ€ν΄μ€ (μ±κΈν€ ν¨ν΄)
|