해결된 질문
작성
·
73
0
강사님 안녕하세요!
하단의 generate함수는 파라미터로 AgentState를 받고 AgentState를 리턴하는데
함수의 리턴값이 "context"를 key로 가지는 딕셔너리형태인데, 어떻게 AgentState가 되는지 궁금합니다.. ㅠㅠ
class AgentState(TypedDict):
query: str
context: List[Document]
answer: str
def retrieve(state: AgentState) -> AgentState:
"""
사용자의 질문에 기반하여 벡터 스토어에서 관련 문서를 검색합니다.
Args:
state (AgentState): 사용자의 질문을 포함한 에이전트의 현재 state.
Returns:
AgentState: 검색된 문서가 추가된 state를 반환합니다.
"""
query = state['query']
docs = retriever.invoke(query)
return {'context': docs}
답변 1
1
안녕하세요! 좋은 질문 감사합니다. 간단하게 답변드리자면 AgentState
가 query, context, answer를 key로 갖는 딕셔너리이기 때문입니다. TypedDict
는 각 키별로 타입을 지정한 딕셔너리라고 이해하시면 됩니다.
TypedDict
의 기본값이 비어있어서, agent_state가 빈 딕셔너리로 보이는데요, 기본값을 지정해주면 아래와 같이 값이 들어간 것을 볼 수 있습니다.
그리고 노드의 실행결과에서 {'context': docs}
만 리턴하게 되면, query
와 answer
는 이전의 값을 유지한 상태로 context
만 변경된다고 보시면 됩니다.
추가로 설명한 부분이 있다면 말씀해주세요!
답변이 엄청빠르시네요 ㄷㄷㄷ 감사합니다
저는 처음에는 이렇게 이해를 했었습니다.
강사님 말씀은 langGraph에서 node를 실행할때 노트에 사용한 함수는 리턴값을 그대로 돌려주는것이 아니라, state에서 해당 키의 value만 변경하는 것으로 이해하면될까요??