@langchain/classic 1.0.23 → 1.0.24-dev-1773698445534
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/dist/_virtual/_rolldown/runtime.cjs +12 -22
- package/dist/_virtual/_rolldown/runtime.js +12 -21
- package/dist/agents/agent.cjs +2 -3
- package/dist/agents/agent.cjs.map +1 -1
- package/dist/agents/agent.js +1 -2
- package/dist/agents/agent.js.map +1 -1
- package/dist/agents/chat/index.cjs +6 -7
- package/dist/agents/chat/index.cjs.map +1 -1
- package/dist/agents/chat/index.js +1 -2
- package/dist/agents/chat/index.js.map +1 -1
- package/dist/agents/chat/outputParser.cjs +5 -6
- package/dist/agents/chat/outputParser.cjs.map +1 -1
- package/dist/agents/chat/outputParser.js +2 -3
- package/dist/agents/chat/outputParser.js.map +1 -1
- package/dist/agents/chat/prompt.cjs +1 -2
- package/dist/agents/chat/prompt.cjs.map +1 -1
- package/dist/agents/chat/prompt.js +1 -1
- package/dist/agents/chat_convo/index.cjs +6 -7
- package/dist/agents/chat_convo/index.cjs.map +1 -1
- package/dist/agents/chat_convo/index.js +1 -2
- package/dist/agents/chat_convo/index.js.map +1 -1
- package/dist/agents/chat_convo/outputParser.cjs +5 -6
- package/dist/agents/chat_convo/outputParser.cjs.map +1 -1
- package/dist/agents/chat_convo/outputParser.js +1 -2
- package/dist/agents/chat_convo/outputParser.js.map +1 -1
- package/dist/agents/chat_convo/prompt.cjs +1 -2
- package/dist/agents/chat_convo/prompt.cjs.map +1 -1
- package/dist/agents/chat_convo/prompt.js +1 -1
- package/dist/agents/executor.cjs +4 -5
- package/dist/agents/executor.cjs.map +1 -1
- package/dist/agents/executor.js +1 -2
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/format_scratchpad/log.cjs +8 -10
- package/dist/agents/format_scratchpad/log.cjs.map +1 -1
- package/dist/agents/format_scratchpad/log.js +1 -2
- package/dist/agents/format_scratchpad/log.js.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.cjs +8 -9
- package/dist/agents/format_scratchpad/log_to_message.cjs.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.js +1 -2
- package/dist/agents/format_scratchpad/log_to_message.js.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.cjs +9 -10
- package/dist/agents/format_scratchpad/openai_functions.cjs.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.js +1 -2
- package/dist/agents/format_scratchpad/openai_functions.js.map +1 -1
- package/dist/agents/format_scratchpad/openai_tools.cjs +9 -10
- package/dist/agents/format_scratchpad/openai_tools.js +1 -2
- package/dist/agents/format_scratchpad/tool_calling.cjs +2 -3
- package/dist/agents/format_scratchpad/tool_calling.cjs.map +1 -1
- package/dist/agents/format_scratchpad/tool_calling.js +1 -2
- package/dist/agents/format_scratchpad/tool_calling.js.map +1 -1
- package/dist/agents/format_scratchpad/xml.cjs +8 -10
- package/dist/agents/format_scratchpad/xml.cjs.map +1 -1
- package/dist/agents/format_scratchpad/xml.js +1 -2
- package/dist/agents/format_scratchpad/xml.js.map +1 -1
- package/dist/agents/helpers.cjs +2 -3
- package/dist/agents/helpers.cjs.map +1 -1
- package/dist/agents/helpers.js +1 -2
- package/dist/agents/helpers.js.map +1 -1
- package/dist/agents/index.cjs +35 -36
- package/dist/agents/index.d.ts +0 -1
- package/dist/agents/index.js +1 -2
- package/dist/agents/initialize.cjs +9 -10
- package/dist/agents/initialize.cjs.map +1 -1
- package/dist/agents/initialize.js +1 -2
- package/dist/agents/initialize.js.map +1 -1
- package/dist/agents/load.cjs +12 -13
- package/dist/agents/load.cjs.map +1 -1
- package/dist/agents/load.js +1 -2
- package/dist/agents/load.js.map +1 -1
- package/dist/agents/mrkl/index.cjs +7 -8
- package/dist/agents/mrkl/index.cjs.map +1 -1
- package/dist/agents/mrkl/index.js +1 -2
- package/dist/agents/mrkl/index.js.map +1 -1
- package/dist/agents/mrkl/outputParser.cjs +5 -8
- package/dist/agents/mrkl/outputParser.cjs.map +1 -1
- package/dist/agents/mrkl/outputParser.d.cts +1 -1
- package/dist/agents/mrkl/outputParser.js +2 -5
- package/dist/agents/mrkl/outputParser.js.map +1 -1
- package/dist/agents/mrkl/prompt.cjs +1 -2
- package/dist/agents/mrkl/prompt.cjs.map +1 -1
- package/dist/agents/mrkl/prompt.js +1 -1
- package/dist/agents/openai/output_parser.cjs +10 -11
- package/dist/agents/openai/output_parser.js +1 -2
- package/dist/agents/openai_functions/index.cjs +8 -9
- package/dist/agents/openai_functions/index.cjs.map +1 -1
- package/dist/agents/openai_functions/index.d.ts +0 -1
- package/dist/agents/openai_functions/index.d.ts.map +1 -1
- package/dist/agents/openai_functions/index.js +1 -2
- package/dist/agents/openai_functions/index.js.map +1 -1
- package/dist/agents/openai_functions/output_parser.cjs +3 -4
- package/dist/agents/openai_functions/output_parser.cjs.map +1 -1
- package/dist/agents/openai_functions/output_parser.js +1 -2
- package/dist/agents/openai_functions/output_parser.js.map +1 -1
- package/dist/agents/openai_functions/prompt.cjs +1 -2
- package/dist/agents/openai_functions/prompt.cjs.map +1 -1
- package/dist/agents/openai_functions/prompt.js +1 -1
- package/dist/agents/openai_tools/index.cjs +6 -7
- package/dist/agents/openai_tools/index.cjs.map +1 -1
- package/dist/agents/openai_tools/index.js +1 -2
- package/dist/agents/openai_tools/index.js.map +1 -1
- package/dist/agents/openai_tools/output_parser.cjs +3 -4
- package/dist/agents/openai_tools/output_parser.cjs.map +1 -1
- package/dist/agents/openai_tools/output_parser.js +1 -2
- package/dist/agents/openai_tools/output_parser.js.map +1 -1
- package/dist/agents/react/index.cjs +6 -7
- package/dist/agents/react/index.cjs.map +1 -1
- package/dist/agents/react/index.js +1 -2
- package/dist/agents/react/index.js.map +1 -1
- package/dist/agents/react/output_parser.cjs +10 -11
- package/dist/agents/react/output_parser.cjs.map +1 -1
- package/dist/agents/react/output_parser.js +1 -2
- package/dist/agents/react/output_parser.js.map +1 -1
- package/dist/agents/react/prompt.cjs +1 -2
- package/dist/agents/react/prompt.cjs.map +1 -1
- package/dist/agents/react/prompt.js +1 -1
- package/dist/agents/structured_chat/index.cjs +8 -9
- package/dist/agents/structured_chat/index.cjs.map +1 -1
- package/dist/agents/structured_chat/index.js +1 -2
- package/dist/agents/structured_chat/index.js.map +1 -1
- package/dist/agents/structured_chat/outputParser.cjs +5 -6
- package/dist/agents/structured_chat/outputParser.cjs.map +1 -1
- package/dist/agents/structured_chat/outputParser.js +1 -2
- package/dist/agents/structured_chat/outputParser.js.map +1 -1
- package/dist/agents/structured_chat/prompt.cjs +1 -2
- package/dist/agents/structured_chat/prompt.cjs.map +1 -1
- package/dist/agents/structured_chat/prompt.js +1 -1
- package/dist/agents/tool_calling/index.cjs +5 -6
- package/dist/agents/tool_calling/index.cjs.map +1 -1
- package/dist/agents/tool_calling/index.js +1 -2
- package/dist/agents/tool_calling/index.js.map +1 -1
- package/dist/agents/tool_calling/output_parser.cjs +3 -4
- package/dist/agents/tool_calling/output_parser.cjs.map +1 -1
- package/dist/agents/tool_calling/output_parser.d.ts +0 -1
- package/dist/agents/tool_calling/output_parser.d.ts.map +1 -1
- package/dist/agents/tool_calling/output_parser.js +1 -2
- package/dist/agents/tool_calling/output_parser.js.map +1 -1
- package/dist/agents/toolkits/base.cjs +2 -2
- package/dist/agents/toolkits/base.js +1 -2
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.cjs +4 -5
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.js +1 -2
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.js.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.cjs +4 -5
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.js +1 -2
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.js.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.cjs +3 -4
- package/dist/agents/toolkits/conversational_retrieval/tool.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.js +1 -2
- package/dist/agents/toolkits/conversational_retrieval/tool.js.map +1 -1
- package/dist/agents/toolkits/index.cjs +14 -15
- package/dist/agents/toolkits/index.js +1 -2
- package/dist/agents/toolkits/json/json.cjs +7 -8
- package/dist/agents/toolkits/json/json.cjs.map +1 -1
- package/dist/agents/toolkits/json/json.js +1 -2
- package/dist/agents/toolkits/json/json.js.map +1 -1
- package/dist/agents/toolkits/json/prompt.cjs +1 -2
- package/dist/agents/toolkits/json/prompt.cjs.map +1 -1
- package/dist/agents/toolkits/json/prompt.js +1 -1
- package/dist/agents/toolkits/openapi/openapi.cjs +8 -9
- package/dist/agents/toolkits/openapi/openapi.cjs.map +1 -1
- package/dist/agents/toolkits/openapi/openapi.js +1 -2
- package/dist/agents/toolkits/openapi/openapi.js.map +1 -1
- package/dist/agents/toolkits/openapi/prompt.cjs +1 -2
- package/dist/agents/toolkits/openapi/prompt.cjs.map +1 -1
- package/dist/agents/toolkits/openapi/prompt.js +1 -1
- package/dist/agents/toolkits/sql/index.cjs +10 -11
- package/dist/agents/toolkits/sql/index.js +1 -2
- package/dist/agents/toolkits/sql/prompt.cjs +1 -2
- package/dist/agents/toolkits/sql/prompt.cjs.map +1 -1
- package/dist/agents/toolkits/sql/prompt.js +1 -1
- package/dist/agents/toolkits/sql/sql.cjs +7 -8
- package/dist/agents/toolkits/sql/sql.cjs.map +1 -1
- package/dist/agents/toolkits/sql/sql.js +1 -2
- package/dist/agents/toolkits/sql/sql.js.map +1 -1
- package/dist/agents/toolkits/vectorstore/prompt.cjs +1 -2
- package/dist/agents/toolkits/vectorstore/prompt.cjs.map +1 -1
- package/dist/agents/toolkits/vectorstore/prompt.js +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.cjs +8 -9
- package/dist/agents/toolkits/vectorstore/vectorstore.cjs.map +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.js +1 -2
- package/dist/agents/toolkits/vectorstore/vectorstore.js.map +1 -1
- package/dist/agents/types.cjs +2 -3
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.js +1 -2
- package/dist/agents/types.js.map +1 -1
- package/dist/agents/xml/index.cjs +8 -9
- package/dist/agents/xml/index.cjs.map +1 -1
- package/dist/agents/xml/index.js +1 -2
- package/dist/agents/xml/index.js.map +1 -1
- package/dist/agents/xml/output_parser.cjs +9 -10
- package/dist/agents/xml/output_parser.cjs.map +1 -1
- package/dist/agents/xml/output_parser.js +1 -2
- package/dist/agents/xml/output_parser.js.map +1 -1
- package/dist/agents/xml/prompt.cjs +1 -2
- package/dist/agents/xml/prompt.cjs.map +1 -1
- package/dist/agents/xml/prompt.js +1 -1
- package/dist/cache/file_system.cjs +8 -9
- package/dist/cache/file_system.cjs.map +1 -1
- package/dist/cache/file_system.js +1 -2
- package/dist/cache/file_system.js.map +1 -1
- package/dist/callbacks/handlers/console.cjs +13 -13
- package/dist/callbacks/handlers/console.d.cts +0 -1
- package/dist/callbacks/handlers/console.d.ts +0 -1
- package/dist/callbacks/handlers/console.js +2 -4
- package/dist/callbacks/handlers/run_collector.cjs +13 -13
- package/dist/callbacks/handlers/run_collector.d.cts +0 -1
- package/dist/callbacks/handlers/run_collector.d.ts +0 -1
- package/dist/callbacks/handlers/run_collector.js +2 -4
- package/dist/callbacks/handlers/tracer.cjs +13 -13
- package/dist/callbacks/handlers/tracer.d.cts +0 -1
- package/dist/callbacks/handlers/tracer.d.ts +0 -1
- package/dist/callbacks/handlers/tracer.js +2 -4
- package/dist/callbacks/handlers/tracer_langchain.cjs +13 -13
- package/dist/callbacks/handlers/tracer_langchain.d.cts +0 -1
- package/dist/callbacks/handlers/tracer_langchain.d.ts +0 -1
- package/dist/callbacks/handlers/tracer_langchain.js +2 -4
- package/dist/callbacks/index.cjs +49 -50
- package/dist/callbacks/index.js +1 -2
- package/dist/callbacks/promises.cjs +13 -13
- package/dist/callbacks/promises.d.cts +0 -1
- package/dist/callbacks/promises.d.ts +0 -1
- package/dist/callbacks/promises.js +2 -4
- package/dist/chains/analyze_documents_chain.cjs +3 -4
- package/dist/chains/analyze_documents_chain.cjs.map +1 -1
- package/dist/chains/analyze_documents_chain.js +1 -2
- package/dist/chains/analyze_documents_chain.js.map +1 -1
- package/dist/chains/api/api_chain.cjs +4 -5
- package/dist/chains/api/api_chain.cjs.map +1 -1
- package/dist/chains/api/api_chain.js +1 -2
- package/dist/chains/api/api_chain.js.map +1 -1
- package/dist/chains/api/prompts.cjs +2 -3
- package/dist/chains/api/prompts.cjs.map +1 -1
- package/dist/chains/api/prompts.js +10 -12
- package/dist/chains/api/prompts.js.map +1 -1
- package/dist/chains/base.cjs +2 -3
- package/dist/chains/base.cjs.map +1 -1
- package/dist/chains/base.js +1 -2
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/chat_vector_db_chain.cjs +5 -6
- package/dist/chains/chat_vector_db_chain.cjs.map +1 -1
- package/dist/chains/chat_vector_db_chain.js +1 -2
- package/dist/chains/chat_vector_db_chain.js.map +1 -1
- package/dist/chains/combine_docs_chain.cjs +4 -5
- package/dist/chains/combine_docs_chain.cjs.map +1 -1
- package/dist/chains/combine_docs_chain.js +1 -2
- package/dist/chains/combine_docs_chain.js.map +1 -1
- package/dist/chains/combine_documents/base.cjs +2 -5
- package/dist/chains/combine_documents/base.cjs.map +1 -1
- package/dist/chains/combine_documents/base.js +2 -4
- package/dist/chains/combine_documents/base.js.map +1 -1
- package/dist/chains/combine_documents/index.cjs +9 -10
- package/dist/chains/combine_documents/index.js +1 -2
- package/dist/chains/combine_documents/reduce.cjs +8 -10
- package/dist/chains/combine_documents/reduce.cjs.map +1 -1
- package/dist/chains/combine_documents/reduce.js +1 -2
- package/dist/chains/combine_documents/reduce.js.map +1 -1
- package/dist/chains/combine_documents/stuff.cjs +5 -6
- package/dist/chains/combine_documents/stuff.cjs.map +1 -1
- package/dist/chains/combine_documents/stuff.js +4 -5
- package/dist/chains/combine_documents/stuff.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.cjs +5 -6
- package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.js +1 -2
- package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.cjs +1 -2
- package/dist/chains/constitutional_ai/constitutional_principle.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.js +1 -1
- package/dist/chains/constitutional_ai/constitutional_prompts.cjs +5 -8
- package/dist/chains/constitutional_ai/constitutional_prompts.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_prompts.js +4 -7
- package/dist/chains/constitutional_ai/constitutional_prompts.js.map +1 -1
- package/dist/chains/conversation.cjs +4 -5
- package/dist/chains/conversation.cjs.map +1 -1
- package/dist/chains/conversation.js +1 -2
- package/dist/chains/conversation.js.map +1 -1
- package/dist/chains/conversational_retrieval_chain.cjs +5 -6
- package/dist/chains/conversational_retrieval_chain.cjs.map +1 -1
- package/dist/chains/conversational_retrieval_chain.js +1 -2
- package/dist/chains/conversational_retrieval_chain.js.map +1 -1
- package/dist/chains/graph_qa/cypher.cjs +12 -13
- package/dist/chains/graph_qa/cypher.cjs.map +1 -1
- package/dist/chains/graph_qa/cypher.js +1 -2
- package/dist/chains/graph_qa/cypher.js.map +1 -1
- package/dist/chains/graph_qa/prompts.cjs +8 -12
- package/dist/chains/graph_qa/prompts.cjs.map +1 -1
- package/dist/chains/graph_qa/prompts.js +7 -11
- package/dist/chains/graph_qa/prompts.js.map +1 -1
- package/dist/chains/history_aware_retriever.cjs +8 -9
- package/dist/chains/history_aware_retriever.cjs.map +1 -1
- package/dist/chains/history_aware_retriever.js +1 -2
- package/dist/chains/history_aware_retriever.js.map +1 -1
- package/dist/chains/index.cjs +32 -33
- package/dist/chains/index.js +1 -2
- package/dist/chains/llm_chain.cjs +4 -5
- package/dist/chains/llm_chain.cjs.map +1 -1
- package/dist/chains/llm_chain.js +1 -2
- package/dist/chains/llm_chain.js.map +1 -1
- package/dist/chains/load.cjs +12 -13
- package/dist/chains/load.cjs.map +1 -1
- package/dist/chains/load.js +1 -2
- package/dist/chains/load.js.map +1 -1
- package/dist/chains/openai_functions/base.cjs +3 -4
- package/dist/chains/openai_functions/base.cjs.map +1 -1
- package/dist/chains/openai_functions/base.js +1 -2
- package/dist/chains/openai_functions/base.js.map +1 -1
- package/dist/chains/openai_functions/extraction.cjs +4 -5
- package/dist/chains/openai_functions/extraction.cjs.map +1 -1
- package/dist/chains/openai_functions/extraction.js +1 -2
- package/dist/chains/openai_functions/extraction.js.map +1 -1
- package/dist/chains/openai_functions/index.cjs +12 -13
- package/dist/chains/openai_functions/index.js +1 -2
- package/dist/chains/openai_functions/openapi.cjs +7 -8
- package/dist/chains/openai_functions/openapi.cjs.map +1 -1
- package/dist/chains/openai_functions/openapi.js +1 -2
- package/dist/chains/openai_functions/openapi.js.map +1 -1
- package/dist/chains/openai_functions/tagging.cjs +4 -5
- package/dist/chains/openai_functions/tagging.cjs.map +1 -1
- package/dist/chains/openai_functions/tagging.js +1 -2
- package/dist/chains/openai_functions/tagging.js.map +1 -1
- package/dist/chains/openai_moderation.cjs +3 -4
- package/dist/chains/openai_moderation.cjs.map +1 -1
- package/dist/chains/openai_moderation.js +1 -2
- package/dist/chains/openai_moderation.js.map +1 -1
- package/dist/chains/query_constructor/index.cjs +11 -12
- package/dist/chains/query_constructor/index.cjs.map +1 -1
- package/dist/chains/query_constructor/index.js +1 -2
- package/dist/chains/query_constructor/index.js.map +1 -1
- package/dist/chains/query_constructor/ir.cjs +14 -14
- package/dist/chains/query_constructor/ir.js +2 -4
- package/dist/chains/query_constructor/parser.cjs +3 -4
- package/dist/chains/query_constructor/parser.cjs.map +1 -1
- package/dist/chains/query_constructor/parser.js +1 -2
- package/dist/chains/query_constructor/parser.js.map +1 -1
- package/dist/chains/query_constructor/prompt.cjs +23 -27
- package/dist/chains/query_constructor/prompt.cjs.map +1 -1
- package/dist/chains/query_constructor/prompt.js +22 -26
- package/dist/chains/query_constructor/prompt.js.map +1 -1
- package/dist/chains/question_answering/load.cjs +6 -7
- package/dist/chains/question_answering/load.cjs.map +1 -1
- package/dist/chains/question_answering/load.js +1 -2
- package/dist/chains/question_answering/load.js.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.cjs +6 -10
- package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.js +7 -13
- package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
- package/dist/chains/question_answering/refine_prompts.cjs +14 -18
- package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/refine_prompts.js +15 -21
- package/dist/chains/question_answering/refine_prompts.js.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.cjs +2 -3
- package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.js +2 -4
- package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
- package/dist/chains/retrieval.cjs +8 -9
- package/dist/chains/retrieval.cjs.map +1 -1
- package/dist/chains/retrieval.js +1 -2
- package/dist/chains/retrieval.js.map +1 -1
- package/dist/chains/retrieval_qa.cjs +3 -4
- package/dist/chains/retrieval_qa.cjs.map +1 -1
- package/dist/chains/retrieval_qa.js +1 -2
- package/dist/chains/retrieval_qa.js.map +1 -1
- package/dist/chains/router/llm_router.cjs +3 -4
- package/dist/chains/router/llm_router.cjs.map +1 -1
- package/dist/chains/router/llm_router.js +1 -2
- package/dist/chains/router/llm_router.js.map +1 -1
- package/dist/chains/router/multi_prompt.cjs +9 -10
- package/dist/chains/router/multi_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_prompt.js +1 -2
- package/dist/chains/router/multi_prompt.js.map +1 -1
- package/dist/chains/router/multi_prompt_prompt.cjs +1 -2
- package/dist/chains/router/multi_prompt_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_prompt_prompt.js +1 -1
- package/dist/chains/router/multi_retrieval_prompt.cjs +1 -2
- package/dist/chains/router/multi_retrieval_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_retrieval_prompt.js +1 -1
- package/dist/chains/router/multi_retrieval_qa.cjs +9 -10
- package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.js +1 -2
- package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
- package/dist/chains/router/multi_route.cjs +2 -3
- package/dist/chains/router/multi_route.cjs.map +1 -1
- package/dist/chains/router/multi_route.js +1 -2
- package/dist/chains/router/multi_route.js.map +1 -1
- package/dist/chains/router/utils.cjs +1 -2
- package/dist/chains/router/utils.cjs.map +1 -1
- package/dist/chains/router/utils.js +1 -1
- package/dist/chains/sequential_chain.cjs +3 -4
- package/dist/chains/sequential_chain.cjs.map +1 -1
- package/dist/chains/sequential_chain.js +1 -2
- package/dist/chains/sequential_chain.js.map +1 -1
- package/dist/chains/sql_db/index.cjs +10 -11
- package/dist/chains/sql_db/index.js +1 -2
- package/dist/chains/sql_db/sql_db_chain.cjs +6 -7
- package/dist/chains/sql_db/sql_db_chain.cjs.map +1 -1
- package/dist/chains/sql_db/sql_db_chain.js +1 -2
- package/dist/chains/sql_db/sql_db_chain.js.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.cjs +2 -3
- package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.js +1 -2
- package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
- package/dist/chains/summarization/load.cjs +5 -6
- package/dist/chains/summarization/load.cjs.map +1 -1
- package/dist/chains/summarization/load.js +1 -2
- package/dist/chains/summarization/load.js.map +1 -1
- package/dist/chains/summarization/refine_prompts.cjs +5 -9
- package/dist/chains/summarization/refine_prompts.cjs.map +1 -1
- package/dist/chains/summarization/refine_prompts.js +4 -7
- package/dist/chains/summarization/refine_prompts.js.map +1 -1
- package/dist/chains/summarization/stuff_prompts.cjs +5 -9
- package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
- package/dist/chains/summarization/stuff_prompts.js +4 -7
- package/dist/chains/summarization/stuff_prompts.js.map +1 -1
- package/dist/chains/transform.cjs +2 -3
- package/dist/chains/transform.cjs.map +1 -1
- package/dist/chains/transform.js +1 -2
- package/dist/chains/transform.js.map +1 -1
- package/dist/chains/vector_db_qa.cjs +3 -4
- package/dist/chains/vector_db_qa.cjs.map +1 -1
- package/dist/chains/vector_db_qa.js +1 -2
- package/dist/chains/vector_db_qa.js.map +1 -1
- package/dist/chat_models/universal.cjs +8 -9
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.js +1 -2
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/document.cjs +13 -14
- package/dist/document.js +1 -2
- package/dist/document_loaders/base.cjs +14 -14
- package/dist/document_loaders/base.js +2 -4
- package/dist/document_loaders/fs/buffer.cjs +8 -9
- package/dist/document_loaders/fs/buffer.cjs.map +1 -1
- package/dist/document_loaders/fs/buffer.js +1 -2
- package/dist/document_loaders/fs/buffer.js.map +1 -1
- package/dist/document_loaders/fs/directory.cjs +8 -9
- package/dist/document_loaders/fs/directory.cjs.map +1 -1
- package/dist/document_loaders/fs/directory.js +1 -2
- package/dist/document_loaders/fs/directory.js.map +1 -1
- package/dist/document_loaders/fs/json.cjs +9 -10
- package/dist/document_loaders/fs/json.cjs.map +1 -1
- package/dist/document_loaders/fs/json.js +1 -2
- package/dist/document_loaders/fs/json.js.map +1 -1
- package/dist/document_loaders/fs/multi_file.cjs +9 -10
- package/dist/document_loaders/fs/multi_file.cjs.map +1 -1
- package/dist/document_loaders/fs/multi_file.js +1 -2
- package/dist/document_loaders/fs/multi_file.js.map +1 -1
- package/dist/document_loaders/fs/text.cjs +8 -9
- package/dist/document_loaders/fs/text.cjs.map +1 -1
- package/dist/document_loaders/fs/text.js +1 -2
- package/dist/document_loaders/fs/text.js.map +1 -1
- package/dist/document_transformers/openai_functions.cjs +10 -11
- package/dist/document_transformers/openai_functions.cjs.map +1 -1
- package/dist/document_transformers/openai_functions.d.ts +0 -1
- package/dist/document_transformers/openai_functions.d.ts.map +1 -1
- package/dist/document_transformers/openai_functions.js +1 -2
- package/dist/document_transformers/openai_functions.js.map +1 -1
- package/dist/embeddings/cache_backed.cjs +9 -10
- package/dist/embeddings/cache_backed.cjs.map +1 -1
- package/dist/embeddings/cache_backed.js +1 -2
- package/dist/embeddings/cache_backed.js.map +1 -1
- package/dist/embeddings/fake.cjs +14 -14
- package/dist/embeddings/fake.js +2 -4
- package/dist/evaluation/agents/index.cjs +1 -1
- package/dist/evaluation/agents/index.js +2 -3
- package/dist/evaluation/agents/prompt.cjs +8 -10
- package/dist/evaluation/agents/prompt.cjs.map +1 -1
- package/dist/evaluation/agents/prompt.js +7 -9
- package/dist/evaluation/agents/prompt.js.map +1 -1
- package/dist/evaluation/agents/trajectory.cjs +4 -5
- package/dist/evaluation/agents/trajectory.cjs.map +1 -1
- package/dist/evaluation/agents/trajectory.js +1 -2
- package/dist/evaluation/agents/trajectory.js.map +1 -1
- package/dist/evaluation/base.cjs +4 -5
- package/dist/evaluation/base.cjs.map +1 -1
- package/dist/evaluation/base.d.ts +0 -1
- package/dist/evaluation/base.d.ts.map +1 -1
- package/dist/evaluation/base.js +1 -2
- package/dist/evaluation/base.js.map +1 -1
- package/dist/evaluation/comparison/index.cjs +1 -1
- package/dist/evaluation/comparison/index.js +2 -3
- package/dist/evaluation/comparison/pairwise.cjs +6 -7
- package/dist/evaluation/comparison/pairwise.cjs.map +1 -1
- package/dist/evaluation/comparison/pairwise.js +1 -2
- package/dist/evaluation/comparison/pairwise.js.map +1 -1
- package/dist/evaluation/comparison/prompt.cjs +16 -27
- package/dist/evaluation/comparison/prompt.cjs.map +1 -1
- package/dist/evaluation/comparison/prompt.js +15 -26
- package/dist/evaluation/comparison/prompt.js.map +1 -1
- package/dist/evaluation/criteria/criteria.cjs +5 -6
- package/dist/evaluation/criteria/criteria.cjs.map +1 -1
- package/dist/evaluation/criteria/criteria.js +1 -2
- package/dist/evaluation/criteria/criteria.js.map +1 -1
- package/dist/evaluation/criteria/index.cjs +1 -1
- package/dist/evaluation/criteria/index.js +2 -3
- package/dist/evaluation/criteria/prompt.cjs +16 -20
- package/dist/evaluation/criteria/prompt.cjs.map +1 -1
- package/dist/evaluation/criteria/prompt.js +15 -19
- package/dist/evaluation/criteria/prompt.js.map +1 -1
- package/dist/evaluation/embedding_distance/base.cjs +5 -6
- package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
- package/dist/evaluation/embedding_distance/base.js +1 -2
- package/dist/evaluation/embedding_distance/base.js.map +1 -1
- package/dist/evaluation/embedding_distance/index.cjs +1 -1
- package/dist/evaluation/embedding_distance/index.js +2 -3
- package/dist/evaluation/index.cjs +19 -20
- package/dist/evaluation/index.d.ts +0 -5
- package/dist/evaluation/index.js +1 -2
- package/dist/evaluation/loader.cjs +10 -11
- package/dist/evaluation/loader.cjs.map +1 -1
- package/dist/evaluation/loader.d.ts +0 -2
- package/dist/evaluation/loader.d.ts.map +1 -1
- package/dist/evaluation/loader.js +1 -2
- package/dist/evaluation/loader.js.map +1 -1
- package/dist/evaluation/qa/eval_chain.cjs +3 -4
- package/dist/evaluation/qa/eval_chain.cjs.map +1 -1
- package/dist/evaluation/qa/eval_chain.js +1 -2
- package/dist/evaluation/qa/eval_chain.js.map +1 -1
- package/dist/evaluation/qa/index.cjs +1 -1
- package/dist/evaluation/qa/index.js +2 -3
- package/dist/evaluation/qa/prompt.cjs +10 -14
- package/dist/evaluation/qa/prompt.cjs.map +1 -1
- package/dist/evaluation/qa/prompt.js +9 -12
- package/dist/evaluation/qa/prompt.js.map +1 -1
- package/dist/experimental/autogpt/agent.cjs +8 -9
- package/dist/experimental/autogpt/agent.cjs.map +1 -1
- package/dist/experimental/autogpt/agent.js +3 -4
- package/dist/experimental/autogpt/agent.js.map +1 -1
- package/dist/experimental/autogpt/index.cjs +11 -12
- package/dist/experimental/autogpt/index.js +1 -2
- package/dist/experimental/autogpt/output_parser.cjs +2 -3
- package/dist/experimental/autogpt/output_parser.cjs.map +1 -1
- package/dist/experimental/autogpt/output_parser.js +1 -2
- package/dist/experimental/autogpt/output_parser.js.map +1 -1
- package/dist/experimental/autogpt/prompt.cjs +3 -4
- package/dist/experimental/autogpt/prompt.cjs.map +1 -1
- package/dist/experimental/autogpt/prompt.js +1 -2
- package/dist/experimental/autogpt/prompt.js.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.cjs +3 -4
- package/dist/experimental/autogpt/prompt_generator.cjs.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.js +1 -2
- package/dist/experimental/autogpt/prompt_generator.js.map +1 -1
- package/dist/experimental/autogpt/schema.cjs +1 -2
- package/dist/experimental/autogpt/schema.cjs.map +1 -1
- package/dist/experimental/autogpt/schema.js +1 -1
- package/dist/experimental/babyagi/agent.cjs +6 -7
- package/dist/experimental/babyagi/agent.cjs.map +1 -1
- package/dist/experimental/babyagi/agent.js +1 -2
- package/dist/experimental/babyagi/agent.js.map +1 -1
- package/dist/experimental/babyagi/index.cjs +12 -13
- package/dist/experimental/babyagi/index.js +1 -2
- package/dist/experimental/babyagi/task_creation.cjs +3 -4
- package/dist/experimental/babyagi/task_creation.cjs.map +1 -1
- package/dist/experimental/babyagi/task_creation.js +1 -2
- package/dist/experimental/babyagi/task_creation.js.map +1 -1
- package/dist/experimental/babyagi/task_execution.cjs +3 -4
- package/dist/experimental/babyagi/task_execution.cjs.map +1 -1
- package/dist/experimental/babyagi/task_execution.js +1 -2
- package/dist/experimental/babyagi/task_execution.js.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.cjs +3 -4
- package/dist/experimental/babyagi/task_prioritization.cjs.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.js +1 -2
- package/dist/experimental/babyagi/task_prioritization.js.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/index.cjs +9 -10
- package/dist/experimental/chains/violation_of_expectations/index.js +1 -2
- package/dist/experimental/chains/violation_of_expectations/types.cjs +1 -2
- package/dist/experimental/chains/violation_of_expectations/types.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/types.js +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.cjs +6 -7
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.js +1 -2
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.js.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.cjs +2 -3
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.js +1 -2
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.js.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.cjs +4 -5
- package/dist/experimental/generative_agents/generative_agent.cjs.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.js +1 -2
- package/dist/experimental/generative_agents/generative_agent.js.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.cjs +4 -5
- package/dist/experimental/generative_agents/generative_agent_memory.cjs.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.js +1 -2
- package/dist/experimental/generative_agents/generative_agent_memory.js.map +1 -1
- package/dist/experimental/generative_agents/index.cjs +10 -11
- package/dist/experimental/generative_agents/index.js +1 -2
- package/dist/experimental/masking/index.cjs +11 -12
- package/dist/experimental/masking/index.js +1 -2
- package/dist/experimental/masking/parser.cjs +1 -2
- package/dist/experimental/masking/parser.cjs.map +1 -1
- package/dist/experimental/masking/parser.js +1 -1
- package/dist/experimental/masking/parser.js.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.cjs +2 -3
- package/dist/experimental/masking/regex_masking_transformer.cjs.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.js +1 -2
- package/dist/experimental/masking/regex_masking_transformer.js.map +1 -1
- package/dist/experimental/masking/transformer.cjs +1 -2
- package/dist/experimental/masking/transformer.cjs.map +1 -1
- package/dist/experimental/masking/transformer.js +1 -1
- package/dist/experimental/openai_assistant/index.cjs +9 -10
- package/dist/experimental/openai_assistant/index.cjs.map +1 -1
- package/dist/experimental/openai_assistant/index.js +1 -2
- package/dist/experimental/openai_assistant/index.js.map +1 -1
- package/dist/experimental/openai_files/index.cjs +8 -9
- package/dist/experimental/openai_files/index.cjs.map +1 -1
- package/dist/experimental/openai_files/index.js +1 -2
- package/dist/experimental/openai_files/index.js.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.cjs +10 -11
- package/dist/experimental/plan_and_execute/agent_executor.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.js +1 -2
- package/dist/experimental/plan_and_execute/agent_executor.js.map +1 -1
- package/dist/experimental/plan_and_execute/base.cjs +1 -2
- package/dist/experimental/plan_and_execute/base.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/base.js +1 -1
- package/dist/experimental/plan_and_execute/base.js.map +1 -1
- package/dist/experimental/plan_and_execute/index.cjs +11 -12
- package/dist/experimental/plan_and_execute/index.js +1 -2
- package/dist/experimental/plan_and_execute/outputParser.cjs +3 -4
- package/dist/experimental/plan_and_execute/outputParser.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/outputParser.js +1 -2
- package/dist/experimental/plan_and_execute/outputParser.js.map +1 -1
- package/dist/experimental/plan_and_execute/prompt.cjs +2 -3
- package/dist/experimental/plan_and_execute/prompt.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/prompt.js +1 -2
- package/dist/experimental/plan_and_execute/prompt.js.map +1 -1
- package/dist/experimental/prompts/custom_format.cjs +8 -9
- package/dist/experimental/prompts/custom_format.cjs.map +1 -1
- package/dist/experimental/prompts/custom_format.js +1 -2
- package/dist/experimental/prompts/custom_format.js.map +1 -1
- package/dist/experimental/prompts/handlebars.cjs +9 -10
- package/dist/experimental/prompts/handlebars.cjs.map +1 -1
- package/dist/experimental/prompts/handlebars.js +1 -2
- package/dist/experimental/prompts/handlebars.js.map +1 -1
- package/dist/hub/base.cjs +1 -2
- package/dist/hub/base.cjs.map +1 -1
- package/dist/hub/base.js +1 -1
- package/dist/hub/base.js.map +1 -1
- package/dist/hub/index.cjs +4 -5
- package/dist/hub/index.cjs.map +1 -1
- package/dist/hub/index.js +1 -2
- package/dist/hub/index.js.map +1 -1
- package/dist/hub/node.cjs +5 -6
- package/dist/hub/node.cjs.map +1 -1
- package/dist/hub/node.js +1 -2
- package/dist/hub/node.js.map +1 -1
- package/dist/index.cjs +8 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +8 -9
- package/dist/indexes/index.js +1 -2
- package/dist/load/import_constants.cjs +1 -2
- package/dist/load/import_constants.cjs.map +1 -1
- package/dist/load/import_constants.js +1 -1
- package/dist/load/import_map.cjs +98 -99
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +1 -2
- package/dist/load/import_map.js.map +1 -1
- package/dist/load/index.cjs +5 -6
- package/dist/load/index.cjs.map +1 -1
- package/dist/load/index.js +1 -2
- package/dist/load/index.js.map +1 -1
- package/dist/load/serializable.cjs +14 -14
- package/dist/load/serializable.js +2 -4
- package/dist/memory/buffer_memory.cjs +3 -4
- package/dist/memory/buffer_memory.cjs.map +1 -1
- package/dist/memory/buffer_memory.js +1 -2
- package/dist/memory/buffer_memory.js.map +1 -1
- package/dist/memory/buffer_token_memory.cjs +3 -4
- package/dist/memory/buffer_token_memory.cjs.map +1 -1
- package/dist/memory/buffer_token_memory.js +1 -2
- package/dist/memory/buffer_token_memory.js.map +1 -1
- package/dist/memory/buffer_window_memory.cjs +3 -4
- package/dist/memory/buffer_window_memory.cjs.map +1 -1
- package/dist/memory/buffer_window_memory.js +1 -2
- package/dist/memory/buffer_window_memory.js.map +1 -1
- package/dist/memory/chat_memory.cjs +8 -9
- package/dist/memory/chat_memory.cjs.map +1 -1
- package/dist/memory/chat_memory.js +1 -2
- package/dist/memory/chat_memory.js.map +1 -1
- package/dist/memory/combined_memory.cjs +2 -3
- package/dist/memory/combined_memory.cjs.map +1 -1
- package/dist/memory/combined_memory.js +1 -2
- package/dist/memory/combined_memory.js.map +1 -1
- package/dist/memory/entity_memory.cjs +6 -7
- package/dist/memory/entity_memory.cjs.map +1 -1
- package/dist/memory/entity_memory.js +1 -2
- package/dist/memory/entity_memory.js.map +1 -1
- package/dist/memory/index.cjs +43 -44
- package/dist/memory/index.js +1 -2
- package/dist/memory/prompt.cjs +27 -33
- package/dist/memory/prompt.cjs.map +1 -1
- package/dist/memory/prompt.js +26 -32
- package/dist/memory/prompt.js.map +1 -1
- package/dist/memory/stores/entity/base.cjs +2 -3
- package/dist/memory/stores/entity/base.cjs.map +1 -1
- package/dist/memory/stores/entity/base.js +1 -2
- package/dist/memory/stores/entity/base.js.map +1 -1
- package/dist/memory/stores/entity/in_memory.cjs +2 -3
- package/dist/memory/stores/entity/in_memory.cjs.map +1 -1
- package/dist/memory/stores/entity/in_memory.js +1 -2
- package/dist/memory/stores/entity/in_memory.js.map +1 -1
- package/dist/memory/summary.cjs +5 -6
- package/dist/memory/summary.cjs.map +1 -1
- package/dist/memory/summary.js +1 -2
- package/dist/memory/summary.js.map +1 -1
- package/dist/memory/summary_buffer.cjs +3 -4
- package/dist/memory/summary_buffer.cjs.map +1 -1
- package/dist/memory/summary_buffer.js +1 -2
- package/dist/memory/summary_buffer.js.map +1 -1
- package/dist/memory/vector_store.cjs +3 -4
- package/dist/memory/vector_store.cjs.map +1 -1
- package/dist/memory/vector_store.js +1 -2
- package/dist/memory/vector_store.js.map +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/_runner.d.cts +1 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/_runner.d.ts +1 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluate_comparative.d.cts +1 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/evaluate_comparative.d.ts +1 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/index.d.cts +1 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/index.d.ts +1 -4
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/string_evaluator.d.cts +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/evaluation/string_evaluator.d.ts +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.cts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.ts +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/singletons/traceable.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.cts +0 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.ts +0 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/async_caller.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/p-queue.d.cts +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/dist/utils/p-queue.d.ts +1 -1
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/evaluation.d.cts +1 -2
- package/dist/node_modules/.pnpm/langsmith@0.5.9_@opentelemetry_api@1.9.0_openai@6.22.0_ws@8.19.0_bufferutil@4.1.0__zod@4.3.6_/node_modules/langsmith/evaluation.d.ts +1 -2
- package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.d.cts +1 -1
- package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.d.ts +1 -1
- package/dist/output_parsers/combining.cjs +2 -3
- package/dist/output_parsers/combining.cjs.map +1 -1
- package/dist/output_parsers/combining.js +1 -2
- package/dist/output_parsers/combining.js.map +1 -1
- package/dist/output_parsers/datetime.cjs +2 -3
- package/dist/output_parsers/datetime.cjs.map +1 -1
- package/dist/output_parsers/datetime.js +1 -2
- package/dist/output_parsers/datetime.js.map +1 -1
- package/dist/output_parsers/expression.cjs +10 -11
- package/dist/output_parsers/expression.cjs.map +1 -1
- package/dist/output_parsers/expression.js +1 -2
- package/dist/output_parsers/expression.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.js +1 -2
- package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.cjs +11 -12
- package/dist/output_parsers/expression_type_handlers/factory.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.js +1 -2
- package/dist/output_parsers/expression_type_handlers/factory.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.cjs +1 -2
- package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.js +1 -1
- package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/identifier_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/identifier_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs +3 -4
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs +2 -3
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.js +1 -2
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.js.map +1 -1
- package/dist/output_parsers/fix.cjs +4 -5
- package/dist/output_parsers/fix.cjs.map +1 -1
- package/dist/output_parsers/fix.js +1 -2
- package/dist/output_parsers/fix.js.map +1 -1
- package/dist/output_parsers/http_response.cjs +2 -3
- package/dist/output_parsers/http_response.cjs.map +1 -1
- package/dist/output_parsers/http_response.js +1 -2
- package/dist/output_parsers/http_response.js.map +1 -1
- package/dist/output_parsers/index.cjs +32 -33
- package/dist/output_parsers/index.js +1 -2
- package/dist/output_parsers/noop.cjs +2 -3
- package/dist/output_parsers/noop.cjs.map +1 -1
- package/dist/output_parsers/noop.js +1 -2
- package/dist/output_parsers/noop.js.map +1 -1
- package/dist/output_parsers/openai_functions.cjs +2 -3
- package/dist/output_parsers/openai_functions.cjs.map +1 -1
- package/dist/output_parsers/openai_functions.js +1 -2
- package/dist/output_parsers/openai_functions.js.map +1 -1
- package/dist/output_parsers/openai_tools.cjs +2 -3
- package/dist/output_parsers/openai_tools.cjs.map +1 -1
- package/dist/output_parsers/openai_tools.js +1 -2
- package/dist/output_parsers/openai_tools.js.map +1 -1
- package/dist/output_parsers/prompts.cjs +4 -8
- package/dist/output_parsers/prompts.cjs.map +1 -1
- package/dist/output_parsers/prompts.js +3 -6
- package/dist/output_parsers/prompts.js.map +1 -1
- package/dist/output_parsers/regex.cjs +2 -3
- package/dist/output_parsers/regex.cjs.map +1 -1
- package/dist/output_parsers/regex.js +1 -2
- package/dist/output_parsers/regex.js.map +1 -1
- package/dist/output_parsers/router.cjs +3 -4
- package/dist/output_parsers/router.cjs.map +1 -1
- package/dist/output_parsers/router.js +1 -2
- package/dist/output_parsers/router.js.map +1 -1
- package/dist/output_parsers/structured.cjs +2 -3
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.js +1 -2
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/retrievers/contextual_compression.cjs +8 -9
- package/dist/retrievers/contextual_compression.cjs.map +1 -1
- package/dist/retrievers/contextual_compression.js +1 -2
- package/dist/retrievers/contextual_compression.js.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.cjs +11 -12
- package/dist/retrievers/document_compressors/chain_extract.cjs.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.js +1 -2
- package/dist/retrievers/document_compressors/chain_extract.js.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract_prompt.cjs +1 -2
- package/dist/retrievers/document_compressors/chain_extract_prompt.cjs.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract_prompt.js +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.cjs +9 -10
- package/dist/retrievers/document_compressors/embeddings_filter.cjs.map +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.js +1 -2
- package/dist/retrievers/document_compressors/embeddings_filter.js.map +1 -1
- package/dist/retrievers/document_compressors/index.cjs +8 -10
- package/dist/retrievers/document_compressors/index.cjs.map +1 -1
- package/dist/retrievers/document_compressors/index.js +1 -2
- package/dist/retrievers/document_compressors/index.js.map +1 -1
- package/dist/retrievers/ensemble.cjs +8 -9
- package/dist/retrievers/ensemble.cjs.map +1 -1
- package/dist/retrievers/ensemble.js +1 -2
- package/dist/retrievers/ensemble.js.map +1 -1
- package/dist/retrievers/hyde.cjs +8 -9
- package/dist/retrievers/hyde.cjs.map +1 -1
- package/dist/retrievers/hyde.js +1 -2
- package/dist/retrievers/hyde.js.map +1 -1
- package/dist/retrievers/matryoshka_retriever.cjs +8 -9
- package/dist/retrievers/matryoshka_retriever.cjs.map +1 -1
- package/dist/retrievers/matryoshka_retriever.js +1 -2
- package/dist/retrievers/matryoshka_retriever.js.map +1 -1
- package/dist/retrievers/multi_query.cjs +9 -10
- package/dist/retrievers/multi_query.cjs.map +1 -1
- package/dist/retrievers/multi_query.js +1 -2
- package/dist/retrievers/multi_query.js.map +1 -1
- package/dist/retrievers/multi_vector.cjs +9 -10
- package/dist/retrievers/multi_vector.cjs.map +1 -1
- package/dist/retrievers/multi_vector.js +1 -2
- package/dist/retrievers/multi_vector.js.map +1 -1
- package/dist/retrievers/parent_document.cjs +9 -10
- package/dist/retrievers/parent_document.cjs.map +1 -1
- package/dist/retrievers/parent_document.js +1 -2
- package/dist/retrievers/parent_document.js.map +1 -1
- package/dist/retrievers/score_threshold.cjs +8 -9
- package/dist/retrievers/score_threshold.cjs.map +1 -1
- package/dist/retrievers/score_threshold.js +1 -2
- package/dist/retrievers/score_threshold.js.map +1 -1
- package/dist/retrievers/self_query/functional.cjs +13 -14
- package/dist/retrievers/self_query/functional.js +1 -2
- package/dist/retrievers/self_query/index.cjs +24 -25
- package/dist/retrievers/self_query/index.cjs.map +1 -1
- package/dist/retrievers/self_query/index.js +1 -2
- package/dist/retrievers/self_query/index.js.map +1 -1
- package/dist/retrievers/time_weighted.cjs +9 -10
- package/dist/retrievers/time_weighted.cjs.map +1 -1
- package/dist/retrievers/time_weighted.js +2 -3
- package/dist/retrievers/time_weighted.js.map +1 -1
- package/dist/schema/prompt_template.cjs +8 -10
- package/dist/schema/prompt_template.cjs.map +1 -1
- package/dist/schema/prompt_template.js +1 -2
- package/dist/schema/prompt_template.js.map +1 -1
- package/dist/schema/query_constructor.cjs +8 -10
- package/dist/schema/query_constructor.cjs.map +1 -1
- package/dist/schema/query_constructor.js +1 -2
- package/dist/schema/query_constructor.js.map +1 -1
- package/dist/smith/config.cjs +1 -2
- package/dist/smith/config.cjs.map +1 -1
- package/dist/smith/config.d.cts +0 -1
- package/dist/smith/config.d.cts.map +1 -1
- package/dist/smith/config.d.ts +0 -2
- package/dist/smith/config.d.ts.map +1 -1
- package/dist/smith/config.js +1 -1
- package/dist/smith/index.cjs +10 -11
- package/dist/smith/index.js +1 -2
- package/dist/smith/name_generation.cjs +1 -2
- package/dist/smith/name_generation.cjs.map +1 -1
- package/dist/smith/name_generation.js +1 -1
- package/dist/smith/progress.cjs +1 -2
- package/dist/smith/progress.cjs.map +1 -1
- package/dist/smith/progress.js +1 -1
- package/dist/smith/progress.js.map +1 -1
- package/dist/smith/runner_utils.cjs +6 -7
- package/dist/smith/runner_utils.cjs.map +1 -1
- package/dist/smith/runner_utils.d.cts +0 -1
- package/dist/smith/runner_utils.d.cts.map +1 -1
- package/dist/smith/runner_utils.d.ts +0 -1
- package/dist/smith/runner_utils.d.ts.map +1 -1
- package/dist/smith/runner_utils.js +1 -2
- package/dist/smith/runner_utils.js.map +1 -1
- package/dist/sql_db.cjs +9 -10
- package/dist/sql_db.cjs.map +1 -1
- package/dist/sql_db.js +1 -2
- package/dist/sql_db.js.map +1 -1
- package/dist/storage/encoder_backed.cjs +8 -9
- package/dist/storage/encoder_backed.cjs.map +1 -1
- package/dist/storage/encoder_backed.js +1 -2
- package/dist/storage/encoder_backed.js.map +1 -1
- package/dist/storage/file_system.cjs +8 -9
- package/dist/storage/file_system.cjs.map +1 -1
- package/dist/storage/file_system.js +1 -2
- package/dist/storage/file_system.js.map +1 -1
- package/dist/storage/in_memory.cjs +13 -14
- package/dist/storage/in_memory.js +1 -2
- package/dist/stores/doc/base.cjs +8 -10
- package/dist/stores/doc/base.cjs.map +1 -1
- package/dist/stores/doc/base.js +1 -2
- package/dist/stores/doc/base.js.map +1 -1
- package/dist/stores/doc/in_memory.cjs +9 -10
- package/dist/stores/doc/in_memory.cjs.map +1 -1
- package/dist/stores/doc/in_memory.js +1 -2
- package/dist/stores/doc/in_memory.js.map +1 -1
- package/dist/stores/file/base.cjs +2 -3
- package/dist/stores/file/base.cjs.map +1 -1
- package/dist/stores/file/base.js +1 -2
- package/dist/stores/file/base.js.map +1 -1
- package/dist/stores/file/in_memory.cjs +9 -10
- package/dist/stores/file/in_memory.cjs.map +1 -1
- package/dist/stores/file/in_memory.js +1 -2
- package/dist/stores/file/in_memory.js.map +1 -1
- package/dist/stores/file/node.cjs +9 -10
- package/dist/stores/file/node.cjs.map +1 -1
- package/dist/stores/file/node.js +1 -2
- package/dist/stores/file/node.js.map +1 -1
- package/dist/stores/message/in_memory.cjs +13 -14
- package/dist/stores/message/in_memory.js +1 -2
- package/dist/text_splitter.cjs +14 -14
- package/dist/text_splitter.d.cts +0 -1
- package/dist/text_splitter.d.ts +0 -1
- package/dist/text_splitter.js +2 -4
- package/dist/tools/chain.cjs +8 -9
- package/dist/tools/chain.cjs.map +1 -1
- package/dist/tools/chain.js +1 -2
- package/dist/tools/chain.js.map +1 -1
- package/dist/tools/fs.cjs +2 -3
- package/dist/tools/fs.cjs.map +1 -1
- package/dist/tools/fs.js +1 -2
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/index.cjs +33 -34
- package/dist/tools/index.js +1 -2
- package/dist/tools/json.cjs +2 -3
- package/dist/tools/json.cjs.map +1 -1
- package/dist/tools/json.js +1 -2
- package/dist/tools/json.js.map +1 -1
- package/dist/tools/render.cjs +8 -9
- package/dist/tools/render.cjs.map +1 -1
- package/dist/tools/render.js +1 -2
- package/dist/tools/render.js.map +1 -1
- package/dist/tools/requests.cjs +2 -3
- package/dist/tools/requests.cjs.map +1 -1
- package/dist/tools/requests.js +1 -2
- package/dist/tools/requests.js.map +1 -1
- package/dist/tools/retriever.cjs +9 -10
- package/dist/tools/retriever.cjs.map +1 -1
- package/dist/tools/retriever.js +1 -2
- package/dist/tools/retriever.js.map +1 -1
- package/dist/tools/sql.cjs +9 -10
- package/dist/tools/sql.cjs.map +1 -1
- package/dist/tools/sql.js +1 -2
- package/dist/tools/sql.js.map +1 -1
- package/dist/tools/vectorstore.cjs +3 -4
- package/dist/tools/vectorstore.cjs.map +1 -1
- package/dist/tools/vectorstore.js +1 -2
- package/dist/tools/vectorstore.js.map +1 -1
- package/dist/tools/webbrowser.cjs +10 -11
- package/dist/tools/webbrowser.cjs.map +1 -1
- package/dist/tools/webbrowser.js +1 -2
- package/dist/tools/webbrowser.js.map +1 -1
- package/dist/util/document.cjs +8 -10
- package/dist/util/document.cjs.map +1 -1
- package/dist/util/document.js +1 -2
- package/dist/util/document.js.map +1 -1
- package/dist/util/entrypoint_deprecation.cjs +1 -1
- package/dist/util/entrypoint_deprecation.js +1 -2
- package/dist/util/env.cjs +2 -2
- package/dist/util/env.js +1 -2
- package/dist/util/extname.cjs +1 -2
- package/dist/util/extname.cjs.map +1 -1
- package/dist/util/extname.js +1 -1
- package/dist/util/hub.cjs +4 -5
- package/dist/util/hub.cjs.map +1 -1
- package/dist/util/hub.js +1 -2
- package/dist/util/hub.js.map +1 -1
- package/dist/util/is-network-error/index.cjs +1 -2
- package/dist/util/is-network-error/index.cjs.map +1 -1
- package/dist/util/is-network-error/index.js +1 -1
- package/dist/util/is-network-error/index.js.map +1 -1
- package/dist/util/load.cjs +1 -2
- package/dist/util/load.cjs.map +1 -1
- package/dist/util/load.js +1 -1
- package/dist/util/math.cjs +14 -14
- package/dist/util/math.js +2 -4
- package/dist/util/ml-distance/distances.cjs +1 -2
- package/dist/util/ml-distance/distances.cjs.map +1 -1
- package/dist/util/ml-distance/distances.js +1 -1
- package/dist/util/ml-distance/similarities.cjs +1 -2
- package/dist/util/ml-distance/similarities.cjs.map +1 -1
- package/dist/util/ml-distance/similarities.js +1 -1
- package/dist/util/ml-distance-euclidean/euclidean.cjs +1 -2
- package/dist/util/ml-distance-euclidean/euclidean.cjs.map +1 -1
- package/dist/util/ml-distance-euclidean/euclidean.js +1 -1
- package/dist/util/openapi.cjs +2 -3
- package/dist/util/openapi.cjs.map +1 -1
- package/dist/util/openapi.js +1 -2
- package/dist/util/openapi.js.map +1 -1
- package/dist/util/p-retry/index.cjs +2 -3
- package/dist/util/p-retry/index.cjs.map +1 -1
- package/dist/util/p-retry/index.js +1 -2
- package/dist/util/p-retry/index.js.map +1 -1
- package/dist/util/parse.cjs +3 -4
- package/dist/util/parse.cjs.map +1 -1
- package/dist/util/parse.js +1 -2
- package/dist/util/parse.js.map +1 -1
- package/dist/util/set.cjs +1 -2
- package/dist/util/set.cjs.map +1 -1
- package/dist/util/set.js +1 -1
- package/dist/util/sql_utils.cjs +2 -3
- package/dist/util/sql_utils.cjs.map +1 -1
- package/dist/util/sql_utils.js +1 -2
- package/dist/util/sql_utils.js.map +1 -1
- package/dist/util/time.cjs +8 -10
- package/dist/util/time.cjs.map +1 -1
- package/dist/util/time.js +1 -2
- package/dist/util/time.js.map +1 -1
- package/dist/vectorstores/memory.cjs +9 -10
- package/dist/vectorstores/memory.cjs.map +1 -1
- package/dist/vectorstores/memory.js +1 -2
- package/dist/vectorstores/memory.js.map +1 -1
- package/package.json +21 -17
- package/agents/format_scratchpad/log.cjs +0 -1
- package/agents/format_scratchpad/log.d.cts +0 -1
- package/agents/format_scratchpad/log.d.ts +0 -1
- package/agents/format_scratchpad/log.js +0 -1
- package/agents/format_scratchpad/log_to_message.cjs +0 -1
- package/agents/format_scratchpad/log_to_message.d.cts +0 -1
- package/agents/format_scratchpad/log_to_message.d.ts +0 -1
- package/agents/format_scratchpad/log_to_message.js +0 -1
- package/agents/format_scratchpad/openai_functions.cjs +0 -1
- package/agents/format_scratchpad/openai_functions.d.cts +0 -1
- package/agents/format_scratchpad/openai_functions.d.ts +0 -1
- package/agents/format_scratchpad/openai_functions.js +0 -1
- package/agents/format_scratchpad/openai_tools.cjs +0 -1
- package/agents/format_scratchpad/openai_tools.d.cts +0 -1
- package/agents/format_scratchpad/openai_tools.d.ts +0 -1
- package/agents/format_scratchpad/openai_tools.js +0 -1
- package/agents/format_scratchpad/xml.cjs +0 -1
- package/agents/format_scratchpad/xml.d.cts +0 -1
- package/agents/format_scratchpad/xml.d.ts +0 -1
- package/agents/format_scratchpad/xml.js +0 -1
- package/agents/load.cjs +0 -1
- package/agents/load.d.cts +0 -1
- package/agents/load.d.ts +0 -1
- package/agents/load.js +0 -1
- package/agents/openai/output_parser.cjs +0 -1
- package/agents/openai/output_parser.d.cts +0 -1
- package/agents/openai/output_parser.d.ts +0 -1
- package/agents/openai/output_parser.js +0 -1
- package/agents/react/output_parser.cjs +0 -1
- package/agents/react/output_parser.d.cts +0 -1
- package/agents/react/output_parser.d.ts +0 -1
- package/agents/react/output_parser.js +0 -1
- package/agents/toolkits/sql.cjs +0 -1
- package/agents/toolkits/sql.d.cts +0 -1
- package/agents/toolkits/sql.d.ts +0 -1
- package/agents/toolkits/sql.js +0 -1
- package/agents/toolkits.cjs +0 -1
- package/agents/toolkits.d.cts +0 -1
- package/agents/toolkits.d.ts +0 -1
- package/agents/toolkits.js +0 -1
- package/agents/xml/output_parser.cjs +0 -1
- package/agents/xml/output_parser.d.cts +0 -1
- package/agents/xml/output_parser.d.ts +0 -1
- package/agents/xml/output_parser.js +0 -1
- package/agents.cjs +0 -1
- package/agents.d.cts +0 -1
- package/agents.d.ts +0 -1
- package/agents.js +0 -1
- package/cache/file_system.cjs +0 -1
- package/cache/file_system.d.cts +0 -1
- package/cache/file_system.d.ts +0 -1
- package/cache/file_system.js +0 -1
- package/callbacks.cjs +0 -1
- package/callbacks.d.cts +0 -1
- package/callbacks.d.ts +0 -1
- package/callbacks.js +0 -1
- package/chains/combine_documents/reduce.cjs +0 -1
- package/chains/combine_documents/reduce.d.cts +0 -1
- package/chains/combine_documents/reduce.d.ts +0 -1
- package/chains/combine_documents/reduce.js +0 -1
- package/chains/combine_documents.cjs +0 -1
- package/chains/combine_documents.d.cts +0 -1
- package/chains/combine_documents.d.ts +0 -1
- package/chains/combine_documents.js +0 -1
- package/chains/graph_qa/cypher.cjs +0 -1
- package/chains/graph_qa/cypher.d.cts +0 -1
- package/chains/graph_qa/cypher.d.ts +0 -1
- package/chains/graph_qa/cypher.js +0 -1
- package/chains/history_aware_retriever.cjs +0 -1
- package/chains/history_aware_retriever.d.cts +0 -1
- package/chains/history_aware_retriever.d.ts +0 -1
- package/chains/history_aware_retriever.js +0 -1
- package/chains/load.cjs +0 -1
- package/chains/load.d.cts +0 -1
- package/chains/load.d.ts +0 -1
- package/chains/load.js +0 -1
- package/chains/openai_functions.cjs +0 -1
- package/chains/openai_functions.d.cts +0 -1
- package/chains/openai_functions.d.ts +0 -1
- package/chains/openai_functions.js +0 -1
- package/chains/query_constructor/ir.cjs +0 -1
- package/chains/query_constructor/ir.d.cts +0 -1
- package/chains/query_constructor/ir.d.ts +0 -1
- package/chains/query_constructor/ir.js +0 -1
- package/chains/query_constructor.cjs +0 -1
- package/chains/query_constructor.d.cts +0 -1
- package/chains/query_constructor.d.ts +0 -1
- package/chains/query_constructor.js +0 -1
- package/chains/retrieval.cjs +0 -1
- package/chains/retrieval.d.cts +0 -1
- package/chains/retrieval.d.ts +0 -1
- package/chains/retrieval.js +0 -1
- package/chains/sql_db.cjs +0 -1
- package/chains/sql_db.d.cts +0 -1
- package/chains/sql_db.d.ts +0 -1
- package/chains/sql_db.js +0 -1
- package/chains.cjs +0 -1
- package/chains.d.cts +0 -1
- package/chains.d.ts +0 -1
- package/chains.js +0 -1
- package/chat_models/universal.cjs +0 -1
- package/chat_models/universal.d.cts +0 -1
- package/chat_models/universal.d.ts +0 -1
- package/chat_models/universal.js +0 -1
- package/document.cjs +0 -1
- package/document.d.cts +0 -1
- package/document.d.ts +0 -1
- package/document.js +0 -1
- package/document_loaders/base.cjs +0 -1
- package/document_loaders/base.d.cts +0 -1
- package/document_loaders/base.d.ts +0 -1
- package/document_loaders/base.js +0 -1
- package/document_loaders/fs/buffer.cjs +0 -1
- package/document_loaders/fs/buffer.d.cts +0 -1
- package/document_loaders/fs/buffer.d.ts +0 -1
- package/document_loaders/fs/buffer.js +0 -1
- package/document_loaders/fs/directory.cjs +0 -1
- package/document_loaders/fs/directory.d.cts +0 -1
- package/document_loaders/fs/directory.d.ts +0 -1
- package/document_loaders/fs/directory.js +0 -1
- package/document_loaders/fs/json.cjs +0 -1
- package/document_loaders/fs/json.d.cts +0 -1
- package/document_loaders/fs/json.d.ts +0 -1
- package/document_loaders/fs/json.js +0 -1
- package/document_loaders/fs/multi_file.cjs +0 -1
- package/document_loaders/fs/multi_file.d.cts +0 -1
- package/document_loaders/fs/multi_file.d.ts +0 -1
- package/document_loaders/fs/multi_file.js +0 -1
- package/document_loaders/fs/text.cjs +0 -1
- package/document_loaders/fs/text.d.cts +0 -1
- package/document_loaders/fs/text.d.ts +0 -1
- package/document_loaders/fs/text.js +0 -1
- package/document_transformers/openai_functions.cjs +0 -1
- package/document_transformers/openai_functions.d.cts +0 -1
- package/document_transformers/openai_functions.d.ts +0 -1
- package/document_transformers/openai_functions.js +0 -1
- package/embeddings/cache_backed.cjs +0 -1
- package/embeddings/cache_backed.d.cts +0 -1
- package/embeddings/cache_backed.d.ts +0 -1
- package/embeddings/cache_backed.js +0 -1
- package/embeddings/fake.cjs +0 -1
- package/embeddings/fake.d.cts +0 -1
- package/embeddings/fake.d.ts +0 -1
- package/embeddings/fake.js +0 -1
- package/evaluation.cjs +0 -1
- package/evaluation.d.cts +0 -1
- package/evaluation.d.ts +0 -1
- package/evaluation.js +0 -1
- package/experimental/autogpt.cjs +0 -1
- package/experimental/autogpt.d.cts +0 -1
- package/experimental/autogpt.d.ts +0 -1
- package/experimental/autogpt.js +0 -1
- package/experimental/babyagi.cjs +0 -1
- package/experimental/babyagi.d.cts +0 -1
- package/experimental/babyagi.d.ts +0 -1
- package/experimental/babyagi.js +0 -1
- package/experimental/chains/violation_of_expectations.cjs +0 -1
- package/experimental/chains/violation_of_expectations.d.cts +0 -1
- package/experimental/chains/violation_of_expectations.d.ts +0 -1
- package/experimental/chains/violation_of_expectations.js +0 -1
- package/experimental/generative_agents.cjs +0 -1
- package/experimental/generative_agents.d.cts +0 -1
- package/experimental/generative_agents.d.ts +0 -1
- package/experimental/generative_agents.js +0 -1
- package/experimental/masking.cjs +0 -1
- package/experimental/masking.d.cts +0 -1
- package/experimental/masking.d.ts +0 -1
- package/experimental/masking.js +0 -1
- package/experimental/openai_assistant.cjs +0 -1
- package/experimental/openai_assistant.d.cts +0 -1
- package/experimental/openai_assistant.d.ts +0 -1
- package/experimental/openai_assistant.js +0 -1
- package/experimental/openai_files.cjs +0 -1
- package/experimental/openai_files.d.cts +0 -1
- package/experimental/openai_files.d.ts +0 -1
- package/experimental/openai_files.js +0 -1
- package/experimental/plan_and_execute.cjs +0 -1
- package/experimental/plan_and_execute.d.cts +0 -1
- package/experimental/plan_and_execute.d.ts +0 -1
- package/experimental/plan_and_execute.js +0 -1
- package/experimental/prompts/custom_format.cjs +0 -1
- package/experimental/prompts/custom_format.d.cts +0 -1
- package/experimental/prompts/custom_format.d.ts +0 -1
- package/experimental/prompts/custom_format.js +0 -1
- package/experimental/prompts/handlebars.cjs +0 -1
- package/experimental/prompts/handlebars.d.cts +0 -1
- package/experimental/prompts/handlebars.d.ts +0 -1
- package/experimental/prompts/handlebars.js +0 -1
- package/hub/node.cjs +0 -1
- package/hub/node.d.cts +0 -1
- package/hub/node.d.ts +0 -1
- package/hub/node.js +0 -1
- package/hub.cjs +0 -1
- package/hub.d.cts +0 -1
- package/hub.d.ts +0 -1
- package/hub.js +0 -1
- package/indexes.cjs +0 -1
- package/indexes.d.cts +0 -1
- package/indexes.d.ts +0 -1
- package/indexes.js +0 -1
- package/load/serializable.cjs +0 -1
- package/load/serializable.d.cts +0 -1
- package/load/serializable.d.ts +0 -1
- package/load/serializable.js +0 -1
- package/load.cjs +0 -1
- package/load.d.cts +0 -1
- package/load.d.ts +0 -1
- package/load.js +0 -1
- package/memory/chat_memory.cjs +0 -1
- package/memory/chat_memory.d.cts +0 -1
- package/memory/chat_memory.d.ts +0 -1
- package/memory/chat_memory.js +0 -1
- package/memory.cjs +0 -1
- package/memory.d.cts +0 -1
- package/memory.d.ts +0 -1
- package/memory.js +0 -1
- package/output_parsers/expression.cjs +0 -1
- package/output_parsers/expression.d.cts +0 -1
- package/output_parsers/expression.d.ts +0 -1
- package/output_parsers/expression.js +0 -1
- package/output_parsers.cjs +0 -1
- package/output_parsers.d.cts +0 -1
- package/output_parsers.d.ts +0 -1
- package/output_parsers.js +0 -1
- package/retrievers/contextual_compression.cjs +0 -1
- package/retrievers/contextual_compression.d.cts +0 -1
- package/retrievers/contextual_compression.d.ts +0 -1
- package/retrievers/contextual_compression.js +0 -1
- package/retrievers/document_compressors/chain_extract.cjs +0 -1
- package/retrievers/document_compressors/chain_extract.d.cts +0 -1
- package/retrievers/document_compressors/chain_extract.d.ts +0 -1
- package/retrievers/document_compressors/chain_extract.js +0 -1
- package/retrievers/document_compressors/embeddings_filter.cjs +0 -1
- package/retrievers/document_compressors/embeddings_filter.d.cts +0 -1
- package/retrievers/document_compressors/embeddings_filter.d.ts +0 -1
- package/retrievers/document_compressors/embeddings_filter.js +0 -1
- package/retrievers/document_compressors.cjs +0 -1
- package/retrievers/document_compressors.d.cts +0 -1
- package/retrievers/document_compressors.d.ts +0 -1
- package/retrievers/document_compressors.js +0 -1
- package/retrievers/ensemble.cjs +0 -1
- package/retrievers/ensemble.d.cts +0 -1
- package/retrievers/ensemble.d.ts +0 -1
- package/retrievers/ensemble.js +0 -1
- package/retrievers/hyde.cjs +0 -1
- package/retrievers/hyde.d.cts +0 -1
- package/retrievers/hyde.d.ts +0 -1
- package/retrievers/hyde.js +0 -1
- package/retrievers/matryoshka_retriever.cjs +0 -1
- package/retrievers/matryoshka_retriever.d.cts +0 -1
- package/retrievers/matryoshka_retriever.d.ts +0 -1
- package/retrievers/matryoshka_retriever.js +0 -1
- package/retrievers/multi_query.cjs +0 -1
- package/retrievers/multi_query.d.cts +0 -1
- package/retrievers/multi_query.d.ts +0 -1
- package/retrievers/multi_query.js +0 -1
- package/retrievers/multi_vector.cjs +0 -1
- package/retrievers/multi_vector.d.cts +0 -1
- package/retrievers/multi_vector.d.ts +0 -1
- package/retrievers/multi_vector.js +0 -1
- package/retrievers/parent_document.cjs +0 -1
- package/retrievers/parent_document.d.cts +0 -1
- package/retrievers/parent_document.d.ts +0 -1
- package/retrievers/parent_document.js +0 -1
- package/retrievers/score_threshold.cjs +0 -1
- package/retrievers/score_threshold.d.cts +0 -1
- package/retrievers/score_threshold.d.ts +0 -1
- package/retrievers/score_threshold.js +0 -1
- package/retrievers/self_query/functional.cjs +0 -1
- package/retrievers/self_query/functional.d.cts +0 -1
- package/retrievers/self_query/functional.d.ts +0 -1
- package/retrievers/self_query/functional.js +0 -1
- package/retrievers/self_query.cjs +0 -1
- package/retrievers/self_query.d.cts +0 -1
- package/retrievers/self_query.d.ts +0 -1
- package/retrievers/self_query.js +0 -1
- package/retrievers/time_weighted.cjs +0 -1
- package/retrievers/time_weighted.d.cts +0 -1
- package/retrievers/time_weighted.d.ts +0 -1
- package/retrievers/time_weighted.js +0 -1
- package/schema/prompt_template.cjs +0 -1
- package/schema/prompt_template.d.cts +0 -1
- package/schema/prompt_template.d.ts +0 -1
- package/schema/prompt_template.js +0 -1
- package/schema/query_constructor.cjs +0 -1
- package/schema/query_constructor.d.cts +0 -1
- package/schema/query_constructor.d.ts +0 -1
- package/schema/query_constructor.js +0 -1
- package/smith.cjs +0 -1
- package/smith.d.cts +0 -1
- package/smith.d.ts +0 -1
- package/smith.js +0 -1
- package/sql_db.cjs +0 -1
- package/sql_db.d.cts +0 -1
- package/sql_db.d.ts +0 -1
- package/sql_db.js +0 -1
- package/storage/encoder_backed.cjs +0 -1
- package/storage/encoder_backed.d.cts +0 -1
- package/storage/encoder_backed.d.ts +0 -1
- package/storage/encoder_backed.js +0 -1
- package/storage/file_system.cjs +0 -1
- package/storage/file_system.d.cts +0 -1
- package/storage/file_system.d.ts +0 -1
- package/storage/file_system.js +0 -1
- package/storage/in_memory.cjs +0 -1
- package/storage/in_memory.d.cts +0 -1
- package/storage/in_memory.d.ts +0 -1
- package/storage/in_memory.js +0 -1
- package/stores/doc/base.cjs +0 -1
- package/stores/doc/base.d.cts +0 -1
- package/stores/doc/base.d.ts +0 -1
- package/stores/doc/base.js +0 -1
- package/stores/doc/in_memory.cjs +0 -1
- package/stores/doc/in_memory.d.cts +0 -1
- package/stores/doc/in_memory.d.ts +0 -1
- package/stores/doc/in_memory.js +0 -1
- package/stores/file/in_memory.cjs +0 -1
- package/stores/file/in_memory.d.cts +0 -1
- package/stores/file/in_memory.d.ts +0 -1
- package/stores/file/in_memory.js +0 -1
- package/stores/file/node.cjs +0 -1
- package/stores/file/node.d.cts +0 -1
- package/stores/file/node.d.ts +0 -1
- package/stores/file/node.js +0 -1
- package/stores/message/in_memory.cjs +0 -1
- package/stores/message/in_memory.d.cts +0 -1
- package/stores/message/in_memory.d.ts +0 -1
- package/stores/message/in_memory.js +0 -1
- package/text_splitter.cjs +0 -1
- package/text_splitter.d.cts +0 -1
- package/text_splitter.d.ts +0 -1
- package/text_splitter.js +0 -1
- package/tools/chain.cjs +0 -1
- package/tools/chain.d.cts +0 -1
- package/tools/chain.d.ts +0 -1
- package/tools/chain.js +0 -1
- package/tools/render.cjs +0 -1
- package/tools/render.d.cts +0 -1
- package/tools/render.d.ts +0 -1
- package/tools/render.js +0 -1
- package/tools/retriever.cjs +0 -1
- package/tools/retriever.d.cts +0 -1
- package/tools/retriever.d.ts +0 -1
- package/tools/retriever.js +0 -1
- package/tools/sql.cjs +0 -1
- package/tools/sql.d.cts +0 -1
- package/tools/sql.d.ts +0 -1
- package/tools/sql.js +0 -1
- package/tools/webbrowser.cjs +0 -1
- package/tools/webbrowser.d.cts +0 -1
- package/tools/webbrowser.d.ts +0 -1
- package/tools/webbrowser.js +0 -1
- package/tools.cjs +0 -1
- package/tools.d.cts +0 -1
- package/tools.d.ts +0 -1
- package/tools.js +0 -1
- package/util/document.cjs +0 -1
- package/util/document.d.cts +0 -1
- package/util/document.d.ts +0 -1
- package/util/document.js +0 -1
- package/util/math.cjs +0 -1
- package/util/math.d.cts +0 -1
- package/util/math.d.ts +0 -1
- package/util/math.js +0 -1
- package/util/time.cjs +0 -1
- package/util/time.d.cts +0 -1
- package/util/time.d.ts +0 -1
- package/util/time.js +0 -1
- package/vectorstores/memory.cjs +0 -1
- package/vectorstores/memory.d.cts +0 -1
- package/vectorstores/memory.d.ts +0 -1
- package/vectorstores/memory.js +0 -1
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// 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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"}
|
package/dist/chains/base.js
CHANGED
|
@@ -2,7 +2,6 @@ import { ensureConfig } from "@langchain/core/runnables";
|
|
|
2
2
|
import { BaseLangChain } from "@langchain/core/language_models/base";
|
|
3
3
|
import { RUN_KEY } from "@langchain/core/outputs";
|
|
4
4
|
import { CallbackManager, parseCallbackConfigArg } from "@langchain/core/callbacks/manager";
|
|
5
|
-
|
|
6
5
|
//#region src/chains/base.ts
|
|
7
6
|
/**
|
|
8
7
|
* Base interface that all chains must implement.
|
|
@@ -177,7 +176,7 @@ var BaseChain = class extends BaseLangChain {
|
|
|
177
176
|
}
|
|
178
177
|
}
|
|
179
178
|
};
|
|
180
|
-
|
|
181
179
|
//#endregion
|
|
182
180
|
export { BaseChain };
|
|
181
|
+
|
|
183
182
|
//# sourceMappingURL=base.js.map
|
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":";;;;;;;;;AA+BA,IAAsB,YAAtB,cAIU,cAEV;CAGE,IAAI,eAAyB;AAC3B,SAAO;GAAC;GAAa;GAAU,KAAK,YAAY;GAAC;;CAGnD,YACE,QAEA,SAEA,WACA;AACA,MACE,UAAU,WAAW,KACrB,OAAO,WAAW,YAClB,EAAE,iBAAiB,SACnB;GAEA,MAAM,EAAE,QAAQ,iBAAiB,GAAG,SAAS;AAC7C,SAAM;IAAE,GAAG;IAAM,WAAW,mBAAmB,KAAK;IAAW,CAAC;AAChE,QAAK,SAAS;SACT;AAEL,SAAM;IAAE;IAAS;IAAW,CAAC;AAC7B,QAAK,SAAS;;;;CAKlB,oBAAoB,QAAkC;EACpD,MAAM,kBAAkB,EAAE,GAAG,QAAQ;AACrC,MAAI,YAAY,gBACd,QAAO,gBAAgB;AAEzB,MAAI,aAAa,gBACf,QAAO,gBAAgB;AAEzB,SAAO;;;;;;;;CAST,MAAM,OAAO,OAAiB,SAA8C;EAC1E,MAAM,SAAS,aAAa,QAAQ;EACpC,MAAM,aAAa,MAAM,KAAK,cAAc,MAAM;EAUlD,MAAM,aAAa,OATM,MAAM,gBAAgB,UAC7C,QAAQ,WACR,KAAK,WACL,QAAQ,MACR,KAAK,MACL,QAAQ,UACR,KAAK,UACL,EAAE,SAAS,KAAK,SAAS,CAC1B,GAC0C,iBACzC,KAAK,QAAQ,EACb,YACA,QACA,QACA,QACA,QACA,QAAQ,QACT;EACD,IAAI;AACJ,MAAI;AACF,OAAI,WAAW,QAAQ;IACrB,IAAI;AACJ,mBAAgB,MAAM,QAAQ,KAAK,CACjC,KAAK,MAAM,YAAwB,YAAY,OAAO,EACtD,IAAI,SAAgB,GAAG,WAAW;AAChC,sBAAiB;AACf,6BAAO,IAAI,MAAM,aAAa,CAAC;;AAEjC,gBAAW,QAAQ,iBAAiB,SAAS,UAAU,EACrD,MAAM,MACP,CAAC;MACF,CACH,CAAC,CAAC,cAAc;AACf,SAAI,WAAW,UAAU,SACvB,YAAW,OAAO,oBAAoB,SAAS,SAAS;MAE1D;SAEF,gBAAe,MAAM,KAAK,MACxB,YACA,YACA,OACD;WAEI,GAAG;AACV,SAAM,YAAY,iBAAiB,EAAE;AACrC,SAAM;;AAER,MAAI,EAAE,KAAK,UAAU,MACnB,OAAM,KAAK,OAAO,YAChB,KAAK,oBAAoB,MAAM,EAC/B,aACD;AAEH,QAAM,YAAY,eAAe,aAAa;AAE9C,SAAO,eAAe,cAAc,SAAS;GAC3C,OAAO,aAAa,EAAE,OAAO,YAAY,OAAO,GAAG;GACnD,cAAc;GACf,CAAC;AACF,SAAO;;CAGT,AAAQ,iBAAiB,SAAwC;EAC/D,MAAM,cAAc,KAAK,WAAW,QAAQ,MAAM,EAAE,KAAK,SAAS;AAClE,MAAI,YAAY,OACd,OAAM,IAAI,MACR,wBAAwB,YAAY,KAClC,KACD,CAAC,cAAc,KAAK,YAAY,GAClC;;CAIL,MAAM,YACJ,QACA,SACA,oBAAoB,OACpB;AACA,OAAK,iBAAiB,QAAQ;AAC9B,MAAI,KAAK,OACP,OAAM,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAEhD,MAAI,kBACF,QAAO;AAET,SAAO;GAAE,GAAG;GAAQ,GAAG;GAAS;;;;;CAoBlC,YAAiC;AAC/B,QAAM,IAAI,MAAM,0BAA0B;;;CAQ5C,MAAM,IAEJ,OACA,QACiB;EACjB,MAAM,YAAY,KAAK,UAAU,QAC9B,MAAM,CAAC,KAAK,QAAQ,WAAW,SAAS,EAAE,CAC5C;AAED,MAAI,EADmB,UAAU,UAAU,GAEzC,OAAM,IAAI,MACR,SAAS,KAAK,YAAY,CAAC,6CAC5B;EAGH,MAAM,SAAS,UAAU,SAAS,GAAG,UAAU,KAAK,OAAO,GAAI,EAAE;EACjE,MAAM,eAAe,MAAM,KAAK,KAAK,QAAQ,OAAO;EACpD,MAAM,OAAO,OAAO,KAAK,aAAa;AAEtC,MAAI,KAAK,WAAW,EAClB,QAAO,aAAa,KAAK;AAE3B,QAAM,IAAI,MACR,gFACD;;CAGH,MAAgB,cACd,QACA;EACA,MAAM,aAAa,EAAE,GAAG,QAAQ;AAChC,MAAI,WAAW,WAAW,CAAC,WAAW,QAAQ;AAC5C,cAAW,SAAS,YAAY,QAAQ,WAAW,QAAQ;AAC3D,UAAO,WAAW;;AAEpB,MAAI,EAAE,KAAK,UAAU,OAAO;GAC1B,MAAM,YAAY,MAAM,KAAK,OAAO,oBAClC,KAAK,oBAAoB,OAAO,CACjC;AACD,QAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,CAClD,YAAW,OAAO;;AAGtB,SAAO;;;;;;;;;CAUT,MAAM,KACJ,QACA,QAEA,MACoB;EACpB,MAAM,eAAe;GAAE;GAAM,GAAG,uBAAuB,OAAO;GAAE;AAChE,SAAO,KAAK,OAAO,QAAoB,aAAa;;;;;;;CAQtD,MAAM,MACJ,QACA,QACsB;AACtB,SAAO,QAAQ,IACb,OAAO,IAAI,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,SAAS,KAAK,CAAC,CAC1D;;;;;CAMH,aAAa,YACX,MACA,SAAqB,EAAE,EACH;AACpB,UAAQ,KAAK,OAAb;GACE,KAAK,aAAa;IAChB,MAAM,EAAE,aAAa,MAAM,OAAO;AAClC,WAAO,SAAS,YAAY,KAAK;;GAEnC,KAAK,oBAAoB;IACvB,MAAM,EAAE,oBAAoB,MAAM,OAAO;AACzC,WAAO,gBAAgB,YAAY,KAAK;;GAE1C,KAAK,2BAA2B;IAC9B,MAAM,EAAE,0BAA0B,MAAM,OAAO;AAC/C,WAAO,sBAAsB,YAAY,KAAK;;GAEhD,KAAK,yBAAyB;IAC5B,MAAM,EAAE,wBAAwB,MAAM,OAAO;AAC7C,WAAO,oBAAoB,YAAY,KAAK;;GAE9C,KAAK,8BAA8B;IACjC,MAAM,EAAE,4BACN,MAAM,OAAO;AACf,WAAO,wBAAwB,YAAY,KAAK;;GAElD,KAAK,0BAA0B;IAC7B,MAAM,EAAE,yBACN,MAAM,OAAO;AACf,WAAO,qBAAqB,YAAY,KAAK;;GAE/C,KAAK,gBAAgB;IACnB,MAAM,EAAE,oBAAoB,MAAM,OAAO;AACzC,WAAO,gBAAgB,YAAY,MAAM,OAAO;;GAElD,KAAK,aAAa;IAChB,MAAM,EAAE,aAAa,MAAM,OAAO;AAClC,WAAO,SAAS,YAAY,KAAK;;GAEnC,QACE,OAAM,IAAI,MACR,kCACG,KAA6B,QAEjC"}
|
|
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,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
const require_base = require(
|
|
3
|
-
const require_llm_chain = require(
|
|
4
|
-
const require_load = require(
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_base = require("./base.cjs");
|
|
3
|
+
const require_llm_chain = require("./llm_chain.cjs");
|
|
4
|
+
const require_load = require("./question_answering/load.cjs");
|
|
5
5
|
let _langchain_core_prompts = require("@langchain/core/prompts");
|
|
6
|
-
|
|
7
6
|
//#region src/chains/chat_vector_db_chain.ts
|
|
8
7
|
const question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.
|
|
9
8
|
|
|
@@ -122,7 +121,7 @@ var ChatVectorDBQAChain = class ChatVectorDBQAChain extends require_base.BaseCha
|
|
|
122
121
|
});
|
|
123
122
|
}
|
|
124
123
|
};
|
|
125
|
-
|
|
126
124
|
//#endregion
|
|
127
125
|
exports.ChatVectorDBQAChain = ChatVectorDBQAChain;
|
|
126
|
+
|
|
128
127
|
//# sourceMappingURL=chat_vector_db_chain.cjs.map
|
|
@@ -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// 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\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":"
|
|
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// 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\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"}
|
|
@@ -2,7 +2,6 @@ import { BaseChain } from "./base.js";
|
|
|
2
2
|
import { LLMChain } from "./llm_chain.js";
|
|
3
3
|
import { loadQAStuffChain } from "./question_answering/load.js";
|
|
4
4
|
import { PromptTemplate } from "@langchain/core/prompts";
|
|
5
|
-
|
|
6
5
|
//#region src/chains/chat_vector_db_chain.ts
|
|
7
6
|
const question_generator_template = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.
|
|
8
7
|
|
|
@@ -121,7 +120,7 @@ var ChatVectorDBQAChain = class ChatVectorDBQAChain extends BaseChain {
|
|
|
121
120
|
});
|
|
122
121
|
}
|
|
123
122
|
};
|
|
124
|
-
|
|
125
123
|
//#endregion
|
|
126
124
|
export { ChatVectorDBQAChain };
|
|
125
|
+
|
|
127
126
|
//# sourceMappingURL=chat_vector_db_chain.js.map
|
|
@@ -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// 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\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":"
|
|
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// 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\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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
const require_base = require(
|
|
3
|
-
const require_llm_chain = require(
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_base = require("./base.cjs");
|
|
3
|
+
const require_llm_chain = require("./llm_chain.cjs");
|
|
4
4
|
let _langchain_core_prompts = require("@langchain/core/prompts");
|
|
5
|
-
|
|
6
5
|
//#region src/chains/combine_docs_chain.ts
|
|
7
6
|
/**
|
|
8
7
|
* Chain that combines documents by stuffing into context.
|
|
@@ -258,9 +257,9 @@ var RefineDocumentsChain = class RefineDocumentsChain extends require_base.BaseC
|
|
|
258
257
|
};
|
|
259
258
|
}
|
|
260
259
|
};
|
|
261
|
-
|
|
262
260
|
//#endregion
|
|
263
261
|
exports.MapReduceDocumentsChain = MapReduceDocumentsChain;
|
|
264
262
|
exports.RefineDocumentsChain = RefineDocumentsChain;
|
|
265
263
|
exports.StuffDocumentsChain = StuffDocumentsChain;
|
|
264
|
+
|
|
266
265
|
//# sourceMappingURL=combine_docs_chain.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine_docs_chain.cjs","names":["BaseChain","LLMChain","PromptTemplate"],"sources":["../../src/chains/combine_docs_chain.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport type {\n SerializedStuffDocumentsChain,\n SerializedMapReduceDocumentsChain,\n SerializedRefineDocumentsChain,\n} from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\n\n/**\n * Interface for the input properties of the StuffDocumentsChain class.\n */\nexport interface StuffDocumentsChainInput extends ChainInputs {\n /** LLM Wrapper to use after formatting documents */\n llmChain: LLMChain;\n inputKey?: string;\n /** Variable name in the LLM chain to put the documents in */\n documentVariableName?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class StuffDocumentsChain\n extends BaseChain\n implements StuffDocumentsChainInput\n{\n static lc_name() {\n return \"StuffDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n get inputKeys() {\n return [this.inputKey, ...this.llmChain.inputKeys].filter(\n (key) => key !== this.documentVariableName\n );\n }\n\n get outputKeys() {\n return this.llmChain.outputKeys;\n }\n\n constructor(fields: StuffDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n }\n\n /** @ignore */\n _prepInputs(values: ChainValues): ChainValues {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: docs, ...rest } = values;\n const texts = (docs as Document[]).map(({ pageContent }) => pageContent);\n const text = texts.join(\"\\n\\n\");\n return {\n ...rest,\n [this.documentVariableName]: text,\n };\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n const result = await this.llmChain.call(\n this._prepInputs(values),\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"stuff_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedStuffDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n return new StuffDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n });\n }\n\n serialize(): SerializedStuffDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the MapReduceDocumentsChain\n * class.\n */\nexport interface MapReduceDocumentsChainInput extends StuffDocumentsChainInput {\n /** The maximum number of tokens before requiring to do the reduction */\n maxTokens?: number;\n /** The maximum number of iterations to run through the map */\n maxIterations?: number;\n /** Ensures that the map step is taken regardless of max tokens */\n ensureMapStep?: boolean;\n /** Chain to use to combine results of applying llm_chain to documents. */\n combineDocumentChain: StuffDocumentsChain;\n /** Return the results of the map steps in the output. */\n returnIntermediateSteps?: boolean;\n}\n\n/**\n * Combine documents by mapping a chain over them, then combining results.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class MapReduceDocumentsChain\n extends BaseChain\n implements MapReduceDocumentsChainInput\n{\n static lc_name() {\n return \"MapReduceDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n returnIntermediateSteps = false;\n\n get inputKeys() {\n return [this.inputKey, ...this.combineDocumentChain.inputKeys];\n }\n\n get outputKeys() {\n return this.combineDocumentChain.outputKeys;\n }\n\n maxTokens = 3000;\n\n maxIterations = 10;\n\n ensureMapStep = false;\n\n combineDocumentChain: StuffDocumentsChain;\n\n constructor(fields: MapReduceDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.combineDocumentChain = fields.combineDocumentChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.ensureMapStep = fields.ensureMapStep ?? this.ensureMapStep;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.maxTokens = fields.maxTokens ?? this.maxTokens;\n this.maxIterations = fields.maxIterations ?? this.maxIterations;\n this.returnIntermediateSteps = fields.returnIntermediateSteps ?? false;\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]: docs, ...rest } = values;\n\n let currentDocs = docs as Document[];\n let intermediateSteps: string[] = [];\n\n // For each iteration, we'll use the `llmChain` to get a new result\n for (let i = 0; i < this.maxIterations; i += 1) {\n const inputs = currentDocs.map((d) => ({\n [this.documentVariableName]: d.pageContent,\n ...rest,\n }));\n\n const canSkipMapStep = i !== 0 || !this.ensureMapStep;\n if (canSkipMapStep) {\n // Calculate the total tokens required in the input\n const formatted =\n await this.combineDocumentChain.llmChain.prompt.format(\n this.combineDocumentChain._prepInputs({\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n })\n );\n const length =\n await this.combineDocumentChain.llmChain._getNumTokens(formatted);\n\n const withinTokenLimit = length < this.maxTokens;\n // If we can skip the map step, and we're within the token limit, we don't\n // need to run the map step, so just break out of the loop.\n if (withinTokenLimit) {\n break;\n }\n }\n\n const results = await this.llmChain.apply(\n inputs,\n // If we have a runManager, then we need to create a child for each input\n // so that we can track the progress of each input.\n runManager\n ? Array.from({ length: inputs.length }, (_, i) =>\n runManager.getChild(`map_${i + 1}`)\n )\n : undefined\n );\n const { outputKey } = this.llmChain;\n\n // If the flag is set, then concat that to the intermediate steps\n if (this.returnIntermediateSteps) {\n intermediateSteps = intermediateSteps.concat(\n results.map((r) => r[outputKey])\n );\n }\n\n currentDocs = results.map((r) => ({\n pageContent: r[outputKey],\n metadata: {},\n }));\n }\n\n // Now, with the final result of all the inputs from the `llmChain`, we can\n // run the `combineDocumentChain` over them.\n const newInputs = {\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n };\n const result = await this.combineDocumentChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n\n // Return the intermediate steps results if the flag is set\n if (this.returnIntermediateSteps) {\n return { ...result, intermediateSteps };\n }\n return result;\n }\n\n _chainType() {\n return \"map_reduce_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedMapReduceDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n if (!data.combine_document_chain) {\n throw new Error(\"Missing combine_document_chain\");\n }\n\n return new MapReduceDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n combineDocumentChain: await StuffDocumentsChain.deserialize(\n data.combine_document_chain\n ),\n });\n }\n\n serialize(): SerializedMapReduceDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n combine_document_chain: this.combineDocumentChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the RefineDocumentsChain class.\n */\nexport interface RefineDocumentsChainInput extends StuffDocumentsChainInput {\n refineLLMChain: LLMChain;\n documentPrompt?: BasePromptTemplate;\n initialResponseName?: string;\n documentVariableName?: string;\n outputKey?: string;\n}\n\n/**\n * Combine documents by doing a first pass and then refining on more documents.\n * @augments BaseChain\n * @augments RefineDocumentsChainInput\n */\nexport class RefineDocumentsChain\n extends BaseChain\n implements RefineDocumentsChainInput\n{\n static lc_name() {\n return \"RefineDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n outputKey = \"output_text\";\n\n documentVariableName = \"context\";\n\n initialResponseName = \"existing_answer\";\n\n refineLLMChain: LLMChain;\n\n get defaultDocumentPrompt(): BasePromptTemplate {\n return new PromptTemplate({\n inputVariables: [\"page_content\"],\n template: \"{page_content}\",\n });\n }\n\n documentPrompt = this.defaultDocumentPrompt;\n\n get inputKeys() {\n return [\n ...new Set([\n this.inputKey,\n ...this.llmChain.inputKeys,\n ...this.refineLLMChain.inputKeys,\n ]),\n ].filter(\n (key) =>\n key !== this.documentVariableName && key !== this.initialResponseName\n );\n }\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n constructor(fields: RefineDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.refineLLMChain = fields.refineLLMChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.documentPrompt = fields.documentPrompt ?? this.documentPrompt;\n this.initialResponseName =\n fields.initialResponseName ?? this.initialResponseName;\n }\n\n /** @ignore */\n async _constructInitialInputs(doc: Document, rest: Record<string, unknown>) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { ...baseInputs, ...rest };\n return inputs;\n }\n\n /** @ignore */\n async _constructRefineInputs(doc: Document, res: string) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { [this.initialResponseName]: res, ...baseInputs };\n return inputs;\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]: docs, ...rest } = values;\n\n const currentDocs = docs as Document[];\n\n const initialInputs = await this._constructInitialInputs(\n currentDocs[0],\n rest\n );\n let res = await this.llmChain.predict(\n { ...initialInputs },\n runManager?.getChild(\"answer\")\n );\n\n const refineSteps = [res];\n\n for (let i = 1; i < currentDocs.length; i += 1) {\n const refineInputs = await this._constructRefineInputs(\n currentDocs[i],\n res\n );\n const inputs = { ...refineInputs, ...rest };\n res = await this.refineLLMChain.predict(\n { ...inputs },\n runManager?.getChild(\"refine\")\n );\n refineSteps.push(res);\n }\n\n return { [this.outputKey]: res };\n }\n\n _chainType() {\n return \"refine_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedRefineDocumentsChain) {\n const SerializedLLMChain = data.llm_chain;\n\n if (!SerializedLLMChain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n const SerializedRefineDocumentChain = data.refine_llm_chain;\n\n if (!SerializedRefineDocumentChain) {\n throw new Error(\"Missing refine_llm_chain\");\n }\n\n return new RefineDocumentsChain({\n llmChain: await LLMChain.deserialize(SerializedLLMChain),\n refineLLMChain: await LLMChain.deserialize(SerializedRefineDocumentChain),\n });\n }\n\n serialize(): SerializedRefineDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n refine_llm_chain: this.refineLLMChain.serialize(),\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combine_docs_chain.cjs","names":["BaseChain","LLMChain","PromptTemplate"],"sources":["../../src/chains/combine_docs_chain.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport type {\n SerializedStuffDocumentsChain,\n SerializedMapReduceDocumentsChain,\n SerializedRefineDocumentsChain,\n} from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\n\n/**\n * Interface for the input properties of the StuffDocumentsChain class.\n */\nexport interface StuffDocumentsChainInput extends ChainInputs {\n /** LLM Wrapper to use after formatting documents */\n llmChain: LLMChain;\n inputKey?: string;\n /** Variable name in the LLM chain to put the documents in */\n documentVariableName?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class StuffDocumentsChain\n extends BaseChain\n implements StuffDocumentsChainInput\n{\n static lc_name() {\n return \"StuffDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n get inputKeys() {\n return [this.inputKey, ...this.llmChain.inputKeys].filter(\n (key) => key !== this.documentVariableName\n );\n }\n\n get outputKeys() {\n return this.llmChain.outputKeys;\n }\n\n constructor(fields: StuffDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n }\n\n /** @ignore */\n _prepInputs(values: ChainValues): ChainValues {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: docs, ...rest } = values;\n const texts = (docs as Document[]).map(({ pageContent }) => pageContent);\n const text = texts.join(\"\\n\\n\");\n return {\n ...rest,\n [this.documentVariableName]: text,\n };\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n const result = await this.llmChain.call(\n this._prepInputs(values),\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"stuff_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedStuffDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n return new StuffDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n });\n }\n\n serialize(): SerializedStuffDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the MapReduceDocumentsChain\n * class.\n */\nexport interface MapReduceDocumentsChainInput extends StuffDocumentsChainInput {\n /** The maximum number of tokens before requiring to do the reduction */\n maxTokens?: number;\n /** The maximum number of iterations to run through the map */\n maxIterations?: number;\n /** Ensures that the map step is taken regardless of max tokens */\n ensureMapStep?: boolean;\n /** Chain to use to combine results of applying llm_chain to documents. */\n combineDocumentChain: StuffDocumentsChain;\n /** Return the results of the map steps in the output. */\n returnIntermediateSteps?: boolean;\n}\n\n/**\n * Combine documents by mapping a chain over them, then combining results.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class MapReduceDocumentsChain\n extends BaseChain\n implements MapReduceDocumentsChainInput\n{\n static lc_name() {\n return \"MapReduceDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n returnIntermediateSteps = false;\n\n get inputKeys() {\n return [this.inputKey, ...this.combineDocumentChain.inputKeys];\n }\n\n get outputKeys() {\n return this.combineDocumentChain.outputKeys;\n }\n\n maxTokens = 3000;\n\n maxIterations = 10;\n\n ensureMapStep = false;\n\n combineDocumentChain: StuffDocumentsChain;\n\n constructor(fields: MapReduceDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.combineDocumentChain = fields.combineDocumentChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.ensureMapStep = fields.ensureMapStep ?? this.ensureMapStep;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.maxTokens = fields.maxTokens ?? this.maxTokens;\n this.maxIterations = fields.maxIterations ?? this.maxIterations;\n this.returnIntermediateSteps = fields.returnIntermediateSteps ?? false;\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]: docs, ...rest } = values;\n\n let currentDocs = docs as Document[];\n let intermediateSteps: string[] = [];\n\n // For each iteration, we'll use the `llmChain` to get a new result\n for (let i = 0; i < this.maxIterations; i += 1) {\n const inputs = currentDocs.map((d) => ({\n [this.documentVariableName]: d.pageContent,\n ...rest,\n }));\n\n const canSkipMapStep = i !== 0 || !this.ensureMapStep;\n if (canSkipMapStep) {\n // Calculate the total tokens required in the input\n const formatted =\n await this.combineDocumentChain.llmChain.prompt.format(\n this.combineDocumentChain._prepInputs({\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n })\n );\n const length =\n await this.combineDocumentChain.llmChain._getNumTokens(formatted);\n\n const withinTokenLimit = length < this.maxTokens;\n // If we can skip the map step, and we're within the token limit, we don't\n // need to run the map step, so just break out of the loop.\n if (withinTokenLimit) {\n break;\n }\n }\n\n const results = await this.llmChain.apply(\n inputs,\n // If we have a runManager, then we need to create a child for each input\n // so that we can track the progress of each input.\n runManager\n ? Array.from({ length: inputs.length }, (_, i) =>\n runManager.getChild(`map_${i + 1}`)\n )\n : undefined\n );\n const { outputKey } = this.llmChain;\n\n // If the flag is set, then concat that to the intermediate steps\n if (this.returnIntermediateSteps) {\n intermediateSteps = intermediateSteps.concat(\n results.map((r) => r[outputKey])\n );\n }\n\n currentDocs = results.map((r) => ({\n pageContent: r[outputKey],\n metadata: {},\n }));\n }\n\n // Now, with the final result of all the inputs from the `llmChain`, we can\n // run the `combineDocumentChain` over them.\n const newInputs = {\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n };\n const result = await this.combineDocumentChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n\n // Return the intermediate steps results if the flag is set\n if (this.returnIntermediateSteps) {\n return { ...result, intermediateSteps };\n }\n return result;\n }\n\n _chainType() {\n return \"map_reduce_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedMapReduceDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n if (!data.combine_document_chain) {\n throw new Error(\"Missing combine_document_chain\");\n }\n\n return new MapReduceDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n combineDocumentChain: await StuffDocumentsChain.deserialize(\n data.combine_document_chain\n ),\n });\n }\n\n serialize(): SerializedMapReduceDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n combine_document_chain: this.combineDocumentChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the RefineDocumentsChain class.\n */\nexport interface RefineDocumentsChainInput extends StuffDocumentsChainInput {\n refineLLMChain: LLMChain;\n documentPrompt?: BasePromptTemplate;\n initialResponseName?: string;\n documentVariableName?: string;\n outputKey?: string;\n}\n\n/**\n * Combine documents by doing a first pass and then refining on more documents.\n * @augments BaseChain\n * @augments RefineDocumentsChainInput\n */\nexport class RefineDocumentsChain\n extends BaseChain\n implements RefineDocumentsChainInput\n{\n static lc_name() {\n return \"RefineDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n outputKey = \"output_text\";\n\n documentVariableName = \"context\";\n\n initialResponseName = \"existing_answer\";\n\n refineLLMChain: LLMChain;\n\n get defaultDocumentPrompt(): BasePromptTemplate {\n return new PromptTemplate({\n inputVariables: [\"page_content\"],\n template: \"{page_content}\",\n });\n }\n\n documentPrompt = this.defaultDocumentPrompt;\n\n get inputKeys() {\n return [\n ...new Set([\n this.inputKey,\n ...this.llmChain.inputKeys,\n ...this.refineLLMChain.inputKeys,\n ]),\n ].filter(\n (key) =>\n key !== this.documentVariableName && key !== this.initialResponseName\n );\n }\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n constructor(fields: RefineDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.refineLLMChain = fields.refineLLMChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.documentPrompt = fields.documentPrompt ?? this.documentPrompt;\n this.initialResponseName =\n fields.initialResponseName ?? this.initialResponseName;\n }\n\n /** @ignore */\n async _constructInitialInputs(doc: Document, rest: Record<string, unknown>) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { ...baseInputs, ...rest };\n return inputs;\n }\n\n /** @ignore */\n async _constructRefineInputs(doc: Document, res: string) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { [this.initialResponseName]: res, ...baseInputs };\n return inputs;\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]: docs, ...rest } = values;\n\n const currentDocs = docs as Document[];\n\n const initialInputs = await this._constructInitialInputs(\n currentDocs[0],\n rest\n );\n let res = await this.llmChain.predict(\n { ...initialInputs },\n runManager?.getChild(\"answer\")\n );\n\n const refineSteps = [res];\n\n for (let i = 1; i < currentDocs.length; i += 1) {\n const refineInputs = await this._constructRefineInputs(\n currentDocs[i],\n res\n );\n const inputs = { ...refineInputs, ...rest };\n res = await this.refineLLMChain.predict(\n { ...inputs },\n runManager?.getChild(\"refine\")\n );\n refineSteps.push(res);\n }\n\n return { [this.outputKey]: res };\n }\n\n _chainType() {\n return \"refine_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedRefineDocumentsChain) {\n const SerializedLLMChain = data.llm_chain;\n\n if (!SerializedLLMChain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n const SerializedRefineDocumentChain = data.refine_llm_chain;\n\n if (!SerializedRefineDocumentChain) {\n throw new Error(\"Missing refine_llm_chain\");\n }\n\n return new RefineDocumentsChain({\n llmChain: await LLMChain.deserialize(SerializedLLMChain),\n refineLLMChain: await LLMChain.deserialize(SerializedRefineDocumentChain),\n });\n }\n\n serialize(): SerializedRefineDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n refine_llm_chain: this.refineLLMChain.serialize(),\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseChain } from "./base.js";
|
|
2
2
|
import { LLMChain } from "./llm_chain.js";
|
|
3
3
|
import { PromptTemplate } from "@langchain/core/prompts";
|
|
4
|
-
|
|
5
4
|
//#region src/chains/combine_docs_chain.ts
|
|
6
5
|
/**
|
|
7
6
|
* Chain that combines documents by stuffing into context.
|
|
@@ -257,7 +256,7 @@ var RefineDocumentsChain = class RefineDocumentsChain extends BaseChain {
|
|
|
257
256
|
};
|
|
258
257
|
}
|
|
259
258
|
};
|
|
260
|
-
|
|
261
259
|
//#endregion
|
|
262
260
|
export { MapReduceDocumentsChain, RefineDocumentsChain, StuffDocumentsChain };
|
|
261
|
+
|
|
263
262
|
//# sourceMappingURL=combine_docs_chain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine_docs_chain.js","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport type {\n SerializedStuffDocumentsChain,\n SerializedMapReduceDocumentsChain,\n SerializedRefineDocumentsChain,\n} from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\n\n/**\n * Interface for the input properties of the StuffDocumentsChain class.\n */\nexport interface StuffDocumentsChainInput extends ChainInputs {\n /** LLM Wrapper to use after formatting documents */\n llmChain: LLMChain;\n inputKey?: string;\n /** Variable name in the LLM chain to put the documents in */\n documentVariableName?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class StuffDocumentsChain\n extends BaseChain\n implements StuffDocumentsChainInput\n{\n static lc_name() {\n return \"StuffDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n get inputKeys() {\n return [this.inputKey, ...this.llmChain.inputKeys].filter(\n (key) => key !== this.documentVariableName\n );\n }\n\n get outputKeys() {\n return this.llmChain.outputKeys;\n }\n\n constructor(fields: StuffDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n }\n\n /** @ignore */\n _prepInputs(values: ChainValues): ChainValues {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: docs, ...rest } = values;\n const texts = (docs as Document[]).map(({ pageContent }) => pageContent);\n const text = texts.join(\"\\n\\n\");\n return {\n ...rest,\n [this.documentVariableName]: text,\n };\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n const result = await this.llmChain.call(\n this._prepInputs(values),\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"stuff_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedStuffDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n return new StuffDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n });\n }\n\n serialize(): SerializedStuffDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the MapReduceDocumentsChain\n * class.\n */\nexport interface MapReduceDocumentsChainInput extends StuffDocumentsChainInput {\n /** The maximum number of tokens before requiring to do the reduction */\n maxTokens?: number;\n /** The maximum number of iterations to run through the map */\n maxIterations?: number;\n /** Ensures that the map step is taken regardless of max tokens */\n ensureMapStep?: boolean;\n /** Chain to use to combine results of applying llm_chain to documents. */\n combineDocumentChain: StuffDocumentsChain;\n /** Return the results of the map steps in the output. */\n returnIntermediateSteps?: boolean;\n}\n\n/**\n * Combine documents by mapping a chain over them, then combining results.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class MapReduceDocumentsChain\n extends BaseChain\n implements MapReduceDocumentsChainInput\n{\n static lc_name() {\n return \"MapReduceDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n returnIntermediateSteps = false;\n\n get inputKeys() {\n return [this.inputKey, ...this.combineDocumentChain.inputKeys];\n }\n\n get outputKeys() {\n return this.combineDocumentChain.outputKeys;\n }\n\n maxTokens = 3000;\n\n maxIterations = 10;\n\n ensureMapStep = false;\n\n combineDocumentChain: StuffDocumentsChain;\n\n constructor(fields: MapReduceDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.combineDocumentChain = fields.combineDocumentChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.ensureMapStep = fields.ensureMapStep ?? this.ensureMapStep;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.maxTokens = fields.maxTokens ?? this.maxTokens;\n this.maxIterations = fields.maxIterations ?? this.maxIterations;\n this.returnIntermediateSteps = fields.returnIntermediateSteps ?? false;\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]: docs, ...rest } = values;\n\n let currentDocs = docs as Document[];\n let intermediateSteps: string[] = [];\n\n // For each iteration, we'll use the `llmChain` to get a new result\n for (let i = 0; i < this.maxIterations; i += 1) {\n const inputs = currentDocs.map((d) => ({\n [this.documentVariableName]: d.pageContent,\n ...rest,\n }));\n\n const canSkipMapStep = i !== 0 || !this.ensureMapStep;\n if (canSkipMapStep) {\n // Calculate the total tokens required in the input\n const formatted =\n await this.combineDocumentChain.llmChain.prompt.format(\n this.combineDocumentChain._prepInputs({\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n })\n );\n const length =\n await this.combineDocumentChain.llmChain._getNumTokens(formatted);\n\n const withinTokenLimit = length < this.maxTokens;\n // If we can skip the map step, and we're within the token limit, we don't\n // need to run the map step, so just break out of the loop.\n if (withinTokenLimit) {\n break;\n }\n }\n\n const results = await this.llmChain.apply(\n inputs,\n // If we have a runManager, then we need to create a child for each input\n // so that we can track the progress of each input.\n runManager\n ? Array.from({ length: inputs.length }, (_, i) =>\n runManager.getChild(`map_${i + 1}`)\n )\n : undefined\n );\n const { outputKey } = this.llmChain;\n\n // If the flag is set, then concat that to the intermediate steps\n if (this.returnIntermediateSteps) {\n intermediateSteps = intermediateSteps.concat(\n results.map((r) => r[outputKey])\n );\n }\n\n currentDocs = results.map((r) => ({\n pageContent: r[outputKey],\n metadata: {},\n }));\n }\n\n // Now, with the final result of all the inputs from the `llmChain`, we can\n // run the `combineDocumentChain` over them.\n const newInputs = {\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n };\n const result = await this.combineDocumentChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n\n // Return the intermediate steps results if the flag is set\n if (this.returnIntermediateSteps) {\n return { ...result, intermediateSteps };\n }\n return result;\n }\n\n _chainType() {\n return \"map_reduce_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedMapReduceDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n if (!data.combine_document_chain) {\n throw new Error(\"Missing combine_document_chain\");\n }\n\n return new MapReduceDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n combineDocumentChain: await StuffDocumentsChain.deserialize(\n data.combine_document_chain\n ),\n });\n }\n\n serialize(): SerializedMapReduceDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n combine_document_chain: this.combineDocumentChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the RefineDocumentsChain class.\n */\nexport interface RefineDocumentsChainInput extends StuffDocumentsChainInput {\n refineLLMChain: LLMChain;\n documentPrompt?: BasePromptTemplate;\n initialResponseName?: string;\n documentVariableName?: string;\n outputKey?: string;\n}\n\n/**\n * Combine documents by doing a first pass and then refining on more documents.\n * @augments BaseChain\n * @augments RefineDocumentsChainInput\n */\nexport class RefineDocumentsChain\n extends BaseChain\n implements RefineDocumentsChainInput\n{\n static lc_name() {\n return \"RefineDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n outputKey = \"output_text\";\n\n documentVariableName = \"context\";\n\n initialResponseName = \"existing_answer\";\n\n refineLLMChain: LLMChain;\n\n get defaultDocumentPrompt(): BasePromptTemplate {\n return new PromptTemplate({\n inputVariables: [\"page_content\"],\n template: \"{page_content}\",\n });\n }\n\n documentPrompt = this.defaultDocumentPrompt;\n\n get inputKeys() {\n return [\n ...new Set([\n this.inputKey,\n ...this.llmChain.inputKeys,\n ...this.refineLLMChain.inputKeys,\n ]),\n ].filter(\n (key) =>\n key !== this.documentVariableName && key !== this.initialResponseName\n );\n }\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n constructor(fields: RefineDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.refineLLMChain = fields.refineLLMChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.documentPrompt = fields.documentPrompt ?? this.documentPrompt;\n this.initialResponseName =\n fields.initialResponseName ?? this.initialResponseName;\n }\n\n /** @ignore */\n async _constructInitialInputs(doc: Document, rest: Record<string, unknown>) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { ...baseInputs, ...rest };\n return inputs;\n }\n\n /** @ignore */\n async _constructRefineInputs(doc: Document, res: string) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { [this.initialResponseName]: res, ...baseInputs };\n return inputs;\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]: docs, ...rest } = values;\n\n const currentDocs = docs as Document[];\n\n const initialInputs = await this._constructInitialInputs(\n currentDocs[0],\n rest\n );\n let res = await this.llmChain.predict(\n { ...initialInputs },\n runManager?.getChild(\"answer\")\n );\n\n const refineSteps = [res];\n\n for (let i = 1; i < currentDocs.length; i += 1) {\n const refineInputs = await this._constructRefineInputs(\n currentDocs[i],\n res\n );\n const inputs = { ...refineInputs, ...rest };\n res = await this.refineLLMChain.predict(\n { ...inputs },\n runManager?.getChild(\"refine\")\n );\n refineSteps.push(res);\n }\n\n return { [this.outputKey]: res };\n }\n\n _chainType() {\n return \"refine_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedRefineDocumentsChain) {\n const SerializedLLMChain = data.llm_chain;\n\n if (!SerializedLLMChain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n const SerializedRefineDocumentChain = data.refine_llm_chain;\n\n if (!SerializedRefineDocumentChain) {\n throw new Error(\"Missing refine_llm_chain\");\n }\n\n return new RefineDocumentsChain({\n llmChain: await LLMChain.deserialize(SerializedLLMChain),\n refineLLMChain: await LLMChain.deserialize(SerializedRefineDocumentChain),\n });\n }\n\n serialize(): SerializedRefineDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n refine_llm_chain: this.refineLLMChain.serialize(),\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combine_docs_chain.js","names":[],"sources":["../../src/chains/combine_docs_chain.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { CallbackManagerForChainRun } from \"@langchain/core/callbacks/manager\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport type {\n SerializedStuffDocumentsChain,\n SerializedMapReduceDocumentsChain,\n SerializedRefineDocumentsChain,\n} from \"./serde.js\";\nimport { BaseChain, ChainInputs } from \"./base.js\";\nimport { LLMChain } from \"./llm_chain.js\";\n\n/**\n * Interface for the input properties of the StuffDocumentsChain class.\n */\nexport interface StuffDocumentsChainInput extends ChainInputs {\n /** LLM Wrapper to use after formatting documents */\n llmChain: LLMChain;\n inputKey?: string;\n /** Variable name in the LLM chain to put the documents in */\n documentVariableName?: string;\n}\n\n/**\n * Chain that combines documents by stuffing into context.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class StuffDocumentsChain\n extends BaseChain\n implements StuffDocumentsChainInput\n{\n static lc_name() {\n return \"StuffDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n get inputKeys() {\n return [this.inputKey, ...this.llmChain.inputKeys].filter(\n (key) => key !== this.documentVariableName\n );\n }\n\n get outputKeys() {\n return this.llmChain.outputKeys;\n }\n\n constructor(fields: StuffDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n }\n\n /** @ignore */\n _prepInputs(values: ChainValues): ChainValues {\n if (!(this.inputKey in values)) {\n throw new Error(`Document key ${this.inputKey} not found.`);\n }\n const { [this.inputKey]: docs, ...rest } = values;\n const texts = (docs as Document[]).map(({ pageContent }) => pageContent);\n const text = texts.join(\"\\n\\n\");\n return {\n ...rest,\n [this.documentVariableName]: text,\n };\n }\n\n /** @ignore */\n async _call(\n values: ChainValues,\n runManager?: CallbackManagerForChainRun\n ): Promise<ChainValues> {\n const result = await this.llmChain.call(\n this._prepInputs(values),\n runManager?.getChild(\"combine_documents\")\n );\n return result;\n }\n\n _chainType() {\n return \"stuff_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedStuffDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n return new StuffDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n });\n }\n\n serialize(): SerializedStuffDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the MapReduceDocumentsChain\n * class.\n */\nexport interface MapReduceDocumentsChainInput extends StuffDocumentsChainInput {\n /** The maximum number of tokens before requiring to do the reduction */\n maxTokens?: number;\n /** The maximum number of iterations to run through the map */\n maxIterations?: number;\n /** Ensures that the map step is taken regardless of max tokens */\n ensureMapStep?: boolean;\n /** Chain to use to combine results of applying llm_chain to documents. */\n combineDocumentChain: StuffDocumentsChain;\n /** Return the results of the map steps in the output. */\n returnIntermediateSteps?: boolean;\n}\n\n/**\n * Combine documents by mapping a chain over them, then combining results.\n * @augments BaseChain\n * @augments StuffDocumentsChainInput\n */\nexport class MapReduceDocumentsChain\n extends BaseChain\n implements MapReduceDocumentsChainInput\n{\n static lc_name() {\n return \"MapReduceDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n documentVariableName = \"context\";\n\n returnIntermediateSteps = false;\n\n get inputKeys() {\n return [this.inputKey, ...this.combineDocumentChain.inputKeys];\n }\n\n get outputKeys() {\n return this.combineDocumentChain.outputKeys;\n }\n\n maxTokens = 3000;\n\n maxIterations = 10;\n\n ensureMapStep = false;\n\n combineDocumentChain: StuffDocumentsChain;\n\n constructor(fields: MapReduceDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.combineDocumentChain = fields.combineDocumentChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.ensureMapStep = fields.ensureMapStep ?? this.ensureMapStep;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.maxTokens = fields.maxTokens ?? this.maxTokens;\n this.maxIterations = fields.maxIterations ?? this.maxIterations;\n this.returnIntermediateSteps = fields.returnIntermediateSteps ?? false;\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]: docs, ...rest } = values;\n\n let currentDocs = docs as Document[];\n let intermediateSteps: string[] = [];\n\n // For each iteration, we'll use the `llmChain` to get a new result\n for (let i = 0; i < this.maxIterations; i += 1) {\n const inputs = currentDocs.map((d) => ({\n [this.documentVariableName]: d.pageContent,\n ...rest,\n }));\n\n const canSkipMapStep = i !== 0 || !this.ensureMapStep;\n if (canSkipMapStep) {\n // Calculate the total tokens required in the input\n const formatted =\n await this.combineDocumentChain.llmChain.prompt.format(\n this.combineDocumentChain._prepInputs({\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n })\n );\n const length =\n await this.combineDocumentChain.llmChain._getNumTokens(formatted);\n\n const withinTokenLimit = length < this.maxTokens;\n // If we can skip the map step, and we're within the token limit, we don't\n // need to run the map step, so just break out of the loop.\n if (withinTokenLimit) {\n break;\n }\n }\n\n const results = await this.llmChain.apply(\n inputs,\n // If we have a runManager, then we need to create a child for each input\n // so that we can track the progress of each input.\n runManager\n ? Array.from({ length: inputs.length }, (_, i) =>\n runManager.getChild(`map_${i + 1}`)\n )\n : undefined\n );\n const { outputKey } = this.llmChain;\n\n // If the flag is set, then concat that to the intermediate steps\n if (this.returnIntermediateSteps) {\n intermediateSteps = intermediateSteps.concat(\n results.map((r) => r[outputKey])\n );\n }\n\n currentDocs = results.map((r) => ({\n pageContent: r[outputKey],\n metadata: {},\n }));\n }\n\n // Now, with the final result of all the inputs from the `llmChain`, we can\n // run the `combineDocumentChain` over them.\n const newInputs = {\n [this.combineDocumentChain.inputKey]: currentDocs,\n ...rest,\n };\n const result = await this.combineDocumentChain.call(\n newInputs,\n runManager?.getChild(\"combine_documents\")\n );\n\n // Return the intermediate steps results if the flag is set\n if (this.returnIntermediateSteps) {\n return { ...result, intermediateSteps };\n }\n return result;\n }\n\n _chainType() {\n return \"map_reduce_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedMapReduceDocumentsChain) {\n if (!data.llm_chain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n if (!data.combine_document_chain) {\n throw new Error(\"Missing combine_document_chain\");\n }\n\n return new MapReduceDocumentsChain({\n llmChain: await LLMChain.deserialize(data.llm_chain),\n combineDocumentChain: await StuffDocumentsChain.deserialize(\n data.combine_document_chain\n ),\n });\n }\n\n serialize(): SerializedMapReduceDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n combine_document_chain: this.combineDocumentChain.serialize(),\n };\n }\n}\n\n/**\n * Interface for the input properties of the RefineDocumentsChain class.\n */\nexport interface RefineDocumentsChainInput extends StuffDocumentsChainInput {\n refineLLMChain: LLMChain;\n documentPrompt?: BasePromptTemplate;\n initialResponseName?: string;\n documentVariableName?: string;\n outputKey?: string;\n}\n\n/**\n * Combine documents by doing a first pass and then refining on more documents.\n * @augments BaseChain\n * @augments RefineDocumentsChainInput\n */\nexport class RefineDocumentsChain\n extends BaseChain\n implements RefineDocumentsChainInput\n{\n static lc_name() {\n return \"RefineDocumentsChain\";\n }\n\n llmChain: LLMChain;\n\n inputKey = \"input_documents\";\n\n outputKey = \"output_text\";\n\n documentVariableName = \"context\";\n\n initialResponseName = \"existing_answer\";\n\n refineLLMChain: LLMChain;\n\n get defaultDocumentPrompt(): BasePromptTemplate {\n return new PromptTemplate({\n inputVariables: [\"page_content\"],\n template: \"{page_content}\",\n });\n }\n\n documentPrompt = this.defaultDocumentPrompt;\n\n get inputKeys() {\n return [\n ...new Set([\n this.inputKey,\n ...this.llmChain.inputKeys,\n ...this.refineLLMChain.inputKeys,\n ]),\n ].filter(\n (key) =>\n key !== this.documentVariableName && key !== this.initialResponseName\n );\n }\n\n get outputKeys() {\n return [this.outputKey];\n }\n\n constructor(fields: RefineDocumentsChainInput) {\n super(fields);\n this.llmChain = fields.llmChain;\n this.refineLLMChain = fields.refineLLMChain;\n this.documentVariableName =\n fields.documentVariableName ?? this.documentVariableName;\n this.inputKey = fields.inputKey ?? this.inputKey;\n this.outputKey = fields.outputKey ?? this.outputKey;\n this.documentPrompt = fields.documentPrompt ?? this.documentPrompt;\n this.initialResponseName =\n fields.initialResponseName ?? this.initialResponseName;\n }\n\n /** @ignore */\n async _constructInitialInputs(doc: Document, rest: Record<string, unknown>) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { ...baseInputs, ...rest };\n return inputs;\n }\n\n /** @ignore */\n async _constructRefineInputs(doc: Document, res: string) {\n const baseInfo: Record<string, unknown> = {\n page_content: doc.pageContent,\n ...doc.metadata,\n };\n const documentInfo: Record<string, unknown> = {};\n this.documentPrompt.inputVariables.forEach((value) => {\n documentInfo[value] = baseInfo[value];\n });\n const baseInputs: Record<string, unknown> = {\n [this.documentVariableName]: await this.documentPrompt.format({\n ...documentInfo,\n }),\n };\n const inputs = { [this.initialResponseName]: res, ...baseInputs };\n return inputs;\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]: docs, ...rest } = values;\n\n const currentDocs = docs as Document[];\n\n const initialInputs = await this._constructInitialInputs(\n currentDocs[0],\n rest\n );\n let res = await this.llmChain.predict(\n { ...initialInputs },\n runManager?.getChild(\"answer\")\n );\n\n const refineSteps = [res];\n\n for (let i = 1; i < currentDocs.length; i += 1) {\n const refineInputs = await this._constructRefineInputs(\n currentDocs[i],\n res\n );\n const inputs = { ...refineInputs, ...rest };\n res = await this.refineLLMChain.predict(\n { ...inputs },\n runManager?.getChild(\"refine\")\n );\n refineSteps.push(res);\n }\n\n return { [this.outputKey]: res };\n }\n\n _chainType() {\n return \"refine_documents_chain\" as const;\n }\n\n static async deserialize(data: SerializedRefineDocumentsChain) {\n const SerializedLLMChain = data.llm_chain;\n\n if (!SerializedLLMChain) {\n throw new Error(\"Missing llm_chain\");\n }\n\n const SerializedRefineDocumentChain = data.refine_llm_chain;\n\n if (!SerializedRefineDocumentChain) {\n throw new Error(\"Missing refine_llm_chain\");\n }\n\n return new RefineDocumentsChain({\n llmChain: await LLMChain.deserialize(SerializedLLMChain),\n refineLLMChain: await LLMChain.deserialize(SerializedRefineDocumentChain),\n });\n }\n\n serialize(): SerializedRefineDocumentsChain {\n return {\n _type: this._chainType(),\n llm_chain: this.llmChain.serialize(),\n refine_llm_chain: this.refineLLMChain.serialize(),\n };\n }\n}\n"],"mappings":";;;;;;;;;AA4BA,IAAa,sBAAb,MAAa,4BACH,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT;CAEA,WAAW;CAEX,uBAAuB;CAEvB,IAAI,YAAY;AACd,SAAO,CAAC,KAAK,UAAU,GAAG,KAAK,SAAS,UAAU,CAAC,QAChD,QAAQ,QAAQ,KAAK,qBACvB;;CAGH,IAAI,aAAa;AACf,SAAO,KAAK,SAAS;;CAGvB,YAAY,QAAkC;AAC5C,QAAM,OAAO;AACb,OAAK,WAAW,OAAO;AACvB,OAAK,uBACH,OAAO,wBAAwB,KAAK;AACtC,OAAK,WAAW,OAAO,YAAY,KAAK;;;CAI1C,YAAY,QAAkC;AAC5C,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;EAE7D,MAAM,GAAG,KAAK,WAAW,MAAM,GAAG,SAAS;EAE3C,MAAM,OADS,KAAoB,KAAK,EAAE,kBAAkB,YAAY,CACrD,KAAK,OAAO;AAC/B,SAAO;GACL,GAAG;IACF,KAAK,uBAAuB;GAC9B;;;CAIH,MAAM,MACJ,QACA,YACsB;AAKtB,SAJe,MAAM,KAAK,SAAS,KACjC,KAAK,YAAY,OAAO,EACxB,YAAY,SAAS,oBAAoB,CAC1C;;CAIH,aAAa;AACX,SAAO;;CAGT,aAAa,YAAY,MAAqC;AAC5D,MAAI,CAAC,KAAK,UACR,OAAM,IAAI,MAAM,oBAAoB;AAGtC,SAAO,IAAI,oBAAoB,EAC7B,UAAU,MAAM,SAAS,YAAY,KAAK,UAAU,EACrD,CAAC;;CAGJ,YAA2C;AACzC,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,WAAW,KAAK,SAAS,WAAW;GACrC;;;;;;;;AA0BL,IAAa,0BAAb,MAAa,gCACH,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT;CAEA,WAAW;CAEX,uBAAuB;CAEvB,0BAA0B;CAE1B,IAAI,YAAY;AACd,SAAO,CAAC,KAAK,UAAU,GAAG,KAAK,qBAAqB,UAAU;;CAGhE,IAAI,aAAa;AACf,SAAO,KAAK,qBAAqB;;CAGnC,YAAY;CAEZ,gBAAgB;CAEhB,gBAAgB;CAEhB;CAEA,YAAY,QAAsC;AAChD,QAAM,OAAO;AACb,OAAK,WAAW,OAAO;AACvB,OAAK,uBAAuB,OAAO;AACnC,OAAK,uBACH,OAAO,wBAAwB,KAAK;AACtC,OAAK,gBAAgB,OAAO,iBAAiB,KAAK;AAClD,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,YAAY,OAAO,aAAa,KAAK;AAC1C,OAAK,gBAAgB,OAAO,iBAAiB,KAAK;AAClD,OAAK,0BAA0B,OAAO,2BAA2B;;;CAInE,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;EAE7D,MAAM,GAAG,KAAK,WAAW,MAAM,GAAG,SAAS;EAE3C,IAAI,cAAc;EAClB,IAAI,oBAA8B,EAAE;AAGpC,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK,GAAG;GAC9C,MAAM,SAAS,YAAY,KAAK,OAAO;KACpC,KAAK,uBAAuB,EAAE;IAC/B,GAAG;IACJ,EAAE;AAGH,OADuB,MAAM,KAAK,CAAC,KAAK,eACpB;IAElB,MAAM,YACJ,MAAM,KAAK,qBAAqB,SAAS,OAAO,OAC9C,KAAK,qBAAqB,YAAY;MACnC,KAAK,qBAAqB,WAAW;KACtC,GAAG;KACJ,CAAC,CACH;AAOH,QALE,MAAM,KAAK,qBAAqB,SAAS,cAAc,UAAU,GAEjC,KAAK,UAIrC;;GAIJ,MAAM,UAAU,MAAM,KAAK,SAAS,MAClC,QAGA,aACI,MAAM,KAAK,EAAE,QAAQ,OAAO,QAAQ,GAAG,GAAG,MACxC,WAAW,SAAS,OAAO,IAAI,IAAI,CACpC,GACD,KAAA,EACL;GACD,MAAM,EAAE,cAAc,KAAK;AAG3B,OAAI,KAAK,wBACP,qBAAoB,kBAAkB,OACpC,QAAQ,KAAK,MAAM,EAAE,WAAW,CACjC;AAGH,iBAAc,QAAQ,KAAK,OAAO;IAChC,aAAa,EAAE;IACf,UAAU,EAAE;IACb,EAAE;;EAKL,MAAM,YAAY;IACf,KAAK,qBAAqB,WAAW;GACtC,GAAG;GACJ;EACD,MAAM,SAAS,MAAM,KAAK,qBAAqB,KAC7C,WACA,YAAY,SAAS,oBAAoB,CAC1C;AAGD,MAAI,KAAK,wBACP,QAAO;GAAE,GAAG;GAAQ;GAAmB;AAEzC,SAAO;;CAGT,aAAa;AACX,SAAO;;CAGT,aAAa,YAAY,MAAyC;AAChE,MAAI,CAAC,KAAK,UACR,OAAM,IAAI,MAAM,oBAAoB;AAGtC,MAAI,CAAC,KAAK,uBACR,OAAM,IAAI,MAAM,iCAAiC;AAGnD,SAAO,IAAI,wBAAwB;GACjC,UAAU,MAAM,SAAS,YAAY,KAAK,UAAU;GACpD,sBAAsB,MAAM,oBAAoB,YAC9C,KAAK,uBACN;GACF,CAAC;;CAGJ,YAA+C;AAC7C,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,WAAW,KAAK,SAAS,WAAW;GACpC,wBAAwB,KAAK,qBAAqB,WAAW;GAC9D;;;;;;;;AAoBL,IAAa,uBAAb,MAAa,6BACH,UAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT;CAEA,WAAW;CAEX,YAAY;CAEZ,uBAAuB;CAEvB,sBAAsB;CAEtB;CAEA,IAAI,wBAA4C;AAC9C,SAAO,IAAI,eAAe;GACxB,gBAAgB,CAAC,eAAe;GAChC,UAAU;GACX,CAAC;;CAGJ,iBAAiB,KAAK;CAEtB,IAAI,YAAY;AACd,SAAO,CACL,GAAG,IAAI,IAAI;GACT,KAAK;GACL,GAAG,KAAK,SAAS;GACjB,GAAG,KAAK,eAAe;GACxB,CAAC,CACH,CAAC,QACC,QACC,QAAQ,KAAK,wBAAwB,QAAQ,KAAK,oBACrD;;CAGH,IAAI,aAAa;AACf,SAAO,CAAC,KAAK,UAAU;;CAGzB,YAAY,QAAmC;AAC7C,QAAM,OAAO;AACb,OAAK,WAAW,OAAO;AACvB,OAAK,iBAAiB,OAAO;AAC7B,OAAK,uBACH,OAAO,wBAAwB,KAAK;AACtC,OAAK,WAAW,OAAO,YAAY,KAAK;AACxC,OAAK,YAAY,OAAO,aAAa,KAAK;AAC1C,OAAK,iBAAiB,OAAO,kBAAkB,KAAK;AACpD,OAAK,sBACH,OAAO,uBAAuB,KAAK;;;CAIvC,MAAM,wBAAwB,KAAe,MAA+B;EAC1E,MAAM,WAAoC;GACxC,cAAc,IAAI;GAClB,GAAG,IAAI;GACR;EACD,MAAM,eAAwC,EAAE;AAChD,OAAK,eAAe,eAAe,SAAS,UAAU;AACpD,gBAAa,SAAS,SAAS;IAC/B;AAQF,SADe;IAJZ,KAAK,uBAAuB,MAAM,KAAK,eAAe,OAAO,EAC5D,GAAG,cACJ,CAAC;GAE4B,GAAG;GAAM;;;CAK3C,MAAM,uBAAuB,KAAe,KAAa;EACvD,MAAM,WAAoC;GACxC,cAAc,IAAI;GAClB,GAAG,IAAI;GACR;EACD,MAAM,eAAwC,EAAE;AAChD,OAAK,eAAe,eAAe,SAAS,UAAU;AACpD,gBAAa,SAAS,SAAS;IAC/B;EACF,MAAM,aAAsC,GACzC,KAAK,uBAAuB,MAAM,KAAK,eAAe,OAAO,EAC5D,GAAG,cACJ,CAAC,EACH;AAED,SADe;IAAG,KAAK,sBAAsB;GAAK,GAAG;GAAY;;;CAKnE,MAAM,MACJ,QACA,YACsB;AACtB,MAAI,EAAE,KAAK,YAAY,QACrB,OAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,aAAa;EAE7D,MAAM,GAAG,KAAK,WAAW,MAAM,GAAG,SAAS;EAE3C,MAAM,cAAc;EAEpB,MAAM,gBAAgB,MAAM,KAAK,wBAC/B,YAAY,IACZ,KACD;EACD,IAAI,MAAM,MAAM,KAAK,SAAS,QAC5B,EAAE,GAAG,eAAe,EACpB,YAAY,SAAS,SAAS,CAC/B;EAED,MAAM,cAAc,CAAC,IAAI;AAEzB,OAAK,IAAI,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,GAAG;GAK9C,MAAM,SAAS;IAAE,GAJI,MAAM,KAAK,uBAC9B,YAAY,IACZ,IACD;IACiC,GAAG;IAAM;AAC3C,SAAM,MAAM,KAAK,eAAe,QAC9B,EAAE,GAAG,QAAQ,EACb,YAAY,SAAS,SAAS,CAC/B;AACD,eAAY,KAAK,IAAI;;AAGvB,SAAO,GAAG,KAAK,YAAY,KAAK;;CAGlC,aAAa;AACX,SAAO;;CAGT,aAAa,YAAY,MAAsC;EAC7D,MAAM,qBAAqB,KAAK;AAEhC,MAAI,CAAC,mBACH,OAAM,IAAI,MAAM,oBAAoB;EAGtC,MAAM,gCAAgC,KAAK;AAE3C,MAAI,CAAC,8BACH,OAAM,IAAI,MAAM,2BAA2B;AAG7C,SAAO,IAAI,qBAAqB;GAC9B,UAAU,MAAM,SAAS,YAAY,mBAAmB;GACxD,gBAAgB,MAAM,SAAS,YAAY,8BAA8B;GAC1E,CAAC;;CAGJ,YAA4C;AAC1C,SAAO;GACL,OAAO,KAAK,YAAY;GACxB,WAAW,KAAK,SAAS,WAAW;GACpC,kBAAkB,KAAK,eAAe,WAAW;GAClD"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
2
|
let _langchain_core_prompts = require("@langchain/core/prompts");
|
|
3
|
-
|
|
4
3
|
//#region src/chains/combine_documents/base.ts
|
|
5
|
-
const DEFAULT_DOCUMENT_SEPARATOR = "\n\n";
|
|
6
4
|
const DOCUMENTS_KEY = "context";
|
|
7
5
|
const DEFAULT_DOCUMENT_PROMPT = /* @__PURE__ */ _langchain_core_prompts.PromptTemplate.fromTemplate("{page_content}");
|
|
8
6
|
async function formatDocuments({ documentPrompt, documentSeparator, documents, config }) {
|
|
@@ -12,10 +10,9 @@ async function formatDocuments({ documentPrompt, documentSeparator, documents, c
|
|
|
12
10
|
page_content: document.pageContent
|
|
13
11
|
}, config)))).join(documentSeparator);
|
|
14
12
|
}
|
|
15
|
-
|
|
16
13
|
//#endregion
|
|
17
14
|
exports.DEFAULT_DOCUMENT_PROMPT = DEFAULT_DOCUMENT_PROMPT;
|
|
18
|
-
exports.DEFAULT_DOCUMENT_SEPARATOR = DEFAULT_DOCUMENT_SEPARATOR;
|
|
19
15
|
exports.DOCUMENTS_KEY = DOCUMENTS_KEY;
|
|
20
16
|
exports.formatDocuments = formatDocuments;
|
|
17
|
+
|
|
21
18
|
//# sourceMappingURL=base.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.cjs","names":[],"sources":["../../../src/chains/combine_documents/base.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\n\nexport const DEFAULT_DOCUMENT_SEPARATOR = \"\\n\\n\";\n\nexport const DOCUMENTS_KEY = \"context\";\nexport const INTERMEDIATE_STEPS_KEY = \"intermediate_steps\";\n\nexport const DEFAULT_DOCUMENT_PROMPT =\n /* #__PURE__ */ PromptTemplate.fromTemplate(\"{page_content}\");\n\nexport async function formatDocuments({\n documentPrompt,\n documentSeparator,\n documents,\n config,\n}: {\n documentPrompt: BasePromptTemplate;\n documentSeparator: string;\n documents: Document[];\n config?: RunnableConfig;\n}) {\n if (documents == null || documents.length === 0) {\n return \"\";\n }\n const formattedDocs = await Promise.all(\n documents.map((document) =>\n documentPrompt\n .withConfig({ runName: \"document_formatter\" })\n .invoke(\n { ...document.metadata, page_content: document.pageContent },\n config\n )\n )\n );\n return formattedDocs.join(documentSeparator);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.cjs","names":[],"sources":["../../../src/chains/combine_documents/base.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\n\nexport const DEFAULT_DOCUMENT_SEPARATOR = \"\\n\\n\";\n\nexport const DOCUMENTS_KEY = \"context\";\nexport const INTERMEDIATE_STEPS_KEY = \"intermediate_steps\";\n\nexport const DEFAULT_DOCUMENT_PROMPT =\n /* #__PURE__ */ PromptTemplate.fromTemplate(\"{page_content}\");\n\nexport async function formatDocuments({\n documentPrompt,\n documentSeparator,\n documents,\n config,\n}: {\n documentPrompt: BasePromptTemplate;\n documentSeparator: string;\n documents: Document[];\n config?: RunnableConfig;\n}) {\n if (documents == null || documents.length === 0) {\n return \"\";\n }\n const formattedDocs = await Promise.all(\n documents.map((document) =>\n documentPrompt\n .withConfig({ runName: \"document_formatter\" })\n .invoke(\n { ...document.metadata, page_content: document.pageContent },\n config\n )\n )\n );\n return formattedDocs.join(documentSeparator);\n}\n"],"mappings":";;;AAMA,MAAa,gBAAgB;AAG7B,MAAa,0BACK,wCAAA,eAAe,aAAa,iBAAiB;AAE/D,eAAsB,gBAAgB,EACpC,gBACA,mBACA,WACA,UAMC;AACD,KAAI,aAAa,QAAQ,UAAU,WAAW,EAC5C,QAAO;AAYT,SAVsB,MAAM,QAAQ,IAClC,UAAU,KAAK,aACb,eACG,WAAW,EAAE,SAAS,sBAAsB,CAAC,CAC7C,OACC;EAAE,GAAG,SAAS;EAAU,cAAc,SAAS;EAAa,EAC5D,OACD,CACJ,CACF,EACoB,KAAK,kBAAkB"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { PromptTemplate } from "@langchain/core/prompts";
|
|
2
|
-
|
|
3
2
|
//#region src/chains/combine_documents/base.ts
|
|
4
|
-
const DEFAULT_DOCUMENT_SEPARATOR = "\n\n";
|
|
5
3
|
const DOCUMENTS_KEY = "context";
|
|
6
4
|
const DEFAULT_DOCUMENT_PROMPT = /* @__PURE__ */ PromptTemplate.fromTemplate("{page_content}");
|
|
7
5
|
async function formatDocuments({ documentPrompt, documentSeparator, documents, config }) {
|
|
@@ -11,7 +9,7 @@ async function formatDocuments({ documentPrompt, documentSeparator, documents, c
|
|
|
11
9
|
page_content: document.pageContent
|
|
12
10
|
}, config)))).join(documentSeparator);
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
//#endregion
|
|
16
|
-
export { DEFAULT_DOCUMENT_PROMPT,
|
|
13
|
+
export { DEFAULT_DOCUMENT_PROMPT, DOCUMENTS_KEY, formatDocuments };
|
|
14
|
+
|
|
17
15
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","names":[],"sources":["../../../src/chains/combine_documents/base.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\n\nexport const DEFAULT_DOCUMENT_SEPARATOR = \"\\n\\n\";\n\nexport const DOCUMENTS_KEY = \"context\";\nexport const INTERMEDIATE_STEPS_KEY = \"intermediate_steps\";\n\nexport const DEFAULT_DOCUMENT_PROMPT =\n /* #__PURE__ */ PromptTemplate.fromTemplate(\"{page_content}\");\n\nexport async function formatDocuments({\n documentPrompt,\n documentSeparator,\n documents,\n config,\n}: {\n documentPrompt: BasePromptTemplate;\n documentSeparator: string;\n documents: Document[];\n config?: RunnableConfig;\n}) {\n if (documents == null || documents.length === 0) {\n return \"\";\n }\n const formattedDocs = await Promise.all(\n documents.map((document) =>\n documentPrompt\n .withConfig({ runName: \"document_formatter\" })\n .invoke(\n { ...document.metadata, page_content: document.pageContent },\n config\n )\n )\n );\n return formattedDocs.join(documentSeparator);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","names":[],"sources":["../../../src/chains/combine_documents/base.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BasePromptTemplate, PromptTemplate } from \"@langchain/core/prompts\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\n\nexport const DEFAULT_DOCUMENT_SEPARATOR = \"\\n\\n\";\n\nexport const DOCUMENTS_KEY = \"context\";\nexport const INTERMEDIATE_STEPS_KEY = \"intermediate_steps\";\n\nexport const DEFAULT_DOCUMENT_PROMPT =\n /* #__PURE__ */ PromptTemplate.fromTemplate(\"{page_content}\");\n\nexport async function formatDocuments({\n documentPrompt,\n documentSeparator,\n documents,\n config,\n}: {\n documentPrompt: BasePromptTemplate;\n documentSeparator: string;\n documents: Document[];\n config?: RunnableConfig;\n}) {\n if (documents == null || documents.length === 0) {\n return \"\";\n }\n const formattedDocs = await Promise.all(\n documents.map((document) =>\n documentPrompt\n .withConfig({ runName: \"document_formatter\" })\n .invoke(\n { ...document.metadata, page_content: document.pageContent },\n config\n )\n )\n );\n return formattedDocs.join(documentSeparator);\n}\n"],"mappings":";;AAMA,MAAa,gBAAgB;AAG7B,MAAa,0BACK,+BAAe,aAAa,iBAAiB;AAE/D,eAAsB,gBAAgB,EACpC,gBACA,mBACA,WACA,UAMC;AACD,KAAI,aAAa,QAAQ,UAAU,WAAW,EAC5C,QAAO;AAYT,SAVsB,MAAM,QAAQ,IAClC,UAAU,KAAK,aACb,eACG,WAAW,EAAE,SAAS,sBAAsB,CAAC,CAC7C,OACC;EAAE,GAAG,SAAS;EAAU,cAAc,SAAS;EAAa,EAC5D,OACD,CACJ,CACF,EACoB,KAAK,kBAAkB"}
|