123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ConsoleCallbackHandler = void 0;
- const ansi_styles_1 = __importDefault(require("ansi-styles"));
- const base_js_1 = require("./base.cjs");
- function wrap(style, text) {
- return `${style.open}${text}${style.close}`;
- }
- function tryJsonStringify(obj, fallback) {
- try {
- return JSON.stringify(obj, null, 2);
- }
- catch (err) {
- return fallback;
- }
- }
- function formatKVMapItem(value) {
- if (typeof value === "string") {
- return value.trim();
- }
- if (value === null || value === undefined) {
- return value;
- }
- return tryJsonStringify(value, value.toString());
- }
- function elapsed(run) {
- if (!run.end_time)
- return "";
- const elapsed = run.end_time - run.start_time;
- if (elapsed < 1000) {
- return `${elapsed}ms`;
- }
- return `${(elapsed / 1000).toFixed(2)}s`;
- }
- const { color } = ansi_styles_1.default;
- /**
- * A tracer that logs all events to the console. It extends from the
- * `BaseTracer` class and overrides its methods to provide custom logging
- * functionality.
- * @example
- * ```typescript
- *
- * const llm = new ChatAnthropic({
- * temperature: 0,
- * tags: ["example", "callbacks", "constructor"],
- * callbacks: [new ConsoleCallbackHandler()],
- * });
- *
- * ```
- */
- class ConsoleCallbackHandler extends base_js_1.BaseTracer {
- constructor() {
- super(...arguments);
- Object.defineProperty(this, "name", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: "console_callback_handler"
- });
- }
- /**
- * Method used to persist the run. In this case, it simply returns a
- * resolved promise as there's no persistence logic.
- * @param _run The run to persist.
- * @returns A resolved promise.
- */
- persistRun(_run) {
- return Promise.resolve();
- }
- // utility methods
- /**
- * Method used to get all the parent runs of a given run.
- * @param run The run whose parents are to be retrieved.
- * @returns An array of parent runs.
- */
- getParents(run) {
- const parents = [];
- let currentRun = run;
- while (currentRun.parent_run_id) {
- const parent = this.runMap.get(currentRun.parent_run_id);
- if (parent) {
- parents.push(parent);
- currentRun = parent;
- }
- else {
- break;
- }
- }
- return parents;
- }
- /**
- * Method used to get a string representation of the run's lineage, which
- * is used in logging.
- * @param run The run whose lineage is to be retrieved.
- * @returns A string representation of the run's lineage.
- */
- getBreadcrumbs(run) {
- const parents = this.getParents(run).reverse();
- const string = [...parents, run]
- .map((parent, i, arr) => {
- const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;
- return i === arr.length - 1 ? wrap(ansi_styles_1.default.bold, name) : name;
- })
- .join(" > ");
- return wrap(color.grey, string);
- }
- // logging methods
- /**
- * Method used to log the start of a chain run.
- * @param run The chain run that has started.
- * @returns void
- */
- onChainStart(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.green, "[chain/start]")} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(run.inputs, "[inputs]")}`);
- }
- /**
- * Method used to log the end of a chain run.
- * @param run The chain run that has ended.
- * @returns void
- */
- onChainEnd(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.cyan, "[chain/end]")} [${crumbs}] [${elapsed(run)}] Exiting Chain run with output: ${tryJsonStringify(run.outputs, "[outputs]")}`);
- }
- /**
- * Method used to log any errors of a chain run.
- * @param run The chain run that has errored.
- * @returns void
- */
- onChainError(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.red, "[chain/error]")} [${crumbs}] [${elapsed(run)}] Chain run errored with error: ${tryJsonStringify(run.error, "[error]")}`);
- }
- /**
- * Method used to log the start of an LLM run.
- * @param run The LLM run that has started.
- * @returns void
- */
- onLLMStart(run) {
- const crumbs = this.getBreadcrumbs(run);
- const inputs = "prompts" in run.inputs
- ? { prompts: run.inputs.prompts.map((p) => p.trim()) }
- : run.inputs;
- console.log(`${wrap(color.green, "[llm/start]")} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(inputs, "[inputs]")}`);
- }
- /**
- * Method used to log the end of an LLM run.
- * @param run The LLM run that has ended.
- * @returns void
- */
- onLLMEnd(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.cyan, "[llm/end]")} [${crumbs}] [${elapsed(run)}] Exiting LLM run with output: ${tryJsonStringify(run.outputs, "[response]")}`);
- }
- /**
- * Method used to log any errors of an LLM run.
- * @param run The LLM run that has errored.
- * @returns void
- */
- onLLMError(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.red, "[llm/error]")} [${crumbs}] [${elapsed(run)}] LLM run errored with error: ${tryJsonStringify(run.error, "[error]")}`);
- }
- /**
- * Method used to log the start of a tool run.
- * @param run The tool run that has started.
- * @returns void
- */
- onToolStart(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.green, "[tool/start]")} [${crumbs}] Entering Tool run with input: "${formatKVMapItem(run.inputs.input)}"`);
- }
- /**
- * Method used to log the end of a tool run.
- * @param run The tool run that has ended.
- * @returns void
- */
- onToolEnd(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.cyan, "[tool/end]")} [${crumbs}] [${elapsed(run)}] Exiting Tool run with output: "${formatKVMapItem(run.outputs?.output)}"`);
- }
- /**
- * Method used to log any errors of a tool run.
- * @param run The tool run that has errored.
- * @returns void
- */
- onToolError(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.red, "[tool/error]")} [${crumbs}] [${elapsed(run)}] Tool run errored with error: ${tryJsonStringify(run.error, "[error]")}`);
- }
- /**
- * Method used to log the start of a retriever run.
- * @param run The retriever run that has started.
- * @returns void
- */
- onRetrieverStart(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.green, "[retriever/start]")} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(run.inputs, "[inputs]")}`);
- }
- /**
- * Method used to log the end of a retriever run.
- * @param run The retriever run that has ended.
- * @returns void
- */
- onRetrieverEnd(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.cyan, "[retriever/end]")} [${crumbs}] [${elapsed(run)}] Exiting Retriever run with output: ${tryJsonStringify(run.outputs, "[outputs]")}`);
- }
- /**
- * Method used to log any errors of a retriever run.
- * @param run The retriever run that has errored.
- * @returns void
- */
- onRetrieverError(run) {
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.red, "[retriever/error]")} [${crumbs}] [${elapsed(run)}] Retriever run errored with error: ${tryJsonStringify(run.error, "[error]")}`);
- }
- /**
- * Method used to log the action selected by the agent.
- * @param run The run in which the agent action occurred.
- * @returns void
- */
- onAgentAction(run) {
- const agentRun = run;
- const crumbs = this.getBreadcrumbs(run);
- console.log(`${wrap(color.blue, "[agent/action]")} [${crumbs}] Agent selected action: ${tryJsonStringify(agentRun.actions[agentRun.actions.length - 1], "[action]")}`);
- }
- }
- exports.ConsoleCallbackHandler = ConsoleCallbackHandler;
|