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()
|