■ ChatGoogleGenerativeAI 클래스에서 이미지를 텍스트로 설명하는 방법을 보여준다. (gemini-1.5-pro-latest 모델)
※ GOOGLE_API_KEY 환경 변수 값은 .env 파일에 정의한다.
▶ 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 47 |
import base64 from dotenv import load_dotenv from langchain_google_genai import ChatGoogleGenerativeAI from langchain.schema.messages import HumanMessage load_dotenv() def getBASE64StringFromFile(filePath): with open(filePath, "rb") as bufferedReader: imageBytes = bufferedReader.read() base64Bytes = base64.b64encode(imageBytes) base64String = base64Bytes.decode("utf-8") return base64String chatGoogleGenerativeAI = ChatGoogleGenerativeAI(model = "gemini-1.5-pro-latest") imageBASE64String = getBASE64StringFromFile("GrandTetons.jpg") humanMessage = HumanMessage( content = [ { "type" : "text", "text" : "이미지를 설명해주세요." }, { "type" : "image_url", "image_url" : {"url" : f"data:image/jpeg;base64,{imageBASE64String}"} } ] ) responseAIMessage = chatGoogleGenerativeAI.invoke([humanMessage]) print(responseAIMessage.content) """ 이 이미지는 숲이 우거진 앞면에 웅장한 산맥을 보여줍니다. 산들은 울퉁불퉁하고 뾰족한 봉우리와 눈으로 뒤덮인 경사면이 있는 바위가 많습니다. 산은 파란색과 회색 음영으로 나타나며, 이는 그림자와 햇빛의 상호 작용을 암시합니다. 일부 산봉우리의 꼭대기에서 눈이 보입니다. 하늘에는 흰색과 회색 구름이 섞여 있는데, 이는 구름이 낀 상태를 나타냅니다. 전경에는 나무의 짙은 녹색 줄이 산맥의 밑부분을 따라 펼쳐져 있습니다. 이 나무들은 산의 규모와 비교하여 규모를 제공합니다. 나무 앞에는 덤불과 풀이 드문드문 자라고 있는 덤불이 우거진 지역이 있습니다. 이 덤불이 우거진 지역의 색상은 주로 녹색과 갈색이며, 아마도 건조하거나 죽은 식물일 것입니다. 전반적인 인상은 산맥의 웅장함과 자연의 아름다움입니다. 이미지는 평화로움과 경외감을 불러일으킵니다. """ |
▶ 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
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 cachetools==5.5.0 certifi==2024.12.14 charset-normalizer==3.4.1 exceptiongroup==1.2.2 filetype==1.2.0 frozenlist==1.5.0 google-ai-generativelanguage==0.6.10 google-api-core==2.24.0 google-api-python-client==2.158.0 google-auth==2.37.0 google-auth-httplib2==0.2.0 google-generativeai==0.8.3 googleapis-common-protos==1.66.0 greenlet==3.1.1 grpcio==1.69.0 grpcio-status==1.69.0 h11==0.14.0 httpcore==1.0.7 httplib2==0.22.0 httpx==0.28.1 idna==3.10 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.14 langchain-core==0.3.29 langchain-google-genai==2.0.8 langchain-text-splitters==0.3.5 langsmith==0.2.10 multidict==6.1.0 numpy==1.26.4 orjson==3.10.14 packaging==24.2 propcache==0.2.1 proto-plus==1.25.0 protobuf==5.29.3 pyasn1==0.6.1 pyasn1_modules==0.4.1 pydantic==2.10.5 pydantic_core==2.27.2 pyparsing==3.2.1 python-dotenv==1.0.1 PyYAML==6.0.2 requests==2.32.3 requests-toolbelt==1.0.0 rsa==4.9 sniffio==1.3.1 SQLAlchemy==2.0.37 tenacity==9.0.0 tqdm==4.67.1 typing_extensions==4.12.2 uritemplate==4.1.1 urllib3==2.3.0 yarl==1.18.3 |
※ pip install python-dotenv langchain langchain_google_genai 명령을 실행했다.