Ki-Seki commited on
Commit
652b4e6
Β·
1 Parent(s): 94742c1

feat: api_key pool

Browse files
Files changed (2) hide show
  1. app.py +4 -3
  2. autotab.py +11 -3
app.py CHANGED
@@ -15,7 +15,7 @@ def auto_tabulator_completion(
15
  generation_config: dict,
16
  request_interval: float,
17
  save_every: int,
18
- api_key: str,
19
  base_url: str,
20
  ) -> tuple[str, str, str, pd.DataFrame]:
21
  output_file_name = "ouput.xlsx"
@@ -28,7 +28,7 @@ def auto_tabulator_completion(
28
  generation_config=json.loads(generation_config),
29
  request_interval=request_interval,
30
  save_every=save_every,
31
- api_key=api_key,
32
  base_url=base_url,
33
  )
34
  start = time.time()
@@ -54,7 +54,8 @@ inputs = [
54
  gr.Slider(value=0.1, minimum=0, maximum=10, label="Request Interval in Seconds"),
55
  gr.Slider(value=100, minimum=1, maximum=1000, step=1, label="Save Every N Steps"),
56
  gr.Textbox(
57
- value="sk-exhahhjfqyanmwewndukcqtrpegfdbwszkjucvcpajdufiah", label="API Key"
 
58
  ),
59
  gr.Textbox(value="https://public-beta-api.siliconflow.cn/v1", label="Base URL"),
60
  ]
 
15
  generation_config: dict,
16
  request_interval: float,
17
  save_every: int,
18
+ str_api_keys: str,
19
  base_url: str,
20
  ) -> tuple[str, str, str, pd.DataFrame]:
21
  output_file_name = "ouput.xlsx"
 
28
  generation_config=json.loads(generation_config),
29
  request_interval=request_interval,
30
  save_every=save_every,
31
+ api_keys=str_api_keys.split(),
32
  base_url=base_url,
33
  )
34
  start = time.time()
 
54
  gr.Slider(value=0.1, minimum=0, maximum=10, label="Request Interval in Seconds"),
55
  gr.Slider(value=100, minimum=1, maximum=1000, step=1, label="Save Every N Steps"),
56
  gr.Textbox(
57
+ value="sk-exhahhjfqyanmwewndukcqtrpegfdbwszkjucvcpajdufiah",
58
+ label="API Key(s). One per line.",
59
  ),
60
  gr.Textbox(value="https://public-beta-api.siliconflow.cn/v1", label="Base URL"),
61
  ]
autotab.py CHANGED
@@ -19,7 +19,7 @@ class AutoTab:
19
  generation_config: dict,
20
  request_interval: float,
21
  save_every: int,
22
- api_key: str,
23
  base_url: str,
24
  ):
25
  self.in_file_path = in_file_path
@@ -30,8 +30,9 @@ class AutoTab:
30
  self.generation_config = generation_config
31
  self.request_interval = request_interval
32
  self.save_every = save_every
33
- self.api_key = api_key
34
  self.base_url = base_url
 
35
 
36
  # ─── IO ───────────────────────────────────────────────────────────────
37
 
@@ -47,8 +48,15 @@ class AutoTab:
47
  @retry(wait=wait_random_exponential(min=20, max=60), stop=stop_after_attempt(6))
48
  def openai_request(self, query: str) -> str:
49
  """Make a request to an OpenAI-format API."""
 
 
50
  time.sleep(self.request_interval)
51
- client = openai.OpenAI(api_key=self.api_key, base_url=self.base_url)
 
 
 
 
 
52
  response = client.chat.completions.create(
53
  model=self.model_name,
54
  messages=[{"role": "user", "content": query}],
 
19
  generation_config: dict,
20
  request_interval: float,
21
  save_every: int,
22
+ api_keys: list[str],
23
  base_url: str,
24
  ):
25
  self.in_file_path = in_file_path
 
30
  self.generation_config = generation_config
31
  self.request_interval = request_interval
32
  self.save_every = save_every
33
+ self.api_keys = api_keys
34
  self.base_url = base_url
35
+ self.request_count = 0
36
 
37
  # ─── IO ───────────────────────────────────────────────────────────────
38
 
 
48
  @retry(wait=wait_random_exponential(min=20, max=60), stop=stop_after_attempt(6))
49
  def openai_request(self, query: str) -> str:
50
  """Make a request to an OpenAI-format API."""
51
+
52
+ # Wait for the request interval
53
  time.sleep(self.request_interval)
54
+
55
+ # Increment the request count
56
+ api_key = self.api_keys[self.request_count % len(self.api_keys)]
57
+ self.request_count += 1
58
+
59
+ client = openai.OpenAI(api_key=api_key, base_url=self.base_url)
60
  response = client.chat.completions.create(
61
  model=self.model_name,
62
  messages=[{"role": "user", "content": query}],