■ ChatOllama 클래스를 사용해 이미지를 텍스트로 설명하는 방법을 보여준다. (bakllava:latest 모델)
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import base64 from langchain.schema.messages import HumanMessage from langchain_ollama import ChatOllama def getBASE64StringFromFile(filePath): with open(filePath, "rb") as bufferedReader: imageBytes = bufferedReader.read() base64Bytes = base64.b64encode(imageBytes) base64String = base64Bytes.decode("utf-8") return base64String imageBASE64String = getBASE64StringFromFile("GrandTetons.jpg") humanMessage = HumanMessage( content = [ { "type" : "text", "text" : "Please describe the image in detail." }, { "type" : "image_url", "image_url" : {"url" : f"data:image/jpeg;base64,{imageBASE64String}"} } ] ) chatOllama = ChatOllama(model = "bakllava:latest", temperature = 0) responseAIMessage = chatOllama.invoke([humanMessage]) print(responseAIMessage.content) """ The image features a picturesque landscape with a mountain range as the main focus. There are several large mountains covered in snow, towering above the surrounding trees. The majestic peak of Mount Everest can be seen among them, making it an impressive sight to behold. In addition to the mountains, the scene is adorned with numerous pine trees scattered throughout the foreground and mid-ground, creating a serene and natural atmosphere. Overall, the image captures the beauty of the mountain range and the surrounding forest, offering a breathtaking view for those who appreciate nature's grandeur. """ |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
aiohappyeyeballs==2.4.4 aiohttp==3.11.11 aiosignal==1.3.2 annotated-types==0.7.0 anyio==4.8.0 async-timeout==4.0.3 attrs==24.3.0 certifi==2024.12.14 charset-normalizer==3.4.1 exceptiongroup==1.2.2 frozenlist==1.5.0 greenlet==3.1.1 h11==0.14.0 httpcore==1.0.7 httpx==0.27.2 idna==3.10 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.14 langchain-core==0.3.29 langchain-ollama==0.2.2 langchain-text-splitters==0.3.5 langsmith==0.2.10 multidict==6.1.0 numpy==1.26.4 ollama==0.4.5 orjson==3.10.14 packaging==24.2 propcache==0.2.1 pydantic==2.10.5 pydantic_core==2.27.2 PyYAML==6.0.2 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 SQLAlchemy==2.0.37 tenacity==9.0.0 typing_extensions==4.12.2 urllib3==2.3.0 yarl==1.18.3 |
※ pip install langchain langchain-ollama 명령을 실행했다.