■ ChatOllama 클래스를 사용해 이미지를 텍스트로 설명하는 방법을 보여준다. (llava: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 41 42 43 44 45 46 |
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 = "llava:latest", temperature = 0) responseAIMessage = chatOllama.invoke([humanMessage]) print(responseAIMessage.content) """ The image captures a breathtaking view of the Grand Teton National Park, specifically focusing on the majestic Teton Range. The perspective is from a distance, allowing for a full view of the range and its surroundings. The sky above is a clear blue, dotted with fluffy white clouds that add to the serene atmosphere. The Teton Range itself is a stunning display of nature's grandeur. The mountains are adorned with lush green trees, their vibrant color contrasting beautifully with the azure sky. The range is capped with snow-capped peaks, their white hue standing out against the greenery and blue sky. In the foreground of the image, there's a field of tall grasses swaying gently in the breeze. This field serves as a natural carpet, leading the viewer's eye towards the towering mountains in the background. The image is taken from a low angle, which enhances the grandeur of the Teton Range and makes them appear even more imposing. The composition of the image places the mountains centrally, drawing the viewer's attention directly to them. Overall, the image beautifully encapsulates the natural beauty and tranquility of the Grand Teton National Park. """ |
▶ 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 명령을 실행했다.