inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

랭체인 (LangChain) 에이전트(Agent) 활용하기

서브그래프로 구성된 워크플로우 설계 조언을 듣고 싶습니다

124

젓인

작성한 질문수 158

0

안녕하세요 선생님

image.png

 

위 이미지처럼 추후 서브그래프로 들어갈 CSV 관련 코드 작성 및 실행 워크플로우를 구성했는데, 테스트를 통해서 동작은 확인했습니다

그런데 마지막 execute_node가 python_repl로 실행만 하는 노드라서 실패했을 때 워크플로우가 중간에 다시 돌아갈 때 원인이 전달되지 않아서 수정이 잘 될지가 걱정됩니다.

에러까지 넘겨야 할지, 아니면 code_gen node에서 agentexecutor api로 tool_call로 python_repl을 연결한 다음 validation 노드를 타는 게 더 나을지 고민 중인데, 이렇게 하면 코드 실행 실패할 때마다 그래프 시각화가 여러 번 나올 것 같아서 어떤 접근법이 좋을지 조언 부탁드립니다

 

감사합니다

 

llm langchain rag ai-agent langgraph

답변 1

0

판다스 스튜디오

안녕하세요. 판다스 스튜디오입니다.
제가 정확하게 코드를 확인하지 못한 상태라서, 아이디어 차원에서 답변 드립니다.

기존 워크플로우 구조를 유지하면서 execute_node에서 실패했을 때 에러 정보를 상태에 저장하여 code_gen_node로 돌아가게 하는 방식으로 처리하면 어떨까 싶습니다.

code_gen node에서는 이 에러정보를 컨텍스트로 활용해서 코드를 개선하는데 사용할 수 있을 것 같습니다.


1. 강의에서 설명한 방식 : 조건부 엣지를 활용한 라우팅

def execute_node(state):
    code = state["code"]
    try:
        result = python_repl.run(code)
        return {"result": result, "status": "success"}
    except Exception as e:
        # 에러 정보를 상태에 저장
        return {"error": str(e), "status": "error"}

def router_after_execute(state):
    if state.get("status") == "success":
        return END
    elif state.get("status") == "error":
        return "code_gen_node"


2. Command 방식 (최근 업데이트)

from langgraph.types import Command

def execute_node(state):
    code = state["code"]
    try:
        result = python_repl.run(code)
        # 성공 시 END로 이동
        return Command(
            goto=END,
            update={"result": result, "status": "success"}
        )
    except Exception as e:
        # 에러 발생 시 code_gen_node로 이동
        return Command(
            goto="code_gen_node",
            update={"error": str(e), "status": "error"}
        )
    if state.get("status") == "success":
        return END
    elif state.get("status") == "error":
        return "code_gen_node"

1

젓인

선생님 답변 감사합니다
그런데 생각해보니 에러 상황을 정확히 전달하려면 관련 코드도 함께 공유해야 맥락이 더 잘 전달될 것 같은데, 그러면 컨텍스트 내용이 좀 길 것 같아서 일단은 프롬프트 엔지니어링으로 최대한 진행해보려고 합니다. 우선은 전체 그래프를 모두 연결해서 한 번 실행해보는 것이 궁금해서요

섹션2-11 내용중 tool_call

0

14

1

gradio 를 통한 챗봇 인터페이스 실습이 진행되지 않습니다.

0

39

1

모델의 성능에 따라서 선택하는 도구가 많이 차이 나나요?

0

140

2

Fan-in 시 여러개 노드에서 하나로 병합되는 과정에서 질문 입니다.

0

77

3

로드맵

0

109

2

강의 46에서 노드의 병렬 수행시 Thread-Safety 문제는 없을까요?

0

104

2

similarity_search 후 왜 다시 LLM을 통해 grade를 측정 하나요?

0

104

2

agent_executor 실행시 JSONDecodeError에러가 발생해요.

0

143

4

툴의 숫자가 많을때 동작

0

120

2

안녕하세요 후속강의 듣고 싶은데, 비용이 부담되어서..

0

137

2

[실습을 위한 환경 설정 방법] 자료가 없습니다.

0

174

3

최근 안내해주신 수강생 이벤트 관련 문의입니다.

0

108

1

AI 에이전트로 구현하는 RAG 시스템 수강생입니다.

0

153

1

수업 자료 문의

0

174

3

docker 환경에서 해당 서비스를 구성해보는 건 어떤가요?

0

173

2

numpy 설치 에러

0

485

1

The onnxruntime python package is not installed.

0

222

1

섹션 5, 사용자 정의 조건부 엣지 관련 질문입니다.

0

129

1

강사님의 LLM 모델의 버전이 어떻게 되나요?

0

223

1

Agent RAG 구현에서 '정보 추출 및 평가' 노드 결과 애러

0

126

2

메시지 그래프/피드백 루프 활용하기에서 질문

0

108

1

에이전틱 루프에서의 병렬 노드 구현 문의

0

138

2

[공유] llama3-groq 모델명 수정 필요

0

195

1

수업자료 문의

1

209

2