@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 64.1 kB
Source Map (JSON)
{"version":3,"file":"manager.cjs","names":["candidate","LangChainTracer","consumeCallback","uuidv7","isBaseTracer","getBufferString","BaseCallbackHandler","getEnvironmentVariable","isTracingEnabled","ConsoleCallbackHandler","_getConfigureHooks","getContextVariable","isBaseCallbackHandler"],"sources":["../../src/callbacks/manager.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"../utils/uuid/index.js\";\nimport { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport { LLMResult } from \"../outputs.js\";\nimport {\n BaseCallbackHandler,\n CallbackHandlerMethods,\n HandleLLMNewTokenCallbackFields,\n isBaseCallbackHandler,\n NewTokenIndices,\n} from \"./base.js\";\nimport { ConsoleCallbackHandler } from \"../tracers/console.js\";\nimport { type BaseMessage } from \"../messages/base.js\";\nimport { getBufferString } from \"../messages/utils.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\nimport { LangChainTracer } from \"../tracers/tracer_langchain.js\";\nimport { consumeCallback } from \"./promises.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport type { DocumentInterface } from \"../documents/document.js\";\nimport type { ChatModelStreamEvent } from \"../language_models/event.js\";\nimport { isTracingEnabled } from \"../utils/callbacks.js\";\nimport { isBaseTracer } from \"../tracers/base.js\";\nimport {\n getContextVariable,\n _getConfigureHooks,\n} from \"../singletons/async_local_storage/context.js\";\n\ntype BaseCallbackManagerMethods = {\n [K in keyof CallbackHandlerMethods]?: (\n ...args: Parameters<Required<CallbackHandlerMethods>[K]>\n ) => Promise<unknown>;\n};\n\nexport interface CallbackManagerOptions {\n verbose?: boolean;\n tracing?: boolean;\n tracerInheritableMetadata?: Record<string, unknown>;\n tracerInheritableTags?: string[];\n}\n\nexport type Callbacks =\n | CallbackManager\n | (BaseCallbackHandler | CallbackHandlerMethods)[];\n\nfunction getTracerRunStoreKey(tracer: LangChainTracer): object {\n const candidate = tracer as LangChainTracer & {\n _getRunStoreKey?: () => object;\n };\n return candidate._getRunStoreKey?.() ?? tracer;\n}\n\nfunction mergeTracerConfig(\n target: LangChainTracer,\n source: LangChainTracer\n): LangChainTracer {\n if (target === source) {\n return target;\n }\n return target.copyWithTracingConfig({\n metadata: source.tracingMetadata,\n tags: source.tracingTags,\n });\n}\n\nfunction coalesceTracers(\n handlers: BaseCallbackHandler[],\n inheritableHandlers: BaseCallbackHandler[]\n): {\n handlers: BaseCallbackHandler[];\n inheritableHandlers: BaseCallbackHandler[];\n} {\n const inheritableSet = new Set<BaseCallbackHandler>(inheritableHandlers);\n const groups = new Map<\n object,\n { index: number; tracer: LangChainTracer; hasInheritable: boolean }\n >();\n const coalescedHandlers: BaseCallbackHandler[] = [];\n\n // Fold a tracer into its run-store group, keeping a single representative per\n // store (one tracer per store avoids the double-\"end\" throw). The\n // representative's tracing config is drawn from inheritable entries once any\n // exist, so a local-only tracer sharing the store cannot leak its tags or\n // metadata into child runs, which inherit `inheritableHandlers`. Stores with\n // only local entries keep merging those local entries.\n const fold = (handler: LangChainTracer) => {\n const key = getTracerRunStoreKey(handler);\n const isInheritable = inheritableSet.has(handler);\n const group = groups.get(key);\n if (group === undefined) {\n groups.set(key, {\n index: coalescedHandlers.length,\n tracer: handler,\n hasInheritable: isInheritable,\n });\n coalescedHandlers.push(handler);\n return;\n }\n\n if (isInheritable && !group.hasInheritable) {\n // First inheritable entry for this store: drop any local-only config\n // merged so far and restart from an inheritable baseline.\n group.tracer = handler;\n group.hasInheritable = true;\n } else if (isInheritable || !group.hasInheritable) {\n group.tracer = mergeTracerConfig(group.tracer, handler);\n }\n // A local entry on a store that already has inheritable config contributes\n // nothing, so its config cannot ride into children.\n coalescedHandlers[group.index] = group.tracer;\n };\n\n for (const handler of handlers) {\n if (handler instanceof LangChainTracer) {\n fold(handler);\n } else {\n coalescedHandlers.push(handler);\n }\n }\n\n // `inheritableHandlers` is a subset of `handlers` by identity, so its tracers\n // were already folded above. This only promotes an inheritable-only orphan\n // (an alias broken upstream) back into `handlers`.\n for (const handler of inheritableHandlers) {\n if (\n handler instanceof LangChainTracer &&\n !groups.has(getTracerRunStoreKey(handler))\n ) {\n fold(handler);\n }\n }\n\n const seenTracerStores = new Set<object>();\n const coalescedInheritableHandlers = inheritableHandlers.flatMap(\n (handler) => {\n if (!(handler instanceof LangChainTracer)) {\n return [handler];\n }\n\n const key = getTracerRunStoreKey(handler);\n if (seenTracerStores.has(key)) {\n return [];\n }\n seenTracerStores.add(key);\n return [groups.get(key)?.tracer ?? handler];\n }\n );\n\n return {\n handlers: coalescedHandlers,\n inheritableHandlers: coalescedInheritableHandlers,\n };\n}\n\nexport interface BaseCallbackConfig {\n /**\n * Name for the tracer run for this call. Defaults to the name of the class.\n */\n runName?: string;\n\n /**\n * Tags for this call and any sub-calls (eg. a Chain calling an LLM).\n * You can use these to filter calls.\n */\n tags?: string[];\n\n /**\n * Metadata for this call and any sub-calls (eg. a Chain calling an LLM).\n * Keys should be strings, values should be JSON-serializable.\n */\n metadata?: Record<string, unknown>;\n\n /**\n * Callbacks for this call and any sub-calls (eg. a Chain calling an LLM).\n * Tags are passed to all callbacks, metadata is passed to handle*Start callbacks.\n */\n callbacks?: Callbacks;\n\n /**\n * Unique identifier for the tracer run for this call. If not provided, a new UUID\n * will be generated.\n */\n runId?: string;\n}\n\nexport function parseCallbackConfigArg(\n arg: Callbacks | BaseCallbackConfig | undefined\n): BaseCallbackConfig {\n if (!arg) {\n return {};\n } else if (Array.isArray(arg) || \"name\" in arg) {\n return { callbacks: arg };\n } else {\n return arg;\n }\n}\n\n/**\n * Manage callbacks from different components of LangChain.\n */\nexport abstract class BaseCallbackManager {\n abstract addHandler(handler: BaseCallbackHandler): void;\n\n abstract removeHandler(handler: BaseCallbackHandler): void;\n\n abstract setHandlers(handlers: BaseCallbackHandler[]): void;\n\n setHandler(handler: BaseCallbackHandler): void {\n return this.setHandlers([handler]);\n }\n}\n\n/**\n * Base class for run manager in LangChain.\n */\nexport class BaseRunManager {\n constructor(\n public readonly runId: string,\n public readonly handlers: BaseCallbackHandler[],\n protected readonly inheritableHandlers: BaseCallbackHandler[],\n protected readonly tags: string[],\n protected readonly inheritableTags: string[],\n protected readonly metadata: Record<string, unknown>,\n protected readonly inheritableMetadata: Record<string, unknown>,\n protected readonly _parentRunId?: string\n ) {}\n\n get parentRunId() {\n return this._parentRunId;\n }\n\n async handleText(text: string): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n try {\n await handler.handleText?.(\n text,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleText: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleCustomEvent(\n eventName: string,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n data: any,\n _runId?: string,\n _tags?: string[],\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n _metadata?: Record<string, any>\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n try {\n await handler.handleCustomEvent?.(\n eventName,\n data,\n this.runId,\n this.tags,\n this.metadata\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n}\n\n/**\n * Manages callbacks for retriever runs.\n */\nexport class CallbackManagerForRetrieverRun\n extends BaseRunManager\n implements BaseCallbackManagerMethods\n{\n getChild(tag?: string): CallbackManager {\n // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n const manager = new CallbackManager(this.runId);\n manager.setHandlers(this.inheritableHandlers);\n manager.addTags(this.inheritableTags);\n manager.addMetadata(this.inheritableMetadata);\n if (tag) {\n manager.addTags([tag], false);\n }\n return manager;\n }\n\n async handleRetrieverEnd(documents: DocumentInterface[]): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreRetriever) {\n try {\n await handler.handleRetrieverEnd?.(\n documents,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleRetriever`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleRetrieverError(err: Error | unknown): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreRetriever) {\n try {\n await handler.handleRetrieverError?.(\n err,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (error) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleRetrieverError: ${error}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n}\n\nexport class CallbackManagerForLLMRun\n extends BaseRunManager\n implements BaseCallbackManagerMethods\n{\n async handleLLMNewToken(\n token: string,\n idx?: NewTokenIndices,\n _runId?: string,\n _parentRunId?: string,\n _tags?: string[],\n fields?: HandleLLMNewTokenCallbackFields\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreLLM) {\n try {\n await handler.handleLLMNewToken?.(\n token,\n idx ?? { prompt: 0, completion: 0 },\n this.runId,\n this._parentRunId,\n this.tags,\n fields\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleLLMNewToken: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleChatModelStreamEvent(event: ChatModelStreamEvent): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreLLM) {\n try {\n await handler.handleChatModelStreamEvent?.(\n event,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleChatModelStreamEvent: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleLLMError(\n err: Error | unknown,\n _runId?: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreLLM) {\n try {\n await handler.handleLLMError?.(\n err,\n this.runId,\n this._parentRunId,\n this.tags,\n extraParams\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleLLMError: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleLLMEnd(\n output: LLMResult,\n _runId?: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreLLM) {\n try {\n await handler.handleLLMEnd?.(\n output,\n this.runId,\n this._parentRunId,\n this.tags,\n extraParams\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleLLMEnd: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n}\n\nexport class CallbackManagerForChainRun\n extends BaseRunManager\n implements BaseCallbackManagerMethods\n{\n getChild(tag?: string): CallbackManager {\n // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n const manager = new CallbackManager(this.runId);\n manager.setHandlers(this.inheritableHandlers);\n manager.addTags(this.inheritableTags);\n manager.addMetadata(this.inheritableMetadata);\n if (tag) {\n manager.addTags([tag], false);\n }\n return manager;\n }\n\n async handleChainError(\n err: Error | unknown,\n _runId?: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreChain) {\n try {\n await handler.handleChainError?.(\n err,\n this.runId,\n this._parentRunId,\n this.tags,\n kwargs\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleChainError: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleChainEnd(\n output: ChainValues,\n _runId?: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreChain) {\n try {\n await handler.handleChainEnd?.(\n output,\n this.runId,\n this._parentRunId,\n this.tags,\n kwargs\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleChainEnd: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleAgentAction(action: AgentAction): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreAgent) {\n try {\n await handler.handleAgentAction?.(\n action,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleAgentAction: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleAgentEnd(action: AgentFinish): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreAgent) {\n try {\n await handler.handleAgentEnd?.(\n action,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleAgentEnd: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n}\n\nexport class CallbackManagerForToolRun\n extends BaseRunManager\n implements BaseCallbackManagerMethods\n{\n getChild(tag?: string): CallbackManager {\n // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n const manager = new CallbackManager(this.runId);\n manager.setHandlers(this.inheritableHandlers);\n manager.addTags(this.inheritableTags);\n manager.addMetadata(this.inheritableMetadata);\n if (tag) {\n manager.addTags([tag], false);\n }\n return manager;\n }\n\n async handleToolError(err: Error | unknown): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreAgent) {\n try {\n await handler.handleToolError?.(\n err,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleToolError: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n async handleToolEvent(chunk: unknown): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreAgent) {\n try {\n await handler.handleToolEvent?.(\n chunk,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n if (handler.raiseError) throw err;\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n async handleToolEnd(output: any): Promise<void> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreAgent) {\n try {\n await handler.handleToolEnd?.(\n output,\n this.runId,\n this._parentRunId,\n this.tags\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleToolEnd: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n}\n\n/**\n * @example\n * ```typescript\n * const prompt = PromptTemplate.fromTemplate(\"What is the answer to {question}?\");\n *\n * // Example of using LLMChain with OpenAI and a simple prompt\n * const chain = new LLMChain({\n * llm: new ChatOpenAI({ model: \"gpt-4o-mini\", temperature: 0.9 }),\n * prompt,\n * });\n *\n * // Running the chain with a single question\n * const result = await chain.call({\n * question: \"What is the airspeed velocity of an unladen swallow?\",\n * });\n * console.log(\"The answer is:\", result);\n * ```\n */\nexport class CallbackManager\n extends BaseCallbackManager\n implements BaseCallbackManagerMethods\n{\n handlers: BaseCallbackHandler[] = [];\n\n inheritableHandlers: BaseCallbackHandler[] = [];\n\n tags: string[] = [];\n\n inheritableTags: string[] = [];\n\n metadata: Record<string, unknown> = {};\n\n inheritableMetadata: Record<string, unknown> = {};\n\n name = \"callback_manager\";\n\n public _parentRunId?: string;\n\n constructor(\n parentRunId?: string,\n options?: {\n handlers?: BaseCallbackHandler[];\n inheritableHandlers?: BaseCallbackHandler[];\n tags?: string[];\n inheritableTags?: string[];\n metadata?: Record<string, unknown>;\n inheritableMetadata?: Record<string, unknown>;\n }\n ) {\n super();\n this.handlers = options?.handlers ?? this.handlers;\n this.inheritableHandlers =\n options?.inheritableHandlers ?? this.inheritableHandlers;\n this.tags = options?.tags ?? this.tags;\n this.inheritableTags = options?.inheritableTags ?? this.inheritableTags;\n this.metadata = options?.metadata ?? this.metadata;\n this.inheritableMetadata =\n options?.inheritableMetadata ?? this.inheritableMetadata;\n this._parentRunId = parentRunId;\n }\n\n /**\n * Gets the parent run ID, if any.\n *\n * @returns The parent run ID.\n */\n getParentRunId() {\n return this._parentRunId;\n }\n\n async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string | undefined = undefined,\n _parentRunId: string | undefined = undefined,\n extraParams: Record<string, unknown> | undefined = undefined,\n _tags: string[] | undefined = undefined,\n _metadata: Record<string, unknown> | undefined = undefined,\n runName: string | undefined = undefined\n ): Promise<CallbackManagerForLLMRun[]> {\n return Promise.all(\n prompts.map(async (prompt, idx) => {\n // Can't have duplicate runs with the same run ID (if provided)\n const runId_ = idx === 0 && runId ? runId : uuidv7();\n\n await Promise.all(\n this.handlers.map((handler) => {\n if (handler.ignoreLLM) {\n return;\n }\n if (isBaseTracer(handler)) {\n // Create and add run to the run map.\n // We do this synchronously to avoid race conditions\n // when callbacks are backgrounded.\n handler._createRunForLLMStart(\n llm,\n [prompt],\n runId_,\n this._parentRunId,\n extraParams,\n this.tags,\n this.metadata,\n runName\n );\n }\n return consumeCallback(async () => {\n try {\n await handler.handleLLMStart?.(\n llm,\n [prompt],\n runId_,\n this._parentRunId,\n extraParams,\n this.tags,\n this.metadata,\n runName\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers);\n })\n );\n\n return new CallbackManagerForLLMRun(\n runId_,\n this.handlers,\n this.inheritableHandlers,\n this.tags,\n this.inheritableTags,\n this.metadata,\n this.inheritableMetadata,\n this._parentRunId\n );\n })\n );\n }\n\n async handleChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string | undefined = undefined,\n _parentRunId: string | undefined = undefined,\n extraParams: Record<string, unknown> | undefined = undefined,\n _tags: string[] | undefined = undefined,\n _metadata: Record<string, unknown> | undefined = undefined,\n runName: string | undefined = undefined\n ): Promise<CallbackManagerForLLMRun[]> {\n return Promise.all(\n messages.map(async (messageGroup, idx) => {\n // Can't have duplicate runs with the same run ID (if provided)\n const runId_ = idx === 0 && runId ? runId : uuidv7();\n\n await Promise.all(\n this.handlers.map((handler) => {\n if (handler.ignoreLLM) {\n return;\n }\n if (isBaseTracer(handler)) {\n // Create and add run to the run map.\n // We do this synchronously to avoid race conditions\n // when callbacks are backgrounded.\n handler._createRunForChatModelStart(\n llm,\n [messageGroup],\n runId_,\n this._parentRunId,\n extraParams,\n this.tags,\n this.metadata,\n runName\n );\n }\n return consumeCallback(async () => {\n try {\n if (handler.handleChatModelStart) {\n await handler.handleChatModelStart?.(\n llm,\n [messageGroup],\n runId_,\n this._parentRunId,\n extraParams,\n this.tags,\n this.metadata,\n runName\n );\n } else if (handler.handleLLMStart) {\n const messageString = getBufferString(messageGroup);\n await handler.handleLLMStart?.(\n llm,\n [messageString],\n runId_,\n this._parentRunId,\n extraParams,\n this.tags,\n this.metadata,\n runName\n );\n }\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers);\n })\n );\n\n return new CallbackManagerForLLMRun(\n runId_,\n this.handlers,\n this.inheritableHandlers,\n this.tags,\n this.inheritableTags,\n this.metadata,\n this.inheritableMetadata,\n this._parentRunId\n );\n })\n );\n }\n\n async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId = uuidv7(),\n runType: string | undefined = undefined,\n _tags: string[] | undefined = undefined,\n _metadata: Record<string, unknown> | undefined = undefined,\n runName: string | undefined = undefined,\n _parentRunId: string | undefined = undefined,\n extra: Record<string, unknown> | undefined = undefined\n ): Promise<CallbackManagerForChainRun> {\n await Promise.all(\n this.handlers.map((handler) => {\n if (handler.ignoreChain) {\n return;\n }\n if (isBaseTracer(handler)) {\n // Create and add run to the run map.\n // We do this synchronously to avoid race conditions\n // when callbacks are backgrounded.\n handler._createRunForChainStart(\n chain,\n inputs,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runType,\n runName,\n extra\n );\n }\n return consumeCallback(async () => {\n try {\n await handler.handleChainStart?.(\n chain,\n inputs,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runType,\n runName,\n extra\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleChainStart: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers);\n })\n );\n return new CallbackManagerForChainRun(\n runId,\n this.handlers,\n this.inheritableHandlers,\n this.tags,\n this.inheritableTags,\n this.metadata,\n this.inheritableMetadata,\n this._parentRunId\n );\n }\n\n async handleToolStart(\n tool: Serialized,\n input: string,\n runId = uuidv7(),\n _parentRunId: string | undefined = undefined,\n _tags: string[] | undefined = undefined,\n _metadata: Record<string, unknown> | undefined = undefined,\n runName: string | undefined = undefined,\n toolCallId: string | undefined = undefined\n ): Promise<CallbackManagerForToolRun> {\n await Promise.all(\n this.handlers.map((handler) => {\n if (handler.ignoreAgent) {\n return;\n }\n if (isBaseTracer(handler)) {\n // Create and add run to the run map.\n // We do this synchronously to avoid race conditions\n // when callbacks are backgrounded.\n handler._createRunForToolStart(\n tool,\n input,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runName\n );\n }\n return consumeCallback(async () => {\n try {\n await handler.handleToolStart?.(\n tool,\n input,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runName,\n toolCallId\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleToolStart: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers);\n })\n );\n return new CallbackManagerForToolRun(\n runId,\n this.handlers,\n this.inheritableHandlers,\n this.tags,\n this.inheritableTags,\n this.metadata,\n this.inheritableMetadata,\n this._parentRunId\n );\n }\n\n async handleRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string = uuidv7(),\n _parentRunId: string | undefined = undefined,\n _tags: string[] | undefined = undefined,\n _metadata: Record<string, unknown> | undefined = undefined,\n runName: string | undefined = undefined\n ): Promise<CallbackManagerForRetrieverRun> {\n await Promise.all(\n this.handlers.map((handler) => {\n if (handler.ignoreRetriever) {\n return;\n }\n if (isBaseTracer(handler)) {\n // Create and add run to the run map.\n // We do this synchronously to avoid race conditions\n // when callbacks are backgrounded.\n handler._createRunForRetrieverStart(\n retriever,\n query,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runName\n );\n }\n return consumeCallback(async () => {\n try {\n await handler.handleRetrieverStart?.(\n retriever,\n query,\n runId,\n this._parentRunId,\n this.tags,\n this.metadata,\n runName\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleRetrieverStart: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }, handler.awaitHandlers);\n })\n );\n return new CallbackManagerForRetrieverRun(\n runId,\n this.handlers,\n this.inheritableHandlers,\n this.tags,\n this.inheritableTags,\n this.metadata,\n this.inheritableMetadata,\n this._parentRunId\n );\n }\n\n async handleCustomEvent?(\n eventName: string,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n data: any,\n runId: string,\n _tags?: string[],\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n _metadata?: Record<string, any>\n ): // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Promise<any> {\n await Promise.all(\n this.handlers.map((handler) =>\n consumeCallback(async () => {\n if (!handler.ignoreCustomEvent) {\n try {\n await handler.handleCustomEvent?.(\n eventName,\n data,\n runId,\n this.tags,\n this.metadata\n );\n } catch (err) {\n const logFunction = handler.raiseError\n ? console.error\n : console.warn;\n logFunction(\n `Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`\n );\n if (handler.raiseError) {\n throw err;\n }\n }\n }\n }, handler.awaitHandlers)\n )\n );\n }\n\n addHandler(handler: BaseCallbackHandler, inherit = true): void {\n this.handlers.push(handler);\n if (inherit) {\n this.inheritableHandlers.push(handler);\n }\n }\n\n removeHandler(handler: BaseCallbackHandler): void {\n this.handlers = this.handlers.filter((_handler) => _handler !== handler);\n this.inheritableHandlers = this.inheritableHandlers.filter(\n (_handler) => _handler !== handler\n );\n }\n\n setHandlers(handlers: BaseCallbackHandler[], inherit = true): void {\n this.handlers = [];\n this.inheritableHandlers = [];\n for (const handler of handlers) {\n this.addHandler(handler, inherit);\n }\n }\n\n addTags(tags: string[], inherit = true): void {\n this.removeTags(tags); // Remove duplicates\n this.tags.push(...tags);\n if (inherit) {\n this.inheritableTags.push(...tags);\n }\n }\n\n removeTags(tags: string[]): void {\n this.tags = this.tags.filter((tag) => !tags.includes(tag));\n this.inheritableTags = this.inheritableTags.filter(\n (tag) => !tags.includes(tag)\n );\n }\n\n addMetadata(metadata: Record<string, unknown>, inherit = true): void {\n this.metadata = { ...this.metadata, ...metadata };\n if (inherit) {\n this.inheritableMetadata = { ...this.inheritableMetadata, ...metadata };\n }\n }\n\n removeMetadata(metadata: Record<string, unknown>): void {\n for (const key of Object.keys(metadata)) {\n delete this.metadata[key];\n delete this.inheritableMetadata[key];\n }\n }\n\n copy(\n additionalHandlers: BaseCallbackHandler[] = [],\n inherit = true\n ): CallbackManager {\n const manager = new CallbackManager(this._parentRunId);\n for (const handler of this.handlers) {\n const inheritable = this.inheritableHandlers.includes(handler);\n manager.addHandler(handler, inheritable);\n }\n for (const tag of this.tags) {\n const inheritable = this.inheritableTags.includes(tag);\n manager.addTags([tag], inheritable);\n }\n for (const key of Object.keys(this.metadata)) {\n const inheritable = Object.keys(this.inheritableMetadata).includes(key);\n manager.addMetadata({ [key]: this.metadata[key] }, inheritable);\n }\n for (const handler of additionalHandlers) {\n if (\n // Prevent multiple copies of console_callback_handler\n manager.handlers\n .filter((h) => h.name === \"console_callback_handler\")\n .some((h) => h.name === handler.name)\n ) {\n continue;\n }\n manager.addHandler(handler, inherit);\n }\n return manager;\n }\n\n static fromHandlers(handlers: CallbackHandlerMethods) {\n class Handler extends BaseCallbackHandler {\n name = uuidv7();\n\n constructor() {\n super();\n Object.assign(this, handlers);\n }\n }\n\n const manager = new this();\n manager.addHandler(new Handler());\n return manager;\n }\n\n static configure(\n inheritableHandlers?: Callbacks,\n localHandlers?: Callbacks,\n inheritableTags?: string[],\n localTags?: string[],\n inheritableMetadata?: Record<string, unknown>,\n localMetadata?: Record<string, unknown>,\n options?: CallbackManagerOptions\n ): CallbackManager | undefined {\n return this._configureSync(\n inheritableHandlers,\n localHandlers,\n inheritableTags,\n localTags,\n inheritableMetadata,\n localMetadata,\n options\n );\n }\n\n // TODO: Deprecate async method in favor of this one.\n static _configureSync(\n inheritableHandlers?: Callbacks,\n localHandlers?: Callbacks,\n inheritableTags?: string[],\n localTags?: string[],\n inheritableMetadata?: Record<string, unknown>,\n localMetadata?: Record<string, unknown>,\n options?: CallbackManagerOptions\n ) {\n let callbackManager: CallbackManager | undefined;\n if (inheritableHandlers || localHandlers) {\n if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {\n callbackManager = new CallbackManager();\n callbackManager.setHandlers(\n inheritableHandlers?.map(ensureHandler) ?? [],\n true\n );\n } else {\n callbackManager = inheritableHandlers;\n }\n\n callbackManager = callbackManager.copy(\n Array.isArray(localHandlers)\n ? localHandlers.map(ensureHandler)\n : localHandlers?.handlers,\n false\n );\n }\n\n const verboseEnabled =\n getEnvironmentVariable(\"LANGCHAIN_VERBOSE\") === \"true\" ||\n options?.verbose;\n\n const traceableRunTree = LangChainTracer.getTraceableRunTree();\n const tracingV2Enabled =\n traceableRunTree?.tracingEnabled ?? isTracingEnabled();\n\n // If tracing is explicitly disabled by the RunTree (e.g. via\n // traceable({ tracingEnabled: false })), remove any inherited\n // LangChainTracer handlers so that child runs don't trace either.\n if (traceableRunTree?.tracingEnabled === false && callbackManager) {\n const inheritedTracers = callbackManager.handlers.filter(\n (handler) => handler.name === \"langchain_tracer\"\n );\n for (const tracer of inheritedTracers) {\n callbackManager.removeHandler(tracer);\n }\n }\n\n const tracingEnabled =\n tracingV2Enabled ||\n (getEnvironmentVariable(\"LANGCHAIN_TRACING\") ?? false);\n if (verboseEnabled || tracingEnabled) {\n if (!callbackManager) {\n callbackManager = new CallbackManager();\n }\n if (\n verboseEnabled &&\n !callbackManager.handlers.some(\n (handler) => handler.name === ConsoleCallbackHandler.prototype.name\n )\n ) {\n const consoleHandler = new ConsoleCallbackHandler();\n callbackManager.addHandler(consoleHandler, true);\n }\n if (\n tracingEnabled &&\n !callbackManager.handlers.some(\n (handler) => handler.name === \"langchain_tracer\"\n )\n ) {\n if (tracingV2Enabled) {\n const tracerV2 = new LangChainTracer();\n callbackManager.addHandler(tracerV2, true);\n }\n }\n if (tracingV2Enabled) {\n // handoff between langchain and langsmith/traceable\n // override the parent run ID\n if (traceableRunTree && callbackManager._parentRunId === undefined) {\n callbackManager._parentRunId = traceableRunTree.id;\n const tracerV2 = callbackManager.handlers.find(\n (handler) => handler.name === \"langchain_tracer\"\n ) as LangChainTracer | undefined;\n tracerV2?.updateFromRunTree(traceableRunTree);\n }\n }\n }\n\n for (const {\n contextVar,\n inheritable = true,\n handlerClass,\n envVar,\n } of _getConfigureHooks()) {\n const createIfNotInContext =\n envVar && getEnvironmentVariable(envVar) === \"true\" && handlerClass;\n let handler: BaseCallbackHandler | undefined;\n const contextVarValue =\n contextVar !== undefined ? getContextVariable(contextVar) : undefined;\n if (contextVarValue && isBaseCallbackHandler(contextVarValue)) {\n handler = contextVarValue;\n } else if (createIfNotInContext) {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n handler = new (handlerClass as any)({});\n }\n if (handler !== undefined) {\n if (!callbackManager) {\n callbackManager = new CallbackManager();\n }\n\n if (!callbackManager.handlers.some((h) => h.name === handler!.name)) {\n callbackManager.addHandler(handler, inheritable);\n }\n }\n }\n\n if (inheritableTags || localTags) {\n if (callbackManager) {\n callbackManager.addTags(inheritableTags ?? []);\n callbackManager.addTags(localTags ?? [], false);\n }\n }\n if (inheritableMetadata || localMetadata) {\n if (callbackManager) {\n callbackManager.addMetadata(inheritableMetadata ?? {});\n callbackManager.addMetadata(localMetadata ?? {}, false);\n }\n }\n const tracerInheritableMetadata = options?.tracerInheritableMetadata;\n const tracerInheritableTags = options?.tracerInheritableTags;\n\n if (\n callbackManager &&\n (tracerInheritableMetadata || tracerInheritableTags)\n ) {\n const replacements = new Map<BaseCallbackHandler, BaseCallbackHandler>();\n const applyTracingConfig = (\n handler: BaseCallbackHandler\n ): BaseCallbackHandler => {\n if (!(handler instanceof LangChainTracer)) {\n return handler;\n }\n const existing = replacements.get(handler);\n if (existing !== undefined) {\n return existing;\n }\n const replacement = handler.copyWithTracingConfig({\n metadata: tracerInheritableMetadata,\n tags: tracerInheritableTags,\n });\n replacements.set(handler, replacement);\n return replacement;\n };\n\n callbackManager.handlers =\n callbackManager.handlers.map(applyTracingConfig);\n callbackManager.inheritableHandlers =\n callbackManager.inheritableHandlers.map(applyTracingConfig);\n }\n\n if (callbackManager) {\n const coalesced = coalesceTracers(\n callbackManager.handlers,\n callbackManager.inheritableHandlers\n );\n callbackManager.handlers = coalesced.handlers;\n callbackManager.inheritableHandlers = coalesced.inheritableHandlers;\n }\n\n return callbackManager;\n }\n}\n\nexport function ensureHandler(\n handler: BaseCallbackHandler | CallbackHandlerMethods\n): BaseCallbackHandler {\n if (\"name\" in handler) {\n return handler;\n }\n\n return BaseCallbackHandler.fromMethods(handler);\n}\n"],"mappings":"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"}