해결된 질문
작성
·
105
·
수정됨
0
안녕하세요. 강의 내용 따라하다가 아래 에러가 발생해서 공유드립니다.
전체 소스코드는 글 맨 아래에 링크로 첨부했습니다.
위 코드를 실행했을 때, 결과가 잘 나올때도 있지만 종종 에러가 발생합니다. 에러 내용에 따르면 check_doc_relevance
함수에서 response
에 아무것도 안담겨있어서 발생했다고 나오네요. 왜인지는 모르겠지만, 문서 관련성 판단 LLM이 작동하지 않은걸로 보입니다.
그래서 저는 아래와 같이 response
에 아무것도 안담겨있다면 rewrite를 반환해서 노드를 다시 실행시키도록 했습니다.
def check_doc_relevance(state: AgentState) -> Literal['generate', 'rewrite']:
"""
주어진 state를 기반으로 문서의 관련성을 판단합니다.
Args:
state (AgentState): 사용자의 질문과 문맥을 포함한 에이전트의 현재 state.
Returns:
Literal['generate', 'rewrite']: 문서가 관련성이 높으면 'generate', 그렇지 않으면 'rewrite'를 반환합니다.
"""
query = state['query'] # state에서 사용자의 질문을 추출합니다.
context = state['context'] # state에서 문맥을 추출합니다.
# 문서 관련성 판단 체인을 구성합니다.
doc_relevance_chain = doc_relevance_prompt | llm
# 질문과 문맥을 사용하여 문서의 관련성을 판단합니다.
response = doc_relevance_chain.invoke({'question': query, 'documents': context})
# ====================================
# 응답이 없는 경우에는 로그를 출력하고 'rewrite'를 반환합니다.
if not response:
print("No Response!!!")
return 'rewrite'
# ====================================
# 관련성이 높으면 'generate'를 반환하고, 그렇지 않으면 'rewrite'를 반환합니다.
if response['Score'] == 1:
return 'generate'
return 'rewrite'
위 코드 수행 결과:
check_doc_relevance
가 두 번 다시 실행되어서 원하는 결과가 나왔습니다.
참고로 저는 강의에 쓰인 OpenAI 대신 UpstageAI 모델을 사용하고 있습니다.
from langchain_upstage import ChatUpstage
llm = ChatUpstage()
저처럼 OpenAI 모델을 사용하지 않고 개발하다가 같은 문제를 겪는다면 도움이 되길 바랍니다.
전체 소스코드 링크: https://drive.google.com/file/d/1_WP4DM1OWFiP226WksXvjG5Em9dOaqPp/view?usp=sharing
답변 1
0
bsj님 감사합니다! 워크플로우를 구현하는게 개발자가 의도한대로 워크플로우를 구성하는거라서 에러가 발생할 때 새로운 플로우를 타는식이 되겠네요. 공유해주셔서 감사합니다!