Сравнить 2 файла PDF ⇐ Python
-
Гость
Сравнить 2 файла PDF
импортировать поток с подсветкой как st импортировать ОС импортировать временный файл из пути импорта pathlib из pydantic импорта BaseModel, Field импортировать поток, освещенный как st из langchain.chat_models импортировать ChatOpenAI из инструмента импорта langchain.agents из langchain.embeddings.openai импортировать OpenAIEmbeddings из langchain.text_splitter импортировать CharacterTextSplitter из langchain.vectorstores импорт FAISS из langchain.document_loaders импортировать PyPDFLoader из langchain.chains импортировать RetrivalQA из langchain.agents импортировать Initialize_agent импорт опенай os.environ["OPENAI_API_KEY"] = "" os.environ['OPENAI_API_TYPE'] = 'лазурь' os.environ['OPENAI_API_VERSION'] = '2023-03-15-превью' os.environ['OPENAI_API_BASE'] = "https://суммирование" #Настройки API для встраивания openai.api_type = "лазурный" openai.api_base = "https://суммирование" openai.api_version = '2023-03-15-' openai.api_key = "" класс DocumentInput(BaseModel): вопрос: ул = Поле() # Создаём временный каталог в папке скрипта script_dir = Путь(__file__).resolve().parent temp_dir = os.path.join(script_dir, "tempDir") защита основной(): st.title("Сравнение PDF-документов") # Создайте форму для загрузки PDF-файлов и введите вопрос st.write("Загрузите первый PDF-файл:") pdf1 = st.file_uploader("Выберите PDF-файл", type=["pdf"], key="pdf1") st.write("Загрузить второй PDF-файл:") pdf2 = st.file_uploader("Выберите PDF-файл", type=["pdf"], key="pdf2") вопрос = st.text_input("Введите свой вопрос") submit_button = st.button("Сравнить PDF-файлы") если кнопка_отправить: если pdf1 и pdf2: если нет os.path.exists(temp_dir): os.madeirs(temp_dir) еще: # Очистить предыдущее содержимое папки «tempDir» для файла в os.listdir(temp_dir): путь_файла = os.path.join(temp_dir, файл) пытаться: если os.path.isfile(путь_файла): os.unlink(путь_файла) кроме исключения как e: print(f"Ошибка удаления файла: {e}") # Сохраните PDF-файлы в каталоге «tempDir». pdf1_path = os.path.join(temp_dir, pdf1.name) с open(pdf1_path, 'wb') как f: f.write(pdf1.getbuffer()) pdf2_path = os.path.join(temp_dir, pdf2.name) с open(pdf2_path, 'wb') как f: f.write(pdf2.getbuffer()) llm = ChatOpenAI(температура=0, модель="gpt-3.5-turbo",engine="gpt-35-turbo") инструменты = [] файлы = [ { «имя»: pdf1.имя, «путь»: pdf1_path, }, { «имя»: pdf2.имя, «путь»: pdf2_path, }, ] для файла в файлах: загрузчик = PyPDFLoader(файл["путь"]) страницы = loader.load_and_split() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) документы = text_splitter.split_documents(страницы) вложения = OpenAIEmbeddings() ретривер = FAISS.from_documents(документы, вложения).as_retriever() # Обернуть ретриверы в инструмент инструменты.append( Инструмент( args_schema = Ввод документа, name=file["имя"], description=f"полезно, если вы хотите ответить на вопросы о {file['name']}", func=RetrivalQA.from_chain_type(llm=llm, ретривер=ретривер), ) ) агент = инициализировать_агент( инструменты = инструменты, лм = лм, подробный = Правда, ) st.write(агент({"вход": вопрос})) # Теперь у вас есть оба PDF-файла, сохраненные в папке «tempDir». # Вы можете выполнить сравнение PDF здесь если __name__ == "__main__": основной() Я получаю следующую ошибку: pydantic.v1.error_wrappers.ValidationError: 1 ошибка проверки для инструмента args_schema ожидается подкласс BaseModel (type=type_error.subclass; ожидаемый_класс=BaseModel) Я следую примеру из документации langchain: https://python.langchain.com/docs/integ ... on_toolkit
импортировать поток с подсветкой как st импортировать ОС импортировать временный файл из пути импорта pathlib из pydantic импорта BaseModel, Field импортировать поток, освещенный как st из langchain.chat_models импортировать ChatOpenAI из инструмента импорта langchain.agents из langchain.embeddings.openai импортировать OpenAIEmbeddings из langchain.text_splitter импортировать CharacterTextSplitter из langchain.vectorstores импорт FAISS из langchain.document_loaders импортировать PyPDFLoader из langchain.chains импортировать RetrivalQA из langchain.agents импортировать Initialize_agent импорт опенай os.environ["OPENAI_API_KEY"] = "" os.environ['OPENAI_API_TYPE'] = 'лазурь' os.environ['OPENAI_API_VERSION'] = '2023-03-15-превью' os.environ['OPENAI_API_BASE'] = "https://суммирование" #Настройки API для встраивания openai.api_type = "лазурный" openai.api_base = "https://суммирование" openai.api_version = '2023-03-15-' openai.api_key = "" класс DocumentInput(BaseModel): вопрос: ул = Поле() # Создаём временный каталог в папке скрипта script_dir = Путь(__file__).resolve().parent temp_dir = os.path.join(script_dir, "tempDir") защита основной(): st.title("Сравнение PDF-документов") # Создайте форму для загрузки PDF-файлов и введите вопрос st.write("Загрузите первый PDF-файл:") pdf1 = st.file_uploader("Выберите PDF-файл", type=["pdf"], key="pdf1") st.write("Загрузить второй PDF-файл:") pdf2 = st.file_uploader("Выберите PDF-файл", type=["pdf"], key="pdf2") вопрос = st.text_input("Введите свой вопрос") submit_button = st.button("Сравнить PDF-файлы") если кнопка_отправить: если pdf1 и pdf2: если нет os.path.exists(temp_dir): os.madeirs(temp_dir) еще: # Очистить предыдущее содержимое папки «tempDir» для файла в os.listdir(temp_dir): путь_файла = os.path.join(temp_dir, файл) пытаться: если os.path.isfile(путь_файла): os.unlink(путь_файла) кроме исключения как e: print(f"Ошибка удаления файла: {e}") # Сохраните PDF-файлы в каталоге «tempDir». pdf1_path = os.path.join(temp_dir, pdf1.name) с open(pdf1_path, 'wb') как f: f.write(pdf1.getbuffer()) pdf2_path = os.path.join(temp_dir, pdf2.name) с open(pdf2_path, 'wb') как f: f.write(pdf2.getbuffer()) llm = ChatOpenAI(температура=0, модель="gpt-3.5-turbo",engine="gpt-35-turbo") инструменты = [] файлы = [ { «имя»: pdf1.имя, «путь»: pdf1_path, }, { «имя»: pdf2.имя, «путь»: pdf2_path, }, ] для файла в файлах: загрузчик = PyPDFLoader(файл["путь"]) страницы = loader.load_and_split() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) документы = text_splitter.split_documents(страницы) вложения = OpenAIEmbeddings() ретривер = FAISS.from_documents(документы, вложения).as_retriever() # Обернуть ретриверы в инструмент инструменты.append( Инструмент( args_schema = Ввод документа, name=file["имя"], description=f"полезно, если вы хотите ответить на вопросы о {file['name']}", func=RetrivalQA.from_chain_type(llm=llm, ретривер=ретривер), ) ) агент = инициализировать_агент( инструменты = инструменты, лм = лм, подробный = Правда, ) st.write(агент({"вход": вопрос})) # Теперь у вас есть оба PDF-файла, сохраненные в папке «tempDir». # Вы можете выполнить сравнение PDF здесь если __name__ == "__main__": основной() Я получаю следующую ошибку: pydantic.v1.error_wrappers.ValidationError: 1 ошибка проверки для инструмента args_schema ожидается подкласс BaseModel (type=type_error.subclass; ожидаемый_класс=BaseModel) Я следую примеру из документации langchain: https://python.langchain.com/docs/integ ... on_toolkit
Полная версия