langchain 0.2.10 → 0.2.11
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/chat_models/universal.cjs +1 -0
- package/chat_models/universal.d.cts +1 -0
- package/chat_models/universal.d.ts +1 -0
- package/chat_models/universal.js +1 -0
- package/dist/chat_models/universal.cjs +600 -0
- package/dist/chat_models/universal.d.ts +115 -0
- package/dist/chat_models/universal.js +595 -0
- package/dist/document_loaders/web/assemblyai.cjs +9 -1
- package/dist/document_loaders/web/assemblyai.js +9 -1
- package/dist/experimental/chrome_ai/app/dist/bundle.cjs +1250 -0
- package/dist/experimental/chrome_ai/app/dist/bundle.d.ts +1 -0
- package/dist/experimental/chrome_ai/app/dist/bundle.js +1249 -0
- package/dist/load/import_constants.cjs +1 -0
- package/dist/load/import_constants.js +1 -0
- package/package.json +65 -6
- package/dist/agents/tests/agent.int.test.d.ts +0 -1
- package/dist/agents/tests/agent.int.test.js +0 -309
- package/dist/agents/tests/chat_convo_output_parser.test.d.ts +0 -1
- package/dist/agents/tests/chat_convo_output_parser.test.js +0 -91
- package/dist/agents/tests/create_openai_functions_agent.int.test.d.ts +0 -2
- package/dist/agents/tests/create_openai_functions_agent.int.test.js +0 -71
- package/dist/agents/tests/create_openai_tools_agent.int.test.d.ts +0 -1
- package/dist/agents/tests/create_openai_tools_agent.int.test.js +0 -75
- package/dist/agents/tests/create_react_agent.int.test.d.ts +0 -1
- package/dist/agents/tests/create_react_agent.int.test.js +0 -32
- package/dist/agents/tests/create_structured_chat_agent.int.test.d.ts +0 -1
- package/dist/agents/tests/create_structured_chat_agent.int.test.js +0 -32
- package/dist/agents/tests/create_tool_calling_agent.int.test.d.ts +0 -1
- package/dist/agents/tests/create_tool_calling_agent.int.test.js +0 -122
- package/dist/agents/tests/create_xml_agent.int.test.d.ts +0 -1
- package/dist/agents/tests/create_xml_agent.int.test.js +0 -32
- package/dist/agents/tests/json.test.d.ts +0 -1
- package/dist/agents/tests/json.test.js +0 -74
- package/dist/agents/tests/react.test.d.ts +0 -1
- package/dist/agents/tests/react.test.js +0 -44
- package/dist/agents/tests/runnable.int.test.d.ts +0 -1
- package/dist/agents/tests/runnable.int.test.js +0 -104
- package/dist/agents/tests/sql.test.d.ts +0 -1
- package/dist/agents/tests/sql.test.js +0 -133
- package/dist/agents/tests/structured_chat_output_parser.test.d.ts +0 -1
- package/dist/agents/tests/structured_chat_output_parser.test.js +0 -35
- package/dist/agents/tests/structured_chat_output_parser_with_retries.int.test.d.ts +0 -1
- package/dist/agents/tests/structured_chat_output_parser_with_retries.int.test.js +0 -44
- package/dist/agents/tests/structured_output_runnables.int.test.d.ts +0 -1
- package/dist/agents/tests/structured_output_runnables.int.test.js +0 -112
- package/dist/agents/toolkits/tests/conversational_retrieval.int.test.d.ts +0 -1
- package/dist/agents/toolkits/tests/conversational_retrieval.int.test.js +0 -41
- package/dist/cache/tests/file_system.int.test.d.ts +0 -1
- package/dist/cache/tests/file_system.int.test.js +0 -32
- package/dist/chains/openai_functions/tests/create_runnable_chains.int.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/create_runnable_chains.int.test.js +0 -139
- package/dist/chains/openai_functions/tests/extraction.int.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/extraction.int.test.js +0 -33
- package/dist/chains/openai_functions/tests/openapi.int.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/openapi.int.test.js +0 -130
- package/dist/chains/openai_functions/tests/openapi.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/openapi.test.js +0 -172
- package/dist/chains/openai_functions/tests/structured_output.int.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/structured_output.int.test.js +0 -40
- package/dist/chains/openai_functions/tests/structured_output.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/structured_output.test.js +0 -102
- package/dist/chains/openai_functions/tests/tagging.int.test.d.ts +0 -1
- package/dist/chains/openai_functions/tests/tagging.int.test.js +0 -21
- package/dist/chains/query_constructor/tests/query_chain.int.test.d.ts +0 -1
- package/dist/chains/query_constructor/tests/query_chain.int.test.js +0 -93
- package/dist/chains/query_constructor/tests/query_parser.test.d.ts +0 -1
- package/dist/chains/query_constructor/tests/query_parser.test.js +0 -28
- package/dist/chains/question_answering/tests/load.int.test.d.ts +0 -1
- package/dist/chains/question_answering/tests/load.int.test.js +0 -39
- package/dist/chains/router/tests/multi_prompt.int.test.d.ts +0 -1
- package/dist/chains/router/tests/multi_prompt.int.test.js +0 -45
- package/dist/chains/router/tests/multi_prompt.test.d.ts +0 -1
- package/dist/chains/router/tests/multi_prompt.test.js +0 -62
- package/dist/chains/router/tests/multi_retrieval_qa.int.test.d.ts +0 -1
- package/dist/chains/router/tests/multi_retrieval_qa.int.test.js +0 -67
- package/dist/chains/router/tests/multi_retrieval_qa.test.d.ts +0 -1
- package/dist/chains/router/tests/multi_retrieval_qa.test.js +0 -125
- package/dist/chains/summarization/tests/load.int.test.d.ts +0 -1
- package/dist/chains/summarization/tests/load.int.test.js +0 -37
- package/dist/chains/tests/api_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/api_chain.int.test.js +0 -55
- package/dist/chains/tests/combine_docs_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/combine_docs_chain.int.test.js +0 -50
- package/dist/chains/tests/combine_docs_chain.test.d.ts +0 -1
- package/dist/chains/tests/combine_docs_chain.test.js +0 -98
- package/dist/chains/tests/constitutional_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/constitutional_chain.int.test.js +0 -30
- package/dist/chains/tests/constitutional_chain.test.d.ts +0 -1
- package/dist/chains/tests/constitutional_chain.test.js +0 -63
- package/dist/chains/tests/conversation_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/conversation_chain.int.test.js +0 -9
- package/dist/chains/tests/conversational_retrieval_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/conversational_retrieval_chain.int.test.js +0 -243
- package/dist/chains/tests/example_data/open_meteo_docs.d.ts +0 -1
- package/dist/chains/tests/example_data/open_meteo_docs.js +0 -29
- package/dist/chains/tests/history_aware_retriever.int.test.d.ts +0 -1
- package/dist/chains/tests/history_aware_retriever.int.test.js +0 -41
- package/dist/chains/tests/history_aware_retriever.test.d.ts +0 -1
- package/dist/chains/tests/history_aware_retriever.test.js +0 -27
- package/dist/chains/tests/llm_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/llm_chain.int.test.js +0 -119
- package/dist/chains/tests/openai_moderation.int.test.d.ts +0 -1
- package/dist/chains/tests/openai_moderation.int.test.js +0 -30
- package/dist/chains/tests/retrieval_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/retrieval_chain.int.test.js +0 -69
- package/dist/chains/tests/retrieval_chain.test.d.ts +0 -1
- package/dist/chains/tests/retrieval_chain.test.js +0 -36
- package/dist/chains/tests/sequential_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/sequential_chain.int.test.js +0 -88
- package/dist/chains/tests/sequential_chain.test.d.ts +0 -1
- package/dist/chains/tests/sequential_chain.test.js +0 -295
- package/dist/chains/tests/simple_sequential_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/simple_sequential_chain.int.test.js +0 -81
- package/dist/chains/tests/simple_sequential_chain.test.d.ts +0 -1
- package/dist/chains/tests/simple_sequential_chain.test.js +0 -128
- package/dist/chains/tests/sql_db_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/sql_db_chain.int.test.js +0 -125
- package/dist/chains/tests/transform.test.d.ts +0 -1
- package/dist/chains/tests/transform.test.js +0 -12
- package/dist/chains/tests/vector_db_qa_chain.int.test.d.ts +0 -1
- package/dist/chains/tests/vector_db_qa_chain.int.test.js +0 -45
- package/dist/document_loaders/tests/assemblyai.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/assemblyai.int.test.js +0 -111
- package/dist/document_loaders/tests/chatgpt-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/chatgpt-blob.test.js +0 -30
- package/dist/document_loaders/tests/chatgpt.test.d.ts +0 -1
- package/dist/document_loaders/tests/chatgpt.test.js +0 -29
- package/dist/document_loaders/tests/cheerio.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/cheerio.int.test.js +0 -21
- package/dist/document_loaders/tests/college_confidential.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/college_confidential.int.test.js +0 -6
- package/dist/document_loaders/tests/confluence.test.d.ts +0 -1
- package/dist/document_loaders/tests/confluence.test.js +0 -52
- package/dist/document_loaders/tests/couchbase.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/couchbase.int.test.js +0 -28
- package/dist/document_loaders/tests/csv-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/csv-blob.test.js +0 -53
- package/dist/document_loaders/tests/csv.test.d.ts +0 -1
- package/dist/document_loaders/tests/csv.test.js +0 -41
- package/dist/document_loaders/tests/directory.test.d.ts +0 -1
- package/dist/document_loaders/tests/directory.test.js +0 -38
- package/dist/document_loaders/tests/docx.test.d.ts +0 -1
- package/dist/document_loaders/tests/docx.test.js +0 -11
- package/dist/document_loaders/tests/epub.test.d.ts +0 -1
- package/dist/document_loaders/tests/epub.test.js +0 -18
- package/dist/document_loaders/tests/example_data/github_api_responses.d.ts +0 -5
- package/dist/document_loaders/tests/example_data/github_api_responses.js +0 -91
- package/dist/document_loaders/tests/figma.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/figma.int.test.js +0 -13
- package/dist/document_loaders/tests/firecrawl.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/firecrawl.int.test.js +0 -30
- package/dist/document_loaders/tests/gitbook.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/gitbook.int.test.js +0 -14
- package/dist/document_loaders/tests/github.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/github.int.test.js +0 -86
- package/dist/document_loaders/tests/github.test.d.ts +0 -1
- package/dist/document_loaders/tests/github.test.js +0 -51
- package/dist/document_loaders/tests/hn.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/hn.int.test.js +0 -6
- package/dist/document_loaders/tests/imsdb.test.d.ts +0 -1
- package/dist/document_loaders/tests/imsdb.test.js +0 -6
- package/dist/document_loaders/tests/json-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/json-blob.test.js +0 -91
- package/dist/document_loaders/tests/json.test.d.ts +0 -1
- package/dist/document_loaders/tests/json.test.js +0 -69
- package/dist/document_loaders/tests/jsonl-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/jsonl-blob.test.js +0 -46
- package/dist/document_loaders/tests/jsonl.test.d.ts +0 -1
- package/dist/document_loaders/tests/jsonl.test.js +0 -15
- package/dist/document_loaders/tests/multi_file.test.d.ts +0 -1
- package/dist/document_loaders/tests/multi_file.test.js +0 -49
- package/dist/document_loaders/tests/notion.test.d.ts +0 -1
- package/dist/document_loaders/tests/notion.test.js +0 -11
- package/dist/document_loaders/tests/notionapi.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/notionapi.int.test.js +0 -80
- package/dist/document_loaders/tests/notionapi.test.d.ts +0 -1
- package/dist/document_loaders/tests/notionapi.test.js +0 -84
- package/dist/document_loaders/tests/notiondb.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/notiondb.int.test.js +0 -13
- package/dist/document_loaders/tests/obsidian.test.d.ts +0 -1
- package/dist/document_loaders/tests/obsidian.test.js +0 -119
- package/dist/document_loaders/tests/pdf-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/pdf-blob.test.js +0 -44
- package/dist/document_loaders/tests/pdf.test.d.ts +0 -1
- package/dist/document_loaders/tests/pdf.test.js +0 -25
- package/dist/document_loaders/tests/playwright_web.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/playwright_web.int.test.js +0 -27
- package/dist/document_loaders/tests/pptx.test.d.ts +0 -1
- package/dist/document_loaders/tests/pptx.test.js +0 -17
- package/dist/document_loaders/tests/puppeteer.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/puppeteer.int.test.js +0 -47
- package/dist/document_loaders/tests/recursive_url.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/recursive_url.int.test.js +0 -64
- package/dist/document_loaders/tests/s3.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/s3.int.test.js +0 -48
- package/dist/document_loaders/tests/searchapi.test.d.ts +0 -1
- package/dist/document_loaders/tests/searchapi.test.js +0 -29
- package/dist/document_loaders/tests/serpapi.test.d.ts +0 -1
- package/dist/document_loaders/tests/serpapi.test.js +0 -21
- package/dist/document_loaders/tests/sitemap.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/sitemap.int.test.js +0 -28
- package/dist/document_loaders/tests/sonix_audio.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/sonix_audio.int.test.js +0 -55
- package/dist/document_loaders/tests/sort_xyz_blockchain.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/sort_xyz_blockchain.int.test.js +0 -38
- package/dist/document_loaders/tests/srt-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/srt-blob.test.js +0 -18
- package/dist/document_loaders/tests/srt.test.d.ts +0 -1
- package/dist/document_loaders/tests/srt.test.js +0 -16
- package/dist/document_loaders/tests/text-blob.test.d.ts +0 -1
- package/dist/document_loaders/tests/text-blob.test.js +0 -14
- package/dist/document_loaders/tests/text.test.d.ts +0 -1
- package/dist/document_loaders/tests/text.test.js +0 -22
- package/dist/document_loaders/tests/unstructured.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/unstructured.int.test.js +0 -58
- package/dist/document_loaders/tests/webpdf.int.test.d.ts +0 -1
- package/dist/document_loaders/tests/webpdf.int.test.js +0 -90
- package/dist/document_transformers/tests/openai_functions.int.test.d.ts +0 -1
- package/dist/document_transformers/tests/openai_functions.int.test.js +0 -40
- package/dist/embeddings/tests/cache.test.d.ts +0 -1
- package/dist/embeddings/tests/cache.test.js +0 -24
- package/dist/embeddings/tests/fake.test.d.ts +0 -1
- package/dist/embeddings/tests/fake.test.js +0 -34
- package/dist/evaluation/agents/tests/trajectory_eval_chain.int.test.d.ts +0 -1
- package/dist/evaluation/agents/tests/trajectory_eval_chain.int.test.js +0 -33
- package/dist/evaluation/comparison/tests/pairwise_eval_chain.int.test.d.ts +0 -1
- package/dist/evaluation/comparison/tests/pairwise_eval_chain.int.test.js +0 -46
- package/dist/evaluation/criteria/tests/criteria_eval_chain.int.test.d.ts +0 -1
- package/dist/evaluation/criteria/tests/criteria_eval_chain.int.test.js +0 -108
- package/dist/evaluation/embedding_distance/tests/embedding_distance_eval_chain.int.test.d.ts +0 -1
- package/dist/evaluation/embedding_distance/tests/embedding_distance_eval_chain.int.test.js +0 -26
- package/dist/evaluation/qa/tests/eval_chain.int.test.d.ts +0 -1
- package/dist/evaluation/qa/tests/eval_chain.int.test.js +0 -27
- package/dist/experimental/autogpt/tests/output_parser.test.d.ts +0 -1
- package/dist/experimental/autogpt/tests/output_parser.test.js +0 -8
- package/dist/experimental/autogpt/tests/prompt.test.d.ts +0 -1
- package/dist/experimental/autogpt/tests/prompt.test.js +0 -69
- package/dist/experimental/autogpt/tests/prompt_generator.test.d.ts +0 -1
- package/dist/experimental/autogpt/tests/prompt_generator.test.js +0 -91
- package/dist/experimental/chains/tests/violation_of_expectations_chain.int.test.d.ts +0 -1
- package/dist/experimental/chains/tests/violation_of_expectations_chain.int.test.js +0 -26
- package/dist/experimental/generative_agents/tests/generative_agent.int.test.d.ts +0 -1
- package/dist/experimental/generative_agents/tests/generative_agent.int.test.js +0 -304
- package/dist/experimental/masking/tests/masking-extended.test.d.ts +0 -1
- package/dist/experimental/masking/tests/masking-extended.test.js +0 -58
- package/dist/experimental/masking/tests/masking.test.d.ts +0 -1
- package/dist/experimental/masking/tests/masking.test.js +0 -388
- package/dist/experimental/openai_assistant/tests/openai_assistant.int.test.d.ts +0 -1
- package/dist/experimental/openai_assistant/tests/openai_assistant.int.test.js +0 -203
- package/dist/experimental/openai_files/tests/openai_file.int.test.d.ts +0 -1
- package/dist/experimental/openai_files/tests/openai_file.int.test.js +0 -87
- package/dist/experimental/plan_and_execute/tests/plan_and_execute.int.test.d.ts +0 -1
- package/dist/experimental/plan_and_execute/tests/plan_and_execute.int.test.js +0 -54
- package/dist/experimental/prompts/tests/handlebars.test.d.ts +0 -1
- package/dist/experimental/prompts/tests/handlebars.test.js +0 -24
- package/dist/experimental/tools/tests/pyinterpreter.int.test.d.ts +0 -1
- package/dist/experimental/tools/tests/pyinterpreter.int.test.js +0 -22
- package/dist/load/tests/cross_language.test.d.ts +0 -1
- package/dist/load/tests/cross_language.test.js +0 -83
- package/dist/load/tests/load.int.test.d.ts +0 -1
- package/dist/load/tests/load.int.test.js +0 -9
- package/dist/load/tests/load.test.d.ts +0 -1
- package/dist/load/tests/load.test.js +0 -412
- package/dist/memory/tests/buffer_memory.test.d.ts +0 -1
- package/dist/memory/tests/buffer_memory.test.js +0 -34
- package/dist/memory/tests/buffer_token_memory.int.test.d.ts +0 -1
- package/dist/memory/tests/buffer_token_memory.int.test.js +0 -47
- package/dist/memory/tests/buffer_window_memory.test.d.ts +0 -1
- package/dist/memory/tests/buffer_window_memory.test.js +0 -42
- package/dist/memory/tests/combined_memory.int.test.d.ts +0 -1
- package/dist/memory/tests/combined_memory.int.test.js +0 -74
- package/dist/memory/tests/entity_memory.int.test.d.ts +0 -1
- package/dist/memory/tests/entity_memory.int.test.js +0 -79
- package/dist/memory/tests/entity_memory.test.d.ts +0 -1
- package/dist/memory/tests/entity_memory.test.js +0 -48
- package/dist/memory/tests/summary.int.test.d.ts +0 -1
- package/dist/memory/tests/summary.int.test.js +0 -50
- package/dist/memory/tests/summary_buffer.int.test.d.ts +0 -1
- package/dist/memory/tests/summary_buffer.int.test.js +0 -55
- package/dist/memory/tests/vector_store_memory.int.test.d.ts +0 -1
- package/dist/memory/tests/vector_store_memory.int.test.js +0 -55
- package/dist/output_parsers/tests/combining.int.test.d.ts +0 -1
- package/dist/output_parsers/tests/combining.int.test.js +0 -26
- package/dist/output_parsers/tests/combining.test.d.ts +0 -1
- package/dist/output_parsers/tests/combining.test.js +0 -54
- package/dist/output_parsers/tests/datetime.test.d.ts +0 -1
- package/dist/output_parsers/tests/datetime.test.js +0 -14
- package/dist/output_parsers/tests/expression.test.d.ts +0 -1
- package/dist/output_parsers/tests/expression.test.js +0 -339
- package/dist/output_parsers/tests/http_response.test.d.ts +0 -1
- package/dist/output_parsers/tests/http_response.test.js +0 -39
- package/dist/output_parsers/tests/list.test.d.ts +0 -1
- package/dist/output_parsers/tests/list.test.js +0 -27
- package/dist/output_parsers/tests/openai_functions.int.test.d.ts +0 -1
- package/dist/output_parsers/tests/openai_functions.int.test.js +0 -89
- package/dist/output_parsers/tests/openai_tools.int.test.d.ts +0 -1
- package/dist/output_parsers/tests/openai_tools.int.test.js +0 -36
- package/dist/output_parsers/tests/structured.int.test.d.ts +0 -1
- package/dist/output_parsers/tests/structured.int.test.js +0 -150
- package/dist/prompts/tests/selectors.test.d.ts +0 -1
- package/dist/prompts/tests/selectors.test.js +0 -59
- package/dist/retrievers/self_query/tests/memory_self_query.int.test.d.ts +0 -1
- package/dist/retrievers/self_query/tests/memory_self_query.int.test.js +0 -330
- package/dist/retrievers/tests/chain_extract.int.test.d.ts +0 -1
- package/dist/retrievers/tests/chain_extract.int.test.js +0 -32
- package/dist/retrievers/tests/ensemble_retriever.int.test.d.ts +0 -1
- package/dist/retrievers/tests/ensemble_retriever.int.test.js +0 -74
- package/dist/retrievers/tests/hyde.int.test.d.ts +0 -1
- package/dist/retrievers/tests/hyde.int.test.js +0 -44
- package/dist/retrievers/tests/matryoshka_retriever.int.test.d.ts +0 -1
- package/dist/retrievers/tests/matryoshka_retriever.int.test.js +0 -113
- package/dist/retrievers/tests/multi_query.int.test.d.ts +0 -1
- package/dist/retrievers/tests/multi_query.int.test.js +0 -45
- package/dist/retrievers/tests/parent_document.int.test.d.ts +0 -1
- package/dist/retrievers/tests/parent_document.int.test.js +0 -122
- package/dist/retrievers/tests/score_threshold.int.test.d.ts +0 -1
- package/dist/retrievers/tests/score_threshold.int.test.js +0 -83
- package/dist/retrievers/tests/time_weighted.test.d.ts +0 -1
- package/dist/retrievers/tests/time_weighted.test.js +0 -320
- package/dist/retrievers/tests/vectorstores.test.d.ts +0 -1
- package/dist/retrievers/tests/vectorstores.test.js +0 -50
- package/dist/smith/tests/run_on_dataset.int.test.d.ts +0 -1
- package/dist/smith/tests/run_on_dataset.int.test.js +0 -257
- package/dist/smith/tests/runner_utils.int.test.d.ts +0 -9
- package/dist/smith/tests/runner_utils.int.test.js +0 -234
- package/dist/storage/tests/file_system.test.d.ts +0 -1
- package/dist/storage/tests/file_system.test.js +0 -81
- package/dist/tools/tests/chain.test.d.ts +0 -1
- package/dist/tools/tests/chain.test.js +0 -136
- package/dist/tools/tests/webbrowser.int.test.d.ts +0 -1
- package/dist/tools/tests/webbrowser.int.test.js +0 -80
- package/dist/tools/tests/webbrowser.test.d.ts +0 -1
- package/dist/tools/tests/webbrowser.test.js +0 -21
- package/dist/util/tests/async_caller.int.test.d.ts +0 -1
- package/dist/util/tests/async_caller.int.test.js +0 -34
- package/dist/util/tests/azure.test.d.ts +0 -1
- package/dist/util/tests/azure.test.js +0 -42
- package/dist/util/tests/openai-stream.test.d.ts +0 -1
- package/dist/util/tests/openai-stream.test.js +0 -135
- package/dist/util/tests/set.test.d.ts +0 -1
- package/dist/util/tests/set.test.js +0 -36
- package/dist/util/tests/sql_utils.test.d.ts +0 -1
- package/dist/util/tests/sql_utils.test.js +0 -50
- package/dist/vectorstores/tests/memory.test.d.ts +0 -1
- package/dist/vectorstores/tests/memory.test.js +0 -78
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
import { describe, expect, jest, test } from "@jest/globals";
|
|
2
|
-
import { FakeEmbeddings } from "@langchain/core/utils/testing";
|
|
3
|
-
import { MemoryVectorStore } from "../../vectorstores/memory.js";
|
|
4
|
-
import { BUFFER_IDX, LAST_ACCESSED_AT_KEY, TimeWeightedVectorStoreRetriever, } from "../time_weighted.js";
|
|
5
|
-
jest.useFakeTimers();
|
|
6
|
-
const mockNow = new Date("2023-04-18 15:30");
|
|
7
|
-
jest.setSystemTime(mockNow);
|
|
8
|
-
const getSec = (date) => Math.floor(date.getTime() / 1000);
|
|
9
|
-
const getMemoryStream = () => [
|
|
10
|
-
{
|
|
11
|
-
pageContent: "foo",
|
|
12
|
-
metadata: {
|
|
13
|
-
[BUFFER_IDX]: 0,
|
|
14
|
-
[LAST_ACCESSED_AT_KEY]: getSec(new Date("2023-04-18 12:00")),
|
|
15
|
-
created_at: getSec(new Date("2023-04-18 12:00")),
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
pageContent: "bar",
|
|
20
|
-
metadata: {
|
|
21
|
-
[BUFFER_IDX]: 1,
|
|
22
|
-
[LAST_ACCESSED_AT_KEY]: getSec(new Date("2023-04-18 13:00")),
|
|
23
|
-
created_at: getSec(new Date("2023-04-18 13:00")),
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
pageContent: "baz",
|
|
28
|
-
metadata: {
|
|
29
|
-
[BUFFER_IDX]: 2,
|
|
30
|
-
[LAST_ACCESSED_AT_KEY]: getSec(new Date("2023-04-18 11:00")),
|
|
31
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
];
|
|
35
|
-
describe("Test getRelevantDocuments", () => {
|
|
36
|
-
test("Should fail on a vector store with documents that have not been added through the addDocuments method on the retriever", async () => {
|
|
37
|
-
const vectorStore = new MemoryVectorStore(new FakeEmbeddings());
|
|
38
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
39
|
-
vectorStore,
|
|
40
|
-
memoryStream: [],
|
|
41
|
-
searchKwargs: 2,
|
|
42
|
-
});
|
|
43
|
-
await vectorStore.addDocuments([
|
|
44
|
-
{ pageContent: "aaa", metadata: {} },
|
|
45
|
-
{ pageContent: "aaaa", metadata: {} },
|
|
46
|
-
{ pageContent: "bbb", metadata: {} },
|
|
47
|
-
]);
|
|
48
|
-
const query = "aaa";
|
|
49
|
-
await expect(() => retriever.getRelevantDocuments(query)).rejects.toThrow();
|
|
50
|
-
});
|
|
51
|
-
test("For different pageContent with the same lastAccessedAt, return in descending order of similar words.", async () => {
|
|
52
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
53
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
54
|
-
memoryStream: [],
|
|
55
|
-
searchKwargs: 2,
|
|
56
|
-
});
|
|
57
|
-
await retriever.addDocuments([
|
|
58
|
-
{ pageContent: "aaa", metadata: {} },
|
|
59
|
-
{ pageContent: "aaaa", metadata: {} },
|
|
60
|
-
{ pageContent: "bbb", metadata: {} },
|
|
61
|
-
]);
|
|
62
|
-
const query = "aaa";
|
|
63
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
64
|
-
const expected = [
|
|
65
|
-
{
|
|
66
|
-
pageContent: "aaa",
|
|
67
|
-
metadata: {
|
|
68
|
-
[BUFFER_IDX]: 0,
|
|
69
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
70
|
-
created_at: getSec(mockNow),
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
pageContent: "aaaa",
|
|
75
|
-
metadata: {
|
|
76
|
-
[BUFFER_IDX]: 1,
|
|
77
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
78
|
-
created_at: getSec(mockNow),
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
pageContent: "bbb",
|
|
83
|
-
metadata: {
|
|
84
|
-
[BUFFER_IDX]: 2,
|
|
85
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
86
|
-
created_at: getSec(mockNow),
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
];
|
|
90
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
91
|
-
});
|
|
92
|
-
test("Return in descending order of lastAccessedAt when memoryStream of the same pageContent", async () => {
|
|
93
|
-
const samePageContent = "Test query";
|
|
94
|
-
const samePageContentMemoryStream = getMemoryStream().map((doc) => ({
|
|
95
|
-
...doc,
|
|
96
|
-
pageContent: samePageContent,
|
|
97
|
-
}));
|
|
98
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
99
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
100
|
-
memoryStream: samePageContentMemoryStream,
|
|
101
|
-
});
|
|
102
|
-
await retriever.addDocuments([
|
|
103
|
-
{ pageContent: samePageContent, metadata: {} },
|
|
104
|
-
]);
|
|
105
|
-
const query = "Test query";
|
|
106
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
107
|
-
const expected = [
|
|
108
|
-
{
|
|
109
|
-
pageContent: samePageContent,
|
|
110
|
-
metadata: {
|
|
111
|
-
[BUFFER_IDX]: 3,
|
|
112
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
113
|
-
created_at: getSec(mockNow),
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
pageContent: samePageContent,
|
|
118
|
-
metadata: {
|
|
119
|
-
[BUFFER_IDX]: 1,
|
|
120
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
121
|
-
created_at: getSec(new Date("2023-04-18 13:00")),
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
pageContent: samePageContent,
|
|
126
|
-
metadata: {
|
|
127
|
-
[BUFFER_IDX]: 0,
|
|
128
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
129
|
-
created_at: getSec(new Date("2023-04-18 12:00")),
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
pageContent: samePageContent,
|
|
134
|
-
metadata: {
|
|
135
|
-
[BUFFER_IDX]: 2,
|
|
136
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
137
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
];
|
|
141
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
142
|
-
});
|
|
143
|
-
test("Return in descending order of lastAccessedAt when memoryStream of different pageContent", async () => {
|
|
144
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
145
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
146
|
-
memoryStream: getMemoryStream(),
|
|
147
|
-
});
|
|
148
|
-
await retriever.addDocuments([{ pageContent: "qux", metadata: {} }]);
|
|
149
|
-
const query = "Test query";
|
|
150
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
151
|
-
const expected = [
|
|
152
|
-
{
|
|
153
|
-
pageContent: "qux",
|
|
154
|
-
metadata: {
|
|
155
|
-
[BUFFER_IDX]: 3,
|
|
156
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
157
|
-
created_at: getSec(mockNow),
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
pageContent: "bar",
|
|
162
|
-
metadata: {
|
|
163
|
-
[BUFFER_IDX]: 1,
|
|
164
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
165
|
-
created_at: getSec(new Date("2023-04-18 13:00")),
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
pageContent: "foo",
|
|
170
|
-
metadata: {
|
|
171
|
-
[BUFFER_IDX]: 0,
|
|
172
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
173
|
-
created_at: getSec(new Date("2023-04-18 12:00")),
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
pageContent: "baz",
|
|
178
|
-
metadata: {
|
|
179
|
-
[BUFFER_IDX]: 2,
|
|
180
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
181
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
];
|
|
185
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
186
|
-
});
|
|
187
|
-
test("Return in descending order of lastAccessedAt when memoryStream of different pageContent and decayRate", async () => {
|
|
188
|
-
const decayRate = 0.5;
|
|
189
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
190
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
191
|
-
memoryStream: getMemoryStream(),
|
|
192
|
-
decayRate,
|
|
193
|
-
});
|
|
194
|
-
await retriever.addDocuments([{ pageContent: "qux", metadata: {} }]);
|
|
195
|
-
const query = "Test query";
|
|
196
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
197
|
-
const expected = [
|
|
198
|
-
{
|
|
199
|
-
pageContent: "qux",
|
|
200
|
-
metadata: {
|
|
201
|
-
[BUFFER_IDX]: 3,
|
|
202
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
203
|
-
created_at: getSec(mockNow),
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
pageContent: "bar",
|
|
208
|
-
metadata: {
|
|
209
|
-
[BUFFER_IDX]: 1,
|
|
210
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
211
|
-
created_at: getSec(new Date("2023-04-18 13:00")),
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
pageContent: "foo",
|
|
216
|
-
metadata: {
|
|
217
|
-
[BUFFER_IDX]: 0,
|
|
218
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
219
|
-
created_at: getSec(new Date("2023-04-18 12:00")),
|
|
220
|
-
},
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
pageContent: "baz",
|
|
224
|
-
metadata: {
|
|
225
|
-
[BUFFER_IDX]: 2,
|
|
226
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
227
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
];
|
|
231
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
232
|
-
});
|
|
233
|
-
test("Return in descending order of lastAccessedAt when memoryStream of different pageContent and k = 3", async () => {
|
|
234
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
235
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
236
|
-
memoryStream: getMemoryStream(),
|
|
237
|
-
k: 3,
|
|
238
|
-
});
|
|
239
|
-
await retriever.addDocuments([{ pageContent: "qux", metadata: {} }]);
|
|
240
|
-
const query = "Test query";
|
|
241
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
242
|
-
const expected = [
|
|
243
|
-
{
|
|
244
|
-
pageContent: "qux",
|
|
245
|
-
metadata: {
|
|
246
|
-
[BUFFER_IDX]: 3,
|
|
247
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
248
|
-
created_at: getSec(mockNow),
|
|
249
|
-
},
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
pageContent: "bar",
|
|
253
|
-
metadata: {
|
|
254
|
-
[BUFFER_IDX]: 1,
|
|
255
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
256
|
-
created_at: getSec(new Date("2023-04-18 13:00")),
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
pageContent: "baz",
|
|
261
|
-
metadata: {
|
|
262
|
-
[BUFFER_IDX]: 2,
|
|
263
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
264
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
];
|
|
268
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
269
|
-
});
|
|
270
|
-
test("Return in descending order of lastAccessedAt when memoryStream of different pageContent and searchKwargs = 2", async () => {
|
|
271
|
-
const retriever = new TimeWeightedVectorStoreRetriever({
|
|
272
|
-
vectorStore: new MemoryVectorStore(new FakeEmbeddings()),
|
|
273
|
-
memoryStream: getMemoryStream(),
|
|
274
|
-
searchKwargs: 2,
|
|
275
|
-
});
|
|
276
|
-
await retriever.addDocuments([
|
|
277
|
-
{ pageContent: "qux", metadata: {} },
|
|
278
|
-
{ pageContent: "quux", metadata: {} },
|
|
279
|
-
{ pageContent: "corge", metadata: {} },
|
|
280
|
-
]);
|
|
281
|
-
const query = "Test query";
|
|
282
|
-
const resultsDocs = await retriever.getRelevantDocuments(query);
|
|
283
|
-
const expected = [
|
|
284
|
-
{
|
|
285
|
-
pageContent: "qux",
|
|
286
|
-
metadata: {
|
|
287
|
-
[BUFFER_IDX]: 3,
|
|
288
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
289
|
-
created_at: getSec(mockNow),
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
pageContent: "quux",
|
|
294
|
-
metadata: {
|
|
295
|
-
[BUFFER_IDX]: 4,
|
|
296
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
297
|
-
created_at: getSec(mockNow),
|
|
298
|
-
},
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
pageContent: "corge",
|
|
302
|
-
metadata: {
|
|
303
|
-
[BUFFER_IDX]: 5,
|
|
304
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
305
|
-
created_at: getSec(mockNow),
|
|
306
|
-
},
|
|
307
|
-
},
|
|
308
|
-
{
|
|
309
|
-
pageContent: "baz",
|
|
310
|
-
metadata: {
|
|
311
|
-
[BUFFER_IDX]: 2,
|
|
312
|
-
[LAST_ACCESSED_AT_KEY]: getSec(mockNow),
|
|
313
|
-
created_at: getSec(new Date("2023-04-18 11:00")),
|
|
314
|
-
},
|
|
315
|
-
},
|
|
316
|
-
];
|
|
317
|
-
console.log(resultsDocs);
|
|
318
|
-
expect(resultsDocs).toStrictEqual(expected);
|
|
319
|
-
});
|
|
320
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Document } from "@langchain/core/documents";
|
|
2
|
-
import { FakeEmbeddings } from "@langchain/core/utils/testing";
|
|
3
|
-
import { MemoryVectorStore } from "../../vectorstores/memory.js";
|
|
4
|
-
test("Test Memory Retriever with Callback", async () => {
|
|
5
|
-
const pageContent = "Hello world";
|
|
6
|
-
const embeddings = new FakeEmbeddings();
|
|
7
|
-
const vectorStore = new MemoryVectorStore(embeddings);
|
|
8
|
-
expect(vectorStore).toBeDefined();
|
|
9
|
-
await vectorStore.addDocuments([
|
|
10
|
-
{ pageContent, metadata: { a: 1 } },
|
|
11
|
-
{ pageContent, metadata: { a: 1 } },
|
|
12
|
-
{ pageContent, metadata: { a: 1 } },
|
|
13
|
-
{ pageContent, metadata: { a: 1 } },
|
|
14
|
-
]);
|
|
15
|
-
const queryStr = "testing testing";
|
|
16
|
-
let startRun = 0;
|
|
17
|
-
let endRun = 0;
|
|
18
|
-
let startPromiseResolve;
|
|
19
|
-
const startPromise = new Promise((resolve) => {
|
|
20
|
-
startPromiseResolve = resolve;
|
|
21
|
-
});
|
|
22
|
-
let endPromiseResolve;
|
|
23
|
-
const endPromise = new Promise((resolve) => {
|
|
24
|
-
endPromiseResolve = resolve;
|
|
25
|
-
});
|
|
26
|
-
const retriever = vectorStore.asRetriever({
|
|
27
|
-
k: 1,
|
|
28
|
-
vectorStore,
|
|
29
|
-
callbacks: [
|
|
30
|
-
{
|
|
31
|
-
handleRetrieverStart: async (_, query) => {
|
|
32
|
-
expect(query).toBe(queryStr);
|
|
33
|
-
startRun += 1;
|
|
34
|
-
startPromiseResolve();
|
|
35
|
-
},
|
|
36
|
-
handleRetrieverEnd: async (documents) => {
|
|
37
|
-
expect(documents[0].pageContent).toBe(pageContent);
|
|
38
|
-
endRun += 1;
|
|
39
|
-
endPromiseResolve();
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
});
|
|
44
|
-
const results = await retriever.getRelevantDocuments(queryStr);
|
|
45
|
-
expect(results).toEqual([new Document({ metadata: { a: 1 }, pageContent })]);
|
|
46
|
-
await startPromise;
|
|
47
|
-
await endPromise;
|
|
48
|
-
expect(startRun).toBe(1);
|
|
49
|
-
expect(endRun).toBe(1);
|
|
50
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
/* eslint-disable arrow-body-style */
|
|
4
|
-
import OpenAI from "openai";
|
|
5
|
-
import wiki from "wikipedia";
|
|
6
|
-
import { Client, RunTree } from "langsmith";
|
|
7
|
-
import { runOnDataset } from "../runner_utils.js";
|
|
8
|
-
const oaiClient = new OpenAI();
|
|
9
|
-
test(`Chat model dataset`, async () => {
|
|
10
|
-
async function generateWikiSearch(question, parentRun) {
|
|
11
|
-
const messages = [
|
|
12
|
-
{
|
|
13
|
-
role: "system",
|
|
14
|
-
content: "Generate a search query to pass into wikipedia to answer the user's question. Return only the search query and nothing more. This will be passed in directly to the Wikipedia search engine.",
|
|
15
|
-
},
|
|
16
|
-
{ role: "user", content: question },
|
|
17
|
-
];
|
|
18
|
-
const childRun = await parentRun.createChild({
|
|
19
|
-
name: "Generate Wiki Search",
|
|
20
|
-
run_type: "llm",
|
|
21
|
-
inputs: {
|
|
22
|
-
messages,
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
try {
|
|
26
|
-
const chatCompletion = await oaiClient.chat.completions.create({
|
|
27
|
-
model: "gpt-3.5-turbo",
|
|
28
|
-
// @ts-expect-error Typing is wrong
|
|
29
|
-
messages,
|
|
30
|
-
temperature: 0,
|
|
31
|
-
});
|
|
32
|
-
childRun.end(chatCompletion);
|
|
33
|
-
await childRun.postRun();
|
|
34
|
-
return chatCompletion.choices[0].message.content ?? "";
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.error("Error generating wiki search query:", error);
|
|
38
|
-
childRun.end({ error: error.toString() });
|
|
39
|
-
await childRun.postRun();
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
function convertDocs(results) {
|
|
44
|
-
return results.map((r) => ({
|
|
45
|
-
page_content: r.summary,
|
|
46
|
-
type: "Document",
|
|
47
|
-
metadata: { url: r.url },
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
async function retrieve(query, parentRun) {
|
|
51
|
-
const childRun = await parentRun.createChild({
|
|
52
|
-
name: "Wikipedia Retriever",
|
|
53
|
-
run_type: "retriever",
|
|
54
|
-
inputs: { query },
|
|
55
|
-
});
|
|
56
|
-
try {
|
|
57
|
-
const { results } = await wiki.default.search(query, { limit: 10 });
|
|
58
|
-
const finalResults = [];
|
|
59
|
-
for (const result of results) {
|
|
60
|
-
if (finalResults.length >= 2) {
|
|
61
|
-
// Just return the top 2 pages for now
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
const page = await wiki.default.page(result.title, {
|
|
65
|
-
autoSuggest: false,
|
|
66
|
-
});
|
|
67
|
-
const summary = await page.summary();
|
|
68
|
-
finalResults.push({
|
|
69
|
-
summary: summary.extract,
|
|
70
|
-
url: page.fullurl,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
childRun.end({
|
|
74
|
-
documents: convertDocs(finalResults),
|
|
75
|
-
});
|
|
76
|
-
await childRun.postRun();
|
|
77
|
-
return finalResults;
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
console.error("Error in retrieval:", error);
|
|
81
|
-
childRun.end({ error: error.toString() });
|
|
82
|
-
await childRun.postRun();
|
|
83
|
-
throw error;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async function generateAnswer(question, context, parentRun) {
|
|
87
|
-
const messages = [
|
|
88
|
-
{
|
|
89
|
-
role: "system",
|
|
90
|
-
content: `Answer the user's question based only on the content below:\n\n${context}`,
|
|
91
|
-
},
|
|
92
|
-
{ role: "user", content: question },
|
|
93
|
-
];
|
|
94
|
-
const childRun = await parentRun.createChild({
|
|
95
|
-
name: "Generate Answer",
|
|
96
|
-
run_type: "llm",
|
|
97
|
-
inputs: {
|
|
98
|
-
messages,
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
try {
|
|
102
|
-
const chatCompletion = await oaiClient.chat.completions.create({
|
|
103
|
-
model: "gpt-3.5-turbo",
|
|
104
|
-
// @ts-expect-error Typing is wrong
|
|
105
|
-
messages,
|
|
106
|
-
temperature: 0,
|
|
107
|
-
});
|
|
108
|
-
childRun.end(chatCompletion);
|
|
109
|
-
await childRun.postRun();
|
|
110
|
-
return chatCompletion.choices[0].message.content ?? "";
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.error("Error generating answer:", error);
|
|
114
|
-
childRun.end({ error: error.toString() });
|
|
115
|
-
await childRun.postRun();
|
|
116
|
-
throw error;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async function ragPipeline(question) {
|
|
120
|
-
const parentRunConfig = {
|
|
121
|
-
name: "Wikipedia RAG Pipeline",
|
|
122
|
-
run_type: "chain",
|
|
123
|
-
inputs: { question },
|
|
124
|
-
};
|
|
125
|
-
const parentRun = new RunTree(parentRunConfig);
|
|
126
|
-
try {
|
|
127
|
-
const query = await generateWikiSearch(question, parentRun);
|
|
128
|
-
const retrieverResults = await retrieve(query, parentRun);
|
|
129
|
-
const context = retrieverResults
|
|
130
|
-
.map((result) => result.summary)
|
|
131
|
-
.join("\n\n");
|
|
132
|
-
const answer = await generateAnswer(question, context, parentRun);
|
|
133
|
-
await parentRun.end({
|
|
134
|
-
outputs: answer,
|
|
135
|
-
});
|
|
136
|
-
await parentRun.postRun();
|
|
137
|
-
return answer;
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
console.error("Error running RAG Pipeline:", error);
|
|
141
|
-
parentRun.end({ error: error.toString() });
|
|
142
|
-
await parentRun.postRun();
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
const examples = [
|
|
147
|
-
[
|
|
148
|
-
"When was the Apple Vision Pro released in the US?",
|
|
149
|
-
"The Apple Vision Pro was released in the United States on February 2, 2024.",
|
|
150
|
-
],
|
|
151
|
-
[
|
|
152
|
-
"What is LangChain?",
|
|
153
|
-
"LangChain is an open-source framework for building applications using large language models.",
|
|
154
|
-
],
|
|
155
|
-
[
|
|
156
|
-
"Who is the chairman of OpenAI?",
|
|
157
|
-
"Bret Taylor is the chairman of the OpenAI",
|
|
158
|
-
],
|
|
159
|
-
];
|
|
160
|
-
const lsClient = new Client();
|
|
161
|
-
const datasetName = "JS run on dataset integration test";
|
|
162
|
-
let dataset;
|
|
163
|
-
try {
|
|
164
|
-
dataset = await lsClient.readDataset({ datasetName });
|
|
165
|
-
}
|
|
166
|
-
catch (e) {
|
|
167
|
-
dataset = await lsClient.createDataset(datasetName);
|
|
168
|
-
await Promise.all(examples.map(async ([question, answer]) => {
|
|
169
|
-
await lsClient.createExample({ question }, { answer }, { datasetId: dataset.id });
|
|
170
|
-
}));
|
|
171
|
-
}
|
|
172
|
-
// An illustrative custom evaluator example
|
|
173
|
-
const unsure = async ({ prediction }) => {
|
|
174
|
-
if (typeof prediction?.output !== "string") {
|
|
175
|
-
throw new Error("Invalid prediction format for this evaluator. Please check your chain's outputs and try again.");
|
|
176
|
-
}
|
|
177
|
-
return {
|
|
178
|
-
key: "unsure",
|
|
179
|
-
score: prediction.output.includes("not sure"),
|
|
180
|
-
};
|
|
181
|
-
};
|
|
182
|
-
const evaluation = {
|
|
183
|
-
// The 'evaluators' are loaded from LangChain's evaluation
|
|
184
|
-
// library.
|
|
185
|
-
evaluators: [
|
|
186
|
-
{
|
|
187
|
-
evaluatorType: "labeled_criteria",
|
|
188
|
-
criteria: "correctness",
|
|
189
|
-
feedbackKey: "correctness",
|
|
190
|
-
formatEvaluatorInputs: ({ rawInput, rawPrediction, rawReferenceOutput, }) => {
|
|
191
|
-
return {
|
|
192
|
-
input: rawInput.question,
|
|
193
|
-
prediction: rawPrediction.output,
|
|
194
|
-
reference: rawReferenceOutput.answer,
|
|
195
|
-
};
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
],
|
|
199
|
-
// Custom evaluators can be user-defined RunEvaluator's
|
|
200
|
-
// or a compatible function
|
|
201
|
-
customEvaluators: [unsure],
|
|
202
|
-
};
|
|
203
|
-
const wrappedRagPipeline = async ({ question, }) => {
|
|
204
|
-
return ragPipeline(question);
|
|
205
|
-
};
|
|
206
|
-
console.log(await runOnDataset(wrappedRagPipeline, datasetName, {
|
|
207
|
-
evaluationConfig: evaluation,
|
|
208
|
-
}));
|
|
209
|
-
});
|
|
210
|
-
test("Thrown errors should not interrupt dataset run", async () => {
|
|
211
|
-
async function ragPipeline(_) {
|
|
212
|
-
throw new Error("I don't know, I am learning from aliens.");
|
|
213
|
-
}
|
|
214
|
-
const examples = [
|
|
215
|
-
[
|
|
216
|
-
"When was the Apple Vision Pro released in the US?",
|
|
217
|
-
"The Apple Vision Pro was released in the United States on February 2, 2024.",
|
|
218
|
-
],
|
|
219
|
-
[
|
|
220
|
-
"What is LangChain?",
|
|
221
|
-
"LangChain is an open-source framework for building applications using large language models.",
|
|
222
|
-
],
|
|
223
|
-
[
|
|
224
|
-
"Who is the chairman of OpenAI?",
|
|
225
|
-
"Bret Taylor is the chairman of the OpenAI",
|
|
226
|
-
],
|
|
227
|
-
];
|
|
228
|
-
const lsClient = new Client();
|
|
229
|
-
const datasetName = "JS run on dataset integration test";
|
|
230
|
-
let dataset;
|
|
231
|
-
try {
|
|
232
|
-
dataset = await lsClient.readDataset({ datasetName });
|
|
233
|
-
}
|
|
234
|
-
catch (e) {
|
|
235
|
-
dataset = await lsClient.createDataset(datasetName);
|
|
236
|
-
await Promise.all(examples.map(async ([question, answer]) => {
|
|
237
|
-
await lsClient.createExample({ question }, { answer }, { datasetId: dataset.id });
|
|
238
|
-
}));
|
|
239
|
-
}
|
|
240
|
-
// An illustrative custom evaluator example
|
|
241
|
-
const dummy = async (_) => {
|
|
242
|
-
console.log("RUNNING EVAL");
|
|
243
|
-
throw new Error("Expected error");
|
|
244
|
-
};
|
|
245
|
-
const evaluation = {
|
|
246
|
-
// Custom evaluators can be user-defined RunEvaluator's
|
|
247
|
-
// or a compatible function
|
|
248
|
-
customEvaluators: [dummy],
|
|
249
|
-
};
|
|
250
|
-
const wrappedRagPipeline = async ({ question, }) => {
|
|
251
|
-
return ragPipeline(question);
|
|
252
|
-
};
|
|
253
|
-
console.log(await runOnDataset(wrappedRagPipeline, datasetName, {
|
|
254
|
-
evaluationConfig: evaluation,
|
|
255
|
-
maxConcurrency: 1,
|
|
256
|
-
}));
|
|
257
|
-
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
|
|
2
|
-
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
3
|
-
import { BaseMessage } from "@langchain/core/messages";
|
|
4
|
-
import { ChatResult } from "@langchain/core/outputs";
|
|
5
|
-
export declare class FakeChatModel extends BaseChatModel {
|
|
6
|
-
_combineLLMOutput(): never[];
|
|
7
|
-
_llmType(): string;
|
|
8
|
-
_generate(messages: BaseMessage[], _?: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
|
|
9
|
-
}
|