작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
55
0
안녕하세요, gemini를 이용해서 챗봇 생성중에 있습니다.
그런데 하기와 같이 챗봇을 llm과 연동하는 중에 에러가 계속 발생합니다.
gpt한테 계속 물어가면서 에러잡고있는데 계속 동일한 에러만 나오네요. ㅠ
어떻게 개선할 수 있을까요? 조언부탁드립니다.
감사합니다.
코드)
import streamlit as st
from langchain import hub
from dotenv import load_dotenv
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_pinecone import PineconeVectorStore
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.chains import RetrievalQA
from langchain.prompts import ChatPromptTemplate
st.set_page_config(page_title="영향분석 챗봇", page_icon="★")
st.title("영향분석 챗봇")
st.caption("System 변경 영향 분석")
load_dotenv()
# 세션 상태에 메시지 리스트가 없으면 초기화
if 'message_list' not in st.session_state:
st.session_state.message_list = []
# 이전 메시지 출력
for message in st.session_state.message_list:
with st.chat_message(message["role"]):
st.write(message["content"])
def get_ai_message(user_message):
try:
# 입력 메시지 확인
if not isinstance(user_message, str) or not user_message.strip():
return "질문이 비어 있습니다. 유효한 질문을 입력해 주세요."
print(f"user_message: {user_message}") # user_message의 내용 출력
print(f"user_message length: {len(user_message)}") # 문자열 길이 출력
print(f"user_message type: {type(user_message)}") # 타입 출력
# Google Generative AI Embeddings 모델 초기화
embedding = GoogleGenerativeAIEmbeddings(model='models/gemini-embedding-exp-03-07')
index_name = 'uml-index'
database = PineconeVectorStore.from_existing_index(index_name=index_name, embedding=embedding)
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
prompt_template = hub.pull("rlm/rag-prompt")
retriever = database.as_retriever(search_kwargs={'k': 4})
# RetrievalQA 인스턴스 생성
qa_chain = RetrievalQA.from_chain_type(llm, retriever=retriever, chain_type_kwargs={"prompt": prompt_template})
dictionary = ["External Entity -> actor"]
prompt = ChatPromptTemplate.from_template(f"""
사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요.
만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다.
그런 경우에는 질문만 리턴해주세요.
사전 : {dictionary}
질문 : {{question}}
""")
dictionary_chain = prompt | llm
uml_chain = {"query": dictionary_chain} | qa_chain
ai_message = uml_chain.invoke({"question": user_message})
return ai_message
except Exception as e:
print(f"오류 발생: {repr(e)}") # 오류 메시지 출력
print(f"입력된 user_message: {user_message}") # 오류 발생 시 입력된 메시지 출력
return f"오류가 발생했습니다: {repr(e)}"
# 사용자 입력 처리
if user_question := st.chat_input(placeholder="CR 내용을 첨부해주세요"):
with st.chat_message("user"):
st.write(f"사용자 질문: {user_question}")
st.session_state.message_list.append({"role": "user", "content": user_question})
ai_message = get_ai_message(user_question)
with st.chat_message("AI"):
st.write(ai_message)
st.session_state.message_list.append({"role": "AI", "content": ai_message})
에러)
user_message: 시스템에 연결된 External Entity를 알려주세요
user_message length: 31
user_message type: <class 'str'>
오류 발생: GoogleGenerativeAIError('Error embedding content: bad argument type for built-in operation')
입력된 user_message: 시스템에 연결된 External Entity를 알려주세요
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 윤정님, Gemini 모델과 관련된 챗봇 구성 과정에서 발생하는 오류 때문에 고민이 많으셨을 것 같습니다. 이러한 경우는 주로 환경 설정이나 API 호출 부분에서 문제가 발생할 수 있습니다.
데이터 타입 확인:
user_message
의 타입이 str
인 것이 확인되지만, GoogleGenerativeAIEmbeddings
모델에서 예상하는 타입과 맞지 않아 오류가 발생할 수 있습니다. 입력 데이터가 올바르게 전처리되어 전달되고 있는지를 다시 한번 확인해보시기 바랍니다.GoogleGenerativeAIEmbeddings 모델 초기화:
GoogleGenerativeAIEmbeddings
모델에 전달되는 model
매개변수의 값이 올바른지 확인하십시오. 잘못된 모델명을 사용할 경우 오류가 발생할 수 있습니다.Pinecone 설정 확인:
PineconeVectorStore
설정에서 index_name
과 embedding
이 올바르게 설정되고 있는지 확인하세요. Pinecone의 인덱스가 제대로 구성되어 있지 않거나 비활성화된 경우 이와 유사한 오류가 발생할 수 있습니다.서버 환경과 API 키 확인:
.env
파일에 정확히 선언되어 있는지 확인하고, 환경 변수가 제대로 로드되고 있는지 검토해보세요. API 호출 시 필수 키가 누락되면 올바르게 동작하지 않을 수 있습니다.추가 디버깅:
위의 내용을 점검해보고 적용해 보시길 바랍니다. 아직 해결이 안되신다면 추가적인 오류 로그와 함께 다시 질문해 주시면 도움이 되겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.