@langchain/classic 1.0.15 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/agents/mrkl/outputParser.d.cts +1 -1
  3. package/dist/agents/mrkl/outputParser.d.cts.map +1 -1
  4. package/dist/agents/mrkl/outputParser.d.ts +1 -1
  5. package/dist/agents/mrkl/outputParser.d.ts.map +1 -1
  6. package/dist/agents/openai_tools/index.d.cts +2 -2
  7. package/dist/agents/openai_tools/index.d.cts.map +1 -1
  8. package/dist/agents/openai_tools/index.d.ts +2 -2
  9. package/dist/agents/openai_tools/index.d.ts.map +1 -1
  10. package/dist/agents/react/index.d.cts +2 -2
  11. package/dist/agents/react/index.d.cts.map +1 -1
  12. package/dist/agents/react/index.d.ts +2 -2
  13. package/dist/agents/react/index.d.ts.map +1 -1
  14. package/dist/agents/structured_chat/index.d.cts +2 -2
  15. package/dist/agents/structured_chat/index.d.cts.map +1 -1
  16. package/dist/agents/structured_chat/index.d.ts +2 -2
  17. package/dist/agents/structured_chat/index.d.ts.map +1 -1
  18. package/dist/agents/tool_calling/index.d.cts +2 -2
  19. package/dist/agents/tool_calling/index.d.cts.map +1 -1
  20. package/dist/agents/tool_calling/index.d.ts +2 -2
  21. package/dist/agents/tool_calling/index.d.ts.map +1 -1
  22. package/dist/agents/toolkits/conversational_retrieval/tool.d.cts +1 -5
  23. package/dist/agents/toolkits/conversational_retrieval/tool.d.cts.map +1 -1
  24. package/dist/agents/toolkits/conversational_retrieval/tool.d.ts +1 -5
  25. package/dist/agents/toolkits/conversational_retrieval/tool.d.ts.map +1 -1
  26. package/dist/chains/base.cjs.map +1 -1
  27. package/dist/chains/base.js.map +1 -1
  28. package/dist/chains/llm_chain.cjs.map +1 -1
  29. package/dist/chains/llm_chain.js.map +1 -1
  30. package/dist/chains/openai_moderation.cjs.map +1 -1
  31. package/dist/chains/openai_moderation.js.map +1 -1
  32. package/dist/chat_models/universal.cjs.map +1 -1
  33. package/dist/chat_models/universal.js.map +1 -1
  34. package/dist/evaluation/agents/trajectory.d.ts +2 -2
  35. package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
  36. package/dist/evaluation/comparison/pairwise.d.ts +3 -3
  37. package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
  38. package/dist/evaluation/criteria/criteria.d.ts +3 -3
  39. package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
  40. package/dist/experimental/autogpt/prompt.cjs +1 -1
  41. package/dist/experimental/autogpt/prompt.cjs.map +1 -1
  42. package/dist/experimental/autogpt/prompt.js +1 -1
  43. package/dist/experimental/autogpt/prompt.js.map +1 -1
  44. package/dist/experimental/babyagi/agent.cjs.map +1 -1
  45. package/dist/experimental/babyagi/agent.js.map +1 -1
  46. package/dist/experimental/prompts/custom_format.d.cts.map +1 -1
  47. package/dist/experimental/prompts/handlebars.d.cts.map +1 -1
  48. package/dist/memory/buffer_token_memory.cjs.map +1 -1
  49. package/dist/memory/buffer_token_memory.js.map +1 -1
  50. package/dist/memory/summary.cjs.map +1 -1
  51. package/dist/memory/summary.js.map +1 -1
  52. package/dist/memory/summary_buffer.cjs.map +1 -1
  53. package/dist/memory/summary_buffer.js.map +1 -1
  54. package/dist/output_parsers/structured.cjs.map +1 -1
  55. package/dist/output_parsers/structured.js.map +1 -1
  56. package/dist/retrievers/matryoshka_retriever.d.cts.map +1 -1
  57. package/dist/retrievers/self_query/index.cjs.map +1 -1
  58. package/dist/retrievers/self_query/index.js.map +1 -1
  59. package/dist/retrievers/time_weighted.cjs.map +1 -1
  60. package/dist/retrievers/time_weighted.js.map +1 -1
  61. package/dist/smith/runner_utils.cjs.map +1 -1
  62. package/dist/smith/runner_utils.js.map +1 -1
  63. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"universal.js","names":["className: string","modelProvider?: string","config: ModelProviderConfig | undefined","e: unknown","model: string","params: Record<string, any>","modelName: string","fields: ConfigurableModelFields","config?: RunnableConfig","messages: BaseMessage[]","options?: this[\"ParsedCallOptions\"]","runManager?: CallbackManagerForLLMRun","tools: BindToolsInput[]","params?: Record<string, any>","modelParams: Record<string, any>","str: string","prefix: string","mergedConfig: RunnableConfig","remainingConfig: RunnableConfig","input: RunInput","options?: CallOptions","inputs: RunInput[]","options?: Partial<CallOptions> | Partial<CallOptions>[]","batchOptions?: RunnableBatchOptions","generator: AsyncGenerator<RunInput>","options: CallOptions","options?: Partial<CallOptions>","streamOptions?: Omit<LogStreamCallbackHandlerInput, \"autoClose\">","options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding?: \"text/event-stream\" | undefined;\n }","streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">","model?: string","fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n }","paramsCopy: Record<string, any>"],"sources":["../../src/chat_models/universal.ts"],"sourcesContent":["import {\n BaseLanguageModelInput,\n ToolDefinition,\n} from \"@langchain/core/language_models/base\";\nimport {\n BaseChatModel,\n BaseChatModelParams,\n BindToolsInput,\n type BaseChatModelCallOptions,\n} from \"@langchain/core/language_models/chat_models\";\nimport {\n BaseMessage,\n type AIMessageChunk,\n MessageStructure,\n} from \"@langchain/core/messages\";\nimport {\n type RunnableBatchOptions,\n RunnableBinding,\n type RunnableConfig,\n type RunnableToolLike,\n ensureConfig,\n} from \"@langchain/core/runnables\";\nimport {\n AsyncGeneratorWithSetup,\n IterableReadableStream,\n} from \"@langchain/core/utils/stream\";\nimport {\n type LogStreamCallbackHandlerInput,\n type RunLogPatch,\n type StreamEvent,\n} from \"@langchain/core/tracers/log_stream\";\nimport { type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { ChatResult } from \"@langchain/core/outputs\";\n\n// TODO: remove once `EventStreamCallbackHandlerInput` is exposed in core\ninterface EventStreamCallbackHandlerInput\n extends Omit<LogStreamCallbackHandlerInput, \"_schemaFormat\"> {}\n\nexport interface ConfigurableChatModelCallOptions\n extends BaseChatModelCallOptions {\n tools?: (\n | StructuredToolInterface\n | Record<string, unknown>\n | ToolDefinition\n | RunnableToolLike\n )[];\n}\n\n// Configuration map for model providers\nexport const MODEL_PROVIDER_CONFIG = {\n openai: {\n package: \"@langchain/openai\",\n className: \"ChatOpenAI\",\n },\n anthropic: {\n package: \"@langchain/anthropic\",\n className: \"ChatAnthropic\",\n },\n azure_openai: {\n package: \"@langchain/openai\",\n className: \"AzureChatOpenAI\",\n },\n cohere: {\n package: \"@langchain/cohere\",\n className: \"ChatCohere\",\n },\n \"google-vertexai\": {\n package: \"@langchain/google-vertexai\",\n className: \"ChatVertexAI\",\n },\n \"google-vertexai-web\": {\n package: \"@langchain/google-vertexai-web\",\n className: \"ChatVertexAI\",\n },\n \"google-genai\": {\n package: \"@langchain/google-genai\",\n className: \"ChatGoogleGenerativeAI\",\n },\n ollama: {\n package: \"@langchain/ollama\",\n className: \"ChatOllama\",\n },\n mistralai: {\n package: \"@langchain/mistralai\",\n className: \"ChatMistralAI\",\n },\n groq: {\n package: \"@langchain/groq\",\n className: \"ChatGroq\",\n },\n cerebras: {\n package: \"@langchain/cerebras\",\n className: \"ChatCerebras\",\n },\n bedrock: {\n package: \"@langchain/aws\",\n className: \"ChatBedrockConverse\",\n },\n deepseek: {\n package: \"@langchain/deepseek\",\n className: \"ChatDeepSeek\",\n },\n xai: {\n package: \"@langchain/xai\",\n className: \"ChatXAI\",\n },\n fireworks: {\n package: \"@langchain/community/chat_models/fireworks\",\n className: \"ChatFireworks\",\n hasCircularDependency: true,\n },\n together: {\n package: \"@langchain/community/chat_models/togetherai\",\n className: \"ChatTogetherAI\",\n hasCircularDependency: true,\n },\n perplexity: {\n package: \"@langchain/community/chat_models/perplexity\",\n className: \"ChatPerplexity\",\n hasCircularDependency: true,\n },\n} as const;\n\nconst SUPPORTED_PROVIDERS = Object.keys(\n MODEL_PROVIDER_CONFIG\n) as (keyof typeof MODEL_PROVIDER_CONFIG)[];\nexport type ChatModelProvider = keyof typeof MODEL_PROVIDER_CONFIG;\ntype ModelProviderConfig = {\n package: string;\n className: string;\n hasCircularDependency?: boolean;\n};\n\n/**\n * Helper function to get a chat model class by its class name or model provider.\n * @param className The class name (e.g., \"ChatOpenAI\", \"ChatAnthropic\")\n * @param modelProvider Optional model provider key for direct lookup (e.g., \"google-vertexai-web\").\n * When provided, uses direct lookup to avoid className collision issues.\n * @returns The imported model class or undefined if not found\n */\nexport async function getChatModelByClassName(\n className: string,\n modelProvider?: string\n) {\n let config: ModelProviderConfig | undefined;\n\n if (modelProvider) {\n // Direct lookup by modelProvider key - avoids className collision\n // (e.g., google-vertexai and google-vertexai-web both use \"ChatVertexAI\")\n config = MODEL_PROVIDER_CONFIG[\n modelProvider as keyof typeof MODEL_PROVIDER_CONFIG\n ] as ModelProviderConfig | undefined;\n } else {\n // Fallback to className lookup for backward compatibility\n const providerEntry = Object.entries(MODEL_PROVIDER_CONFIG).find(\n ([, c]) => c.className === className\n );\n config = providerEntry\n ? (providerEntry[1] as ModelProviderConfig)\n : undefined;\n }\n\n if (!config) {\n return undefined;\n }\n\n try {\n const module = await import(config.package);\n return module[config.className];\n } catch (e: unknown) {\n const err = e as Error;\n if (\n \"code\" in err &&\n err.code?.toString().includes(\"ERR_MODULE_NOT_FOUND\") &&\n \"message\" in err &&\n typeof err.message === \"string\"\n ) {\n const msg = err.message.startsWith(\"Error: \")\n ? err.message.slice(\"Error: \".length)\n : err.message;\n const attemptedPackage = msg\n .split(\"Cannot find package '\")[1]\n .split(\"'\")[0];\n throw new Error(\n `Unable to import ${attemptedPackage}. Please install with ` +\n `\\`npm install ${attemptedPackage}\\` or \\`pnpm install ${attemptedPackage}\\``\n );\n }\n throw e;\n }\n}\n\nasync function _initChatModelHelper(\n model: string,\n modelProvider?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any> = {}\n): Promise<BaseChatModel> {\n const modelProviderCopy = modelProvider || _inferModelProvider(model);\n if (!modelProviderCopy) {\n throw new Error(\n `Unable to infer model provider for { model: ${model} }, please specify modelProvider directly.`\n );\n }\n\n const config = MODEL_PROVIDER_CONFIG[\n modelProviderCopy as keyof typeof MODEL_PROVIDER_CONFIG\n ] as ModelProviderConfig;\n if (!config) {\n const supported = SUPPORTED_PROVIDERS.join(\", \");\n throw new Error(\n `Unsupported { modelProvider: ${modelProviderCopy} }.\\n\\nSupported model providers are: ${supported}`\n );\n }\n\n const { modelProvider: _unused, ...passedParams } = params;\n // Pass modelProviderCopy to use direct lookup and avoid className collision\n const ProviderClass = await getChatModelByClassName(\n config.className,\n modelProviderCopy\n );\n return new ProviderClass({ model, ...passedParams });\n}\n\n/**\n * Attempts to infer the model provider based on the given model name.\n *\n * @param {string} modelName - The name of the model to infer the provider for.\n * @returns {string | undefined} The inferred model provider name, or undefined if unable to infer.\n *\n * @example\n * _inferModelProvider(\"gpt-4\"); // returns \"openai\"\n * _inferModelProvider(\"claude-2\"); // returns \"anthropic\"\n * _inferModelProvider(\"unknown-model\"); // returns undefined\n */\nexport function _inferModelProvider(modelName: string): string | undefined {\n if (\n modelName.startsWith(\"gpt-3\") ||\n modelName.startsWith(\"gpt-4\") ||\n modelName.startsWith(\"gpt-5\") ||\n modelName.startsWith(\"o1\") ||\n modelName.startsWith(\"o3\") ||\n modelName.startsWith(\"o4\")\n ) {\n return \"openai\";\n } else if (modelName.startsWith(\"claude\")) {\n return \"anthropic\";\n } else if (modelName.startsWith(\"command\")) {\n return \"cohere\";\n } else if (modelName.startsWith(\"accounts/fireworks\")) {\n return \"fireworks\";\n } else if (modelName.startsWith(\"gemini\")) {\n return \"google-vertexai\";\n } else if (modelName.startsWith(\"amazon.\")) {\n return \"bedrock\";\n } else if (modelName.startsWith(\"mistral\")) {\n return \"mistralai\";\n } else if (modelName.startsWith(\"sonar\") || modelName.startsWith(\"pplx\")) {\n return \"perplexity\";\n } else {\n return undefined;\n }\n}\n\ninterface ConfigurableModelFields extends BaseChatModelParams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n defaultConfig?: Record<string, any>;\n /**\n * @default \"any\"\n */\n configurableFields?: string[] | \"any\";\n /**\n * @default \"\"\n */\n configPrefix?: string;\n /**\n * Methods which should be called after the model is initialized.\n * The key will be the method name, and the value will be the arguments.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queuedMethodOperations?: Record<string, any>;\n}\n\n/**\n * Internal class used to create chat models.\n *\n * @internal\n */\nexport class ConfigurableModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends\n ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions,\n> extends BaseChatModel<CallOptions, AIMessageChunk> {\n _llmType(): string {\n return \"chat_model\";\n }\n\n lc_namespace = [\"langchain\", \"chat_models\"];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _defaultConfig?: Record<string, any> = {};\n\n /**\n * @default \"any\"\n */\n _configurableFields: string[] | \"any\" = \"any\";\n\n /**\n * @default \"\"\n */\n _configPrefix: string;\n\n /**\n * Methods which should be called after the model is initialized.\n * The key will be the method name, and the value will be the arguments.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _queuedMethodOperations: Record<string, any> = {};\n\n constructor(fields: ConfigurableModelFields) {\n super(fields);\n this._defaultConfig = fields.defaultConfig ?? {};\n\n if (fields.configurableFields === \"any\") {\n this._configurableFields = \"any\";\n } else {\n this._configurableFields = fields.configurableFields ?? [\n \"model\",\n \"modelProvider\",\n ];\n }\n\n if (fields.configPrefix) {\n this._configPrefix = fields.configPrefix.endsWith(\"_\")\n ? fields.configPrefix\n : `${fields.configPrefix}_`;\n } else {\n this._configPrefix = \"\";\n }\n\n this._queuedMethodOperations =\n fields.queuedMethodOperations ?? this._queuedMethodOperations;\n }\n\n async _model(\n config?: RunnableConfig\n ): Promise<\n BaseChatModel<BaseChatModelCallOptions, AIMessageChunk<MessageStructure>>\n > {\n const params = { ...this._defaultConfig, ...this._modelParams(config) };\n let initializedModel = await _initChatModelHelper(\n params.model,\n params.modelProvider,\n params\n );\n\n // Apply queued method operations\n const queuedMethodOperationsEntries = Object.entries(\n this._queuedMethodOperations\n );\n if (queuedMethodOperationsEntries.length > 0) {\n for (const [method, args] of queuedMethodOperationsEntries) {\n if (\n method in initializedModel &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (initializedModel as any)[method] === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initializedModel = await (initializedModel as any)[method](...args);\n }\n }\n }\n\n return initializedModel;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const model = await this._model(options);\n return model._generate(messages, options ?? {}, runManager);\n }\n\n override bindTools(\n tools: BindToolsInput[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params?: Record<string, any>\n ): ConfigurableModel<RunInput, CallOptions> {\n const newQueuedOperations = { ...this._queuedMethodOperations };\n newQueuedOperations.bindTools = [tools, params];\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: this._defaultConfig,\n configurableFields: this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: newQueuedOperations,\n });\n }\n\n // Extract the input types from the `BaseModel` class.\n withStructuredOutput: BaseChatModel[\"withStructuredOutput\"] = (\n schema,\n ...args\n ): ReturnType<BaseChatModel[\"withStructuredOutput\"]> => {\n const newQueuedOperations = { ...this._queuedMethodOperations };\n newQueuedOperations.withStructuredOutput = [schema, ...args];\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: this._defaultConfig,\n configurableFields: this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: newQueuedOperations,\n }) as unknown as ReturnType<BaseChatModel[\"withStructuredOutput\"]>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _modelParams(config?: RunnableConfig): Record<string, any> {\n const configurable = config?.configurable ?? {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let modelParams: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(configurable)) {\n if (key.startsWith(this._configPrefix)) {\n const strippedKey = this._removePrefix(key, this._configPrefix);\n modelParams[strippedKey] = value;\n }\n }\n\n if (this._configurableFields !== \"any\") {\n modelParams = Object.fromEntries(\n Object.entries(modelParams).filter(([key]) =>\n this._configurableFields.includes(key)\n )\n );\n }\n\n return modelParams;\n }\n\n _removePrefix(str: string, prefix: string): string {\n return str.startsWith(prefix) ? str.slice(prefix.length) : str;\n }\n\n /**\n * Bind config to a Runnable, returning a new Runnable.\n * @param {RunnableConfig | undefined} [config] - The config to bind.\n * @returns {RunnableBinding<RunInput, RunOutput, CallOptions>} A new RunnableBinding with the bound config.\n */\n withConfig(\n config?: RunnableConfig\n ): RunnableBinding<RunInput, AIMessageChunk, CallOptions> {\n const mergedConfig: RunnableConfig = { ...(config || {}) };\n const modelParams = this._modelParams(mergedConfig);\n\n const remainingConfig: RunnableConfig = Object.fromEntries(\n Object.entries(mergedConfig).filter(([k]) => k !== \"configurable\")\n );\n\n remainingConfig.configurable = Object.fromEntries(\n Object.entries(mergedConfig.configurable || {}).filter(\n ([k]) =>\n this._configPrefix &&\n !Object.keys(modelParams).includes(\n this._removePrefix(k, this._configPrefix)\n )\n )\n );\n\n const newConfigurableModel = new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: { ...this._defaultConfig, ...modelParams },\n configurableFields: Array.isArray(this._configurableFields)\n ? [...this._configurableFields]\n : this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: this._queuedMethodOperations,\n });\n\n return new RunnableBinding<RunInput, AIMessageChunk, CallOptions>({\n config: mergedConfig,\n bound: newConfigurableModel,\n });\n }\n\n async invoke(\n input: RunInput,\n options?: CallOptions\n ): Promise<AIMessageChunk> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n return model.invoke(input, config);\n }\n\n async stream(\n input: RunInput,\n options?: CallOptions\n ): Promise<IterableReadableStream<AIMessageChunk>> {\n const model = await this._model(options);\n const wrappedGenerator = new AsyncGeneratorWithSetup({\n generator: await model.stream(input, options),\n config: options,\n });\n await wrappedGenerator.setup;\n return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);\n }\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions & { returnExceptions?: false }\n ): Promise<AIMessageChunk[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions & { returnExceptions: true }\n ): Promise<(AIMessageChunk | Error)[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions\n ): Promise<(AIMessageChunk | Error)[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions\n ): Promise<(AIMessageChunk | Error)[]> {\n // We can super this since the base runnable implementation of\n // `.batch` will call `.invoke` on each input.\n return super.batch(inputs, options, batchOptions);\n }\n\n async *transform(\n generator: AsyncGenerator<RunInput>,\n options: CallOptions\n ): AsyncGenerator<AIMessageChunk> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n\n yield* model.transform(generator, config);\n }\n\n async *streamLog(\n input: RunInput,\n options?: Partial<CallOptions>,\n streamOptions?: Omit<LogStreamCallbackHandlerInput, \"autoClose\">\n ): AsyncGenerator<RunLogPatch> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n\n yield* model.streamLog(input, config, {\n ...streamOptions,\n _schemaFormat: \"original\",\n includeNames: streamOptions?.includeNames,\n includeTypes: streamOptions?.includeTypes,\n includeTags: streamOptions?.includeTags,\n excludeNames: streamOptions?.excludeNames,\n excludeTypes: streamOptions?.excludeTypes,\n excludeTags: streamOptions?.excludeTags,\n });\n }\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & { version: \"v1\" | \"v2\" },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<StreamEvent>;\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding: \"text/event-stream\";\n },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<Uint8Array>;\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding?: \"text/event-stream\" | undefined;\n },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<StreamEvent | Uint8Array> {\n const outerThis = this;\n async function* wrappedGenerator() {\n const model = await outerThis._model(options);\n const config = ensureConfig(options);\n const eventStream = model.streamEvents(input, config, streamOptions);\n\n for await (const chunk of eventStream) {\n yield chunk;\n }\n }\n return IterableReadableStream.fromAsyncGenerator(wrappedGenerator());\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface InitChatModelFields extends Partial<Record<string, any>> {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n}\n\nexport type ConfigurableFields = \"any\" | string[];\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends\n ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions,\n>(\n model: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: never;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends\n ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions,\n>(\n model: never,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: never;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends\n ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions,\n>(\n model?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: ConfigurableFields;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\n// ################################# FOR CONTRIBUTORS #################################\n//\n// If adding support for a new provider, please append the provider\n// name to the supported list in the docstring below.\n//\n// ####################################################################################\n\n/**\n * Initialize a ChatModel from the model name and provider.\n * Must have the integration package corresponding to the model provider installed.\n *\n * @template {extends BaseLanguageModelInput = BaseLanguageModelInput} RunInput - The input type for the model.\n * @template {extends ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions} CallOptions - Call options for the model.\n *\n * @param {string | ChatModelProvider} [model] - The name of the model, e.g. \"gpt-4\", \"claude-3-opus-20240229\".\n * Can be prefixed with the model provider, e.g. \"openai:gpt-4\", \"anthropic:claude-3-opus-20240229\".\n * @param {Object} [fields] - Additional configuration options.\n * @param {string} [fields.modelProvider] - The model provider. Supported values include:\n * - openai (@langchain/openai)\n * - anthropic (@langchain/anthropic)\n * - azure_openai (@langchain/openai)\n * - google-vertexai (@langchain/google-vertexai)\n * - google-vertexai-web (@langchain/google-vertexai-web)\n * - google-genai (@langchain/google-genai)\n * - bedrock (@langchain/aws)\n * - cohere (@langchain/cohere)\n * - fireworks (@langchain/community/chat_models/fireworks)\n * - together (@langchain/community/chat_models/togetherai)\n * - mistralai (@langchain/mistralai)\n * - groq (@langchain/groq)\n * - ollama (@langchain/ollama)\n * - perplexity (@langchain/community/chat_models/perplexity)\n * - cerebras (@langchain/cerebras)\n * - deepseek (@langchain/deepseek)\n * - xai (@langchain/xai)\n * @param {string[] | \"any\"} [fields.configurableFields] - Which model parameters are configurable:\n * - undefined: No configurable fields.\n * - \"any\": All fields are configurable. (See Security Note in description)\n * - string[]: Specified fields are configurable.\n * @param {string} [fields.configPrefix] - Prefix for configurable fields at runtime.\n * @param {Record<string, any>} [fields.params] - Additional keyword args to pass to the ChatModel constructor.\n * @returns {Promise<ConfigurableModel<RunInput, CallOptions>>} A class which extends BaseChatModel.\n * @throws {Error} If modelProvider cannot be inferred or isn't supported.\n * @throws {Error} If the model provider integration package is not installed.\n *\n * @example Initialize non-configurable models\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const gpt4 = await initChatModel(\"openai:gpt-4\", {\n * temperature: 0.25,\n * });\n * const gpt4Result = await gpt4.invoke(\"what's your name\");\n *\n * const claude = await initChatModel(\"anthropic:claude-3-opus-20240229\", {\n * temperature: 0.25,\n * });\n * const claudeResult = await claude.invoke(\"what's your name\");\n *\n * const gemini = await initChatModel(\"gemini-1.5-pro\", {\n * modelProvider: \"google-vertexai\",\n * temperature: 0.25,\n * });\n * const geminiResult = await gemini.invoke(\"what's your name\");\n * ```\n *\n * @example Create a partially configurable model with no default model\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const configurableModel = await initChatModel(undefined, {\n * temperature: 0,\n * configurableFields: [\"model\", \"apiKey\"],\n * });\n *\n * const gpt4Result = await configurableModel.invoke(\"what's your name\", {\n * configurable: {\n * model: \"gpt-4\",\n * },\n * });\n *\n * const claudeResult = await configurableModel.invoke(\"what's your name\", {\n * configurable: {\n * model: \"claude-3-5-sonnet-20240620\",\n * },\n * });\n * ```\n *\n * @example Create a fully configurable model with a default model and a config prefix\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const configurableModelWithDefault = await initChatModel(\"gpt-4\", {\n * modelProvider: \"openai\",\n * configurableFields: \"any\",\n * configPrefix: \"foo\",\n * temperature: 0,\n * });\n *\n * const openaiResult = await configurableModelWithDefault.invoke(\n * \"what's your name\",\n * {\n * configurable: {\n * foo_apiKey: process.env.OPENAI_API_KEY,\n * },\n * }\n * );\n *\n * const claudeResult = await configurableModelWithDefault.invoke(\n * \"what's your name\",\n * {\n * configurable: {\n * foo_model: \"claude-3-5-sonnet-20240620\",\n * foo_modelProvider: \"anthropic\",\n * foo_temperature: 0.6,\n * foo_apiKey: process.env.ANTHROPIC_API_KEY,\n * },\n * }\n * );\n * ```\n *\n * @example Bind tools to a configurable model:\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n * import { z } from \"zod/v3\";\n * import { tool } from \"@langchain/core/tools\";\n *\n * const getWeatherTool = tool(\n * (input) => {\n * // Do something with the input\n * return JSON.stringify(input);\n * },\n * {\n * schema: z\n * .object({\n * location: z\n * .string()\n * .describe(\"The city and state, e.g. San Francisco, CA\"),\n * })\n * .describe(\"Get the current weather in a given location\"),\n * name: \"GetWeather\",\n * description: \"Get the current weather in a given location\",\n * }\n * );\n *\n * const getPopulationTool = tool(\n * (input) => {\n * // Do something with the input\n * return JSON.stringify(input);\n * },\n * {\n * schema: z\n * .object({\n * location: z\n * .string()\n * .describe(\"The city and state, e.g. San Francisco, CA\"),\n * })\n * .describe(\"Get the current population in a given location\"),\n * name: \"GetPopulation\",\n * description: \"Get the current population in a given location\",\n * }\n * );\n *\n * const configurableModel = await initChatModel(\"gpt-4\", {\n * configurableFields: [\"model\", \"modelProvider\", \"apiKey\"],\n * temperature: 0,\n * });\n *\n * const configurableModelWithTools = configurableModel.bindTools([\n * getWeatherTool,\n * getPopulationTool,\n * ]);\n *\n * const configurableToolResult = await configurableModelWithTools.invoke(\n * \"Which city is hotter today and which is bigger: LA or NY?\",\n * {\n * configurable: {\n * apiKey: process.env.OPENAI_API_KEY,\n * },\n * }\n * );\n *\n * const configurableToolResult2 = await configurableModelWithTools.invoke(\n * \"Which city is hotter today and which is bigger: LA or NY?\",\n * {\n * configurable: {\n * model: \"claude-3-5-sonnet-20240620\",\n * apiKey: process.env.ANTHROPIC_API_KEY,\n * },\n * }\n * );\n * ```\n *\n * @description\n * This function initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * Security Note: Setting `configurableFields` to \"any\" means fields like apiKey, baseUrl, etc.\n * can be altered at runtime, potentially redirecting model requests to a different service/user.\n * Make sure that if you're accepting untrusted configurations, you enumerate the\n * `configurableFields` explicitly.\n *\n * The function will attempt to infer the model provider from the model name if not specified.\n * Certain model name prefixes are associated with specific providers:\n * - gpt-3... or gpt-4... -> openai\n * - claude... -> anthropic\n * - amazon.... -> bedrock\n * - gemini... -> google-vertexai\n * - command... -> cohere\n * - accounts/fireworks... -> fireworks\n *\n * @since 0.2.11\n * @version 0.2.11\n */\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends\n ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions,\n>(\n model?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>> {\n // eslint-disable-next-line prefer-const\n let { configurableFields, configPrefix, modelProvider, ...params } = {\n configPrefix: \"\",\n ...(fields ?? {}),\n };\n if (modelProvider === undefined && model?.includes(\":\")) {\n const modelComponents = model.split(\":\", 2);\n if (SUPPORTED_PROVIDERS.includes(modelComponents[0] as ChatModelProvider)) {\n // eslint-disable-next-line no-param-reassign\n [modelProvider, model] = modelComponents;\n }\n }\n let configurableFieldsCopy = Array.isArray(configurableFields)\n ? [...configurableFields]\n : configurableFields;\n\n if (!model && configurableFieldsCopy === undefined) {\n configurableFieldsCopy = [\"model\", \"modelProvider\"];\n }\n if (configPrefix && configurableFieldsCopy === undefined) {\n console.warn(\n `{ configPrefix: ${configPrefix} } has been set but no fields are configurable. Set ` +\n `{ configurableFields: [...] } to specify the model params that are ` +\n `configurable.`\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const paramsCopy: Record<string, any> = { ...params };\n\n if (configurableFieldsCopy === undefined) {\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: {\n ...paramsCopy,\n model,\n modelProvider,\n },\n configPrefix,\n });\n } else {\n if (model) {\n paramsCopy.model = model;\n }\n if (modelProvider) {\n paramsCopy.modelProvider = modelProvider;\n }\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: paramsCopy,\n configPrefix,\n configurableFields: configurableFieldsCopy,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"universal.js","names":["className: string","modelProvider?: string","config: ModelProviderConfig | undefined","e: unknown","model: string","params: Record<string, any>","modelName: string","fields: ConfigurableModelFields","config?: RunnableConfig","messages: BaseMessage[]","options?: this[\"ParsedCallOptions\"]","runManager?: CallbackManagerForLLMRun","tools: BindToolsInput[]","params?: Record<string, any>","modelParams: Record<string, any>","str: string","prefix: string","mergedConfig: RunnableConfig","remainingConfig: RunnableConfig","input: RunInput","options?: CallOptions","inputs: RunInput[]","options?: Partial<CallOptions> | Partial<CallOptions>[]","batchOptions?: RunnableBatchOptions","generator: AsyncGenerator<RunInput>","options: CallOptions","options?: Partial<CallOptions>","streamOptions?: Omit<LogStreamCallbackHandlerInput, \"autoClose\">","options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding?: \"text/event-stream\" | undefined;\n }","streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">","model?: string","fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n }","paramsCopy: Record<string, any>"],"sources":["../../src/chat_models/universal.ts"],"sourcesContent":["import {\n BaseLanguageModelInput,\n ToolDefinition,\n} from \"@langchain/core/language_models/base\";\nimport {\n BaseChatModel,\n BaseChatModelParams,\n BindToolsInput,\n type BaseChatModelCallOptions,\n} from \"@langchain/core/language_models/chat_models\";\nimport {\n BaseMessage,\n type AIMessageChunk,\n MessageStructure,\n} from \"@langchain/core/messages\";\nimport {\n type RunnableBatchOptions,\n RunnableBinding,\n type RunnableConfig,\n type RunnableToolLike,\n ensureConfig,\n} from \"@langchain/core/runnables\";\nimport {\n AsyncGeneratorWithSetup,\n IterableReadableStream,\n} from \"@langchain/core/utils/stream\";\nimport {\n type LogStreamCallbackHandlerInput,\n type RunLogPatch,\n type StreamEvent,\n} from \"@langchain/core/tracers/log_stream\";\nimport { type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { ChatResult } from \"@langchain/core/outputs\";\n\n// TODO: remove once `EventStreamCallbackHandlerInput` is exposed in core\ninterface EventStreamCallbackHandlerInput extends Omit<\n LogStreamCallbackHandlerInput,\n \"_schemaFormat\"\n> {}\n\nexport interface ConfigurableChatModelCallOptions extends BaseChatModelCallOptions {\n tools?: (\n | StructuredToolInterface\n | Record<string, unknown>\n | ToolDefinition\n | RunnableToolLike\n )[];\n}\n\n// Configuration map for model providers\nexport const MODEL_PROVIDER_CONFIG = {\n openai: {\n package: \"@langchain/openai\",\n className: \"ChatOpenAI\",\n },\n anthropic: {\n package: \"@langchain/anthropic\",\n className: \"ChatAnthropic\",\n },\n azure_openai: {\n package: \"@langchain/openai\",\n className: \"AzureChatOpenAI\",\n },\n cohere: {\n package: \"@langchain/cohere\",\n className: \"ChatCohere\",\n },\n \"google-vertexai\": {\n package: \"@langchain/google-vertexai\",\n className: \"ChatVertexAI\",\n },\n \"google-vertexai-web\": {\n package: \"@langchain/google-vertexai-web\",\n className: \"ChatVertexAI\",\n },\n \"google-genai\": {\n package: \"@langchain/google-genai\",\n className: \"ChatGoogleGenerativeAI\",\n },\n ollama: {\n package: \"@langchain/ollama\",\n className: \"ChatOllama\",\n },\n mistralai: {\n package: \"@langchain/mistralai\",\n className: \"ChatMistralAI\",\n },\n groq: {\n package: \"@langchain/groq\",\n className: \"ChatGroq\",\n },\n cerebras: {\n package: \"@langchain/cerebras\",\n className: \"ChatCerebras\",\n },\n bedrock: {\n package: \"@langchain/aws\",\n className: \"ChatBedrockConverse\",\n },\n deepseek: {\n package: \"@langchain/deepseek\",\n className: \"ChatDeepSeek\",\n },\n xai: {\n package: \"@langchain/xai\",\n className: \"ChatXAI\",\n },\n fireworks: {\n package: \"@langchain/community/chat_models/fireworks\",\n className: \"ChatFireworks\",\n hasCircularDependency: true,\n },\n together: {\n package: \"@langchain/community/chat_models/togetherai\",\n className: \"ChatTogetherAI\",\n hasCircularDependency: true,\n },\n perplexity: {\n package: \"@langchain/community/chat_models/perplexity\",\n className: \"ChatPerplexity\",\n hasCircularDependency: true,\n },\n} as const;\n\nconst SUPPORTED_PROVIDERS = Object.keys(\n MODEL_PROVIDER_CONFIG\n) as (keyof typeof MODEL_PROVIDER_CONFIG)[];\nexport type ChatModelProvider = keyof typeof MODEL_PROVIDER_CONFIG;\ntype ModelProviderConfig = {\n package: string;\n className: string;\n hasCircularDependency?: boolean;\n};\n\n/**\n * Helper function to get a chat model class by its class name or model provider.\n * @param className The class name (e.g., \"ChatOpenAI\", \"ChatAnthropic\")\n * @param modelProvider Optional model provider key for direct lookup (e.g., \"google-vertexai-web\").\n * When provided, uses direct lookup to avoid className collision issues.\n * @returns The imported model class or undefined if not found\n */\nexport async function getChatModelByClassName(\n className: string,\n modelProvider?: string\n) {\n let config: ModelProviderConfig | undefined;\n\n if (modelProvider) {\n // Direct lookup by modelProvider key - avoids className collision\n // (e.g., google-vertexai and google-vertexai-web both use \"ChatVertexAI\")\n config = MODEL_PROVIDER_CONFIG[\n modelProvider as keyof typeof MODEL_PROVIDER_CONFIG\n ] as ModelProviderConfig | undefined;\n } else {\n // Fallback to className lookup for backward compatibility\n const providerEntry = Object.entries(MODEL_PROVIDER_CONFIG).find(\n ([, c]) => c.className === className\n );\n config = providerEntry\n ? (providerEntry[1] as ModelProviderConfig)\n : undefined;\n }\n\n if (!config) {\n return undefined;\n }\n\n try {\n const module = await import(config.package);\n return module[config.className];\n } catch (e: unknown) {\n const err = e as Error;\n if (\n \"code\" in err &&\n err.code?.toString().includes(\"ERR_MODULE_NOT_FOUND\") &&\n \"message\" in err &&\n typeof err.message === \"string\"\n ) {\n const msg = err.message.startsWith(\"Error: \")\n ? err.message.slice(\"Error: \".length)\n : err.message;\n const attemptedPackage = msg\n .split(\"Cannot find package '\")[1]\n .split(\"'\")[0];\n throw new Error(\n `Unable to import ${attemptedPackage}. Please install with ` +\n `\\`npm install ${attemptedPackage}\\` or \\`pnpm install ${attemptedPackage}\\``\n );\n }\n throw e;\n }\n}\n\nasync function _initChatModelHelper(\n model: string,\n modelProvider?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any> = {}\n): Promise<BaseChatModel> {\n const modelProviderCopy = modelProvider || _inferModelProvider(model);\n if (!modelProviderCopy) {\n throw new Error(\n `Unable to infer model provider for { model: ${model} }, please specify modelProvider directly.`\n );\n }\n\n const config = MODEL_PROVIDER_CONFIG[\n modelProviderCopy as keyof typeof MODEL_PROVIDER_CONFIG\n ] as ModelProviderConfig;\n if (!config) {\n const supported = SUPPORTED_PROVIDERS.join(\", \");\n throw new Error(\n `Unsupported { modelProvider: ${modelProviderCopy} }.\\n\\nSupported model providers are: ${supported}`\n );\n }\n\n const { modelProvider: _unused, ...passedParams } = params;\n // Pass modelProviderCopy to use direct lookup and avoid className collision\n const ProviderClass = await getChatModelByClassName(\n config.className,\n modelProviderCopy\n );\n return new ProviderClass({ model, ...passedParams });\n}\n\n/**\n * Attempts to infer the model provider based on the given model name.\n *\n * @param {string} modelName - The name of the model to infer the provider for.\n * @returns {string | undefined} The inferred model provider name, or undefined if unable to infer.\n *\n * @example\n * _inferModelProvider(\"gpt-4\"); // returns \"openai\"\n * _inferModelProvider(\"claude-2\"); // returns \"anthropic\"\n * _inferModelProvider(\"unknown-model\"); // returns undefined\n */\nexport function _inferModelProvider(modelName: string): string | undefined {\n if (\n modelName.startsWith(\"gpt-3\") ||\n modelName.startsWith(\"gpt-4\") ||\n modelName.startsWith(\"gpt-5\") ||\n modelName.startsWith(\"o1\") ||\n modelName.startsWith(\"o3\") ||\n modelName.startsWith(\"o4\")\n ) {\n return \"openai\";\n } else if (modelName.startsWith(\"claude\")) {\n return \"anthropic\";\n } else if (modelName.startsWith(\"command\")) {\n return \"cohere\";\n } else if (modelName.startsWith(\"accounts/fireworks\")) {\n return \"fireworks\";\n } else if (modelName.startsWith(\"gemini\")) {\n return \"google-vertexai\";\n } else if (modelName.startsWith(\"amazon.\")) {\n return \"bedrock\";\n } else if (modelName.startsWith(\"mistral\")) {\n return \"mistralai\";\n } else if (modelName.startsWith(\"sonar\") || modelName.startsWith(\"pplx\")) {\n return \"perplexity\";\n } else {\n return undefined;\n }\n}\n\ninterface ConfigurableModelFields extends BaseChatModelParams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n defaultConfig?: Record<string, any>;\n /**\n * @default \"any\"\n */\n configurableFields?: string[] | \"any\";\n /**\n * @default \"\"\n */\n configPrefix?: string;\n /**\n * Methods which should be called after the model is initialized.\n * The key will be the method name, and the value will be the arguments.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queuedMethodOperations?: Record<string, any>;\n}\n\n/**\n * Internal class used to create chat models.\n *\n * @internal\n */\nexport class ConfigurableModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends ConfigurableChatModelCallOptions =\n ConfigurableChatModelCallOptions,\n> extends BaseChatModel<CallOptions, AIMessageChunk> {\n _llmType(): string {\n return \"chat_model\";\n }\n\n lc_namespace = [\"langchain\", \"chat_models\"];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _defaultConfig?: Record<string, any> = {};\n\n /**\n * @default \"any\"\n */\n _configurableFields: string[] | \"any\" = \"any\";\n\n /**\n * @default \"\"\n */\n _configPrefix: string;\n\n /**\n * Methods which should be called after the model is initialized.\n * The key will be the method name, and the value will be the arguments.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _queuedMethodOperations: Record<string, any> = {};\n\n constructor(fields: ConfigurableModelFields) {\n super(fields);\n this._defaultConfig = fields.defaultConfig ?? {};\n\n if (fields.configurableFields === \"any\") {\n this._configurableFields = \"any\";\n } else {\n this._configurableFields = fields.configurableFields ?? [\n \"model\",\n \"modelProvider\",\n ];\n }\n\n if (fields.configPrefix) {\n this._configPrefix = fields.configPrefix.endsWith(\"_\")\n ? fields.configPrefix\n : `${fields.configPrefix}_`;\n } else {\n this._configPrefix = \"\";\n }\n\n this._queuedMethodOperations =\n fields.queuedMethodOperations ?? this._queuedMethodOperations;\n }\n\n async _model(\n config?: RunnableConfig\n ): Promise<\n BaseChatModel<BaseChatModelCallOptions, AIMessageChunk<MessageStructure>>\n > {\n const params = { ...this._defaultConfig, ...this._modelParams(config) };\n let initializedModel = await _initChatModelHelper(\n params.model,\n params.modelProvider,\n params\n );\n\n // Apply queued method operations\n const queuedMethodOperationsEntries = Object.entries(\n this._queuedMethodOperations\n );\n if (queuedMethodOperationsEntries.length > 0) {\n for (const [method, args] of queuedMethodOperationsEntries) {\n if (\n method in initializedModel &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (initializedModel as any)[method] === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initializedModel = await (initializedModel as any)[method](...args);\n }\n }\n }\n\n return initializedModel;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const model = await this._model(options);\n return model._generate(messages, options ?? {}, runManager);\n }\n\n override bindTools(\n tools: BindToolsInput[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params?: Record<string, any>\n ): ConfigurableModel<RunInput, CallOptions> {\n const newQueuedOperations = { ...this._queuedMethodOperations };\n newQueuedOperations.bindTools = [tools, params];\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: this._defaultConfig,\n configurableFields: this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: newQueuedOperations,\n });\n }\n\n // Extract the input types from the `BaseModel` class.\n withStructuredOutput: BaseChatModel[\"withStructuredOutput\"] = (\n schema,\n ...args\n ): ReturnType<BaseChatModel[\"withStructuredOutput\"]> => {\n const newQueuedOperations = { ...this._queuedMethodOperations };\n newQueuedOperations.withStructuredOutput = [schema, ...args];\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: this._defaultConfig,\n configurableFields: this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: newQueuedOperations,\n }) as unknown as ReturnType<BaseChatModel[\"withStructuredOutput\"]>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _modelParams(config?: RunnableConfig): Record<string, any> {\n const configurable = config?.configurable ?? {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let modelParams: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(configurable)) {\n if (key.startsWith(this._configPrefix)) {\n const strippedKey = this._removePrefix(key, this._configPrefix);\n modelParams[strippedKey] = value;\n }\n }\n\n if (this._configurableFields !== \"any\") {\n modelParams = Object.fromEntries(\n Object.entries(modelParams).filter(([key]) =>\n this._configurableFields.includes(key)\n )\n );\n }\n\n return modelParams;\n }\n\n _removePrefix(str: string, prefix: string): string {\n return str.startsWith(prefix) ? str.slice(prefix.length) : str;\n }\n\n /**\n * Bind config to a Runnable, returning a new Runnable.\n * @param {RunnableConfig | undefined} [config] - The config to bind.\n * @returns {RunnableBinding<RunInput, RunOutput, CallOptions>} A new RunnableBinding with the bound config.\n */\n withConfig(\n config?: RunnableConfig\n ): RunnableBinding<RunInput, AIMessageChunk, CallOptions> {\n const mergedConfig: RunnableConfig = { ...(config || {}) };\n const modelParams = this._modelParams(mergedConfig);\n\n const remainingConfig: RunnableConfig = Object.fromEntries(\n Object.entries(mergedConfig).filter(([k]) => k !== \"configurable\")\n );\n\n remainingConfig.configurable = Object.fromEntries(\n Object.entries(mergedConfig.configurable || {}).filter(\n ([k]) =>\n this._configPrefix &&\n !Object.keys(modelParams).includes(\n this._removePrefix(k, this._configPrefix)\n )\n )\n );\n\n const newConfigurableModel = new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: { ...this._defaultConfig, ...modelParams },\n configurableFields: Array.isArray(this._configurableFields)\n ? [...this._configurableFields]\n : this._configurableFields,\n configPrefix: this._configPrefix,\n queuedMethodOperations: this._queuedMethodOperations,\n });\n\n return new RunnableBinding<RunInput, AIMessageChunk, CallOptions>({\n config: mergedConfig,\n bound: newConfigurableModel,\n });\n }\n\n async invoke(\n input: RunInput,\n options?: CallOptions\n ): Promise<AIMessageChunk> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n return model.invoke(input, config);\n }\n\n async stream(\n input: RunInput,\n options?: CallOptions\n ): Promise<IterableReadableStream<AIMessageChunk>> {\n const model = await this._model(options);\n const wrappedGenerator = new AsyncGeneratorWithSetup({\n generator: await model.stream(input, options),\n config: options,\n });\n await wrappedGenerator.setup;\n return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);\n }\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions & { returnExceptions?: false }\n ): Promise<AIMessageChunk[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions & { returnExceptions: true }\n ): Promise<(AIMessageChunk | Error)[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions\n ): Promise<(AIMessageChunk | Error)[]>;\n\n async batch(\n inputs: RunInput[],\n options?: Partial<CallOptions> | Partial<CallOptions>[],\n batchOptions?: RunnableBatchOptions\n ): Promise<(AIMessageChunk | Error)[]> {\n // We can super this since the base runnable implementation of\n // `.batch` will call `.invoke` on each input.\n return super.batch(inputs, options, batchOptions);\n }\n\n async *transform(\n generator: AsyncGenerator<RunInput>,\n options: CallOptions\n ): AsyncGenerator<AIMessageChunk> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n\n yield* model.transform(generator, config);\n }\n\n async *streamLog(\n input: RunInput,\n options?: Partial<CallOptions>,\n streamOptions?: Omit<LogStreamCallbackHandlerInput, \"autoClose\">\n ): AsyncGenerator<RunLogPatch> {\n const model = await this._model(options);\n const config = ensureConfig(options);\n\n yield* model.streamLog(input, config, {\n ...streamOptions,\n _schemaFormat: \"original\",\n includeNames: streamOptions?.includeNames,\n includeTypes: streamOptions?.includeTypes,\n includeTags: streamOptions?.includeTags,\n excludeNames: streamOptions?.excludeNames,\n excludeTypes: streamOptions?.excludeTypes,\n excludeTags: streamOptions?.excludeTags,\n });\n }\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & { version: \"v1\" | \"v2\" },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<StreamEvent>;\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding: \"text/event-stream\";\n },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<Uint8Array>;\n\n streamEvents(\n input: RunInput,\n options: Partial<CallOptions> & {\n version: \"v1\" | \"v2\";\n encoding?: \"text/event-stream\" | undefined;\n },\n streamOptions?: Omit<EventStreamCallbackHandlerInput, \"autoClose\">\n ): IterableReadableStream<StreamEvent | Uint8Array> {\n const outerThis = this;\n async function* wrappedGenerator() {\n const model = await outerThis._model(options);\n const config = ensureConfig(options);\n const eventStream = model.streamEvents(input, config, streamOptions);\n\n for await (const chunk of eventStream) {\n yield chunk;\n }\n }\n return IterableReadableStream.fromAsyncGenerator(wrappedGenerator());\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface InitChatModelFields extends Partial<Record<string, any>> {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n}\n\nexport type ConfigurableFields = \"any\" | string[];\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends ConfigurableChatModelCallOptions =\n ConfigurableChatModelCallOptions,\n>(\n model: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: never;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends ConfigurableChatModelCallOptions =\n ConfigurableChatModelCallOptions,\n>(\n model: never,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: never;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends ConfigurableChatModelCallOptions =\n ConfigurableChatModelCallOptions,\n>(\n model?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: ConfigurableFields;\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>>;\n\n// ################################# FOR CONTRIBUTORS #################################\n//\n// If adding support for a new provider, please append the provider\n// name to the supported list in the docstring below.\n//\n// ####################################################################################\n\n/**\n * Initialize a ChatModel from the model name and provider.\n * Must have the integration package corresponding to the model provider installed.\n *\n * @template {extends BaseLanguageModelInput = BaseLanguageModelInput} RunInput - The input type for the model.\n * @template {extends ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions} CallOptions - Call options for the model.\n *\n * @param {string | ChatModelProvider} [model] - The name of the model, e.g. \"gpt-4\", \"claude-3-opus-20240229\".\n * Can be prefixed with the model provider, e.g. \"openai:gpt-4\", \"anthropic:claude-3-opus-20240229\".\n * @param {Object} [fields] - Additional configuration options.\n * @param {string} [fields.modelProvider] - The model provider. Supported values include:\n * - openai (@langchain/openai)\n * - anthropic (@langchain/anthropic)\n * - azure_openai (@langchain/openai)\n * - google-vertexai (@langchain/google-vertexai)\n * - google-vertexai-web (@langchain/google-vertexai-web)\n * - google-genai (@langchain/google-genai)\n * - bedrock (@langchain/aws)\n * - cohere (@langchain/cohere)\n * - fireworks (@langchain/community/chat_models/fireworks)\n * - together (@langchain/community/chat_models/togetherai)\n * - mistralai (@langchain/mistralai)\n * - groq (@langchain/groq)\n * - ollama (@langchain/ollama)\n * - perplexity (@langchain/community/chat_models/perplexity)\n * - cerebras (@langchain/cerebras)\n * - deepseek (@langchain/deepseek)\n * - xai (@langchain/xai)\n * @param {string[] | \"any\"} [fields.configurableFields] - Which model parameters are configurable:\n * - undefined: No configurable fields.\n * - \"any\": All fields are configurable. (See Security Note in description)\n * - string[]: Specified fields are configurable.\n * @param {string} [fields.configPrefix] - Prefix for configurable fields at runtime.\n * @param {Record<string, any>} [fields.params] - Additional keyword args to pass to the ChatModel constructor.\n * @returns {Promise<ConfigurableModel<RunInput, CallOptions>>} A class which extends BaseChatModel.\n * @throws {Error} If modelProvider cannot be inferred or isn't supported.\n * @throws {Error} If the model provider integration package is not installed.\n *\n * @example Initialize non-configurable models\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const gpt4 = await initChatModel(\"openai:gpt-4\", {\n * temperature: 0.25,\n * });\n * const gpt4Result = await gpt4.invoke(\"what's your name\");\n *\n * const claude = await initChatModel(\"anthropic:claude-3-opus-20240229\", {\n * temperature: 0.25,\n * });\n * const claudeResult = await claude.invoke(\"what's your name\");\n *\n * const gemini = await initChatModel(\"gemini-1.5-pro\", {\n * modelProvider: \"google-vertexai\",\n * temperature: 0.25,\n * });\n * const geminiResult = await gemini.invoke(\"what's your name\");\n * ```\n *\n * @example Create a partially configurable model with no default model\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const configurableModel = await initChatModel(undefined, {\n * temperature: 0,\n * configurableFields: [\"model\", \"apiKey\"],\n * });\n *\n * const gpt4Result = await configurableModel.invoke(\"what's your name\", {\n * configurable: {\n * model: \"gpt-4\",\n * },\n * });\n *\n * const claudeResult = await configurableModel.invoke(\"what's your name\", {\n * configurable: {\n * model: \"claude-3-5-sonnet-20240620\",\n * },\n * });\n * ```\n *\n * @example Create a fully configurable model with a default model and a config prefix\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n *\n * const configurableModelWithDefault = await initChatModel(\"gpt-4\", {\n * modelProvider: \"openai\",\n * configurableFields: \"any\",\n * configPrefix: \"foo\",\n * temperature: 0,\n * });\n *\n * const openaiResult = await configurableModelWithDefault.invoke(\n * \"what's your name\",\n * {\n * configurable: {\n * foo_apiKey: process.env.OPENAI_API_KEY,\n * },\n * }\n * );\n *\n * const claudeResult = await configurableModelWithDefault.invoke(\n * \"what's your name\",\n * {\n * configurable: {\n * foo_model: \"claude-3-5-sonnet-20240620\",\n * foo_modelProvider: \"anthropic\",\n * foo_temperature: 0.6,\n * foo_apiKey: process.env.ANTHROPIC_API_KEY,\n * },\n * }\n * );\n * ```\n *\n * @example Bind tools to a configurable model:\n * ```typescript\n * import { initChatModel } from \"langchain/chat_models/universal\";\n * import { z } from \"zod/v3\";\n * import { tool } from \"@langchain/core/tools\";\n *\n * const getWeatherTool = tool(\n * (input) => {\n * // Do something with the input\n * return JSON.stringify(input);\n * },\n * {\n * schema: z\n * .object({\n * location: z\n * .string()\n * .describe(\"The city and state, e.g. San Francisco, CA\"),\n * })\n * .describe(\"Get the current weather in a given location\"),\n * name: \"GetWeather\",\n * description: \"Get the current weather in a given location\",\n * }\n * );\n *\n * const getPopulationTool = tool(\n * (input) => {\n * // Do something with the input\n * return JSON.stringify(input);\n * },\n * {\n * schema: z\n * .object({\n * location: z\n * .string()\n * .describe(\"The city and state, e.g. San Francisco, CA\"),\n * })\n * .describe(\"Get the current population in a given location\"),\n * name: \"GetPopulation\",\n * description: \"Get the current population in a given location\",\n * }\n * );\n *\n * const configurableModel = await initChatModel(\"gpt-4\", {\n * configurableFields: [\"model\", \"modelProvider\", \"apiKey\"],\n * temperature: 0,\n * });\n *\n * const configurableModelWithTools = configurableModel.bindTools([\n * getWeatherTool,\n * getPopulationTool,\n * ]);\n *\n * const configurableToolResult = await configurableModelWithTools.invoke(\n * \"Which city is hotter today and which is bigger: LA or NY?\",\n * {\n * configurable: {\n * apiKey: process.env.OPENAI_API_KEY,\n * },\n * }\n * );\n *\n * const configurableToolResult2 = await configurableModelWithTools.invoke(\n * \"Which city is hotter today and which is bigger: LA or NY?\",\n * {\n * configurable: {\n * model: \"claude-3-5-sonnet-20240620\",\n * apiKey: process.env.ANTHROPIC_API_KEY,\n * },\n * }\n * );\n * ```\n *\n * @description\n * This function initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * Security Note: Setting `configurableFields` to \"any\" means fields like apiKey, baseUrl, etc.\n * can be altered at runtime, potentially redirecting model requests to a different service/user.\n * Make sure that if you're accepting untrusted configurations, you enumerate the\n * `configurableFields` explicitly.\n *\n * The function will attempt to infer the model provider from the model name if not specified.\n * Certain model name prefixes are associated with specific providers:\n * - gpt-3... or gpt-4... -> openai\n * - claude... -> anthropic\n * - amazon.... -> bedrock\n * - gemini... -> google-vertexai\n * - command... -> cohere\n * - accounts/fireworks... -> fireworks\n *\n * @since 0.2.11\n * @version 0.2.11\n */\nexport async function initChatModel<\n RunInput extends BaseLanguageModelInput = BaseLanguageModelInput,\n CallOptions extends ConfigurableChatModelCallOptions =\n ConfigurableChatModelCallOptions,\n>(\n model?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fields?: Partial<Record<string, any>> & {\n modelProvider?: string;\n configurableFields?: string[] | \"any\";\n configPrefix?: string;\n }\n): Promise<ConfigurableModel<RunInput, CallOptions>> {\n // eslint-disable-next-line prefer-const\n let { configurableFields, configPrefix, modelProvider, ...params } = {\n configPrefix: \"\",\n ...(fields ?? {}),\n };\n if (modelProvider === undefined && model?.includes(\":\")) {\n const modelComponents = model.split(\":\", 2);\n if (SUPPORTED_PROVIDERS.includes(modelComponents[0] as ChatModelProvider)) {\n // eslint-disable-next-line no-param-reassign\n [modelProvider, model] = modelComponents;\n }\n }\n let configurableFieldsCopy = Array.isArray(configurableFields)\n ? [...configurableFields]\n : configurableFields;\n\n if (!model && configurableFieldsCopy === undefined) {\n configurableFieldsCopy = [\"model\", \"modelProvider\"];\n }\n if (configPrefix && configurableFieldsCopy === undefined) {\n console.warn(\n `{ configPrefix: ${configPrefix} } has been set but no fields are configurable. Set ` +\n `{ configurableFields: [...] } to specify the model params that are ` +\n `configurable.`\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const paramsCopy: Record<string, any> = { ...params };\n\n if (configurableFieldsCopy === undefined) {\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: {\n ...paramsCopy,\n model,\n modelProvider,\n },\n configPrefix,\n });\n } else {\n if (model) {\n paramsCopy.model = model;\n }\n if (modelProvider) {\n paramsCopy.modelProvider = modelProvider;\n }\n return new ConfigurableModel<RunInput, CallOptions>({\n defaultConfig: paramsCopy,\n configPrefix,\n configurableFields: configurableFieldsCopy,\n });\n }\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { BaseCallbackConfig, Callbacks } from "@langchain/core/callbacks/manager
