callModel 그래프 노드가 잘못된 형식의 메시지 목록을 받았을 때 발생합니다. 구체적으로는 tool_calls를 포함하는 AIMessage들(도구 호출을 요청하는 LLM)에 대응하는 ToolMessage(LLM에 반환할 도구 호출 결과)가 없을 때 잘못된 형식으로 간주됩니다.
이 오류가 발생하는 몇 가지 이유가 있을 수 있습니다:
- 그래프를 호출할 때 잘못된 형식의 메시지 목록을 수동으로 전달한 경우, 예:
graph.invoke({messages: [new AIMessage({..., tool_calls: [...]})]}) - 그래프가
tools노드로부터 업데이트(즉, ToolMessages 목록)를 받기 전에 중단되었고, null 또는 ToolMessage가 아닌 입력으로 그래프를 호출한 경우, 예:graph.invoke({messages: [new HumanMessage(...)]}, config). 이 중단은 다음 중 하나의 방법으로 발생할 수 있습니다:
createAgent에서interruptBefore: ['tools']를 수동으로 설정한 경우- 도구 중 하나에서 ToolNode (
"tools")에 의해 처리되지 않은 오류가 발생한 경우
문제 해결
이 문제를 해결하려면 다음 중 하나를 수행할 수 있습니다:- 잘못된 형식의 메시지 목록으로 그래프를 호출하지 마세요
- 중단이 발생한 경우(수동 또는 오류로 인한) 다음을 수행할 수 있습니다:
- 기존 도구 호출과 일치하는 ToolMessages를 제공하고
graph.invoke({messages: [new ToolMessage(...)]})를 호출합니다. 참고: 이렇게 하면 메시지가 히스토리에 추가되고 그래프가 START 노드부터 실행됩니다.- 상태를 수동으로 업데이트하고 중단된 지점부터 그래프를 재개합니다:
graph.getState(config)를 사용하여 그래프 상태에서 가장 최근 메시지 목록을 가져옵니다- 메시지 목록을 수정하여 AIMessages에서 응답되지 않은 도구 호출을 제거하거나
- 상태를 수동으로 업데이트하고 중단된 지점부터 그래프를 재개합니다:
toolCallId들을 가진 ToolMessages를 추가합니다 3. 수정된 메시지 목록으로 graph.updateState(config, {messages: ...})를 호출합니다 4. 그래프를 재개합니다, 예: graph.invoke(null, config)를 호출합니다
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.