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
|
@@ -38,11 +38,11 @@ def __getattr__(name: str) -> Any:
|
|
|
38
38
|
|
|
39
39
|
__all__ = [
|
|
40
40
|
"AzureMLEndpointClient",
|
|
41
|
+
"AzureMLOnlineEndpoint",
|
|
41
42
|
"ContentFormatterBase",
|
|
43
|
+
"CustomOpenAIContentFormatter",
|
|
44
|
+
"DollyContentFormatter",
|
|
42
45
|
"GPT2ContentFormatter",
|
|
43
|
-
"OSSContentFormatter",
|
|
44
46
|
"HFContentFormatter",
|
|
45
|
-
"
|
|
46
|
-
"CustomOpenAIContentFormatter",
|
|
47
|
-
"AzureMLOnlineEndpoint",
|
|
47
|
+
"OSSContentFormatter",
|
|
48
48
|
]
|
langchain/llms/base.py
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"""
|
|
2
|
+
This module provides backward-compatible exports of core language model classes.
|
|
3
|
+
|
|
4
|
+
These classes are re-exported for compatibility with older versions of LangChain
|
|
5
|
+
and allow users to import language model interfaces from a stable path.
|
|
6
|
+
|
|
7
|
+
Exports:
|
|
8
|
+
- LLM: Abstract base class for all LLMs
|
|
9
|
+
- BaseLLM: Deprecated or foundational class for legacy LLMs
|
|
10
|
+
- BaseLanguageModel: Base class for core language model implementations
|
|
11
|
+
"""
|
|
12
|
+
|
|
2
13
|
from langchain_core.language_models import BaseLanguageModel
|
|
3
|
-
from langchain_core.language_models.llms import
|
|
4
|
-
LLM,
|
|
5
|
-
BaseLLM,
|
|
6
|
-
)
|
|
14
|
+
from langchain_core.language_models.llms import LLM, BaseLLM
|
|
7
15
|
|
|
8
16
|
__all__ = [
|
|
9
|
-
"BaseLanguageModel",
|
|
10
|
-
"BaseLLM",
|
|
11
17
|
"LLM",
|
|
18
|
+
"BaseLLM",
|
|
19
|
+
"BaseLanguageModel",
|
|
12
20
|
]
|
langchain/llms/bedrock.py
CHANGED
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"CloudflareWorkersAI": "langchain_community.llms.cloudflare_workersai"
|
|
12
|
+
"CloudflareWorkersAI": "langchain_community.llms.cloudflare_workersai",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
langchain/llms/gradient_ai.py
CHANGED
langchain/llms/loading.py
CHANGED
langchain/llms/openai.py
CHANGED
langchain/load/dump.py
CHANGED
langchain/load/load.py
CHANGED
langchain/load/serializable.py
CHANGED
|
@@ -10,10 +10,10 @@ from langchain_core.load.serializable import (
|
|
|
10
10
|
|
|
11
11
|
__all__ = [
|
|
12
12
|
"BaseSerialized",
|
|
13
|
+
"Serializable",
|
|
13
14
|
"SerializedConstructor",
|
|
14
|
-
"SerializedSecret",
|
|
15
15
|
"SerializedNotImplemented",
|
|
16
|
-
"
|
|
17
|
-
"Serializable",
|
|
16
|
+
"SerializedSecret",
|
|
18
17
|
"to_json_not_implemented",
|
|
18
|
+
"try_neq_default",
|
|
19
19
|
]
|
langchain/memory/__init__.py
CHANGED
|
@@ -139,15 +139,15 @@ __all__ = [
|
|
|
139
139
|
"ReadOnlySharedMemory",
|
|
140
140
|
"RedisChatMessageHistory",
|
|
141
141
|
"RedisEntityStore",
|
|
142
|
-
"SingleStoreDBChatMessageHistory",
|
|
143
142
|
"SQLChatMessageHistory",
|
|
144
143
|
"SQLiteEntityStore",
|
|
145
144
|
"SimpleMemory",
|
|
145
|
+
"SingleStoreDBChatMessageHistory",
|
|
146
146
|
"StreamlitChatMessageHistory",
|
|
147
|
+
"UpstashRedisChatMessageHistory",
|
|
148
|
+
"UpstashRedisEntityStore",
|
|
147
149
|
"VectorStoreRetrieverMemory",
|
|
148
150
|
"XataChatMessageHistory",
|
|
149
151
|
"ZepChatMessageHistory",
|
|
150
152
|
"ZepMemory",
|
|
151
|
-
"UpstashRedisEntityStore",
|
|
152
|
-
"UpstashRedisChatMessageHistory",
|
|
153
153
|
]
|
langchain/memory/buffer.py
CHANGED
|
@@ -4,6 +4,7 @@ from langchain_core._api import deprecated
|
|
|
4
4
|
from langchain_core.memory import BaseMemory
|
|
5
5
|
from langchain_core.messages import BaseMessage, get_buffer_string
|
|
6
6
|
from langchain_core.utils import pre_init
|
|
7
|
+
from typing_extensions import override
|
|
7
8
|
|
|
8
9
|
from langchain.memory.chat_memory import BaseChatMemory
|
|
9
10
|
from langchain.memory.utils import get_prompt_input_key
|
|
@@ -78,10 +79,12 @@ class ConversationBufferMemory(BaseChatMemory):
|
|
|
78
79
|
"""
|
|
79
80
|
return [self.memory_key]
|
|
80
81
|
|
|
82
|
+
@override
|
|
81
83
|
def load_memory_variables(self, inputs: dict[str, Any]) -> dict[str, Any]:
|
|
82
84
|
"""Return history buffer."""
|
|
83
85
|
return {self.memory_key: self.buffer}
|
|
84
86
|
|
|
87
|
+
@override
|
|
85
88
|
async def aload_memory_variables(self, inputs: dict[str, Any]) -> dict[str, Any]:
|
|
86
89
|
"""Return key-value pairs given the text input to the chain."""
|
|
87
90
|
buffer = await self.abuffer()
|
|
@@ -121,9 +124,8 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
121
124
|
def validate_chains(cls, values: dict) -> dict:
|
|
122
125
|
"""Validate that return messages is not True."""
|
|
123
126
|
if values.get("return_messages", False):
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
)
|
|
127
|
+
msg = "return_messages must be False for ConversationStringBufferMemory"
|
|
128
|
+
raise ValueError(msg)
|
|
127
129
|
return values
|
|
128
130
|
|
|
129
131
|
@property
|
|
@@ -133,6 +135,7 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
133
135
|
"""
|
|
134
136
|
return [self.memory_key]
|
|
135
137
|
|
|
138
|
+
@override
|
|
136
139
|
def load_memory_variables(self, inputs: dict[str, Any]) -> dict[str, str]:
|
|
137
140
|
"""Return history buffer."""
|
|
138
141
|
return {self.memory_key: self.buffer}
|
|
@@ -149,16 +152,19 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
149
152
|
prompt_input_key = self.input_key
|
|
150
153
|
if self.output_key is None:
|
|
151
154
|
if len(outputs) != 1:
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
msg = f"One output key expected, got {outputs.keys()}"
|
|
156
|
+
raise ValueError(msg)
|
|
157
|
+
output_key = next(iter(outputs.keys()))
|
|
154
158
|
else:
|
|
155
159
|
output_key = self.output_key
|
|
156
160
|
human = f"{self.human_prefix}: " + inputs[prompt_input_key]
|
|
157
161
|
ai = f"{self.ai_prefix}: " + outputs[output_key]
|
|
158
|
-
self.buffer += "\n
|
|
162
|
+
self.buffer += f"\n{human}\n{ai}"
|
|
159
163
|
|
|
160
164
|
async def asave_context(
|
|
161
|
-
self,
|
|
165
|
+
self,
|
|
166
|
+
inputs: dict[str, Any],
|
|
167
|
+
outputs: dict[str, str],
|
|
162
168
|
) -> None:
|
|
163
169
|
"""Save context from this conversation to buffer."""
|
|
164
170
|
return self.save_context(inputs, outputs)
|
|
@@ -167,5 +173,6 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
167
173
|
"""Clear memory contents."""
|
|
168
174
|
self.buffer = ""
|
|
169
175
|
|
|
176
|
+
@override
|
|
170
177
|
async def aclear(self) -> None:
|
|
171
178
|
self.clear()
|
|
@@ -2,6 +2,7 @@ from typing import Any, Union
|
|
|
2
2
|
|
|
3
3
|
from langchain_core._api import deprecated
|
|
4
4
|
from langchain_core.messages import BaseMessage, get_buffer_string
|
|
5
|
+
from typing_extensions import override
|
|
5
6
|
|
|
6
7
|
from langchain.memory.chat_memory import BaseChatMemory
|
|
7
8
|
|
|
@@ -55,6 +56,7 @@ class ConversationBufferWindowMemory(BaseChatMemory):
|
|
|
55
56
|
"""
|
|
56
57
|
return [self.memory_key]
|
|
57
58
|
|
|
59
|
+
@override
|
|
58
60
|
def load_memory_variables(self, inputs: dict[str, Any]) -> dict[str, Any]:
|
|
59
61
|
"""Return history buffer."""
|
|
60
62
|
return {self.memory_key: self.buffer}
|
langchain/memory/chat_memory.py
CHANGED
|
@@ -34,14 +34,16 @@ class BaseChatMemory(BaseMemory, ABC):
|
|
|
34
34
|
"""
|
|
35
35
|
|
|
36
36
|
chat_memory: BaseChatMessageHistory = Field(
|
|
37
|
-
default_factory=InMemoryChatMessageHistory
|
|
37
|
+
default_factory=InMemoryChatMessageHistory,
|
|
38
38
|
)
|
|
39
39
|
output_key: Optional[str] = None
|
|
40
40
|
input_key: Optional[str] = None
|
|
41
41
|
return_messages: bool = False
|
|
42
42
|
|
|
43
43
|
def _get_input_output(
|
|
44
|
-
self,
|
|
44
|
+
self,
|
|
45
|
+
inputs: dict[str, Any],
|
|
46
|
+
outputs: dict[str, str],
|
|
45
47
|
) -> tuple[str, str]:
|
|
46
48
|
if self.input_key is None:
|
|
47
49
|
prompt_input_key = get_prompt_input_key(inputs, self.memory_variables)
|
|
@@ -49,20 +51,22 @@ class BaseChatMemory(BaseMemory, ABC):
|
|
|
49
51
|
prompt_input_key = self.input_key
|
|
50
52
|
if self.output_key is None:
|
|
51
53
|
if len(outputs) == 1:
|
|
52
|
-
output_key =
|
|
54
|
+
output_key = next(iter(outputs.keys()))
|
|
53
55
|
elif "output" in outputs:
|
|
54
56
|
output_key = "output"
|
|
55
57
|
warnings.warn(
|
|
56
58
|
f"'{self.__class__.__name__}' got multiple output keys:"
|
|
57
59
|
f" {outputs.keys()}. The default 'output' key is being used."
|
|
58
|
-
f" If this is not desired, please manually set 'output_key'."
|
|
60
|
+
f" If this is not desired, please manually set 'output_key'.",
|
|
61
|
+
stacklevel=3,
|
|
59
62
|
)
|
|
60
63
|
else:
|
|
61
|
-
|
|
64
|
+
msg = (
|
|
62
65
|
f"Got multiple output keys: {outputs.keys()}, cannot "
|
|
63
66
|
f"determine which to store in memory. Please set the "
|
|
64
67
|
f"'output_key' explicitly."
|
|
65
68
|
)
|
|
69
|
+
raise ValueError(msg)
|
|
66
70
|
else:
|
|
67
71
|
output_key = self.output_key
|
|
68
72
|
return inputs[prompt_input_key], outputs[output_key]
|
|
@@ -74,11 +78,13 @@ class BaseChatMemory(BaseMemory, ABC):
|
|
|
74
78
|
[
|
|
75
79
|
HumanMessage(content=input_str),
|
|
76
80
|
AIMessage(content=output_str),
|
|
77
|
-
]
|
|
81
|
+
],
|
|
78
82
|
)
|
|
79
83
|
|
|
80
84
|
async def asave_context(
|
|
81
|
-
self,
|
|
85
|
+
self,
|
|
86
|
+
inputs: dict[str, Any],
|
|
87
|
+
outputs: dict[str, str],
|
|
82
88
|
) -> None:
|
|
83
89
|
"""Save context from this conversation to buffer."""
|
|
84
90
|
input_str, output_str = self._get_input_output(inputs, outputs)
|
|
@@ -86,7 +92,7 @@ class BaseChatMemory(BaseMemory, ABC):
|
|
|
86
92
|
[
|
|
87
93
|
HumanMessage(content=input_str),
|
|
88
94
|
AIMessage(content=output_str),
|
|
89
|
-
]
|
|
95
|
+
],
|
|
90
96
|
)
|
|
91
97
|
|
|
92
98
|
def clear(self) -> None:
|
|
@@ -75,8 +75,8 @@ __all__ = [
|
|
|
75
75
|
"PostgresChatMessageHistory",
|
|
76
76
|
"RedisChatMessageHistory",
|
|
77
77
|
"RocksetChatMessageHistory",
|
|
78
|
-
"SingleStoreDBChatMessageHistory",
|
|
79
78
|
"SQLChatMessageHistory",
|
|
79
|
+
"SingleStoreDBChatMessageHistory",
|
|
80
80
|
"StreamlitChatMessageHistory",
|
|
81
81
|
"UpstashRedisChatMessageHistory",
|
|
82
82
|
"XataChatMessageHistory",
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"AstraDBChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"AstraDBChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"CassandraChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"CassandraChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"CosmosDBChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"CosmosDBChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"DynamoDBChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"DynamoDBChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"ElasticsearchChatMessageHistory": "langchain_community.chat_message_histories"
|
|
14
|
+
"ElasticsearchChatMessageHistory": "langchain_community.chat_message_histories",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"FileChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"FileChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"FirestoreChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"FirestoreChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"MomentoChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"MomentoChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"MongoDBChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"MongoDBChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"Neo4jChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"Neo4jChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"PostgresChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"PostgresChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"RedisChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"RedisChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"RocksetChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"RocksetChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"SingleStoreDBChatMessageHistory": "langchain_community.chat_message_histories"
|
|
14
|
+
"SingleStoreDBChatMessageHistory": "langchain_community.chat_message_histories",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"StreamlitChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"StreamlitChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"UpstashRedisChatMessageHistory": "langchain_community.chat_message_histories"
|
|
14
|
+
"UpstashRedisChatMessageHistory": "langchain_community.chat_message_histories",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"XataChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"XataChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ZepChatMessageHistory": "langchain_community.chat_message_histories"
|
|
12
|
+
"ZepChatMessageHistory": "langchain_community.chat_message_histories",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
langchain/memory/combined.py
CHANGED
|
@@ -15,17 +15,19 @@ class CombinedMemory(BaseMemory):
|
|
|
15
15
|
|
|
16
16
|
@field_validator("memories")
|
|
17
17
|
@classmethod
|
|
18
|
-
def
|
|
19
|
-
cls,
|
|
18
|
+
def _check_repeated_memory_variable(
|
|
19
|
+
cls,
|
|
20
|
+
value: list[BaseMemory],
|
|
20
21
|
) -> list[BaseMemory]:
|
|
21
22
|
all_variables: set[str] = set()
|
|
22
23
|
for val in value:
|
|
23
24
|
overlap = all_variables.intersection(val.memory_variables)
|
|
24
25
|
if overlap:
|
|
25
|
-
|
|
26
|
+
msg = (
|
|
26
27
|
f"The same variables {overlap} are found in multiple"
|
|
27
28
|
"memory object, which is not allowed by CombinedMemory."
|
|
28
29
|
)
|
|
30
|
+
raise ValueError(msg)
|
|
29
31
|
all_variables |= set(val.memory_variables)
|
|
30
32
|
|
|
31
33
|
return value
|
|
@@ -35,13 +37,13 @@ class CombinedMemory(BaseMemory):
|
|
|
35
37
|
def check_input_key(cls, value: list[BaseMemory]) -> list[BaseMemory]:
|
|
36
38
|
"""Check that if memories are of type BaseChatMemory that input keys exist."""
|
|
37
39
|
for val in value:
|
|
38
|
-
if isinstance(val, BaseChatMemory):
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
if isinstance(val, BaseChatMemory) and val.input_key is None:
|
|
41
|
+
warnings.warn(
|
|
42
|
+
"When using CombinedMemory, "
|
|
43
|
+
"input keys should be so the input is known. "
|
|
44
|
+
f" Was not set on {val}",
|
|
45
|
+
stacklevel=5,
|
|
46
|
+
)
|
|
45
47
|
return value
|
|
46
48
|
|
|
47
49
|
@property
|
|
@@ -65,9 +67,8 @@ class CombinedMemory(BaseMemory):
|
|
|
65
67
|
data = memory.load_memory_variables(inputs)
|
|
66
68
|
for key, value in data.items():
|
|
67
69
|
if key in memory_data:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
)
|
|
70
|
+
msg = f"The variable {key} is repeated in the CombinedMemory."
|
|
71
|
+
raise ValueError(msg)
|
|
71
72
|
memory_data[key] = value
|
|
72
73
|
|
|
73
74
|
return memory_data
|