plate.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from langchain_community.llms import Ollama
  2. from langchain_community.embeddings import OllamaEmbeddings
  3. from langchain.prompts import ChatPromptTemplate
  4. from langchain_core.output_parsers import StrOutputParser
  5. from langchain_community.document_loaders.image import UnstructuredImageLoader
  6. from langchain.chains.combine_documents import create_stuff_documents_chain
  7. from langchain_community.vectorstores import Chroma
  8. from langchain.chains import create_retrieval_chain
  9. from langchain.text_splitter import RecursiveCharacterTextSplitter
  10. MODEL = "llava"
  11. prompt = ChatPromptTemplate.from_template(
  12. """
  13. Answer only based on the following provided context. If you know the answer but it's not based in the
  14. provided context, don't provide the answer, just state the answer is not in the context provided:
  15. <context>
  16. {context}
  17. </context>
  18. User: {input}
  19. """
  20. )
  21. llm = Ollama(model=MODEL)
  22. loader = UnstructuredImageLoader("img/plate_2.jpeg")
  23. data = loader.load()
  24. text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=100)
  25. chunks = text_splitter.split_documents(data)
  26. vector = Chroma.from_documents(data, OllamaEmbeddings())
  27. retriever = vector.as_retriever()
  28. output_parser = StrOutputParser()
  29. document_chain = create_stuff_documents_chain(llm, prompt, output_parser=output_parser)
  30. retrieval_chain = create_retrieval_chain(retriever, document_chain)
  31. response = retrieval_chain.invoke({
  32. "input": """
  33. Estás viendo la imagen de un vehículo, intenta identificar la placa del vehículo
  34. """
  35. })
  36. print(response["answer"])