code: from langchain.vectorstores import Chroma
  from langchain.embeddings import OpenAIEmbeddings
  from langchain.text_splitter import RecursiveCharacterTextSplitter
  from langchain.llms import OpenAI
  from langchain.chains import VectorDBQA
  from langchain.document_loaders import TextLoader
  from typing import List
  from langchain.schema import Document
  import os
  
  
  os.environ['OPENAI_API_KEY'] = "your-api-key"
  
  class Genie:
  
      def __init__(self, file_path: str):
          self.file_path = file_path
          self.loader = TextLoader(self.file_path)
          self.documents = self.loader.load()
          self.texts = self.text_split(self.documents)
          self.vectordb = self.embeddings(self.texts)
          self.genie = VectorDBQA.from_chain_type(llm=OpenAI(), chain_type="stuff", vectorstore=self.vectordb)
  
      @staticmethod
      def text_split(documents: TextLoader):
          text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
          texts = text_splitter.split_documents(documents)
          return texts
  
      @staticmethod
      def embeddings(texts: List[Document]):
          embeddings = OpenAIEmbeddings()
          vectordb = Chroma.from_documents(texts, embeddings)
          return vectordb
  
      def ask(self, query: str):
          return self.genie.run(query)
  
  
  if __name__ == "__main__":
      genie = Genie("example.txt")
      print(genie.ask("How is the wheater like?"))
apis: langchain.vectorstores.Chroma.from_documents langchain.text_splitter.RecursiveCharacterTextSplitter langchain.llms.OpenAI langchain.embeddings.OpenAIEmbeddings langchain.document_loaders.TextLoader
extract_api: [((515, 541), 'langchain.document_loaders.TextLoader', 'TextLoader', (['self.file_path'], {}), '(self.file_path)\n', (525, 541), False, 'from langchain.document_loaders import TextLoader\n'), ((886, 950), 'langchain.text_splitter.RecursiveCharacterTextSplitter', 'RecursiveCharacterTextSplitter', ([], {'chunk_size': '(1000)', 'chunk_overlap': '(0)'}), '(chunk_size=1000, chunk_overlap=0)\n', (916, 950), False, 'from langchain.text_splitter import RecursiveCharacterTextSplitter\n'), ((1112, 1130), 'langchain.embeddings.OpenAIEmbeddings', 'OpenAIEmbeddings', ([], {}), '()\n', (1128, 1130), False, 'from langchain.embeddings import OpenAIEmbeddings\n'), ((1150, 1190), 'langchain.vectorstores.Chroma.from_documents', 'Chroma.from_documents', (['texts', 'embeddings'], {}), '(texts, embeddings)\n', (1171, 1190), False, 'from langchain.vectorstores import Chroma\n'), ((743, 751), 'langchain.llms.OpenAI', 'OpenAI', ([], {}), '()\n', (749, 751), False, 'from langchain.llms import OpenAI\n')]