Поисковая расширенная генерация для ответов на вопросы - langchain ⇐ Python
-
Anonymous
Поисковая расширенная генерация для ответов на вопросы - langchain
Я пытаюсь создать приложение с использованиемstreamlit, в котором бот сможет давать ответы пользователям на основе содержимого CSV-файла.
Я новичок в работе с LangChain, и у меня есть несколько вопросов относительно поиска документов. В файле «embeddings.py» я создал векторную базу, содержащую вложения для файла CSV. Каждая строка в CSV представляет собой достопримечательность, поэтому я разделил данные по каждой строке. Целью здесь является то, чтобы мой бот генерировал ответы на основе информации в файле CSV.
из langchain.vectorstores импортировать FAISS из langchain.embeddings импортировать HuggingFaceEmbeddings из langchain.text_splitter импортировать CharacterTextSplitter из langchain.document_loaders.csv_loader импортировать CSVLoader DB_FAISS_PATH = "vectorstore/db_faiss" loader = CSVLoader(file_path="./data/cleanTripLisbon.csv",coding="utf-8", csv_args={'delimiter': ','}) данные = загрузчик.загрузка() text_splitter = CharacterTextSplitter(separator='\\n') text_chunks = text_splitter.split_documents(данные) embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2') docsearch = FAISS.from_documents(text_chunks, embeddings) docsearch.save_local(DB_FAISS_PATH) В файлеchat_bot.py у меня есть реализация моего бота.
из утилиты import local_settings из openai импорт OpenAI класс GPT_Helper: def __init__(self, OPENAI_API_KEY: ул, system_behavior: str="", модель="gpt-3.5-турбо", ): self.client = OpenAI(api_key=OPENAI_API_KEY) self.messages = \[\] self.model = модель если системное_поведение: self.messages.append({ "роль": "система", «контент»: system_behavior }) Защиту get_completion (сам, подсказка, температура = 0): self.messages.append({"role": "пользователь", "content": приглашение}) завершение = self.client.chat.completions.create( модель = self.model, сообщения = self.messages, температура = температура, ) self.messages.append( { "роль": "помощник", «содержание»: завершение.выборы[0].message.content } ) вернуть завершение.выбор[0].message.content класс AttractionBot: def __init__(self, system_behavior: str): self._system_behavior = system_behavior self._username = None # Добавьте приватный атрибут для хранения имени пользователя. self.engine = GPT_Helper( OPENAI_API_KEY=local_settings.OPENAI_API_KEY, system_behavior=system_behavior ) Защиту set_username(я, имя пользователя): self._username = имя пользователя defgenerate_response(self, message: str): # Включите имя пользователя в сообщение, если оно доступно user_message = f"{self._username}: {message}" if self._username else message # Генерируем ответ, используя языковую модель ответ = self.engine.get_completion(user_message) обратный ответ сброс защиты (сам): ... @свойство память защиты (собственная): вернуть self.engine.messages @свойство защита system_behavior (сам): вернуть self._system_behavior @system_behavior.setter Защиту system_behavior (self, system_config: str): self._system_behavior = system_config Мой самый большой вопрос: как заставить бота получать информацию из этого CSV-файла? Я знаю, что мне может понадобиться использовать docsearch.as_retriever, но не знаю, где...
Я пытаюсь создать приложение с использованиемstreamlit, в котором бот сможет давать ответы пользователям на основе содержимого CSV-файла.
Я новичок в работе с LangChain, и у меня есть несколько вопросов относительно поиска документов. В файле «embeddings.py» я создал векторную базу, содержащую вложения для файла CSV. Каждая строка в CSV представляет собой достопримечательность, поэтому я разделил данные по каждой строке. Целью здесь является то, чтобы мой бот генерировал ответы на основе информации в файле CSV.
из langchain.vectorstores импортировать FAISS из langchain.embeddings импортировать HuggingFaceEmbeddings из langchain.text_splitter импортировать CharacterTextSplitter из langchain.document_loaders.csv_loader импортировать CSVLoader DB_FAISS_PATH = "vectorstore/db_faiss" loader = CSVLoader(file_path="./data/cleanTripLisbon.csv",coding="utf-8", csv_args={'delimiter': ','}) данные = загрузчик.загрузка() text_splitter = CharacterTextSplitter(separator='\\n') text_chunks = text_splitter.split_documents(данные) embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2') docsearch = FAISS.from_documents(text_chunks, embeddings) docsearch.save_local(DB_FAISS_PATH) В файлеchat_bot.py у меня есть реализация моего бота.
из утилиты import local_settings из openai импорт OpenAI класс GPT_Helper: def __init__(self, OPENAI_API_KEY: ул, system_behavior: str="", модель="gpt-3.5-турбо", ): self.client = OpenAI(api_key=OPENAI_API_KEY) self.messages = \[\] self.model = модель если системное_поведение: self.messages.append({ "роль": "система", «контент»: system_behavior }) Защиту get_completion (сам, подсказка, температура = 0): self.messages.append({"role": "пользователь", "content": приглашение}) завершение = self.client.chat.completions.create( модель = self.model, сообщения = self.messages, температура = температура, ) self.messages.append( { "роль": "помощник", «содержание»: завершение.выборы[0].message.content } ) вернуть завершение.выбор[0].message.content класс AttractionBot: def __init__(self, system_behavior: str): self._system_behavior = system_behavior self._username = None # Добавьте приватный атрибут для хранения имени пользователя. self.engine = GPT_Helper( OPENAI_API_KEY=local_settings.OPENAI_API_KEY, system_behavior=system_behavior ) Защиту set_username(я, имя пользователя): self._username = имя пользователя defgenerate_response(self, message: str): # Включите имя пользователя в сообщение, если оно доступно user_message = f"{self._username}: {message}" if self._username else message # Генерируем ответ, используя языковую модель ответ = self.engine.get_completion(user_message) обратный ответ сброс защиты (сам): ... @свойство память защиты (собственная): вернуть self.engine.messages @свойство защита system_behavior (сам): вернуть self._system_behavior @system_behavior.setter Защиту system_behavior (self, system_config: str): self._system_behavior = system_config Мой самый большой вопрос: как заставить бота получать информацию из этого CSV-файла? Я знаю, что мне может понадобиться использовать docsearch.as_retriever, но не знаю, где...
Мобильная версия