langchain 0.3.26__py3-none-any.whl → 0.4.0.dev0__py3-none-any.whl
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.
- langchain/__init__.py +110 -96
- langchain/_api/__init__.py +2 -2
- langchain/_api/deprecation.py +3 -3
- langchain/_api/module_import.py +51 -46
- langchain/_api/path.py +1 -1
- langchain/adapters/openai.py +8 -8
- langchain/agents/__init__.py +15 -12
- langchain/agents/agent.py +174 -151
- langchain/agents/agent_iterator.py +50 -26
- langchain/agents/agent_toolkits/__init__.py +7 -6
- langchain/agents/agent_toolkits/ainetwork/toolkit.py +1 -1
- langchain/agents/agent_toolkits/amadeus/toolkit.py +1 -1
- langchain/agents/agent_toolkits/azure_cognitive_services.py +1 -1
- langchain/agents/agent_toolkits/clickup/toolkit.py +1 -1
- langchain/agents/agent_toolkits/conversational_retrieval/openai_functions.py +6 -4
- langchain/agents/agent_toolkits/csv/__init__.py +4 -2
- langchain/agents/agent_toolkits/file_management/__init__.py +1 -1
- langchain/agents/agent_toolkits/file_management/toolkit.py +1 -1
- langchain/agents/agent_toolkits/github/toolkit.py +9 -9
- langchain/agents/agent_toolkits/gitlab/toolkit.py +1 -1
- langchain/agents/agent_toolkits/json/base.py +1 -1
- langchain/agents/agent_toolkits/multion/toolkit.py +1 -1
- langchain/agents/agent_toolkits/office365/toolkit.py +1 -1
- langchain/agents/agent_toolkits/openapi/base.py +1 -1
- langchain/agents/agent_toolkits/openapi/planner.py +2 -2
- langchain/agents/agent_toolkits/openapi/planner_prompt.py +10 -10
- langchain/agents/agent_toolkits/openapi/prompt.py +1 -1
- langchain/agents/agent_toolkits/openapi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/pandas/__init__.py +4 -2
- langchain/agents/agent_toolkits/playwright/__init__.py +1 -1
- langchain/agents/agent_toolkits/playwright/toolkit.py +1 -1
- langchain/agents/agent_toolkits/powerbi/base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/chat_base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/prompt.py +2 -2
- langchain/agents/agent_toolkits/powerbi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/python/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark_sql/base.py +1 -1
- langchain/agents/agent_toolkits/spark_sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/sql/prompt.py +1 -1
- langchain/agents/agent_toolkits/sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/vectorstore/base.py +4 -2
- langchain/agents/agent_toolkits/vectorstore/prompt.py +2 -4
- langchain/agents/agent_toolkits/vectorstore/toolkit.py +12 -11
- langchain/agents/agent_toolkits/xorbits/__init__.py +4 -2
- langchain/agents/agent_toolkits/zapier/toolkit.py +1 -1
- langchain/agents/agent_types.py +6 -6
- langchain/agents/chat/base.py +8 -12
- langchain/agents/chat/output_parser.py +9 -6
- langchain/agents/chat/prompt.py +3 -4
- langchain/agents/conversational/base.py +11 -5
- langchain/agents/conversational/output_parser.py +4 -2
- langchain/agents/conversational/prompt.py +2 -3
- langchain/agents/conversational_chat/base.py +9 -5
- langchain/agents/conversational_chat/output_parser.py +9 -11
- langchain/agents/conversational_chat/prompt.py +5 -6
- langchain/agents/format_scratchpad/__init__.py +3 -3
- langchain/agents/format_scratchpad/log_to_messages.py +1 -1
- langchain/agents/format_scratchpad/openai_functions.py +8 -6
- langchain/agents/format_scratchpad/tools.py +5 -3
- langchain/agents/format_scratchpad/xml.py +33 -2
- langchain/agents/initialize.py +17 -9
- langchain/agents/json_chat/base.py +19 -18
- langchain/agents/json_chat/prompt.py +2 -3
- langchain/agents/load_tools.py +2 -1
- langchain/agents/loading.py +28 -18
- langchain/agents/mrkl/base.py +11 -4
- langchain/agents/mrkl/output_parser.py +17 -13
- langchain/agents/mrkl/prompt.py +1 -2
- langchain/agents/openai_assistant/base.py +81 -71
- langchain/agents/openai_functions_agent/agent_token_buffer_memory.py +2 -0
- langchain/agents/openai_functions_agent/base.py +47 -37
- langchain/agents/openai_functions_multi_agent/base.py +40 -27
- langchain/agents/openai_tools/base.py +9 -8
- langchain/agents/output_parsers/__init__.py +3 -3
- langchain/agents/output_parsers/json.py +8 -6
- langchain/agents/output_parsers/openai_functions.py +24 -9
- langchain/agents/output_parsers/openai_tools.py +16 -4
- langchain/agents/output_parsers/react_json_single_input.py +13 -5
- langchain/agents/output_parsers/react_single_input.py +18 -11
- langchain/agents/output_parsers/self_ask.py +5 -2
- langchain/agents/output_parsers/tools.py +32 -13
- langchain/agents/output_parsers/xml.py +102 -28
- langchain/agents/react/agent.py +5 -4
- langchain/agents/react/base.py +26 -17
- langchain/agents/react/output_parser.py +7 -6
- langchain/agents/react/textworld_prompt.py +0 -1
- langchain/agents/react/wiki_prompt.py +14 -15
- langchain/agents/schema.py +5 -2
- langchain/agents/self_ask_with_search/base.py +23 -15
- langchain/agents/self_ask_with_search/prompt.py +0 -1
- langchain/agents/structured_chat/base.py +19 -11
- langchain/agents/structured_chat/output_parser.py +29 -18
- langchain/agents/structured_chat/prompt.py +3 -4
- langchain/agents/tool_calling_agent/base.py +8 -6
- langchain/agents/tools.py +5 -2
- langchain/agents/utils.py +2 -3
- langchain/agents/xml/base.py +12 -6
- langchain/agents/xml/prompt.py +1 -2
- langchain/cache.py +12 -12
- langchain/callbacks/__init__.py +11 -11
- langchain/callbacks/aim_callback.py +2 -2
- langchain/callbacks/argilla_callback.py +1 -1
- langchain/callbacks/arize_callback.py +1 -1
- langchain/callbacks/arthur_callback.py +1 -1
- langchain/callbacks/base.py +7 -7
- langchain/callbacks/clearml_callback.py +1 -1
- langchain/callbacks/comet_ml_callback.py +1 -1
- langchain/callbacks/confident_callback.py +1 -1
- langchain/callbacks/context_callback.py +1 -1
- langchain/callbacks/flyte_callback.py +1 -1
- langchain/callbacks/human.py +2 -2
- langchain/callbacks/infino_callback.py +1 -1
- langchain/callbacks/labelstudio_callback.py +1 -1
- langchain/callbacks/llmonitor_callback.py +1 -1
- langchain/callbacks/manager.py +5 -5
- langchain/callbacks/mlflow_callback.py +2 -2
- langchain/callbacks/openai_info.py +1 -1
- langchain/callbacks/promptlayer_callback.py +1 -1
- langchain/callbacks/sagemaker_callback.py +1 -1
- langchain/callbacks/streaming_aiter.py +17 -3
- langchain/callbacks/streaming_aiter_final_only.py +16 -5
- langchain/callbacks/streaming_stdout_final_only.py +10 -3
- langchain/callbacks/streamlit/__init__.py +3 -2
- langchain/callbacks/streamlit/mutable_expander.py +1 -1
- langchain/callbacks/streamlit/streamlit_callback_handler.py +3 -3
- langchain/callbacks/tracers/__init__.py +1 -1
- langchain/callbacks/tracers/comet.py +1 -1
- langchain/callbacks/tracers/evaluation.py +1 -1
- langchain/callbacks/tracers/log_stream.py +1 -1
- langchain/callbacks/tracers/logging.py +12 -1
- langchain/callbacks/tracers/stdout.py +1 -1
- langchain/callbacks/trubrics_callback.py +1 -1
- langchain/callbacks/utils.py +4 -4
- langchain/callbacks/wandb_callback.py +1 -1
- langchain/callbacks/whylabs_callback.py +1 -1
- langchain/chains/api/base.py +41 -23
- langchain/chains/api/news_docs.py +1 -2
- langchain/chains/api/open_meteo_docs.py +1 -2
- langchain/chains/api/openapi/requests_chain.py +1 -1
- langchain/chains/api/openapi/response_chain.py +1 -1
- langchain/chains/api/podcast_docs.py +1 -2
- langchain/chains/api/prompt.py +1 -2
- langchain/chains/api/tmdb_docs.py +1 -2
- langchain/chains/base.py +96 -56
- langchain/chains/chat_vector_db/prompts.py +2 -3
- langchain/chains/combine_documents/__init__.py +1 -1
- langchain/chains/combine_documents/base.py +30 -11
- langchain/chains/combine_documents/map_reduce.py +41 -30
- langchain/chains/combine_documents/map_rerank.py +39 -24
- langchain/chains/combine_documents/reduce.py +48 -26
- langchain/chains/combine_documents/refine.py +27 -17
- langchain/chains/combine_documents/stuff.py +24 -13
- langchain/chains/constitutional_ai/base.py +11 -4
- langchain/chains/constitutional_ai/principles.py +22 -25
- langchain/chains/constitutional_ai/prompts.py +25 -28
- langchain/chains/conversation/base.py +9 -4
- langchain/chains/conversation/memory.py +5 -5
- langchain/chains/conversation/prompt.py +5 -5
- langchain/chains/conversational_retrieval/base.py +108 -79
- langchain/chains/conversational_retrieval/prompts.py +2 -3
- langchain/chains/elasticsearch_database/base.py +10 -10
- langchain/chains/elasticsearch_database/prompts.py +2 -3
- langchain/chains/ernie_functions/__init__.py +2 -2
- langchain/chains/example_generator.py +3 -1
- langchain/chains/flare/base.py +28 -12
- langchain/chains/flare/prompts.py +2 -0
- langchain/chains/graph_qa/cypher.py +2 -2
- langchain/chains/graph_qa/falkordb.py +1 -1
- langchain/chains/graph_qa/gremlin.py +1 -1
- langchain/chains/graph_qa/neptune_sparql.py +1 -1
- langchain/chains/graph_qa/prompts.py +2 -2
- langchain/chains/history_aware_retriever.py +2 -1
- langchain/chains/hyde/base.py +6 -5
- langchain/chains/hyde/prompts.py +5 -6
- langchain/chains/llm.py +82 -61
- langchain/chains/llm_bash/__init__.py +3 -2
- langchain/chains/llm_checker/base.py +19 -6
- langchain/chains/llm_checker/prompt.py +3 -4
- langchain/chains/llm_math/base.py +25 -10
- langchain/chains/llm_math/prompt.py +1 -2
- langchain/chains/llm_summarization_checker/base.py +22 -7
- langchain/chains/llm_symbolic_math/__init__.py +3 -2
- langchain/chains/loading.py +155 -97
- langchain/chains/mapreduce.py +4 -3
- langchain/chains/moderation.py +11 -9
- langchain/chains/natbot/base.py +11 -9
- langchain/chains/natbot/crawler.py +102 -76
- langchain/chains/natbot/prompt.py +2 -3
- langchain/chains/openai_functions/__init__.py +7 -7
- langchain/chains/openai_functions/base.py +15 -10
- langchain/chains/openai_functions/citation_fuzzy_match.py +21 -11
- langchain/chains/openai_functions/extraction.py +19 -19
- langchain/chains/openai_functions/openapi.py +39 -35
- langchain/chains/openai_functions/qa_with_structure.py +22 -15
- langchain/chains/openai_functions/tagging.py +4 -4
- langchain/chains/openai_tools/extraction.py +7 -8
- langchain/chains/qa_generation/base.py +8 -3
- langchain/chains/qa_generation/prompt.py +5 -5
- langchain/chains/qa_with_sources/base.py +17 -6
- langchain/chains/qa_with_sources/loading.py +16 -8
- langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
- langchain/chains/qa_with_sources/refine_prompts.py +0 -1
- langchain/chains/qa_with_sources/retrieval.py +15 -6
- langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
- langchain/chains/qa_with_sources/vector_db.py +21 -8
- langchain/chains/query_constructor/base.py +37 -34
- langchain/chains/query_constructor/ir.py +4 -4
- langchain/chains/query_constructor/parser.py +101 -34
- langchain/chains/query_constructor/prompt.py +5 -6
- langchain/chains/question_answering/chain.py +21 -10
- langchain/chains/question_answering/map_reduce_prompt.py +14 -14
- langchain/chains/question_answering/map_rerank_prompt.py +3 -3
- langchain/chains/question_answering/refine_prompts.py +2 -5
- langchain/chains/question_answering/stuff_prompt.py +5 -5
- langchain/chains/retrieval.py +1 -3
- langchain/chains/retrieval_qa/base.py +38 -27
- langchain/chains/retrieval_qa/prompt.py +1 -2
- langchain/chains/router/__init__.py +3 -3
- langchain/chains/router/base.py +38 -22
- langchain/chains/router/embedding_router.py +15 -8
- langchain/chains/router/llm_router.py +23 -20
- langchain/chains/router/multi_prompt.py +5 -2
- langchain/chains/router/multi_retrieval_qa.py +28 -5
- langchain/chains/sequential.py +30 -18
- langchain/chains/sql_database/prompt.py +14 -16
- langchain/chains/sql_database/query.py +7 -5
- langchain/chains/structured_output/__init__.py +1 -1
- langchain/chains/structured_output/base.py +77 -67
- langchain/chains/summarize/chain.py +11 -5
- langchain/chains/summarize/map_reduce_prompt.py +0 -1
- langchain/chains/summarize/stuff_prompt.py +0 -1
- langchain/chains/transform.py +9 -6
- langchain/chat_loaders/facebook_messenger.py +1 -1
- langchain/chat_loaders/langsmith.py +1 -1
- langchain/chat_loaders/utils.py +3 -3
- langchain/chat_models/__init__.py +20 -19
- langchain/chat_models/anthropic.py +1 -1
- langchain/chat_models/azureml_endpoint.py +1 -1
- langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
- langchain/chat_models/base.py +213 -139
- langchain/chat_models/bedrock.py +1 -1
- langchain/chat_models/fake.py +1 -1
- langchain/chat_models/meta.py +1 -1
- langchain/chat_models/pai_eas_endpoint.py +1 -1
- langchain/chat_models/promptlayer_openai.py +1 -1
- langchain/chat_models/volcengine_maas.py +1 -1
- langchain/docstore/base.py +1 -1
- langchain/document_loaders/__init__.py +9 -9
- langchain/document_loaders/airbyte.py +3 -3
- langchain/document_loaders/assemblyai.py +1 -1
- langchain/document_loaders/azure_blob_storage_container.py +1 -1
- langchain/document_loaders/azure_blob_storage_file.py +1 -1
- langchain/document_loaders/baiducloud_bos_file.py +1 -1
- langchain/document_loaders/base.py +1 -1
- langchain/document_loaders/blob_loaders/__init__.py +1 -1
- langchain/document_loaders/blob_loaders/schema.py +1 -4
- langchain/document_loaders/blockchain.py +1 -1
- langchain/document_loaders/chatgpt.py +1 -1
- langchain/document_loaders/college_confidential.py +1 -1
- langchain/document_loaders/confluence.py +1 -1
- langchain/document_loaders/email.py +1 -1
- langchain/document_loaders/facebook_chat.py +1 -1
- langchain/document_loaders/markdown.py +1 -1
- langchain/document_loaders/notebook.py +1 -1
- langchain/document_loaders/org_mode.py +1 -1
- langchain/document_loaders/parsers/__init__.py +1 -1
- langchain/document_loaders/parsers/docai.py +1 -1
- langchain/document_loaders/parsers/generic.py +1 -1
- langchain/document_loaders/parsers/html/__init__.py +1 -1
- langchain/document_loaders/parsers/html/bs4.py +1 -1
- langchain/document_loaders/parsers/language/cobol.py +1 -1
- langchain/document_loaders/parsers/language/python.py +1 -1
- langchain/document_loaders/parsers/msword.py +1 -1
- langchain/document_loaders/parsers/pdf.py +5 -5
- langchain/document_loaders/parsers/registry.py +1 -1
- langchain/document_loaders/pdf.py +8 -8
- langchain/document_loaders/powerpoint.py +1 -1
- langchain/document_loaders/pyspark_dataframe.py +1 -1
- langchain/document_loaders/telegram.py +2 -2
- langchain/document_loaders/tencent_cos_directory.py +1 -1
- langchain/document_loaders/unstructured.py +5 -5
- langchain/document_loaders/url_playwright.py +1 -1
- langchain/document_loaders/whatsapp_chat.py +1 -1
- langchain/document_loaders/youtube.py +2 -2
- langchain/document_transformers/__init__.py +3 -3
- langchain/document_transformers/beautiful_soup_transformer.py +1 -1
- langchain/document_transformers/doctran_text_extract.py +1 -1
- langchain/document_transformers/doctran_text_qa.py +1 -1
- langchain/document_transformers/doctran_text_translate.py +1 -1
- langchain/document_transformers/embeddings_redundant_filter.py +3 -3
- langchain/document_transformers/google_translate.py +1 -1
- langchain/document_transformers/html2text.py +1 -1
- langchain/document_transformers/nuclia_text_transform.py +1 -1
- langchain/embeddings/__init__.py +5 -5
- langchain/embeddings/base.py +35 -24
- langchain/embeddings/cache.py +37 -32
- langchain/embeddings/fake.py +1 -1
- langchain/embeddings/huggingface.py +2 -2
- langchain/evaluation/__init__.py +22 -22
- langchain/evaluation/agents/trajectory_eval_chain.py +26 -25
- langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
- langchain/evaluation/comparison/__init__.py +1 -1
- langchain/evaluation/comparison/eval_chain.py +21 -13
- langchain/evaluation/comparison/prompt.py +1 -2
- langchain/evaluation/criteria/__init__.py +1 -1
- langchain/evaluation/criteria/eval_chain.py +23 -11
- langchain/evaluation/criteria/prompt.py +2 -3
- langchain/evaluation/embedding_distance/base.py +34 -20
- langchain/evaluation/exact_match/base.py +14 -1
- langchain/evaluation/loading.py +16 -11
- langchain/evaluation/parsing/base.py +20 -4
- langchain/evaluation/parsing/json_distance.py +24 -10
- langchain/evaluation/parsing/json_schema.py +13 -12
- langchain/evaluation/qa/__init__.py +1 -1
- langchain/evaluation/qa/eval_chain.py +20 -5
- langchain/evaluation/qa/eval_prompt.py +7 -8
- langchain/evaluation/qa/generate_chain.py +4 -1
- langchain/evaluation/qa/generate_prompt.py +2 -4
- langchain/evaluation/regex_match/base.py +9 -1
- langchain/evaluation/schema.py +38 -30
- langchain/evaluation/scoring/__init__.py +1 -1
- langchain/evaluation/scoring/eval_chain.py +23 -15
- langchain/evaluation/scoring/prompt.py +0 -1
- langchain/evaluation/string_distance/base.py +20 -9
- langchain/globals.py +12 -11
- langchain/graphs/__init__.py +6 -6
- langchain/graphs/graph_document.py +1 -1
- langchain/graphs/networkx_graph.py +2 -2
- langchain/hub.py +9 -11
- langchain/indexes/__init__.py +3 -3
- langchain/indexes/_sql_record_manager.py +63 -46
- langchain/indexes/prompts/entity_extraction.py +1 -2
- langchain/indexes/prompts/entity_summarization.py +1 -2
- langchain/indexes/prompts/knowledge_triplet_extraction.py +1 -3
- langchain/indexes/vectorstore.py +35 -19
- langchain/llms/__init__.py +13 -13
- langchain/llms/ai21.py +1 -1
- langchain/llms/azureml_endpoint.py +4 -4
- langchain/llms/base.py +15 -7
- langchain/llms/bedrock.py +1 -1
- langchain/llms/cloudflare_workersai.py +1 -1
- langchain/llms/gradient_ai.py +1 -1
- langchain/llms/loading.py +1 -1
- langchain/llms/openai.py +1 -1
- langchain/llms/sagemaker_endpoint.py +1 -1
- langchain/load/dump.py +1 -1
- langchain/load/load.py +1 -1
- langchain/load/serializable.py +3 -3
- langchain/memory/__init__.py +3 -3
- langchain/memory/buffer.py +14 -7
- langchain/memory/buffer_window.py +2 -0
- langchain/memory/chat_memory.py +14 -8
- langchain/memory/chat_message_histories/__init__.py +1 -1
- langchain/memory/chat_message_histories/astradb.py +1 -1
- langchain/memory/chat_message_histories/cassandra.py +1 -1
- langchain/memory/chat_message_histories/cosmos_db.py +1 -1
- langchain/memory/chat_message_histories/dynamodb.py +1 -1
- langchain/memory/chat_message_histories/elasticsearch.py +1 -1
- langchain/memory/chat_message_histories/file.py +1 -1
- langchain/memory/chat_message_histories/firestore.py +1 -1
- langchain/memory/chat_message_histories/momento.py +1 -1
- langchain/memory/chat_message_histories/mongodb.py +1 -1
- langchain/memory/chat_message_histories/neo4j.py +1 -1
- langchain/memory/chat_message_histories/postgres.py +1 -1
- langchain/memory/chat_message_histories/redis.py +1 -1
- langchain/memory/chat_message_histories/rocksetdb.py +1 -1
- langchain/memory/chat_message_histories/singlestoredb.py +1 -1
- langchain/memory/chat_message_histories/streamlit.py +1 -1
- langchain/memory/chat_message_histories/upstash_redis.py +1 -1
- langchain/memory/chat_message_histories/xata.py +1 -1
- langchain/memory/chat_message_histories/zep.py +1 -1
- langchain/memory/combined.py +14 -13
- langchain/memory/entity.py +131 -61
- langchain/memory/prompt.py +10 -11
- langchain/memory/readonly.py +0 -2
- langchain/memory/simple.py +4 -3
- langchain/memory/summary.py +43 -11
- langchain/memory/summary_buffer.py +20 -8
- langchain/memory/token_buffer.py +2 -0
- langchain/memory/utils.py +3 -2
- langchain/memory/vectorstore.py +12 -5
- langchain/memory/vectorstore_token_buffer_memory.py +5 -5
- langchain/model_laboratory.py +12 -11
- langchain/output_parsers/__init__.py +4 -4
- langchain/output_parsers/boolean.py +7 -4
- langchain/output_parsers/combining.py +14 -7
- langchain/output_parsers/datetime.py +32 -31
- langchain/output_parsers/enum.py +10 -4
- langchain/output_parsers/fix.py +60 -53
- langchain/output_parsers/format_instructions.py +6 -8
- langchain/output_parsers/json.py +2 -2
- langchain/output_parsers/list.py +2 -2
- langchain/output_parsers/loading.py +9 -9
- langchain/output_parsers/openai_functions.py +3 -3
- langchain/output_parsers/openai_tools.py +1 -1
- langchain/output_parsers/pandas_dataframe.py +59 -48
- langchain/output_parsers/prompts.py +1 -2
- langchain/output_parsers/rail_parser.py +1 -1
- langchain/output_parsers/regex.py +9 -8
- langchain/output_parsers/regex_dict.py +7 -10
- langchain/output_parsers/retry.py +99 -80
- langchain/output_parsers/structured.py +21 -6
- langchain/output_parsers/yaml.py +19 -11
- langchain/prompts/__init__.py +5 -3
- langchain/prompts/base.py +5 -5
- langchain/prompts/chat.py +8 -8
- langchain/prompts/example_selector/__init__.py +3 -1
- langchain/prompts/example_selector/semantic_similarity.py +2 -2
- langchain/prompts/few_shot.py +1 -1
- langchain/prompts/loading.py +3 -3
- langchain/prompts/prompt.py +1 -1
- langchain/pydantic_v1/__init__.py +1 -1
- langchain/retrievers/__init__.py +5 -5
- langchain/retrievers/bedrock.py +2 -2
- langchain/retrievers/bm25.py +1 -1
- langchain/retrievers/contextual_compression.py +14 -8
- langchain/retrievers/docarray.py +1 -1
- langchain/retrievers/document_compressors/__init__.py +5 -4
- langchain/retrievers/document_compressors/base.py +12 -6
- langchain/retrievers/document_compressors/chain_extract.py +5 -3
- langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
- langchain/retrievers/document_compressors/chain_filter.py +9 -9
- langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
- langchain/retrievers/document_compressors/cohere_rerank.py +17 -15
- langchain/retrievers/document_compressors/cross_encoder_rerank.py +2 -0
- langchain/retrievers/document_compressors/embeddings_filter.py +24 -17
- langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
- langchain/retrievers/document_compressors/listwise_rerank.py +8 -5
- langchain/retrievers/ensemble.py +30 -27
- langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
- langchain/retrievers/google_vertex_ai_search.py +2 -2
- langchain/retrievers/kendra.py +10 -10
- langchain/retrievers/llama_index.py +1 -1
- langchain/retrievers/merger_retriever.py +11 -11
- langchain/retrievers/milvus.py +1 -1
- langchain/retrievers/multi_query.py +35 -27
- langchain/retrievers/multi_vector.py +24 -9
- langchain/retrievers/parent_document_retriever.py +33 -9
- langchain/retrievers/re_phraser.py +6 -5
- langchain/retrievers/self_query/base.py +157 -127
- langchain/retrievers/time_weighted_retriever.py +21 -7
- langchain/retrievers/zilliz.py +1 -1
- langchain/runnables/hub.py +12 -0
- langchain/runnables/openai_functions.py +12 -2
- langchain/schema/__init__.py +23 -23
- langchain/schema/cache.py +1 -1
- langchain/schema/callbacks/base.py +7 -7
- langchain/schema/callbacks/manager.py +19 -19
- langchain/schema/callbacks/tracers/base.py +1 -1
- langchain/schema/callbacks/tracers/evaluation.py +1 -1
- langchain/schema/callbacks/tracers/langchain.py +1 -1
- langchain/schema/callbacks/tracers/langchain_v1.py +1 -1
- langchain/schema/callbacks/tracers/log_stream.py +1 -1
- langchain/schema/callbacks/tracers/schemas.py +8 -8
- langchain/schema/callbacks/tracers/stdout.py +3 -3
- langchain/schema/document.py +1 -1
- langchain/schema/language_model.py +2 -2
- langchain/schema/messages.py +12 -12
- langchain/schema/output.py +3 -3
- langchain/schema/output_parser.py +3 -3
- langchain/schema/runnable/__init__.py +3 -3
- langchain/schema/runnable/base.py +9 -9
- langchain/schema/runnable/config.py +5 -5
- langchain/schema/runnable/configurable.py +1 -1
- langchain/schema/runnable/history.py +1 -1
- langchain/schema/runnable/passthrough.py +1 -1
- langchain/schema/runnable/utils.py +16 -16
- langchain/schema/vectorstore.py +1 -1
- langchain/smith/__init__.py +2 -1
- langchain/smith/evaluation/__init__.py +2 -2
- langchain/smith/evaluation/config.py +9 -23
- langchain/smith/evaluation/name_generation.py +3 -3
- langchain/smith/evaluation/progress.py +22 -4
- langchain/smith/evaluation/runner_utils.py +416 -247
- langchain/smith/evaluation/string_run_evaluator.py +102 -68
- langchain/storage/__init__.py +2 -2
- langchain/storage/_lc_store.py +4 -2
- langchain/storage/encoder_backed.py +7 -2
- langchain/storage/file_system.py +19 -16
- langchain/storage/in_memory.py +1 -1
- langchain/storage/upstash_redis.py +1 -1
- langchain/text_splitter.py +15 -15
- langchain/tools/__init__.py +28 -26
- langchain/tools/ainetwork/app.py +1 -1
- langchain/tools/ainetwork/base.py +1 -1
- langchain/tools/ainetwork/owner.py +1 -1
- langchain/tools/ainetwork/rule.py +1 -1
- langchain/tools/ainetwork/transfer.py +1 -1
- langchain/tools/ainetwork/value.py +1 -1
- langchain/tools/amadeus/closest_airport.py +1 -1
- langchain/tools/amadeus/flight_search.py +1 -1
- langchain/tools/azure_cognitive_services/__init__.py +1 -1
- langchain/tools/base.py +4 -4
- langchain/tools/bearly/tool.py +1 -1
- langchain/tools/bing_search/__init__.py +1 -1
- langchain/tools/bing_search/tool.py +1 -1
- langchain/tools/dataforseo_api_search/__init__.py +1 -1
- langchain/tools/dataforseo_api_search/tool.py +1 -1
- langchain/tools/ddg_search/tool.py +1 -1
- langchain/tools/e2b_data_analysis/tool.py +2 -2
- langchain/tools/edenai/__init__.py +1 -1
- langchain/tools/file_management/__init__.py +1 -1
- langchain/tools/file_management/copy.py +1 -1
- langchain/tools/file_management/delete.py +1 -1
- langchain/tools/gmail/__init__.py +2 -2
- langchain/tools/gmail/get_message.py +1 -1
- langchain/tools/gmail/search.py +1 -1
- langchain/tools/gmail/send_message.py +1 -1
- langchain/tools/google_finance/__init__.py +1 -1
- langchain/tools/google_finance/tool.py +1 -1
- langchain/tools/google_scholar/__init__.py +1 -1
- langchain/tools/google_scholar/tool.py +1 -1
- langchain/tools/google_search/__init__.py +1 -1
- langchain/tools/google_search/tool.py +1 -1
- langchain/tools/google_serper/__init__.py +1 -1
- langchain/tools/google_serper/tool.py +1 -1
- langchain/tools/google_trends/__init__.py +1 -1
- langchain/tools/google_trends/tool.py +1 -1
- langchain/tools/jira/tool.py +20 -1
- langchain/tools/json/tool.py +25 -3
- langchain/tools/memorize/tool.py +1 -1
- langchain/tools/multion/__init__.py +1 -1
- langchain/tools/multion/update_session.py +1 -1
- langchain/tools/office365/__init__.py +2 -2
- langchain/tools/office365/events_search.py +1 -1
- langchain/tools/office365/messages_search.py +1 -1
- langchain/tools/office365/send_event.py +1 -1
- langchain/tools/office365/send_message.py +1 -1
- langchain/tools/openapi/utils/api_models.py +6 -6
- langchain/tools/playwright/__init__.py +5 -5
- langchain/tools/playwright/click.py +1 -1
- langchain/tools/playwright/extract_hyperlinks.py +1 -1
- langchain/tools/playwright/get_elements.py +1 -1
- langchain/tools/playwright/navigate.py +1 -1
- langchain/tools/plugin.py +2 -2
- langchain/tools/powerbi/tool.py +1 -1
- langchain/tools/python/__init__.py +3 -2
- langchain/tools/reddit_search/tool.py +1 -1
- langchain/tools/render.py +2 -2
- langchain/tools/requests/tool.py +2 -2
- langchain/tools/searchapi/tool.py +1 -1
- langchain/tools/searx_search/tool.py +1 -1
- langchain/tools/slack/get_message.py +1 -1
- langchain/tools/spark_sql/tool.py +1 -1
- langchain/tools/sql_database/tool.py +1 -1
- langchain/tools/tavily_search/__init__.py +1 -1
- langchain/tools/tavily_search/tool.py +1 -1
- langchain/tools/zapier/__init__.py +1 -1
- langchain/tools/zapier/tool.py +24 -2
- langchain/utilities/__init__.py +4 -4
- langchain/utilities/arcee.py +4 -4
- langchain/utilities/clickup.py +4 -4
- langchain/utilities/dalle_image_generator.py +1 -1
- langchain/utilities/dataforseo_api_search.py +1 -1
- langchain/utilities/opaqueprompts.py +1 -1
- langchain/utilities/reddit_search.py +1 -1
- langchain/utilities/sql_database.py +1 -1
- langchain/utilities/tavily_search.py +1 -1
- langchain/utilities/vertexai.py +2 -2
- langchain/utils/__init__.py +1 -1
- langchain/utils/aiter.py +1 -1
- langchain/utils/html.py +3 -3
- langchain/utils/input.py +1 -1
- langchain/utils/iter.py +1 -1
- langchain/utils/json_schema.py +1 -3
- langchain/utils/strings.py +1 -1
- langchain/utils/utils.py +6 -6
- langchain/vectorstores/__init__.py +5 -5
- langchain/vectorstores/alibabacloud_opensearch.py +1 -1
- langchain/vectorstores/azure_cosmos_db.py +1 -1
- langchain/vectorstores/clickhouse.py +1 -1
- langchain/vectorstores/elastic_vector_search.py +1 -1
- langchain/vectorstores/elasticsearch.py +2 -2
- langchain/vectorstores/myscale.py +1 -1
- langchain/vectorstores/neo4j_vector.py +1 -1
- langchain/vectorstores/pgembedding.py +1 -1
- langchain/vectorstores/qdrant.py +1 -1
- langchain/vectorstores/redis/__init__.py +1 -1
- langchain/vectorstores/redis/base.py +1 -1
- langchain/vectorstores/redis/filters.py +4 -4
- langchain/vectorstores/redis/schema.py +6 -6
- langchain/vectorstores/sklearn.py +2 -2
- langchain/vectorstores/starrocks.py +1 -1
- langchain/vectorstores/utils.py +1 -1
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/METADATA +4 -14
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/RECORD +590 -591
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/WHEEL +1 -1
- langchain/smith/evaluation/utils.py +0 -0
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/entry_points.txt +0 -0
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/licenses/LICENSE +0 -0
|
@@ -27,11 +27,12 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
|
|
|
27
27
|
"""Get the translator class corresponding to the vector store class."""
|
|
28
28
|
try:
|
|
29
29
|
import langchain_community # noqa: F401
|
|
30
|
-
except ImportError:
|
|
31
|
-
|
|
30
|
+
except ImportError as err:
|
|
31
|
+
msg = (
|
|
32
32
|
"The langchain-community package must be installed to use this feature."
|
|
33
33
|
" Please install it using `pip install langchain-community`."
|
|
34
34
|
)
|
|
35
|
+
raise ImportError(msg) from err
|
|
35
36
|
|
|
36
37
|
from langchain_community.query_constructors.astradb import AstraDBTranslator
|
|
37
38
|
from langchain_community.query_constructors.chroma import ChromaTranslator
|
|
@@ -118,116 +119,116 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
|
|
|
118
119
|
}
|
|
119
120
|
if isinstance(vectorstore, DatabricksVectorSearch):
|
|
120
121
|
return DatabricksVectorSearchTranslator()
|
|
121
|
-
|
|
122
|
+
if isinstance(vectorstore, MyScale):
|
|
122
123
|
return MyScaleTranslator(metadata_key=vectorstore.metadata_column)
|
|
123
|
-
|
|
124
|
+
if isinstance(vectorstore, Redis):
|
|
124
125
|
return RedisTranslator.from_vectorstore(vectorstore)
|
|
125
|
-
|
|
126
|
+
if isinstance(vectorstore, TencentVectorDB):
|
|
126
127
|
fields = [
|
|
127
128
|
field.name for field in (vectorstore.meta_fields or []) if field.index
|
|
128
129
|
]
|
|
129
130
|
return TencentVectorDBTranslator(fields)
|
|
130
|
-
|
|
131
|
+
if vectorstore.__class__ in BUILTIN_TRANSLATORS:
|
|
131
132
|
return BUILTIN_TRANSLATORS[vectorstore.__class__]()
|
|
133
|
+
try:
|
|
134
|
+
from langchain_astradb.vectorstores import AstraDBVectorStore
|
|
135
|
+
except ImportError:
|
|
136
|
+
pass
|
|
132
137
|
else:
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
raise ValueError(
|
|
228
|
-
f"Self query retriever with Vector Store type {vectorstore.__class__}"
|
|
229
|
-
f" not supported."
|
|
230
|
-
)
|
|
138
|
+
if isinstance(vectorstore, AstraDBVectorStore):
|
|
139
|
+
return AstraDBTranslator()
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
from langchain_elasticsearch.vectorstores import ElasticsearchStore
|
|
143
|
+
except ImportError:
|
|
144
|
+
pass
|
|
145
|
+
else:
|
|
146
|
+
if isinstance(vectorstore, ElasticsearchStore):
|
|
147
|
+
return ElasticsearchTranslator()
|
|
148
|
+
|
|
149
|
+
try:
|
|
150
|
+
from langchain_pinecone import PineconeVectorStore
|
|
151
|
+
except ImportError:
|
|
152
|
+
pass
|
|
153
|
+
else:
|
|
154
|
+
if isinstance(vectorstore, PineconeVectorStore):
|
|
155
|
+
return PineconeTranslator()
|
|
156
|
+
|
|
157
|
+
try:
|
|
158
|
+
from langchain_milvus import Milvus
|
|
159
|
+
except ImportError:
|
|
160
|
+
pass
|
|
161
|
+
else:
|
|
162
|
+
if isinstance(vectorstore, Milvus):
|
|
163
|
+
return MilvusTranslator()
|
|
164
|
+
|
|
165
|
+
try:
|
|
166
|
+
from langchain_mongodb import MongoDBAtlasVectorSearch
|
|
167
|
+
except ImportError:
|
|
168
|
+
pass
|
|
169
|
+
else:
|
|
170
|
+
if isinstance(vectorstore, MongoDBAtlasVectorSearch):
|
|
171
|
+
return MongoDBAtlasTranslator()
|
|
172
|
+
|
|
173
|
+
try:
|
|
174
|
+
from langchain_neo4j import Neo4jVector
|
|
175
|
+
except ImportError:
|
|
176
|
+
pass
|
|
177
|
+
else:
|
|
178
|
+
if isinstance(vectorstore, Neo4jVector):
|
|
179
|
+
return Neo4jTranslator()
|
|
180
|
+
|
|
181
|
+
try:
|
|
182
|
+
# Trying langchain_chroma import if exists
|
|
183
|
+
from langchain_chroma import Chroma
|
|
184
|
+
except ImportError:
|
|
185
|
+
pass
|
|
186
|
+
else:
|
|
187
|
+
if isinstance(vectorstore, Chroma):
|
|
188
|
+
return ChromaTranslator()
|
|
189
|
+
|
|
190
|
+
try:
|
|
191
|
+
from langchain_postgres import PGVector
|
|
192
|
+
from langchain_postgres import PGVectorTranslator as NewPGVectorTranslator
|
|
193
|
+
except ImportError:
|
|
194
|
+
pass
|
|
195
|
+
else:
|
|
196
|
+
if isinstance(vectorstore, PGVector):
|
|
197
|
+
return NewPGVectorTranslator()
|
|
198
|
+
|
|
199
|
+
try:
|
|
200
|
+
from langchain_qdrant import QdrantVectorStore
|
|
201
|
+
except ImportError:
|
|
202
|
+
pass
|
|
203
|
+
else:
|
|
204
|
+
if isinstance(vectorstore, QdrantVectorStore):
|
|
205
|
+
return QdrantTranslator(metadata_key=vectorstore.metadata_payload_key)
|
|
206
|
+
|
|
207
|
+
try:
|
|
208
|
+
# Added in langchain-community==0.2.11
|
|
209
|
+
from langchain_community.query_constructors.hanavector import HanaTranslator
|
|
210
|
+
from langchain_community.vectorstores import HanaDB
|
|
211
|
+
except ImportError:
|
|
212
|
+
pass
|
|
213
|
+
else:
|
|
214
|
+
if isinstance(vectorstore, HanaDB):
|
|
215
|
+
return HanaTranslator()
|
|
216
|
+
|
|
217
|
+
try:
|
|
218
|
+
# Trying langchain_weaviate (weaviate v4) import if exists
|
|
219
|
+
from langchain_weaviate.vectorstores import WeaviateVectorStore
|
|
220
|
+
|
|
221
|
+
except ImportError:
|
|
222
|
+
pass
|
|
223
|
+
else:
|
|
224
|
+
if isinstance(vectorstore, WeaviateVectorStore):
|
|
225
|
+
return WeaviateTranslator()
|
|
226
|
+
|
|
227
|
+
msg = (
|
|
228
|
+
f"Self query retriever with Vector Store type {vectorstore.__class__}"
|
|
229
|
+
f" not supported."
|
|
230
|
+
)
|
|
231
|
+
raise ValueError(msg)
|
|
231
232
|
|
|
232
233
|
|
|
233
234
|
class SelfQueryRetriever(BaseRetriever):
|
|
@@ -238,7 +239,7 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
238
239
|
"""The underlying vector store from which documents will be retrieved."""
|
|
239
240
|
query_constructor: Runnable[dict, StructuredQuery] = Field(alias="llm_chain")
|
|
240
241
|
"""The query constructor chain for generating the vector store queries.
|
|
241
|
-
|
|
242
|
+
|
|
242
243
|
llm_chain is legacy name kept for backwards compatibility."""
|
|
243
244
|
search_type: str = "similarity"
|
|
244
245
|
"""The search type to perform on the vector store."""
|
|
@@ -262,7 +263,7 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
262
263
|
"""Validate translator."""
|
|
263
264
|
if "structured_query_translator" not in values:
|
|
264
265
|
values["structured_query_translator"] = _get_builtin_translator(
|
|
265
|
-
values["vectorstore"]
|
|
266
|
+
values["vectorstore"],
|
|
266
267
|
)
|
|
267
268
|
return values
|
|
268
269
|
|
|
@@ -272,10 +273,12 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
272
273
|
return self.query_constructor
|
|
273
274
|
|
|
274
275
|
def _prepare_query(
|
|
275
|
-
self,
|
|
276
|
+
self,
|
|
277
|
+
query: str,
|
|
278
|
+
structured_query: StructuredQuery,
|
|
276
279
|
) -> tuple[str, dict[str, Any]]:
|
|
277
280
|
new_query, new_kwargs = self.structured_query_translator.visit_structured_query(
|
|
278
|
-
structured_query
|
|
281
|
+
structured_query,
|
|
279
282
|
)
|
|
280
283
|
if structured_query.limit is not None:
|
|
281
284
|
new_kwargs["k"] = structured_query.limit
|
|
@@ -285,19 +288,24 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
285
288
|
return new_query, search_kwargs
|
|
286
289
|
|
|
287
290
|
def _get_docs_with_query(
|
|
288
|
-
self,
|
|
291
|
+
self,
|
|
292
|
+
query: str,
|
|
293
|
+
search_kwargs: dict[str, Any],
|
|
289
294
|
) -> list[Document]:
|
|
290
|
-
|
|
291
|
-
return docs
|
|
295
|
+
return self.vectorstore.search(query, self.search_type, **search_kwargs)
|
|
292
296
|
|
|
293
297
|
async def _aget_docs_with_query(
|
|
294
|
-
self,
|
|
298
|
+
self,
|
|
299
|
+
query: str,
|
|
300
|
+
search_kwargs: dict[str, Any],
|
|
295
301
|
) -> list[Document]:
|
|
296
|
-
|
|
297
|
-
return docs
|
|
302
|
+
return await self.vectorstore.asearch(query, self.search_type, **search_kwargs)
|
|
298
303
|
|
|
299
304
|
def _get_relevant_documents(
|
|
300
|
-
self,
|
|
305
|
+
self,
|
|
306
|
+
query: str,
|
|
307
|
+
*,
|
|
308
|
+
run_manager: CallbackManagerForRetrieverRun,
|
|
301
309
|
) -> list[Document]:
|
|
302
310
|
"""Get documents relevant for a query.
|
|
303
311
|
|
|
@@ -308,16 +316,19 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
308
316
|
List of relevant documents
|
|
309
317
|
"""
|
|
310
318
|
structured_query = self.query_constructor.invoke(
|
|
311
|
-
{"query": query},
|
|
319
|
+
{"query": query},
|
|
320
|
+
config={"callbacks": run_manager.get_child()},
|
|
312
321
|
)
|
|
313
322
|
if self.verbose:
|
|
314
|
-
logger.info(
|
|
323
|
+
logger.info("Generated Query: %s", structured_query)
|
|
315
324
|
new_query, search_kwargs = self._prepare_query(query, structured_query)
|
|
316
|
-
|
|
317
|
-
return docs
|
|
325
|
+
return self._get_docs_with_query(new_query, search_kwargs)
|
|
318
326
|
|
|
319
327
|
async def _aget_relevant_documents(
|
|
320
|
-
self,
|
|
328
|
+
self,
|
|
329
|
+
query: str,
|
|
330
|
+
*,
|
|
331
|
+
run_manager: AsyncCallbackManagerForRetrieverRun,
|
|
321
332
|
) -> list[Document]:
|
|
322
333
|
"""Get documents relevant for a query.
|
|
323
334
|
|
|
@@ -328,13 +339,13 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
328
339
|
List of relevant documents
|
|
329
340
|
"""
|
|
330
341
|
structured_query = await self.query_constructor.ainvoke(
|
|
331
|
-
{"query": query},
|
|
342
|
+
{"query": query},
|
|
343
|
+
config={"callbacks": run_manager.get_child()},
|
|
332
344
|
)
|
|
333
345
|
if self.verbose:
|
|
334
|
-
logger.info(
|
|
346
|
+
logger.info("Generated Query: %s", structured_query)
|
|
335
347
|
new_query, search_kwargs = self._prepare_query(query, structured_query)
|
|
336
|
-
|
|
337
|
-
return docs
|
|
348
|
+
return await self._aget_docs_with_query(new_query, search_kwargs)
|
|
338
349
|
|
|
339
350
|
@classmethod
|
|
340
351
|
def from_llm(
|
|
@@ -345,10 +356,29 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
345
356
|
metadata_field_info: Sequence[Union[AttributeInfo, dict]],
|
|
346
357
|
structured_query_translator: Optional[Visitor] = None,
|
|
347
358
|
chain_kwargs: Optional[dict] = None,
|
|
348
|
-
enable_limit: bool = False,
|
|
349
|
-
use_original_query: bool = False,
|
|
359
|
+
enable_limit: bool = False, # noqa: FBT001,FBT002
|
|
360
|
+
use_original_query: bool = False, # noqa: FBT001,FBT002
|
|
350
361
|
**kwargs: Any,
|
|
351
362
|
) -> "SelfQueryRetriever":
|
|
363
|
+
"""Create a SelfQueryRetriever from an LLM and a vector store.
|
|
364
|
+
|
|
365
|
+
Args:
|
|
366
|
+
llm: The language model to use for generating queries.
|
|
367
|
+
vectorstore: The vector store to use for retrieving documents.
|
|
368
|
+
document_contents: Description of the page contents of the document to be
|
|
369
|
+
queried.
|
|
370
|
+
metadata_field_info: Metadata field information for the documents.
|
|
371
|
+
structured_query_translator: Optional translator for turning internal query
|
|
372
|
+
language into vectorstore search params.
|
|
373
|
+
chain_kwargs: Additional keyword arguments for the query constructor.
|
|
374
|
+
enable_limit: Whether to enable the limit operator.
|
|
375
|
+
use_original_query: Whether to use the original query instead of the revised
|
|
376
|
+
query from the LLM.
|
|
377
|
+
**kwargs: Additional keyword arguments for the SelfQueryRetriever.
|
|
378
|
+
|
|
379
|
+
Returns:
|
|
380
|
+
An instance of SelfQueryRetriever.
|
|
381
|
+
"""
|
|
352
382
|
if structured_query_translator is None:
|
|
353
383
|
structured_query_translator = _get_builtin_translator(vectorstore)
|
|
354
384
|
chain_kwargs = chain_kwargs or {}
|
|
@@ -375,7 +405,7 @@ class SelfQueryRetriever(BaseRetriever):
|
|
|
375
405
|
**chain_kwargs,
|
|
376
406
|
)
|
|
377
407
|
query_constructor = query_constructor.with_config(
|
|
378
|
-
run_name=QUERY_CONSTRUCTOR_RUN_NAME
|
|
408
|
+
run_name=QUERY_CONSTRUCTOR_RUN_NAME,
|
|
379
409
|
)
|
|
380
410
|
return cls( # type: ignore[call-arg]
|
|
381
411
|
query_constructor=query_constructor,
|
|
@@ -10,6 +10,7 @@ from langchain_core.documents import Document
|
|
|
10
10
|
from langchain_core.retrievers import BaseRetriever
|
|
11
11
|
from langchain_core.vectorstores import VectorStore
|
|
12
12
|
from pydantic import ConfigDict, Field
|
|
13
|
+
from typing_extensions import override
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
def _get_hours_passed(time: datetime.datetime, ref_time: datetime.datetime) -> float:
|
|
@@ -24,7 +25,7 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
24
25
|
vectorstore: VectorStore
|
|
25
26
|
"""The vectorstore to store documents and determine salience."""
|
|
26
27
|
|
|
27
|
-
search_kwargs: dict = Field(default_factory=lambda:
|
|
28
|
+
search_kwargs: dict = Field(default_factory=lambda: {"k": 100})
|
|
28
29
|
"""Keyword arguments to pass to the vectorstore similarity search."""
|
|
29
30
|
|
|
30
31
|
# TODO: abstract as a queue
|
|
@@ -81,7 +82,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
81
82
|
"""Return documents that are salient to the query."""
|
|
82
83
|
docs_and_scores: list[tuple[Document, float]]
|
|
83
84
|
docs_and_scores = self.vectorstore.similarity_search_with_relevance_scores(
|
|
84
|
-
query,
|
|
85
|
+
query,
|
|
86
|
+
**self.search_kwargs,
|
|
85
87
|
)
|
|
86
88
|
results = {}
|
|
87
89
|
for fetched_doc, relevance in docs_and_scores:
|
|
@@ -96,7 +98,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
96
98
|
docs_and_scores: list[tuple[Document, float]]
|
|
97
99
|
docs_and_scores = (
|
|
98
100
|
await self.vectorstore.asimilarity_search_with_relevance_scores(
|
|
99
|
-
query,
|
|
101
|
+
query,
|
|
102
|
+
**self.search_kwargs,
|
|
100
103
|
)
|
|
101
104
|
)
|
|
102
105
|
results = {}
|
|
@@ -108,7 +111,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
108
111
|
return results
|
|
109
112
|
|
|
110
113
|
def _get_rescored_docs(
|
|
111
|
-
self,
|
|
114
|
+
self,
|
|
115
|
+
docs_and_scores: dict[Any, tuple[Document, Optional[float]]],
|
|
112
116
|
) -> list[Document]:
|
|
113
117
|
current_time = datetime.datetime.now()
|
|
114
118
|
rescored_docs = [
|
|
@@ -125,8 +129,12 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
125
129
|
result.append(buffered_doc)
|
|
126
130
|
return result
|
|
127
131
|
|
|
132
|
+
@override
|
|
128
133
|
def _get_relevant_documents(
|
|
129
|
-
self,
|
|
134
|
+
self,
|
|
135
|
+
query: str,
|
|
136
|
+
*,
|
|
137
|
+
run_manager: CallbackManagerForRetrieverRun,
|
|
130
138
|
) -> list[Document]:
|
|
131
139
|
docs_and_scores = {
|
|
132
140
|
doc.metadata["buffer_idx"]: (doc, self.default_salience)
|
|
@@ -136,8 +144,12 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
136
144
|
docs_and_scores.update(self.get_salient_docs(query))
|
|
137
145
|
return self._get_rescored_docs(docs_and_scores)
|
|
138
146
|
|
|
147
|
+
@override
|
|
139
148
|
async def _aget_relevant_documents(
|
|
140
|
-
self,
|
|
149
|
+
self,
|
|
150
|
+
query: str,
|
|
151
|
+
*,
|
|
152
|
+
run_manager: AsyncCallbackManagerForRetrieverRun,
|
|
141
153
|
) -> list[Document]:
|
|
142
154
|
docs_and_scores = {
|
|
143
155
|
doc.metadata["buffer_idx"]: (doc, self.default_salience)
|
|
@@ -164,7 +176,9 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
|
|
|
164
176
|
return self.vectorstore.add_documents(dup_docs, **kwargs)
|
|
165
177
|
|
|
166
178
|
async def aadd_documents(
|
|
167
|
-
self,
|
|
179
|
+
self,
|
|
180
|
+
documents: list[Document],
|
|
181
|
+
**kwargs: Any,
|
|
168
182
|
) -> list[str]:
|
|
169
183
|
"""Add documents to vectorstore."""
|
|
170
184
|
current_time = kwargs.get("current_time")
|
langchain/retrievers/zilliz.py
CHANGED
langchain/runnables/hub.py
CHANGED
|
@@ -19,6 +19,18 @@ class HubRunnable(RunnableBindingBase[Input, Output]):
|
|
|
19
19
|
api_key: Optional[str] = None,
|
|
20
20
|
**kwargs: Any,
|
|
21
21
|
) -> None:
|
|
22
|
+
"""Initialize the HubRunnable.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
owner_repo_commit: The full name of the prompt to pull from in the format of
|
|
26
|
+
`owner/prompt_name:commit_hash` or `owner/prompt_name`
|
|
27
|
+
or just `prompt_name` if it's your own prompt.
|
|
28
|
+
api_url: The URL of the LangChain Hub API.
|
|
29
|
+
Defaults to the hosted API service if you have an api key set,
|
|
30
|
+
or a localhost instance if not.
|
|
31
|
+
api_key: The API key to use to authenticate with the LangChain Hub API.
|
|
32
|
+
**kwargs: Additional keyword arguments to pass to the parent class.
|
|
33
|
+
"""
|
|
22
34
|
from langchain.hub import pull
|
|
23
35
|
|
|
24
36
|
pulled = pull(owner_repo_commit, api_url=api_url, api_key=api_key)
|
|
@@ -36,9 +36,19 @@ class OpenAIFunctionsRouter(RunnableBindingBase[BaseMessage, Any]):
|
|
|
36
36
|
],
|
|
37
37
|
functions: Optional[list[OpenAIFunction]] = None,
|
|
38
38
|
):
|
|
39
|
+
"""Initialize the OpenAIFunctionsRouter.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
runnables: A mapping of function names to runnables.
|
|
43
|
+
functions: Optional list of functions to check against the runnables.
|
|
44
|
+
"""
|
|
39
45
|
if functions is not None:
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
if len(functions) != len(runnables):
|
|
47
|
+
msg = "The number of functions does not match the number of runnables."
|
|
48
|
+
raise ValueError(msg)
|
|
49
|
+
if not all(func["name"] in runnables for func in functions):
|
|
50
|
+
msg = "One or more function names are not found in runnables."
|
|
51
|
+
raise ValueError(msg)
|
|
42
52
|
router = (
|
|
43
53
|
JsonOutputFunctionsParser(args_only=False)
|
|
44
54
|
| {"key": itemgetter("name"), "input": itemgetter("arguments")}
|
langchain/schema/__init__.py
CHANGED
|
@@ -43,40 +43,40 @@ Memory = BaseMemory
|
|
|
43
43
|
_message_to_dict = message_to_dict
|
|
44
44
|
|
|
45
45
|
__all__ = [
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"BaseStore",
|
|
49
|
-
"AgentFinish",
|
|
46
|
+
"RUN_KEY",
|
|
47
|
+
"AIMessage",
|
|
50
48
|
"AgentAction",
|
|
51
|
-
"
|
|
49
|
+
"AgentFinish",
|
|
50
|
+
"BaseCache",
|
|
52
51
|
"BaseChatMessageHistory",
|
|
53
52
|
"BaseDocumentTransformer",
|
|
53
|
+
"BaseLLMOutputParser",
|
|
54
|
+
"BaseMemory",
|
|
54
55
|
"BaseMessage",
|
|
56
|
+
"BaseOutputParser",
|
|
57
|
+
"BasePromptTemplate",
|
|
58
|
+
"BaseRetriever",
|
|
59
|
+
"BaseStore",
|
|
60
|
+
"ChatGeneration",
|
|
55
61
|
"ChatMessage",
|
|
62
|
+
"ChatResult",
|
|
63
|
+
"Document",
|
|
56
64
|
"FunctionMessage",
|
|
65
|
+
"Generation",
|
|
57
66
|
"HumanMessage",
|
|
58
|
-
"AIMessage",
|
|
59
|
-
"SystemMessage",
|
|
60
|
-
"messages_from_dict",
|
|
61
|
-
"messages_to_dict",
|
|
62
|
-
"message_to_dict",
|
|
63
|
-
"_message_to_dict",
|
|
64
|
-
"_message_from_dict",
|
|
65
|
-
"get_buffer_string",
|
|
66
|
-
"RunInfo",
|
|
67
67
|
"LLMResult",
|
|
68
|
-
"ChatResult",
|
|
69
|
-
"ChatGeneration",
|
|
70
|
-
"Generation",
|
|
71
|
-
"PromptValue",
|
|
72
68
|
"LangChainException",
|
|
73
|
-
"BaseRetriever",
|
|
74
|
-
"RUN_KEY",
|
|
75
69
|
"Memory",
|
|
76
70
|
"OutputParserException",
|
|
71
|
+
"PromptValue",
|
|
72
|
+
"RunInfo",
|
|
77
73
|
"StrOutputParser",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
74
|
+
"SystemMessage",
|
|
75
|
+
"_message_from_dict",
|
|
76
|
+
"_message_to_dict",
|
|
81
77
|
"format_document",
|
|
78
|
+
"get_buffer_string",
|
|
79
|
+
"message_to_dict",
|
|
80
|
+
"messages_from_dict",
|
|
81
|
+
"messages_to_dict",
|
|
82
82
|
]
|
langchain/schema/cache.py
CHANGED
|
@@ -11,13 +11,13 @@ from langchain_core.callbacks.base import (
|
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
14
|
-
"RetrieverManagerMixin",
|
|
15
|
-
"LLMManagerMixin",
|
|
16
|
-
"ChainManagerMixin",
|
|
17
|
-
"ToolManagerMixin",
|
|
18
|
-
"CallbackManagerMixin",
|
|
19
|
-
"RunManagerMixin",
|
|
20
|
-
"BaseCallbackHandler",
|
|
21
14
|
"AsyncCallbackHandler",
|
|
15
|
+
"BaseCallbackHandler",
|
|
22
16
|
"BaseCallbackManager",
|
|
17
|
+
"CallbackManagerMixin",
|
|
18
|
+
"ChainManagerMixin",
|
|
19
|
+
"LLMManagerMixin",
|
|
20
|
+
"RetrieverManagerMixin",
|
|
21
|
+
"RunManagerMixin",
|
|
22
|
+
"ToolManagerMixin",
|
|
23
23
|
]
|
|
@@ -28,28 +28,28 @@ from langchain_core.tracers.context import (
|
|
|
28
28
|
from langchain_core.utils.env import env_var_is_set
|
|
29
29
|
|
|
30
30
|
__all__ = [
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"collect_runs",
|
|
34
|
-
"trace_as_chain_group",
|
|
35
|
-
"handle_event",
|
|
36
|
-
"BaseRunManager",
|
|
37
|
-
"RunManager",
|
|
38
|
-
"ParentRunManager",
|
|
39
|
-
"AsyncRunManager",
|
|
40
|
-
"AsyncParentRunManager",
|
|
41
|
-
"CallbackManagerForLLMRun",
|
|
42
|
-
"AsyncCallbackManagerForLLMRun",
|
|
43
|
-
"CallbackManagerForChainRun",
|
|
31
|
+
"AsyncCallbackManager",
|
|
32
|
+
"AsyncCallbackManagerForChainGroup",
|
|
44
33
|
"AsyncCallbackManagerForChainRun",
|
|
45
|
-
"
|
|
46
|
-
"AsyncCallbackManagerForToolRun",
|
|
47
|
-
"CallbackManagerForRetrieverRun",
|
|
34
|
+
"AsyncCallbackManagerForLLMRun",
|
|
48
35
|
"AsyncCallbackManagerForRetrieverRun",
|
|
36
|
+
"AsyncCallbackManagerForToolRun",
|
|
37
|
+
"AsyncParentRunManager",
|
|
38
|
+
"AsyncRunManager",
|
|
39
|
+
"BaseRunManager",
|
|
49
40
|
"CallbackManager",
|
|
50
41
|
"CallbackManagerForChainGroup",
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
42
|
+
"CallbackManagerForChainRun",
|
|
43
|
+
"CallbackManagerForLLMRun",
|
|
44
|
+
"CallbackManagerForRetrieverRun",
|
|
45
|
+
"CallbackManagerForToolRun",
|
|
46
|
+
"ParentRunManager",
|
|
47
|
+
"RunManager",
|
|
48
|
+
"collect_runs",
|
|
54
49
|
"env_var_is_set",
|
|
50
|
+
"handle_event",
|
|
51
|
+
"register_configure_hook",
|
|
52
|
+
"trace_as_chain_group",
|
|
53
|
+
"tracing_enabled",
|
|
54
|
+
"tracing_v2_enabled",
|
|
55
55
|
]
|