Ошибка типа при объединении Runnables в LangChain: ожидается Runnable, callable или dictPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка типа при объединении Runnables в LangChain: ожидается Runnable, callable или dict

Сообщение Anonymous »


Я работаю с LangChain над созданием системы контроля качества на основе поиска. Однако, когда я пытаюсь связать Runnables в цепочку, я сталкиваюсь с ошибкой типа, которую не могу устранить. Ошибка возникает, когда я пытаюсь использовать | (pipe) для связывания RunnablePassthrough с настраиваемым приглашением и экземпляром ChatOpenAI.

Вот сообщение об ошибке, которое я получаю:

TypeError: Ожидается Runnable, Callable или dict. Вместо этого получен неподдерживаемый тип:

Я обнаружил ошибку в этой части кода:

rag_chain = ( {"context": context, "question": RunnablePassthrough()} | rag_custom_prompt | llm)

Я ожидаю, что RunnablePassthrough() передаст контекст и вопрос на следующий шаг в цепочке, но, похоже, это не удалось во время приведения к Runnable.

Ниже приведен практически весь мой код:

## Конвертируем PDF в TXT защита pdf_to_txt(inst_manuals): текст = "" для руководства в inst_manuals: читатель = PdfReader(inst_manuals) для страницы в read.pages: txt += page.extract_text() вернуть текст ## Преобразование txt в фрагменты защита chunkify_txt(txt): txt_splitter = CharacterTextSplitter( разделитель = "\n", размер_куска = 1000, chunk_overlap = 200, length_function= лен ) куски = txt_splitter.split_text(txt) возвращать куски ## Получение векторного хранилища защита get_vector(куски): вложения = OpenAIEmbeddings() векторное хранилище = FAISS.from_texts(тексты= куски, встраивание = встраивания) возврат векторного магазина ## Получить полезную информацию, аналогичную запросу пользователя Защиту получить (векторное хранилище, вопрос): журналирование.basicConfig() logging.getLogger("langchain.retriers.multi_query").setLevel(logging.INFO) ретривер_from_llm = MultiQueryRetriever.from_llm( ретривер=vectorstore.as_retriever(), llm=ChatOpenAI(температура=0) ) unique_docs = restarter_from_llm.get_relevant_documents(запрос=вопрос) print(f"Количество полученных уникальных документов: {len(unique_docs)}") вернуть уникальные_документы ## Генерация ответа на запрос пользователя def gen_resp(ретривер, вопрос): llm = ChatOpenAI(model_name="gpt-3.5-turbo", температура=0) template = """... [пользовательский шаблон приглашения] ...""" rag_custom_prompt = PromptTemplate.from_template(шаблон) context = "\n".join(doc.page_content для документа в ретривере) rag_chain = ( {"контекст": контекст, "вопрос": RunnablePassthrough()} | rag_custom_prompt | лм ) ответ = rag_chain.invoke(вопрос) обратный ответ Кто-нибудь сталкивался с этим раньше? Есть какие-нибудь предложения о том, как правильно связать эти Runnables или что я делаю неправильно?

Я попытался сделать следующее:

Использование различных ретриверов (подробности о которых могут быть предоставлены по запросу). Я проверил документацию LangChain на предмет правильного использования Runnables и операций цепочки. Я попробовал поменять местами ключи контекста и вопроса в словаре rag_chain, чтобы проверить, не является ли порядок проблемой.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»