davideuler
commited on
Commit
·
7c278e2
1
Parent(s):
57c2b26
fix for api_base, better user interaction
Browse files- deep_translator/openai_compatible.py +1 -2
- pdf_translator_web.py +29 -11
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 |
-
|
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 |
-
#
|
274 |
-
|
|
|
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 |
-
#
|
297 |
-
|
298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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(
|
|
|
|
|
|
|
|
|
|
|
|
|
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(
|
|
|
|
|
|
|
|
|
|
|
|
|
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()
|