티스토리 뷰
RAG로 구현된 앱으로 채팅을 할 때 생기는 문제가 있습니다.
표로 구성된 자료에서 그 내용을 물었을 때 원하는 답변이 나오지 않는 경우가 있습니다.
표의 특성에서 셀을 합친다거나 페이지를 넘어가는 경우, 그리고 표가 무엇을 나타내기 위한 것인지 명확하지 않은 경우입니다.
물론 다른 경우도 있지만...
그래서 이 표를 멀티모달(Multi-Modal)을 이용하여 이미지로 읽어들여 이것을 벡터화하는 시도를 하고자 합니다.
먼저 이미지를 읽어와 이미지에 대한 묘사를 해보는 코드를 작성했습니다.
그 결과가 잘 나오는 것 같습니다.
텍스트로만 이루어진 이미지는 텍스트를 정리하게 하였습니다.
이미지와 사진은 그것에 대한 설명을 하도록 하였습니다.
llm model은 OpenAI의 gpt-4o를 사용했습니다.
Depict : 묘사한 내용이고 그 아래 불러온 이미지입니다.
이미지와 묘사한 내용이 어느 정도 일치함을 알 수 있습니다.
이제 멀티모달 쪽에 첫발을 디뎠습니다.
좀더 많은 공부도 해야하고 여러 사례들을 살펴보고자 계획합니다.
아래 코드와 결과가 있습니다.
코드에 대한 별도 설명은 하지 않습니다.
import streamlit as st
import os
from glob import glob
from dotenv import load_dotenv
from dotenv import dotenv_values
if os.path.exists(".env"):
load_dotenv(override=True)
config = dotenv_values(".env")
openAI_api_key = os.getenv("OPENAI_API_KEY")
import base64
import openai
from langchain_core.runnables import RunnablePassthrough
client = openai.Client()
model_name = "gpt-4o"
max_tokens = 2048
system_template ="""당신은 이미지를 어린이들에게 설명하는 선생님입니다."""
def input_messages(question, base64_image):
messages = [
{"role": "system", "content": system_template},
{
"role": "user",
"content": [
{"type": "text", "text": question},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64, {base64_image}",
"detail": "low"
}
}
]
}
]
return messages
image_file = st.file_uploader("이미지를 업로드 하세요.", type=["png", "jpg", "jpeg"])
if image_file is not None:
base64_image = base64.b64encode(image_file.read()).decode("utf-8")
question = "Can you write a caption for this image? 이미지가 텍스트인 경우는 요약 정리해주세요. 이미지가 그림이나 사진인 경우는 이미지의 세부사항까지 한글로 자세히 설명해 주세요."
messages = input_messages(question, base64_image)
response = client.chat.completions.create(
model=model_name,
messages=messages,
max_tokens=max_tokens
)
st.write("Depict : ", response.choices[0].message.content)
st.image(image_file)
* 테스트에 사용한 이미지는 "https://github.com/ShawhinT/YouTube-Blog/tree/main/multimodal-ai/1-mm-llms/images"에 있는 이미지입니다.
'machineLearning > GPT' 카테고리의 다른 글
vibe coding 시험해보기 (0) | 2025.04.28 |
---|---|
이미지 찾아 질문하기 (1) | 2025.04.09 |
RAG 구현하기 (0) | 2025.03.21 |
Chatbot으로 RAG 구현 (0) | 2025.01.22 |
RAG : VectorStore (0) | 2025.01.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- LLM
- ChatGPT
- streamlit
- 텐서플로우
- 랭체인
- programmers.co.kr
- 도함수
- 챗봇
- Chatbot
- LangChain
- 파이썬
- Python
- 고등학교 수학
- 미분계수
- 로피탈정리
- FewShot
- AI_고교수학
- multi modal
- GPT
- prompt
- RAG
- checkpoint
- image depict
- 미분
- 약수
- 변화율
- TensorFlow
- 미분법
- programmers
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함