В настоящее время я пытаюсь использовать модели Helsinki-NLP/opus-mt-en-de и de-en. Я пытался настроить конвейер и использовать оба как LLMChain, но постоянно получаю ту же ошибку:
ValueError: The following `model_kwargs` are not used by the model: ['pipeline_kwargs', 'return_full_text'] (note: typos in the generate arguments will also show up in this list)
Я использовал следующий фрагмент для инициализации обеих моделей, а затем запустил его, чтобы проверить результат:
def get_translation_chains():
_de_en_translation_prompt = PromptTemplate.from_template(
"""Translate the following text from German to English:
{text}
"""
)
_en_de_translation_prompt = PromptTemplate.from_template(
"""Translate the following text from English to German:
{text}
"""
)
_en_to_de_tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-de")
_en_to_de_model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-de")
_de_to_en_tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-de-en")
_de_to_en_model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-de-en")
_en_to_de_pipeline = pipeline(
model=_en_to_de_model,
tokenizer=_en_to_de_tokenizer,
task = "translation",
)
_de_to_en_pipeline = pipeline(
model=_de_to_en_model,
tokenizer=_de_to_en_tokenizer,
task = "translation",
)
_de_to_en_llm = HuggingFacePipeline(pipeline=_de_to_en_pipeline)
_en_to_de_llm = HuggingFacePipeline(pipeline=_en_to_de_pipeline)
_de_to_en_chain = LLMChain(
prompt=_de_en_translation_prompt,
llm=_de_to_en_llm,
)
_en_to_de_chain = LLMChain(
prompt=_en_de_translation_prompt,
llm=_en_to_de_llm,
)
return _en_to_de_chain, _de_to_en_chain
en_to_de_chain, de_to_en_pipeline = get_translation_chains()
print(en_to_de_chain.invoke({"text": "Hello, how are you?"}))
Я новичок в использовании LLM, а также библиотек Huggingface и Langchain и не смог найти ничего, что могло бы дать мне подсказку по этому вопросу.
Я пытался использовать конвейер, устанавливая только нужную мне задачу «translation_de_to_en» и наоборот, а также используя «перевод» только для конвейера по умолчанию и для более подробного конвейера. Я также пытался установить для параметра kwargs значения None и False, но безуспешно.





Ваш код не содержит ошибок.
Причина ошибки в том, что начиная с версии 0.0.28 из langchain-community, только задачи
text2text-generationtext-generationsummarizationподдерживаются HuggingFacePipeline.
Ваша задача — translation, которая пока не поддерживается.
Что касается причины возникновения ошибки, Langchain передает аргумент return_full_text (см. это, строка 264) базовой модели HuggingFace. Однако MarianMTModel (модель, которую вы используете) не принимает это в качестве параметра.
Лучше использовать базовую модель HuggingFace напрямую. Это самое простое решение.
translation = _en_to_de_pipeline("Hello, how are you?")
print(translation)
Выход
[{'translation_text': "Hallo, wie geht's?"}]
Он возвращается без ошибок.
Начиная с этого коммита я также добавил поддержку перевода.