davideuler commited on
Commit
7c278e2
·
1 Parent(s): 57c2b26

fix for api_base, better user interaction

Browse files
deep_translator/openai_compatible.py CHANGED
@@ -23,8 +23,7 @@ class OpenAICompatibleTranslator(ChatGptTranslator):
23
 
24
  for attempt in range(self.retry_count):
25
  try:
26
- api_base = os.environ["OPENAI_API_BASE"]
27
- logging.info(f"Request OpenAI compatible api, base_url: {api_base}")
28
  return super().translate(text, **kwargs)
29
  except json.JSONDecodeError:
30
  logging.warn(f"Translation API response JSONDecodeError, will retry later...")
 
23
 
24
  for attempt in range(self.retry_count):
25
  try:
26
+ logging.info(f"Request OpenAI compatible api, base_url: {self.base_url}")
 
27
  return super().translate(text, **kwargs)
28
  except json.JSONDecodeError:
29
  logging.warn(f"Translation API response JSONDecodeError, will retry later...")
pdf_translator_web.py CHANGED
@@ -17,8 +17,8 @@ DEFAULT_API_BASE = "http://localhost:8080/v1"
17
 
18
  # Supported translators
19
  TRANSLATORS = {
20
- 'OpenAI': OpenAICompatibleTranslator,
21
  'OpenAI Compatible': OpenAICompatibleTranslator,
 
22
  'google': GoogleTranslator,
23
  }
24
 
@@ -270,14 +270,14 @@ def main():
270
  index=0
271
  )
272
 
273
- # Only show API key input if not set in environment
274
- if not os.getenv("OPENAI_API_KEY"):
 
275
  api_key = st.text_input(
276
  "API Key",
277
- value="",
278
  type="password"
279
  )
280
- os.environ["OPENAI_API_KEY"] = api_key
281
 
282
  # Different default API base for OpenAI and OpenAI Compatible
283
  default_base = "https://api.openai.com/v1" if translator_name == 'OpenAI' else DEFAULT_API_BASE
@@ -293,9 +293,15 @@ def main():
293
  value=os.getenv("OPENAI_MODEL", default_model)
294
  )
295
 
296
- # Update environment variables
297
- os.environ["OPENAI_API_BASE"] = api_base
298
- os.environ["OPENAI_MODEL"] = model
 
 
 
 
 
 
299
  target_lang = LANGUAGE_OPTIONS[target_lang]
300
  else:
301
  # For Google Translator, show target language selection
@@ -338,9 +344,15 @@ def main():
338
  with col2:
339
  st.header("Translated")
340
 
341
- # Configure translator with selected source language
342
  TranslatorClass = TRANSLATORS[translator_name]
343
- translator = TranslatorClass(source=source_lang, target=target_lang)
 
 
 
 
 
 
344
 
345
  # Translate current batch of pages
346
  translated_pages = translate_pdf_pages(
@@ -392,7 +404,13 @@ def main():
392
  use_container_width=True):
393
  # Configure translator
394
  TranslatorClass = TRANSLATORS[translator_name]
395
- translator = TranslatorClass(source=source_lang, target=target_lang)
 
 
 
 
 
 
396
 
397
  # Translate all pages
398
  output_doc = pymupdf.open()
 
17
 
18
  # Supported translators
19
  TRANSLATORS = {
 
20
  'OpenAI Compatible': OpenAICompatibleTranslator,
21
+ 'OpenAI': OpenAICompatibleTranslator,
22
  'google': GoogleTranslator,
23
  }
24
 
 
270
  index=0
271
  )
272
 
273
+ # Get API key from environment or user input
274
+ api_key = os.getenv("OPENAI_API_KEY", "")
275
+ if not api_key:
276
  api_key = st.text_input(
277
  "API Key",
278
+ value="sk-xxx",
279
  type="password"
280
  )
 
281
 
282
  # Different default API base for OpenAI and OpenAI Compatible
283
  default_base = "https://api.openai.com/v1" if translator_name == 'OpenAI' else DEFAULT_API_BASE
 
293
  value=os.getenv("OPENAI_MODEL", default_model)
294
  )
295
 
296
+ # Store API settings in session state
297
+ if 'api_settings' not in st.session_state:
298
+ st.session_state.api_settings = {}
299
+ st.session_state.api_settings.update({
300
+ 'api_key': api_key,
301
+ 'api_base': api_base,
302
+ 'model': model
303
+ })
304
+
305
  target_lang = LANGUAGE_OPTIONS[target_lang]
306
  else:
307
  # For Google Translator, show target language selection
 
344
  with col2:
345
  st.header("Translated")
346
 
347
+ # Configure translator with selected source language and API settings
348
  TranslatorClass = TRANSLATORS[translator_name]
349
+ translator = TranslatorClass(
350
+ source=source_lang,
351
+ target=target_lang,
352
+ api_key=st.session_state.api_settings.get('api_key'),
353
+ base_url=st.session_state.api_settings.get('api_base'),
354
+ model=st.session_state.api_settings.get('model')
355
+ )
356
 
357
  # Translate current batch of pages
358
  translated_pages = translate_pdf_pages(
 
404
  use_container_width=True):
405
  # Configure translator
406
  TranslatorClass = TRANSLATORS[translator_name]
407
+ translator = TranslatorClass(
408
+ source=source_lang,
409
+ target=target_lang,
410
+ api_key=st.session_state.api_settings.get('api_key'),
411
+ base_url=st.session_state.api_settings.get('api_base'),
412
+ model=st.session_state.api_settings.get('model')
413
+ )
414
 
415
  # Translate all pages
416
  output_doc = pymupdf.open()