UNPKG

@langchain/core

Version:
1 lines 12.7 kB
{"version":3,"file":"console.cjs","names":["style: CSPair","text: string","obj: unknown","fallback: string","value: unknown","run: Run","elapsed","styles","BaseTracer","_run: Run","parents: Run[]"],"sources":["../../src/tracers/console.ts"],"sourcesContent":["import type { CSPair } from \"ansi-styles\";\nimport styles from \"ansi-styles\";\nimport { BaseTracer, type AgentRun, type Run } from \"./base.js\";\n\nfunction wrap(style: CSPair, text: string) {\n return `${style.open}${text}${style.close}`;\n}\n\nfunction tryJsonStringify(obj: unknown, fallback: string) {\n try {\n return JSON.stringify(obj, null, 2);\n } catch {\n return fallback;\n }\n}\n\nfunction formatKVMapItem(value: unknown) {\n if (typeof value === \"string\") {\n return value.trim();\n }\n\n if (value === null || value === undefined) {\n return value;\n }\n\n return tryJsonStringify(value, value.toString());\n}\n\nfunction elapsed(run: Run): string {\n if (!run.end_time) return \"\";\n const elapsed = run.end_time - run.start_time;\n if (elapsed < 1000) {\n return `${elapsed}ms`;\n }\n return `${(elapsed / 1000).toFixed(2)}s`;\n}\n\nconst { color } = styles;\n\n/**\n * A tracer that logs all events to the console. It extends from the\n * `BaseTracer` class and overrides its methods to provide custom logging\n * functionality.\n * @example\n * ```typescript\n *\n * const llm = new ChatAnthropic({\n * temperature: 0,\n * tags: [\"example\", \"callbacks\", \"constructor\"],\n * callbacks: [new ConsoleCallbackHandler()],\n * });\n *\n * ```\n */\nexport class ConsoleCallbackHandler extends BaseTracer {\n name = \"console_callback_handler\" as const;\n\n /**\n * Method used to persist the run. In this case, it simply returns a\n * resolved promise as there's no persistence logic.\n * @param _run The run to persist.\n * @returns A resolved promise.\n */\n protected persistRun(_run: Run) {\n return Promise.resolve();\n }\n\n // utility methods\n\n /**\n * Method used to get all the parent runs of a given run.\n * @param run The run whose parents are to be retrieved.\n * @returns An array of parent runs.\n */\n getParents(run: Run) {\n const parents: Run[] = [];\n let currentRun = run;\n while (currentRun.parent_run_id) {\n const parent = this.runMap.get(currentRun.parent_run_id);\n if (parent) {\n parents.push(parent);\n currentRun = parent;\n } else {\n break;\n }\n }\n return parents;\n }\n\n /**\n * Method used to get a string representation of the run's lineage, which\n * is used in logging.\n * @param run The run whose lineage is to be retrieved.\n * @returns A string representation of the run's lineage.\n */\n getBreadcrumbs(run: Run) {\n const parents = this.getParents(run).reverse();\n const string = [...parents, run]\n .map((parent, i, arr) => {\n const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;\n return i === arr.length - 1 ? wrap(styles.bold, name) : name;\n })\n .join(\" > \");\n return wrap(color.grey, string);\n }\n\n // logging methods\n\n /**\n * Method used to log the start of a chain run.\n * @param run The chain run that has started.\n * @returns void\n */\n onChainStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[chain/start]\"\n )} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a chain run.\n * @param run The chain run that has ended.\n * @returns void\n */\n onChainEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[chain/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Chain run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a chain run.\n * @param run The chain run that has errored.\n * @returns void\n */\n onChainError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[chain/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Chain run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of an LLM run.\n * @param run The LLM run that has started.\n * @returns void\n */\n onLLMStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n const inputs =\n \"prompts\" in run.inputs\n ? { prompts: (run.inputs.prompts as string[]).map((p) => p.trim()) }\n : run.inputs;\n console.log(\n `${wrap(\n color.green,\n \"[llm/start]\"\n )} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(\n inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of an LLM run.\n * @param run The LLM run that has ended.\n * @returns void\n */\n onLLMEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[llm/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting LLM run with output: ${tryJsonStringify(\n run.outputs,\n \"[response]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of an LLM run.\n * @param run The LLM run that has errored.\n * @returns void\n */\n onLLMError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[llm/error]\")} [${crumbs}] [${elapsed(\n run\n )}] LLM run errored with error: ${tryJsonStringify(run.error, \"[error]\")}`\n );\n }\n\n /**\n * Method used to log the start of a tool run.\n * @param run The tool run that has started.\n * @returns void\n */\n onToolStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[tool/start]\"\n )} [${crumbs}] Entering Tool run with input: \"${formatKVMapItem(\n run.inputs.input\n )}\"`\n );\n }\n\n /**\n * Method used to log the end of a tool run.\n * @param run The tool run that has ended.\n * @returns void\n */\n onToolEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n\n console.log(\n `${wrap(color.cyan, \"[tool/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Tool run with output: \"${formatKVMapItem(\n run.outputs?.output\n )}\"`\n );\n }\n\n /**\n * Method used to log any errors of a tool run.\n * @param run The tool run that has errored.\n * @returns void\n */\n onToolError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[tool/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Tool run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of a retriever run.\n * @param run The retriever run that has started.\n * @returns void\n */\n onRetrieverStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[retriever/start]\"\n )} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a retriever run.\n * @param run The retriever run that has ended.\n * @returns void\n */\n onRetrieverEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[retriever/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Retriever run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a retriever run.\n * @param run The retriever run that has errored.\n * @returns void\n */\n onRetrieverError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[retriever/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Retriever run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the action selected by the agent.\n * @param run The run in which the agent action occurred.\n * @returns void\n */\n onAgentAction(run: Run) {\n const agentRun = run as AgentRun;\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.blue,\n \"[agent/action]\"\n )} [${crumbs}] Agent selected action: ${tryJsonStringify(\n agentRun.actions[agentRun.actions.length - 1],\n \"[action]\"\n )}`\n );\n }\n}\n"],"mappings":"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"}