inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

2.3 공식문서 따라하면 실패하는 Agentic RAG

'NoneType' object is not subscriptable 에러 해결법 공유

해결된 질문

305

bsj

작성한 질문수 3

0

안녕하세요. 강의 내용 따라하다가 아래 에러가 발생해서 공유드립니다.

전체 소스코드는 글 맨 아래에 링크로 첨부했습니다.

 

image.png

위 코드를 실행했을 때, 결과가 잘 나올때도 있지만 종종 에러가 발생합니다. 에러 내용에 따르면 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'

위 코드 수행 결과:

Screenshot 2025-02-01 at 11.47.07 AM.png

check_doc_relevance 가 두 번 다시 실행되어서 원하는 결과가 나왔습니다.

 

참고로 저는 강의에 쓰인 OpenAI 대신 UpstageAI 모델을 사용하고 있습니다.

from langchain_upstage import ChatUpstage

llm = ChatUpstage()

저처럼 OpenAI 모델을 사용하지 않고 개발하다가 같은 문제를 겪는다면 도움이 되길 바랍니다.


 

전체 소스코드 링크: https://drive.google.com/file/d/1_WP4DM1OWFiP226WksXvjG5Em9dOaqPp/view?usp=sharing

프롬프트엔지니어링 llm ai-agent langgraph

답변 1

0

제이쓴

bsj님 감사합니다! 워크플로우를 구현하는게 개발자가 의도한대로 워크플로우를 구성하는거라서 에러가 발생할 때 새로운 플로우를 타는식이 되겠네요. 공유해주셔서 감사합니다!

max token을 제한하는게 왜 성능을 개선하게 되는걸까요?

0

35

2

pyzerox 유니코드 에러

0

75

2

영상 메타데이터 생성 관련 LLM 활용 질문

0

67

1

종합부동산세 부분 tool 사용 질문 드립니다.

0

74

2

uv sync 파이썬 버전문제 onnxruntime

-1

103

2

MCP를 활용해서 간단한 에이전트를 만들어보세요

0

96

1

PDF 형식

0

64

1

5.3 langchain-mcp-adpater를 활용한 MCP 도구 사용 tool_list 지연 사유

0

91

2

3.6 human_in_the_loop 3rd case

0

81

1

summary 를. 시스템메세지에 추가하는 부분에 관하여

0

70

3

병렬 처리 중 retrieve 관련 궁금한 사항

0

76

1

query 에 대한 answer 결과값이 나오지 않습니다.

0

94

2

사람과 관련된 표현이 없는데 rewrite 로 이동하지 않는경우

0

75

1

retriever 관련 질문

0

65

1

인터룹 관련 질문

0

49

2

2.4 Self-RAG 결과가 달라요!

0

77

2

md vs txt 차이..

0

134

2

OpenAI API 호출 때문에 발생하는 Error code: 429 문제

0

112

2

단순 도구 사용과 도구를 가진 에이전트를 사용하는 것의 차이가 궁금합니다.

0

88

1

LangChain과 LangGraph v1

0

136

1

2.4 강의 관련 질문(답변을 검증하는 self rag)

0

73

2

후속강의 문의

0

73

2

3.6 강의 관련 질문(interrupt 관련)

0

50

1

그래프 구현 조언 부탁드립니다!

0

76

2