у меня есть 3 файла: ai.py, main.py, main1.py
в ai.py запускается модель ИИ и хранится в переменной, так же там прописана функция вызова ИИ и обработки сообщения.
main.py и main1.py идентичны, main.py - главная программа, main1.py - программа для тестов новых функций
Мне нужно сделать так, чтобы файл ai.py работал отдельно и был запущен, а main.py и main1.py вызывали эту функцию, и получали значение return
я получаю доступ к функции из ai.py путем импорта from ai import translate
и получается так, что модель ИИ все равно загружается в оперативную память программы main.py
Модель ИИ занимает много оперативной памяти на сервере, и я не могу одновременно запустить две модели. Мне нужно чтобы основная программа и программа для тестов работали на одной модели ИИ.
как сделать так, чтобы ai.py работал отдельно, а main.py и main1.py вызывали функцию transalte без импорта самой модели в свой файл.
код ai.py (пример)
# Библиотеки для ИИ
import ctranslate2
import transformers
# Подключение ИИ
translator = ctranslate2.Translator("ctranslate2")
tokenizer = transformers.AutoTokenizer.from_pretrained(".....")
tgt_lang="zu"
async def translate(text, num_beams=4, num_return_sequences=4):
num_return_sequences = min(num_return_sequences, num_beams)
source = tokenizer.convert_ids_to_tokens(tokenizer.encode(text))
target_prefix = [tokenizer.lang_code_to_token[tgt_lang]]
results = translator.translate_batch(
[source],
target_prefix=[target_prefix],
beam_size=num_beams,
num_hypotheses=num_return_sequences
)
translations = []
for hypothesis in results[0].hypotheses:
target = hypothesis[1:]
decoded_sentence = tokenizer.decode(tokenizer.convert_tokens_to_ids(target))
translations.append(decoded_sentence)
return translations
код main.py (пример)
from ai import translate
while True:
text=input("Введите текст>>> ")
print(f'перевод {translate(text)}')