@langchain/classic 1.0.27 → 1.0.28
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.
- package/CHANGELOG.md +13 -0
- package/dist/agents/agent.cjs.map +1 -1
- package/dist/agents/agent.js.map +1 -1
- package/dist/agents/executor.cjs.map +1 -1
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/openai_functions/index.cjs.map +1 -1
- package/dist/agents/openai_functions/index.d.cts.map +1 -1
- package/dist/agents/openai_functions/index.d.ts.map +1 -1
- package/dist/agents/openai_functions/index.js.map +1 -1
- package/dist/agents/openai_tools/index.cjs.map +1 -1
- package/dist/agents/openai_tools/index.d.cts +2 -2
- package/dist/agents/openai_tools/index.d.cts.map +1 -1
- package/dist/agents/openai_tools/index.d.ts +2 -2
- package/dist/agents/openai_tools/index.d.ts.map +1 -1
- package/dist/agents/openai_tools/index.js.map +1 -1
- package/dist/agents/react/index.d.cts +2 -2
- package/dist/agents/react/index.d.cts.map +1 -1
- package/dist/agents/react/index.d.ts +2 -2
- package/dist/agents/react/index.d.ts.map +1 -1
- package/dist/agents/structured_chat/index.d.cts +2 -2
- package/dist/agents/structured_chat/index.d.cts.map +1 -1
- package/dist/agents/structured_chat/index.d.ts +2 -2
- package/dist/agents/structured_chat/index.d.ts.map +1 -1
- package/dist/agents/tool_calling/index.d.cts +2 -2
- package/dist/agents/tool_calling/index.d.cts.map +1 -1
- package/dist/agents/tool_calling/index.d.ts +2 -2
- package/dist/agents/tool_calling/index.d.ts.map +1 -1
- package/dist/agents/tool_calling/output_parser.cjs.map +1 -1
- package/dist/agents/tool_calling/output_parser.d.cts.map +1 -1
- package/dist/agents/tool_calling/output_parser.js.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts +2 -2
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts +2 -2
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts.map +1 -1
- package/dist/agents/xml/index.d.cts.map +1 -1
- package/dist/agents/xml/index.d.ts.map +1 -1
- package/dist/cache/file_system.cjs.map +1 -1
- package/dist/cache/file_system.js.map +1 -1
- package/dist/chains/analyze_documents_chain.cjs.map +1 -1
- package/dist/chains/analyze_documents_chain.js.map +1 -1
- package/dist/chains/base.cjs.map +1 -1
- package/dist/chains/base.d.cts +2 -2
- package/dist/chains/base.d.cts.map +1 -1
- package/dist/chains/base.d.ts +2 -2
- package/dist/chains/base.d.ts.map +1 -1
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/chat_vector_db_chain.cjs.map +1 -1
- package/dist/chains/chat_vector_db_chain.js.map +1 -1
- package/dist/chains/combine_docs_chain.d.cts +2 -2
- package/dist/chains/combine_docs_chain.d.cts.map +1 -1
- package/dist/chains/combine_docs_chain.d.ts +2 -2
- package/dist/chains/combine_docs_chain.d.ts.map +1 -1
- package/dist/chains/combine_documents/reduce.cjs.map +1 -1
- package/dist/chains/combine_documents/reduce.js.map +1 -1
- package/dist/chains/conversational_retrieval_chain.cjs.map +1 -1
- package/dist/chains/conversational_retrieval_chain.js.map +1 -1
- package/dist/chains/graph_qa/cypher.cjs.map +1 -1
- package/dist/chains/graph_qa/cypher.js.map +1 -1
- package/dist/chains/llm_chain.cjs.map +1 -1
- package/dist/chains/llm_chain.js.map +1 -1
- package/dist/chains/load.d.cts +1 -2
- package/dist/chains/load.d.cts.map +1 -1
- package/dist/chains/load.d.ts +1 -2
- package/dist/chains/load.d.ts.map +1 -1
- package/dist/chains/openai_functions/base.cjs.map +1 -1
- package/dist/chains/openai_functions/base.js.map +1 -1
- package/dist/chains/openai_functions/openapi.cjs.map +1 -1
- package/dist/chains/openai_functions/openapi.js.map +1 -1
- package/dist/chains/openai_moderation.cjs.map +1 -1
- package/dist/chains/openai_moderation.js.map +1 -1
- package/dist/chains/query_constructor/index.cjs.map +1 -1
- package/dist/chains/query_constructor/index.js.map +1 -1
- package/dist/chains/question_answering/load.d.cts +1 -2
- package/dist/chains/question_answering/load.d.cts.map +1 -1
- package/dist/chains/question_answering/load.d.ts +1 -2
- package/dist/chains/question_answering/load.d.ts.map +1 -1
- package/dist/chains/retrieval.cjs.map +1 -1
- package/dist/chains/retrieval.js.map +1 -1
- package/dist/chains/retrieval_qa.cjs.map +1 -1
- package/dist/chains/retrieval_qa.js.map +1 -1
- package/dist/chains/router/utils.cjs.map +1 -1
- package/dist/chains/router/utils.js.map +1 -1
- package/dist/chains/summarization/load.d.cts +1 -2
- package/dist/chains/summarization/load.d.cts.map +1 -1
- package/dist/chains/summarization/load.d.ts +1 -2
- package/dist/chains/summarization/load.d.ts.map +1 -1
- package/dist/chains/vector_db_qa.cjs.map +1 -1
- package/dist/chains/vector_db_qa.js.map +1 -1
- package/dist/chat_models/universal.cjs +8 -10
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.d.cts +3 -5
- package/dist/chat_models/universal.d.cts.map +1 -1
- package/dist/chat_models/universal.d.ts +3 -5
- package/dist/chat_models/universal.d.ts.map +1 -1
- package/dist/chat_models/universal.js +8 -10
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/document_loaders/fs/directory.d.cts.map +1 -1
- package/dist/document_loaders/fs/directory.d.ts.map +1 -1
- package/dist/document_loaders/fs/json.cjs.map +1 -1
- package/dist/document_loaders/fs/json.js.map +1 -1
- package/dist/document_transformers/openai_functions.d.cts.map +1 -1
- package/dist/evaluation/agents/index.d.cts +1 -0
- package/dist/evaluation/agents/trajectory.d.cts +2 -2
- package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
- package/dist/evaluation/agents/trajectory.d.ts +2 -2
- package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
- package/dist/evaluation/base.cjs.map +1 -1
- package/dist/evaluation/base.d.cts.map +1 -1
- package/dist/evaluation/base.js.map +1 -1
- package/dist/evaluation/comparison/index.d.cts +1 -0
- package/dist/evaluation/comparison/pairwise.cjs.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.cts +3 -3
- package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.ts +3 -3
- package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
- package/dist/evaluation/comparison/pairwise.js.map +1 -1
- package/dist/evaluation/criteria/criteria.cjs.map +1 -1
- package/dist/evaluation/criteria/criteria.d.cts +3 -3
- package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.ts +3 -3
- package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
- package/dist/evaluation/criteria/criteria.js.map +1 -1
- package/dist/evaluation/criteria/index.d.cts +1 -0
- package/dist/evaluation/embedding_distance/index.d.cts +1 -0
- package/dist/evaluation/loader.cjs.map +1 -1
- package/dist/evaluation/loader.d.cts.map +1 -1
- package/dist/evaluation/loader.js.map +1 -1
- package/dist/evaluation/qa/index.d.cts +1 -0
- package/dist/experimental/autogpt/prompt.d.cts +2 -2
- package/dist/experimental/autogpt/prompt.d.cts.map +1 -1
- package/dist/experimental/autogpt/prompt.d.ts +2 -2
- package/dist/experimental/autogpt/prompt.d.ts.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.cjs.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.js.map +1 -1
- package/dist/experimental/autogpt/schema.cjs.map +1 -1
- package/dist/experimental/autogpt/schema.js.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.cjs.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.js.map +1 -1
- package/dist/experimental/masking/parser.cjs.map +1 -1
- package/dist/experimental/masking/parser.js.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.cjs.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.js.map +1 -1
- package/dist/experimental/openai_assistant/index.cjs.map +1 -1
- package/dist/experimental/openai_assistant/index.d.cts +3 -3
- package/dist/experimental/openai_assistant/index.d.ts +3 -3
- package/dist/experimental/openai_assistant/index.js.map +1 -1
- package/dist/experimental/openai_files/index.d.cts +4 -4
- package/dist/experimental/openai_files/index.d.ts +4 -4
- package/dist/experimental/plan_and_execute/agent_executor.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.js.map +1 -1
- package/dist/experimental/prompts/custom_format.cjs.map +1 -1
- package/dist/experimental/prompts/custom_format.js.map +1 -1
- package/dist/experimental/prompts/handlebars.cjs.map +1 -1
- package/dist/experimental/prompts/handlebars.d.cts +2 -2
- package/dist/experimental/prompts/handlebars.d.cts.map +1 -1
- package/dist/experimental/prompts/handlebars.d.ts +2 -2
- package/dist/experimental/prompts/handlebars.d.ts.map +1 -1
- package/dist/experimental/prompts/handlebars.js.map +1 -1
- package/dist/hub/base.cjs.map +1 -1
- package/dist/hub/base.d.cts +0 -1
- package/dist/hub/base.d.cts.map +1 -1
- package/dist/hub/base.d.ts +0 -1
- package/dist/hub/base.d.ts.map +1 -1
- package/dist/hub/base.js.map +1 -1
- package/dist/hub/index.cjs.map +1 -1
- package/dist/hub/index.js.map +1 -1
- package/dist/load/index.cjs.map +1 -1
- package/dist/load/index.js.map +1 -1
- package/dist/output_parsers/combining.cjs.map +1 -1
- package/dist/output_parsers/combining.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.d.cts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.d.ts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
- package/dist/output_parsers/fix.cjs.map +1 -1
- package/dist/output_parsers/fix.js.map +1 -1
- package/dist/output_parsers/openai_functions.d.cts.map +1 -1
- package/dist/output_parsers/openai_functions.d.ts.map +1 -1
- package/dist/output_parsers/openai_tools.cjs.map +1 -1
- package/dist/output_parsers/openai_tools.js.map +1 -1
- package/dist/output_parsers/regex.cjs.map +1 -1
- package/dist/output_parsers/regex.js.map +1 -1
- package/dist/output_parsers/structured.d.cts +2 -2
- package/dist/output_parsers/structured.d.cts.map +1 -1
- package/dist/output_parsers/structured.d.ts +2 -2
- package/dist/output_parsers/structured.d.ts.map +1 -1
- package/dist/retrievers/document_compressors/index.cjs.map +1 -1
- package/dist/retrievers/document_compressors/index.js.map +1 -1
- package/dist/retrievers/matryoshka_retriever.cjs.map +1 -1
- package/dist/retrievers/matryoshka_retriever.d.cts +1 -1
- package/dist/retrievers/matryoshka_retriever.d.cts.map +1 -1
- package/dist/retrievers/matryoshka_retriever.d.ts +1 -1
- package/dist/retrievers/matryoshka_retriever.d.ts.map +1 -1
- package/dist/retrievers/matryoshka_retriever.js.map +1 -1
- package/dist/retrievers/multi_query.cjs.map +1 -1
- package/dist/retrievers/multi_query.js.map +1 -1
- package/dist/retrievers/parent_document.cjs.map +1 -1
- package/dist/retrievers/parent_document.js.map +1 -1
- package/dist/schema/prompt_template.d.cts +1 -2
- package/dist/schema/prompt_template.d.cts.map +1 -1
- package/dist/schema/prompt_template.d.ts +1 -2
- package/dist/schema/prompt_template.d.ts.map +1 -1
- package/dist/smith/config.cjs.map +1 -1
- package/dist/smith/config.d.cts +1 -1
- package/dist/smith/config.d.ts +1 -1
- package/dist/smith/config.d.ts.map +1 -1
- package/dist/smith/config.js.map +1 -1
- package/dist/smith/runner_utils.cjs.map +1 -1
- package/dist/smith/runner_utils.d.cts +1 -1
- package/dist/smith/runner_utils.d.cts.map +1 -1
- package/dist/smith/runner_utils.d.ts +1 -1
- package/dist/smith/runner_utils.d.ts.map +1 -1
- package/dist/smith/runner_utils.js.map +1 -1
- package/dist/sql_db.d.cts +2 -2
- package/dist/sql_db.d.cts.map +1 -1
- package/dist/sql_db.d.ts +2 -2
- package/dist/sql_db.d.ts.map +1 -1
- package/dist/storage/encoder_backed.cjs.map +1 -1
- package/dist/storage/encoder_backed.js.map +1 -1
- package/dist/storage/file_system.cjs.map +1 -1
- package/dist/storage/file_system.js.map +1 -1
- package/dist/stores/doc/in_memory.cjs.map +1 -1
- package/dist/stores/doc/in_memory.js.map +1 -1
- package/dist/tools/json.cjs.map +1 -1
- package/dist/tools/json.js.map +1 -1
- package/dist/tools/webbrowser.cjs.map +1 -1
- package/dist/tools/webbrowser.d.cts.map +1 -1
- package/dist/tools/webbrowser.d.ts.map +1 -1
- package/dist/tools/webbrowser.js.map +1 -1
- package/dist/util/document.d.cts +1 -1
- package/dist/util/document.d.cts.map +1 -1
- package/dist/util/document.d.ts +1 -1
- package/dist/util/document.d.ts.map +1 -1
- package/dist/util/is-network-error/index.cjs.map +1 -1
- package/dist/util/is-network-error/index.js.map +1 -1
- package/dist/util/load.cjs.map +1 -1
- package/dist/util/load.js.map +1 -1
- package/dist/util/openapi.cjs.map +1 -1
- package/dist/util/openapi.d.cts +32 -32
- package/dist/util/openapi.d.cts.map +1 -1
- package/dist/util/openapi.d.ts +32 -32
- package/dist/util/openapi.d.ts.map +1 -1
- package/dist/util/openapi.js.map +1 -1
- package/dist/util/p-retry/index.cjs.map +1 -1
- package/dist/util/p-retry/index.js.map +1 -1
- package/dist/vectorstores/memory.cjs.map +1 -1
- package/dist/vectorstores/memory.js.map +1 -1
- package/package.json +25 -48
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/client.d.cts +0 -1494
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/client.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/client.d.ts +0 -1494
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/client.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/_runner.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/_runner.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluate_comparative.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluate_comparative.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluator.d.cts +0 -66
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluator.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluator.d.ts +0 -66
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluator.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/index.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/index.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/string_evaluator.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/string_evaluator.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/index.d.cts +0 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/index.d.ts +0 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/run_trees.d.cts +0 -145
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/run_trees.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/run_trees.d.ts +0 -145
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/run_trees.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/schemas.d.cts +0 -437
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/schemas.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/schemas.d.ts +0 -437
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/schemas.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.cts +0 -7
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.ts +0 -7
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/types.d.cts +0 -38
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/types.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/types.d.ts +0 -38
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/types.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.cts +0 -25
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.ts +0 -25
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/p-queue.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/p-queue.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/prompt_cache/index.d.cts +0 -129
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/prompt_cache/index.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/prompt_cache/index.d.ts +0 -129
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/prompt_cache/index.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/evaluation.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/evaluation.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/singletons/traceable.d.cts +0 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.20.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/singletons/traceable.d.ts +0 -2
- package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.d.cts +0 -1
- package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_system.js","names":[],"sources":["../../src/cache/file_system.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs/promises\";\n\nimport {\n BaseCache,\n serializeGeneration,\n deserializeStoredGeneration,\n} from \"@langchain/core/caches\";\nimport { Generation } from \"@langchain/core/outputs\";\n\n/**\n * A cache that uses the local filesystem as the backing store.\n * This is useful for local development and testing. But it is not recommended for production use.\n */\nexport class LocalFileCache extends BaseCache {\n private cacheDir: string;\n\n private constructor(cacheDir: string) {\n super();\n this.cacheDir = cacheDir;\n }\n\n /**\n * Create a new cache backed by the local filesystem.\n * It ensures that the cache directory exists before returning.\n * @param cacheDir\n */\n public static async create(cacheDir?: string): Promise<LocalFileCache> {\n if (!cacheDir) {\n //
|
|
1
|
+
{"version":3,"file":"file_system.js","names":[],"sources":["../../src/cache/file_system.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs/promises\";\n\nimport {\n BaseCache,\n serializeGeneration,\n deserializeStoredGeneration,\n} from \"@langchain/core/caches\";\nimport { Generation } from \"@langchain/core/outputs\";\n\n/**\n * A cache that uses the local filesystem as the backing store.\n * This is useful for local development and testing. But it is not recommended for production use.\n */\nexport class LocalFileCache extends BaseCache {\n private cacheDir: string;\n\n private constructor(cacheDir: string) {\n super();\n this.cacheDir = cacheDir;\n }\n\n /**\n * Create a new cache backed by the local filesystem.\n * It ensures that the cache directory exists before returning.\n * @param cacheDir\n */\n public static async create(cacheDir?: string): Promise<LocalFileCache> {\n if (!cacheDir) {\n // oxlint-disable-next-line no-param-reassign\n cacheDir = await fs.mkdtemp(\"langchain-cache-\");\n } else {\n // ensure the cache directory exists\n await fs.mkdir(cacheDir, { recursive: true });\n }\n return new LocalFileCache(cacheDir);\n }\n\n /**\n * Retrieves data from the cache. It constructs a cache key from the given\n * `prompt` and `llmKey`, and retrieves the corresponding value from the\n * cache files.\n * @param prompt The prompt used to construct the cache key.\n * @param llmKey The LLM key used to construct the cache key.\n * @returns An array of Generations if found, null otherwise.\n */\n public async lookup(prompt: string, llmKey: string) {\n const key = `${this.keyEncoder(prompt, llmKey)}.json`;\n try {\n const content = await fs.readFile(path.join(this.cacheDir, key));\n return JSON.parse(content.toString()).map(deserializeStoredGeneration);\n } catch {\n return null;\n }\n }\n\n /**\n * Updates the cache with new data. It constructs a cache key from the\n * given `prompt` and `llmKey`, and stores the `value` in a specific\n * file in the cache directory.\n * @param prompt The prompt used to construct the cache key.\n * @param llmKey The LLM key used to construct the cache key.\n * @param generations The value to be stored in the cache.\n */\n public async update(\n prompt: string,\n llmKey: string,\n generations: Generation[]\n ) {\n const key = `${this.keyEncoder(prompt, llmKey)}.json`;\n await fs.writeFile(\n path.join(this.cacheDir, key),\n JSON.stringify(generations.map(serializeGeneration))\n );\n }\n}\n"],"mappings":";;;;;;;;;;AAcA,IAAa,iBAAb,MAAa,uBAAuB,UAAU;CAC5C;CAEA,YAAoB,UAAkB;AACpC,SAAO;AACP,OAAK,WAAW;;;;;;;CAQlB,aAAoB,OAAO,UAA4C;AACrE,MAAI,CAAC,SAEH,YAAW,MAAM,GAAG,QAAQ,mBAAmB;MAG/C,OAAM,GAAG,MAAM,UAAU,EAAE,WAAW,MAAM,CAAC;AAE/C,SAAO,IAAI,eAAe,SAAS;;;;;;;;;;CAWrC,MAAa,OAAO,QAAgB,QAAgB;EAClD,MAAM,MAAM,GAAG,KAAK,WAAW,QAAQ,OAAO,CAAC;AAC/C,MAAI;GACF,MAAM,UAAU,MAAM,GAAG,SAAS,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC;AAChE,UAAO,KAAK,MAAM,QAAQ,UAAU,CAAC,CAAC,IAAI,4BAA4B;UAChE;AACN,UAAO;;;;;;;;;;;CAYX,MAAa,OACX,QACA,QACA,aACA;EACA,MAAM,MAAM,GAAG,KAAK,WAAW,QAAQ,OAAO,CAAC;AAC/C,QAAM,GAAG,UACP,KAAK,KAAK,KAAK,UAAU,IAAI,EAC7B,KAAK,UAAU,YAAY,IAAI,oBAAoB,CAAC,CACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze_documents_chain.cjs","names":["BaseChain","RecursiveCharacterTextSplitter"],"sources":["../../src/chains/analyze_documents_chain.ts"],"sourcesContent":["import { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport {\n TextSplitter,\n RecursiveCharacterTextSplitter,\n} from \"@langchain/textsplitters\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { SerializedAnalyzeDocumentChain } from \"./serde.js\";\n\n//
|
|
1
|
+
{"version":3,"file":"analyze_documents_chain.cjs","names":["BaseChain","RecursiveCharacterTextSplitter"],"sources":["../../src/chains/analyze_documents_chain.ts"],"sourcesContent":["import { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport {\n TextSplitter,\n RecursiveCharacterTextSplitter,\n} from \"@langchain/textsplitters\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { SerializedAnalyzeDocumentChain } from \"./serde.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\n/**\n * Interface for the input parameters required by the AnalyzeDocumentChain\n * class.\n */\nexport interface AnalyzeDocumentChainInput extends Omit<ChainInputs, \"memory\"> {\n combineDocumentsChain: BaseChain;\n textSplitter?: TextSplitter;\n inputKey?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n * @example\n * ```typescript\n * const model = new ChatOpenAI({ model: \"gpt-4o-mini\", temperature: 0 });\n * const combineDocsChain = loadSummarizationChain(model);\n * const chain = new AnalyzeDocumentChain({\n * combineDocumentsChain: combineDocsChain,\n * });\n *\n * // Read the text from a file (this is a placeholder for actual file reading)\n * const text = readTextFromFile(\"state_of_the_union.txt\");\n *\n * // Invoke the chain to analyze the document\n * const res = await chain.call({\n * input_document: text,\n * });\n *\n * console.log({ res });\n * ```\n */\nexport class AnalyzeDocumentChain\n extends BaseChain\n implements AnalyzeDocumentChainInput\n{\n static lc_name() {\n return \"AnalyzeDocumentChain\";\n }\n\n inputKey = \"input_document\";\n\n combineDocumentsChain: BaseChain;\n\n textSplitter: TextSplitter;\n\n constructor(fields: AnalyzeDocumentChainInput) {\n super(fields);\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.textSplitter =\n fields.textSplitter ?? new RecursiveCharacterTextSplitter();\n }\n\n get inputKeys(): string[] {\n return [this.inputKey];\n }\n\n get outputKeys(): string[] {\n return this.combineDocumentsChain.outputKeys;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: doc, ...rest } = values;\n\n const currentDoc = doc as string;\n const currentDocs = await this.textSplitter.createDocuments([currentDoc]);\n\n const newInputs = { input_documents: currentDocs, ...rest };\n const result = await this.combineDocumentsChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"analyze_document_chain\" as const;\n }\n\n static async deserialize(\n data: SerializedAnalyzeDocumentChain,\n values: LoadValues\n ) {\n if (!(\"text_splitter\" in values)) {\n throw new Error(\n `Need to pass in a text_splitter to deserialize AnalyzeDocumentChain.`\n );\n }\n const { text_splitter } = values;\n\n if (!data.combine_document_chain) {\n throw new Error(\n `Need to pass in a combine_document_chain to deserialize AnalyzeDocumentChain.`\n );\n }\n\n return new AnalyzeDocumentChain({\n combineDocumentsChain: await BaseChain.deserialize(\n data.combine_document_chain\n ),\n textSplitter: text_splitter,\n });\n }\n\n serialize(): SerializedAnalyzeDocumentChain {\n return {\n _type: this._chainType(),\n combine_document_chain: this.combineDocumentsChain.serialize(),\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,IAAa,uBAAb,MAAa,6BACHA,aAAAA,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT,WAAW;CAEX;CAEA;CAEA,YAAY,QAAmC;AAC7C,QAAM,OAAO;AACb,OAAK,wBAAwB,OAAO;AACpC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,eACH,OAAO,gBAAgB,IAAIC,yBAAAA,gCAAgC;;CAG/D,IAAI,YAAsB;AACxB,SAAO,CAAC,KAAK,SAAS;;CAGxB,IAAI,aAAuB;AACzB,SAAO,KAAK,sBAAsB;;;CAIpC,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;EAE7D,MAAM,GAAG,KAAK,WAAW,KAAK,GAAG,SAAS;EAE1C,MAAM,aAAa;EAGnB,MAAM,YAAY;GAAE,iBAFA,MAAM,KAAK,aAAa,gBAAgB,CAAC,WAAW,CAAC;GAEvB,GAAG;GAAM;AAK3D,SAJe,MAAM,KAAK,sBAAsB,KAC9C,WACA,YAAY,SAAS,oBAAoB,CAC1C;;CAIH,aAAa;AACX,SAAO;;CAGT,aAAa,YACX,MACA,QACA;AACA,MAAI,EAAE,mBAAmB,QACvB,OAAM,IAAI,MACR,uEACD;EAEH,MAAM,EAAE,kBAAkB;AAE1B,MAAI,CAAC,KAAK,uBACR,OAAM,IAAI,MACR,gFACD;AAGH,SAAO,IAAI,qBAAqB;GAC9B,uBAAuB,MAAMD,aAAAA,UAAU,YACrC,KAAK,uBACN;GACD,cAAc;GACf,CAAC;;CAGJ,YAA4C;AAC1C,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,wBAAwB,KAAK,sBAAsB,WAAW;GAC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze_documents_chain.js","names":[],"sources":["../../src/chains/analyze_documents_chain.ts"],"sourcesContent":["import { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport {\n TextSplitter,\n RecursiveCharacterTextSplitter,\n} from \"@langchain/textsplitters\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { SerializedAnalyzeDocumentChain } from \"./serde.js\";\n\n//
|
|
1
|
+
{"version":3,"file":"analyze_documents_chain.js","names":[],"sources":["../../src/chains/analyze_documents_chain.ts"],"sourcesContent":["import { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport {\n TextSplitter,\n RecursiveCharacterTextSplitter,\n} from \"@langchain/textsplitters\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { SerializedAnalyzeDocumentChain } from \"./serde.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\n/**\n * Interface for the input parameters required by the AnalyzeDocumentChain\n * class.\n */\nexport interface AnalyzeDocumentChainInput extends Omit<ChainInputs, \"memory\"> {\n combineDocumentsChain: BaseChain;\n textSplitter?: TextSplitter;\n inputKey?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n * @example\n * ```typescript\n * const model = new ChatOpenAI({ model: \"gpt-4o-mini\", temperature: 0 });\n * const combineDocsChain = loadSummarizationChain(model);\n * const chain = new AnalyzeDocumentChain({\n * combineDocumentsChain: combineDocsChain,\n * });\n *\n * // Read the text from a file (this is a placeholder for actual file reading)\n * const text = readTextFromFile(\"state_of_the_union.txt\");\n *\n * // Invoke the chain to analyze the document\n * const res = await chain.call({\n * input_document: text,\n * });\n *\n * console.log({ res });\n * ```\n */\nexport class AnalyzeDocumentChain\n extends BaseChain\n implements AnalyzeDocumentChainInput\n{\n static lc_name() {\n return \"AnalyzeDocumentChain\";\n }\n\n inputKey = \"input_document\";\n\n combineDocumentsChain: BaseChain;\n\n textSplitter: TextSplitter;\n\n constructor(fields: AnalyzeDocumentChainInput) {\n super(fields);\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.textSplitter =\n fields.textSplitter ?? new RecursiveCharacterTextSplitter();\n }\n\n get inputKeys(): string[] {\n return [this.inputKey];\n }\n\n get outputKeys(): string[] {\n return this.combineDocumentsChain.outputKeys;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: doc, ...rest } = values;\n\n const currentDoc = doc as string;\n const currentDocs = await this.textSplitter.createDocuments([currentDoc]);\n\n const newInputs = { input_documents: currentDocs, ...rest };\n const result = await this.combineDocumentsChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"analyze_document_chain\" as const;\n }\n\n static async deserialize(\n data: SerializedAnalyzeDocumentChain,\n values: LoadValues\n ) {\n if (!(\"text_splitter\" in values)) {\n throw new Error(\n `Need to pass in a text_splitter to deserialize AnalyzeDocumentChain.`\n );\n }\n const { text_splitter } = values;\n\n if (!data.combine_document_chain) {\n throw new Error(\n `Need to pass in a combine_document_chain to deserialize AnalyzeDocumentChain.`\n );\n }\n\n return new AnalyzeDocumentChain({\n combineDocumentsChain: await BaseChain.deserialize(\n data.combine_document_chain\n ),\n textSplitter: text_splitter,\n });\n }\n\n serialize(): SerializedAnalyzeDocumentChain {\n return {\n _type: this._chainType(),\n combine_document_chain: this.combineDocumentsChain.serialize(),\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,IAAa,uBAAb,MAAa,6BACH,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT,WAAW;CAEX;CAEA;CAEA,YAAY,QAAmC;AAC7C,QAAM,OAAO;AACb,OAAK,wBAAwB,OAAO;AACpC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,eACH,OAAO,gBAAgB,IAAI,gCAAgC;;CAG/D,IAAI,YAAsB;AACxB,SAAO,CAAC,KAAK,SAAS;;CAGxB,IAAI,aAAuB;AACzB,SAAO,KAAK,sBAAsB;;;CAIpC,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;EAE7D,MAAM,GAAG,KAAK,WAAW,KAAK,GAAG,SAAS;EAE1C,MAAM,aAAa;EAGnB,MAAM,YAAY;GAAE,iBAFA,MAAM,KAAK,aAAa,gBAAgB,CAAC,WAAW,CAAC;GAEvB,GAAG;GAAM;AAK3D,SAJe,MAAM,KAAK,sBAAsB,KAC9C,WACA,YAAY,SAAS,oBAAoB,CAC1C;;CAIH,aAAa;AACX,SAAO;;CAGT,aAAa,YACX,MACA,QACA;AACA,MAAI,EAAE,mBAAmB,QACvB,OAAM,IAAI,MACR,uEACD;EAEH,MAAM,EAAE,kBAAkB;AAE1B,MAAI,CAAC,KAAK,uBACR,OAAM,IAAI,MACR,gFACD;AAGH,SAAO,IAAI,qBAAqB;GAC9B,uBAAuB,MAAM,UAAU,YACrC,KAAK,uBACN;GACD,cAAc;GACf,CAAC;;CAGJ,YAA4C;AAC1C,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,wBAAwB,KAAK,sBAAsB,WAAW;GAC/D"}
|
package/dist/chains/base.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.cjs","names":["BaseLangChain","CallbackManager","RUN_KEY"],"sources":["../../src/chains/base.ts"],"sourcesContent":["import { BaseMemory } from \"@langchain/core/memory\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { RUN_KEY } from \"@langchain/core/outputs\";\nimport {\n CallbackManagerForChainRun,\n CallbackManager,\n Callbacks,\n parseCallbackConfigArg,\n} from \"@langchain/core/callbacks/manager\";\nimport { ensureConfig, type RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseLangChain,\n BaseLangChainParams,\n} from \"@langchain/core/language_models/base\";\nimport { SerializedBaseChain } from \"./serde.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nexport interface ChainInputs extends BaseLangChainParams {\n memory?: BaseMemory;\n\n /**\n * @deprecated Use `callbacks` instead\n */\n callbackManager?: CallbackManager;\n}\n\n/**\n * Base interface that all chains must implement.\n */\nexport abstract class BaseChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n>\n extends BaseLangChain<RunInput, RunOutput>\n implements ChainInputs\n{\n declare memory?: BaseMemory;\n\n get lc_namespace(): string[] {\n return [\"langchain\", \"chains\", this._chainType()];\n }\n\n constructor(\n fields?: BaseMemory | ChainInputs,\n /** @deprecated */\n verbose?: boolean,\n /** @deprecated */\n callbacks?: Callbacks\n ) {\n if (\n arguments.length === 1 &&\n typeof fields === \"object\" &&\n !(\"saveContext\" in fields)\n ) {\n // fields is not a BaseMemory\n const { memory, callbackManager, ...rest } = fields;\n super({ ...rest, callbacks: callbackManager ?? rest.callbacks });\n this.memory = memory;\n } else {\n // fields is a BaseMemory\n super({ verbose, callbacks });\n this.memory = fields as BaseMemory;\n }\n }\n\n /** @ignore */\n _selectMemoryInputs(values: ChainValues): ChainValues {\n const valuesForMemory = { ...values };\n if (\"signal\" in valuesForMemory) {\n delete valuesForMemory.signal;\n }\n if (\"timeout\" in valuesForMemory) {\n delete valuesForMemory.timeout;\n }\n return valuesForMemory;\n }\n\n /**\n * Invoke the chain with the provided input and returns the output.\n * @param input Input values for the chain run.\n * @param config Optional configuration for the Runnable.\n * @returns Promise that resolves with the output of the chain run.\n */\n async invoke(input: RunInput, options?: RunnableConfig): Promise<RunOutput> {\n const config = ensureConfig(options);\n const fullValues = await this._formatValues(input);\n const callbackManager_ = await CallbackManager.configure(\n config?.callbacks,\n this.callbacks,\n config?.tags,\n this.tags,\n config?.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleChainStart(\n this.toJSON(),\n fullValues,\n undefined,\n undefined,\n undefined,\n undefined,\n config?.runName\n );\n let outputValues: RunOutput;\n try {\n if (fullValues.signal) {\n let listener: (() => void) | undefined;\n outputValues = (await Promise.race([\n this._call(fullValues as RunInput, runManager, config),\n new Promise<never>((_, reject) => {\n listener = () => {\n reject(new Error(\"AbortError\"));\n };\n fullValues.signal?.addEventListener(\"abort\", listener, {\n once: true,\n });\n }),\n ]).finally(() => {\n if (fullValues.signal && listener) {\n fullValues.signal.removeEventListener(\"abort\", listener);\n }\n })) as RunOutput;\n } else {\n outputValues = await this._call(\n fullValues as RunInput,\n runManager,\n config\n );\n }\n } catch (e) {\n await runManager?.handleChainError(e);\n throw e;\n }\n if (!(this.memory == null)) {\n await this.memory.saveContext(\n this._selectMemoryInputs(input),\n outputValues\n );\n }\n await runManager?.handleChainEnd(outputValues);\n // add the runManager's currentRunId to the outputValues\n Object.defineProperty(outputValues, RUN_KEY, {\n value: runManager ? { runId: runManager?.runId } : undefined,\n configurable: true,\n });\n return outputValues;\n }\n\n private _validateOutputs(outputs: Record<string, unknown>): void {\n const missingKeys = this.outputKeys.filter((k) => !(k in outputs));\n if (missingKeys.length) {\n throw new Error(\n `Missing output keys: ${missingKeys.join(\n \", \"\n )} from chain ${this._chainType()}`\n );\n }\n }\n\n async prepOutputs(\n inputs: Record<string, unknown>,\n outputs: Record<string, unknown>,\n returnOnlyOutputs = false\n ) {\n this._validateOutputs(outputs);\n if (this.memory) {\n await this.memory.saveContext(inputs, outputs);\n }\n if (returnOnlyOutputs) {\n return outputs;\n }\n return { ...inputs, ...outputs };\n }\n\n /**\n * Run the core logic of this chain and return the output\n */\n abstract _call(\n values: RunInput,\n runManager?: CallbackManagerForChainRun,\n config?: RunnableConfig\n ): Promise<RunOutput>;\n\n /**\n * Return the string type key uniquely identifying this class of chain.\n */\n abstract _chainType(): string;\n\n /**\n * Return a json-like object representing this chain.\n */\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n abstract get inputKeys(): string[];\n\n abstract get outputKeys(): string[];\n\n /** @deprecated Use .invoke() instead. Will be removed in 0.2.0. */\n async run(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: any,\n config?: Callbacks | RunnableConfig\n ): Promise<string> {\n const inputKeys = this.inputKeys.filter(\n (k) => !this.memory?.memoryKeys.includes(k)\n );\n const isKeylessInput = inputKeys.length <= 1;\n if (!isKeylessInput) {\n throw new Error(\n `Chain ${this._chainType()} expects multiple inputs, cannot use 'run' `\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const values = inputKeys.length ? { [inputKeys[0]]: input } : ({} as any);\n const returnValues = await this.call(values, config);\n const keys = Object.keys(returnValues);\n\n if (keys.length === 1) {\n return returnValues[keys[0]];\n }\n throw new Error(\n \"return values have multiple keys, `run` only supported when one key currently\"\n );\n }\n\n protected async _formatValues(\n values: ChainValues & { signal?: AbortSignal; timeout?: number }\n ) {\n const fullValues = { ...values } as typeof values;\n if (fullValues.timeout && !fullValues.signal) {\n fullValues.signal = AbortSignal.timeout(fullValues.timeout);\n delete fullValues.timeout;\n }\n if (!(this.memory == null)) {\n const newValues = await this.memory.loadMemoryVariables(\n this._selectMemoryInputs(values)\n );\n for (const [key, value] of Object.entries(newValues)) {\n fullValues[key] = value;\n }\n }\n return fullValues;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.2.0.\n *\n * Run the core logic of this chain and add to output if desired.\n *\n * Wraps _call and handles memory.\n */\n async call(\n values: ChainValues & { signal?: AbortSignal; timeout?: number },\n config?: Callbacks | RunnableConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<RunOutput> {\n const parsedConfig = { tags, ...parseCallbackConfigArg(config) };\n return this.invoke(values as RunInput, parsedConfig);\n }\n\n /**\n * @deprecated Use .batch() instead. Will be removed in 0.2.0.\n *\n * Call the chain on all inputs in the list\n */\n async apply(\n inputs: RunInput[],\n config?: (Callbacks | RunnableConfig)[]\n ): Promise<RunOutput[]> {\n return Promise.all(\n inputs.map(async (i, idx) => this.call(i, config?.[idx]))\n );\n }\n\n /**\n * Load a chain from a json-like object describing it.\n */\n static async deserialize(\n data: SerializedBaseChain,\n values: LoadValues = {}\n ): Promise<BaseChain> {\n switch (data._type) {\n case \"llm_chain\": {\n const { LLMChain } = await import(\"./llm_chain.js\");\n return LLMChain.deserialize(data);\n }\n case \"sequential_chain\": {\n const { SequentialChain } = await import(\"./sequential_chain.js\");\n return SequentialChain.deserialize(data);\n }\n case \"simple_sequential_chain\": {\n const { SimpleSequentialChain } = await import(\"./sequential_chain.js\");\n return SimpleSequentialChain.deserialize(data);\n }\n case \"stuff_documents_chain\": {\n const { StuffDocumentsChain } = await import(\"./combine_docs_chain.js\");\n return StuffDocumentsChain.deserialize(data);\n }\n case \"map_reduce_documents_chain\": {\n const { MapReduceDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return MapReduceDocumentsChain.deserialize(data);\n }\n case \"refine_documents_chain\": {\n const { RefineDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return RefineDocumentsChain.deserialize(data);\n }\n case \"vector_db_qa\": {\n const { VectorDBQAChain } = await import(\"./vector_db_qa.js\");\n return VectorDBQAChain.deserialize(data, values);\n }\n case \"api_chain\": {\n const { APIChain } = await import(\"./api/api_chain.js\");\n return APIChain.deserialize(data);\n }\n default:\n throw new Error(\n `Invalid prompt type in config: ${\n (data as SerializedBaseChain)._type\n }`\n );\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.cjs","names":["BaseLangChain","CallbackManager","RUN_KEY"],"sources":["../../src/chains/base.ts"],"sourcesContent":["import { BaseMemory } from \"@langchain/core/memory\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { RUN_KEY } from \"@langchain/core/outputs\";\nimport {\n CallbackManagerForChainRun,\n CallbackManager,\n Callbacks,\n parseCallbackConfigArg,\n} from \"@langchain/core/callbacks/manager\";\nimport { ensureConfig, type RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseLangChain,\n BaseLangChainParams,\n} from \"@langchain/core/language_models/base\";\nimport { SerializedBaseChain } from \"./serde.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nexport interface ChainInputs extends BaseLangChainParams {\n memory?: BaseMemory;\n\n /**\n * @deprecated Use `callbacks` instead\n */\n callbackManager?: CallbackManager;\n}\n\n/**\n * Base interface that all chains must implement.\n */\nexport abstract class BaseChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n>\n extends BaseLangChain<RunInput, RunOutput>\n implements ChainInputs\n{\n declare memory?: BaseMemory;\n\n get lc_namespace(): string[] {\n return [\"langchain\", \"chains\", this._chainType()];\n }\n\n constructor(\n fields?: BaseMemory | ChainInputs,\n /** @deprecated */\n verbose?: boolean,\n /** @deprecated */\n callbacks?: Callbacks\n ) {\n if (\n arguments.length === 1 &&\n typeof fields === \"object\" &&\n !(\"saveContext\" in fields)\n ) {\n // fields is not a BaseMemory\n const { memory, callbackManager, ...rest } = fields;\n super({ ...rest, callbacks: callbackManager ?? rest.callbacks });\n this.memory = memory;\n } else {\n // fields is a BaseMemory\n super({ verbose, callbacks });\n this.memory = fields as BaseMemory;\n }\n }\n\n /** @ignore */\n _selectMemoryInputs(values: ChainValues): ChainValues {\n const valuesForMemory = { ...values };\n if (\"signal\" in valuesForMemory) {\n delete valuesForMemory.signal;\n }\n if (\"timeout\" in valuesForMemory) {\n delete valuesForMemory.timeout;\n }\n return valuesForMemory;\n }\n\n /**\n * Invoke the chain with the provided input and returns the output.\n * @param input Input values for the chain run.\n * @param config Optional configuration for the Runnable.\n * @returns Promise that resolves with the output of the chain run.\n */\n async invoke(input: RunInput, options?: RunnableConfig): Promise<RunOutput> {\n const config = ensureConfig(options);\n const fullValues = await this._formatValues(input);\n const callbackManager_ = await CallbackManager.configure(\n config?.callbacks,\n this.callbacks,\n config?.tags,\n this.tags,\n config?.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleChainStart(\n this.toJSON(),\n fullValues,\n undefined,\n undefined,\n undefined,\n undefined,\n config?.runName\n );\n let outputValues: RunOutput;\n try {\n if (fullValues.signal) {\n let listener: (() => void) | undefined;\n outputValues = (await Promise.race([\n this._call(fullValues as RunInput, runManager, config),\n new Promise<never>((_, reject) => {\n listener = () => {\n reject(new Error(\"AbortError\"));\n };\n fullValues.signal?.addEventListener(\"abort\", listener, {\n once: true,\n });\n }),\n ]).finally(() => {\n if (fullValues.signal && listener) {\n fullValues.signal.removeEventListener(\"abort\", listener);\n }\n })) as RunOutput;\n } else {\n outputValues = await this._call(\n fullValues as RunInput,\n runManager,\n config\n );\n }\n } catch (e) {\n await runManager?.handleChainError(e);\n throw e;\n }\n if (!(this.memory == null)) {\n await this.memory.saveContext(\n this._selectMemoryInputs(input),\n outputValues\n );\n }\n await runManager?.handleChainEnd(outputValues);\n // add the runManager's currentRunId to the outputValues\n Object.defineProperty(outputValues, RUN_KEY, {\n value: runManager ? { runId: runManager?.runId } : undefined,\n configurable: true,\n });\n return outputValues;\n }\n\n private _validateOutputs(outputs: Record<string, unknown>): void {\n const missingKeys = this.outputKeys.filter((k) => !(k in outputs));\n if (missingKeys.length) {\n throw new Error(\n `Missing output keys: ${missingKeys.join(\n \", \"\n )} from chain ${this._chainType()}`\n );\n }\n }\n\n async prepOutputs(\n inputs: Record<string, unknown>,\n outputs: Record<string, unknown>,\n returnOnlyOutputs = false\n ) {\n this._validateOutputs(outputs);\n if (this.memory) {\n await this.memory.saveContext(inputs, outputs);\n }\n if (returnOnlyOutputs) {\n return outputs;\n }\n return { ...inputs, ...outputs };\n }\n\n /**\n * Run the core logic of this chain and return the output\n */\n abstract _call(\n values: RunInput,\n runManager?: CallbackManagerForChainRun,\n config?: RunnableConfig\n ): Promise<RunOutput>;\n\n /**\n * Return the string type key uniquely identifying this class of chain.\n */\n abstract _chainType(): string;\n\n /**\n * Return a json-like object representing this chain.\n */\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n abstract get inputKeys(): string[];\n\n abstract get outputKeys(): string[];\n\n /** @deprecated Use .invoke() instead. Will be removed in 0.2.0. */\n async run(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n input: any,\n config?: Callbacks | RunnableConfig\n ): Promise<string> {\n const inputKeys = this.inputKeys.filter(\n (k) => !this.memory?.memoryKeys.includes(k)\n );\n const isKeylessInput = inputKeys.length <= 1;\n if (!isKeylessInput) {\n throw new Error(\n `Chain ${this._chainType()} expects multiple inputs, cannot use 'run' `\n );\n }\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const values = inputKeys.length ? { [inputKeys[0]]: input } : ({} as any);\n const returnValues = await this.call(values, config);\n const keys = Object.keys(returnValues);\n\n if (keys.length === 1) {\n return returnValues[keys[0]];\n }\n throw new Error(\n \"return values have multiple keys, `run` only supported when one key currently\"\n );\n }\n\n protected async _formatValues(\n values: ChainValues & { signal?: AbortSignal; timeout?: number }\n ) {\n const fullValues = { ...values } as typeof values;\n if (fullValues.timeout && !fullValues.signal) {\n fullValues.signal = AbortSignal.timeout(fullValues.timeout);\n delete fullValues.timeout;\n }\n if (!(this.memory == null)) {\n const newValues = await this.memory.loadMemoryVariables(\n this._selectMemoryInputs(values)\n );\n for (const [key, value] of Object.entries(newValues)) {\n fullValues[key] = value;\n }\n }\n return fullValues;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.2.0.\n *\n * Run the core logic of this chain and add to output if desired.\n *\n * Wraps _call and handles memory.\n */\n async call(\n values: ChainValues & { signal?: AbortSignal; timeout?: number },\n config?: Callbacks | RunnableConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<RunOutput> {\n const parsedConfig = { tags, ...parseCallbackConfigArg(config) };\n return this.invoke(values as RunInput, parsedConfig);\n }\n\n /**\n * @deprecated Use .batch() instead. Will be removed in 0.2.0.\n *\n * Call the chain on all inputs in the list\n */\n async apply(\n inputs: RunInput[],\n config?: (Callbacks | RunnableConfig)[]\n ): Promise<RunOutput[]> {\n return Promise.all(\n inputs.map(async (i, idx) => this.call(i, config?.[idx]))\n );\n }\n\n /**\n * Load a chain from a json-like object describing it.\n */\n static async deserialize(\n data: SerializedBaseChain,\n values: LoadValues = {}\n ): Promise<BaseChain> {\n switch (data._type) {\n case \"llm_chain\": {\n const { LLMChain } = await import(\"./llm_chain.js\");\n return LLMChain.deserialize(data);\n }\n case \"sequential_chain\": {\n const { SequentialChain } = await import(\"./sequential_chain.js\");\n return SequentialChain.deserialize(data);\n }\n case \"simple_sequential_chain\": {\n const { SimpleSequentialChain } = await import(\"./sequential_chain.js\");\n return SimpleSequentialChain.deserialize(data);\n }\n case \"stuff_documents_chain\": {\n const { StuffDocumentsChain } = await import(\"./combine_docs_chain.js\");\n return StuffDocumentsChain.deserialize(data);\n }\n case \"map_reduce_documents_chain\": {\n const { MapReduceDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return MapReduceDocumentsChain.deserialize(data);\n }\n case \"refine_documents_chain\": {\n const { RefineDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return RefineDocumentsChain.deserialize(data);\n }\n case \"vector_db_qa\": {\n const { VectorDBQAChain } = await import(\"./vector_db_qa.js\");\n return VectorDBQAChain.deserialize(data, values);\n }\n case \"api_chain\": {\n const { APIChain } = await import(\"./api/api_chain.js\");\n return APIChain.deserialize(data);\n }\n default:\n throw new Error(\n `Invalid prompt type in config: ${\n (data as SerializedBaseChain)._type\n }`\n );\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/chains/base.d.cts
CHANGED
|
@@ -56,8 +56,8 @@ declare abstract class BaseChain<RunInput extends ChainValues = ChainValues, Run
|
|
|
56
56
|
signal?: AbortSignal;
|
|
57
57
|
timeout?: number;
|
|
58
58
|
}): Promise<ChainValues & {
|
|
59
|
-
signal?: AbortSignal
|
|
60
|
-
timeout?: number
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
timeout?: number;
|
|
61
61
|
}>;
|
|
62
62
|
/**
|
|
63
63
|
* @deprecated Use .invoke() instead. Will be removed in 0.2.0.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.cts","names":[],"sources":["../../src/chains/base.ts"],"mappings":";;;;;;;;KAiBY,UAAA,GAAa,MAAA;AAAA,UAER,WAAA,SAAoB,mBAAA;EACnC,MAAA,GAAS,UAAA;EAHW;;;EAQpB,eAAA,GAAkB,eAAA;AAAA;;;;uBAME,SAAA,kBACH,WAAA,GAAc,WAAA,oBACb,WAAA,GAAc,WAAA,UAExB,aAAA,CAAc,QAAA,EAAU,SAAA,aACrB,WAAA;EAEH,MAAA,GAAS,UAAA;EAAA,IAEb,YAAA,CAAA;EAIJ,WAAA,CACE,MAAA,GAAS,UAAA,GAAa,WAAA,EA1BW;;EA4BjC,OAAA,YA3BO;;EA6BP,SAAA,GAAY,SAAA;EAxBI;EA2ClB,mBAAA,CAAoB,MAAA,EAAQ,WAAA,GAAc,WAAA;EA3CT;AAMnC;;;;;EAsDQ,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,SAAA;EAAA,QAkEzD,gBAAA;EAWF,WAAA,CACJ,MAAA,EAAQ,MAAA,mBACR,OAAA,EAAS,MAAA,mBACT,iBAAA,aAAyB,OAAA,CAAA,MAAA;EAlIK;;;EAAA,SAiJvB,KAAA,CACP,MAAA,EAAQ,QAAA,EACR,UAAA,GAAa,0BAAA,EACb,MAAA,GAAS,cAAA,GACR,OAAA,CAAQ,SAAA;EAvIG;;;EAAA,SA4IL,UAAA,CAAA;EAxG+B;;;EA6GxC,SAAA,CAAA,GAAa,mBAAA;EAAA,aAIA,SAAA,CAAA;EAAA,aAEA,UAAA,CAAA;EAnCc;EAsCrB,GAAA,CAEJ,KAAA,OACA,MAAA,GAAS,SAAA,GAAY,cAAA,GACpB,OAAA;EAAA,UAuBa,aAAA,CACd,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,IAAkB,OAAA,CAAA,WAAA
|
|
1
|
+
{"version":3,"file":"base.d.cts","names":[],"sources":["../../src/chains/base.ts"],"mappings":";;;;;;;;KAiBY,UAAA,GAAa,MAAA;AAAA,UAER,WAAA,SAAoB,mBAAA;EACnC,MAAA,GAAS,UAAA;EAHW;;;EAQpB,eAAA,GAAkB,eAAA;AAAA;;;;uBAME,SAAA,kBACH,WAAA,GAAc,WAAA,oBACb,WAAA,GAAc,WAAA,UAExB,aAAA,CAAc,QAAA,EAAU,SAAA,aACrB,WAAA;EAEH,MAAA,GAAS,UAAA;EAAA,IAEb,YAAA,CAAA;EAIJ,WAAA,CACE,MAAA,GAAS,UAAA,GAAa,WAAA,EA1BW;;EA4BjC,OAAA,YA3BO;;EA6BP,SAAA,GAAY,SAAA;EAxBI;EA2ClB,mBAAA,CAAoB,MAAA,EAAQ,WAAA,GAAc,WAAA;EA3CT;AAMnC;;;;;EAsDQ,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,SAAA;EAAA,QAkEzD,gBAAA;EAWF,WAAA,CACJ,MAAA,EAAQ,MAAA,mBACR,OAAA,EAAS,MAAA,mBACT,iBAAA,aAAyB,OAAA,CAAA,MAAA;EAlIK;;;EAAA,SAiJvB,KAAA,CACP,MAAA,EAAQ,QAAA,EACR,UAAA,GAAa,0BAAA,EACb,MAAA,GAAS,cAAA,GACR,OAAA,CAAQ,SAAA;EAvIG;;;EAAA,SA4IL,UAAA,CAAA;EAxG+B;;;EA6GxC,SAAA,CAAA,GAAa,mBAAA;EAAA,aAIA,SAAA,CAAA;EAAA,aAEA,UAAA,CAAA;EAnCc;EAsCrB,GAAA,CAEJ,KAAA,OACA,MAAA,GAAS,SAAA,GAAY,cAAA,GACpB,OAAA;EAAA,UAuBa,aAAA,CACd,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,IAAkB,OAAA,CAAA,WAAA;aAA/B,WAAA;;;EAxBhC;;;;;;;EAiDG,IAAA,CACJ,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,GAC9C,MAAA,GAAS,SAAA,GAAY,cAAA,EAGpB;;EADD,IAAA,cACC,OAAA,CAAQ,SAAA;EAYC;;;;;EAFN,KAAA,CACJ,MAAA,EAAQ,QAAA,IACR,MAAA,IAAU,SAAA,GAAY,cAAA,MACrB,OAAA,CAAQ,SAAA;EAYA;;;EAAA,OAHE,WAAA,CACX,IAAA,EAAM,mBAAA,EACN,MAAA,GAAQ,UAAA,GACP,OAAA,CAAQ,SAAA;AAAA"}
|
package/dist/chains/base.d.ts
CHANGED
|
@@ -56,8 +56,8 @@ declare abstract class BaseChain<RunInput extends ChainValues = ChainValues, Run
|
|
|
56
56
|
signal?: AbortSignal;
|
|
57
57
|
timeout?: number;
|
|
58
58
|
}): Promise<ChainValues & {
|
|
59
|
-
signal?: AbortSignal
|
|
60
|
-
timeout?: number
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
timeout?: number;
|
|
61
61
|
}>;
|
|
62
62
|
/**
|
|
63
63
|
* @deprecated Use .invoke() instead. Will be removed in 0.2.0.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","names":[],"sources":["../../src/chains/base.ts"],"mappings":";;;;;;;;KAiBY,UAAA,GAAa,MAAA;AAAA,UAER,WAAA,SAAoB,mBAAA;EACnC,MAAA,GAAS,UAAA;EAHW;;;EAQpB,eAAA,GAAkB,eAAA;AAAA;;;;uBAME,SAAA,kBACH,WAAA,GAAc,WAAA,oBACb,WAAA,GAAc,WAAA,UAExB,aAAA,CAAc,QAAA,EAAU,SAAA,aACrB,WAAA;EAEH,MAAA,GAAS,UAAA;EAAA,IAEb,YAAA,CAAA;EAIJ,WAAA,CACE,MAAA,GAAS,UAAA,GAAa,WAAA,EA1BW;;EA4BjC,OAAA,YA3BO;;EA6BP,SAAA,GAAY,SAAA;EAxBI;EA2ClB,mBAAA,CAAoB,MAAA,EAAQ,WAAA,GAAc,WAAA;EA3CT;AAMnC;;;;;EAsDQ,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,SAAA;EAAA,QAkEzD,gBAAA;EAWF,WAAA,CACJ,MAAA,EAAQ,MAAA,mBACR,OAAA,EAAS,MAAA,mBACT,iBAAA,aAAyB,OAAA,CAAA,MAAA;EAlIK;;;EAAA,SAiJvB,KAAA,CACP,MAAA,EAAQ,QAAA,EACR,UAAA,GAAa,0BAAA,EACb,MAAA,GAAS,cAAA,GACR,OAAA,CAAQ,SAAA;EAvIG;;;EAAA,SA4IL,UAAA,CAAA;EAxG+B;;;EA6GxC,SAAA,CAAA,GAAa,mBAAA;EAAA,aAIA,SAAA,CAAA;EAAA,aAEA,UAAA,CAAA;EAnCc;EAsCrB,GAAA,CAEJ,KAAA,OACA,MAAA,GAAS,SAAA,GAAY,cAAA,GACpB,OAAA;EAAA,UAuBa,aAAA,CACd,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,IAAkB,OAAA,CAAA,WAAA
|
|
1
|
+
{"version":3,"file":"base.d.ts","names":[],"sources":["../../src/chains/base.ts"],"mappings":";;;;;;;;KAiBY,UAAA,GAAa,MAAA;AAAA,UAER,WAAA,SAAoB,mBAAA;EACnC,MAAA,GAAS,UAAA;EAHW;;;EAQpB,eAAA,GAAkB,eAAA;AAAA;;;;uBAME,SAAA,kBACH,WAAA,GAAc,WAAA,oBACb,WAAA,GAAc,WAAA,UAExB,aAAA,CAAc,QAAA,EAAU,SAAA,aACrB,WAAA;EAEH,MAAA,GAAS,UAAA;EAAA,IAEb,YAAA,CAAA;EAIJ,WAAA,CACE,MAAA,GAAS,UAAA,GAAa,WAAA,EA1BW;;EA4BjC,OAAA,YA3BO;;EA6BP,SAAA,GAAY,SAAA;EAxBI;EA2ClB,mBAAA,CAAoB,MAAA,EAAQ,WAAA,GAAc,WAAA;EA3CT;AAMnC;;;;;EAsDQ,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,SAAA;EAAA,QAkEzD,gBAAA;EAWF,WAAA,CACJ,MAAA,EAAQ,MAAA,mBACR,OAAA,EAAS,MAAA,mBACT,iBAAA,aAAyB,OAAA,CAAA,MAAA;EAlIK;;;EAAA,SAiJvB,KAAA,CACP,MAAA,EAAQ,QAAA,EACR,UAAA,GAAa,0BAAA,EACb,MAAA,GAAS,cAAA,GACR,OAAA,CAAQ,SAAA;EAvIG;;;EAAA,SA4IL,UAAA,CAAA;EAxG+B;;;EA6GxC,SAAA,CAAA,GAAa,mBAAA;EAAA,aAIA,SAAA,CAAA;EAAA,aAEA,UAAA,CAAA;EAnCc;EAsCrB,GAAA,CAEJ,KAAA,OACA,MAAA,GAAS,SAAA,GAAY,cAAA,GACpB,OAAA;EAAA,UAuBa,aAAA,CACd,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,IAAkB,OAAA,CAAA,WAAA;aAA/B,WAAA;;;EAxBhC;;;;;;;EAiDG,IAAA,CACJ,MAAA,EAAQ,WAAA;IAAgB,MAAA,GAAS,WAAA;IAAa,OAAA;EAAA,GAC9C,MAAA,GAAS,SAAA,GAAY,cAAA,EAGpB;;EADD,IAAA,cACC,OAAA,CAAQ,SAAA;EAYC;;;;;EAFN,KAAA,CACJ,MAAA,EAAQ,QAAA,IACR,MAAA,IAAU,SAAA,GAAY,cAAA,MACrB,OAAA,CAAQ,SAAA;EAYA;;;EAAA,OAHE,WAAA,CACX,IAAA,EAAM,mBAAA,EACN,MAAA,GAAQ,UAAA,GACP,OAAA,CAAQ,SAAA;AAAA"}
|
package/dist/chains/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","names":[],"sources":["../../src/chains/base.ts"],"sourcesContent":["import { BaseMemory } from \"@langchain/core/memory\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { RUN_KEY } from \"@langchain/core/outputs\";\nimport {\n CallbackManagerForChainRun,\n CallbackManager,\n Callbacks,\n parseCallbackConfigArg,\n} from \"@langchain/core/callbacks/manager\";\nimport { ensureConfig, type RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseLangChain,\n BaseLangChainParams,\n} from \"@langchain/core/language_models/base\";\nimport { SerializedBaseChain } from \"./serde.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nexport interface ChainInputs extends BaseLangChainParams {\n memory?: BaseMemory;\n\n /**\n * @deprecated Use `callbacks` instead\n */\n callbackManager?: CallbackManager;\n}\n\n/**\n * Base interface that all chains must implement.\n */\nexport abstract class BaseChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n>\n extends BaseLangChain<RunInput, RunOutput>\n implements ChainInputs\n{\n declare memory?: BaseMemory;\n\n get lc_namespace(): string[] {\n return [\"langchain\", \"chains\", this._chainType()];\n }\n\n constructor(\n fields?: BaseMemory | ChainInputs,\n /** @deprecated */\n verbose?: boolean,\n /** @deprecated */\n callbacks?: Callbacks\n ) {\n if (\n arguments.length === 1 &&\n typeof fields === \"object\" &&\n !(\"saveContext\" in fields)\n ) {\n // fields is not a BaseMemory\n const { memory, callbackManager, ...rest } = fields;\n super({ ...rest, callbacks: callbackManager ?? rest.callbacks });\n this.memory = memory;\n } else {\n // fields is a BaseMemory\n super({ verbose, callbacks });\n this.memory = fields as BaseMemory;\n }\n }\n\n /** @ignore */\n _selectMemoryInputs(values: ChainValues): ChainValues {\n const valuesForMemory = { ...values };\n if (\"signal\" in valuesForMemory) {\n delete valuesForMemory.signal;\n }\n if (\"timeout\" in valuesForMemory) {\n delete valuesForMemory.timeout;\n }\n return valuesForMemory;\n }\n\n /**\n * Invoke the chain with the provided input and returns the output.\n * @param input Input values for the chain run.\n * @param config Optional configuration for the Runnable.\n * @returns Promise that resolves with the output of the chain run.\n */\n async invoke(input: RunInput, options?: RunnableConfig): Promise<RunOutput> {\n const config = ensureConfig(options);\n const fullValues = await this._formatValues(input);\n const callbackManager_ = await CallbackManager.configure(\n config?.callbacks,\n this.callbacks,\n config?.tags,\n this.tags,\n config?.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleChainStart(\n this.toJSON(),\n fullValues,\n undefined,\n undefined,\n undefined,\n undefined,\n config?.runName\n );\n let outputValues: RunOutput;\n try {\n if (fullValues.signal) {\n let listener: (() => void) | undefined;\n outputValues = (await Promise.race([\n this._call(fullValues as RunInput, runManager, config),\n new Promise<never>((_, reject) => {\n listener = () => {\n reject(new Error(\"AbortError\"));\n };\n fullValues.signal?.addEventListener(\"abort\", listener, {\n once: true,\n });\n }),\n ]).finally(() => {\n if (fullValues.signal && listener) {\n fullValues.signal.removeEventListener(\"abort\", listener);\n }\n })) as RunOutput;\n } else {\n outputValues = await this._call(\n fullValues as RunInput,\n runManager,\n config\n );\n }\n } catch (e) {\n await runManager?.handleChainError(e);\n throw e;\n }\n if (!(this.memory == null)) {\n await this.memory.saveContext(\n this._selectMemoryInputs(input),\n outputValues\n );\n }\n await runManager?.handleChainEnd(outputValues);\n // add the runManager's currentRunId to the outputValues\n Object.defineProperty(outputValues, RUN_KEY, {\n value: runManager ? { runId: runManager?.runId } : undefined,\n configurable: true,\n });\n return outputValues;\n }\n\n private _validateOutputs(outputs: Record<string, unknown>): void {\n const missingKeys = this.outputKeys.filter((k) => !(k in outputs));\n if (missingKeys.length) {\n throw new Error(\n `Missing output keys: ${missingKeys.join(\n \", \"\n )} from chain ${this._chainType()}`\n );\n }\n }\n\n async prepOutputs(\n inputs: Record<string, unknown>,\n outputs: Record<string, unknown>,\n returnOnlyOutputs = false\n ) {\n this._validateOutputs(outputs);\n if (this.memory) {\n await this.memory.saveContext(inputs, outputs);\n }\n if (returnOnlyOutputs) {\n return outputs;\n }\n return { ...inputs, ...outputs };\n }\n\n /**\n * Run the core logic of this chain and return the output\n */\n abstract _call(\n values: RunInput,\n runManager?: CallbackManagerForChainRun,\n config?: RunnableConfig\n ): Promise<RunOutput>;\n\n /**\n * Return the string type key uniquely identifying this class of chain.\n */\n abstract _chainType(): string;\n\n /**\n * Return a json-like object representing this chain.\n */\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n abstract get inputKeys(): string[];\n\n abstract get outputKeys(): string[];\n\n /** @deprecated Use .invoke() instead. Will be removed in 0.2.0. */\n async run(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: any,\n config?: Callbacks | RunnableConfig\n ): Promise<string> {\n const inputKeys = this.inputKeys.filter(\n (k) => !this.memory?.memoryKeys.includes(k)\n );\n const isKeylessInput = inputKeys.length <= 1;\n if (!isKeylessInput) {\n throw new Error(\n `Chain ${this._chainType()} expects multiple inputs, cannot use 'run' `\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const values = inputKeys.length ? { [inputKeys[0]]: input } : ({} as any);\n const returnValues = await this.call(values, config);\n const keys = Object.keys(returnValues);\n\n if (keys.length === 1) {\n return returnValues[keys[0]];\n }\n throw new Error(\n \"return values have multiple keys, `run` only supported when one key currently\"\n );\n }\n\n protected async _formatValues(\n values: ChainValues & { signal?: AbortSignal; timeout?: number }\n ) {\n const fullValues = { ...values } as typeof values;\n if (fullValues.timeout && !fullValues.signal) {\n fullValues.signal = AbortSignal.timeout(fullValues.timeout);\n delete fullValues.timeout;\n }\n if (!(this.memory == null)) {\n const newValues = await this.memory.loadMemoryVariables(\n this._selectMemoryInputs(values)\n );\n for (const [key, value] of Object.entries(newValues)) {\n fullValues[key] = value;\n }\n }\n return fullValues;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.2.0.\n *\n * Run the core logic of this chain and add to output if desired.\n *\n * Wraps _call and handles memory.\n */\n async call(\n values: ChainValues & { signal?: AbortSignal; timeout?: number },\n config?: Callbacks | RunnableConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<RunOutput> {\n const parsedConfig = { tags, ...parseCallbackConfigArg(config) };\n return this.invoke(values as RunInput, parsedConfig);\n }\n\n /**\n * @deprecated Use .batch() instead. Will be removed in 0.2.0.\n *\n * Call the chain on all inputs in the list\n */\n async apply(\n inputs: RunInput[],\n config?: (Callbacks | RunnableConfig)[]\n ): Promise<RunOutput[]> {\n return Promise.all(\n inputs.map(async (i, idx) => this.call(i, config?.[idx]))\n );\n }\n\n /**\n * Load a chain from a json-like object describing it.\n */\n static async deserialize(\n data: SerializedBaseChain,\n values: LoadValues = {}\n ): Promise<BaseChain> {\n switch (data._type) {\n case \"llm_chain\": {\n const { LLMChain } = await import(\"./llm_chain.js\");\n return LLMChain.deserialize(data);\n }\n case \"sequential_chain\": {\n const { SequentialChain } = await import(\"./sequential_chain.js\");\n return SequentialChain.deserialize(data);\n }\n case \"simple_sequential_chain\": {\n const { SimpleSequentialChain } = await import(\"./sequential_chain.js\");\n return SimpleSequentialChain.deserialize(data);\n }\n case \"stuff_documents_chain\": {\n const { StuffDocumentsChain } = await import(\"./combine_docs_chain.js\");\n return StuffDocumentsChain.deserialize(data);\n }\n case \"map_reduce_documents_chain\": {\n const { MapReduceDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return MapReduceDocumentsChain.deserialize(data);\n }\n case \"refine_documents_chain\": {\n const { RefineDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return RefineDocumentsChain.deserialize(data);\n }\n case \"vector_db_qa\": {\n const { VectorDBQAChain } = await import(\"./vector_db_qa.js\");\n return VectorDBQAChain.deserialize(data, values);\n }\n case \"api_chain\": {\n const { APIChain } = await import(\"./api/api_chain.js\");\n return APIChain.deserialize(data);\n }\n default:\n throw new Error(\n `Invalid prompt type in config: ${\n (data as SerializedBaseChain)._type\n }`\n );\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","names":[],"sources":["../../src/chains/base.ts"],"sourcesContent":["import { BaseMemory } from \"@langchain/core/memory\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { RUN_KEY } from \"@langchain/core/outputs\";\nimport {\n CallbackManagerForChainRun,\n CallbackManager,\n Callbacks,\n parseCallbackConfigArg,\n} from \"@langchain/core/callbacks/manager\";\nimport { ensureConfig, type RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseLangChain,\n BaseLangChainParams,\n} from \"@langchain/core/language_models/base\";\nimport { SerializedBaseChain } from \"./serde.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nexport interface ChainInputs extends BaseLangChainParams {\n memory?: BaseMemory;\n\n /**\n * @deprecated Use `callbacks` instead\n */\n callbackManager?: CallbackManager;\n}\n\n/**\n * Base interface that all chains must implement.\n */\nexport abstract class BaseChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n>\n extends BaseLangChain<RunInput, RunOutput>\n implements ChainInputs\n{\n declare memory?: BaseMemory;\n\n get lc_namespace(): string[] {\n return [\"langchain\", \"chains\", this._chainType()];\n }\n\n constructor(\n fields?: BaseMemory | ChainInputs,\n /** @deprecated */\n verbose?: boolean,\n /** @deprecated */\n callbacks?: Callbacks\n ) {\n if (\n arguments.length === 1 &&\n typeof fields === \"object\" &&\n !(\"saveContext\" in fields)\n ) {\n // fields is not a BaseMemory\n const { memory, callbackManager, ...rest } = fields;\n super({ ...rest, callbacks: callbackManager ?? rest.callbacks });\n this.memory = memory;\n } else {\n // fields is a BaseMemory\n super({ verbose, callbacks });\n this.memory = fields as BaseMemory;\n }\n }\n\n /** @ignore */\n _selectMemoryInputs(values: ChainValues): ChainValues {\n const valuesForMemory = { ...values };\n if (\"signal\" in valuesForMemory) {\n delete valuesForMemory.signal;\n }\n if (\"timeout\" in valuesForMemory) {\n delete valuesForMemory.timeout;\n }\n return valuesForMemory;\n }\n\n /**\n * Invoke the chain with the provided input and returns the output.\n * @param input Input values for the chain run.\n * @param config Optional configuration for the Runnable.\n * @returns Promise that resolves with the output of the chain run.\n */\n async invoke(input: RunInput, options?: RunnableConfig): Promise<RunOutput> {\n const config = ensureConfig(options);\n const fullValues = await this._formatValues(input);\n const callbackManager_ = await CallbackManager.configure(\n config?.callbacks,\n this.callbacks,\n config?.tags,\n this.tags,\n config?.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleChainStart(\n this.toJSON(),\n fullValues,\n undefined,\n undefined,\n undefined,\n undefined,\n config?.runName\n );\n let outputValues: RunOutput;\n try {\n if (fullValues.signal) {\n let listener: (() => void) | undefined;\n outputValues = (await Promise.race([\n this._call(fullValues as RunInput, runManager, config),\n new Promise<never>((_, reject) => {\n listener = () => {\n reject(new Error(\"AbortError\"));\n };\n fullValues.signal?.addEventListener(\"abort\", listener, {\n once: true,\n });\n }),\n ]).finally(() => {\n if (fullValues.signal && listener) {\n fullValues.signal.removeEventListener(\"abort\", listener);\n }\n })) as RunOutput;\n } else {\n outputValues = await this._call(\n fullValues as RunInput,\n runManager,\n config\n );\n }\n } catch (e) {\n await runManager?.handleChainError(e);\n throw e;\n }\n if (!(this.memory == null)) {\n await this.memory.saveContext(\n this._selectMemoryInputs(input),\n outputValues\n );\n }\n await runManager?.handleChainEnd(outputValues);\n // add the runManager's currentRunId to the outputValues\n Object.defineProperty(outputValues, RUN_KEY, {\n value: runManager ? { runId: runManager?.runId } : undefined,\n configurable: true,\n });\n return outputValues;\n }\n\n private _validateOutputs(outputs: Record<string, unknown>): void {\n const missingKeys = this.outputKeys.filter((k) => !(k in outputs));\n if (missingKeys.length) {\n throw new Error(\n `Missing output keys: ${missingKeys.join(\n \", \"\n )} from chain ${this._chainType()}`\n );\n }\n }\n\n async prepOutputs(\n inputs: Record<string, unknown>,\n outputs: Record<string, unknown>,\n returnOnlyOutputs = false\n ) {\n this._validateOutputs(outputs);\n if (this.memory) {\n await this.memory.saveContext(inputs, outputs);\n }\n if (returnOnlyOutputs) {\n return outputs;\n }\n return { ...inputs, ...outputs };\n }\n\n /**\n * Run the core logic of this chain and return the output\n */\n abstract _call(\n values: RunInput,\n runManager?: CallbackManagerForChainRun,\n config?: RunnableConfig\n ): Promise<RunOutput>;\n\n /**\n * Return the string type key uniquely identifying this class of chain.\n */\n abstract _chainType(): string;\n\n /**\n * Return a json-like object representing this chain.\n */\n serialize(): SerializedBaseChain {\n throw new Error(\"Method not implemented.\");\n }\n\n abstract get inputKeys(): string[];\n\n abstract get outputKeys(): string[];\n\n /** @deprecated Use .invoke() instead. Will be removed in 0.2.0. */\n async run(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n input: any,\n config?: Callbacks | RunnableConfig\n ): Promise<string> {\n const inputKeys = this.inputKeys.filter(\n (k) => !this.memory?.memoryKeys.includes(k)\n );\n const isKeylessInput = inputKeys.length <= 1;\n if (!isKeylessInput) {\n throw new Error(\n `Chain ${this._chainType()} expects multiple inputs, cannot use 'run' `\n );\n }\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const values = inputKeys.length ? { [inputKeys[0]]: input } : ({} as any);\n const returnValues = await this.call(values, config);\n const keys = Object.keys(returnValues);\n\n if (keys.length === 1) {\n return returnValues[keys[0]];\n }\n throw new Error(\n \"return values have multiple keys, `run` only supported when one key currently\"\n );\n }\n\n protected async _formatValues(\n values: ChainValues & { signal?: AbortSignal; timeout?: number }\n ) {\n const fullValues = { ...values } as typeof values;\n if (fullValues.timeout && !fullValues.signal) {\n fullValues.signal = AbortSignal.timeout(fullValues.timeout);\n delete fullValues.timeout;\n }\n if (!(this.memory == null)) {\n const newValues = await this.memory.loadMemoryVariables(\n this._selectMemoryInputs(values)\n );\n for (const [key, value] of Object.entries(newValues)) {\n fullValues[key] = value;\n }\n }\n return fullValues;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.2.0.\n *\n * Run the core logic of this chain and add to output if desired.\n *\n * Wraps _call and handles memory.\n */\n async call(\n values: ChainValues & { signal?: AbortSignal; timeout?: number },\n config?: Callbacks | RunnableConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<RunOutput> {\n const parsedConfig = { tags, ...parseCallbackConfigArg(config) };\n return this.invoke(values as RunInput, parsedConfig);\n }\n\n /**\n * @deprecated Use .batch() instead. Will be removed in 0.2.0.\n *\n * Call the chain on all inputs in the list\n */\n async apply(\n inputs: RunInput[],\n config?: (Callbacks | RunnableConfig)[]\n ): Promise<RunOutput[]> {\n return Promise.all(\n inputs.map(async (i, idx) => this.call(i, config?.[idx]))\n );\n }\n\n /**\n * Load a chain from a json-like object describing it.\n */\n static async deserialize(\n data: SerializedBaseChain,\n values: LoadValues = {}\n ): Promise<BaseChain> {\n switch (data._type) {\n case \"llm_chain\": {\n const { LLMChain } = await import(\"./llm_chain.js\");\n return LLMChain.deserialize(data);\n }\n case \"sequential_chain\": {\n const { SequentialChain } = await import(\"./sequential_chain.js\");\n return SequentialChain.deserialize(data);\n }\n case \"simple_sequential_chain\": {\n const { SimpleSequentialChain } = await import(\"./sequential_chain.js\");\n return SimpleSequentialChain.deserialize(data);\n }\n case \"stuff_documents_chain\": {\n const { StuffDocumentsChain } = await import(\"./combine_docs_chain.js\");\n return StuffDocumentsChain.deserialize(data);\n }\n case \"map_reduce_documents_chain\": {\n const { MapReduceDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return MapReduceDocumentsChain.deserialize(data);\n }\n case \"refine_documents_chain\": {\n const { RefineDocumentsChain } =\n await import(\"./combine_docs_chain.js\");\n return RefineDocumentsChain.deserialize(data);\n }\n case \"vector_db_qa\": {\n const { VectorDBQAChain } = await import(\"./vector_db_qa.js\");\n return VectorDBQAChain.deserialize(data, values);\n }\n case \"api_chain\": {\n const { APIChain } = await import(\"./api/api_chain.js\");\n return APIChain.deserialize(data);\n }\n default:\n throw new Error(\n `Invalid prompt type in config: ${\n (data as SerializedBaseChain)._type\n }`\n );\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat_vector_db_chain.cjs","names":["BaseChain","LLMChain","PromptTemplate","loadQAStuffChain"],"sources":["../../src/chains/chat_vector_db_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { loadQAStuffChain } from \"./question_answering/load.js\";\n\n//
|
|
1
|
+
{"version":3,"file":"chat_vector_db_chain.cjs","names":["BaseChain","LLMChain","PromptTemplate","loadQAStuffChain"],"sources":["../../src/chains/chat_vector_db_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { loadQAStuffChain } from \"./question_answering/load.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nconst question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone question:`;\n\nconst qa_template = `Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n{context}\n\nQuestion: {question}\nHelpful Answer:`;\n\n/**\n * Interface for the input parameters of the ChatVectorDBQAChain class.\n */\nexport interface ChatVectorDBQAChainInput extends ChainInputs {\n vectorstore: VectorStoreInterface;\n combineDocumentsChain: BaseChain;\n questionGeneratorChain: LLMChain;\n returnSourceDocuments?: boolean;\n outputKey?: string;\n inputKey?: string;\n k?: number;\n}\n\n/** @deprecated use `ConversationalRetrievalQAChain` instead. */\nexport class ChatVectorDBQAChain\n extends BaseChain\n implements ChatVectorDBQAChainInput\n{\n k = 4;\n\n inputKey = \"question\";\n\n chatHistoryKey = \"chat_history\";\n\n get inputKeys() {\n return [this.inputKey, this.chatHistoryKey];\n }\n\n outputKey = \"result\";\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n vectorstore: VectorStoreInterface;\n\n combineDocumentsChain: BaseChain;\n\n questionGeneratorChain: LLMChain;\n\n returnSourceDocuments = false;\n\n constructor(fields: ChatVectorDBQAChainInput) {\n super(fields);\n this.vectorstore = fields.vectorstore;\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.questionGeneratorChain = fields.questionGeneratorChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.k = fields.k ?? this.k;\n this.returnSourceDocuments =\n fields.returnSourceDocuments ?? this.returnSourceDocuments;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Question key ${this.inputKey} not found.`);\n }\n if (!(this.chatHistoryKey in values)) {\n throw new Error(`chat history key ${this.inputKey} not found.`);\n }\n const question: string = values[this.inputKey];\n const chatHistory: string = values[this.chatHistoryKey];\n let newQuestion = question;\n if (chatHistory.length > 0) {\n const result = await this.questionGeneratorChain.call(\n {\n question,\n chat_history: chatHistory,\n },\n runManager?.getChild(\"question_generator\")\n );\n const keys = Object.keys(result);\n console.log(\"_call\", values, keys);\n if (keys.length === 1) {\n newQuestion = result[keys[0]];\n } else {\n throw new Error(\n \"Return from llm chain has multiple values, only single values supported.\"\n );\n }\n }\n const docs = await this.vectorstore.similaritySearch(\n newQuestion,\n this.k,\n undefined,\n runManager?.getChild(\"vectorstore\")\n );\n const inputs = {\n question: newQuestion,\n input_documents: docs,\n chat_history: chatHistory,\n };\n const result = await this.combineDocumentsChain.call(\n inputs,\n runManager?.getChild(\"combine_documents\")\n );\n if (this.returnSourceDocuments) {\n return {\n ...result,\n sourceDocuments: docs,\n };\n }\n return result;\n }\n\n _chainType() {\n return \"chat-vector-db\" as const;\n }\n\n static async deserialize(\n data: SerializedChatVectorDBQAChain,\n values: LoadValues\n ) {\n if (!(\"vectorstore\" in values)) {\n throw new Error(\n `Need to pass in a vectorstore to deserialize VectorDBQAChain`\n );\n }\n const { vectorstore } = values;\n\n return new ChatVectorDBQAChain({\n combineDocumentsChain: await BaseChain.deserialize(\n data.combine_documents_chain\n ),\n questionGeneratorChain: await LLMChain.deserialize(\n data.question_generator\n ),\n k: data.k,\n vectorstore,\n });\n }\n\n serialize(): SerializedChatVectorDBQAChain {\n return {\n _type: this._chainType(),\n combine_documents_chain: this.combineDocumentsChain.serialize(),\n question_generator: this.questionGeneratorChain.serialize(),\n k: this.k,\n };\n }\n\n /**\n * Creates an instance of ChatVectorDBQAChain using a BaseLanguageModel\n * and other options.\n * @param llm Instance of BaseLanguageModel used to generate a new question.\n * @param vectorstore Instance of VectorStore used for vector operations.\n * @param options (Optional) Additional options for creating the ChatVectorDBQAChain instance.\n * @returns New instance of ChatVectorDBQAChain.\n */\n static fromLLM(\n llm: BaseLanguageModelInterface,\n vectorstore: VectorStoreInterface,\n options: {\n inputKey?: string;\n outputKey?: string;\n k?: number;\n returnSourceDocuments?: boolean;\n questionGeneratorTemplate?: string;\n qaTemplate?: string;\n verbose?: boolean;\n } = {}\n ): ChatVectorDBQAChain {\n const { questionGeneratorTemplate, qaTemplate, verbose, ...rest } = options;\n const question_generator_prompt = PromptTemplate.fromTemplate(\n questionGeneratorTemplate || question_generator_template\n );\n const qa_prompt = PromptTemplate.fromTemplate(qaTemplate || qa_template);\n\n const qaChain = loadQAStuffChain(llm, { prompt: qa_prompt, verbose });\n const questionGeneratorChain = new LLMChain({\n prompt: question_generator_prompt,\n llm,\n verbose,\n });\n const instance = new this({\n vectorstore,\n combineDocumentsChain: qaChain,\n questionGeneratorChain,\n ...rest,\n });\n return instance;\n }\n}\n"],"mappings":";;;;;;AAaA,MAAM,8BAA8B;;;;;;AAOpC,MAAM,cAAc;;;;;;;AAqBpB,IAAa,sBAAb,MAAa,4BACHA,aAAAA,UAEV;CACE,IAAI;CAEJ,WAAW;CAEX,iBAAiB;CAEjB,IAAI,YAAY;AACd,SAAO,CAAC,KAAK,UAAU,KAAK,eAAe;;CAG7C,YAAY;CAEZ,IAAI,aAAa;AACf,SAAO,CAAC,KAAK,UAAU;;CAGzB;CAEA;CAEA;CAEA,wBAAwB;CAExB,YAAY,QAAkC;AAC5C,QAAM,OAAO;AACb,OAAK,cAAc,OAAO;AAC1B,OAAK,wBAAwB,OAAO;AACpC,OAAK,yBAAyB,OAAO;AACrC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,YAAY,OAAO,aAAa,KAAK;AAC1C,OAAK,IAAI,OAAO,KAAK,KAAK;AAC1B,OAAK,wBACH,OAAO,yBAAyB,KAAK;;;CAIzC,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;AAE7D,MAAI,EAAE,KAAK,kBAAkB,QAC3B,OAAM,IAAI,MAAM,oBAAoB,KAAK,SAAS,aAAa;EAEjE,MAAM,WAAmB,OAAO,KAAK;EACrC,MAAM,cAAsB,OAAO,KAAK;EACxC,IAAI,cAAc;AAClB,MAAI,YAAY,SAAS,GAAG;GAC1B,MAAM,SAAS,MAAM,KAAK,uBAAuB,KAC/C;IACE;IACA,cAAc;IACf,EACD,YAAY,SAAS,qBAAqB,CAC3C;GACD,MAAM,OAAO,OAAO,KAAK,OAAO;AAChC,WAAQ,IAAI,SAAS,QAAQ,KAAK;AAClC,OAAI,KAAK,WAAW,EAClB,eAAc,OAAO,KAAK;OAE1B,OAAM,IAAI,MACR,2EACD;;EAGL,MAAM,OAAO,MAAM,KAAK,YAAY,iBAClC,aACA,KAAK,GACL,KAAA,GACA,YAAY,SAAS,cAAc,CACpC;EACD,MAAM,SAAS;GACb,UAAU;GACV,iBAAiB;GACjB,cAAc;GACf;EACD,MAAM,SAAS,MAAM,KAAK,sBAAsB,KAC9C,QACA,YAAY,SAAS,oBAAoB,CAC1C;AACD,MAAI,KAAK,sBACP,QAAO;GACL,GAAG;GACH,iBAAiB;GAClB;AAEH,SAAO;;CAGT,aAAa;AACX,SAAO;;CAGT,aAAa,YACX,MACA,QACA;AACA,MAAI,EAAE,iBAAiB,QACrB,OAAM,IAAI,MACR,+DACD;EAEH,MAAM,EAAE,gBAAgB;AAExB,SAAO,IAAI,oBAAoB;GAC7B,uBAAuB,MAAMA,aAAAA,UAAU,YACrC,KAAK,wBACN;GACD,wBAAwB,MAAMC,kBAAAA,SAAS,YACrC,KAAK,mBACN;GACD,GAAG,KAAK;GACR;GACD,CAAC;;CAGJ,YAA2C;AACzC,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,yBAAyB,KAAK,sBAAsB,WAAW;GAC/D,oBAAoB,KAAK,uBAAuB,WAAW;GAC3D,GAAG,KAAK;GACT;;;;;;;;;;CAWH,OAAO,QACL,KACA,aACA,UAQI,EAAE,EACe;EACrB,MAAM,EAAE,2BAA2B,YAAY,SAAS,GAAG,SAAS;EACpE,MAAM,4BAA4BC,wBAAAA,eAAe,aAC/C,6BAA6B,4BAC9B;EAGD,MAAM,UAAUC,aAAAA,iBAAiB,KAAK;GAAE,QAFtBD,wBAAAA,eAAe,aAAa,cAAc,YAAY;GAEb;GAAS,CAAC;EACrE,MAAM,yBAAyB,IAAID,kBAAAA,SAAS;GAC1C,QAAQ;GACR;GACA;GACD,CAAC;AAOF,SANiB,IAAI,KAAK;GACxB;GACA,uBAAuB;GACvB;GACA,GAAG;GACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat_vector_db_chain.js","names":[],"sources":["../../src/chains/chat_vector_db_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { loadQAStuffChain } from \"./question_answering/load.js\";\n\n//
|
|
1
|
+
{"version":3,"file":"chat_vector_db_chain.js","names":[],"sources":["../../src/chains/chat_vector_db_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { loadQAStuffChain } from \"./question_answering/load.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nconst question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone question:`;\n\nconst qa_template = `Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n{context}\n\nQuestion: {question}\nHelpful Answer:`;\n\n/**\n * Interface for the input parameters of the ChatVectorDBQAChain class.\n */\nexport interface ChatVectorDBQAChainInput extends ChainInputs {\n vectorstore: VectorStoreInterface;\n combineDocumentsChain: BaseChain;\n questionGeneratorChain: LLMChain;\n returnSourceDocuments?: boolean;\n outputKey?: string;\n inputKey?: string;\n k?: number;\n}\n\n/** @deprecated use `ConversationalRetrievalQAChain` instead. */\nexport class ChatVectorDBQAChain\n extends BaseChain\n implements ChatVectorDBQAChainInput\n{\n k = 4;\n\n inputKey = \"question\";\n\n chatHistoryKey = \"chat_history\";\n\n get inputKeys() {\n return [this.inputKey, this.chatHistoryKey];\n }\n\n outputKey = \"result\";\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n vectorstore: VectorStoreInterface;\n\n combineDocumentsChain: BaseChain;\n\n questionGeneratorChain: LLMChain;\n\n returnSourceDocuments = false;\n\n constructor(fields: ChatVectorDBQAChainInput) {\n super(fields);\n this.vectorstore = fields.vectorstore;\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.questionGeneratorChain = fields.questionGeneratorChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.k = fields.k ?? this.k;\n this.returnSourceDocuments =\n fields.returnSourceDocuments ?? this.returnSourceDocuments;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Question key ${this.inputKey} not found.`);\n }\n if (!(this.chatHistoryKey in values)) {\n throw new Error(`chat history key ${this.inputKey} not found.`);\n }\n const question: string = values[this.inputKey];\n const chatHistory: string = values[this.chatHistoryKey];\n let newQuestion = question;\n if (chatHistory.length > 0) {\n const result = await this.questionGeneratorChain.call(\n {\n question,\n chat_history: chatHistory,\n },\n runManager?.getChild(\"question_generator\")\n );\n const keys = Object.keys(result);\n console.log(\"_call\", values, keys);\n if (keys.length === 1) {\n newQuestion = result[keys[0]];\n } else {\n throw new Error(\n \"Return from llm chain has multiple values, only single values supported.\"\n );\n }\n }\n const docs = await this.vectorstore.similaritySearch(\n newQuestion,\n this.k,\n undefined,\n runManager?.getChild(\"vectorstore\")\n );\n const inputs = {\n question: newQuestion,\n input_documents: docs,\n chat_history: chatHistory,\n };\n const result = await this.combineDocumentsChain.call(\n inputs,\n runManager?.getChild(\"combine_documents\")\n );\n if (this.returnSourceDocuments) {\n return {\n ...result,\n sourceDocuments: docs,\n };\n }\n return result;\n }\n\n _chainType() {\n return \"chat-vector-db\" as const;\n }\n\n static async deserialize(\n data: SerializedChatVectorDBQAChain,\n values: LoadValues\n ) {\n if (!(\"vectorstore\" in values)) {\n throw new Error(\n `Need to pass in a vectorstore to deserialize VectorDBQAChain`\n );\n }\n const { vectorstore } = values;\n\n return new ChatVectorDBQAChain({\n combineDocumentsChain: await BaseChain.deserialize(\n data.combine_documents_chain\n ),\n questionGeneratorChain: await LLMChain.deserialize(\n data.question_generator\n ),\n k: data.k,\n vectorstore,\n });\n }\n\n serialize(): SerializedChatVectorDBQAChain {\n return {\n _type: this._chainType(),\n combine_documents_chain: this.combineDocumentsChain.serialize(),\n question_generator: this.questionGeneratorChain.serialize(),\n k: this.k,\n };\n }\n\n /**\n * Creates an instance of ChatVectorDBQAChain using a BaseLanguageModel\n * and other options.\n * @param llm Instance of BaseLanguageModel used to generate a new question.\n * @param vectorstore Instance of VectorStore used for vector operations.\n * @param options (Optional) Additional options for creating the ChatVectorDBQAChain instance.\n * @returns New instance of ChatVectorDBQAChain.\n */\n static fromLLM(\n llm: BaseLanguageModelInterface,\n vectorstore: VectorStoreInterface,\n options: {\n inputKey?: string;\n outputKey?: string;\n k?: number;\n returnSourceDocuments?: boolean;\n questionGeneratorTemplate?: string;\n qaTemplate?: string;\n verbose?: boolean;\n } = {}\n ): ChatVectorDBQAChain {\n const { questionGeneratorTemplate, qaTemplate, verbose, ...rest } = options;\n const question_generator_prompt = PromptTemplate.fromTemplate(\n questionGeneratorTemplate || question_generator_template\n );\n const qa_prompt = PromptTemplate.fromTemplate(qaTemplate || qa_template);\n\n const qaChain = loadQAStuffChain(llm, { prompt: qa_prompt, verbose });\n const questionGeneratorChain = new LLMChain({\n prompt: question_generator_prompt,\n llm,\n verbose,\n });\n const instance = new this({\n vectorstore,\n combineDocumentsChain: qaChain,\n questionGeneratorChain,\n ...rest,\n });\n return instance;\n }\n}\n"],"mappings":";;;;;AAaA,MAAM,8BAA8B;;;;;;AAOpC,MAAM,cAAc;;;;;;;AAqBpB,IAAa,sBAAb,MAAa,4BACH,UAEV;CACE,IAAI;CAEJ,WAAW;CAEX,iBAAiB;CAEjB,IAAI,YAAY;AACd,SAAO,CAAC,KAAK,UAAU,KAAK,eAAe;;CAG7C,YAAY;CAEZ,IAAI,aAAa;AACf,SAAO,CAAC,KAAK,UAAU;;CAGzB;CAEA;CAEA;CAEA,wBAAwB;CAExB,YAAY,QAAkC;AAC5C,QAAM,OAAO;AACb,OAAK,cAAc,OAAO;AAC1B,OAAK,wBAAwB,OAAO;AACpC,OAAK,yBAAyB,OAAO;AACrC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,YAAY,OAAO,aAAa,KAAK;AAC1C,OAAK,IAAI,OAAO,KAAK,KAAK;AAC1B,OAAK,wBACH,OAAO,yBAAyB,KAAK;;;CAIzC,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;AAE7D,MAAI,EAAE,KAAK,kBAAkB,QAC3B,OAAM,IAAI,MAAM,oBAAoB,KAAK,SAAS,aAAa;EAEjE,MAAM,WAAmB,OAAO,KAAK;EACrC,MAAM,cAAsB,OAAO,KAAK;EACxC,IAAI,cAAc;AAClB,MAAI,YAAY,SAAS,GAAG;GAC1B,MAAM,SAAS,MAAM,KAAK,uBAAuB,KAC/C;IACE;IACA,cAAc;IACf,EACD,YAAY,SAAS,qBAAqB,CAC3C;GACD,MAAM,OAAO,OAAO,KAAK,OAAO;AAChC,WAAQ,IAAI,SAAS,QAAQ,KAAK;AAClC,OAAI,KAAK,WAAW,EAClB,eAAc,OAAO,KAAK;OAE1B,OAAM,IAAI,MACR,2EACD;;EAGL,MAAM,OAAO,MAAM,KAAK,YAAY,iBAClC,aACA,KAAK,GACL,KAAA,GACA,YAAY,SAAS,cAAc,CACpC;EACD,MAAM,SAAS;GACb,UAAU;GACV,iBAAiB;GACjB,cAAc;GACf;EACD,MAAM,SAAS,MAAM,KAAK,sBAAsB,KAC9C,QACA,YAAY,SAAS,oBAAoB,CAC1C;AACD,MAAI,KAAK,sBACP,QAAO;GACL,GAAG;GACH,iBAAiB;GAClB;AAEH,SAAO;;CAGT,aAAa;AACX,SAAO;;CAGT,aAAa,YACX,MACA,QACA;AACA,MAAI,EAAE,iBAAiB,QACrB,OAAM,IAAI,MACR,+DACD;EAEH,MAAM,EAAE,gBAAgB;AAExB,SAAO,IAAI,oBAAoB;GAC7B,uBAAuB,MAAM,UAAU,YACrC,KAAK,wBACN;GACD,wBAAwB,MAAM,SAAS,YACrC,KAAK,mBACN;GACD,GAAG,KAAK;GACR;GACD,CAAC;;CAGJ,YAA2C;AACzC,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,yBAAyB,KAAK,sBAAsB,WAAW;GAC/D,oBAAoB,KAAK,uBAAuB,WAAW;GAC3D,GAAG,KAAK;GACT;;;;;;;;;;CAWH,OAAO,QACL,KACA,aACA,UAQI,EAAE,EACe;EACrB,MAAM,EAAE,2BAA2B,YAAY,SAAS,GAAG,SAAS;EACpE,MAAM,4BAA4B,eAAe,aAC/C,6BAA6B,4BAC9B;EAGD,MAAM,UAAU,iBAAiB,KAAK;GAAE,QAFtB,eAAe,aAAa,cAAc,YAAY;GAEb;GAAS,CAAC;EACrE,MAAM,yBAAyB,IAAI,SAAS;GAC1C,QAAQ;GACR;GACA;GACD,CAAC;AAOF,SANiB,IAAI,KAAK;GACxB;GACA,uBAAuB;GACvB;GACA,GAAG;GACJ,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { BaseChain, ChainInputs } from "./base.cjs";
|
|
|
3
3
|
import { LLMChain } from "./llm_chain.cjs";
|
|
4
4
|
import { ChainValues } from "@langchain/core/utils/types";
|
|
5
5
|
import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
6
|
-
import * as _langchain_core_prompt_values0 from "@langchain/core/prompt_values";
|
|
6
|
+
import * as _$_langchain_core_prompt_values0 from "@langchain/core/prompt_values";
|
|
7
7
|
import { CallbackManagerForChainRun } from "@langchain/core/callbacks/manager";
|
|
8
8
|
import { Document } from "@langchain/core/documents";
|
|
9
9
|
|
|
@@ -103,7 +103,7 @@ declare class RefineDocumentsChain extends BaseChain implements RefineDocumentsC
|
|
|
103
103
|
initialResponseName: string;
|
|
104
104
|
refineLLMChain: LLMChain;
|
|
105
105
|
get defaultDocumentPrompt(): BasePromptTemplate;
|
|
106
|
-
documentPrompt: BasePromptTemplate<any, _langchain_core_prompt_values0.BasePromptValueInterface, any>;
|
|
106
|
+
documentPrompt: BasePromptTemplate<any, _$_langchain_core_prompt_values0.BasePromptValueInterface, any>;
|
|
107
107
|
get inputKeys(): string[];
|
|
108
108
|
get outputKeys(): string[];
|
|
109
109
|
constructor(fields: RefineDocumentsChainInput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine_docs_chain.d.cts","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"mappings":";;;;;;;;;;;;;UAeiB,wBAAA,SAAiC,WAAA;EAAR;EAExC,QAAA,EAAU,QAAA;EACV,QAAA;EAHgD;EAKhD,oBAAA;AAAA;;;;;AAQF;cAAa,mBAAA,SACH,SAAA,YACG,wBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAMA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,wBAAA;EA0BT;EAjBX,WAAA,CAAY,MAAA,EAAQ,WAAA,GAAc,WAAA;EA6BH;EAfzB,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAQX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,6BAAA,GAA6B,OAAA,CAAA,mBAAA;EAU5D,SAAA,CAAA,GAAa,6BAAA;AAAA;;;;;UAYE,4BAAA,SAAqC,wBAAA;EA5EpD;EA8EA,SAAA;EA5EA;EA8EA,aAAA;EA1EI;EA4EJ,aAAA;EAlEA;EAoEA,oBAAA,EAAsB,mBAAA;EApEV;EAsEZ,uBAAA;AAAA;;;;;;cAQW,uBAAA,SACH,SAAA,YACG,4BAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAEA,uBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAIA,UAAA,CAAA;EAIJ,SAAA;EAEA,aAAA;EAEA,aAAA;EAEA,oBAAA,EAAsB,mBAAA;EAEtB,WAAA,CAAY,MAAA,EAAQ,4BAAA;EA9DsB;EA4EpC,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAgFX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,iCAAA,GAAiC,OAAA,CAAA,uBAAA;EAiBhE,SAAA,CAAA,GAAa,iCAAA;AAAA;;;;UAYE,yBAAA,SAAkC,wBAAA;EACjD,cAAA,EAAgB,QAAA;EAChB,cAAA,GAAiB,kBAAA;EACjB,mBAAA;EACA,oBAAA;EACA,SAAA;AAAA;;;;;;cAQW,oBAAA,SACH,SAAA,YACG,yBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,SAAA;EAEA,oBAAA;EAEA,mBAAA;EAEA,cAAA,EAAgB,QAAA;EAAA,IAEZ,qBAAA,CAAA,GAAyB,kBAAA;EAO7B,cAAA,EAAc,kBAAA,MAPiC,
|
|
1
|
+
{"version":3,"file":"combine_docs_chain.d.cts","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"mappings":";;;;;;;;;;;;;UAeiB,wBAAA,SAAiC,WAAA;EAAR;EAExC,QAAA,EAAU,QAAA;EACV,QAAA;EAHgD;EAKhD,oBAAA;AAAA;;;;;AAQF;cAAa,mBAAA,SACH,SAAA,YACG,wBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAMA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,wBAAA;EA0BT;EAjBX,WAAA,CAAY,MAAA,EAAQ,WAAA,GAAc,WAAA;EA6BH;EAfzB,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAQX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,6BAAA,GAA6B,OAAA,CAAA,mBAAA;EAU5D,SAAA,CAAA,GAAa,6BAAA;AAAA;;;;;UAYE,4BAAA,SAAqC,wBAAA;EA5EpD;EA8EA,SAAA;EA5EA;EA8EA,aAAA;EA1EI;EA4EJ,aAAA;EAlEA;EAoEA,oBAAA,EAAsB,mBAAA;EApEV;EAsEZ,uBAAA;AAAA;;;;;;cAQW,uBAAA,SACH,SAAA,YACG,4BAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAEA,uBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAIA,UAAA,CAAA;EAIJ,SAAA;EAEA,aAAA;EAEA,aAAA;EAEA,oBAAA,EAAsB,mBAAA;EAEtB,WAAA,CAAY,MAAA,EAAQ,4BAAA;EA9DsB;EA4EpC,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAgFX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,iCAAA,GAAiC,OAAA,CAAA,uBAAA;EAiBhE,SAAA,CAAA,GAAa,iCAAA;AAAA;;;;UAYE,yBAAA,SAAkC,wBAAA;EACjD,cAAA,EAAgB,QAAA;EAChB,cAAA,GAAiB,kBAAA;EACjB,mBAAA;EACA,oBAAA;EACA,SAAA;AAAA;;;;;;cAQW,oBAAA,SACH,SAAA,YACG,yBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,SAAA;EAEA,oBAAA;EAEA,mBAAA;EAEA,cAAA,EAAgB,QAAA;EAAA,IAEZ,qBAAA,CAAA,GAAyB,kBAAA;EAO7B,cAAA,EAAc,kBAAA,MAPiC,gCAAA,CAOjC,wBAAA;EAAA,IAEV,SAAA,CAAA;EAAA,IAaA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,yBAAA;EAzNb;EAuOD,uBAAA,CAAwB,GAAA,EAAK,QAAA,EAAU,IAAA,EAAM,MAAA,oBAAuB,OAAA;IAAA;;EA/N1E;EAmPM,sBAAA,CAAuB,GAAA,EAAK,QAAA,EAAU,GAAA,WAAW,OAAA;IAAA;;EAvOvD;EA0PM,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAmCX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,8BAAA,GAA8B,OAAA,CAAA,oBAAA;EAmB7D,SAAA,CAAA,GAAa,8BAAA;AAAA"}
|
|
@@ -5,7 +5,7 @@ import { BasePromptTemplate } from "@langchain/core/prompts";
|
|
|
5
5
|
import { CallbackManagerForChainRun } from "@langchain/core/callbacks/manager";
|
|
6
6
|
import { ChainValues } from "@langchain/core/utils/types";
|
|
7
7
|
import { Document } from "@langchain/core/documents";
|
|
8
|
-
import * as _langchain_core_prompt_values0 from "@langchain/core/prompt_values";
|
|
8
|
+
import * as _$_langchain_core_prompt_values0 from "@langchain/core/prompt_values";
|
|
9
9
|
|
|
10
10
|
//#region src/chains/combine_docs_chain.d.ts
|
|
11
11
|
/**
|
|
@@ -103,7 +103,7 @@ declare class RefineDocumentsChain extends BaseChain implements RefineDocumentsC
|
|
|
103
103
|
initialResponseName: string;
|
|
104
104
|
refineLLMChain: LLMChain;
|
|
105
105
|
get defaultDocumentPrompt(): BasePromptTemplate;
|
|
106
|
-
documentPrompt: BasePromptTemplate<any, _langchain_core_prompt_values0.BasePromptValueInterface, any>;
|
|
106
|
+
documentPrompt: BasePromptTemplate<any, _$_langchain_core_prompt_values0.BasePromptValueInterface, any>;
|
|
107
107
|
get inputKeys(): string[];
|
|
108
108
|
get outputKeys(): string[];
|
|
109
109
|
constructor(fields: RefineDocumentsChainInput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine_docs_chain.d.ts","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"mappings":";;;;;;;;;;;;;UAeiB,wBAAA,SAAiC,WAAA;EAAR;EAExC,QAAA,EAAU,QAAA;EACV,QAAA;EAHgD;EAKhD,oBAAA;AAAA;;;;;AAQF;cAAa,mBAAA,SACH,SAAA,YACG,wBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAMA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,wBAAA;EA0BT;EAjBX,WAAA,CAAY,MAAA,EAAQ,WAAA,GAAc,WAAA;EA6BH;EAfzB,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAQX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,6BAAA,GAA6B,OAAA,CAAA,mBAAA;EAU5D,SAAA,CAAA,GAAa,6BAAA;AAAA;;;;;UAYE,4BAAA,SAAqC,wBAAA;EA5EpD;EA8EA,SAAA;EA5EA;EA8EA,aAAA;EA1EI;EA4EJ,aAAA;EAlEA;EAoEA,oBAAA,EAAsB,mBAAA;EApEV;EAsEZ,uBAAA;AAAA;;;;;;cAQW,uBAAA,SACH,SAAA,YACG,4BAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAEA,uBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAIA,UAAA,CAAA;EAIJ,SAAA;EAEA,aAAA;EAEA,aAAA;EAEA,oBAAA,EAAsB,mBAAA;EAEtB,WAAA,CAAY,MAAA,EAAQ,4BAAA;EA9DsB;EA4EpC,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAgFX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,iCAAA,GAAiC,OAAA,CAAA,uBAAA;EAiBhE,SAAA,CAAA,GAAa,iCAAA;AAAA;;;;UAYE,yBAAA,SAAkC,wBAAA;EACjD,cAAA,EAAgB,QAAA;EAChB,cAAA,GAAiB,kBAAA;EACjB,mBAAA;EACA,oBAAA;EACA,SAAA;AAAA;;;;;;cAQW,oBAAA,SACH,SAAA,YACG,yBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,SAAA;EAEA,oBAAA;EAEA,mBAAA;EAEA,cAAA,EAAgB,QAAA;EAAA,IAEZ,qBAAA,CAAA,GAAyB,kBAAA;EAO7B,cAAA,EAAc,kBAAA,MAPiC,
|
|
1
|
+
{"version":3,"file":"combine_docs_chain.d.ts","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"mappings":";;;;;;;;;;;;;UAeiB,wBAAA,SAAiC,WAAA;EAAR;EAExC,QAAA,EAAU,QAAA;EACV,QAAA;EAHgD;EAKhD,oBAAA;AAAA;;;;;AAQF;cAAa,mBAAA,SACH,SAAA,YACG,wBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAMA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,wBAAA;EA0BT;EAjBX,WAAA,CAAY,MAAA,EAAQ,WAAA,GAAc,WAAA;EA6BH;EAfzB,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAQX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,6BAAA,GAA6B,OAAA,CAAA,mBAAA;EAU5D,SAAA,CAAA,GAAa,6BAAA;AAAA;;;;;UAYE,4BAAA,SAAqC,wBAAA;EA5EpD;EA8EA,SAAA;EA5EA;EA8EA,aAAA;EA1EI;EA4EJ,aAAA;EAlEA;EAoEA,oBAAA,EAAsB,mBAAA;EApEV;EAsEZ,uBAAA;AAAA;;;;;;cAQW,uBAAA,SACH,SAAA,YACG,4BAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,oBAAA;EAEA,uBAAA;EAAA,IAEI,SAAA,CAAA;EAAA,IAIA,UAAA,CAAA;EAIJ,SAAA;EAEA,aAAA;EAEA,aAAA;EAEA,oBAAA,EAAsB,mBAAA;EAEtB,WAAA,CAAY,MAAA,EAAQ,4BAAA;EA9DsB;EA4EpC,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAgFX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,iCAAA,GAAiC,OAAA,CAAA,uBAAA;EAiBhE,SAAA,CAAA,GAAa,iCAAA;AAAA;;;;UAYE,yBAAA,SAAkC,wBAAA;EACjD,cAAA,EAAgB,QAAA;EAChB,cAAA,GAAiB,kBAAA;EACjB,mBAAA;EACA,oBAAA;EACA,SAAA;AAAA;;;;;;cAQW,oBAAA,SACH,SAAA,YACG,yBAAA;EAAA,OAEJ,OAAA,CAAA;EAIP,QAAA,EAAU,QAAA;EAEV,QAAA;EAEA,SAAA;EAEA,oBAAA;EAEA,mBAAA;EAEA,cAAA,EAAgB,QAAA;EAAA,IAEZ,qBAAA,CAAA,GAAyB,kBAAA;EAO7B,cAAA,EAAc,kBAAA,MAPiC,gCAAA,CAOjC,wBAAA;EAAA,IAEV,SAAA,CAAA;EAAA,IAaA,UAAA,CAAA;EAIJ,WAAA,CAAY,MAAA,EAAQ,yBAAA;EAzNb;EAuOD,uBAAA,CAAwB,GAAA,EAAK,QAAA,EAAU,IAAA,EAAM,MAAA,oBAAuB,OAAA;IAAA;;EA/N1E;EAmPM,sBAAA,CAAuB,GAAA,EAAK,QAAA,EAAU,GAAA,WAAW,OAAA;IAAA;;EAvOvD;EA0PM,KAAA,CACJ,MAAA,EAAQ,WAAA,EACR,UAAA,GAAa,0BAAA,GACZ,OAAA,CAAQ,WAAA;EAmCX,UAAA,CAAA;EAAA,OAIa,WAAA,CAAY,IAAA,EAAM,8BAAA,GAA8B,OAAA,CAAA,oBAAA;EAmB7D,SAAA,CAAA,GAAa,8BAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduce.cjs","names":[],"sources":["../../../src/chains/combine_documents/reduce.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\n\n/**\n * Splits a list of documents into sublists based on a maximum token limit.\n *\n * @param {Document[]} docs - The list of documents to be split.\n * @param {Function} lengthFunc - A function that calculates the number of tokens in a list of documents.\n * @param {number} tokenMax - The maximum number of tokens allowed in a sublist.\n *\n * @returns {Document[][]} - A list of document sublists, each sublist contains documents whose total number of tokens does not exceed the tokenMax.\n *\n * @throws {Error} - Throws an error if a single document has more tokens than the tokenMax.\n */\nexport function splitListOfDocs(\n docs: Document[],\n //
|
|
1
|
+
{"version":3,"file":"reduce.cjs","names":[],"sources":["../../../src/chains/combine_documents/reduce.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\n\n/**\n * Splits a list of documents into sublists based on a maximum token limit.\n *\n * @param {Document[]} docs - The list of documents to be split.\n * @param {Function} lengthFunc - A function that calculates the number of tokens in a list of documents.\n * @param {number} tokenMax - The maximum number of tokens allowed in a sublist.\n *\n * @returns {Document[][]} - A list of document sublists, each sublist contains documents whose total number of tokens does not exceed the tokenMax.\n *\n * @throws {Error} - Throws an error if a single document has more tokens than the tokenMax.\n */\nexport function splitListOfDocs(\n docs: Document[],\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n lengthFunc: (...args: any[]) => any,\n tokenMax: number\n): Document[][] {\n const newResultDocList: Document[][] = [];\n let subResultDocs: Document[] = [];\n for (const doc of docs) {\n subResultDocs.push(doc);\n const numTokens = lengthFunc(subResultDocs);\n if (numTokens > tokenMax) {\n if (subResultDocs.length === 1) {\n throw new Error(\n \"A single document was longer than the context length, we cannot handle this.\"\n );\n }\n newResultDocList.push(subResultDocs.slice(0, -1));\n subResultDocs = subResultDocs.slice(-1);\n }\n }\n newResultDocList.push(subResultDocs);\n return newResultDocList;\n}\n\n/**\n * Collapses a list of documents into a single document.\n *\n * This function takes a list of documents and a function to combine the content of these documents.\n * It combines the content of the documents using the provided function and merges the metadata of all documents.\n * If a metadata key is present in multiple documents, the values are concatenated with a comma separator.\n *\n * @param {Document[]} docs - The list of documents to be collapsed.\n * @param {Function} combineDocumentFunc - A function that combines the content of a list of documents into a single string. This function should return a promise that resolves to the combined string.\n *\n * @returns {Promise<Document>} - A promise that resolves to a single document with combined content and merged metadata.\n *\n * @throws {Error} - Throws an error if the combineDocumentFunc does not return a promise or if the promise does not resolve to a string.\n */\nexport async function collapseDocs(\n docs: Document[],\n combineDocumentFunc: (docs: Document[]) => Promise<string>\n): Promise<Document> {\n const result = await combineDocumentFunc(docs);\n return { pageContent: result, metadata: collapseDocsMetadata(docs) };\n}\n\nfunction collapseDocsMetadata(docs: Document[]): Document[\"metadata\"] {\n const combinedMetadata: Record<string, string> = {};\n for (const key in docs[0].metadata) {\n if (key in docs[0].metadata) {\n combinedMetadata[key] = String(docs[0].metadata[key]);\n }\n }\n for (const doc of docs.slice(1)) {\n for (const key in doc.metadata) {\n if (key in combinedMetadata) {\n combinedMetadata[key] += `, ${doc.metadata[key]}`;\n } else {\n combinedMetadata[key] = String(doc.metadata[key]);\n }\n }\n }\n return combinedMetadata;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAaA,SAAgB,gBACd,MAEA,YACA,UACc;CACd,MAAM,mBAAiC,EAAE;CACzC,IAAI,gBAA4B,EAAE;AAClC,MAAK,MAAM,OAAO,MAAM;AACtB,gBAAc,KAAK,IAAI;AAEvB,MADkB,WAAW,cAAc,GAC3B,UAAU;AACxB,OAAI,cAAc,WAAW,EAC3B,OAAM,IAAI,MACR,+EACD;AAEH,oBAAiB,KAAK,cAAc,MAAM,GAAG,GAAG,CAAC;AACjD,mBAAgB,cAAc,MAAM,GAAG;;;AAG3C,kBAAiB,KAAK,cAAc;AACpC,QAAO;;;;;;;;;;;;;;;;AAiBT,eAAsB,aACpB,MACA,qBACmB;AAEnB,QAAO;EAAE,aADM,MAAM,oBAAoB,KAAK;EAChB,UAAU,qBAAqB,KAAK;EAAE;;AAGtE,SAAS,qBAAqB,MAAwC;CACpE,MAAM,mBAA2C,EAAE;AACnD,MAAK,MAAM,OAAO,KAAK,GAAG,SACxB,KAAI,OAAO,KAAK,GAAG,SACjB,kBAAiB,OAAO,OAAO,KAAK,GAAG,SAAS,KAAK;AAGzD,MAAK,MAAM,OAAO,KAAK,MAAM,EAAE,CAC7B,MAAK,MAAM,OAAO,IAAI,SACpB,KAAI,OAAO,iBACT,kBAAiB,QAAQ,KAAK,IAAI,SAAS;KAE3C,kBAAiB,OAAO,OAAO,IAAI,SAAS,KAAK;AAIvD,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduce.js","names":[],"sources":["../../../src/chains/combine_documents/reduce.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\n\n/**\n * Splits a list of documents into sublists based on a maximum token limit.\n *\n * @param {Document[]} docs - The list of documents to be split.\n * @param {Function} lengthFunc - A function that calculates the number of tokens in a list of documents.\n * @param {number} tokenMax - The maximum number of tokens allowed in a sublist.\n *\n * @returns {Document[][]} - A list of document sublists, each sublist contains documents whose total number of tokens does not exceed the tokenMax.\n *\n * @throws {Error} - Throws an error if a single document has more tokens than the tokenMax.\n */\nexport function splitListOfDocs(\n docs: Document[],\n //
|
|
1
|
+
{"version":3,"file":"reduce.js","names":[],"sources":["../../../src/chains/combine_documents/reduce.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\n\n/**\n * Splits a list of documents into sublists based on a maximum token limit.\n *\n * @param {Document[]} docs - The list of documents to be split.\n * @param {Function} lengthFunc - A function that calculates the number of tokens in a list of documents.\n * @param {number} tokenMax - The maximum number of tokens allowed in a sublist.\n *\n * @returns {Document[][]} - A list of document sublists, each sublist contains documents whose total number of tokens does not exceed the tokenMax.\n *\n * @throws {Error} - Throws an error if a single document has more tokens than the tokenMax.\n */\nexport function splitListOfDocs(\n docs: Document[],\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n lengthFunc: (...args: any[]) => any,\n tokenMax: number\n): Document[][] {\n const newResultDocList: Document[][] = [];\n let subResultDocs: Document[] = [];\n for (const doc of docs) {\n subResultDocs.push(doc);\n const numTokens = lengthFunc(subResultDocs);\n if (numTokens > tokenMax) {\n if (subResultDocs.length === 1) {\n throw new Error(\n \"A single document was longer than the context length, we cannot handle this.\"\n );\n }\n newResultDocList.push(subResultDocs.slice(0, -1));\n subResultDocs = subResultDocs.slice(-1);\n }\n }\n newResultDocList.push(subResultDocs);\n return newResultDocList;\n}\n\n/**\n * Collapses a list of documents into a single document.\n *\n * This function takes a list of documents and a function to combine the content of these documents.\n * It combines the content of the documents using the provided function and merges the metadata of all documents.\n * If a metadata key is present in multiple documents, the values are concatenated with a comma separator.\n *\n * @param {Document[]} docs - The list of documents to be collapsed.\n * @param {Function} combineDocumentFunc - A function that combines the content of a list of documents into a single string. This function should return a promise that resolves to the combined string.\n *\n * @returns {Promise<Document>} - A promise that resolves to a single document with combined content and merged metadata.\n *\n * @throws {Error} - Throws an error if the combineDocumentFunc does not return a promise or if the promise does not resolve to a string.\n */\nexport async function collapseDocs(\n docs: Document[],\n combineDocumentFunc: (docs: Document[]) => Promise<string>\n): Promise<Document> {\n const result = await combineDocumentFunc(docs);\n return { pageContent: result, metadata: collapseDocsMetadata(docs) };\n}\n\nfunction collapseDocsMetadata(docs: Document[]): Document[\"metadata\"] {\n const combinedMetadata: Record<string, string> = {};\n for (const key in docs[0].metadata) {\n if (key in docs[0].metadata) {\n combinedMetadata[key] = String(docs[0].metadata[key]);\n }\n }\n for (const doc of docs.slice(1)) {\n for (const key in doc.metadata) {\n if (key in combinedMetadata) {\n combinedMetadata[key] += `, ${doc.metadata[key]}`;\n } else {\n combinedMetadata[key] = String(doc.metadata[key]);\n }\n }\n }\n return combinedMetadata;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAaA,SAAgB,gBACd,MAEA,YACA,UACc;CACd,MAAM,mBAAiC,EAAE;CACzC,IAAI,gBAA4B,EAAE;AAClC,MAAK,MAAM,OAAO,MAAM;AACtB,gBAAc,KAAK,IAAI;AAEvB,MADkB,WAAW,cAAc,GAC3B,UAAU;AACxB,OAAI,cAAc,WAAW,EAC3B,OAAM,IAAI,MACR,+EACD;AAEH,oBAAiB,KAAK,cAAc,MAAM,GAAG,GAAG,CAAC;AACjD,mBAAgB,cAAc,MAAM,GAAG;;;AAG3C,kBAAiB,KAAK,cAAc;AACpC,QAAO;;;;;;;;;;;;;;;;AAiBT,eAAsB,aACpB,MACA,qBACmB;AAEnB,QAAO;EAAE,aADM,MAAM,oBAAoB,KAAK;EAChB,UAAU,qBAAqB,KAAK;EAAE;;AAGtE,SAAS,qBAAqB,MAAwC;CACpE,MAAM,mBAA2C,EAAE;AACnD,MAAK,MAAM,OAAO,KAAK,GAAG,SACxB,KAAI,OAAO,KAAK,GAAG,SACjB,kBAAiB,OAAO,OAAO,KAAK,GAAG,SAAS,KAAK;AAGzD,MAAK,MAAM,OAAO,KAAK,MAAM,EAAE,CAC7B,MAAK,MAAM,OAAO,IAAI,SACpB,KAAI,OAAO,iBACT,kBAAiB,QAAQ,KAAK,IAAI,SAAS;KAE3C,kBAAiB,OAAO,OAAO,IAAI,SAAS,KAAK;AAIvD,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversational_retrieval_chain.cjs","names":["BaseChain","HumanMessage","AIMessage","PromptTemplate","loadQAChain","LLMChain"],"sources":["../../src/chains/conversational_retrieval_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { BaseMessage, HumanMessage, AIMessage } from \"@langchain/core/messages\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { QAChainParams, loadQAChain } from \"./question_answering/load.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nconst question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone question:`;\n\n/**\n * Interface for the input parameters of the\n * ConversationalRetrievalQAChain class.\n */\nexport interface ConversationalRetrievalQAChainInput extends ChainInputs {\n retriever: BaseRetrieverInterface;\n combineDocumentsChain: BaseChain;\n questionGeneratorChain: LLMChain;\n returnSourceDocuments?: boolean;\n returnGeneratedQuestion?: boolean;\n inputKey?: string;\n}\n\n/**\n * Class for conducting conversational question-answering tasks with a\n * retrieval component. Extends the BaseChain class and implements the\n * ConversationalRetrievalQAChainInput interface.\n * @example\n * ```typescript\n * import { ChatAnthropic } from \"@langchain/anthropic\";\n * import {\n * ChatPromptTemplate,\n * MessagesPlaceholder,\n * } from \"@langchain/core/prompts\";\n * import { BaseMessage } from \"@langchain/core/messages\";\n * import { createStuffDocumentsChain } from \"@langchain/classic/chains/combine_documents\";\n * import { createHistoryAwareRetriever } from \"@langchain/classic/chains/history_aware_retriever\";\n * import { createRetrievalChain } from \"@langchain/classic/chains/retrieval\";\n *\n * const retriever = ...your retriever;\n * const llm = new ChatAnthropic();\n *\n * // Contextualize question\n * const contextualizeQSystemPrompt = `\n * Given a chat history and the latest user question\n * which might reference context in the chat history,\n * formulate a standalone question which can be understood\n * without the chat history. Do NOT answer the question, just\n * reformulate it if needed and otherwise return it as is.`;\n * const contextualizeQPrompt = ChatPromptTemplate.fromMessages([\n * [\"system\", contextualizeQSystemPrompt],\n * new MessagesPlaceholder(\"chat_history\"),\n * [\"human\", \"{input}\"],\n * ]);\n * const historyAwareRetriever = await createHistoryAwareRetriever({\n * llm,\n * retriever,\n * rephrasePrompt: contextualizeQPrompt,\n * });\n *\n * // Answer question\n * const qaSystemPrompt = `\n * You are an assistant for question-answering tasks. Use\n * the following pieces of retrieved context to answer the\n * question. If you don't know the answer, just say that you\n * don't know. Use three sentences maximum and keep the answer\n * concise.\n * \\n\\n\n * {context}`;\n * const qaPrompt = ChatPromptTemplate.fromMessages([\n * [\"system\", qaSystemPrompt],\n * new MessagesPlaceholder(\"chat_history\"),\n * [\"human\", \"{input}\"],\n * ]);\n *\n * // Below we use createStuffDocuments_chain to feed all retrieved context\n * // into the LLM. Note that we can also use StuffDocumentsChain and other\n * // instances of BaseCombineDocumentsChain.\n * const questionAnswerChain = await createStuffDocumentsChain({\n * llm,\n * prompt: qaPrompt,\n * });\n *\n * const ragChain = await createRetrievalChain({\n * retriever: historyAwareRetriever,\n * combineDocsChain: questionAnswerChain,\n * });\n *\n * // Usage:\n * const chat_history: BaseMessage[] = [];\n * const response = await ragChain.invoke({\n * chat_history,\n * input: \"...\",\n * });\n * ```\n */\nexport class ConversationalRetrievalQAChain\n extends BaseChain\n implements ConversationalRetrievalQAChainInput\n{\n static lc_name() {\n return \"ConversationalRetrievalQAChain\";\n }\n\n inputKey = \"question\";\n\n chatHistoryKey = \"chat_history\";\n\n get inputKeys() {\n return [this.inputKey, this.chatHistoryKey];\n }\n\n get outputKeys() {\n return this.combineDocumentsChain.outputKeys.concat(\n this.returnSourceDocuments ? [\"sourceDocuments\"] : []\n );\n }\n\n retriever: BaseRetrieverInterface;\n\n combineDocumentsChain: BaseChain;\n\n questionGeneratorChain: LLMChain;\n\n returnSourceDocuments = false;\n\n returnGeneratedQuestion = false;\n\n constructor(fields: ConversationalRetrievalQAChainInput) {\n super(fields);\n this.retriever = fields.retriever;\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.questionGeneratorChain = fields.questionGeneratorChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.returnSourceDocuments =\n fields.returnSourceDocuments ?? this.returnSourceDocuments;\n this.returnGeneratedQuestion =\n fields.returnGeneratedQuestion ?? this.returnGeneratedQuestion;\n }\n\n /**\n * Static method to convert the chat history input into a formatted\n * string.\n * @param chatHistory Chat history input which can be a string, an array of BaseMessage instances, or an array of string arrays.\n * @returns A formatted string representing the chat history.\n */\n static getChatHistoryString(\n chatHistory: string | BaseMessage[] | string[][]\n ) {\n let historyMessages: BaseMessage[];\n if (Array.isArray(chatHistory)) {\n // TODO: Deprecate on a breaking release\n if (\n Array.isArray(chatHistory[0]) &&\n typeof chatHistory[0][0] === \"string\"\n ) {\n console.warn(\n \"Passing chat history as an array of strings is deprecated.\\nPlease see https://js.langchain.com/docs/modules/chains/popular/chat_vector_db#externally-managed-memory for more information.\"\n );\n historyMessages = chatHistory.flat().map((stringMessage, i) => {\n if (i % 2 === 0) {\n return new HumanMessage(stringMessage);\n } else {\n return new AIMessage(stringMessage);\n }\n });\n } else {\n historyMessages = chatHistory as BaseMessage[];\n }\n return historyMessages\n .map((chatMessage) => {\n if (chatMessage._getType() === \"human\") {\n return `Human: ${chatMessage.content}`;\n } else if (chatMessage._getType() === \"ai\") {\n return `Assistant: ${chatMessage.content}`;\n } else {\n return `${chatMessage.content}`;\n }\n })\n .join(\"\\n\");\n }\n return chatHistory;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Question key ${this.inputKey} not found.`);\n }\n if (!(this.chatHistoryKey in values)) {\n throw new Error(`Chat history key ${this.chatHistoryKey} not found.`);\n }\n const question: string = values[this.inputKey];\n const chatHistory: string =\n ConversationalRetrievalQAChain.getChatHistoryString(\n values[this.chatHistoryKey]\n );\n let newQuestion = question;\n if (chatHistory.length > 0) {\n const result = await this.questionGeneratorChain.call(\n {\n question,\n chat_history: chatHistory,\n },\n runManager?.getChild(\"question_generator\")\n );\n const keys = Object.keys(result);\n if (keys.length === 1) {\n newQuestion = result[keys[0]];\n } else {\n throw new Error(\n \"Return from llm chain has multiple values, only single values supported.\"\n );\n }\n }\n const docs = await this.retriever.invoke(\n newQuestion,\n runManager?.getChild(\"retriever\")\n );\n const inputs = {\n question: newQuestion,\n input_documents: docs,\n chat_history: chatHistory,\n };\n let result = await this.combineDocumentsChain.call(\n inputs,\n runManager?.getChild(\"combine_documents\")\n );\n if (this.returnSourceDocuments) {\n result = {\n ...result,\n sourceDocuments: docs,\n };\n }\n if (this.returnGeneratedQuestion) {\n result = {\n ...result,\n generatedQuestion: newQuestion,\n };\n }\n return result;\n }\n\n _chainType(): string {\n return \"conversational_retrieval_chain\";\n }\n\n static async deserialize(\n _data: SerializedChatVectorDBQAChain,\n _values: LoadValues\n ): Promise<ConversationalRetrievalQAChain> {\n throw new Error(\"Not implemented.\");\n }\n\n serialize(): SerializedChatVectorDBQAChain {\n throw new Error(\"Not implemented.\");\n }\n\n /**\n * Static method to create a new ConversationalRetrievalQAChain from a\n * BaseLanguageModel and a BaseRetriever.\n * @param llm {@link BaseLanguageModelInterface} instance used to generate a new question.\n * @param retriever {@link BaseRetrieverInterface} instance used to retrieve relevant documents.\n * @param options.returnSourceDocuments Whether to return source documents in the final output\n * @param options.questionGeneratorChainOptions Options to initialize the standalone question generation chain used as the first internal step\n * @param options.qaChainOptions {@link QAChainParams} used to initialize the QA chain used as the second internal step\n * @returns A new instance of ConversationalRetrievalQAChain.\n */\n static fromLLM(\n llm: BaseLanguageModelInterface,\n retriever: BaseRetrieverInterface,\n options: {\n outputKey?: string; // not used\n returnSourceDocuments?: boolean;\n /** @deprecated Pass in questionGeneratorChainOptions.template instead */\n questionGeneratorTemplate?: string;\n /** @deprecated Pass in qaChainOptions.prompt instead */\n qaTemplate?: string;\n questionGeneratorChainOptions?: {\n llm?: BaseLanguageModelInterface;\n template?: string;\n };\n qaChainOptions?: QAChainParams;\n } & Omit<\n ConversationalRetrievalQAChainInput,\n \"retriever\" | \"combineDocumentsChain\" | \"questionGeneratorChain\"\n > = {}\n ): ConversationalRetrievalQAChain {\n const {\n questionGeneratorTemplate,\n qaTemplate,\n qaChainOptions = {\n type: \"stuff\",\n prompt: qaTemplate\n ? PromptTemplate.fromTemplate(qaTemplate)\n : undefined,\n },\n questionGeneratorChainOptions,\n verbose,\n ...rest\n } = options;\n\n const qaChain = loadQAChain(llm, qaChainOptions);\n\n const questionGeneratorChainPrompt = PromptTemplate.fromTemplate(\n questionGeneratorChainOptions?.template ??\n questionGeneratorTemplate ??\n question_generator_template\n );\n const questionGeneratorChain = new LLMChain({\n prompt: questionGeneratorChainPrompt,\n llm: questionGeneratorChainOptions?.llm ?? llm,\n verbose,\n });\n const instance = new this({\n retriever,\n combineDocumentsChain: qaChain,\n questionGeneratorChain,\n verbose,\n ...rest,\n });\n return instance;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversational_retrieval_chain.cjs","names":["BaseChain","HumanMessage","AIMessage","PromptTemplate","loadQAChain","LLMChain"],"sources":["../../src/chains/conversational_retrieval_chain.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { BaseMessage, HumanMessage, AIMessage } from \"@langchain/core/messages\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { SerializedChatVectorDBQAChain } from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\nimport { QAChainParams, loadQAChain } from \"./question_answering/load.js\";\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LoadValues = Record<string, any>;\n\nconst question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone question:`;\n\n/**\n * Interface for the input parameters of the\n * ConversationalRetrievalQAChain class.\n */\nexport interface ConversationalRetrievalQAChainInput extends ChainInputs {\n retriever: BaseRetrieverInterface;\n combineDocumentsChain: BaseChain;\n questionGeneratorChain: LLMChain;\n returnSourceDocuments?: boolean;\n returnGeneratedQuestion?: boolean;\n inputKey?: string;\n}\n\n/**\n * Class for conducting conversational question-answering tasks with a\n * retrieval component. Extends the BaseChain class and implements the\n * ConversationalRetrievalQAChainInput interface.\n * @example\n * ```typescript\n * import { ChatAnthropic } from \"@langchain/anthropic\";\n * import {\n * ChatPromptTemplate,\n * MessagesPlaceholder,\n * } from \"@langchain/core/prompts\";\n * import { BaseMessage } from \"@langchain/core/messages\";\n * import { createStuffDocumentsChain } from \"@langchain/classic/chains/combine_documents\";\n * import { createHistoryAwareRetriever } from \"@langchain/classic/chains/history_aware_retriever\";\n * import { createRetrievalChain } from \"@langchain/classic/chains/retrieval\";\n *\n * const retriever = ...your retriever;\n * const llm = new ChatAnthropic();\n *\n * // Contextualize question\n * const contextualizeQSystemPrompt = `\n * Given a chat history and the latest user question\n * which might reference context in the chat history,\n * formulate a standalone question which can be understood\n * without the chat history. Do NOT answer the question, just\n * reformulate it if needed and otherwise return it as is.`;\n * const contextualizeQPrompt = ChatPromptTemplate.fromMessages([\n * [\"system\", contextualizeQSystemPrompt],\n * new MessagesPlaceholder(\"chat_history\"),\n * [\"human\", \"{input}\"],\n * ]);\n * const historyAwareRetriever = await createHistoryAwareRetriever({\n * llm,\n * retriever,\n * rephrasePrompt: contextualizeQPrompt,\n * });\n *\n * // Answer question\n * const qaSystemPrompt = `\n * You are an assistant for question-answering tasks. Use\n * the following pieces of retrieved context to answer the\n * question. If you don't know the answer, just say that you\n * don't know. Use three sentences maximum and keep the answer\n * concise.\n * \\n\\n\n * {context}`;\n * const qaPrompt = ChatPromptTemplate.fromMessages([\n * [\"system\", qaSystemPrompt],\n * new MessagesPlaceholder(\"chat_history\"),\n * [\"human\", \"{input}\"],\n * ]);\n *\n * // Below we use createStuffDocuments_chain to feed all retrieved context\n * // into the LLM. Note that we can also use StuffDocumentsChain and other\n * // instances of BaseCombineDocumentsChain.\n * const questionAnswerChain = await createStuffDocumentsChain({\n * llm,\n * prompt: qaPrompt,\n * });\n *\n * const ragChain = await createRetrievalChain({\n * retriever: historyAwareRetriever,\n * combineDocsChain: questionAnswerChain,\n * });\n *\n * // Usage:\n * const chat_history: BaseMessage[] = [];\n * const response = await ragChain.invoke({\n * chat_history,\n * input: \"...\",\n * });\n * ```\n */\nexport class ConversationalRetrievalQAChain\n extends BaseChain\n implements ConversationalRetrievalQAChainInput\n{\n static lc_name() {\n return \"ConversationalRetrievalQAChain\";\n }\n\n inputKey = \"question\";\n\n chatHistoryKey = \"chat_history\";\n\n get inputKeys() {\n return [this.inputKey, this.chatHistoryKey];\n }\n\n get outputKeys() {\n return this.combineDocumentsChain.outputKeys.concat(\n this.returnSourceDocuments ? [\"sourceDocuments\"] : []\n );\n }\n\n retriever: BaseRetrieverInterface;\n\n combineDocumentsChain: BaseChain;\n\n questionGeneratorChain: LLMChain;\n\n returnSourceDocuments = false;\n\n returnGeneratedQuestion = false;\n\n constructor(fields: ConversationalRetrievalQAChainInput) {\n super(fields);\n this.retriever = fields.retriever;\n this.combineDocumentsChain = fields.combineDocumentsChain;\n this.questionGeneratorChain = fields.questionGeneratorChain;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.returnSourceDocuments =\n fields.returnSourceDocuments ?? this.returnSourceDocuments;\n this.returnGeneratedQuestion =\n fields.returnGeneratedQuestion ?? this.returnGeneratedQuestion;\n }\n\n /**\n * Static method to convert the chat history input into a formatted\n * string.\n * @param chatHistory Chat history input which can be a string, an array of BaseMessage instances, or an array of string arrays.\n * @returns A formatted string representing the chat history.\n */\n static getChatHistoryString(\n chatHistory: string | BaseMessage[] | string[][]\n ) {\n let historyMessages: BaseMessage[];\n if (Array.isArray(chatHistory)) {\n // TODO: Deprecate on a breaking release\n if (\n Array.isArray(chatHistory[0]) &&\n typeof chatHistory[0][0] === \"string\"\n ) {\n console.warn(\n \"Passing chat history as an array of strings is deprecated.\\nPlease see https://js.langchain.com/docs/modules/chains/popular/chat_vector_db#externally-managed-memory for more information.\"\n );\n historyMessages = chatHistory.flat().map((stringMessage, i) => {\n if (i % 2 === 0) {\n return new HumanMessage(stringMessage);\n } else {\n return new AIMessage(stringMessage);\n }\n });\n } else {\n historyMessages = chatHistory as BaseMessage[];\n }\n return historyMessages\n .map((chatMessage) => {\n if (chatMessage._getType() === \"human\") {\n return `Human: ${chatMessage.content}`;\n } else if (chatMessage._getType() === \"ai\") {\n return `Assistant: ${chatMessage.content}`;\n } else {\n return `${chatMessage.content}`;\n }\n })\n .join(\"\\n\");\n }\n return chatHistory;\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n if (!(this.inputKey in values)) {\n throw new Error(`Question key ${this.inputKey} not found.`);\n }\n if (!(this.chatHistoryKey in values)) {\n throw new Error(`Chat history key ${this.chatHistoryKey} not found.`);\n }\n const question: string = values[this.inputKey];\n const chatHistory: string =\n ConversationalRetrievalQAChain.getChatHistoryString(\n values[this.chatHistoryKey]\n );\n let newQuestion = question;\n if (chatHistory.length > 0) {\n const result = await this.questionGeneratorChain.call(\n {\n question,\n chat_history: chatHistory,\n },\n runManager?.getChild(\"question_generator\")\n );\n const keys = Object.keys(result);\n if (keys.length === 1) {\n newQuestion = result[keys[0]];\n } else {\n throw new Error(\n \"Return from llm chain has multiple values, only single values supported.\"\n );\n }\n }\n const docs = await this.retriever.invoke(\n newQuestion,\n runManager?.getChild(\"retriever\")\n );\n const inputs = {\n question: newQuestion,\n input_documents: docs,\n chat_history: chatHistory,\n };\n let result = await this.combineDocumentsChain.call(\n inputs,\n runManager?.getChild(\"combine_documents\")\n );\n if (this.returnSourceDocuments) {\n result = {\n ...result,\n sourceDocuments: docs,\n };\n }\n if (this.returnGeneratedQuestion) {\n result = {\n ...result,\n generatedQuestion: newQuestion,\n };\n }\n return result;\n }\n\n _chainType(): string {\n return \"conversational_retrieval_chain\";\n }\n\n static async deserialize(\n _data: SerializedChatVectorDBQAChain,\n _values: LoadValues\n ): Promise<ConversationalRetrievalQAChain> {\n throw new Error(\"Not implemented.\");\n }\n\n serialize(): SerializedChatVectorDBQAChain {\n throw new Error(\"Not implemented.\");\n }\n\n /**\n * Static method to create a new ConversationalRetrievalQAChain from a\n * BaseLanguageModel and a BaseRetriever.\n * @param llm {@link BaseLanguageModelInterface} instance used to generate a new question.\n * @param retriever {@link BaseRetrieverInterface} instance used to retrieve relevant documents.\n * @param options.returnSourceDocuments Whether to return source documents in the final output\n * @param options.questionGeneratorChainOptions Options to initialize the standalone question generation chain used as the first internal step\n * @param options.qaChainOptions {@link QAChainParams} used to initialize the QA chain used as the second internal step\n * @returns A new instance of ConversationalRetrievalQAChain.\n */\n static fromLLM(\n llm: BaseLanguageModelInterface,\n retriever: BaseRetrieverInterface,\n options: {\n outputKey?: string; // not used\n returnSourceDocuments?: boolean;\n /** @deprecated Pass in questionGeneratorChainOptions.template instead */\n questionGeneratorTemplate?: string;\n /** @deprecated Pass in qaChainOptions.prompt instead */\n qaTemplate?: string;\n questionGeneratorChainOptions?: {\n llm?: BaseLanguageModelInterface;\n template?: string;\n };\n qaChainOptions?: QAChainParams;\n } & Omit<\n ConversationalRetrievalQAChainInput,\n \"retriever\" | \"combineDocumentsChain\" | \"questionGeneratorChain\"\n > = {}\n ): ConversationalRetrievalQAChain {\n const {\n questionGeneratorTemplate,\n qaTemplate,\n qaChainOptions = {\n type: \"stuff\",\n prompt: qaTemplate\n ? PromptTemplate.fromTemplate(qaTemplate)\n : undefined,\n },\n questionGeneratorChainOptions,\n verbose,\n ...rest\n } = options;\n\n const qaChain = loadQAChain(llm, qaChainOptions);\n\n const questionGeneratorChainPrompt = PromptTemplate.fromTemplate(\n questionGeneratorChainOptions?.template ??\n questionGeneratorTemplate ??\n question_generator_template\n );\n const questionGeneratorChain = new LLMChain({\n prompt: questionGeneratorChainPrompt,\n llm: questionGeneratorChainOptions?.llm ?? llm,\n verbose,\n });\n const instance = new this({\n retriever,\n combineDocumentsChain: qaChain,\n questionGeneratorChain,\n verbose,\n ...rest,\n });\n return instance;\n }\n}\n"],"mappings":";;;;;;;AAcA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FpC,IAAa,iCAAb,MAAa,uCACHA,aAAAA,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT,WAAW;CAEX,iBAAiB;CAEjB,IAAI,YAAY;AACd,SAAO,CAAC,KAAK,UAAU,KAAK,eAAe;;CAG7C,IAAI,aAAa;AACf,SAAO,KAAK,sBAAsB,WAAW,OAC3C,KAAK,wBAAwB,CAAC,kBAAkB,GAAG,EAAE,CACtD;;CAGH;CAEA;CAEA;CAEA,wBAAwB;CAExB,0BAA0B;CAE1B,YAAY,QAA6C;AACvD,QAAM,OAAO;AACb,OAAK,YAAY,OAAO;AACxB,OAAK,wBAAwB,OAAO;AACpC,OAAK,yBAAyB,OAAO;AACrC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,wBACH,OAAO,yBAAyB,KAAK;AACvC,OAAK,0BACH,OAAO,2BAA2B,KAAK;;;;;;;;CAS3C,OAAO,qBACL,aACA;EACA,IAAI;AACJ,MAAI,MAAM,QAAQ,YAAY,EAAE;AAE9B,OACE,MAAM,QAAQ,YAAY,GAAG,IAC7B,OAAO,YAAY,GAAG,OAAO,UAC7B;AACA,YAAQ,KACN,6LACD;AACD,sBAAkB,YAAY,MAAM,CAAC,KAAK,eAAe,MAAM;AAC7D,SAAI,IAAI,MAAM,EACZ,QAAO,IAAIC,yBAAAA,aAAa,cAAc;SAEtC,QAAO,IAAIC,yBAAAA,UAAU,cAAc;MAErC;SAEF,mBAAkB;AAEpB,UAAO,gBACJ,KAAK,gBAAgB;AACpB,QAAI,YAAY,UAAU,KAAK,QAC7B,QAAO,UAAU,YAAY;aACpB,YAAY,UAAU,KAAK,KACpC,QAAO,cAAc,YAAY;QAEjC,QAAO,GAAG,YAAY;KAExB,CACD,KAAK,KAAK;;AAEf,SAAO;;;CAIT,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;AAE7D,MAAI,EAAE,KAAK,kBAAkB,QAC3B,OAAM,IAAI,MAAM,oBAAoB,KAAK,eAAe,aAAa;EAEvE,MAAM,WAAmB,OAAO,KAAK;EACrC,MAAM,cACJ,+BAA+B,qBAC7B,OAAO,KAAK,gBACb;EACH,IAAI,cAAc;AAClB,MAAI,YAAY,SAAS,GAAG;GAC1B,MAAM,SAAS,MAAM,KAAK,uBAAuB,KAC/C;IACE;IACA,cAAc;IACf,EACD,YAAY,SAAS,qBAAqB,CAC3C;GACD,MAAM,OAAO,OAAO,KAAK,OAAO;AAChC,OAAI,KAAK,WAAW,EAClB,eAAc,OAAO,KAAK;OAE1B,OAAM,IAAI,MACR,2EACD;;EAGL,MAAM,OAAO,MAAM,KAAK,UAAU,OAChC,aACA,YAAY,SAAS,YAAY,CAClC;EACD,MAAM,SAAS;GACb,UAAU;GACV,iBAAiB;GACjB,cAAc;GACf;EACD,IAAI,SAAS,MAAM,KAAK,sBAAsB,KAC5C,QACA,YAAY,SAAS,oBAAoB,CAC1C;AACD,MAAI,KAAK,sBACP,UAAS;GACP,GAAG;GACH,iBAAiB;GAClB;AAEH,MAAI,KAAK,wBACP,UAAS;GACP,GAAG;GACH,mBAAmB;GACpB;AAEH,SAAO;;CAGT,aAAqB;AACnB,SAAO;;CAGT,aAAa,YACX,OACA,SACyC;AACzC,QAAM,IAAI,MAAM,mBAAmB;;CAGrC,YAA2C;AACzC,QAAM,IAAI,MAAM,mBAAmB;;;;;;;;;;;;CAarC,OAAO,QACL,KACA,WACA,UAeI,EAAE,EAC0B;EAChC,MAAM,EACJ,2BACA,YACA,iBAAiB;GACf,MAAM;GACN,QAAQ,aACJC,wBAAAA,eAAe,aAAa,WAAW,GACvC,KAAA;GACL,EACD,+BACA,SACA,GAAG,SACD;EAEJ,MAAM,UAAUC,aAAAA,YAAY,KAAK,eAAe;EAOhD,MAAM,yBAAyB,IAAIC,kBAAAA,SAAS;GAC1C,QANmCF,wBAAAA,eAAe,aAClD,+BAA+B,YAC7B,6BACA,4BACH;GAGC,KAAK,+BAA+B,OAAO;GAC3C;GACD,CAAC;AAQF,SAPiB,IAAI,KAAK;GACxB;GACA,uBAAuB;GACvB;GACA;GACA,GAAG;GACJ,CAAC"}
|