6
6
  import { BaseLLMOutputParser } from "@langchain/core/output_parsers";
7
7
  import { ChainValues } from "@langchain/core/utils/types";
8
8
  import { BaseChatModel } from "@langchain/core/language_models/chat_models";
9
- import * as _langchain_core_prompt_values5 from "@langchain/core/prompt_values";
9
+ import * as _langchain_core_prompt_values1 from "@langchain/core/prompt_values";
10
10
  import { AgentStep } from "@langchain/core/agents";
11
11
 
12
12
  //#region src/evaluation/agents/trajectory.d.ts
@@ -31,7 +31,7 @@ declare class TrajectoryEvalChain extends AgentTrajectoryEvaluator {
31
31
  requiresInput: boolean;
32
32
  requiresReference: boolean;
33
33
  outputParser: TrajectoryOutputParser;
34
- static resolveTrajectoryPrompt(prompt?: BasePromptTemplate | undefined, agentTools?: StructuredToolInterface[]): BasePromptTemplate<any, _langchain_core_prompt_values5.BasePromptValueInterface, any>;
34
+ static resolveTrajectoryPrompt(prompt?: BasePromptTemplate | undefined, agentTools?: StructuredToolInterface[]): BasePromptTemplate<any, _langchain_core_prompt_values1.BasePromptValueInterface, any>;
35
35
  /**
36
36
  * Get the description of the agent tools.
37
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory.d.ts","names":["StructuredToolInterface","BaseLLMOutputParser","AgentStep","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","BaseChatModel","AgentTrajectoryEvaluator","EvalOutputType","LLMEvalChainInput","LLMTrajectoryEvaluatorArgs","ExtractLLMCallOptions","TrajectoryOutputParser","Promise","TrajectoryEvalChain","_langchain_core_prompt_values5","BasePromptValueInterface","Omit","Partial"],"sources":["../../../src/evaluation/agents/trajectory.d.ts"],"sourcesContent":["import type { StructuredToolInterface } from \"@langchain/core/tools\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport { AgentTrajectoryEvaluator, EvalOutputType, LLMEvalChainInput, LLMTrajectoryEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\n/**\n * A parser for the output of the TrajectoryEvalChain.\n */\nexport declare class TrajectoryOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n static lc_name(): string;\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\n/**\n * A chain for evaluating ReAct style agents.\n *\n * This chain is used to evaluate ReAct style agents by reasoning about\n * the sequence of actions taken and their outcomes.\n */\nexport declare class TrajectoryEvalChain extends AgentTrajectoryEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n outputParser: TrajectoryOutputParser;\n static resolveTrajectoryPrompt(prompt?: BasePromptTemplate | undefined, agentTools?: StructuredToolInterface[]): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Get the description of the agent tools.\n *\n * @returns The description of the agent tools.\n */\n static toolsDescription(agentTools: StructuredToolInterface[]): string;\n /**\n * Create a new TrajectoryEvalChain.\n * @param llm\n * @param agentTools - The tools used by the agent.\n * @param chainOptions - The options for the chain.\n */\n static fromLLM(llm: BaseChatModel, agentTools?: StructuredToolInterface[], chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<TrajectoryEvalChain>;\n _prepareOutput(result: ChainValues): any;\n /**\n * Get the agent trajectory as a formatted string.\n *\n * @param steps - The agent trajectory.\n * @returns The formatted agent trajectory.\n */\n getAgentTrajectory(steps: AgentStep[]): string;\n formatReference(reference?: string): string;\n _evaluateAgentTrajectory(args: LLMTrajectoryEvaluatorArgs, callOptions: ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n//# sourceMappingURL=trajectory.d.ts.map"],"mappings":";;;;;;;;;;;;;;;AAYqBe,cAAAA,sBAAAA,SAA+Bd,mBAAT,CAA6BU,cAA7B,CAAA,CAAA;EAA6BA,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAG3CN,YAAAA,EAAAA,MAAAA,EAAAA;EAAeD,WAAAA,CAAAA,WAAAA,EAAfC,UAAeD,EAAAA,GAAAA,cAAAA,EAAAA,EAAAA,UAAAA,EAA8BG,SAA9BH,GAAAA,SAAAA,CAAAA,EAAsDY,OAAtDZ,CAA8DO,cAA9DP,CAAAA;;;;;AAH2B;AAWvE;;AAO4CE,cAPvBW,mBAAAA,SAA4BP,wBAAAA,CAOLJ;EAA6CN,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAuBkB,aAAAA,CAAAA,EAAAA,MAAAA;EAAKZ,cAAAA,CAAAA,EAAAA,MAAAA;EAM7EN,aAAAA,EAAAA,OAAAA;EAOhBS,iBAAAA,EAAAA,OAAAA;EAA4BT,YAAAA,EAdlCe,sBAckCf;EAAuDY,OAAAA,uBAAAA,CAAAA,MAAAA,CAAAA,EAb/DN,kBAa+DM,GAAAA,SAAAA,EAAAA,UAAAA,CAAAA,EAblBZ,uBAakBY,EAAAA,CAAAA,EAbUN,kBAaVM,CAAAA,GAAAA,EAbKM,8BAAAA,CAAqEC,wBAAAA,EAa1EP,GAAAA,CAAAA;EAALQ;;;;;EAQxElB,OAAAA,gBAAAA,CAAAA,UAAAA,EAfUF,uBAeVE,EAAAA,CAAAA,EAAAA,MAAAA;EAEKW;;;;;;EA9BcH,OAAAA,OAAAA,CAAAA,GAAAA,EAoBzBD,aApByBC,EAAAA,UAAAA,CAAAA,EAoBGV,uBApBHU,EAAAA,EAAAA,YAAAA,CAAAA,EAoB6CW,OApB7CX,CAoBqDU,IApBrDV,CAoB0DE,iBApB1DF,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAoBuFM,OApBvFN,CAoB+FO,mBApB/FP,CAAAA;EAAwB,cAAA,CAAA,MAAA,EAqB9CP,WArB8C,CAAA,EAAA,GAAA;;;;;;;4BA4B3CD;;iCAEKW,yCAAyCC,6CAA6CP,YAAYC,qBAAqBQ,QAAQb"}
1
+ {"version":3,"file":"trajectory.d.ts","names":["StructuredToolInterface","BaseLLMOutputParser","AgentStep","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","BaseChatModel","AgentTrajectoryEvaluator","EvalOutputType","LLMEvalChainInput","LLMTrajectoryEvaluatorArgs","ExtractLLMCallOptions","TrajectoryOutputParser","Promise","TrajectoryEvalChain","_langchain_core_prompt_values1","BasePromptValueInterface","Omit","Partial"],"sources":["../../../src/evaluation/agents/trajectory.d.ts"],"sourcesContent":["import type { StructuredToolInterface } from \"@langchain/core/tools\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport { AgentTrajectoryEvaluator, EvalOutputType, LLMEvalChainInput, LLMTrajectoryEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\n/**\n * A parser for the output of the TrajectoryEvalChain.\n */\nexport declare class TrajectoryOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n static lc_name(): string;\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\n/**\n * A chain for evaluating ReAct style agents.\n *\n * This chain is used to evaluate ReAct style agents by reasoning about\n * the sequence of actions taken and their outcomes.\n */\nexport declare class TrajectoryEvalChain extends AgentTrajectoryEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n outputParser: TrajectoryOutputParser;\n static resolveTrajectoryPrompt(prompt?: BasePromptTemplate | undefined, agentTools?: StructuredToolInterface[]): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Get the description of the agent tools.\n *\n * @returns The description of the agent tools.\n */\n static toolsDescription(agentTools: StructuredToolInterface[]): string;\n /**\n * Create a new TrajectoryEvalChain.\n * @param llm\n * @param agentTools - The tools used by the agent.\n * @param chainOptions - The options for the chain.\n */\n static fromLLM(llm: BaseChatModel, agentTools?: StructuredToolInterface[], chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<TrajectoryEvalChain>;\n _prepareOutput(result: ChainValues): any;\n /**\n * Get the agent trajectory as a formatted string.\n *\n * @param steps - The agent trajectory.\n * @returns The formatted agent trajectory.\n */\n getAgentTrajectory(steps: AgentStep[]): string;\n formatReference(reference?: string): string;\n _evaluateAgentTrajectory(args: LLMTrajectoryEvaluatorArgs, callOptions: ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n//# sourceMappingURL=trajectory.d.ts.map"],"mappings":";;;;;;;;;;;;;;;AAYqBe,cAAAA,sBAAAA,SAA+Bd,mBAAT,CAA6BU,cAA7B,CAAA,CAAA;EAA6BA,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAG3CN,YAAAA,EAAAA,MAAAA,EAAAA;EAAeD,WAAAA,CAAAA,WAAAA,EAAfC,UAAeD,EAAAA,GAAAA,cAAAA,EAAAA,EAAAA,UAAAA,EAA8BG,SAA9BH,GAAAA,SAAAA,CAAAA,EAAsDY,OAAtDZ,CAA8DO,cAA9DP,CAAAA;;;;;AAH2B;AAWvE;;AAO4CE,cAPvBW,mBAAAA,SAA4BP,wBAAAA,CAOLJ;EAA6CN,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAuBkB,aAAAA,CAAAA,EAAAA,MAAAA;EAAKZ,cAAAA,CAAAA,EAAAA,MAAAA;EAM7EN,aAAAA,EAAAA,OAAAA;EAOhBS,iBAAAA,EAAAA,OAAAA;EAA4BT,YAAAA,EAdlCe,sBAckCf;EAAuDY,OAAAA,uBAAAA,CAAAA,MAAAA,CAAAA,EAb/DN,kBAa+DM,GAAAA,SAAAA,EAAAA,UAAAA,CAAAA,EAblBZ,uBAakBY,EAAAA,CAAAA,EAbUN,kBAaVM,CAAAA,GAAAA,EAbKM,8BAAAA,CAAqEC,wBAAAA,EAa1EP,GAAAA,CAAAA;EAALQ;;;;;EAQxElB,OAAAA,gBAAAA,CAAAA,UAAAA,EAfUF,uBAeVE,EAAAA,CAAAA,EAAAA,MAAAA;EAEKW;;;;;;EA9BcH,OAAAA,OAAAA,CAAAA,GAAAA,EAoBzBD,aApByBC,EAAAA,UAAAA,CAAAA,EAoBGV,uBApBHU,EAAAA,EAAAA,YAAAA,CAAAA,EAoB6CW,OApB7CX,CAoBqDU,IApBrDV,CAoB0DE,iBApB1DF,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAoBuFM,OApBvFN,CAoB+FO,mBApB/FP,CAAAA;EAAwB,cAAA,CAAA,MAAA,EAqB9CP,WArB8C,CAAA,EAAA,GAAA;;;;;;;4BA4B3CD;;iCAEKW,yCAAyCC,6CAA6CP,YAAYC,qBAAqBQ,QAAQb"}
@@ -6,7 +6,7 @@ import { ChatGeneration, Generation } from "@langchain/core/outputs";
6
6
  import { BaseCallbackConfig, Callbacks } from "@langchain/core/callbacks/manager";
7
7
  import { BaseLLMOutputParser } from "@langchain/core/output_parsers";
8
8
  import { ChainValues } from "@langchain/core/utils/types";
9
- import * as _langchain_core_prompt_values1 from "@langchain/core/prompt_values";
9
+ import * as _langchain_core_prompt_values4 from "@langchain/core/prompt_values";
10
10
 
11
11
  //#region src/evaluation/comparison/pairwise.d.ts
12
12
  /**
@@ -30,7 +30,7 @@ declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {
30
30
  skipReferenceWarning: string;
31
31
  outputParser: PairwiseStringResultOutputParser;
32
32
  static resolvePairwiseCriteria(criteria?: CriteriaLike): Record<string, string>;
33
- static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values1.BasePromptValueInterface, any>;
33
+ static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values4.BasePromptValueInterface, any>;
34
34
  /**
35
35
  * Create a new instance of the PairwiseStringEvalChain.
36
36
  * @param llm
@@ -49,7 +49,7 @@ declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {
49
49
  declare class LabeledPairwiseStringEvalChain extends PairwiseStringEvalChain {
50
50
  static lc_name(): string;
51
51
  requiresReference: boolean;
52
- static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values1.BasePromptValueInterface, any>;
52
+ static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values4.BasePromptValueInterface, any>;
53
53
  }
54
54
  //#endregion
55
55
  export { LabeledPairwiseStringEvalChain, PairwiseStringEvalChain, PairwiseStringResultOutputParser };
@@ -1 +1 @@
1
- {"version":3,"file":"pairwise.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMPairwiseStringEvaluator","LLMPairwiseStringEvaluatorArgs","ExtractLLMCallOptions","CriteriaLike","PairwiseStringResultOutputParser","Promise","PairwiseStringEvalChain","Record","_langchain_core_prompt_values1","BasePromptValueInterface","Omit","Partial","LabeledPairwiseStringEvalChain"],"sources":["../../../src/evaluation/comparison/pairwise.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMPairwiseStringEvaluator, LLMPairwiseStringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { CriteriaLike } from \"../criteria/criteria.js\";\n/**\n * A parser for the output of the PairwiseStringEvalChain.\n */\nexport declare class PairwiseStringResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n static lc_name(): string;\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs.\n */\nexport declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: PairwiseStringResultOutputParser;\n static resolvePairwiseCriteria(criteria?: CriteriaLike): Record<string, string>;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the PairwiseStringEvalChain.\n * @param llm\n * @param criteria The criteria to use for evaluation.\n * @param chainOptions Options to pass to the chain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<PairwiseStringEvalChain>;\n _prepareOutput(result: ChainValues): any;\n _evaluateStringPairs(args: LLMPairwiseStringEvaluatorArgs, callOptions: ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs,\n * with labeled preferences.\n */\nexport declare class LabeledPairwiseStringEvalChain extends PairwiseStringEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=pairwise.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWqBc,cAAAA,gCAAAA,SAAyCb,mBAAT,CAA6BO,cAA7B,CAAA,CAAA;EAA6BA,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAGrDJ,YAAAA,EAAAA,MAAAA,EAAAA;EAAeD,WAAAA,CAAAA,WAAAA,EAAfC,UAAeD,EAAAA,GAAAA,cAAAA,EAAAA,EAAAA,UAAAA,EAA8BG,SAA9BH,GAAAA,SAAAA,CAAAA,EAAsDY,OAAtDZ,CAA8DK,cAA9DL,CAAAA;;;;;AAHqC;AAS5Da,cAAAA,uBAAAA,SAAgCN,0BAAAA,CAAT;EAO1BI,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAC4BD,aAAAA,CAAAA,EAAAA,MAAAA;EAAeI,cAAAA,CAAAA,EAAAA,MAAAA;EACnBZ,aAAAA,EAAAA,OAAAA;EAAkBa,iBAAAA,EAAAA,OAAAA;EAAGb,oBAAAA,EAAAA,MAAAA;EAOvCL,YAAAA,EATNc,gCASMd;EAAuCa,OAAAA,uBAAAA,CAAAA,QAAAA,CAAAA,EARjBA,YAQiBA,CAAAA,EARFI,MAQEJ,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAA0CJ,OAAAA,qBAAAA,CAAAA,MAAAA,CAAAA,EAP/DJ,kBAO+DI,CAAAA,EAP1CJ,kBAO0CI,CAAAA,GAAAA,EAP7CS,8BAAAA,CAAmEC,wBAAAA,EAOtBV,GAAAA,CAAAA;EAALW;;;;;;EAExBR,OAAAA,OAAAA,CAAAA,GAAAA,EAFpDZ,0BAEoDY,EAAAA,QAAAA,CAAAA,EAFbC,YAEaD,EAAAA,YAAAA,CAAAA,EAFgBS,OAEhBT,CAFwBQ,IAExBR,CAF6BH,iBAE7BG,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAF0DG,OAE1DH,CAFkEI,uBAElEJ,CAAAA;EAA6CN,cAAAA,CAAAA,MAAAA,EAD9FJ,WAC8FI,CAAAA,EAAAA,GAAAA;EAAYC,oBAAAA,CAAAA,IAAAA,EAAtGI,8BAAsGJ,EAAAA,WAAAA,EAAzDK,qBAAyDL,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAZD,SAAYC,GAAAA,kBAAAA,CAAAA,EAAqBQ,OAArBR,CAA6BL,WAA7BK,CAAAA;;;;AAlBtD;AAyB/E;;AAG4DW,cAHvCI,8BAAAA,SAAuCN,uBAAAA,CAGmEG;EAAhEd,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAHHW,iBAAAA,EAAAA,OAAAA;EAAuB,OAAA,qBAAA,CAAA,MAAA,CAAA,EAGzCX,kBAHyC,CAAA,EAGpBA,kBAHoB,CAAA,GAAA,EAGvBa,8BAAAA,CAAmEC,wBAAAA,EAH5C,GAAA,CAAA"}
1
+ {"version":3,"file":"pairwise.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMPairwiseStringEvaluator","LLMPairwiseStringEvaluatorArgs","ExtractLLMCallOptions","CriteriaLike","PairwiseStringResultOutputParser","Promise","PairwiseStringEvalChain","Record","_langchain_core_prompt_values4","BasePromptValueInterface","Omit","Partial","LabeledPairwiseStringEvalChain"],"sources":["../../../src/evaluation/comparison/pairwise.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMPairwiseStringEvaluator, LLMPairwiseStringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { CriteriaLike } from \"../criteria/criteria.js\";\n/**\n * A parser for the output of the PairwiseStringEvalChain.\n */\nexport declare class PairwiseStringResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n static lc_name(): string;\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs.\n */\nexport declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: PairwiseStringResultOutputParser;\n static resolvePairwiseCriteria(criteria?: CriteriaLike): Record<string, string>;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the PairwiseStringEvalChain.\n * @param llm\n * @param criteria The criteria to use for evaluation.\n * @param chainOptions Options to pass to the chain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<PairwiseStringEvalChain>;\n _prepareOutput(result: ChainValues): any;\n _evaluateStringPairs(args: LLMPairwiseStringEvaluatorArgs, callOptions: ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs,\n * with labeled preferences.\n */\nexport declare class LabeledPairwiseStringEvalChain extends PairwiseStringEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=pairwise.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWqBc,cAAAA,gCAAAA,SAAyCb,mBAAT,CAA6BO,cAA7B,CAAA,CAAA;EAA6BA,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAGrDJ,YAAAA,EAAAA,MAAAA,EAAAA;EAAeD,WAAAA,CAAAA,WAAAA,EAAfC,UAAeD,EAAAA,GAAAA,cAAAA,EAAAA,EAAAA,UAAAA,EAA8BG,SAA9BH,GAAAA,SAAAA,CAAAA,EAAsDY,OAAtDZ,CAA8DK,cAA9DL,CAAAA;;;;;AAHqC;AAS5Da,cAAAA,uBAAAA,SAAgCN,0BAAAA,CAAT;EAO1BI,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAC4BD,aAAAA,CAAAA,EAAAA,MAAAA;EAAeI,cAAAA,CAAAA,EAAAA,MAAAA;EACnBZ,aAAAA,EAAAA,OAAAA;EAAkBa,iBAAAA,EAAAA,OAAAA;EAAGb,oBAAAA,EAAAA,MAAAA;EAOvCL,YAAAA,EATNc,gCASMd;EAAuCa,OAAAA,uBAAAA,CAAAA,QAAAA,CAAAA,EARjBA,YAQiBA,CAAAA,EARFI,MAQEJ,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAA0CJ,OAAAA,qBAAAA,CAAAA,MAAAA,CAAAA,EAP/DJ,kBAO+DI,CAAAA,EAP1CJ,kBAO0CI,CAAAA,GAAAA,EAP7CS,8BAAAA,CAAmEC,wBAAAA,EAOtBV,GAAAA,CAAAA;EAALW;;;;;;EAExBR,OAAAA,OAAAA,CAAAA,GAAAA,EAFpDZ,0BAEoDY,EAAAA,QAAAA,CAAAA,EAFbC,YAEaD,EAAAA,YAAAA,CAAAA,EAFgBS,OAEhBT,CAFwBQ,IAExBR,CAF6BH,iBAE7BG,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAF0DG,OAE1DH,CAFkEI,uBAElEJ,CAAAA;EAA6CN,cAAAA,CAAAA,MAAAA,EAD9FJ,WAC8FI,CAAAA,EAAAA,GAAAA;EAAYC,oBAAAA,CAAAA,IAAAA,EAAtGI,8BAAsGJ,EAAAA,WAAAA,EAAzDK,qBAAyDL,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAZD,SAAYC,GAAAA,kBAAAA,CAAAA,EAAqBQ,OAArBR,CAA6BL,WAA7BK,CAAAA;;;;AAlBtD;AAyB/E;;AAG4DW,cAHvCI,8BAAAA,SAAuCN,uBAAAA,CAGmEG;EAAhEd,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAHHW,iBAAAA,EAAAA,OAAAA;EAAuB,OAAA,qBAAA,CAAA,MAAA,CAAA,EAGzCX,kBAHyC,CAAA,EAGpBA,kBAHoB,CAAA,GAAA,EAGvBa,8BAAAA,CAAmEC,wBAAAA,EAH5C,GAAA,CAAA"}
@@ -6,7 +6,7 @@ import { ChatGeneration, Generation } from "@langchain/core/outputs";
6
6
  import { BaseCallbackConfig, Callbacks } from "@langchain/core/callbacks/manager";
7
7
  import { BaseLLMOutputParser } from "@langchain/core/output_parsers";
8
8
  import { ChainValues } from "@langchain/core/utils/types";
9
- import * as _langchain_core_prompt_values3 from "@langchain/core/prompt_values";
9
+ import * as _langchain_core_prompt_values2 from "@langchain/core/prompt_values";
10
10
 
11
11
  //#region src/evaluation/criteria/criteria.d.ts
12
12
  /**
@@ -50,7 +50,7 @@ declare class CriteriaEvalChain extends LLMStringEvaluator {
50
50
  * Resolve the prompt to use for the evaluation.
51
51
  * @param prompt
52
52
  */
53
- static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values3.BasePromptValueInterface, any>;
53
+ static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values2.BasePromptValueInterface, any>;
54
54
  /**
55
55
  * Create a new instance of the CriteriaEvalChain.
56
56
  * @param llm
@@ -76,7 +76,7 @@ declare class CriteriaEvalChain extends LLMStringEvaluator {
76
76
  declare class LabeledCriteriaEvalChain extends CriteriaEvalChain {
77
77
  static lc_name(): string;
78
78
  requiresReference: boolean;
79
- static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values3.BasePromptValueInterface, any>;
79
+ static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values2.BasePromptValueInterface, any>;
80
80
  }
81
81
  //#endregion
82
82
  export { Criteria, CriteriaEvalChain, CriteriaEvalInput, CriteriaLike, CriteriaResultOutputParser, LabeledCriteriaEvalChain };
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMStringEvaluator","StringEvaluatorArgs","ExtractLLMCallOptions","ConstitutionalPrinciple","Criteria","CriteriaLike","CriteriaResultOutputParser","Promise","CriteriaEvalInput","CriteriaEvalChain","Record","_langchain_core_prompt_values3","BasePromptValueInterface","Omit","Partial","input","prediction","reference","LabeledCriteriaEvalChain"],"sources":["../../../src/evaluation/criteria/criteria.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMStringEvaluator, StringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { ConstitutionalPrinciple } from \"../../chains/constitutional_ai/constitutional_principle.js\";\n/**\n * A Criteria to evaluate.\n */\nexport type Criteria = \"conciseness\" | \"relevance\" | \"correctness\" | \"coherence\" | \"harmfulness\" | \"maliciousness\" | \"helpfulness\" | \"controversiality\" | \"misogyny\" | \"criminality\" | \"insensitivity\" | \"depth\" | \"creativity\" | \"detail\";\nexport type CriteriaLike = {\n [key: string]: string;\n} | Criteria | ConstitutionalPrinciple;\n/**\n * A parser for the output of the CriteriaEvalChain.\n */\nexport declare class CriteriaResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\nexport interface CriteriaEvalInput {\n input?: string;\n output: string;\n reference?: string;\n}\nexport declare class CriteriaEvalChain extends LLMStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: BaseLLMOutputParser<EvalOutputType>;\n /**\n * Resolve the criteria to evaluate.\n * @param criteria The criteria to evaluate the runs against. It can be:\n * - a mapping of a criterion name to its description\n * - a single criterion name present in one of the default criteria\n * - a single `ConstitutionalPrinciple` instance\n *\n * @return A dictionary mapping criterion names to descriptions.\n */\n static resolveCriteria(criteria?: CriteriaLike): Record<string, string>;\n /**\n * Resolve the prompt to use for the evaluation.\n * @param prompt\n */\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the CriteriaEvalChain.\n * @param llm\n * @param criteria\n * @param chainOptions Options to pass to the constructor of the LLMChain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<CriteriaEvalChain>;\n getEvalInput({ input, prediction, reference }: StringEvaluatorArgs): CriteriaEvalInput;\n /**\n * Prepare the output of the evaluation.\n * @param result\n */\n _prepareOutput(result: ChainValues): any;\n _evaluateStrings(args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * Criteria evaluation chain that requires references.\n */\nexport declare class LabeledCriteriaEvalChain extends CriteriaEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=criteria.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWYc,KAAAA,QAAAA,GAAQ,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,eAAA,GAAA,aAAA,GAAA,kBAAA,GAAA,UAAA,GAAA,aAAA,GAAA,eAAA,GAAA,OAAA,GAAA,YAAA,GAAA,QAAA;AACRC,KAAAA,YAAAA,GAAY;EAMHC,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;CAAuDR,GAJxEM,QAIwEN,GAJ7DK,uBAI6DL;;;;AAE8BA,cAFrFQ,0BAAAA,SAAmCf,mBAEkDO,CAF9BA,cAE8BA,CAAAA,CAAAA;EAARS,YAAAA,EAAAA,MAAAA,EAAAA;EAF1ChB,WAAAA,CAAAA,WAAAA,EAE3BG,UAF2BH,EAAAA,GAEZE,cAFYF,EAAAA,EAAAA,UAAAA,EAEkBK,SAFlBL,GAAAA,SAAAA,CAAAA,EAE0CgB,OAF1ChB,CAEkDO,cAFlDP,CAAAA;AAAmB;AAI1DiB,UAAAA,iBAAAA,CAAiB;EAKbC,KAAAA,CAAAA,EAAAA,MAAAA;EAOiBX,MAAAA,EAAAA,MAAAA;EAApBP,SAAAA,CAAAA,EAAAA,MAAAA;;AAUmCmB,cAjBhCD,iBAAAA,SAA0BT,kBAAAA,CAiBMU;EAKnBf,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAkBgB,aAAAA,CAAAA,EAAAA,MAAAA;EAAGhB,cAAAA,CAAAA,EAAAA,MAAAA;EAO/BL,aAAAA,EAAAA,OAAAA;EAAuCe,iBAAAA,EAAAA,OAAAA;EAA0CN,oBAAAA,EAAAA,MAAAA;EAALc,YAAAA,EAtBlFtB,mBAsBkFsB,CAtB9Df,cAsB8De,CAAAA;EAARC;;;;;;;;;EAOjEb,OAAAA,eAAAA,CAAAA,QAAAA,CAAAA,EAnBWI,YAmBXJ,CAAAA,EAnB0BS,MAmB1BT,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAAsBC;;;;EAA8EK,OAAAA,aAAAA,CAAAA,MAAAA,CAAAA,EAd7FZ,kBAc6FY,CAAAA,EAdxEZ,kBAcwEY,CAAAA,GAAAA,EAd3EI,8BAAAA,CAAmEC,wBAAAA,EAcQL,GAAAA,CAAAA;EApChFP;AAAkB;AAyCjE;;;;EAAsDS,OAAAA,OAAAA,CAAAA,GAAAA,EAZ9BnB,0BAY8BmB,EAAAA,QAAAA,CAAAA,EAZSJ,YAYTI,EAAAA,YAAAA,CAAAA,EAZsCK,OAYtCL,CAZ8CI,IAY9CJ,CAZmDV,iBAYnDU,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAZgFF,OAYhFE,CAZwFA,iBAYxFA,CAAAA;EAAiB,YAAA,CAAA;IAAA,KAAA;IAAA,UAAA;IAAA;EAAA,CAAA,EAXpBR,mBAWoB,CAAA,EAXEO,iBAWF;;;;;yBAN5ChB;yBACAS,sBAAsBC,6CAA6CN,YAAYC,qBAAqBU,QAAQf;;;;;cAKlH0B,wBAAAA,SAAiCT,iBAAAA;;;gCAGpBd,qBAAqBA,wBAAHgB,8BAAAA,CAAmEC,wBAAAA"}
1
+ {"version":3,"file":"criteria.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMStringEvaluator","StringEvaluatorArgs","ExtractLLMCallOptions","ConstitutionalPrinciple","Criteria","CriteriaLike","CriteriaResultOutputParser","Promise","CriteriaEvalInput","CriteriaEvalChain","Record","_langchain_core_prompt_values2","BasePromptValueInterface","Omit","Partial","input","prediction","reference","LabeledCriteriaEvalChain"],"sources":["../../../src/evaluation/criteria/criteria.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMStringEvaluator, StringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { ConstitutionalPrinciple } from \"../../chains/constitutional_ai/constitutional_principle.js\";\n/**\n * A Criteria to evaluate.\n */\nexport type Criteria = \"conciseness\" | \"relevance\" | \"correctness\" | \"coherence\" | \"harmfulness\" | \"maliciousness\" | \"helpfulness\" | \"controversiality\" | \"misogyny\" | \"criminality\" | \"insensitivity\" | \"depth\" | \"creativity\" | \"detail\";\nexport type CriteriaLike = {\n [key: string]: string;\n} | Criteria | ConstitutionalPrinciple;\n/**\n * A parser for the output of the CriteriaEvalChain.\n */\nexport declare class CriteriaResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\nexport interface CriteriaEvalInput {\n input?: string;\n output: string;\n reference?: string;\n}\nexport declare class CriteriaEvalChain extends LLMStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: BaseLLMOutputParser<EvalOutputType>;\n /**\n * Resolve the criteria to evaluate.\n * @param criteria The criteria to evaluate the runs against. It can be:\n * - a mapping of a criterion name to its description\n * - a single criterion name present in one of the default criteria\n * - a single `ConstitutionalPrinciple` instance\n *\n * @return A dictionary mapping criterion names to descriptions.\n */\n static resolveCriteria(criteria?: CriteriaLike): Record<string, string>;\n /**\n * Resolve the prompt to use for the evaluation.\n * @param prompt\n */\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the CriteriaEvalChain.\n * @param llm\n * @param criteria\n * @param chainOptions Options to pass to the constructor of the LLMChain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<CriteriaEvalChain>;\n getEvalInput({ input, prediction, reference }: StringEvaluatorArgs): CriteriaEvalInput;\n /**\n * Prepare the output of the evaluation.\n * @param result\n */\n _prepareOutput(result: ChainValues): any;\n _evaluateStrings(args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * Criteria evaluation chain that requires references.\n */\nexport declare class LabeledCriteriaEvalChain extends CriteriaEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=criteria.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWYc,KAAAA,QAAAA,GAAQ,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,eAAA,GAAA,aAAA,GAAA,kBAAA,GAAA,UAAA,GAAA,aAAA,GAAA,eAAA,GAAA,OAAA,GAAA,YAAA,GAAA,QAAA;AACRC,KAAAA,YAAAA,GAAY;EAMHC,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;CAAuDR,GAJxEM,QAIwEN,GAJ7DK,uBAI6DL;;;;AAE8BA,cAFrFQ,0BAAAA,SAAmCf,mBAEkDO,CAF9BA,cAE8BA,CAAAA,CAAAA;EAARS,YAAAA,EAAAA,MAAAA,EAAAA;EAF1ChB,WAAAA,CAAAA,WAAAA,EAE3BG,UAF2BH,EAAAA,GAEZE,cAFYF,EAAAA,EAAAA,UAAAA,EAEkBK,SAFlBL,GAAAA,SAAAA,CAAAA,EAE0CgB,OAF1ChB,CAEkDO,cAFlDP,CAAAA;AAAmB;AAI1DiB,UAAAA,iBAAAA,CAAiB;EAKbC,KAAAA,CAAAA,EAAAA,MAAAA;EAOiBX,MAAAA,EAAAA,MAAAA;EAApBP,SAAAA,CAAAA,EAAAA,MAAAA;;AAUmCmB,cAjBhCD,iBAAAA,SAA0BT,kBAAAA,CAiBMU;EAKnBf,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAkBgB,aAAAA,CAAAA,EAAAA,MAAAA;EAAGhB,cAAAA,CAAAA,EAAAA,MAAAA;EAO/BL,aAAAA,EAAAA,OAAAA;EAAuCe,iBAAAA,EAAAA,OAAAA;EAA0CN,oBAAAA,EAAAA,MAAAA;EAALc,YAAAA,EAtBlFtB,mBAsBkFsB,CAtB9Df,cAsB8De,CAAAA;EAARC;;;;;;;;;EAOjEb,OAAAA,eAAAA,CAAAA,QAAAA,CAAAA,EAnBWI,YAmBXJ,CAAAA,EAnB0BS,MAmB1BT,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAAsBC;;;;EAA8EK,OAAAA,aAAAA,CAAAA,MAAAA,CAAAA,EAd7FZ,kBAc6FY,CAAAA,EAdxEZ,kBAcwEY,CAAAA,GAAAA,EAd3EI,8BAAAA,CAAmEC,wBAAAA,EAcQL,GAAAA,CAAAA;EApChFP;AAAkB;AAyCjE;;;;EAAsDS,OAAAA,OAAAA,CAAAA,GAAAA,EAZ9BnB,0BAY8BmB,EAAAA,QAAAA,CAAAA,EAZSJ,YAYTI,EAAAA,YAAAA,CAAAA,EAZsCK,OAYtCL,CAZ8CI,IAY9CJ,CAZmDV,iBAYnDU,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAZgFF,OAYhFE,CAZwFA,iBAYxFA,CAAAA;EAAiB,YAAA,CAAA;IAAA,KAAA;IAAA,UAAA;IAAA;EAAA,CAAA,EAXpBR,mBAWoB,CAAA,EAXEO,iBAWF;;;;;yBAN5ChB;yBACAS,sBAAsBC,6CAA6CN,YAAYC,qBAAqBU,QAAQf;;;;;cAKlH0B,wBAAAA,SAAiCT,iBAAAA;;;gCAGpBd,qBAAqBA,wBAAHgB,8BAAAA,CAAmEC,wBAAAA"}
@@ -60,7 +60,7 @@ var AutoGPTPrompt = class extends __langchain_core_prompts.BaseChatPromptTemplat
60
60
  */
61
61
  async formatMessages({ goals, memory, messages: previousMessages, user_input }) {
62
62
  const basePrompt = new __langchain_core_messages.SystemMessage(this.constructFullPrompt(goals));
63
- const timePrompt = new __langchain_core_messages.SystemMessage(`The current time and date is ${(/* @__PURE__ */ new Date()).toLocaleString()}`);
63
+ const timePrompt = new __langchain_core_messages.SystemMessage(`The current time and date is ${(/* @__PURE__ */ new Date()).toLocaleString("en-US")}`);
64
64
  if (typeof basePrompt.content !== "string" || typeof timePrompt.content !== "string") throw new Error("Non-string message content is not supported.");
65
65
  const usedTokens = await this.tokenCounter(basePrompt.content) + await this.tokenCounter(timePrompt.content);
66
66
  const relevantDocs = await memory.invoke(JSON.stringify(previousMessages.slice(-10)));
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.cjs","names":["BaseChatPromptTemplate","fields: AutoGPTPromptInput","goals: string[]","getPrompt","SystemMessage","d: { pageContent: string }","acc: Promise<number>","doc: string","historicalMessages: BaseMessage[]","HumanMessage","messages: BaseMessage[]","_values: PartialValues"],"sources":["../../../src/experimental/autogpt/prompt.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport {\n BaseChatPromptTemplate,\n SerializedBasePromptTemplate,\n} from \"@langchain/core/prompts\";\nimport {\n BaseMessage,\n HumanMessage,\n SystemMessage,\n} from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { getPrompt } from \"./prompt_generator.js\";\nimport { ObjectTool } from \"./schema.js\";\n\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport class AutoGPTPrompt\n extends BaseChatPromptTemplate\n implements AutoGPTPromptInput\n{\n aiName: string;\n\n aiRole: string;\n\n tools: ObjectTool[];\n\n tokenCounter: (text: string) => Promise<number>;\n\n sendTokenLimit: number;\n\n constructor(fields: AutoGPTPromptInput) {\n super({ inputVariables: [\"goals\", \"memory\", \"messages\", \"user_input\"] });\n this.aiName = fields.aiName;\n this.aiRole = fields.aiRole;\n this.tools = fields.tools;\n this.tokenCounter = fields.tokenCounter;\n this.sendTokenLimit = fields.sendTokenLimit || 4196;\n }\n\n _getPromptType() {\n return \"autogpt\" as const;\n }\n\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string {\n const promptStart = `Your decisions must always be made independently\n without seeking user assistance. Play to your strengths\n as an LLM and pursue simple strategies with no legal complications.\n If you have completed all your tasks,\n make sure to use the \"finish\" command.`;\n\n let fullPrompt = `You are ${this.aiName}, ${this.aiRole}\\n${promptStart}\\n\\nGOALS:\\n\\n`;\n goals.forEach((goal, index) => {\n fullPrompt += `${index + 1}. ${goal}\\n`;\n });\n\n fullPrompt += `\\n\\n${getPrompt(this.tools)}`;\n return fullPrompt;\n }\n\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n async formatMessages({\n goals,\n memory,\n messages: previousMessages,\n user_input,\n }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }) {\n const basePrompt = new SystemMessage(this.constructFullPrompt(goals));\n const timePrompt = new SystemMessage(\n `The current time and date is ${new Date().toLocaleString()}`\n );\n if (\n typeof basePrompt.content !== \"string\" ||\n typeof timePrompt.content !== \"string\"\n ) {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokens =\n (await this.tokenCounter(basePrompt.content)) +\n (await this.tokenCounter(timePrompt.content));\n const relevantDocs = await memory.invoke(\n JSON.stringify(previousMessages.slice(-10))\n );\n const relevantMemory = relevantDocs.map(\n (d: { pageContent: string }) => d.pageContent\n );\n let relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n\n while (usedTokens + relevantMemoryTokens > 2500) {\n relevantMemory.pop();\n relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n }\n\n const contentFormat = `This reminds you of these events from your past:\\n${relevantMemory.join(\n \"\\n\"\n )}\\n\\n`;\n const memoryMessage = new SystemMessage(contentFormat);\n if (typeof memoryMessage.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokensWithMemory =\n usedTokens + (await this.tokenCounter(memoryMessage.content));\n const historicalMessages: BaseMessage[] = [];\n\n for (const message of previousMessages.slice(-10).reverse()) {\n if (typeof message.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const messageTokens = await this.tokenCounter(message.content);\n if (usedTokensWithMemory + messageTokens > this.sendTokenLimit - 1000) {\n break;\n }\n historicalMessages.unshift(message);\n }\n\n const inputMessage = new HumanMessage(user_input);\n const messages: BaseMessage[] = [\n basePrompt,\n timePrompt,\n memoryMessage,\n ...historicalMessages,\n inputMessage,\n ];\n return messages;\n }\n\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n async partial(_values: PartialValues): Promise<BaseChatPromptTemplate> {\n throw new Error(\"Method not implemented.\");\n }\n\n serialize(): SerializedBasePromptTemplate {\n throw new Error(\"Method not implemented.\");\n }\n}\n"],"mappings":";;;;;;;;;;;;AA+BA,IAAa,gBAAb,cACUA,gDAEV;CACE;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYC,QAA4B;EACtC,MAAM,EAAE,gBAAgB;GAAC;GAAS;GAAU;GAAY;EAAa,EAAE,EAAC;EACxE,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS,OAAO;EACrB,KAAK,QAAQ,OAAO;EACpB,KAAK,eAAe,OAAO;EAC3B,KAAK,iBAAiB,OAAO,kBAAkB;CAChD;CAED,iBAAiB;AACf,SAAO;CACR;;;;;;CAOD,oBAAoBC,OAAyB;EAC3C,MAAM,cAAc,CAAC;;;;kDAIyB,CAAC;EAE/C,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,EAAE,YAAY,cAAc,CAAC;EACvF,MAAM,QAAQ,CAAC,MAAM,UAAU;GAC7B,cAAc,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;EACxC,EAAC;EAEF,cAAc,CAAC,IAAI,EAAEC,mCAAU,KAAK,MAAM,EAAE;AAC5C,SAAO;CACR;;;;;;;;;CAUD,MAAM,eAAe,EACnB,OACA,QACA,UAAU,kBACV,YAMD,EAAE;EACD,MAAM,aAAa,IAAIC,wCAAc,KAAK,oBAAoB,MAAM;EACpE,MAAM,aAAa,IAAIA,wCACrB,CAAC,6BAA6B,mBAAE,IAAI,QAAO,gBAAgB,EAAE;AAE/D,MACE,OAAO,WAAW,YAAY,YAC9B,OAAO,WAAW,YAAY,SAE9B,OAAM,IAAI,MAAM;EAElB,MAAM,aACH,MAAM,KAAK,aAAa,WAAW,QAAQ,GAC3C,MAAM,KAAK,aAAa,WAAW,QAAQ;EAC9C,MAAM,eAAe,MAAM,OAAO,OAChC,KAAK,UAAU,iBAAiB,MAAM,IAAI,CAAC,CAC5C;EACD,MAAM,iBAAiB,aAAa,IAClC,CAACC,MAA+B,EAAE,YACnC;EACD,IAAI,uBAAuB,MAAM,eAAe,OAC9C,OAAOC,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;AAED,SAAO,aAAa,uBAAuB,MAAM;GAC/C,eAAe,KAAK;GACpB,uBAAuB,MAAM,eAAe,OAC1C,OAAOD,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;EACF;EAED,MAAM,gBAAgB,CAAC,kDAAkD,EAAE,eAAe,KACxF,KACD,CAAC,IAAI,CAAC;EACP,MAAM,gBAAgB,IAAIH,wCAAc;AACxC,MAAI,OAAO,cAAc,YAAY,SACnC,OAAM,IAAI,MAAM;EAElB,MAAM,uBACJ,aAAc,MAAM,KAAK,aAAa,cAAc,QAAQ;EAC9D,MAAMI,qBAAoC,CAAE;AAE5C,OAAK,MAAM,WAAW,iBAAiB,MAAM,IAAI,CAAC,SAAS,EAAE;AAC3D,OAAI,OAAO,QAAQ,YAAY,SAC7B,OAAM,IAAI,MAAM;GAElB,MAAM,gBAAgB,MAAM,KAAK,aAAa,QAAQ,QAAQ;AAC9D,OAAI,uBAAuB,gBAAgB,KAAK,iBAAiB,IAC/D;GAEF,mBAAmB,QAAQ,QAAQ;EACpC;EAED,MAAM,eAAe,IAAIC,uCAAa;EACtC,MAAMC,WAA0B;GAC9B;GACA;GACA;GACA,GAAG;GACH;EACD;AACD,SAAO;CACR;;;;;;;CAQD,MAAM,QAAQC,SAAyD;AACrE,QAAM,IAAI,MAAM;CACjB;CAED,YAA0C;AACxC,QAAM,IAAI,MAAM;CACjB;AACF"}
1
+ {"version":3,"file":"prompt.cjs","names":["BaseChatPromptTemplate","fields: AutoGPTPromptInput","goals: string[]","getPrompt","SystemMessage","d: { pageContent: string }","acc: Promise<number>","doc: string","historicalMessages: BaseMessage[]","HumanMessage","messages: BaseMessage[]","_values: PartialValues"],"sources":["../../../src/experimental/autogpt/prompt.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport {\n BaseChatPromptTemplate,\n SerializedBasePromptTemplate,\n} from \"@langchain/core/prompts\";\nimport {\n BaseMessage,\n HumanMessage,\n SystemMessage,\n} from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { getPrompt } from \"./prompt_generator.js\";\nimport { ObjectTool } from \"./schema.js\";\n\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport class AutoGPTPrompt\n extends BaseChatPromptTemplate\n implements AutoGPTPromptInput\n{\n aiName: string;\n\n aiRole: string;\n\n tools: ObjectTool[];\n\n tokenCounter: (text: string) => Promise<number>;\n\n sendTokenLimit: number;\n\n constructor(fields: AutoGPTPromptInput) {\n super({ inputVariables: [\"goals\", \"memory\", \"messages\", \"user_input\"] });\n this.aiName = fields.aiName;\n this.aiRole = fields.aiRole;\n this.tools = fields.tools;\n this.tokenCounter = fields.tokenCounter;\n this.sendTokenLimit = fields.sendTokenLimit || 4196;\n }\n\n _getPromptType() {\n return \"autogpt\" as const;\n }\n\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string {\n const promptStart = `Your decisions must always be made independently\n without seeking user assistance. Play to your strengths\n as an LLM and pursue simple strategies with no legal complications.\n If you have completed all your tasks,\n make sure to use the \"finish\" command.`;\n\n let fullPrompt = `You are ${this.aiName}, ${this.aiRole}\\n${promptStart}\\n\\nGOALS:\\n\\n`;\n goals.forEach((goal, index) => {\n fullPrompt += `${index + 1}. ${goal}\\n`;\n });\n\n fullPrompt += `\\n\\n${getPrompt(this.tools)}`;\n return fullPrompt;\n }\n\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n async formatMessages({\n goals,\n memory,\n messages: previousMessages,\n user_input,\n }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }) {\n const basePrompt = new SystemMessage(this.constructFullPrompt(goals));\n const timePrompt = new SystemMessage(\n `The current time and date is ${new Date().toLocaleString(\"en-US\")}`\n );\n if (\n typeof basePrompt.content !== \"string\" ||\n typeof timePrompt.content !== \"string\"\n ) {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokens =\n (await this.tokenCounter(basePrompt.content)) +\n (await this.tokenCounter(timePrompt.content));\n const relevantDocs = await memory.invoke(\n JSON.stringify(previousMessages.slice(-10))\n );\n const relevantMemory = relevantDocs.map(\n (d: { pageContent: string }) => d.pageContent\n );\n let relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n\n while (usedTokens + relevantMemoryTokens > 2500) {\n relevantMemory.pop();\n relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n }\n\n const contentFormat = `This reminds you of these events from your past:\\n${relevantMemory.join(\n \"\\n\"\n )}\\n\\n`;\n const memoryMessage = new SystemMessage(contentFormat);\n if (typeof memoryMessage.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokensWithMemory =\n usedTokens + (await this.tokenCounter(memoryMessage.content));\n const historicalMessages: BaseMessage[] = [];\n\n for (const message of previousMessages.slice(-10).reverse()) {\n if (typeof message.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const messageTokens = await this.tokenCounter(message.content);\n if (usedTokensWithMemory + messageTokens > this.sendTokenLimit - 1000) {\n break;\n }\n historicalMessages.unshift(message);\n }\n\n const inputMessage = new HumanMessage(user_input);\n const messages: BaseMessage[] = [\n basePrompt,\n timePrompt,\n memoryMessage,\n ...historicalMessages,\n inputMessage,\n ];\n return messages;\n }\n\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n async partial(_values: PartialValues): Promise<BaseChatPromptTemplate> {\n throw new Error(\"Method not implemented.\");\n }\n\n serialize(): SerializedBasePromptTemplate {\n throw new Error(\"Method not implemented.\");\n }\n}\n"],"mappings":";;;;;;;;;;;;AA+BA,IAAa,gBAAb,cACUA,gDAEV;CACE;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYC,QAA4B;EACtC,MAAM,EAAE,gBAAgB;GAAC;GAAS;GAAU;GAAY;EAAa,EAAE,EAAC;EACxE,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS,OAAO;EACrB,KAAK,QAAQ,OAAO;EACpB,KAAK,eAAe,OAAO;EAC3B,KAAK,iBAAiB,OAAO,kBAAkB;CAChD;CAED,iBAAiB;AACf,SAAO;CACR;;;;;;CAOD,oBAAoBC,OAAyB;EAC3C,MAAM,cAAc,CAAC;;;;kDAIyB,CAAC;EAE/C,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,EAAE,YAAY,cAAc,CAAC;EACvF,MAAM,QAAQ,CAAC,MAAM,UAAU;GAC7B,cAAc,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;EACxC,EAAC;EAEF,cAAc,CAAC,IAAI,EAAEC,mCAAU,KAAK,MAAM,EAAE;AAC5C,SAAO;CACR;;;;;;;;;CAUD,MAAM,eAAe,EACnB,OACA,QACA,UAAU,kBACV,YAMD,EAAE;EACD,MAAM,aAAa,IAAIC,wCAAc,KAAK,oBAAoB,MAAM;EACpE,MAAM,aAAa,IAAIA,wCACrB,CAAC,6BAA6B,mBAAE,IAAI,QAAO,eAAe,QAAQ,EAAE;AAEtE,MACE,OAAO,WAAW,YAAY,YAC9B,OAAO,WAAW,YAAY,SAE9B,OAAM,IAAI,MAAM;EAElB,MAAM,aACH,MAAM,KAAK,aAAa,WAAW,QAAQ,GAC3C,MAAM,KAAK,aAAa,WAAW,QAAQ;EAC9C,MAAM,eAAe,MAAM,OAAO,OAChC,KAAK,UAAU,iBAAiB,MAAM,IAAI,CAAC,CAC5C;EACD,MAAM,iBAAiB,aAAa,IAClC,CAACC,MAA+B,EAAE,YACnC;EACD,IAAI,uBAAuB,MAAM,eAAe,OAC9C,OAAOC,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;AAED,SAAO,aAAa,uBAAuB,MAAM;GAC/C,eAAe,KAAK;GACpB,uBAAuB,MAAM,eAAe,OAC1C,OAAOD,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;EACF;EAED,MAAM,gBAAgB,CAAC,kDAAkD,EAAE,eAAe,KACxF,KACD,CAAC,IAAI,CAAC;EACP,MAAM,gBAAgB,IAAIH,wCAAc;AACxC,MAAI,OAAO,cAAc,YAAY,SACnC,OAAM,IAAI,MAAM;EAElB,MAAM,uBACJ,aAAc,MAAM,KAAK,aAAa,cAAc,QAAQ;EAC9D,MAAMI,qBAAoC,CAAE;AAE5C,OAAK,MAAM,WAAW,iBAAiB,MAAM,IAAI,CAAC,SAAS,EAAE;AAC3D,OAAI,OAAO,QAAQ,YAAY,SAC7B,OAAM,IAAI,MAAM;GAElB,MAAM,gBAAgB,MAAM,KAAK,aAAa,QAAQ,QAAQ;AAC9D,OAAI,uBAAuB,gBAAgB,KAAK,iBAAiB,IAC/D;GAEF,mBAAmB,QAAQ,QAAQ;EACpC;EAED,MAAM,eAAe,IAAIC,uCAAa;EACtC,MAAMC,WAA0B;GAC9B;GACA;GACA;GACA,GAAG;GACH;EACD;AACD,SAAO;CACR;;;;;;;CAQD,MAAM,QAAQC,SAAyD;AACrE,QAAM,IAAI,MAAM;CACjB;CAED,YAA0C;AACxC,QAAM,IAAI,MAAM;CACjB;AACF"}
@@ -59,7 +59,7 @@ var AutoGPTPrompt = class extends BaseChatPromptTemplate {
59
59
  */
60
60
  async formatMessages({ goals, memory, messages: previousMessages, user_input }) {
61
61
  const basePrompt = new SystemMessage(this.constructFullPrompt(goals));
62
- const timePrompt = new SystemMessage(`The current time and date is ${(/* @__PURE__ */ new Date()).toLocaleString()}`);
62
+ const timePrompt = new SystemMessage(`The current time and date is ${(/* @__PURE__ */ new Date()).toLocaleString("en-US")}`);
63
63
  if (typeof basePrompt.content !== "string" || typeof timePrompt.content !== "string") throw new Error("Non-string message content is not supported.");
64
64
  const usedTokens = await this.tokenCounter(basePrompt.content) + await this.tokenCounter(timePrompt.content);
65
65
  const relevantDocs = await memory.invoke(JSON.stringify(previousMessages.slice(-10)));
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","names":["fields: AutoGPTPromptInput","goals: string[]","d: { pageContent: string }","acc: Promise<number>","doc: string","historicalMessages: BaseMessage[]","messages: BaseMessage[]","_values: PartialValues"],"sources":["../../../src/experimental/autogpt/prompt.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport {\n BaseChatPromptTemplate,\n SerializedBasePromptTemplate,\n} from \"@langchain/core/prompts\";\nimport {\n BaseMessage,\n HumanMessage,\n SystemMessage,\n} from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { getPrompt } from \"./prompt_generator.js\";\nimport { ObjectTool } from \"./schema.js\";\n\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport class AutoGPTPrompt\n extends BaseChatPromptTemplate\n implements AutoGPTPromptInput\n{\n aiName: string;\n\n aiRole: string;\n\n tools: ObjectTool[];\n\n tokenCounter: (text: string) => Promise<number>;\n\n sendTokenLimit: number;\n\n constructor(fields: AutoGPTPromptInput) {\n super({ inputVariables: [\"goals\", \"memory\", \"messages\", \"user_input\"] });\n this.aiName = fields.aiName;\n this.aiRole = fields.aiRole;\n this.tools = fields.tools;\n this.tokenCounter = fields.tokenCounter;\n this.sendTokenLimit = fields.sendTokenLimit || 4196;\n }\n\n _getPromptType() {\n return \"autogpt\" as const;\n }\n\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string {\n const promptStart = `Your decisions must always be made independently\n without seeking user assistance. Play to your strengths\n as an LLM and pursue simple strategies with no legal complications.\n If you have completed all your tasks,\n make sure to use the \"finish\" command.`;\n\n let fullPrompt = `You are ${this.aiName}, ${this.aiRole}\\n${promptStart}\\n\\nGOALS:\\n\\n`;\n goals.forEach((goal, index) => {\n fullPrompt += `${index + 1}. ${goal}\\n`;\n });\n\n fullPrompt += `\\n\\n${getPrompt(this.tools)}`;\n return fullPrompt;\n }\n\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n async formatMessages({\n goals,\n memory,\n messages: previousMessages,\n user_input,\n }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }) {\n const basePrompt = new SystemMessage(this.constructFullPrompt(goals));\n const timePrompt = new SystemMessage(\n `The current time and date is ${new Date().toLocaleString()}`\n );\n if (\n typeof basePrompt.content !== \"string\" ||\n typeof timePrompt.content !== \"string\"\n ) {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokens =\n (await this.tokenCounter(basePrompt.content)) +\n (await this.tokenCounter(timePrompt.content));\n const relevantDocs = await memory.invoke(\n JSON.stringify(previousMessages.slice(-10))\n );\n const relevantMemory = relevantDocs.map(\n (d: { pageContent: string }) => d.pageContent\n );\n let relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n\n while (usedTokens + relevantMemoryTokens > 2500) {\n relevantMemory.pop();\n relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n }\n\n const contentFormat = `This reminds you of these events from your past:\\n${relevantMemory.join(\n \"\\n\"\n )}\\n\\n`;\n const memoryMessage = new SystemMessage(contentFormat);\n if (typeof memoryMessage.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokensWithMemory =\n usedTokens + (await this.tokenCounter(memoryMessage.content));\n const historicalMessages: BaseMessage[] = [];\n\n for (const message of previousMessages.slice(-10).reverse()) {\n if (typeof message.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const messageTokens = await this.tokenCounter(message.content);\n if (usedTokensWithMemory + messageTokens > this.sendTokenLimit - 1000) {\n break;\n }\n historicalMessages.unshift(message);\n }\n\n const inputMessage = new HumanMessage(user_input);\n const messages: BaseMessage[] = [\n basePrompt,\n timePrompt,\n memoryMessage,\n ...historicalMessages,\n inputMessage,\n ];\n return messages;\n }\n\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n async partial(_values: PartialValues): Promise<BaseChatPromptTemplate> {\n throw new Error(\"Method not implemented.\");\n }\n\n serialize(): SerializedBasePromptTemplate {\n throw new Error(\"Method not implemented.\");\n }\n}\n"],"mappings":";;;;;;;;;;;AA+BA,IAAa,gBAAb,cACU,uBAEV;CACE;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYA,QAA4B;EACtC,MAAM,EAAE,gBAAgB;GAAC;GAAS;GAAU;GAAY;EAAa,EAAE,EAAC;EACxE,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS,OAAO;EACrB,KAAK,QAAQ,OAAO;EACpB,KAAK,eAAe,OAAO;EAC3B,KAAK,iBAAiB,OAAO,kBAAkB;CAChD;CAED,iBAAiB;AACf,SAAO;CACR;;;;;;CAOD,oBAAoBC,OAAyB;EAC3C,MAAM,cAAc,CAAC;;;;kDAIyB,CAAC;EAE/C,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,EAAE,YAAY,cAAc,CAAC;EACvF,MAAM,QAAQ,CAAC,MAAM,UAAU;GAC7B,cAAc,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;EACxC,EAAC;EAEF,cAAc,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,EAAE;AAC5C,SAAO;CACR;;;;;;;;;CAUD,MAAM,eAAe,EACnB,OACA,QACA,UAAU,kBACV,YAMD,EAAE;EACD,MAAM,aAAa,IAAI,cAAc,KAAK,oBAAoB,MAAM;EACpE,MAAM,aAAa,IAAI,cACrB,CAAC,6BAA6B,mBAAE,IAAI,QAAO,gBAAgB,EAAE;AAE/D,MACE,OAAO,WAAW,YAAY,YAC9B,OAAO,WAAW,YAAY,SAE9B,OAAM,IAAI,MAAM;EAElB,MAAM,aACH,MAAM,KAAK,aAAa,WAAW,QAAQ,GAC3C,MAAM,KAAK,aAAa,WAAW,QAAQ;EAC9C,MAAM,eAAe,MAAM,OAAO,OAChC,KAAK,UAAU,iBAAiB,MAAM,IAAI,CAAC,CAC5C;EACD,MAAM,iBAAiB,aAAa,IAClC,CAACC,MAA+B,EAAE,YACnC;EACD,IAAI,uBAAuB,MAAM,eAAe,OAC9C,OAAOC,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;AAED,SAAO,aAAa,uBAAuB,MAAM;GAC/C,eAAe,KAAK;GACpB,uBAAuB,MAAM,eAAe,OAC1C,OAAOD,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;EACF;EAED,MAAM,gBAAgB,CAAC,kDAAkD,EAAE,eAAe,KACxF,KACD,CAAC,IAAI,CAAC;EACP,MAAM,gBAAgB,IAAI,cAAc;AACxC,MAAI,OAAO,cAAc,YAAY,SACnC,OAAM,IAAI,MAAM;EAElB,MAAM,uBACJ,aAAc,MAAM,KAAK,aAAa,cAAc,QAAQ;EAC9D,MAAMC,qBAAoC,CAAE;AAE5C,OAAK,MAAM,WAAW,iBAAiB,MAAM,IAAI,CAAC,SAAS,EAAE;AAC3D,OAAI,OAAO,QAAQ,YAAY,SAC7B,OAAM,IAAI,MAAM;GAElB,MAAM,gBAAgB,MAAM,KAAK,aAAa,QAAQ,QAAQ;AAC9D,OAAI,uBAAuB,gBAAgB,KAAK,iBAAiB,IAC/D;GAEF,mBAAmB,QAAQ,QAAQ;EACpC;EAED,MAAM,eAAe,IAAI,aAAa;EACtC,MAAMC,WAA0B;GAC9B;GACA;GACA;GACA,GAAG;GACH;EACD;AACD,SAAO;CACR;;;;;;;CAQD,MAAM,QAAQC,SAAyD;AACrE,QAAM,IAAI,MAAM;CACjB;CAED,YAA0C;AACxC,QAAM,IAAI,MAAM;CACjB;AACF"}
1
+ {"version":3,"file":"prompt.js","names":["fields: AutoGPTPromptInput","goals: string[]","d: { pageContent: string }","acc: Promise<number>","doc: string","historicalMessages: BaseMessage[]","messages: BaseMessage[]","_values: PartialValues"],"sources":["../../../src/experimental/autogpt/prompt.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport {\n BaseChatPromptTemplate,\n SerializedBasePromptTemplate,\n} from \"@langchain/core/prompts\";\nimport {\n BaseMessage,\n HumanMessage,\n SystemMessage,\n} from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { getPrompt } from \"./prompt_generator.js\";\nimport { ObjectTool } from \"./schema.js\";\n\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport class AutoGPTPrompt\n extends BaseChatPromptTemplate\n implements AutoGPTPromptInput\n{\n aiName: string;\n\n aiRole: string;\n\n tools: ObjectTool[];\n\n tokenCounter: (text: string) => Promise<number>;\n\n sendTokenLimit: number;\n\n constructor(fields: AutoGPTPromptInput) {\n super({ inputVariables: [\"goals\", \"memory\", \"messages\", \"user_input\"] });\n this.aiName = fields.aiName;\n this.aiRole = fields.aiRole;\n this.tools = fields.tools;\n this.tokenCounter = fields.tokenCounter;\n this.sendTokenLimit = fields.sendTokenLimit || 4196;\n }\n\n _getPromptType() {\n return \"autogpt\" as const;\n }\n\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string {\n const promptStart = `Your decisions must always be made independently\n without seeking user assistance. Play to your strengths\n as an LLM and pursue simple strategies with no legal complications.\n If you have completed all your tasks,\n make sure to use the \"finish\" command.`;\n\n let fullPrompt = `You are ${this.aiName}, ${this.aiRole}\\n${promptStart}\\n\\nGOALS:\\n\\n`;\n goals.forEach((goal, index) => {\n fullPrompt += `${index + 1}. ${goal}\\n`;\n });\n\n fullPrompt += `\\n\\n${getPrompt(this.tools)}`;\n return fullPrompt;\n }\n\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n async formatMessages({\n goals,\n memory,\n messages: previousMessages,\n user_input,\n }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }) {\n const basePrompt = new SystemMessage(this.constructFullPrompt(goals));\n const timePrompt = new SystemMessage(\n `The current time and date is ${new Date().toLocaleString(\"en-US\")}`\n );\n if (\n typeof basePrompt.content !== \"string\" ||\n typeof timePrompt.content !== \"string\"\n ) {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokens =\n (await this.tokenCounter(basePrompt.content)) +\n (await this.tokenCounter(timePrompt.content));\n const relevantDocs = await memory.invoke(\n JSON.stringify(previousMessages.slice(-10))\n );\n const relevantMemory = relevantDocs.map(\n (d: { pageContent: string }) => d.pageContent\n );\n let relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n\n while (usedTokens + relevantMemoryTokens > 2500) {\n relevantMemory.pop();\n relevantMemoryTokens = await relevantMemory.reduce(\n async (acc: Promise<number>, doc: string) =>\n (await acc) + (await this.tokenCounter(doc)),\n Promise.resolve(0)\n );\n }\n\n const contentFormat = `This reminds you of these events from your past:\\n${relevantMemory.join(\n \"\\n\"\n )}\\n\\n`;\n const memoryMessage = new SystemMessage(contentFormat);\n if (typeof memoryMessage.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const usedTokensWithMemory =\n usedTokens + (await this.tokenCounter(memoryMessage.content));\n const historicalMessages: BaseMessage[] = [];\n\n for (const message of previousMessages.slice(-10).reverse()) {\n if (typeof message.content !== \"string\") {\n throw new Error(\"Non-string message content is not supported.\");\n }\n const messageTokens = await this.tokenCounter(message.content);\n if (usedTokensWithMemory + messageTokens > this.sendTokenLimit - 1000) {\n break;\n }\n historicalMessages.unshift(message);\n }\n\n const inputMessage = new HumanMessage(user_input);\n const messages: BaseMessage[] = [\n basePrompt,\n timePrompt,\n memoryMessage,\n ...historicalMessages,\n inputMessage,\n ];\n return messages;\n }\n\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n async partial(_values: PartialValues): Promise<BaseChatPromptTemplate> {\n throw new Error(\"Method not implemented.\");\n }\n\n serialize(): SerializedBasePromptTemplate {\n throw new Error(\"Method not implemented.\");\n }\n}\n"],"mappings":";;;;;;;;;;;AA+BA,IAAa,gBAAb,cACU,uBAEV;CACE;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYA,QAA4B;EACtC,MAAM,EAAE,gBAAgB;GAAC;GAAS;GAAU;GAAY;EAAa,EAAE,EAAC;EACxE,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS,OAAO;EACrB,KAAK,QAAQ,OAAO;EACpB,KAAK,eAAe,OAAO;EAC3B,KAAK,iBAAiB,OAAO,kBAAkB;CAChD;CAED,iBAAiB;AACf,SAAO;CACR;;;;;;CAOD,oBAAoBC,OAAyB;EAC3C,MAAM,cAAc,CAAC;;;;kDAIyB,CAAC;EAE/C,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,EAAE,YAAY,cAAc,CAAC;EACvF,MAAM,QAAQ,CAAC,MAAM,UAAU;GAC7B,cAAc,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;EACxC,EAAC;EAEF,cAAc,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,EAAE;AAC5C,SAAO;CACR;;;;;;;;;CAUD,MAAM,eAAe,EACnB,OACA,QACA,UAAU,kBACV,YAMD,EAAE;EACD,MAAM,aAAa,IAAI,cAAc,KAAK,oBAAoB,MAAM;EACpE,MAAM,aAAa,IAAI,cACrB,CAAC,6BAA6B,mBAAE,IAAI,QAAO,eAAe,QAAQ,EAAE;AAEtE,MACE,OAAO,WAAW,YAAY,YAC9B,OAAO,WAAW,YAAY,SAE9B,OAAM,IAAI,MAAM;EAElB,MAAM,aACH,MAAM,KAAK,aAAa,WAAW,QAAQ,GAC3C,MAAM,KAAK,aAAa,WAAW,QAAQ;EAC9C,MAAM,eAAe,MAAM,OAAO,OAChC,KAAK,UAAU,iBAAiB,MAAM,IAAI,CAAC,CAC5C;EACD,MAAM,iBAAiB,aAAa,IAClC,CAACC,MAA+B,EAAE,YACnC;EACD,IAAI,uBAAuB,MAAM,eAAe,OAC9C,OAAOC,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;AAED,SAAO,aAAa,uBAAuB,MAAM;GAC/C,eAAe,KAAK;GACpB,uBAAuB,MAAM,eAAe,OAC1C,OAAOD,KAAsBC,QAC1B,MAAM,MAAQ,MAAM,KAAK,aAAa,IAAI,EAC7C,QAAQ,QAAQ,EAAE,CACnB;EACF;EAED,MAAM,gBAAgB,CAAC,kDAAkD,EAAE,eAAe,KACxF,KACD,CAAC,IAAI,CAAC;EACP,MAAM,gBAAgB,IAAI,cAAc;AACxC,MAAI,OAAO,cAAc,YAAY,SACnC,OAAM,IAAI,MAAM;EAElB,MAAM,uBACJ,aAAc,MAAM,KAAK,aAAa,cAAc,QAAQ;EAC9D,MAAMC,qBAAoC,CAAE;AAE5C,OAAK,MAAM,WAAW,iBAAiB,MAAM,IAAI,CAAC,SAAS,EAAE;AAC3D,OAAI,OAAO,QAAQ,YAAY,SAC7B,OAAM,IAAI,MAAM;GAElB,MAAM,gBAAgB,MAAM,KAAK,aAAa,QAAQ,QAAQ;AAC9D,OAAI,uBAAuB,gBAAgB,KAAK,iBAAiB,IAC/D;GAEF,mBAAmB,QAAQ,QAAQ;EACpC;EAED,MAAM,eAAe,IAAI,aAAa;EACtC,MAAMC,WAA0B;GAC9B;GACA;GACA;GACA,GAAG;GACH;EACD;AACD,SAAO;CACR;;;;;;;CAQD,MAAM,QAAQC,SAAyD;AACrE,QAAM,IAAI,MAAM;CACjB;CAED,YAA0C;AACxC,QAAM,IAAI,MAAM;CACjB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.cjs","names":["BaseChain","task: Task","result: string","task_description: string","objective: string","runManager?: CallbackManagerForChainRun","thisTaskID: number","query: string","task: string","Document","TaskCreationChain","TaskPrioritizationChain","TaskExecutionChain"],"sources":["../../../src/experimental/babyagi/agent.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, ChainInputs } from \"../../chains/base.js\";\nimport { SerializedBaseChain } from \"../../chains/serde.js\";\nimport { Optional } from \"../../types/type-utils.js\";\nimport { TaskCreationChain } from \"./task_creation.js\";\nimport { TaskExecutionChain } from \"./task_execution.js\";\nimport { TaskPrioritizationChain } from \"./task_prioritization.js\";\n\n/**\n * Interface defining the structure of a task. A task has a `taskID` and a\n * `taskName`.\n */\nexport interface Task {\n taskID: string;\n taskName: string;\n}\n\n/**\n * Interface defining the structure of the inputs for the `BabyAGI` class.\n * It extends the `ChainInputs` interface, omitting the 'memory' and\n * 'callbackManager' properties, and adds properties specific to\n * `BabyAGI`.\n */\nexport interface BabyAGIInputs\n extends Omit<ChainInputs, \"memory\" | \"callbackManager\"> {\n creationChain: BaseChain;\n prioritizationChain: BaseChain;\n executionChain: BaseChain;\n vectorstore: VectorStoreInterface;\n maxIterations?: number;\n}\n\n/**\n * Class responsible for managing tasks, including their creation,\n * prioritization, and execution. It uses three chains for these\n * operations: `creationChain`, `prioritizationChain`, and\n * `executionChain`.\n * @example\n * ```typescript\n * const babyAGI = BabyAGI.fromLLM({\n * llm: new OpenAI({ temperature: 0 }),\n * vectorstore: new MemoryVectorStore(new OpenAIEmbeddings()),\n * maxIterations: 3,\n * });\n *\n * const result = await babyAGI.call({\n * objective: \"Write a weather report for SF today\",\n * });\n * ```\n */\nexport class BabyAGI extends BaseChain implements BabyAGIInputs {\n static lc_name() {\n return \"BabyAGI\";\n }\n\n taskList: Task[];\n\n creationChain: BaseChain;\n\n prioritizationChain: BaseChain;\n\n executionChain: BaseChain;\n\n taskIDCounter: number;\n\n vectorstore: VectorStoreInterface;\n\n maxIterations: number;\n\n constructor({\n creationChain,\n prioritizationChain,\n executionChain,\n vectorstore,\n maxIterations = 100,\n verbose,\n callbacks,\n }: BabyAGIInputs) {\n super(undefined, verbose, callbacks);\n this.taskList = [];\n this.creationChain = creationChain;\n this.prioritizationChain = prioritizationChain;\n this.executionChain = executionChain;\n this.taskIDCounter = 1;\n this.vectorstore = vectorstore;\n this.maxIterations = maxIterations;\n }\n\n _chainType() {\n return \"BabyAGI\" as const;\n }\n\n get inputKeys() {\n return [\"objective\", \"firstTask\"];\n }\n\n get outputKeys() {\n return [];\n }\n\n /**\n * Adds a task to the task list.\n * @param task The task to be added.\n * @returns Promise resolving to void.\n */\n async addTask(task: Task) {\n this.taskList.push(task);\n }\n\n /**\n * Prints the current task list to the console.\n * @returns void\n */\n printTaskList() {\n console.log(\"\\x1b[95m\\x1b[1m\\n*****TASK LIST*****\\n\\x1b[0m\\x1b[0m\");\n for (const t of this.taskList) {\n console.log(`${t.taskID}: ${t.taskName}`);\n }\n }\n\n /**\n * Prints the next task to the console.\n * @param task The next task to be printed.\n * @returns void\n */\n printNextTask(task: Task) {\n console.log(\"\\x1b[92m\\x1b[1m\\n*****NEXT TASK*****\\n\\x1b[0m\\x1b[0m\");\n console.log(`${task.taskID}: ${task.taskName}`);\n }\n\n /**\n * Prints the result of a task to the console.\n * @param result The result of the task.\n * @returns void\n */\n printTaskResult(result: string) {\n console.log(\"\\x1b[93m\\x1b[1m\\n*****TASK RESULT*****\\n\\x1b[0m\\x1b[0m\");\n console.log(result.trim());\n }\n\n /**\n * Generates the next tasks based on the result of the previous task, the\n * task description, and the objective.\n * @param result The result of the previous task.\n * @param task_description The description of the task.\n * @param objective The objective of the task.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to an array of tasks without taskID.\n */\n async getNextTasks(\n result: string,\n task_description: string,\n objective: string,\n runManager?: CallbackManagerForChainRun\n ): Promise<Optional<Task, \"taskID\">[]> {\n const taskNames = this.taskList.map((t) => t.taskName);\n const incomplete_tasks = taskNames.join(\", \");\n const { [this.creationChain.outputKeys[0]]: text } =\n await this.creationChain.call(\n {\n result,\n task_description,\n incomplete_tasks,\n objective,\n },\n runManager?.getChild()\n );\n const newTasks = (text as string).split(\"\\n\");\n return newTasks\n .filter((taskName) => taskName.trim())\n .map((taskName) => ({ taskName }));\n }\n\n /**\n * Prioritizes the tasks based on the current task ID and the objective.\n * @param thisTaskID The ID of the current task.\n * @param objective The objective of the task.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to an array of prioritized tasks.\n */\n async prioritizeTasks(\n thisTaskID: number,\n objective: string,\n runManager?: CallbackManagerForChainRun\n ) {\n const taskNames = this.taskList.map((t) => t.taskName);\n const nextTaskID = thisTaskID + 1;\n const { [this.prioritizationChain.outputKeys[0]]: text } =\n await this.prioritizationChain.call(\n {\n task_names: taskNames.join(\", \"),\n next_task_id: String(nextTaskID),\n objective,\n },\n runManager?.getChild()\n );\n const newTasks = (text as string).trim().split(\"\\n\");\n const prioritizedTaskList = [];\n for (const taskString of newTasks) {\n const taskParts = taskString.trim().split(\".\", 2);\n if (taskParts.length === 2) {\n const taskID = taskParts[0].trim();\n const taskName = taskParts[1].trim();\n prioritizedTaskList.push({ taskID, taskName });\n }\n }\n return prioritizedTaskList;\n }\n\n /**\n * Retrieves the top tasks that are most similar to the given query.\n * @param query The query to search for.\n * @param k The number of top tasks to retrieve.\n * @returns Promise resolving to an array of top tasks.\n */\n async getTopTasks(query: string, k = 5) {\n const results = await this.vectorstore.similaritySearch(query, k);\n if (!results) {\n return [];\n }\n return results.map((item) => String(item.metadata.task));\n }\n\n /**\n * Executes a task based on the objective and the task description.\n * @param objective The objective of the task.\n * @param task The task to be executed.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to the result of the task execution as a string.\n */\n async executeTask(\n objective: string,\n task: string,\n runManager?: CallbackManagerForChainRun\n ) {\n const context = await this.getTopTasks(objective);\n const { [this.executionChain.outputKeys[0]]: text } =\n await this.executionChain.call(\n {\n objective,\n context: context.join(\"\\n\"),\n task,\n },\n runManager?.getChild()\n );\n return text as string;\n }\n\n async _call(\n { objective, firstTask = \"Make a todo list\" }: ChainValues,\n runManager?: CallbackManagerForChainRun\n ) {\n this.taskList = [];\n this.taskIDCounter = 1;\n await this.addTask({ taskID: \"1\", taskName: firstTask });\n\n let numIters = 0;\n while (numIters < this.maxIterations && this.taskList.length > 0) {\n this.printTaskList();\n\n const task = this.taskList.shift()!;\n this.printNextTask(task);\n\n const result = await this.executeTask(\n objective,\n task.taskName,\n runManager\n );\n const thisTaskID = parseInt(task.taskID, 10);\n this.printTaskResult(result);\n\n await this.vectorstore.addDocuments([\n new Document({\n pageContent: result,\n metadata: { task: task.taskName },\n }),\n ]);\n\n const newTasks = await this.getNextTasks(\n result,\n task.taskName,\n objective,\n runManager\n );\n for (const newTask of newTasks) {\n this.taskIDCounter += 1;\n newTask.taskID = this.taskIDCounter.toFixed();\n await this.addTask(newTask as Task);\n }\n this.taskList = await this.prioritizeTasks(\n thisTaskID,\n objective,\n runManager\n );\n\n numIters += 1;\n }\n return {};\n }\n\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Static method to create a new BabyAGI instance from a\n * BaseLanguageModel.\n * @param llm BaseLanguageModel instance used to generate a new BabyAGI instance.\n * @param vectorstore VectorStore instance used to store and retrieve vectors.\n * @param executionChain Optional BaseChain instance used to execute tasks.\n * @param verbose Optional boolean indicating whether to log verbose output.\n * @param callbacks Optional callbacks to be used during the execution of tasks.\n * @param rest Optional additional parameters.\n * @returns A new instance of BabyAGI.\n */\n static fromLLM({\n llm,\n vectorstore,\n executionChain,\n verbose,\n callbacks,\n ...rest\n }: Optional<\n BabyAGIInputs,\n \"executionChain\" | \"creationChain\" | \"prioritizationChain\"\n > & { llm: BaseLanguageModelInterface }) {\n const creationChain = TaskCreationChain.fromLLM({\n llm,\n verbose,\n callbacks,\n });\n const prioritizationChain = TaskPrioritizationChain.fromLLM({\n llm,\n verbose,\n callbacks,\n });\n return new BabyAGI({\n creationChain,\n prioritizationChain,\n executionChain:\n executionChain ||\n TaskExecutionChain.fromLLM({ llm, verbose, callbacks }),\n vectorstore,\n verbose,\n callbacks,\n ...rest,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"agent.cjs","names":["BaseChain","task: Task","result: string","task_description: string","objective: string","runManager?: CallbackManagerForChainRun","thisTaskID: number","query: string","task: string","Document","TaskCreationChain","TaskPrioritizationChain","TaskExecutionChain"],"sources":["../../../src/experimental/babyagi/agent.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, ChainInputs } from \"../../chains/base.js\";\nimport { SerializedBaseChain } from \"../../chains/serde.js\";\nimport { Optional } from \"../../types/type-utils.js\";\nimport { TaskCreationChain } from \"./task_creation.js\";\nimport { TaskExecutionChain } from \"./task_execution.js\";\nimport { TaskPrioritizationChain } from \"./task_prioritization.js\";\n\n/**\n * Interface defining the structure of a task. A task has a `taskID` and a\n * `taskName`.\n */\nexport interface Task {\n taskID: string;\n taskName: string;\n}\n\n/**\n * Interface defining the structure of the inputs for the `BabyAGI` class.\n * It extends the `ChainInputs` interface, omitting the 'memory' and\n * 'callbackManager' properties, and adds properties specific to\n * `BabyAGI`.\n */\nexport interface BabyAGIInputs extends Omit<\n ChainInputs,\n \"memory\" | \"callbackManager\"\n> {\n creationChain: BaseChain;\n prioritizationChain: BaseChain;\n executionChain: BaseChain;\n vectorstore: VectorStoreInterface;\n maxIterations?: number;\n}\n\n/**\n * Class responsible for managing tasks, including their creation,\n * prioritization, and execution. It uses three chains for these\n * operations: `creationChain`, `prioritizationChain`, and\n * `executionChain`.\n * @example\n * ```typescript\n * const babyAGI = BabyAGI.fromLLM({\n * llm: new OpenAI({ temperature: 0 }),\n * vectorstore: new MemoryVectorStore(new OpenAIEmbeddings()),\n * maxIterations: 3,\n * });\n *\n * const result = await babyAGI.call({\n * objective: \"Write a weather report for SF today\",\n * });\n * ```\n */\nexport class BabyAGI extends BaseChain implements BabyAGIInputs {\n static lc_name() {\n return \"BabyAGI\";\n }\n\n taskList: Task[];\n\n creationChain: BaseChain;\n\n prioritizationChain: BaseChain;\n\n executionChain: BaseChain;\n\n taskIDCounter: number;\n\n vectorstore: VectorStoreInterface;\n\n maxIterations: number;\n\n constructor({\n creationChain,\n prioritizationChain,\n executionChain,\n vectorstore,\n maxIterations = 100,\n verbose,\n callbacks,\n }: BabyAGIInputs) {\n super(undefined, verbose, callbacks);\n this.taskList = [];\n this.creationChain = creationChain;\n this.prioritizationChain = prioritizationChain;\n this.executionChain = executionChain;\n this.taskIDCounter = 1;\n this.vectorstore = vectorstore;\n this.maxIterations = maxIterations;\n }\n\n _chainType() {\n return \"BabyAGI\" as const;\n }\n\n get inputKeys() {\n return [\"objective\", \"firstTask\"];\n }\n\n get outputKeys() {\n return [];\n }\n\n /**\n * Adds a task to the task list.\n * @param task The task to be added.\n * @returns Promise resolving to void.\n */\n async addTask(task: Task) {\n this.taskList.push(task);\n }\n\n /**\n * Prints the current task list to the console.\n * @returns void\n */\n printTaskList() {\n console.log(\"\\x1b[95m\\x1b[1m\\n*****TASK LIST*****\\n\\x1b[0m\\x1b[0m\");\n for (const t of this.taskList) {\n console.log(`${t.taskID}: ${t.taskName}`);\n }\n }\n\n /**\n * Prints the next task to the console.\n * @param task The next task to be printed.\n * @returns void\n */\n printNextTask(task: Task) {\n console.log(\"\\x1b[92m\\x1b[1m\\n*****NEXT TASK*****\\n\\x1b[0m\\x1b[0m\");\n console.log(`${task.taskID}: ${task.taskName}`);\n }\n\n /**\n * Prints the result of a task to the console.\n * @param result The result of the task.\n * @returns void\n */\n printTaskResult(result: string) {\n console.log(\"\\x1b[93m\\x1b[1m\\n*****TASK RESULT*****\\n\\x1b[0m\\x1b[0m\");\n console.log(result.trim());\n }\n\n /**\n * Generates the next tasks based on the result of the previous task, the\n * task description, and the objective.\n * @param result The result of the previous task.\n * @param task_description The description of the task.\n * @param objective The objective of the task.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to an array of tasks without taskID.\n */\n async getNextTasks(\n result: string,\n task_description: string,\n objective: string,\n runManager?: CallbackManagerForChainRun\n ): Promise<Optional<Task, \"taskID\">[]> {\n const taskNames = this.taskList.map((t) => t.taskName);\n const incomplete_tasks = taskNames.join(\", \");\n const { [this.creationChain.outputKeys[0]]: text } =\n await this.creationChain.call(\n {\n result,\n task_description,\n incomplete_tasks,\n objective,\n },\n runManager?.getChild()\n );\n const newTasks = (text as string).split(\"\\n\");\n return newTasks\n .filter((taskName) => taskName.trim())\n .map((taskName) => ({ taskName }));\n }\n\n /**\n * Prioritizes the tasks based on the current task ID and the objective.\n * @param thisTaskID The ID of the current task.\n * @param objective The objective of the task.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to an array of prioritized tasks.\n */\n async prioritizeTasks(\n thisTaskID: number,\n objective: string,\n runManager?: CallbackManagerForChainRun\n ) {\n const taskNames = this.taskList.map((t) => t.taskName);\n const nextTaskID = thisTaskID + 1;\n const { [this.prioritizationChain.outputKeys[0]]: text } =\n await this.prioritizationChain.call(\n {\n task_names: taskNames.join(\", \"),\n next_task_id: String(nextTaskID),\n objective,\n },\n runManager?.getChild()\n );\n const newTasks = (text as string).trim().split(\"\\n\");\n const prioritizedTaskList = [];\n for (const taskString of newTasks) {\n const taskParts = taskString.trim().split(\".\", 2);\n if (taskParts.length === 2) {\n const taskID = taskParts[0].trim();\n const taskName = taskParts[1].trim();\n prioritizedTaskList.push({ taskID, taskName });\n }\n }\n return prioritizedTaskList;\n }\n\n /**\n * Retrieves the top tasks that are most similar to the given query.\n * @param query The query to search for.\n * @param k The number of top tasks to retrieve.\n * @returns Promise resolving to an array of top tasks.\n */\n async getTopTasks(query: string, k = 5) {\n const results = await this.vectorstore.similaritySearch(query, k);\n if (!results) {\n return [];\n }\n return results.map((item) => String(item.metadata.task));\n }\n\n /**\n * Executes a task based on the objective and the task description.\n * @param objective The objective of the task.\n * @param task The task to be executed.\n * @param runManager Optional CallbackManagerForChainRun instance.\n * @returns Promise resolving to the result of the task execution as a string.\n */\n async executeTask(\n objective: string,\n task: string,\n runManager?: CallbackManagerForChainRun\n ) {\n const context = await this.getTopTasks(objective);\n const { [this.executionChain.outputKeys[0]]: text } =\n await this.executionChain.call(\n {\n objective,\n context: context.join(\"\\n\"),\n task,\n },\n runManager?.getChild()\n );\n return text as string;\n }\n\n async _call(\n { objective, firstTask = \"Make a todo list\" }: ChainValues,\n runManager?: CallbackManagerForChainRun\n ) {\n this.taskList = [];\n this.taskIDCounter = 1;\n await this.addTask({ taskID: \"1\", taskName: firstTask });\n\n let numIters = 0;\n while (numIters < this.maxIterations && this.taskList.length > 0) {\n this.printTaskList();\n\n const task = this.taskList.shift()!;\n this.printNextTask(task);\n\n const result = await this.executeTask(\n objective,\n task.taskName,\n runManager\n );\n const thisTaskID = parseInt(task.taskID, 10);\n this.printTaskResult(result);\n\n await this.vectorstore.addDocuments([\n new Document({\n pageContent: result,\n metadata: { task: task.taskName },\n }),\n ]);\n\n const newTasks = await this.getNextTasks(\n result,\n task.taskName,\n objective,\n runManager\n );\n for (const newTask of newTasks) {\n this.taskIDCounter += 1;\n newTask.taskID = this.taskIDCounter.toFixed();\n await this.addTask(newTask as Task);\n }\n this.taskList = await this.prioritizeTasks(\n thisTaskID,\n objective,\n runManager\n );\n\n numIters += 1;\n }\n return {};\n }\n\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Static method to create a new BabyAGI instance from a\n * BaseLanguageModel.\n * @param llm BaseLanguageModel instance used to generate a new BabyAGI instance.\n * @param vectorstore VectorStore instance used to store and retrieve vectors.\n * @param executionChain Optional BaseChain instance used to execute tasks.\n * @param verbose Optional boolean indicating whether to log verbose output.\n * @param callbacks Optional callbacks to be used during the execution of tasks.\n * @param rest Optional additional parameters.\n * @returns A new instance of BabyAGI.\n */\n static fromLLM({\n llm,\n vectorstore,\n executionChain,\n verbose,\n callbacks,\n ...rest\n }: Optional<\n BabyAGIInputs,\n \"executionChain\" | \"creationChain\" | \"prioritizationChain\"\n > & { llm: BaseLanguageModelInterface }) {\n const creationChain = TaskCreationChain.fromLLM({\n llm,\n verbose,\n callbacks,\n });\n const prioritizationChain = TaskPrioritizationChain.fromLLM({\n llm,\n verbose,\n callbacks,\n });\n return new BabyAGI({\n creationChain,\n prioritizationChain,\n executionChain:\n executionChain ||\n TaskExecutionChain.fromLLM({ llm, verbose, callbacks }),\n vectorstore,\n verbose,\n callbacks,\n ...rest,\n });\n }\n}\n"],"mappings":"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"}