inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

2.3강 18분 initial_state에서 오류가 납니다

108

pwk0408

작성한 질문수 1

0

안녕하세요 langchain강의를 듣고 도움이 되어 langgraph 강의도 열심히 수강하고 있습니다!

 

2.2강의에서 알려주신 langsmith의 hub가 공식문서에는 client로 변경이 되어 그에 맞게 수정을 했습니다.

from langsmith import Client
from langchain_openai import ChatOpenAI
LANGSMITH_API_KEY = os.getenv("LANGSMITH_API_KEY")
client = Client(api_key=LANGSMITH_API_KEY)
prompt = client.pull_prompt("rlm/rag-prompt", include_model=True)
llm = ChatOpenAI(model = 'gpt-4o')

같은 방법으로 2.3 강에서도

# Create a LANGSMITH_API_KEY in Settings > API Keys
from langsmith import Client
from typing import Literal
from langchain_core.output_parsers import JsonOutputParser 

client = Client(api_key=LANGSMITH_API_KEY)
doc_relevance_prompt = client.pull_prompt("langchain-ai/rag-document-relevance", include_model=True)

def check_doc_relevance(state: AgentState) -> Literal['generate', 'rewrite']:
    query = state['query']
    context = state['context']
    print(f'context == {context}')
    doc_relevance_chain = doc_relevance_prompt | llm   #prompt를 활용해서 llm을 호출한다.
    response = doc_relevance_prompt.invoke({'question': query, 'documents': context})
    print(f'doc relevance response: {response}')
    if response['Score'] == 1:
        return 'generate'
    
    return 'rewrite'

이런 식으로 진행하고 있습니다.

그래서 그런지 graph.invoke(initial_state)를 하면

image.png

이런 오류가 나는데 langsmith의 client 때문일까요? 아니면 다른 부분에 있는 걸까요?

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

답변 2

0

제이쓴

안녕하세요! 좋은 질문 감사합니다. 코드에 오타가 있어서 에러가 발생하는 것 같은데요, 제공해주신 코드에서

def check_doc_relevance(state: AgentState) -> Literal['generate', 'rewrite']:
    query = state['query']
    context = state['context']
    print(f'context == {context}')
    doc_relevance_chain = doc_relevance_prompt | llm   #prompt를 활용해서 llm을 호출한다.
    response = doc_relevance_prompt.invoke({'question': query, 'documents': context}) # 여기서 doc_relevance_chain.invoke()
    print(f'doc relevance response: {response}')
    if response['Score'] == 1:
        return 'generate'
    
    return 'rewrite'

여기서 doc_relevance_prompt.invoke() 대신 doc_relevance_chain.invoke() 를 해주시면 정상적으로 동작할 것 같습니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. pwk0408님께서 질문하신 문제는 'ChatPromptValue' object is not subscriptable 오류로 인한 것입니다. 이 문제는 종종 데이터 타입 간의 불일치 때문에 발생하며, 보통 리스트나 딕셔너리를 인덱싱할 때 오류가 납니다.

문제 원인

  1. ChatPromptValue 상황: promptllm의 연결 시 의도하지 않은 객체 타입이 반환되는 경우 발생할 수 있습니다. 이 객체는 리스트가 아닌데, 리스트처럼 인덱싱 시도할 때 오류가 발생합니다.

  2. 오류 위치: response = doc_relevance_prompt.invoke({'question': query, 'documents': context}) 부분에서 invoke 메소드가 잘못된 데이터 타입의 값을 반환할 수 있습니다.

해결 방법

  1. 목적에 맞는 오브젝트 반환 확인:

    • client.pull_prompt() 를 활용한 doc_relevance_prompt가 의도대로 설정됐는지 확인하십시오. 반환되는 객체가 제대로 설정되어 있는지와 타당했는지 출력해 보는 것도 좋습니다.
  2. 데이터 타입 검증 및 처리:

    • response가 예상한 데이터 타입이 맞는지 검토하고, 그에 맞는 방법으로 데이터를 처리할 수 있게 변경해 보십시오.
    • response의 실제 반환되는 형태를 살펴보세요. 만약 필요한 형태가 아닌 경우 변환하는 로직을 추가해야 합니다.
  3. 디버깅 로그 추가:

    • print() 문을 활용하여 각 단계에서 반환되는 데이터 타입과 내용을 확인해 보십시오. 마찬가지로 함수 호출 전후로 상태를 기록하여 흐름을 확인할 수 있습니다.

관련 유사 질문 링크:
- 관련 링크가 없습니다, 유사한 경우 일반적인 디버깅 방법: 비슷한 문제 해결 과정에서 사용자들이 공통적으로 제기한 이슈가 도움될 수 있습니다.

이 문제 해결에 도움을 드리고자 관련 내용을 설명하였습니다. ChatPromptValue 객체의 반환 형태를 주의 깊게 살펴보시면 문제 해결에 큰 도움이 될 것입니다.

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

제공해주신 레포가 Windows 환경에 너무 비친화적입니다.

0

40

2

마크다운을 텍스트 파일로 변환하기

0

43

1

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

0

55

2

pyzerox 유니코드 에러

0

81

2

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

0

76

1

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

0

81

2

uv sync 파이썬 버전문제 onnxruntime

-1

122

2

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

0

102

1

PDF 형식

0

72

1

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

0

98

2

3.6 human_in_the_loop 3rd case

0

87

1

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

0

82

3

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

0

81

1

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

0

98

2

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

0

81

1

retriever 관련 질문

0

66

1

인터룹 관련 질문

0

51

2

2.4 Self-RAG 결과가 달라요!

0

80

2

md vs txt 차이..

0

155

2

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

0

125

2

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

0

90

1

LangChain과 LangGraph v1

0

142

1

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

0

77

2

후속강의 문의

0

75

2