Skip to content

Commit 7c278e2

Browse files
author
davideuler
committed
fix for api_base, better user interaction
1 parent 57c2b26 commit 7c278e2

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

deep_translator/openai_compatible.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ def translate(self, text: str, **kwargs) -> str:
2323

2424
for attempt in range(self.retry_count):
2525
try:
26-
api_base = os.environ["OPENAI_API_BASE"]
27-
logging.info(f"Request OpenAI compatible api, base_url: {api_base}")
26+
logging.info(f"Request OpenAI compatible api, base_url: {self.base_url}")
2827
return super().translate(text, **kwargs)
2928
except json.JSONDecodeError:
3029
logging.warn(f"Translation API response JSONDecodeError, will retry later...")

pdf_translator_web.py

+29-11
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
# Supported translators
1919
TRANSLATORS = {
20-
'OpenAI': OpenAICompatibleTranslator,
2120
'OpenAI Compatible': OpenAICompatibleTranslator,
21+
'OpenAI': OpenAICompatibleTranslator,
2222
'google': GoogleTranslator,
2323
}
2424

@@ -270,14 +270,14 @@ def main():
270270
index=0
271271
)
272272

273-
# Only show API key input if not set in environment
274-
if not os.getenv("OPENAI_API_KEY"):
273+
# Get API key from environment or user input
274+
api_key = os.getenv("OPENAI_API_KEY", "")
275+
if not api_key:
275276
api_key = st.text_input(
276277
"API Key",
277-
value="",
278+
value="sk-xxx",
278279
type="password"
279280
)
280-
os.environ["OPENAI_API_KEY"] = api_key
281281

282282
# Different default API base for OpenAI and OpenAI Compatible
283283
default_base = "https://api.openai.com/v1" if translator_name == 'OpenAI' else DEFAULT_API_BASE
@@ -293,9 +293,15 @@ def main():
293293
value=os.getenv("OPENAI_MODEL", default_model)
294294
)
295295

296-
# Update environment variables
297-
os.environ["OPENAI_API_BASE"] = api_base
298-
os.environ["OPENAI_MODEL"] = model
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+
299305
target_lang = LANGUAGE_OPTIONS[target_lang]
300306
else:
301307
# For Google Translator, show target language selection
@@ -338,9 +344,15 @@ def main():
338344
with col2:
339345
st.header("Translated")
340346

341-
# Configure translator with selected source language
347+
# Configure translator with selected source language and API settings
342348
TranslatorClass = TRANSLATORS[translator_name]
343-
translator = TranslatorClass(source=source_lang, target=target_lang)
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+
)
344356

345357
# Translate current batch of pages
346358
translated_pages = translate_pdf_pages(
@@ -392,7 +404,13 @@ def main():
392404
use_container_width=True):
393405
# Configure translator
394406
TranslatorClass = TRANSLATORS[translator_name]
395-
translator = TranslatorClass(source=source_lang, target=target_lang)
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+
)
396414

397415
# Translate all pages
398416
output_doc = pymupdf.open()

0 commit comments

Comments
 (0)