Вопрос или проблема
Я использовал этот код с langchain 0.2.8, и он работал нормально. Мне нужно перенести код в новую среду, где я ограничен использованием langchain 0.1.12. Когда я запускаю этот код в новой среде, я постоянно получаю ошибку, что .init принимает 1 позиционный аргумент, но 2 были предоставлены. Ошибка возникает на этой строке -> propositioning_llm = self.llm.with_structured_output(Sentences).
Есть ли какой-либо другой синтаксис, который мне нужно использовать для langchain 0.1.12?
system_string = """
[ЭТО СОДЕРЖИТ УКАЗАНИЯ О ТОМ, ЧТО ДОЛЖЕН ДЕЛАТЬ СИСТЕМА]
"""
propositioning_prompt = ChatPromptTemplate([
("system", system_string),
("human", "Разделите следующее: {input}"),
])
class Sentences(BaseModel):
sentences: list[str]
propositioning_llm = self.llm.with_structured_output(Sentences)
propositioning_chain = propositioning_prompt | propositioning_llm
if len(paragraph.lstrip()) > 5:
sentences = propositioning_chain.invoke(paragraph)
returned_list = sentences.sentences
return returned_list
Ответ или решение
Данная проблема возникает из-за несовместимости версий langchain
, так как вы переходите с 0.2.8
на 0.1.12
. В более ранних версиях библиотеки могли отсутствовать определенные функции или измениться их синтаксис.
Ошибка "init takes 1 positional argument but 2 were provided" указывает на то, что метод with_structured_output
, возможно, требует другого количества аргументов (или они должны быть переданы иначе) в версии 0.1.12
.
Вот некоторые шаги и изменения, которые могут помочь решить вашу проблему:
-
Проверка документации: Первым делом проверьте официальную документацию к версии
0.1.12
, чтобы убедиться, какая функциональность поддерживается и как она используется. -
Изменение использования
with_structured_output
: Возможно, в0.1.12
методwith_structured_output
принимает не классSentences
, а более простой аргумент – например,None
или другую структуру. Вы можете попробовать убрать аргумент или передать его в другом формате. -
Измените работу с
ChatPromptTemplate
: В более старых версиях может потребоваться другой способ создания шаблонов. Например:propositioning_prompt = ChatPromptTemplate(system=system_string, human="Decompose the following: {input}")
-
Пример исправленного кода:
system_string = """ [ЭТО СОДЕРЖИТ ИНСТРУКЦИИ О ТОМ, ЧТО ДОЛЖЕН ДЕЛАТЬ СИСТЕМА] """ propositioning_prompt = ChatPromptTemplate(system=system_string, human="Decompose the following: {input}") class Sentences(BaseModel): sentences: list[str] # Попробуйте использовать with_structured_output без аргумента propositioning_llm = self.llm.with_structured_output() # Или с другим необходимым аргументом propositioning_chain = propositioning_prompt | propositioning_llm if len(paragraph.lstrip()) > 5: sentences = propositioning_chain.invoke(paragraph) returned_list = sentences.sentences return returned_list
-
Тестирование: Проверьте работу вашего кода после внесения изменений. Если возникает новая ошибка, обязательно посмотрите сообщения об ошибках, чтобы понять, что может быть не так.
Если указанные шаги не помогли, постарайтесь обратиться к сообществу разработчиков или форумам, связанным с langchain
, так как другие пользователи могли столкнуться с аналогичными проблемами.