inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

RAG를 활용한 LLM Application 개발 (feat. LangChain)

4.2 LangChain으로 작성한 코드를 활용한 LLM 답변 생성

챗봇 생성시 에러

126

작성자 없음

작성한 질문수 0

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를 알려주세요

vector-database llm langchain rag openai-api

답변 2

0

제이쓴

안녕하세요!

에러메세지만 보고 추측하기로는, 넘겨주는 값들이 잘못된 것 같습니다.

gemini를 활용해보지 않아서 저도 테스트를 해봐야 알 것 같아요!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 윤정님, Gemini 모델과 관련된 챗봇 구성 과정에서 발생하는 오류 때문에 고민이 많으셨을 것 같습니다. 이러한 경우는 주로 환경 설정이나 API 호출 부분에서 문제가 발생할 수 있습니다.

문제 요약

  1. GoogleGenerativeAIError: ‘Error embedding content: bad argument type for built-in operation’라는 오류는 잘못된 데이터 타입이나 잘못된 인자 값이 사용될 때 발생할 수 있습니다.

가능한 원인 및 해결책

  1. 데이터 타입 확인:

    • 오류 메시지를 보면 입력된 user_message의 타입이 str인 것이 확인되지만, GoogleGenerativeAIEmbeddings 모델에서 예상하는 타입과 맞지 않아 오류가 발생할 수 있습니다. 입력 데이터가 올바르게 전처리되어 전달되고 있는지를 다시 한번 확인해보시기 바랍니다.
  2. GoogleGenerativeAIEmbeddings 모델 초기화:

    • GoogleGenerativeAIEmbeddings 모델에 전달되는 model 매개변수의 값이 올바른지 확인하십시오. 잘못된 모델명을 사용할 경우 오류가 발생할 수 있습니다.
  3. Pinecone 설정 확인:

    • PineconeVectorStore 설정에서 index_nameembedding이 올바르게 설정되고 있는지 확인하세요. Pinecone의 인덱스가 제대로 구성되어 있지 않거나 비활성화된 경우 이와 유사한 오류가 발생할 수 있습니다.
  4. 서버 환경과 API 키 확인:

    • Google과 Pinecone의 API 키가 .env 파일에 정확히 선언되어 있는지 확인하고, 환경 변수가 제대로 로드되고 있는지 검토해보세요. API 호출 시 필수 키가 누락되면 올바르게 동작하지 않을 수 있습니다.
  5. 추가 디버깅:

    • 더 많은 디버깅 정보(예: 예외 발생 시 전체 스택 트레이스)를 확인하여 특정 어느 부분에서 오류가 발생하는지 추가적인 정보를 얻을 수 있도록 합니다.

관련 자료 및 가이드

위의 내용을 점검해보고 적용해 보시길 바랍니다. 아직 해결이 안되신다면 추가적인 오류 로그와 함께 다시 질문해 주시면 도움이 되겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

소득세법 docx 파일 공유 요청건

0

60

1

EXAONE 모델 불러오기 안되는 문제

0

83

2

[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유

0

100

2

강의 9에 QA관련된 import가 되지 않네요

0

106

2

🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.

1

192

1

강의와 책 관련 질문

0

84

1

문서 전처리 고민

0

106

1

RAG 배포 질문드립니다

0

92

1

강의 내용과는 별개로 궁금한 점이 있습니다

0

86

2

폐쇄망 챗봇 모델

0

88

1

AI agent 쿠폰

0

93

2

저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요

0

98

2

langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?

1

91

1

new_question에 대한 답 출력

0

71

2

랭체인 라이브러리

0

143

2

[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간

0

104

1

postgresql의 pgvector 벡터는 어떤가요?

0

335

2

doc관련

0

126

2

load_dotenv() 실행 False

0

93

1

RAG 답변 개선을 위한 정답지 활용 구조 검토 요청

0

117

2

3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.

1

395

2

강의 완료 오류

0

87

1

hub.pull 이슈

0

128

2

[3.3 강의] Upstage를 사용한 RAG 구현 성공기 공유

1

147

1