UNPKG

create-agent-chat-app

Version:
35 lines (29 loc) 1.19 kB
import { v4 as uuidv4 } from "uuid"; import { Message, ToolMessage } from "@langchain/langgraph-sdk"; export const DO_NOT_RENDER_ID_PREFIX = "do-not-render-"; export function ensureToolCallsHaveResponses(messages: Message[]): Message[] { const newMessages: ToolMessage[] = []; messages.forEach((message, index) => { if (message.type !== "ai" || message.tool_calls?.length === 0) { // If it's not an AI message, or it doesn't have tool calls, we can ignore. return; } // If it has tool calls, ensure the message which follows this is a tool message const followingMessage = messages[index + 1]; if (followingMessage && followingMessage.type === "tool") { // Following message is a tool message, so we can ignore. return; } // Since the following message is not a tool message, we must create a new tool message newMessages.push( ...(message.tool_calls?.map((tc) => ({ type: "tool" as const, tool_call_id: tc.id ?? "", id: `${DO_NOT_RENDER_ID_PREFIX}${uuidv4()}`, name: tc.name, content: "Successfully handled tool call.", })) ?? []), ); }); return newMessages; }