Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An updated langchain sample #882

Closed
suoko opened this issue Oct 23, 2023 · 2 comments
Closed

An updated langchain sample #882

suoko opened this issue Oct 23, 2023 · 2 comments
Assignees

Comments

@suoko
Copy link

suoko commented Oct 23, 2023

Below I wrote an extended sample for langchain which will import all PDF, TXT, DOCX and HTML files form /home/user/docs folder (it accepts only full paths).
You will need to pip install langchain pypdf chromadb tiktoken docx2txt unstructured

import sys
import os
from langchain.document_loaders import PyPDFLoader
from langchain.document_loaders import Docx2txtLoader
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import UnstructuredHTMLLoader

from langchain.llms import Ollama
ollama = Ollama(base_url='http://localhost:11434', 
model="llama2")
#model="starcoder")



#print(ollama("why is the sky blue"))


documents = []
for file in os.listdir("/home/user/docs"):
    if file.endswith(".pdf"):
        pdf_path = "/home/user/docs/" + file
        loader = PyPDFLoader(pdf_path)
        documents.extend(loader.load())
    elif file.endswith('.docx') or file.endswith('.doc'):
        doc_path = "/home/user/docs/" + file
        loader = Docx2txtLoader(doc_path)
        documents.extend(loader.load())
    elif file.endswith('.txt'):
        text_path = "/home/user/docs/" + file
        loader = TextLoader(text_path)
        documents.extend(loader.load())
    elif file.endswith('.html') or file.endswith('.htm'):
        text_path = "/home/user/docs/" + file
        loader = UnstructuredHTMLLoader(text_path)
        documents.extend(loader.load())


text_splitter = CharacterTextSplitter(chunk_size=1500, chunk_overlap=20)
all_splits = text_splitter.split_documents(documents)

from langchain.embeddings import GPT4AllEmbeddings
from langchain.vectorstores import Chroma
vectorstore = Chroma.from_documents(documents=all_splits, embedding=GPT4AllEmbeddings())

question="in case of problems with the inverter 3PH 10KTL-15KTL-V2, which steps do I have to follow ?"
docs = vectorstore.similarity_search(question)
len(docs)

from langchain.chains import RetrievalQA
qachain=RetrievalQA.from_chain_type(ollama, retriever=vectorstore.as_retriever())
print(qachain({"query": question}))
@jmorganca
Copy link
Member

Hi @suoko. Thanks for creating an issue! Would it be possible to create a PR that updates (preferable if one already exists) or creates a new example in examples/? I'll close this issue for now, but do feel free to create a PR and we can collaborate on it there

Thanks again!

suoko added a commit to suoko/ollama that referenced this issue Oct 25, 2023
@mmenacer
Copy link

Hi,

I'm doing the same here and instead of using a local model, i'm using Ollama Docker in an instance.
from langchain.llms import Ollama

ollama = Ollama(base_url='https://myollamalinkinhosted', 
model="llama2:70b")
)

I have this errors on print(qachain({"query": question}))

File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/base.py", line 312, in __call__
    raise e
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/base.py", line 306, in __call__
    self._call(inputs, run_manager=run_manager)
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/combine_documents/base.py", line 123, in _call
    output, extra_return_dict = self.combine_docs(
                                ^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/combine_documents/stuff.py", line 172, in combine_docs
    return self.llm_chain.predict(callbacks=callbacks, **inputs), {}
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/llm.py", line 293, in predict
    return self(kwargs, callbacks=callbacks)[self.output_key]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/base.py", line 312, in __call__
    raise e
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/base.py", line 306, in __call__
    self._call(inputs, run_manager=run_manager)
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/llm.py", line 103, in _call
    response = self.generate([inputs], run_manager=run_manager)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/chains/llm.py", line 115, in generate
    return self.llm.generate_prompt(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain_core/language_models/llms.py", line 506, in generate_prompt
    return self.generate(prompt_strings, stop=stop, callbacks=callbacks, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain_core/language_models/llms.py", line 656, in generate
    output = self._generate_helper(
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain_core/language_models/llms.py", line 543, in _generate_helper
    raise e
  File "/opt/homebrew/lib/python3.11/site-packages/langchain_core/language_models/llms.py", line 530, in _generate_helper
    self._generate(
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/llms/ollama.py", line 241, in _generate
    final_chunk = super()._stream_with_aggregation(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/llms/ollama.py", line 177, in _stream_with_aggregation
    for stream_resp in self._create_stream(prompt, stop, **kwargs):
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/langchain/llms/ollama.py", line 161, in _create_stream
    optional_detail = response.json().get("error")
                      ^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants