ШаблонChatPrompt не работает с PyDantic

Вопрос или проблема

Я использовал этот код с 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.

Вот некоторые шаги и изменения, которые могут помочь решить вашу проблему:

  1. Проверка документации: Первым делом проверьте официальную документацию к версии 0.1.12, чтобы убедиться, какая функциональность поддерживается и как она используется.

  2. Изменение использования with_structured_output: Возможно, в 0.1.12 метод with_structured_output принимает не класс Sentences, а более простой аргумент – например, None или другую структуру. Вы можете попробовать убрать аргумент или передать его в другом формате.

  3. Измените работу с ChatPromptTemplate: В более старых версиях может потребоваться другой способ создания шаблонов. Например:

    propositioning_prompt = ChatPromptTemplate(system=system_string, human="Decompose the following: {input}")
  4. Пример исправленного кода:

    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
  5. Тестирование: Проверьте работу вашего кода после внесения изменений. Если возникает новая ошибка, обязательно посмотрите сообщения об ошибках, чтобы понять, что может быть не так.

Если указанные шаги не помогли, постарайтесь обратиться к сообществу разработчиков или форумам, связанным с langchain, так как другие пользователи могли столкнуться с аналогичными проблемами.

Оцените материал
Добавить комментарий

Капча загружается...