작성
·
23
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)를 하면
이런 오류가 나는데 langsmith의 client 때문일까요? 아니면 다른 부분에 있는 걸까요?
답변 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 인턴입니다. pwk0408님께서 질문하신 문제는 'ChatPromptValue' object is not subscriptable
오류로 인한 것입니다. 이 문제는 종종 데이터 타입 간의 불일치 때문에 발생하며, 보통 리스트나 딕셔너리를 인덱싱할 때 오류가 납니다.
ChatPromptValue
상황: prompt
와 llm
의 연결 시 의도하지 않은 객체 타입이 반환되는 경우 발생할 수 있습니다. 이 객체는 리스트가 아닌데, 리스트처럼 인덱싱 시도할 때 오류가 발생합니다.
오류 위치: response = doc_relevance_prompt.invoke({'question': query, 'documents': context})
부분에서 invoke
메소드가 잘못된 데이터 타입의 값을 반환할 수 있습니다.
목적에 맞는 오브젝트 반환 확인:
client.pull_prompt()
를 활용한 doc_relevance_prompt
가 의도대로 설정됐는지 확인하십시오. 반환되는 객체가 제대로 설정되어 있는지와 타당했는지 출력해 보는 것도 좋습니다.데이터 타입 검증 및 처리:
response
가 예상한 데이터 타입이 맞는지 검토하고, 그에 맞는 방법으로 데이터를 처리할 수 있게 변경해 보십시오.response
의 실제 반환되는 형태를 살펴보세요. 만약 필요한 형태가 아닌 경우 변환하는 로직을 추가해야 합니다.디버깅 로그 추가:
print()
문을 활용하여 각 단계에서 반환되는 데이터 타입과 내용을 확인해 보십시오. 마찬가지로 함수 호출 전후로 상태를 기록하여 흐름을 확인할 수 있습니다.관련 유사 질문 링크:
- 관련 링크가 없습니다, 유사한 경우 일반적인 디버깅 방법: 비슷한 문제 해결 과정에서 사용자들이 공통적으로 제기한 이슈가 도움될 수 있습니다.
이 문제 해결에 도움을 드리고자 관련 내용을 설명하였습니다. ChatPromptValue
객체의 반환 형태를 주의 깊게 살펴보시면 문제 해결에 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.