langchain 0.3.25__py3-none-any.whl → 0.3.27__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.
Potentially problematic release.
This version of langchain might be problematic. Click here for more details.
- 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 +160 -133
- langchain/agents/agent_iterator.py +31 -14
- 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 +2 -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 +7 -7
- langchain/agents/chat/base.py +6 -12
- langchain/agents/chat/output_parser.py +9 -6
- langchain/agents/chat/prompt.py +3 -4
- langchain/agents/conversational/base.py +9 -5
- langchain/agents/conversational/output_parser.py +4 -2
- langchain/agents/conversational/prompt.py +2 -3
- langchain/agents/conversational_chat/base.py +7 -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 +18 -9
- langchain/agents/json_chat/base.py +18 -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 +9 -4
- langchain/agents/mrkl/output_parser.py +17 -13
- langchain/agents/mrkl/prompt.py +1 -2
- langchain/agents/openai_assistant/base.py +80 -70
- langchain/agents/openai_functions_agent/base.py +47 -38
- langchain/agents/openai_functions_multi_agent/base.py +40 -27
- langchain/agents/openai_tools/base.py +8 -8
- langchain/agents/output_parsers/__init__.py +3 -3
- langchain/agents/output_parsers/json.py +7 -7
- langchain/agents/output_parsers/openai_functions.py +15 -7
- langchain/agents/output_parsers/openai_tools.py +9 -4
- langchain/agents/output_parsers/react_json_single_input.py +10 -5
- langchain/agents/output_parsers/react_single_input.py +15 -11
- langchain/agents/output_parsers/self_ask.py +3 -2
- langchain/agents/output_parsers/tools.py +18 -13
- langchain/agents/output_parsers/xml.py +99 -28
- langchain/agents/react/agent.py +4 -4
- langchain/agents/react/base.py +22 -17
- langchain/agents/react/output_parser.py +5 -6
- langchain/agents/react/textworld_prompt.py +0 -1
- langchain/agents/react/wiki_prompt.py +14 -15
- langchain/agents/schema.py +3 -2
- langchain/agents/self_ask_with_search/base.py +19 -15
- langchain/agents/self_ask_with_search/prompt.py +0 -1
- langchain/agents/structured_chat/base.py +14 -11
- langchain/agents/structured_chat/output_parser.py +16 -18
- langchain/agents/structured_chat/prompt.py +3 -4
- langchain/agents/tool_calling_agent/base.py +7 -6
- langchain/agents/tools.py +2 -2
- langchain/agents/utils.py +2 -3
- langchain/agents/xml/base.py +5 -5
- 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 +6 -6
- 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 +4 -1
- langchain/callbacks/streaming_aiter_final_only.py +5 -3
- langchain/callbacks/streaming_stdout_final_only.py +5 -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/base.py +2 -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 +1 -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 +36 -22
- 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 +89 -55
- langchain/chains/chat_vector_db/prompts.py +2 -3
- langchain/chains/combine_documents/__init__.py +1 -1
- langchain/chains/combine_documents/base.py +24 -11
- langchain/chains/combine_documents/map_reduce.py +39 -31
- langchain/chains/combine_documents/map_rerank.py +34 -21
- langchain/chains/combine_documents/reduce.py +47 -26
- langchain/chains/combine_documents/refine.py +26 -17
- langchain/chains/combine_documents/stuff.py +19 -12
- langchain/chains/constitutional_ai/base.py +4 -4
- langchain/chains/constitutional_ai/principles.py +22 -25
- langchain/chains/constitutional_ai/prompts.py +25 -28
- langchain/chains/conversation/base.py +6 -7
- langchain/chains/conversation/memory.py +5 -5
- langchain/chains/conversation/prompt.py +5 -5
- langchain/chains/conversational_retrieval/base.py +41 -20
- langchain/chains/conversational_retrieval/prompts.py +2 -3
- langchain/chains/elasticsearch_database/base.py +8 -9
- 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 +26 -12
- 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 +77 -61
- langchain/chains/llm_bash/__init__.py +2 -1
- langchain/chains/llm_checker/base.py +7 -5
- langchain/chains/llm_checker/prompt.py +3 -4
- langchain/chains/llm_math/base.py +16 -9
- langchain/chains/llm_math/prompt.py +1 -2
- langchain/chains/llm_summarization_checker/base.py +9 -6
- langchain/chains/llm_symbolic_math/__init__.py +2 -1
- langchain/chains/loading.py +170 -153
- langchain/chains/mapreduce.py +4 -3
- langchain/chains/moderation.py +8 -9
- langchain/chains/natbot/base.py +8 -8
- langchain/chains/natbot/crawler.py +73 -76
- langchain/chains/natbot/prompt.py +2 -3
- langchain/chains/openai_functions/__init__.py +7 -7
- langchain/chains/openai_functions/base.py +13 -10
- langchain/chains/openai_functions/citation_fuzzy_match.py +12 -11
- langchain/chains/openai_functions/extraction.py +19 -19
- langchain/chains/openai_functions/openapi.py +35 -35
- langchain/chains/openai_functions/qa_with_structure.py +19 -12
- langchain/chains/openai_functions/tagging.py +2 -4
- langchain/chains/openai_tools/extraction.py +7 -8
- langchain/chains/qa_generation/base.py +4 -3
- langchain/chains/qa_generation/prompt.py +5 -5
- langchain/chains/qa_with_sources/base.py +14 -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 +14 -5
- langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
- langchain/chains/qa_with_sources/vector_db.py +17 -6
- langchain/chains/query_constructor/base.py +34 -33
- langchain/chains/query_constructor/ir.py +4 -4
- langchain/chains/query_constructor/parser.py +37 -32
- 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 +34 -27
- langchain/chains/retrieval_qa/prompt.py +1 -2
- langchain/chains/router/__init__.py +3 -3
- langchain/chains/router/base.py +24 -20
- langchain/chains/router/embedding_router.py +12 -8
- langchain/chains/router/llm_router.py +17 -16
- langchain/chains/router/multi_prompt.py +2 -2
- langchain/chains/router/multi_retrieval_qa.py +10 -5
- langchain/chains/sequential.py +30 -18
- langchain/chains/sql_database/prompt.py +14 -16
- langchain/chains/sql_database/query.py +6 -5
- langchain/chains/structured_output/__init__.py +1 -1
- langchain/chains/structured_output/base.py +75 -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 +5 -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 +160 -123
- 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/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 +33 -24
- langchain/embeddings/cache.py +117 -26
- 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 +24 -24
- langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
- langchain/evaluation/comparison/__init__.py +1 -1
- langchain/evaluation/comparison/eval_chain.py +21 -14
- langchain/evaluation/comparison/prompt.py +1 -2
- langchain/evaluation/criteria/__init__.py +1 -1
- langchain/evaluation/criteria/eval_chain.py +21 -12
- langchain/evaluation/criteria/prompt.py +2 -3
- langchain/evaluation/embedding_distance/base.py +24 -21
- langchain/evaluation/loading.py +15 -11
- langchain/evaluation/parsing/base.py +4 -1
- langchain/evaluation/parsing/json_distance.py +5 -2
- langchain/evaluation/parsing/json_schema.py +12 -8
- langchain/evaluation/qa/__init__.py +1 -1
- langchain/evaluation/qa/eval_chain.py +13 -6
- langchain/evaluation/qa/eval_prompt.py +7 -8
- langchain/evaluation/qa/generate_chain.py +2 -1
- langchain/evaluation/qa/generate_prompt.py +2 -4
- langchain/evaluation/schema.py +38 -30
- langchain/evaluation/scoring/__init__.py +1 -1
- langchain/evaluation/scoring/eval_chain.py +23 -16
- langchain/evaluation/scoring/prompt.py +0 -1
- langchain/evaluation/string_distance/base.py +15 -10
- 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 +11 -8
- 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 +13 -12
- langchain/memory/entity.py +84 -61
- langchain/memory/prompt.py +10 -11
- langchain/memory/readonly.py +0 -2
- langchain/memory/simple.py +1 -3
- langchain/memory/summary.py +13 -11
- langchain/memory/summary_buffer.py +17 -8
- langchain/memory/utils.py +3 -2
- langchain/memory/vectorstore.py +13 -6
- 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 +10 -5
- langchain/output_parsers/datetime.py +32 -31
- langchain/output_parsers/enum.py +5 -3
- langchain/output_parsers/fix.py +52 -52
- 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 +43 -47
- langchain/output_parsers/prompts.py +1 -2
- langchain/output_parsers/rail_parser.py +1 -1
- langchain/output_parsers/regex.py +7 -8
- langchain/output_parsers/regex_dict.py +7 -10
- langchain/output_parsers/retry.py +77 -78
- langchain/output_parsers/structured.py +11 -6
- langchain/output_parsers/yaml.py +15 -11
- langchain/prompts/__init__.py +5 -3
- langchain/prompts/base.py +5 -5
- langchain/prompts/chat.py +10 -9
- 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/retrievers/__init__.py +5 -5
- langchain/retrievers/bedrock.py +2 -2
- langchain/retrievers/bm25.py +1 -1
- langchain/retrievers/contextual_compression.py +15 -13
- langchain/retrievers/docarray.py +1 -1
- langchain/retrievers/document_compressors/__init__.py +7 -5
- langchain/retrievers/document_compressors/base.py +13 -7
- langchain/retrievers/document_compressors/chain_extract.py +4 -5
- langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
- langchain/retrievers/document_compressors/chain_filter.py +11 -12
- langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
- langchain/retrievers/document_compressors/cohere_rerank.py +17 -19
- langchain/retrievers/document_compressors/embeddings_filter.py +23 -23
- langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
- langchain/retrievers/document_compressors/listwise_rerank.py +11 -6
- langchain/retrievers/ensemble.py +28 -25
- 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 +32 -26
- langchain/retrievers/multi_vector.py +20 -8
- langchain/retrievers/parent_document_retriever.py +18 -9
- langchain/retrievers/re_phraser.py +6 -5
- langchain/retrievers/self_query/base.py +138 -119
- langchain/retrievers/time_weighted_retriever.py +18 -7
- langchain/retrievers/zilliz.py +1 -1
- langchain/runnables/hub.py +2 -1
- langchain/runnables/openai_functions.py +6 -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 +3 -2
- 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 +1 -1
- langchain/smith/evaluation/__init__.py +2 -2
- langchain/smith/evaluation/config.py +10 -7
- langchain/smith/evaluation/name_generation.py +3 -3
- langchain/smith/evaluation/progress.py +11 -2
- langchain/smith/evaluation/runner_utils.py +181 -129
- langchain/smith/evaluation/string_run_evaluator.py +75 -68
- langchain/storage/__init__.py +2 -2
- langchain/storage/_lc_store.py +4 -2
- langchain/storage/encoder_backed.py +6 -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 +2 -1
- 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.25.dist-info → langchain-0.3.27.dist-info}/METADATA +5 -5
- {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/RECORD +582 -582
- {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/WHEEL +1 -1
- {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/entry_points.txt +0 -0
- {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/licenses/LICENSE +0 -0
langchain/indexes/vectorstore.py
CHANGED
|
@@ -48,16 +48,19 @@ class VectorStoreIndexWrapper(BaseModel):
|
|
|
48
48
|
The result string from the RetrievalQA chain.
|
|
49
49
|
"""
|
|
50
50
|
if llm is None:
|
|
51
|
-
|
|
51
|
+
msg = (
|
|
52
52
|
"This API has been changed to require an LLM. "
|
|
53
53
|
"Please provide an llm to use for querying the vectorstore.\n"
|
|
54
54
|
"For example,\n"
|
|
55
55
|
"from langchain_openai import OpenAI\n"
|
|
56
56
|
"llm = OpenAI(temperature=0)"
|
|
57
57
|
)
|
|
58
|
+
raise NotImplementedError(msg)
|
|
58
59
|
retriever_kwargs = retriever_kwargs or {}
|
|
59
60
|
chain = RetrievalQA.from_chain_type(
|
|
60
|
-
llm,
|
|
61
|
+
llm,
|
|
62
|
+
retriever=self.vectorstore.as_retriever(**retriever_kwargs),
|
|
63
|
+
**kwargs,
|
|
61
64
|
)
|
|
62
65
|
return chain.invoke({chain.input_key: question})[chain.output_key]
|
|
63
66
|
|
|
@@ -80,16 +83,19 @@ class VectorStoreIndexWrapper(BaseModel):
|
|
|
80
83
|
The asynchronous result string from the RetrievalQA chain.
|
|
81
84
|
"""
|
|
82
85
|
if llm is None:
|
|
83
|
-
|
|
86
|
+
msg = (
|
|
84
87
|
"This API has been changed to require an LLM. "
|
|
85
88
|
"Please provide an llm to use for querying the vectorstore.\n"
|
|
86
89
|
"For example,\n"
|
|
87
90
|
"from langchain_openai import OpenAI\n"
|
|
88
91
|
"llm = OpenAI(temperature=0)"
|
|
89
92
|
)
|
|
93
|
+
raise NotImplementedError(msg)
|
|
90
94
|
retriever_kwargs = retriever_kwargs or {}
|
|
91
95
|
chain = RetrievalQA.from_chain_type(
|
|
92
|
-
llm,
|
|
96
|
+
llm,
|
|
97
|
+
retriever=self.vectorstore.as_retriever(**retriever_kwargs),
|
|
98
|
+
**kwargs,
|
|
93
99
|
)
|
|
94
100
|
return (await chain.ainvoke({chain.input_key: question}))[chain.output_key]
|
|
95
101
|
|
|
@@ -112,16 +118,19 @@ class VectorStoreIndexWrapper(BaseModel):
|
|
|
112
118
|
A dictionary containing the answer and source documents.
|
|
113
119
|
"""
|
|
114
120
|
if llm is None:
|
|
115
|
-
|
|
121
|
+
msg = (
|
|
116
122
|
"This API has been changed to require an LLM. "
|
|
117
123
|
"Please provide an llm to use for querying the vectorstore.\n"
|
|
118
124
|
"For example,\n"
|
|
119
125
|
"from langchain_openai import OpenAI\n"
|
|
120
126
|
"llm = OpenAI(temperature=0)"
|
|
121
127
|
)
|
|
128
|
+
raise NotImplementedError(msg)
|
|
122
129
|
retriever_kwargs = retriever_kwargs or {}
|
|
123
130
|
chain = RetrievalQAWithSourcesChain.from_chain_type(
|
|
124
|
-
llm,
|
|
131
|
+
llm,
|
|
132
|
+
retriever=self.vectorstore.as_retriever(**retriever_kwargs),
|
|
133
|
+
**kwargs,
|
|
125
134
|
)
|
|
126
135
|
return chain.invoke({chain.question_key: question})
|
|
127
136
|
|
|
@@ -144,16 +153,19 @@ class VectorStoreIndexWrapper(BaseModel):
|
|
|
144
153
|
A dictionary containing the answer and source documents.
|
|
145
154
|
"""
|
|
146
155
|
if llm is None:
|
|
147
|
-
|
|
156
|
+
msg = (
|
|
148
157
|
"This API has been changed to require an LLM. "
|
|
149
158
|
"Please provide an llm to use for querying the vectorstore.\n"
|
|
150
159
|
"For example,\n"
|
|
151
160
|
"from langchain_openai import OpenAI\n"
|
|
152
161
|
"llm = OpenAI(temperature=0)"
|
|
153
162
|
)
|
|
163
|
+
raise NotImplementedError(msg)
|
|
154
164
|
retriever_kwargs = retriever_kwargs or {}
|
|
155
165
|
chain = RetrievalQAWithSourcesChain.from_chain_type(
|
|
156
|
-
llm,
|
|
166
|
+
llm,
|
|
167
|
+
retriever=self.vectorstore.as_retriever(**retriever_kwargs),
|
|
168
|
+
**kwargs,
|
|
157
169
|
)
|
|
158
170
|
return await chain.ainvoke({chain.question_key: question})
|
|
159
171
|
|
|
@@ -164,14 +176,14 @@ def _get_in_memory_vectorstore() -> type[VectorStore]:
|
|
|
164
176
|
|
|
165
177
|
try:
|
|
166
178
|
from langchain_community.vectorstores.inmemory import InMemoryVectorStore
|
|
167
|
-
except ImportError:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
)
|
|
179
|
+
except ImportError as e:
|
|
180
|
+
msg = "Please install langchain-community to use the InMemoryVectorStore."
|
|
181
|
+
raise ImportError(msg) from e
|
|
171
182
|
warnings.warn(
|
|
172
183
|
"Using InMemoryVectorStore as the default vectorstore."
|
|
173
184
|
"This memory store won't persist data. You should explicitly"
|
|
174
|
-
"specify a vectorstore when using VectorstoreIndexCreator"
|
|
185
|
+
"specify a vectorstore when using VectorstoreIndexCreator",
|
|
186
|
+
stacklevel=3,
|
|
175
187
|
)
|
|
176
188
|
return InMemoryVectorStore
|
|
177
189
|
|
|
@@ -180,7 +192,7 @@ class VectorstoreIndexCreator(BaseModel):
|
|
|
180
192
|
"""Logic for creating indexes."""
|
|
181
193
|
|
|
182
194
|
vectorstore_cls: type[VectorStore] = Field(
|
|
183
|
-
default_factory=_get_in_memory_vectorstore
|
|
195
|
+
default_factory=_get_in_memory_vectorstore,
|
|
184
196
|
)
|
|
185
197
|
embedding: Embeddings
|
|
186
198
|
text_splitter: TextSplitter = Field(default_factory=_get_default_text_splitter)
|
|
@@ -216,8 +228,7 @@ class VectorstoreIndexCreator(BaseModel):
|
|
|
216
228
|
"""
|
|
217
229
|
docs = []
|
|
218
230
|
for loader in loaders:
|
|
219
|
-
async for doc in loader.alazy_load()
|
|
220
|
-
docs.append(doc)
|
|
231
|
+
docs.extend([doc async for doc in loader.alazy_load()])
|
|
221
232
|
return await self.afrom_documents(docs)
|
|
222
233
|
|
|
223
234
|
def from_documents(self, documents: list[Document]) -> VectorStoreIndexWrapper:
|
|
@@ -231,12 +242,15 @@ class VectorstoreIndexCreator(BaseModel):
|
|
|
231
242
|
"""
|
|
232
243
|
sub_docs = self.text_splitter.split_documents(documents)
|
|
233
244
|
vectorstore = self.vectorstore_cls.from_documents(
|
|
234
|
-
sub_docs,
|
|
245
|
+
sub_docs,
|
|
246
|
+
self.embedding,
|
|
247
|
+
**self.vectorstore_kwargs,
|
|
235
248
|
)
|
|
236
249
|
return VectorStoreIndexWrapper(vectorstore=vectorstore)
|
|
237
250
|
|
|
238
251
|
async def afrom_documents(
|
|
239
|
-
self,
|
|
252
|
+
self,
|
|
253
|
+
documents: list[Document],
|
|
240
254
|
) -> VectorStoreIndexWrapper:
|
|
241
255
|
"""Asynchronously create a vectorstore index from a list of documents.
|
|
242
256
|
|
|
@@ -248,6 +262,8 @@ class VectorstoreIndexCreator(BaseModel):
|
|
|
248
262
|
"""
|
|
249
263
|
sub_docs = self.text_splitter.split_documents(documents)
|
|
250
264
|
vectorstore = await self.vectorstore_cls.afrom_documents(
|
|
251
|
-
sub_docs,
|
|
265
|
+
sub_docs,
|
|
266
|
+
self.embedding,
|
|
267
|
+
**self.vectorstore_kwargs,
|
|
252
268
|
)
|
|
253
269
|
return VectorStoreIndexWrapper(vectorstore=vectorstore)
|
langchain/llms/__init__.py
CHANGED
|
@@ -552,6 +552,7 @@ def __getattr__(name: str) -> Any:
|
|
|
552
552
|
"Please import from langchain-community instead:\n\n"
|
|
553
553
|
f"`from langchain_community.llms import {name}`.\n\n"
|
|
554
554
|
"To install langchain-community run `pip install -U langchain-community`.",
|
|
555
|
+
stacklevel=2,
|
|
555
556
|
category=LangChainDeprecationWarning,
|
|
556
557
|
)
|
|
557
558
|
|
|
@@ -561,12 +562,13 @@ def __getattr__(name: str) -> Any:
|
|
|
561
562
|
k: v() for k, v in get_type_to_cls_dict().items()
|
|
562
563
|
}
|
|
563
564
|
return type_to_cls_dict
|
|
564
|
-
|
|
565
|
-
return getattr(llms, name)
|
|
565
|
+
return getattr(llms, name)
|
|
566
566
|
|
|
567
567
|
|
|
568
568
|
__all__ = [
|
|
569
569
|
"AI21",
|
|
570
|
+
"RWKV",
|
|
571
|
+
"VLLM",
|
|
570
572
|
"AlephAlpha",
|
|
571
573
|
"AmazonAPIGateway",
|
|
572
574
|
"Anthropic",
|
|
@@ -592,8 +594,8 @@ __all__ = [
|
|
|
592
594
|
"FakeListLLM",
|
|
593
595
|
"Fireworks",
|
|
594
596
|
"ForefrontAI",
|
|
595
|
-
"GigaChat",
|
|
596
597
|
"GPT4All",
|
|
598
|
+
"GigaChat",
|
|
597
599
|
"GooglePalm",
|
|
598
600
|
"GooseAI",
|
|
599
601
|
"GradientLLM",
|
|
@@ -602,18 +604,20 @@ __all__ = [
|
|
|
602
604
|
"HuggingFacePipeline",
|
|
603
605
|
"HuggingFaceTextGenInference",
|
|
604
606
|
"HumanInputLLM",
|
|
607
|
+
"JavelinAIGateway",
|
|
605
608
|
"KoboldApiLLM",
|
|
606
609
|
"LlamaCpp",
|
|
607
|
-
"TextGen",
|
|
608
610
|
"ManifestWrapper",
|
|
609
611
|
"Minimax",
|
|
610
612
|
"MlflowAIGateway",
|
|
611
613
|
"Modal",
|
|
612
614
|
"MosaicML",
|
|
613
|
-
"Nebula",
|
|
614
615
|
"NIBittensorLLM",
|
|
615
616
|
"NLPCloud",
|
|
617
|
+
"Nebula",
|
|
618
|
+
"OctoAIEndpoint",
|
|
616
619
|
"Ollama",
|
|
620
|
+
"OpaquePrompts",
|
|
617
621
|
"OpenAI",
|
|
618
622
|
"OpenAIChat",
|
|
619
623
|
"OpenLLM",
|
|
@@ -625,28 +629,24 @@ __all__ = [
|
|
|
625
629
|
"PredictionGuard",
|
|
626
630
|
"PromptLayerOpenAI",
|
|
627
631
|
"PromptLayerOpenAIChat",
|
|
628
|
-
"
|
|
629
|
-
"RWKV",
|
|
632
|
+
"QianfanLLMEndpoint",
|
|
630
633
|
"Replicate",
|
|
631
634
|
"SagemakerEndpoint",
|
|
632
635
|
"SelfHostedHuggingFaceLLM",
|
|
633
636
|
"SelfHostedPipeline",
|
|
634
637
|
"StochasticAI",
|
|
638
|
+
"TextGen",
|
|
635
639
|
"TitanTakeoff",
|
|
636
640
|
"TitanTakeoffPro",
|
|
637
641
|
"Tongyi",
|
|
642
|
+
"VLLMOpenAI",
|
|
638
643
|
"VertexAI",
|
|
639
644
|
"VertexAIModelGarden",
|
|
640
|
-
"
|
|
641
|
-
"VLLMOpenAI",
|
|
645
|
+
"VolcEngineMaasLLM",
|
|
642
646
|
"WatsonxLLM",
|
|
643
647
|
"Writer",
|
|
644
|
-
"OctoAIEndpoint",
|
|
645
648
|
"Xinference",
|
|
646
|
-
"JavelinAIGateway",
|
|
647
|
-
"QianfanLLMEndpoint",
|
|
648
649
|
"YandexGPT",
|
|
649
|
-
"VolcEngineMaasLLM",
|
|
650
650
|
]
|
|
651
651
|
|
|
652
652
|
|
langchain/llms/ai21.py
CHANGED
|
@@ -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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from typing import Any, Optional
|
|
2
2
|
|
|
3
3
|
from langchain_core._api import deprecated
|
|
4
|
+
from langchain_core.memory import BaseMemory
|
|
4
5
|
from langchain_core.messages import BaseMessage, get_buffer_string
|
|
5
6
|
from langchain_core.utils import pre_init
|
|
6
7
|
|
|
7
|
-
from langchain.memory.chat_memory import BaseChatMemory
|
|
8
|
+
from langchain.memory.chat_memory import BaseChatMemory
|
|
8
9
|
from langchain.memory.utils import get_prompt_input_key
|
|
9
10
|
|
|
10
11
|
|
|
@@ -120,9 +121,8 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
120
121
|
def validate_chains(cls, values: dict) -> dict:
|
|
121
122
|
"""Validate that return messages is not True."""
|
|
122
123
|
if values.get("return_messages", False):
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
)
|
|
124
|
+
msg = "return_messages must be False for ConversationStringBufferMemory"
|
|
125
|
+
raise ValueError(msg)
|
|
126
126
|
return values
|
|
127
127
|
|
|
128
128
|
@property
|
|
@@ -148,16 +148,19 @@ class ConversationStringBufferMemory(BaseMemory):
|
|
|
148
148
|
prompt_input_key = self.input_key
|
|
149
149
|
if self.output_key is None:
|
|
150
150
|
if len(outputs) != 1:
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
msg = f"One output key expected, got {outputs.keys()}"
|
|
152
|
+
raise ValueError(msg)
|
|
153
|
+
output_key = next(iter(outputs.keys()))
|
|
153
154
|
else:
|
|
154
155
|
output_key = self.output_key
|
|
155
156
|
human = f"{self.human_prefix}: " + inputs[prompt_input_key]
|
|
156
157
|
ai = f"{self.ai_prefix}: " + outputs[output_key]
|
|
157
|
-
self.buffer += "\n
|
|
158
|
+
self.buffer += f"\n{human}\n{ai}"
|
|
158
159
|
|
|
159
160
|
async def asave_context(
|
|
160
|
-
self,
|
|
161
|
+
self,
|
|
162
|
+
inputs: dict[str, Any],
|
|
163
|
+
outputs: dict[str, str],
|
|
161
164
|
) -> None:
|
|
162
165
|
"""Save context from this conversation to buffer."""
|
|
163
166
|
return self.save_context(inputs, outputs)
|
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)
|