langchain 0.3.27__py3-none-any.whl → 1.0.0__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 +2 -452
- langchain/agents/__init__.py +9 -178
- langchain/agents/factory.py +1582 -0
- langchain/agents/middleware/__init__.py +80 -0
- langchain/agents/middleware/_execution.py +388 -0
- langchain/agents/middleware/_redaction.py +350 -0
- langchain/agents/middleware/context_editing.py +274 -0
- langchain/agents/middleware/file_search.py +382 -0
- langchain/agents/middleware/human_in_the_loop.py +351 -0
- langchain/agents/middleware/model_call_limit.py +210 -0
- langchain/agents/middleware/model_fallback.py +137 -0
- langchain/agents/middleware/pii.py +317 -0
- langchain/agents/middleware/shell_tool.py +718 -0
- langchain/agents/middleware/summarization.py +249 -0
- langchain/agents/middleware/todo.py +219 -0
- langchain/agents/middleware/tool_call_limit.py +333 -0
- langchain/agents/middleware/tool_emulator.py +200 -0
- langchain/agents/middleware/tool_retry.py +384 -0
- langchain/agents/middleware/tool_selection.py +310 -0
- langchain/agents/middleware/types.py +1572 -0
- langchain/agents/structured_output.py +426 -0
- langchain/chat_models/__init__.py +7 -72
- langchain/chat_models/base.py +264 -317
- langchain/embeddings/__init__.py +7 -217
- langchain/embeddings/base.py +32 -42
- langchain/messages/__init__.py +72 -0
- langchain/rate_limiters/__init__.py +13 -0
- langchain/tools/__init__.py +17 -197
- langchain/tools/tool_node.py +1700 -0
- langchain-1.0.0.dist-info/METADATA +87 -0
- langchain-1.0.0.dist-info/RECORD +34 -0
- {langchain-0.3.27.dist-info → langchain-1.0.0.dist-info}/WHEEL +1 -1
- langchain/_api/__init__.py +0 -28
- langchain/_api/deprecation.py +0 -32
- langchain/_api/interactive_env.py +0 -5
- langchain/_api/module_import.py +0 -153
- langchain/_api/path.py +0 -3
- langchain/adapters/__init__.py +0 -0
- langchain/adapters/openai.py +0 -63
- langchain/agents/agent.py +0 -1828
- langchain/agents/agent_iterator.py +0 -431
- langchain/agents/agent_toolkits/__init__.py +0 -167
- langchain/agents/agent_toolkits/ainetwork/__init__.py +0 -1
- langchain/agents/agent_toolkits/ainetwork/toolkit.py +0 -25
- langchain/agents/agent_toolkits/amadeus/toolkit.py +0 -23
- langchain/agents/agent_toolkits/azure_cognitive_services.py +0 -29
- langchain/agents/agent_toolkits/base.py +0 -3
- langchain/agents/agent_toolkits/clickup/__init__.py +0 -0
- langchain/agents/agent_toolkits/clickup/toolkit.py +0 -25
- langchain/agents/agent_toolkits/conversational_retrieval/__init__.py +0 -0
- langchain/agents/agent_toolkits/conversational_retrieval/openai_functions.py +0 -87
- langchain/agents/agent_toolkits/conversational_retrieval/tool.py +0 -3
- langchain/agents/agent_toolkits/csv/__init__.py +0 -28
- langchain/agents/agent_toolkits/file_management/__init__.py +0 -31
- langchain/agents/agent_toolkits/file_management/toolkit.py +0 -29
- langchain/agents/agent_toolkits/github/__init__.py +0 -1
- langchain/agents/agent_toolkits/github/toolkit.py +0 -69
- langchain/agents/agent_toolkits/gitlab/__init__.py +0 -1
- langchain/agents/agent_toolkits/gitlab/toolkit.py +0 -25
- langchain/agents/agent_toolkits/gmail/__init__.py +0 -1
- langchain/agents/agent_toolkits/gmail/toolkit.py +0 -23
- langchain/agents/agent_toolkits/jira/__init__.py +0 -1
- langchain/agents/agent_toolkits/jira/toolkit.py +0 -23
- langchain/agents/agent_toolkits/json/__init__.py +0 -1
- langchain/agents/agent_toolkits/json/base.py +0 -25
- langchain/agents/agent_toolkits/json/prompt.py +0 -24
- langchain/agents/agent_toolkits/json/toolkit.py +0 -23
- langchain/agents/agent_toolkits/multion/__init__.py +0 -1
- langchain/agents/agent_toolkits/multion/toolkit.py +0 -25
- langchain/agents/agent_toolkits/nasa/__init__.py +0 -1
- langchain/agents/agent_toolkits/nasa/toolkit.py +0 -23
- langchain/agents/agent_toolkits/nla/__init__.py +0 -0
- langchain/agents/agent_toolkits/nla/tool.py +0 -23
- langchain/agents/agent_toolkits/nla/toolkit.py +0 -23
- langchain/agents/agent_toolkits/office365/__init__.py +0 -1
- langchain/agents/agent_toolkits/office365/toolkit.py +0 -25
- langchain/agents/agent_toolkits/openapi/__init__.py +0 -1
- langchain/agents/agent_toolkits/openapi/base.py +0 -25
- langchain/agents/agent_toolkits/openapi/planner.py +0 -52
- langchain/agents/agent_toolkits/openapi/planner_prompt.py +0 -103
- langchain/agents/agent_toolkits/openapi/prompt.py +0 -29
- langchain/agents/agent_toolkits/openapi/spec.py +0 -30
- langchain/agents/agent_toolkits/openapi/toolkit.py +0 -30
- langchain/agents/agent_toolkits/pandas/__init__.py +0 -28
- langchain/agents/agent_toolkits/playwright/__init__.py +0 -29
- langchain/agents/agent_toolkits/playwright/toolkit.py +0 -27
- langchain/agents/agent_toolkits/powerbi/__init__.py +0 -1
- langchain/agents/agent_toolkits/powerbi/base.py +0 -25
- langchain/agents/agent_toolkits/powerbi/chat_base.py +0 -27
- langchain/agents/agent_toolkits/powerbi/prompt.py +0 -36
- langchain/agents/agent_toolkits/powerbi/toolkit.py +0 -25
- langchain/agents/agent_toolkits/python/__init__.py +0 -28
- langchain/agents/agent_toolkits/slack/__init__.py +0 -1
- langchain/agents/agent_toolkits/slack/toolkit.py +0 -23
- langchain/agents/agent_toolkits/spark/__init__.py +0 -28
- langchain/agents/agent_toolkits/spark_sql/__init__.py +0 -1
- langchain/agents/agent_toolkits/spark_sql/base.py +0 -25
- langchain/agents/agent_toolkits/spark_sql/prompt.py +0 -27
- langchain/agents/agent_toolkits/spark_sql/toolkit.py +0 -25
- langchain/agents/agent_toolkits/sql/__init__.py +0 -1
- langchain/agents/agent_toolkits/sql/base.py +0 -23
- langchain/agents/agent_toolkits/sql/prompt.py +0 -29
- langchain/agents/agent_toolkits/sql/toolkit.py +0 -25
- langchain/agents/agent_toolkits/steam/__init__.py +0 -1
- langchain/agents/agent_toolkits/steam/toolkit.py +0 -23
- langchain/agents/agent_toolkits/vectorstore/__init__.py +0 -1
- langchain/agents/agent_toolkits/vectorstore/base.py +0 -217
- langchain/agents/agent_toolkits/vectorstore/prompt.py +0 -11
- langchain/agents/agent_toolkits/vectorstore/toolkit.py +0 -97
- langchain/agents/agent_toolkits/xorbits/__init__.py +0 -28
- langchain/agents/agent_toolkits/zapier/__init__.py +0 -1
- langchain/agents/agent_toolkits/zapier/toolkit.py +0 -25
- langchain/agents/agent_types.py +0 -57
- langchain/agents/chat/__init__.py +0 -0
- langchain/agents/chat/base.py +0 -178
- langchain/agents/chat/output_parser.py +0 -74
- langchain/agents/chat/prompt.py +0 -29
- langchain/agents/conversational/__init__.py +0 -1
- langchain/agents/conversational/base.py +0 -176
- langchain/agents/conversational/output_parser.py +0 -51
- langchain/agents/conversational/prompt.py +0 -35
- langchain/agents/conversational_chat/__init__.py +0 -1
- langchain/agents/conversational_chat/base.py +0 -181
- langchain/agents/conversational_chat/output_parser.py +0 -57
- langchain/agents/conversational_chat/prompt.py +0 -56
- langchain/agents/format_scratchpad/__init__.py +0 -25
- langchain/agents/format_scratchpad/log.py +0 -25
- langchain/agents/format_scratchpad/log_to_messages.py +0 -26
- langchain/agents/format_scratchpad/openai_functions.py +0 -80
- langchain/agents/format_scratchpad/openai_tools.py +0 -5
- langchain/agents/format_scratchpad/tools.py +0 -65
- langchain/agents/format_scratchpad/xml.py +0 -52
- langchain/agents/initialize.py +0 -105
- langchain/agents/json_chat/__init__.py +0 -0
- langchain/agents/json_chat/base.py +0 -195
- langchain/agents/json_chat/prompt.py +0 -8
- langchain/agents/load_tools.py +0 -13
- langchain/agents/loading.py +0 -148
- langchain/agents/mrkl/__init__.py +0 -1
- langchain/agents/mrkl/base.py +0 -216
- langchain/agents/mrkl/output_parser.py +0 -103
- langchain/agents/mrkl/prompt.py +0 -15
- langchain/agents/openai_assistant/__init__.py +0 -3
- langchain/agents/openai_assistant/base.py +0 -818
- langchain/agents/openai_functions_agent/__init__.py +0 -0
- langchain/agents/openai_functions_agent/agent_token_buffer_memory.py +0 -101
- langchain/agents/openai_functions_agent/base.py +0 -381
- langchain/agents/openai_functions_multi_agent/__init__.py +0 -0
- langchain/agents/openai_functions_multi_agent/base.py +0 -337
- langchain/agents/openai_tools/__init__.py +0 -0
- langchain/agents/openai_tools/base.py +0 -108
- langchain/agents/output_parsers/__init__.py +0 -35
- langchain/agents/output_parsers/json.py +0 -62
- langchain/agents/output_parsers/openai_functions.py +0 -96
- langchain/agents/output_parsers/openai_tools.py +0 -70
- langchain/agents/output_parsers/react_json_single_input.py +0 -84
- langchain/agents/output_parsers/react_single_input.py +0 -99
- langchain/agents/output_parsers/self_ask.py +0 -51
- langchain/agents/output_parsers/tools.py +0 -107
- langchain/agents/output_parsers/xml.py +0 -123
- langchain/agents/react/__init__.py +0 -1
- langchain/agents/react/agent.py +0 -144
- langchain/agents/react/base.py +0 -185
- langchain/agents/react/output_parser.py +0 -33
- langchain/agents/react/textworld_prompt.py +0 -51
- langchain/agents/react/wiki_prompt.py +0 -70
- langchain/agents/schema.py +0 -35
- langchain/agents/self_ask_with_search/__init__.py +0 -4
- langchain/agents/self_ask_with_search/base.py +0 -215
- langchain/agents/self_ask_with_search/output_parser.py +0 -4
- langchain/agents/self_ask_with_search/prompt.py +0 -43
- langchain/agents/structured_chat/__init__.py +0 -0
- langchain/agents/structured_chat/base.py +0 -304
- langchain/agents/structured_chat/output_parser.py +0 -99
- langchain/agents/structured_chat/prompt.py +0 -34
- langchain/agents/tool_calling_agent/__init__.py +0 -0
- langchain/agents/tool_calling_agent/base.py +0 -110
- langchain/agents/tools.py +0 -47
- langchain/agents/types.py +0 -27
- langchain/agents/utils.py +0 -19
- langchain/agents/xml/__init__.py +0 -0
- langchain/agents/xml/base.py +0 -231
- langchain/agents/xml/prompt.py +0 -21
- langchain/base_language.py +0 -7
- langchain/cache.py +0 -72
- langchain/callbacks/__init__.py +0 -139
- langchain/callbacks/aim_callback.py +0 -33
- langchain/callbacks/argilla_callback.py +0 -25
- langchain/callbacks/arize_callback.py +0 -25
- langchain/callbacks/arthur_callback.py +0 -25
- langchain/callbacks/base.py +0 -29
- langchain/callbacks/clearml_callback.py +0 -25
- langchain/callbacks/comet_ml_callback.py +0 -25
- langchain/callbacks/confident_callback.py +0 -25
- langchain/callbacks/context_callback.py +0 -25
- langchain/callbacks/file.py +0 -3
- langchain/callbacks/flyte_callback.py +0 -25
- langchain/callbacks/human.py +0 -33
- langchain/callbacks/infino_callback.py +0 -25
- langchain/callbacks/labelstudio_callback.py +0 -33
- langchain/callbacks/llmonitor_callback.py +0 -27
- langchain/callbacks/manager.py +0 -89
- langchain/callbacks/mlflow_callback.py +0 -38
- langchain/callbacks/openai_info.py +0 -25
- langchain/callbacks/promptlayer_callback.py +0 -27
- langchain/callbacks/sagemaker_callback.py +0 -27
- langchain/callbacks/stdout.py +0 -3
- langchain/callbacks/streaming_aiter.py +0 -75
- langchain/callbacks/streaming_aiter_final_only.py +0 -91
- langchain/callbacks/streaming_stdout.py +0 -5
- langchain/callbacks/streaming_stdout_final_only.py +0 -91
- langchain/callbacks/streamlit/__init__.py +0 -86
- langchain/callbacks/streamlit/mutable_expander.py +0 -33
- langchain/callbacks/streamlit/streamlit_callback_handler.py +0 -49
- langchain/callbacks/tracers/__init__.py +0 -38
- langchain/callbacks/tracers/base.py +0 -6
- langchain/callbacks/tracers/comet.py +0 -30
- langchain/callbacks/tracers/evaluation.py +0 -8
- langchain/callbacks/tracers/langchain.py +0 -8
- langchain/callbacks/tracers/langchain_v1.py +0 -3
- langchain/callbacks/tracers/log_stream.py +0 -9
- langchain/callbacks/tracers/logging.py +0 -46
- langchain/callbacks/tracers/root_listeners.py +0 -3
- langchain/callbacks/tracers/run_collector.py +0 -3
- langchain/callbacks/tracers/schemas.py +0 -27
- langchain/callbacks/tracers/stdout.py +0 -6
- langchain/callbacks/tracers/wandb.py +0 -27
- langchain/callbacks/trubrics_callback.py +0 -25
- langchain/callbacks/utils.py +0 -48
- langchain/callbacks/wandb_callback.py +0 -25
- langchain/callbacks/whylabs_callback.py +0 -25
- langchain/chains/__init__.py +0 -96
- langchain/chains/api/__init__.py +0 -1
- langchain/chains/api/base.py +0 -394
- langchain/chains/api/news_docs.py +0 -31
- langchain/chains/api/open_meteo_docs.py +0 -32
- langchain/chains/api/openapi/__init__.py +0 -0
- langchain/chains/api/openapi/chain.py +0 -23
- langchain/chains/api/openapi/prompts.py +0 -27
- langchain/chains/api/openapi/requests_chain.py +0 -29
- langchain/chains/api/openapi/response_chain.py +0 -29
- langchain/chains/api/podcast_docs.py +0 -27
- langchain/chains/api/prompt.py +0 -35
- langchain/chains/api/tmdb_docs.py +0 -36
- langchain/chains/base.py +0 -800
- langchain/chains/chat_vector_db/__init__.py +0 -0
- langchain/chains/chat_vector_db/prompts.py +0 -19
- langchain/chains/combine_documents/__init__.py +0 -15
- langchain/chains/combine_documents/base.py +0 -287
- langchain/chains/combine_documents/map_reduce.py +0 -300
- langchain/chains/combine_documents/map_rerank.py +0 -247
- langchain/chains/combine_documents/reduce.py +0 -381
- langchain/chains/combine_documents/refine.py +0 -236
- langchain/chains/combine_documents/stuff.py +0 -288
- langchain/chains/constitutional_ai/__init__.py +0 -2
- langchain/chains/constitutional_ai/base.py +0 -321
- langchain/chains/constitutional_ai/models.py +0 -11
- langchain/chains/constitutional_ai/principles.py +0 -278
- langchain/chains/constitutional_ai/prompts.py +0 -120
- langchain/chains/conversation/__init__.py +0 -1
- langchain/chains/conversation/base.py +0 -143
- langchain/chains/conversation/memory.py +0 -45
- langchain/chains/conversation/prompt.py +0 -28
- langchain/chains/conversational_retrieval/__init__.py +0 -1
- langchain/chains/conversational_retrieval/base.py +0 -568
- langchain/chains/conversational_retrieval/prompts.py +0 -19
- langchain/chains/elasticsearch_database/__init__.py +0 -3
- langchain/chains/elasticsearch_database/base.py +0 -211
- langchain/chains/elasticsearch_database/prompts.py +0 -35
- langchain/chains/ernie_functions/__init__.py +0 -44
- langchain/chains/ernie_functions/base.py +0 -49
- langchain/chains/example_generator.py +0 -22
- langchain/chains/flare/__init__.py +0 -1
- langchain/chains/flare/base.py +0 -282
- langchain/chains/flare/prompts.py +0 -44
- langchain/chains/graph_qa/__init__.py +0 -0
- langchain/chains/graph_qa/arangodb.py +0 -23
- langchain/chains/graph_qa/base.py +0 -23
- langchain/chains/graph_qa/cypher.py +0 -39
- langchain/chains/graph_qa/cypher_utils.py +0 -27
- langchain/chains/graph_qa/falkordb.py +0 -29
- langchain/chains/graph_qa/gremlin.py +0 -36
- langchain/chains/graph_qa/hugegraph.py +0 -23
- langchain/chains/graph_qa/kuzu.py +0 -29
- langchain/chains/graph_qa/nebulagraph.py +0 -23
- langchain/chains/graph_qa/neptune_cypher.py +0 -39
- langchain/chains/graph_qa/neptune_sparql.py +0 -36
- langchain/chains/graph_qa/ontotext_graphdb.py +0 -25
- langchain/chains/graph_qa/prompts.py +0 -96
- langchain/chains/graph_qa/sparql.py +0 -23
- langchain/chains/history_aware_retriever.py +0 -68
- langchain/chains/hyde/__init__.py +0 -4
- langchain/chains/hyde/base.py +0 -124
- langchain/chains/hyde/prompts.py +0 -46
- langchain/chains/llm.py +0 -442
- langchain/chains/llm_bash/__init__.py +0 -10
- langchain/chains/llm_checker/__init__.py +0 -4
- langchain/chains/llm_checker/base.py +0 -194
- langchain/chains/llm_checker/prompt.py +0 -30
- langchain/chains/llm_math/__init__.py +0 -4
- langchain/chains/llm_math/base.py +0 -311
- langchain/chains/llm_math/prompt.py +0 -43
- langchain/chains/llm_requests.py +0 -23
- langchain/chains/llm_summarization_checker/__init__.py +0 -7
- langchain/chains/llm_summarization_checker/base.py +0 -205
- langchain/chains/llm_summarization_checker/prompts/are_all_true_prompt.txt +0 -38
- langchain/chains/llm_summarization_checker/prompts/check_facts.txt +0 -10
- langchain/chains/llm_summarization_checker/prompts/create_facts.txt +0 -10
- langchain/chains/llm_summarization_checker/prompts/revise_summary.txt +0 -17
- langchain/chains/llm_symbolic_math/__init__.py +0 -10
- langchain/chains/loading.py +0 -732
- langchain/chains/mapreduce.py +0 -121
- langchain/chains/moderation.py +0 -132
- langchain/chains/natbot/__init__.py +0 -4
- langchain/chains/natbot/base.py +0 -163
- langchain/chains/natbot/crawler.py +0 -443
- langchain/chains/natbot/prompt.py +0 -143
- langchain/chains/openai_functions/__init__.py +0 -44
- langchain/chains/openai_functions/base.py +0 -235
- langchain/chains/openai_functions/citation_fuzzy_match.py +0 -160
- langchain/chains/openai_functions/extraction.py +0 -197
- langchain/chains/openai_functions/openapi.py +0 -405
- langchain/chains/openai_functions/qa_with_structure.py +0 -142
- langchain/chains/openai_functions/tagging.py +0 -172
- langchain/chains/openai_functions/utils.py +0 -40
- langchain/chains/openai_tools/__init__.py +0 -3
- langchain/chains/openai_tools/extraction.py +0 -79
- langchain/chains/prompt_selector.py +0 -65
- langchain/chains/qa_generation/__init__.py +0 -0
- langchain/chains/qa_generation/base.py +0 -124
- langchain/chains/qa_generation/prompt.py +0 -50
- langchain/chains/qa_with_sources/__init__.py +0 -5
- langchain/chains/qa_with_sources/base.py +0 -263
- langchain/chains/qa_with_sources/loading.py +0 -209
- langchain/chains/qa_with_sources/map_reduce_prompt.py +0 -54
- langchain/chains/qa_with_sources/refine_prompts.py +0 -37
- langchain/chains/qa_with_sources/retrieval.py +0 -75
- langchain/chains/qa_with_sources/stuff_prompt.py +0 -43
- langchain/chains/qa_with_sources/vector_db.py +0 -86
- langchain/chains/query_constructor/__init__.py +0 -3
- langchain/chains/query_constructor/base.py +0 -376
- langchain/chains/query_constructor/ir.py +0 -23
- langchain/chains/query_constructor/parser.py +0 -210
- langchain/chains/query_constructor/prompt.py +0 -226
- langchain/chains/query_constructor/schema.py +0 -14
- langchain/chains/question_answering/__init__.py +0 -6
- langchain/chains/question_answering/chain.py +0 -279
- langchain/chains/question_answering/map_reduce_prompt.py +0 -80
- langchain/chains/question_answering/map_rerank_prompt.py +0 -66
- langchain/chains/question_answering/refine_prompts.py +0 -72
- langchain/chains/question_answering/stuff_prompt.py +0 -33
- langchain/chains/retrieval.py +0 -67
- langchain/chains/retrieval_qa/__init__.py +0 -1
- langchain/chains/retrieval_qa/base.py +0 -370
- langchain/chains/retrieval_qa/prompt.py +0 -11
- langchain/chains/router/__init__.py +0 -12
- langchain/chains/router/base.py +0 -142
- langchain/chains/router/embedding_router.py +0 -93
- langchain/chains/router/llm_router.py +0 -196
- langchain/chains/router/multi_prompt.py +0 -181
- langchain/chains/router/multi_prompt_prompt.py +0 -32
- langchain/chains/router/multi_retrieval_prompt.py +0 -30
- langchain/chains/router/multi_retrieval_qa.py +0 -109
- langchain/chains/sequential.py +0 -220
- langchain/chains/sql_database/__init__.py +0 -1
- langchain/chains/sql_database/prompt.py +0 -282
- langchain/chains/sql_database/query.py +0 -166
- langchain/chains/structured_output/__init__.py +0 -6
- langchain/chains/structured_output/base.py +0 -582
- langchain/chains/summarize/__init__.py +0 -6
- langchain/chains/summarize/chain.py +0 -174
- langchain/chains/summarize/map_reduce_prompt.py +0 -10
- langchain/chains/summarize/refine_prompts.py +0 -23
- langchain/chains/summarize/stuff_prompt.py +0 -10
- langchain/chains/transform.py +0 -84
- langchain/chat_loaders/__init__.py +0 -19
- langchain/chat_loaders/base.py +0 -3
- langchain/chat_loaders/facebook_messenger.py +0 -32
- langchain/chat_loaders/gmail.py +0 -23
- langchain/chat_loaders/imessage.py +0 -23
- langchain/chat_loaders/langsmith.py +0 -30
- langchain/chat_loaders/slack.py +0 -23
- langchain/chat_loaders/telegram.py +0 -23
- langchain/chat_loaders/utils.py +0 -36
- langchain/chat_loaders/whatsapp.py +0 -23
- langchain/chat_models/anthropic.py +0 -30
- langchain/chat_models/anyscale.py +0 -23
- langchain/chat_models/azure_openai.py +0 -23
- langchain/chat_models/azureml_endpoint.py +0 -30
- langchain/chat_models/baichuan.py +0 -23
- langchain/chat_models/baidu_qianfan_endpoint.py +0 -27
- langchain/chat_models/bedrock.py +0 -27
- langchain/chat_models/cohere.py +0 -23
- langchain/chat_models/databricks.py +0 -23
- langchain/chat_models/ernie.py +0 -23
- langchain/chat_models/everlyai.py +0 -23
- langchain/chat_models/fake.py +0 -30
- langchain/chat_models/fireworks.py +0 -23
- langchain/chat_models/gigachat.py +0 -23
- langchain/chat_models/google_palm.py +0 -30
- langchain/chat_models/human.py +0 -23
- langchain/chat_models/hunyuan.py +0 -23
- langchain/chat_models/javelin_ai_gateway.py +0 -30
- langchain/chat_models/jinachat.py +0 -23
- langchain/chat_models/konko.py +0 -23
- langchain/chat_models/litellm.py +0 -30
- langchain/chat_models/meta.py +0 -25
- langchain/chat_models/minimax.py +0 -23
- langchain/chat_models/mlflow.py +0 -23
- langchain/chat_models/mlflow_ai_gateway.py +0 -30
- langchain/chat_models/ollama.py +0 -23
- langchain/chat_models/openai.py +0 -23
- langchain/chat_models/pai_eas_endpoint.py +0 -25
- langchain/chat_models/promptlayer_openai.py +0 -25
- langchain/chat_models/tongyi.py +0 -23
- langchain/chat_models/vertexai.py +0 -23
- langchain/chat_models/volcengine_maas.py +0 -30
- langchain/chat_models/yandex.py +0 -23
- langchain/docstore/__init__.py +0 -48
- langchain/docstore/arbitrary_fn.py +0 -23
- langchain/docstore/base.py +0 -27
- langchain/docstore/document.py +0 -3
- langchain/docstore/in_memory.py +0 -23
- langchain/docstore/wikipedia.py +0 -23
- langchain/document_loaders/__init__.py +0 -553
- langchain/document_loaders/acreom.py +0 -23
- langchain/document_loaders/airbyte.py +0 -48
- langchain/document_loaders/airbyte_json.py +0 -23
- langchain/document_loaders/airtable.py +0 -23
- langchain/document_loaders/apify_dataset.py +0 -23
- langchain/document_loaders/arcgis_loader.py +0 -23
- langchain/document_loaders/arxiv.py +0 -23
- langchain/document_loaders/assemblyai.py +0 -28
- langchain/document_loaders/async_html.py +0 -23
- langchain/document_loaders/azlyrics.py +0 -23
- langchain/document_loaders/azure_ai_data.py +0 -23
- langchain/document_loaders/azure_blob_storage_container.py +0 -25
- langchain/document_loaders/azure_blob_storage_file.py +0 -25
- langchain/document_loaders/baiducloud_bos_directory.py +0 -29
- langchain/document_loaders/baiducloud_bos_file.py +0 -27
- langchain/document_loaders/base.py +0 -3
- langchain/document_loaders/base_o365.py +0 -23
- langchain/document_loaders/bibtex.py +0 -23
- langchain/document_loaders/bigquery.py +0 -23
- langchain/document_loaders/bilibili.py +0 -23
- langchain/document_loaders/blackboard.py +0 -23
- langchain/document_loaders/blob_loaders/__init__.py +0 -36
- langchain/document_loaders/blob_loaders/file_system.py +0 -23
- langchain/document_loaders/blob_loaders/schema.py +0 -29
- langchain/document_loaders/blob_loaders/youtube_audio.py +0 -23
- langchain/document_loaders/blockchain.py +0 -28
- langchain/document_loaders/brave_search.py +0 -23
- langchain/document_loaders/browserless.py +0 -23
- langchain/document_loaders/chatgpt.py +0 -28
- langchain/document_loaders/chromium.py +0 -23
- langchain/document_loaders/college_confidential.py +0 -25
- langchain/document_loaders/concurrent.py +0 -23
- langchain/document_loaders/confluence.py +0 -28
- langchain/document_loaders/conllu.py +0 -23
- langchain/document_loaders/couchbase.py +0 -23
- langchain/document_loaders/csv_loader.py +0 -27
- langchain/document_loaders/cube_semantic.py +0 -23
- langchain/document_loaders/datadog_logs.py +0 -23
- langchain/document_loaders/dataframe.py +0 -28
- langchain/document_loaders/diffbot.py +0 -23
- langchain/document_loaders/directory.py +0 -23
- langchain/document_loaders/discord.py +0 -23
- langchain/document_loaders/docugami.py +0 -23
- langchain/document_loaders/docusaurus.py +0 -23
- langchain/document_loaders/dropbox.py +0 -23
- langchain/document_loaders/duckdb_loader.py +0 -23
- langchain/document_loaders/email.py +0 -30
- langchain/document_loaders/epub.py +0 -23
- langchain/document_loaders/etherscan.py +0 -23
- langchain/document_loaders/evernote.py +0 -23
- langchain/document_loaders/excel.py +0 -23
- langchain/document_loaders/facebook_chat.py +0 -28
- langchain/document_loaders/fauna.py +0 -23
- langchain/document_loaders/figma.py +0 -23
- langchain/document_loaders/gcs_directory.py +0 -23
- langchain/document_loaders/gcs_file.py +0 -23
- langchain/document_loaders/generic.py +0 -23
- langchain/document_loaders/geodataframe.py +0 -23
- langchain/document_loaders/git.py +0 -23
- langchain/document_loaders/gitbook.py +0 -23
- langchain/document_loaders/github.py +0 -28
- langchain/document_loaders/google_speech_to_text.py +0 -23
- langchain/document_loaders/googledrive.py +0 -23
- langchain/document_loaders/gutenberg.py +0 -23
- langchain/document_loaders/helpers.py +0 -30
- langchain/document_loaders/hn.py +0 -23
- langchain/document_loaders/html.py +0 -23
- langchain/document_loaders/html_bs.py +0 -23
- langchain/document_loaders/hugging_face_dataset.py +0 -23
- langchain/document_loaders/ifixit.py +0 -23
- langchain/document_loaders/image.py +0 -23
- langchain/document_loaders/image_captions.py +0 -23
- langchain/document_loaders/imsdb.py +0 -23
- langchain/document_loaders/iugu.py +0 -23
- langchain/document_loaders/joplin.py +0 -23
- langchain/document_loaders/json_loader.py +0 -23
- langchain/document_loaders/lakefs.py +0 -33
- langchain/document_loaders/larksuite.py +0 -23
- langchain/document_loaders/markdown.py +0 -25
- langchain/document_loaders/mastodon.py +0 -23
- langchain/document_loaders/max_compute.py +0 -23
- langchain/document_loaders/mediawikidump.py +0 -23
- langchain/document_loaders/merge.py +0 -23
- langchain/document_loaders/mhtml.py +0 -23
- langchain/document_loaders/modern_treasury.py +0 -23
- langchain/document_loaders/mongodb.py +0 -23
- langchain/document_loaders/news.py +0 -23
- langchain/document_loaders/notebook.py +0 -33
- langchain/document_loaders/notion.py +0 -23
- langchain/document_loaders/notiondb.py +0 -23
- langchain/document_loaders/nuclia.py +0 -23
- langchain/document_loaders/obs_directory.py +0 -23
- langchain/document_loaders/obs_file.py +0 -23
- langchain/document_loaders/obsidian.py +0 -23
- langchain/document_loaders/odt.py +0 -23
- langchain/document_loaders/onedrive.py +0 -23
- langchain/document_loaders/onedrive_file.py +0 -23
- langchain/document_loaders/onenote.py +0 -23
- langchain/document_loaders/open_city_data.py +0 -23
- langchain/document_loaders/org_mode.py +0 -25
- langchain/document_loaders/parsers/__init__.py +0 -58
- langchain/document_loaders/parsers/audio.py +0 -33
- langchain/document_loaders/parsers/docai.py +0 -30
- langchain/document_loaders/parsers/generic.py +0 -25
- langchain/document_loaders/parsers/grobid.py +0 -30
- langchain/document_loaders/parsers/html/__init__.py +0 -25
- langchain/document_loaders/parsers/html/bs4.py +0 -25
- langchain/document_loaders/parsers/language/__init__.py +0 -29
- langchain/document_loaders/parsers/language/cobol.py +0 -27
- langchain/document_loaders/parsers/language/code_segmenter.py +0 -29
- langchain/document_loaders/parsers/language/javascript.py +0 -29
- langchain/document_loaders/parsers/language/language_parser.py +0 -29
- langchain/document_loaders/parsers/language/python.py +0 -27
- langchain/document_loaders/parsers/msword.py +0 -25
- langchain/document_loaders/parsers/pdf.py +0 -50
- langchain/document_loaders/parsers/registry.py +0 -25
- langchain/document_loaders/parsers/txt.py +0 -23
- langchain/document_loaders/pdf.py +0 -65
- langchain/document_loaders/polars_dataframe.py +0 -23
- langchain/document_loaders/powerpoint.py +0 -25
- langchain/document_loaders/psychic.py +0 -23
- langchain/document_loaders/pubmed.py +0 -23
- langchain/document_loaders/pyspark_dataframe.py +0 -26
- langchain/document_loaders/python.py +0 -22
- langchain/document_loaders/quip.py +0 -23
- langchain/document_loaders/readthedocs.py +0 -23
- langchain/document_loaders/recursive_url_loader.py +0 -23
- langchain/document_loaders/reddit.py +0 -23
- langchain/document_loaders/roam.py +0 -23
- langchain/document_loaders/rocksetdb.py +0 -23
- langchain/document_loaders/rspace.py +0 -23
- langchain/document_loaders/rss.py +0 -23
- langchain/document_loaders/rst.py +0 -23
- langchain/document_loaders/rtf.py +0 -23
- langchain/document_loaders/s3_directory.py +0 -23
- langchain/document_loaders/s3_file.py +0 -23
- langchain/document_loaders/sharepoint.py +0 -23
- langchain/document_loaders/sitemap.py +0 -23
- langchain/document_loaders/slack_directory.py +0 -23
- langchain/document_loaders/snowflake_loader.py +0 -23
- langchain/document_loaders/spreedly.py +0 -23
- langchain/document_loaders/srt.py +0 -23
- langchain/document_loaders/stripe.py +0 -23
- langchain/document_loaders/telegram.py +0 -38
- langchain/document_loaders/tencent_cos_directory.py +0 -25
- langchain/document_loaders/tencent_cos_file.py +0 -23
- langchain/document_loaders/tensorflow_datasets.py +0 -23
- langchain/document_loaders/text.py +0 -23
- langchain/document_loaders/tomarkdown.py +0 -23
- langchain/document_loaders/toml.py +0 -23
- langchain/document_loaders/trello.py +0 -23
- langchain/document_loaders/tsv.py +0 -23
- langchain/document_loaders/twitter.py +0 -23
- langchain/document_loaders/unstructured.py +0 -54
- langchain/document_loaders/url.py +0 -23
- langchain/document_loaders/url_playwright.py +0 -33
- langchain/document_loaders/url_selenium.py +0 -23
- langchain/document_loaders/weather.py +0 -23
- langchain/document_loaders/web_base.py +0 -23
- langchain/document_loaders/whatsapp_chat.py +0 -28
- langchain/document_loaders/wikipedia.py +0 -23
- langchain/document_loaders/word_document.py +0 -30
- langchain/document_loaders/xml.py +0 -23
- langchain/document_loaders/xorbits.py +0 -23
- langchain/document_loaders/youtube.py +0 -33
- langchain/document_transformers/__init__.py +0 -77
- langchain/document_transformers/beautiful_soup_transformer.py +0 -25
- langchain/document_transformers/doctran_text_extract.py +0 -25
- langchain/document_transformers/doctran_text_qa.py +0 -25
- langchain/document_transformers/doctran_text_translate.py +0 -25
- langchain/document_transformers/embeddings_redundant_filter.py +0 -50
- langchain/document_transformers/google_translate.py +0 -25
- langchain/document_transformers/html2text.py +0 -25
- langchain/document_transformers/long_context_reorder.py +0 -23
- langchain/document_transformers/nuclia_text_transform.py +0 -25
- langchain/document_transformers/openai_functions.py +0 -32
- langchain/document_transformers/xsl/html_chunks_with_headers.xslt +0 -199
- langchain/embeddings/aleph_alpha.py +0 -30
- langchain/embeddings/awa.py +0 -23
- langchain/embeddings/azure_openai.py +0 -23
- langchain/embeddings/baidu_qianfan_endpoint.py +0 -23
- langchain/embeddings/bedrock.py +0 -23
- langchain/embeddings/bookend.py +0 -23
- langchain/embeddings/cache.py +0 -368
- langchain/embeddings/clarifai.py +0 -23
- langchain/embeddings/cloudflare_workersai.py +0 -29
- langchain/embeddings/cohere.py +0 -23
- langchain/embeddings/dashscope.py +0 -23
- langchain/embeddings/databricks.py +0 -23
- langchain/embeddings/deepinfra.py +0 -23
- langchain/embeddings/edenai.py +0 -23
- langchain/embeddings/elasticsearch.py +0 -23
- langchain/embeddings/embaas.py +0 -23
- langchain/embeddings/ernie.py +0 -23
- langchain/embeddings/fake.py +0 -30
- langchain/embeddings/fastembed.py +0 -23
- langchain/embeddings/google_palm.py +0 -23
- langchain/embeddings/gpt4all.py +0 -23
- langchain/embeddings/gradient_ai.py +0 -23
- langchain/embeddings/huggingface.py +0 -36
- langchain/embeddings/huggingface_hub.py +0 -23
- langchain/embeddings/infinity.py +0 -30
- langchain/embeddings/javelin_ai_gateway.py +0 -23
- langchain/embeddings/jina.py +0 -23
- langchain/embeddings/johnsnowlabs.py +0 -23
- langchain/embeddings/llamacpp.py +0 -23
- langchain/embeddings/llm_rails.py +0 -23
- langchain/embeddings/localai.py +0 -23
- langchain/embeddings/minimax.py +0 -23
- langchain/embeddings/mlflow.py +0 -23
- langchain/embeddings/mlflow_gateway.py +0 -23
- langchain/embeddings/modelscope_hub.py +0 -23
- langchain/embeddings/mosaicml.py +0 -23
- langchain/embeddings/nlpcloud.py +0 -23
- langchain/embeddings/octoai_embeddings.py +0 -23
- langchain/embeddings/ollama.py +0 -23
- langchain/embeddings/openai.py +0 -23
- langchain/embeddings/sagemaker_endpoint.py +0 -30
- langchain/embeddings/self_hosted.py +0 -23
- langchain/embeddings/self_hosted_hugging_face.py +0 -30
- langchain/embeddings/sentence_transformer.py +0 -21
- langchain/embeddings/spacy_embeddings.py +0 -23
- langchain/embeddings/tensorflow_hub.py +0 -23
- langchain/embeddings/vertexai.py +0 -23
- langchain/embeddings/voyageai.py +0 -23
- langchain/embeddings/xinference.py +0 -23
- langchain/env.py +0 -17
- langchain/evaluation/__init__.py +0 -128
- langchain/evaluation/agents/__init__.py +0 -5
- langchain/evaluation/agents/trajectory_eval_chain.py +0 -415
- langchain/evaluation/agents/trajectory_eval_prompt.py +0 -146
- langchain/evaluation/comparison/__init__.py +0 -36
- langchain/evaluation/comparison/eval_chain.py +0 -461
- langchain/evaluation/comparison/prompt.py +0 -59
- langchain/evaluation/criteria/__init__.py +0 -56
- langchain/evaluation/criteria/eval_chain.py +0 -603
- langchain/evaluation/criteria/prompt.py +0 -37
- langchain/evaluation/embedding_distance/__init__.py +0 -13
- langchain/evaluation/embedding_distance/base.py +0 -602
- langchain/evaluation/exact_match/__init__.py +0 -0
- langchain/evaluation/exact_match/base.py +0 -97
- langchain/evaluation/loading.py +0 -206
- langchain/evaluation/parsing/__init__.py +0 -0
- langchain/evaluation/parsing/base.py +0 -162
- langchain/evaluation/parsing/json_distance.py +0 -97
- langchain/evaluation/parsing/json_schema.py +0 -100
- langchain/evaluation/qa/__init__.py +0 -10
- langchain/evaluation/qa/eval_chain.py +0 -364
- langchain/evaluation/qa/eval_prompt.py +0 -78
- langchain/evaluation/qa/generate_chain.py +0 -34
- langchain/evaluation/qa/generate_prompt.py +0 -21
- langchain/evaluation/regex_match/__init__.py +0 -0
- langchain/evaluation/regex_match/base.py +0 -86
- langchain/evaluation/schema.py +0 -491
- langchain/evaluation/scoring/__init__.py +0 -31
- langchain/evaluation/scoring/eval_chain.py +0 -475
- langchain/evaluation/scoring/prompt.py +0 -53
- langchain/evaluation/string_distance/__init__.py +0 -13
- langchain/evaluation/string_distance/base.py +0 -466
- langchain/example_generator.py +0 -5
- langchain/formatting.py +0 -5
- langchain/globals.py +0 -180
- langchain/graphs/__init__.py +0 -57
- langchain/graphs/arangodb_graph.py +0 -28
- langchain/graphs/falkordb_graph.py +0 -23
- langchain/graphs/graph_document.py +0 -33
- langchain/graphs/graph_store.py +0 -23
- langchain/graphs/hugegraph.py +0 -23
- langchain/graphs/kuzu_graph.py +0 -23
- langchain/graphs/memgraph_graph.py +0 -23
- langchain/graphs/nebula_graph.py +0 -23
- langchain/graphs/neo4j_graph.py +0 -23
- langchain/graphs/neptune_graph.py +0 -23
- langchain/graphs/networkx_graph.py +0 -36
- langchain/graphs/rdf_graph.py +0 -23
- langchain/hub.py +0 -131
- langchain/indexes/__init__.py +0 -50
- langchain/indexes/_api.py +0 -5
- langchain/indexes/_sql_record_manager.py +0 -539
- langchain/indexes/graph.py +0 -28
- langchain/indexes/prompts/__init__.py +0 -13
- langchain/indexes/prompts/entity_extraction.py +0 -39
- langchain/indexes/prompts/entity_summarization.py +0 -24
- langchain/indexes/prompts/knowledge_triplet_extraction.py +0 -36
- langchain/indexes/vectorstore.py +0 -269
- langchain/input.py +0 -15
- langchain/llms/__init__.py +0 -734
- langchain/llms/ai21.py +0 -28
- langchain/llms/aleph_alpha.py +0 -23
- langchain/llms/amazon_api_gateway.py +0 -23
- langchain/llms/anthropic.py +0 -23
- langchain/llms/anyscale.py +0 -23
- langchain/llms/arcee.py +0 -23
- langchain/llms/aviary.py +0 -23
- langchain/llms/azureml_endpoint.py +0 -48
- langchain/llms/baidu_qianfan_endpoint.py +0 -23
- langchain/llms/bananadev.py +0 -23
- langchain/llms/base.py +0 -20
- langchain/llms/baseten.py +0 -23
- langchain/llms/beam.py +0 -23
- langchain/llms/bedrock.py +0 -28
- langchain/llms/bittensor.py +0 -23
- langchain/llms/cerebriumai.py +0 -23
- langchain/llms/chatglm.py +0 -23
- langchain/llms/clarifai.py +0 -23
- langchain/llms/cloudflare_workersai.py +0 -25
- langchain/llms/cohere.py +0 -23
- langchain/llms/ctransformers.py +0 -23
- langchain/llms/ctranslate2.py +0 -23
- langchain/llms/databricks.py +0 -23
- langchain/llms/deepinfra.py +0 -23
- langchain/llms/deepsparse.py +0 -23
- langchain/llms/edenai.py +0 -23
- langchain/llms/fake.py +0 -28
- langchain/llms/fireworks.py +0 -23
- langchain/llms/forefrontai.py +0 -23
- langchain/llms/gigachat.py +0 -23
- langchain/llms/google_palm.py +0 -23
- langchain/llms/gooseai.py +0 -23
- langchain/llms/gpt4all.py +0 -23
- langchain/llms/gradient_ai.py +0 -28
- langchain/llms/grammars/json.gbnf +0 -29
- langchain/llms/grammars/list.gbnf +0 -14
- langchain/llms/huggingface_endpoint.py +0 -23
- langchain/llms/huggingface_hub.py +0 -23
- langchain/llms/huggingface_pipeline.py +0 -23
- langchain/llms/huggingface_text_gen_inference.py +0 -23
- langchain/llms/human.py +0 -23
- langchain/llms/javelin_ai_gateway.py +0 -28
- langchain/llms/koboldai.py +0 -23
- langchain/llms/llamacpp.py +0 -23
- langchain/llms/loading.py +0 -27
- langchain/llms/manifest.py +0 -23
- langchain/llms/minimax.py +0 -23
- langchain/llms/mlflow.py +0 -23
- langchain/llms/mlflow_ai_gateway.py +0 -23
- langchain/llms/modal.py +0 -23
- langchain/llms/mosaicml.py +0 -23
- langchain/llms/nlpcloud.py +0 -23
- langchain/llms/octoai_endpoint.py +0 -23
- langchain/llms/ollama.py +0 -23
- langchain/llms/opaqueprompts.py +0 -23
- langchain/llms/openai.py +0 -32
- langchain/llms/openllm.py +0 -23
- langchain/llms/openlm.py +0 -23
- langchain/llms/pai_eas_endpoint.py +0 -23
- langchain/llms/petals.py +0 -23
- langchain/llms/pipelineai.py +0 -23
- langchain/llms/predibase.py +0 -23
- langchain/llms/predictionguard.py +0 -23
- langchain/llms/promptlayer_openai.py +0 -27
- langchain/llms/replicate.py +0 -23
- langchain/llms/rwkv.py +0 -23
- langchain/llms/sagemaker_endpoint.py +0 -28
- langchain/llms/self_hosted.py +0 -23
- langchain/llms/self_hosted_hugging_face.py +0 -23
- langchain/llms/stochasticai.py +0 -23
- langchain/llms/symblai_nebula.py +0 -23
- langchain/llms/textgen.py +0 -23
- langchain/llms/titan_takeoff.py +0 -23
- langchain/llms/titan_takeoff_pro.py +0 -23
- langchain/llms/together.py +0 -23
- langchain/llms/tongyi.py +0 -23
- langchain/llms/utils.py +0 -23
- langchain/llms/vertexai.py +0 -27
- langchain/llms/vllm.py +0 -27
- langchain/llms/volcengine_maas.py +0 -28
- langchain/llms/watsonxllm.py +0 -23
- langchain/llms/writer.py +0 -23
- langchain/llms/xinference.py +0 -23
- langchain/llms/yandex.py +0 -23
- langchain/load/__init__.py +0 -11
- langchain/load/dump.py +0 -3
- langchain/load/load.py +0 -3
- langchain/load/serializable.py +0 -19
- langchain/memory/__init__.py +0 -153
- langchain/memory/buffer.py +0 -173
- langchain/memory/buffer_window.py +0 -60
- langchain/memory/chat_memory.py +0 -104
- langchain/memory/chat_message_histories/__init__.py +0 -84
- langchain/memory/chat_message_histories/astradb.py +0 -25
- langchain/memory/chat_message_histories/cassandra.py +0 -25
- langchain/memory/chat_message_histories/cosmos_db.py +0 -25
- langchain/memory/chat_message_histories/dynamodb.py +0 -25
- langchain/memory/chat_message_histories/elasticsearch.py +0 -27
- langchain/memory/chat_message_histories/file.py +0 -25
- langchain/memory/chat_message_histories/firestore.py +0 -25
- langchain/memory/chat_message_histories/in_memory.py +0 -5
- langchain/memory/chat_message_histories/momento.py +0 -25
- langchain/memory/chat_message_histories/mongodb.py +0 -25
- langchain/memory/chat_message_histories/neo4j.py +0 -25
- langchain/memory/chat_message_histories/postgres.py +0 -25
- langchain/memory/chat_message_histories/redis.py +0 -25
- langchain/memory/chat_message_histories/rocksetdb.py +0 -25
- langchain/memory/chat_message_histories/singlestoredb.py +0 -27
- langchain/memory/chat_message_histories/sql.py +0 -33
- langchain/memory/chat_message_histories/streamlit.py +0 -25
- langchain/memory/chat_message_histories/upstash_redis.py +0 -27
- langchain/memory/chat_message_histories/xata.py +0 -25
- langchain/memory/chat_message_histories/zep.py +0 -25
- langchain/memory/combined.py +0 -85
- langchain/memory/entity.py +0 -564
- langchain/memory/kg.py +0 -23
- langchain/memory/motorhead_memory.py +0 -23
- langchain/memory/prompt.py +0 -164
- langchain/memory/readonly.py +0 -24
- langchain/memory/simple.py +0 -24
- langchain/memory/summary.py +0 -140
- langchain/memory/summary_buffer.py +0 -148
- langchain/memory/token_buffer.py +0 -72
- langchain/memory/utils.py +0 -21
- langchain/memory/vectorstore.py +0 -120
- langchain/memory/vectorstore_token_buffer_memory.py +0 -184
- langchain/memory/zep_memory.py +0 -23
- langchain/model_laboratory.py +0 -99
- langchain/output_parsers/__init__.py +0 -87
- langchain/output_parsers/boolean.py +0 -54
- langchain/output_parsers/combining.py +0 -57
- langchain/output_parsers/datetime.py +0 -58
- langchain/output_parsers/enum.py +0 -41
- langchain/output_parsers/ernie_functions.py +0 -45
- langchain/output_parsers/fix.py +0 -148
- langchain/output_parsers/format_instructions.py +0 -79
- langchain/output_parsers/json.py +0 -15
- langchain/output_parsers/list.py +0 -13
- langchain/output_parsers/loading.py +0 -22
- langchain/output_parsers/openai_functions.py +0 -13
- langchain/output_parsers/openai_tools.py +0 -7
- langchain/output_parsers/pandas_dataframe.py +0 -156
- langchain/output_parsers/prompts.py +0 -21
- langchain/output_parsers/pydantic.py +0 -3
- langchain/output_parsers/rail_parser.py +0 -25
- langchain/output_parsers/regex.py +0 -39
- langchain/output_parsers/regex_dict.py +0 -43
- langchain/output_parsers/retry.py +0 -296
- langchain/output_parsers/structured.py +0 -106
- langchain/output_parsers/xml.py +0 -3
- langchain/output_parsers/yaml.py +0 -73
- langchain/prompts/__init__.py +0 -102
- langchain/prompts/base.py +0 -21
- langchain/prompts/chat.py +0 -37
- langchain/prompts/example_selector/__init__.py +0 -42
- langchain/prompts/example_selector/base.py +0 -3
- langchain/prompts/example_selector/length_based.py +0 -5
- langchain/prompts/example_selector/ngram_overlap.py +0 -32
- langchain/prompts/example_selector/semantic_similarity.py +0 -11
- langchain/prompts/few_shot.py +0 -11
- langchain/prompts/few_shot_with_templates.py +0 -3
- langchain/prompts/loading.py +0 -23
- langchain/prompts/pipeline.py +0 -3
- langchain/prompts/prompt.py +0 -6
- langchain/pydantic_v1/__init__.py +0 -38
- langchain/pydantic_v1/dataclasses.py +0 -20
- langchain/pydantic_v1/main.py +0 -20
- langchain/python.py +0 -19
- langchain/requests.py +0 -35
- langchain/retrievers/__init__.py +0 -178
- langchain/retrievers/arcee.py +0 -23
- langchain/retrievers/arxiv.py +0 -23
- langchain/retrievers/azure_ai_search.py +0 -30
- langchain/retrievers/bedrock.py +0 -33
- langchain/retrievers/bm25.py +0 -28
- langchain/retrievers/chaindesk.py +0 -23
- langchain/retrievers/chatgpt_plugin_retriever.py +0 -23
- langchain/retrievers/cohere_rag_retriever.py +0 -23
- langchain/retrievers/contextual_compression.py +0 -81
- langchain/retrievers/databerry.py +0 -23
- langchain/retrievers/docarray.py +0 -28
- langchain/retrievers/document_compressors/__init__.py +0 -44
- langchain/retrievers/document_compressors/base.py +0 -82
- langchain/retrievers/document_compressors/chain_extract.py +0 -121
- langchain/retrievers/document_compressors/chain_extract_prompt.py +0 -10
- langchain/retrievers/document_compressors/chain_filter.py +0 -133
- langchain/retrievers/document_compressors/chain_filter_prompt.py +0 -8
- langchain/retrievers/document_compressors/cohere_rerank.py +0 -124
- langchain/retrievers/document_compressors/cross_encoder.py +0 -16
- langchain/retrievers/document_compressors/cross_encoder_rerank.py +0 -48
- langchain/retrievers/document_compressors/embeddings_filter.py +0 -137
- langchain/retrievers/document_compressors/flashrank_rerank.py +0 -27
- langchain/retrievers/document_compressors/listwise_rerank.py +0 -144
- langchain/retrievers/elastic_search_bm25.py +0 -23
- langchain/retrievers/embedchain.py +0 -23
- langchain/retrievers/ensemble.py +0 -336
- langchain/retrievers/google_cloud_documentai_warehouse.py +0 -25
- langchain/retrievers/google_vertex_ai_search.py +0 -33
- langchain/retrievers/kay.py +0 -23
- langchain/retrievers/kendra.py +0 -66
- langchain/retrievers/knn.py +0 -23
- langchain/retrievers/llama_index.py +0 -30
- langchain/retrievers/merger_retriever.py +0 -123
- langchain/retrievers/metal.py +0 -23
- langchain/retrievers/milvus.py +0 -28
- langchain/retrievers/multi_query.py +0 -231
- langchain/retrievers/multi_vector.py +0 -132
- langchain/retrievers/outline.py +0 -23
- langchain/retrievers/parent_document_retriever.py +0 -157
- langchain/retrievers/pinecone_hybrid_search.py +0 -23
- langchain/retrievers/pubmed.py +0 -23
- langchain/retrievers/pupmed.py +0 -23
- langchain/retrievers/re_phraser.py +0 -89
- langchain/retrievers/remote_retriever.py +0 -23
- langchain/retrievers/self_query/__init__.py +0 -0
- langchain/retrievers/self_query/astradb.py +0 -23
- langchain/retrievers/self_query/base.py +0 -397
- langchain/retrievers/self_query/chroma.py +0 -23
- langchain/retrievers/self_query/dashvector.py +0 -23
- langchain/retrievers/self_query/databricks_vector_search.py +0 -27
- langchain/retrievers/self_query/deeplake.py +0 -27
- langchain/retrievers/self_query/dingo.py +0 -23
- langchain/retrievers/self_query/elasticsearch.py +0 -25
- langchain/retrievers/self_query/milvus.py +0 -27
- langchain/retrievers/self_query/mongodb_atlas.py +0 -25
- langchain/retrievers/self_query/myscale.py +0 -23
- langchain/retrievers/self_query/opensearch.py +0 -23
- langchain/retrievers/self_query/pgvector.py +0 -23
- langchain/retrievers/self_query/pinecone.py +0 -23
- langchain/retrievers/self_query/qdrant.py +0 -23
- langchain/retrievers/self_query/redis.py +0 -23
- langchain/retrievers/self_query/supabase.py +0 -23
- langchain/retrievers/self_query/tencentvectordb.py +0 -27
- langchain/retrievers/self_query/timescalevector.py +0 -27
- langchain/retrievers/self_query/vectara.py +0 -27
- langchain/retrievers/self_query/weaviate.py +0 -23
- langchain/retrievers/svm.py +0 -23
- langchain/retrievers/tavily_search_api.py +0 -28
- langchain/retrievers/tfidf.py +0 -23
- langchain/retrievers/time_weighted_retriever.py +0 -193
- langchain/retrievers/vespa_retriever.py +0 -23
- langchain/retrievers/weaviate_hybrid_search.py +0 -23
- langchain/retrievers/web_research.py +0 -29
- langchain/retrievers/wikipedia.py +0 -23
- langchain/retrievers/you.py +0 -23
- langchain/retrievers/zep.py +0 -30
- langchain/retrievers/zilliz.py +0 -28
- langchain/runnables/__init__.py +0 -18
- langchain/runnables/hub.py +0 -32
- langchain/runnables/openai_functions.py +0 -51
- langchain/schema/__init__.py +0 -82
- langchain/schema/agent.py +0 -3
- langchain/schema/cache.py +0 -3
- langchain/schema/callbacks/__init__.py +0 -0
- langchain/schema/callbacks/base.py +0 -23
- langchain/schema/callbacks/manager.py +0 -55
- langchain/schema/callbacks/stdout.py +0 -3
- langchain/schema/callbacks/streaming_stdout.py +0 -3
- langchain/schema/callbacks/tracers/__init__.py +0 -0
- langchain/schema/callbacks/tracers/base.py +0 -4
- langchain/schema/callbacks/tracers/evaluation.py +0 -6
- langchain/schema/callbacks/tracers/langchain.py +0 -8
- langchain/schema/callbacks/tracers/langchain_v1.py +0 -3
- langchain/schema/callbacks/tracers/log_stream.py +0 -9
- langchain/schema/callbacks/tracers/root_listeners.py +0 -3
- langchain/schema/callbacks/tracers/run_collector.py +0 -3
- langchain/schema/callbacks/tracers/schemas.py +0 -27
- langchain/schema/callbacks/tracers/stdout.py +0 -13
- langchain/schema/chat.py +0 -3
- langchain/schema/chat_history.py +0 -3
- langchain/schema/document.py +0 -3
- langchain/schema/embeddings.py +0 -3
- langchain/schema/exceptions.py +0 -3
- langchain/schema/language_model.py +0 -15
- langchain/schema/memory.py +0 -3
- langchain/schema/messages.py +0 -51
- langchain/schema/output.py +0 -19
- langchain/schema/output_parser.py +0 -25
- langchain/schema/prompt.py +0 -3
- langchain/schema/prompt_template.py +0 -3
- langchain/schema/retriever.py +0 -3
- langchain/schema/runnable/__init__.py +0 -58
- langchain/schema/runnable/base.py +0 -38
- langchain/schema/runnable/branch.py +0 -3
- langchain/schema/runnable/config.py +0 -27
- langchain/schema/runnable/configurable.py +0 -15
- langchain/schema/runnable/fallbacks.py +0 -3
- langchain/schema/runnable/history.py +0 -11
- langchain/schema/runnable/passthrough.py +0 -8
- langchain/schema/runnable/retry.py +0 -3
- langchain/schema/runnable/router.py +0 -3
- langchain/schema/runnable/utils.py +0 -51
- langchain/schema/storage.py +0 -3
- langchain/schema/vectorstore.py +0 -3
- langchain/serpapi.py +0 -25
- langchain/smith/__init__.py +0 -102
- langchain/smith/evaluation/__init__.py +0 -68
- langchain/smith/evaluation/config.py +0 -382
- langchain/smith/evaluation/name_generation.py +0 -727
- langchain/smith/evaluation/progress.py +0 -137
- langchain/smith/evaluation/runner_utils.py +0 -1572
- langchain/smith/evaluation/string_run_evaluator.py +0 -440
- langchain/smith/evaluation/utils.py +0 -0
- langchain/sql_database.py +0 -25
- langchain/storage/__init__.py +0 -57
- langchain/storage/_lc_store.py +0 -91
- langchain/storage/encoder_backed.py +0 -127
- langchain/storage/exceptions.py +0 -3
- langchain/storage/file_system.py +0 -176
- langchain/storage/in_memory.py +0 -13
- langchain/storage/redis.py +0 -23
- langchain/storage/upstash_redis.py +0 -27
- langchain/text_splitter.py +0 -50
- langchain/tools/ainetwork/__init__.py +0 -0
- langchain/tools/ainetwork/app.py +0 -30
- langchain/tools/ainetwork/base.py +0 -27
- langchain/tools/ainetwork/owner.py +0 -28
- langchain/tools/ainetwork/rule.py +0 -28
- langchain/tools/ainetwork/transfer.py +0 -28
- langchain/tools/ainetwork/value.py +0 -28
- langchain/tools/amadeus/__init__.py +0 -30
- langchain/tools/amadeus/base.py +0 -23
- langchain/tools/amadeus/closest_airport.py +0 -30
- langchain/tools/amadeus/flight_search.py +0 -30
- langchain/tools/arxiv/__init__.py +0 -1
- langchain/tools/arxiv/tool.py +0 -28
- langchain/tools/azure_cognitive_services/__init__.py +0 -41
- langchain/tools/azure_cognitive_services/form_recognizer.py +0 -23
- langchain/tools/azure_cognitive_services/image_analysis.py +0 -23
- langchain/tools/azure_cognitive_services/speech2text.py +0 -23
- langchain/tools/azure_cognitive_services/text2speech.py +0 -23
- langchain/tools/azure_cognitive_services/text_analytics_health.py +0 -23
- langchain/tools/base.py +0 -19
- langchain/tools/bearly/__init__.py +0 -0
- langchain/tools/bearly/tool.py +0 -33
- langchain/tools/bing_search/__init__.py +0 -29
- langchain/tools/bing_search/tool.py +0 -27
- langchain/tools/brave_search/__init__.py +0 -0
- langchain/tools/brave_search/tool.py +0 -23
- langchain/tools/clickup/__init__.py +0 -0
- langchain/tools/clickup/tool.py +0 -23
- langchain/tools/convert_to_openai.py +0 -4
- langchain/tools/dataforseo_api_search/__init__.py +0 -34
- langchain/tools/dataforseo_api_search/tool.py +0 -32
- langchain/tools/ddg_search/__init__.py +0 -25
- langchain/tools/ddg_search/tool.py +0 -32
- langchain/tools/e2b_data_analysis/__init__.py +0 -0
- langchain/tools/e2b_data_analysis/tool.py +0 -33
- langchain/tools/edenai/__init__.py +0 -50
- langchain/tools/edenai/audio_speech_to_text.py +0 -23
- langchain/tools/edenai/audio_text_to_speech.py +0 -23
- langchain/tools/edenai/edenai_base_tool.py +0 -23
- langchain/tools/edenai/image_explicitcontent.py +0 -23
- langchain/tools/edenai/image_objectdetection.py +0 -23
- langchain/tools/edenai/ocr_identityparser.py +0 -23
- langchain/tools/edenai/ocr_invoiceparser.py +0 -23
- langchain/tools/edenai/text_moderation.py +0 -23
- langchain/tools/eleven_labs/__init__.py +0 -25
- langchain/tools/eleven_labs/models.py +0 -23
- langchain/tools/eleven_labs/text2speech.py +0 -23
- langchain/tools/file_management/__init__.py +0 -47
- langchain/tools/file_management/copy.py +0 -28
- langchain/tools/file_management/delete.py +0 -28
- langchain/tools/file_management/file_search.py +0 -28
- langchain/tools/file_management/list_dir.py +0 -28
- langchain/tools/file_management/move.py +0 -28
- langchain/tools/file_management/read.py +0 -28
- langchain/tools/file_management/write.py +0 -28
- langchain/tools/github/__init__.py +0 -1
- langchain/tools/github/tool.py +0 -23
- langchain/tools/gitlab/__init__.py +0 -1
- langchain/tools/gitlab/tool.py +0 -23
- langchain/tools/gmail/__init__.py +0 -41
- langchain/tools/gmail/base.py +0 -23
- langchain/tools/gmail/create_draft.py +0 -28
- langchain/tools/gmail/get_message.py +0 -28
- langchain/tools/gmail/get_thread.py +0 -28
- langchain/tools/gmail/search.py +0 -30
- langchain/tools/gmail/send_message.py +0 -28
- langchain/tools/golden_query/__init__.py +0 -25
- langchain/tools/golden_query/tool.py +0 -23
- langchain/tools/google_cloud/__init__.py +0 -25
- langchain/tools/google_cloud/texttospeech.py +0 -23
- langchain/tools/google_finance/__init__.py +0 -27
- langchain/tools/google_finance/tool.py +0 -25
- langchain/tools/google_jobs/__init__.py +0 -25
- langchain/tools/google_jobs/tool.py +0 -23
- langchain/tools/google_lens/__init__.py +0 -25
- langchain/tools/google_lens/tool.py +0 -23
- langchain/tools/google_places/__init__.py +0 -25
- langchain/tools/google_places/tool.py +0 -28
- langchain/tools/google_scholar/__init__.py +0 -27
- langchain/tools/google_scholar/tool.py +0 -25
- langchain/tools/google_search/__init__.py +0 -29
- langchain/tools/google_search/tool.py +0 -27
- langchain/tools/google_serper/__init__.py +0 -30
- langchain/tools/google_serper/tool.py +0 -27
- langchain/tools/google_trends/__init__.py +0 -27
- langchain/tools/google_trends/tool.py +0 -25
- langchain/tools/graphql/__init__.py +0 -1
- langchain/tools/graphql/tool.py +0 -23
- langchain/tools/human/__init__.py +0 -25
- langchain/tools/human/tool.py +0 -23
- langchain/tools/ifttt.py +0 -23
- langchain/tools/interaction/__init__.py +0 -1
- langchain/tools/interaction/tool.py +0 -23
- langchain/tools/jira/__init__.py +0 -1
- langchain/tools/jira/tool.py +0 -42
- langchain/tools/json/__init__.py +0 -1
- langchain/tools/json/tool.py +0 -52
- langchain/tools/memorize/__init__.py +0 -25
- langchain/tools/memorize/tool.py +0 -27
- langchain/tools/merriam_webster/__init__.py +0 -1
- langchain/tools/merriam_webster/tool.py +0 -23
- langchain/tools/metaphor_search/__init__.py +0 -25
- langchain/tools/metaphor_search/tool.py +0 -23
- langchain/tools/multion/__init__.py +0 -33
- langchain/tools/multion/close_session.py +0 -30
- langchain/tools/multion/create_session.py +0 -30
- langchain/tools/multion/update_session.py +0 -30
- langchain/tools/nasa/__init__.py +0 -0
- langchain/tools/nasa/tool.py +0 -23
- langchain/tools/nuclia/__init__.py +0 -23
- langchain/tools/nuclia/tool.py +0 -27
- langchain/tools/office365/__init__.py +0 -41
- langchain/tools/office365/base.py +0 -23
- langchain/tools/office365/create_draft_message.py +0 -32
- langchain/tools/office365/events_search.py +0 -28
- langchain/tools/office365/messages_search.py +0 -28
- langchain/tools/office365/send_event.py +0 -28
- langchain/tools/office365/send_message.py +0 -28
- langchain/tools/openapi/__init__.py +0 -0
- langchain/tools/openapi/utils/__init__.py +0 -0
- langchain/tools/openapi/utils/api_models.py +0 -54
- langchain/tools/openapi/utils/openapi_utils.py +0 -30
- langchain/tools/openweathermap/__init__.py +0 -25
- langchain/tools/openweathermap/tool.py +0 -23
- langchain/tools/playwright/__init__.py +0 -47
- langchain/tools/playwright/base.py +0 -23
- langchain/tools/playwright/click.py +0 -28
- langchain/tools/playwright/current_page.py +0 -23
- langchain/tools/playwright/extract_hyperlinks.py +0 -32
- langchain/tools/playwright/extract_text.py +0 -23
- langchain/tools/playwright/get_elements.py +0 -28
- langchain/tools/playwright/navigate.py +0 -28
- langchain/tools/playwright/navigate_back.py +0 -23
- langchain/tools/plugin.py +0 -32
- langchain/tools/powerbi/__init__.py +0 -1
- langchain/tools/powerbi/tool.py +0 -33
- langchain/tools/pubmed/__init__.py +0 -1
- langchain/tools/pubmed/tool.py +0 -23
- langchain/tools/python/__init__.py +0 -13
- langchain/tools/reddit_search/__init__.py +0 -0
- langchain/tools/reddit_search/tool.py +0 -27
- langchain/tools/render.py +0 -23
- langchain/tools/requests/__init__.py +0 -1
- langchain/tools/requests/tool.py +0 -42
- langchain/tools/retriever.py +0 -11
- langchain/tools/scenexplain/__init__.py +0 -1
- langchain/tools/scenexplain/tool.py +0 -28
- langchain/tools/searchapi/__init__.py +0 -30
- langchain/tools/searchapi/tool.py +0 -27
- langchain/tools/searx_search/__init__.py +0 -0
- langchain/tools/searx_search/tool.py +0 -27
- langchain/tools/shell/__init__.py +0 -25
- langchain/tools/shell/tool.py +0 -28
- langchain/tools/slack/__init__.py +0 -38
- langchain/tools/slack/base.py +0 -23
- langchain/tools/slack/get_channel.py +0 -23
- langchain/tools/slack/get_message.py +0 -28
- langchain/tools/slack/schedule_message.py +0 -28
- langchain/tools/slack/send_message.py +0 -28
- langchain/tools/sleep/__init__.py +0 -1
- langchain/tools/sleep/tool.py +0 -28
- langchain/tools/spark_sql/__init__.py +0 -1
- langchain/tools/spark_sql/tool.py +0 -39
- langchain/tools/sql_database/__init__.py +0 -1
- langchain/tools/sql_database/prompt.py +0 -24
- langchain/tools/sql_database/tool.py +0 -39
- langchain/tools/stackexchange/__init__.py +0 -1
- langchain/tools/stackexchange/tool.py +0 -23
- langchain/tools/steam/__init__.py +0 -1
- langchain/tools/steam/tool.py +0 -23
- langchain/tools/steamship_image_generation/__init__.py +0 -25
- langchain/tools/steamship_image_generation/tool.py +0 -28
- langchain/tools/tavily_search/__init__.py +0 -32
- langchain/tools/tavily_search/tool.py +0 -33
- langchain/tools/vectorstore/__init__.py +0 -1
- langchain/tools/vectorstore/tool.py +0 -30
- langchain/tools/wikipedia/__init__.py +0 -1
- langchain/tools/wikipedia/tool.py +0 -23
- langchain/tools/wolfram_alpha/__init__.py +0 -25
- langchain/tools/wolfram_alpha/tool.py +0 -23
- langchain/tools/yahoo_finance_news.py +0 -23
- langchain/tools/youtube/__init__.py +0 -0
- langchain/tools/youtube/search.py +0 -23
- langchain/tools/zapier/__init__.py +0 -29
- langchain/tools/zapier/tool.py +0 -49
- langchain/utilities/__init__.py +0 -168
- langchain/utilities/alpha_vantage.py +0 -23
- langchain/utilities/anthropic.py +0 -30
- langchain/utilities/apify.py +0 -23
- langchain/utilities/arcee.py +0 -45
- langchain/utilities/arxiv.py +0 -23
- langchain/utilities/asyncio.py +0 -11
- langchain/utilities/awslambda.py +0 -23
- langchain/utilities/bibtex.py +0 -23
- langchain/utilities/bing_search.py +0 -23
- langchain/utilities/brave_search.py +0 -23
- langchain/utilities/clickup.py +0 -45
- langchain/utilities/dalle_image_generator.py +0 -25
- langchain/utilities/dataforseo_api_search.py +0 -25
- langchain/utilities/duckduckgo_search.py +0 -23
- langchain/utilities/github.py +0 -23
- langchain/utilities/gitlab.py +0 -23
- langchain/utilities/golden_query.py +0 -23
- langchain/utilities/google_finance.py +0 -23
- langchain/utilities/google_jobs.py +0 -23
- langchain/utilities/google_lens.py +0 -23
- langchain/utilities/google_places_api.py +0 -23
- langchain/utilities/google_scholar.py +0 -23
- langchain/utilities/google_search.py +0 -23
- langchain/utilities/google_serper.py +0 -23
- langchain/utilities/google_trends.py +0 -23
- langchain/utilities/graphql.py +0 -23
- langchain/utilities/jira.py +0 -23
- langchain/utilities/loading.py +0 -4
- langchain/utilities/max_compute.py +0 -23
- langchain/utilities/merriam_webster.py +0 -23
- langchain/utilities/metaphor_search.py +0 -23
- langchain/utilities/nasa.py +0 -23
- langchain/utilities/opaqueprompts.py +0 -27
- langchain/utilities/openapi.py +0 -28
- langchain/utilities/openweathermap.py +0 -23
- langchain/utilities/outline.py +0 -23
- langchain/utilities/portkey.py +0 -23
- langchain/utilities/powerbi.py +0 -23
- langchain/utilities/pubmed.py +0 -23
- langchain/utilities/python.py +0 -19
- langchain/utilities/reddit_search.py +0 -25
- langchain/utilities/redis.py +0 -33
- langchain/utilities/requests.py +0 -27
- langchain/utilities/scenexplain.py +0 -23
- langchain/utilities/searchapi.py +0 -23
- langchain/utilities/searx_search.py +0 -28
- langchain/utilities/serpapi.py +0 -28
- langchain/utilities/spark_sql.py +0 -23
- langchain/utilities/sql_database.py +0 -28
- langchain/utilities/stackexchange.py +0 -23
- langchain/utilities/steam.py +0 -23
- langchain/utilities/tavily_search.py +0 -25
- langchain/utilities/tensorflow_datasets.py +0 -23
- langchain/utilities/twilio.py +0 -23
- langchain/utilities/vertexai.py +0 -36
- langchain/utilities/wikipedia.py +0 -23
- langchain/utilities/wolfram_alpha.py +0 -23
- langchain/utilities/zapier.py +0 -23
- langchain/utils/__init__.py +0 -77
- langchain/utils/aiter.py +0 -3
- langchain/utils/env.py +0 -3
- langchain/utils/ernie_functions.py +0 -36
- langchain/utils/formatting.py +0 -3
- langchain/utils/html.py +0 -19
- langchain/utils/input.py +0 -8
- langchain/utils/iter.py +0 -3
- langchain/utils/json_schema.py +0 -11
- langchain/utils/loading.py +0 -3
- langchain/utils/math.py +0 -32
- langchain/utils/openai.py +0 -23
- langchain/utils/openai_functions.py +0 -13
- langchain/utils/pydantic.py +0 -3
- langchain/utils/strings.py +0 -3
- langchain/utils/utils.py +0 -21
- langchain/vectorstores/__init__.py +0 -262
- langchain/vectorstores/alibabacloud_opensearch.py +0 -30
- langchain/vectorstores/analyticdb.py +0 -23
- langchain/vectorstores/annoy.py +0 -23
- langchain/vectorstores/astradb.py +0 -23
- langchain/vectorstores/atlas.py +0 -23
- langchain/vectorstores/awadb.py +0 -23
- langchain/vectorstores/azure_cosmos_db.py +0 -28
- langchain/vectorstores/azuresearch.py +0 -30
- langchain/vectorstores/bageldb.py +0 -23
- langchain/vectorstores/baiducloud_vector_search.py +0 -23
- langchain/vectorstores/base.py +0 -3
- langchain/vectorstores/cassandra.py +0 -23
- langchain/vectorstores/chroma.py +0 -23
- langchain/vectorstores/clarifai.py +0 -23
- langchain/vectorstores/clickhouse.py +0 -27
- langchain/vectorstores/dashvector.py +0 -23
- langchain/vectorstores/databricks_vector_search.py +0 -23
- langchain/vectorstores/deeplake.py +0 -23
- langchain/vectorstores/dingo.py +0 -23
- langchain/vectorstores/docarray/__init__.py +0 -30
- langchain/vectorstores/docarray/base.py +0 -23
- langchain/vectorstores/docarray/hnsw.py +0 -23
- langchain/vectorstores/docarray/in_memory.py +0 -23
- langchain/vectorstores/elastic_vector_search.py +0 -27
- langchain/vectorstores/elasticsearch.py +0 -39
- langchain/vectorstores/epsilla.py +0 -23
- langchain/vectorstores/faiss.py +0 -23
- langchain/vectorstores/hippo.py +0 -23
- langchain/vectorstores/hologres.py +0 -23
- langchain/vectorstores/lancedb.py +0 -23
- langchain/vectorstores/llm_rails.py +0 -28
- langchain/vectorstores/marqo.py +0 -23
- langchain/vectorstores/matching_engine.py +0 -23
- langchain/vectorstores/meilisearch.py +0 -23
- langchain/vectorstores/milvus.py +0 -23
- langchain/vectorstores/momento_vector_index.py +0 -23
- langchain/vectorstores/mongodb_atlas.py +0 -23
- langchain/vectorstores/myscale.py +0 -30
- langchain/vectorstores/neo4j_vector.py +0 -28
- langchain/vectorstores/nucliadb.py +0 -23
- langchain/vectorstores/opensearch_vector_search.py +0 -23
- langchain/vectorstores/pgembedding.py +0 -36
- langchain/vectorstores/pgvecto_rs.py +0 -23
- langchain/vectorstores/pgvector.py +0 -28
- langchain/vectorstores/pinecone.py +0 -23
- langchain/vectorstores/qdrant.py +0 -28
- langchain/vectorstores/redis/__init__.py +0 -42
- langchain/vectorstores/redis/base.py +0 -33
- langchain/vectorstores/redis/filters.py +0 -48
- langchain/vectorstores/redis/schema.py +0 -54
- langchain/vectorstores/rocksetdb.py +0 -23
- langchain/vectorstores/scann.py +0 -23
- langchain/vectorstores/semadb.py +0 -23
- langchain/vectorstores/singlestoredb.py +0 -23
- langchain/vectorstores/sklearn.py +0 -42
- langchain/vectorstores/sqlitevss.py +0 -23
- langchain/vectorstores/starrocks.py +0 -28
- langchain/vectorstores/supabase.py +0 -23
- langchain/vectorstores/tair.py +0 -23
- langchain/vectorstores/tencentvectordb.py +0 -33
- langchain/vectorstores/tigris.py +0 -23
- langchain/vectorstores/tiledb.py +0 -23
- langchain/vectorstores/timescalevector.py +0 -23
- langchain/vectorstores/typesense.py +0 -23
- langchain/vectorstores/usearch.py +0 -23
- langchain/vectorstores/utils.py +0 -33
- langchain/vectorstores/vald.py +0 -23
- langchain/vectorstores/vearch.py +0 -23
- langchain/vectorstores/vectara.py +0 -28
- langchain/vectorstores/vespa.py +0 -23
- langchain/vectorstores/weaviate.py +0 -23
- langchain/vectorstores/xata.py +0 -23
- langchain/vectorstores/yellowbrick.py +0 -23
- langchain/vectorstores/zep.py +0 -28
- langchain/vectorstores/zilliz.py +0 -23
- langchain-0.3.27.dist-info/METADATA +0 -144
- langchain-0.3.27.dist-info/RECORD +0 -1342
- langchain-0.3.27.dist-info/entry_points.txt +0 -4
- {langchain-0.3.27.dist-info → langchain-1.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,539 +0,0 @@
|
|
|
1
|
-
"""Implementation of a record management layer in SQLAlchemy.
|
|
2
|
-
|
|
3
|
-
The management layer uses SQLAlchemy to track upserted records.
|
|
4
|
-
|
|
5
|
-
Currently, this layer only works with SQLite; hopwever, should be adaptable
|
|
6
|
-
to other SQL implementations with minimal effort.
|
|
7
|
-
|
|
8
|
-
Currently, includes an implementation that uses SQLAlchemy which should
|
|
9
|
-
allow it to work with a variety of SQL as a backend.
|
|
10
|
-
|
|
11
|
-
* Each key is associated with an updated_at field.
|
|
12
|
-
* This filed is updated whenever the key is updated.
|
|
13
|
-
* Keys can be listed based on the updated at field.
|
|
14
|
-
* Keys can be deleted.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
import contextlib
|
|
18
|
-
import decimal
|
|
19
|
-
import uuid
|
|
20
|
-
from collections.abc import AsyncGenerator, Generator, Sequence
|
|
21
|
-
from typing import Any, Optional, Union
|
|
22
|
-
|
|
23
|
-
from langchain_core.indexing import RecordManager
|
|
24
|
-
from sqlalchemy import (
|
|
25
|
-
Column,
|
|
26
|
-
Float,
|
|
27
|
-
Index,
|
|
28
|
-
String,
|
|
29
|
-
UniqueConstraint,
|
|
30
|
-
and_,
|
|
31
|
-
create_engine,
|
|
32
|
-
delete,
|
|
33
|
-
select,
|
|
34
|
-
text,
|
|
35
|
-
)
|
|
36
|
-
from sqlalchemy.engine import URL, Engine
|
|
37
|
-
from sqlalchemy.ext.asyncio import (
|
|
38
|
-
AsyncEngine,
|
|
39
|
-
AsyncSession,
|
|
40
|
-
create_async_engine,
|
|
41
|
-
)
|
|
42
|
-
from sqlalchemy.orm import Query, Session, declarative_base, sessionmaker
|
|
43
|
-
|
|
44
|
-
try:
|
|
45
|
-
from sqlalchemy.ext.asyncio import async_sessionmaker
|
|
46
|
-
except ImportError:
|
|
47
|
-
# dummy for sqlalchemy < 2
|
|
48
|
-
async_sessionmaker = type("async_sessionmaker", (type,), {}) # type: ignore[assignment,misc]
|
|
49
|
-
|
|
50
|
-
Base = declarative_base()
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class UpsertionRecord(Base): # type: ignore[valid-type,misc]
|
|
54
|
-
"""Table used to keep track of when a key was last updated."""
|
|
55
|
-
|
|
56
|
-
# ATTENTION:
|
|
57
|
-
# Prior to modifying this table, please determine whether
|
|
58
|
-
# we should create migrations for this table to make sure
|
|
59
|
-
# users do not experience data loss.
|
|
60
|
-
__tablename__ = "upsertion_record"
|
|
61
|
-
|
|
62
|
-
uuid = Column(
|
|
63
|
-
String,
|
|
64
|
-
index=True,
|
|
65
|
-
default=lambda: str(uuid.uuid4()),
|
|
66
|
-
primary_key=True,
|
|
67
|
-
nullable=False,
|
|
68
|
-
)
|
|
69
|
-
key = Column(String, index=True)
|
|
70
|
-
# Using a non-normalized representation to handle `namespace` attribute.
|
|
71
|
-
# If the need arises, this attribute can be pulled into a separate Collection
|
|
72
|
-
# table at some time later.
|
|
73
|
-
namespace = Column(String, index=True, nullable=False)
|
|
74
|
-
group_id = Column(String, index=True, nullable=True)
|
|
75
|
-
|
|
76
|
-
# The timestamp associated with the last record upsertion.
|
|
77
|
-
updated_at = Column(Float, index=True)
|
|
78
|
-
|
|
79
|
-
__table_args__ = (
|
|
80
|
-
UniqueConstraint("key", "namespace", name="uix_key_namespace"),
|
|
81
|
-
Index("ix_key_namespace", "key", "namespace"),
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
class SQLRecordManager(RecordManager):
|
|
86
|
-
"""A SQL Alchemy based implementation of the record manager."""
|
|
87
|
-
|
|
88
|
-
def __init__(
|
|
89
|
-
self,
|
|
90
|
-
namespace: str,
|
|
91
|
-
*,
|
|
92
|
-
engine: Optional[Union[Engine, AsyncEngine]] = None,
|
|
93
|
-
db_url: Union[None, str, URL] = None,
|
|
94
|
-
engine_kwargs: Optional[dict[str, Any]] = None,
|
|
95
|
-
async_mode: bool = False,
|
|
96
|
-
) -> None:
|
|
97
|
-
"""Initialize the SQLRecordManager.
|
|
98
|
-
|
|
99
|
-
This class serves as a manager persistence layer that uses an SQL
|
|
100
|
-
backend to track upserted records. You should specify either a db_url
|
|
101
|
-
to create an engine or provide an existing engine.
|
|
102
|
-
|
|
103
|
-
Args:
|
|
104
|
-
namespace: The namespace associated with this record manager.
|
|
105
|
-
engine: An already existing SQL Alchemy engine.
|
|
106
|
-
Default is None.
|
|
107
|
-
db_url: A database connection string used to create
|
|
108
|
-
an SQL Alchemy engine. Default is None.
|
|
109
|
-
engine_kwargs: Additional keyword arguments
|
|
110
|
-
to be passed when creating the engine. Default is an empty dictionary.
|
|
111
|
-
async_mode: Whether to create an async engine.
|
|
112
|
-
Driver should support async operations.
|
|
113
|
-
It only applies if db_url is provided.
|
|
114
|
-
Default is False.
|
|
115
|
-
|
|
116
|
-
Raises:
|
|
117
|
-
ValueError: If both db_url and engine are provided or neither.
|
|
118
|
-
AssertionError: If something unexpected happens during engine configuration.
|
|
119
|
-
"""
|
|
120
|
-
super().__init__(namespace=namespace)
|
|
121
|
-
if db_url is None and engine is None:
|
|
122
|
-
msg = "Must specify either db_url or engine"
|
|
123
|
-
raise ValueError(msg)
|
|
124
|
-
|
|
125
|
-
if db_url is not None and engine is not None:
|
|
126
|
-
msg = "Must specify either db_url or engine, not both"
|
|
127
|
-
raise ValueError(msg)
|
|
128
|
-
|
|
129
|
-
_engine: Union[Engine, AsyncEngine]
|
|
130
|
-
if db_url:
|
|
131
|
-
if async_mode:
|
|
132
|
-
_engine = create_async_engine(db_url, **(engine_kwargs or {}))
|
|
133
|
-
else:
|
|
134
|
-
_engine = create_engine(db_url, **(engine_kwargs or {}))
|
|
135
|
-
elif engine:
|
|
136
|
-
_engine = engine
|
|
137
|
-
|
|
138
|
-
else:
|
|
139
|
-
msg = "Something went wrong with configuration of engine."
|
|
140
|
-
raise AssertionError(msg)
|
|
141
|
-
|
|
142
|
-
_session_factory: Union[sessionmaker[Session], async_sessionmaker[AsyncSession]]
|
|
143
|
-
if isinstance(_engine, AsyncEngine):
|
|
144
|
-
_session_factory = async_sessionmaker(bind=_engine)
|
|
145
|
-
else:
|
|
146
|
-
_session_factory = sessionmaker(bind=_engine)
|
|
147
|
-
|
|
148
|
-
self.engine = _engine
|
|
149
|
-
self.dialect = _engine.dialect.name
|
|
150
|
-
self.session_factory = _session_factory
|
|
151
|
-
|
|
152
|
-
def create_schema(self) -> None:
|
|
153
|
-
"""Create the database schema."""
|
|
154
|
-
if isinstance(self.engine, AsyncEngine):
|
|
155
|
-
msg = "This method is not supported for async engines."
|
|
156
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
157
|
-
|
|
158
|
-
Base.metadata.create_all(self.engine)
|
|
159
|
-
|
|
160
|
-
async def acreate_schema(self) -> None:
|
|
161
|
-
"""Create the database schema."""
|
|
162
|
-
|
|
163
|
-
if not isinstance(self.engine, AsyncEngine):
|
|
164
|
-
msg = "This method is not supported for sync engines."
|
|
165
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
166
|
-
|
|
167
|
-
async with self.engine.begin() as session:
|
|
168
|
-
await session.run_sync(Base.metadata.create_all)
|
|
169
|
-
|
|
170
|
-
@contextlib.contextmanager
|
|
171
|
-
def _make_session(self) -> Generator[Session, None, None]:
|
|
172
|
-
"""Create a session and close it after use."""
|
|
173
|
-
|
|
174
|
-
if isinstance(self.session_factory, async_sessionmaker):
|
|
175
|
-
msg = "This method is not supported for async engines."
|
|
176
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
177
|
-
|
|
178
|
-
session = self.session_factory()
|
|
179
|
-
try:
|
|
180
|
-
yield session
|
|
181
|
-
finally:
|
|
182
|
-
session.close()
|
|
183
|
-
|
|
184
|
-
@contextlib.asynccontextmanager
|
|
185
|
-
async def _amake_session(self) -> AsyncGenerator[AsyncSession, None]:
|
|
186
|
-
"""Create a session and close it after use."""
|
|
187
|
-
|
|
188
|
-
if not isinstance(self.session_factory, async_sessionmaker):
|
|
189
|
-
msg = "This method is not supported for sync engines."
|
|
190
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
191
|
-
|
|
192
|
-
async with self.session_factory() as session:
|
|
193
|
-
yield session
|
|
194
|
-
|
|
195
|
-
def get_time(self) -> float:
|
|
196
|
-
"""Get the current server time as a timestamp.
|
|
197
|
-
|
|
198
|
-
Please note it's critical that time is obtained from the server since
|
|
199
|
-
we want a monotonic clock.
|
|
200
|
-
"""
|
|
201
|
-
with self._make_session() as session:
|
|
202
|
-
# * SQLite specific implementation, can be changed based on dialect.
|
|
203
|
-
# * For SQLite, unlike unixepoch it will work with older versions of SQLite.
|
|
204
|
-
# ----
|
|
205
|
-
# julianday('now'): Julian day number for the current date and time.
|
|
206
|
-
# The Julian day is a continuous count of days, starting from a
|
|
207
|
-
# reference date (Julian day number 0).
|
|
208
|
-
# 2440587.5 - constant represents the Julian day number for January 1, 1970
|
|
209
|
-
# 86400.0 - constant represents the number of seconds
|
|
210
|
-
# in a day (24 hours * 60 minutes * 60 seconds)
|
|
211
|
-
if self.dialect == "sqlite":
|
|
212
|
-
query = text("SELECT (julianday('now') - 2440587.5) * 86400.0;")
|
|
213
|
-
elif self.dialect == "postgresql":
|
|
214
|
-
query = text("SELECT EXTRACT (EPOCH FROM CURRENT_TIMESTAMP);")
|
|
215
|
-
else:
|
|
216
|
-
msg = f"Not implemented for dialect {self.dialect}"
|
|
217
|
-
raise NotImplementedError(msg)
|
|
218
|
-
|
|
219
|
-
dt = session.execute(query).scalar()
|
|
220
|
-
if isinstance(dt, decimal.Decimal):
|
|
221
|
-
dt = float(dt)
|
|
222
|
-
if not isinstance(dt, float):
|
|
223
|
-
msg = f"Unexpected type for datetime: {type(dt)}"
|
|
224
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
225
|
-
return dt
|
|
226
|
-
|
|
227
|
-
async def aget_time(self) -> float:
|
|
228
|
-
"""Get the current server time as a timestamp.
|
|
229
|
-
|
|
230
|
-
Please note it's critical that time is obtained from the server since
|
|
231
|
-
we want a monotonic clock.
|
|
232
|
-
"""
|
|
233
|
-
async with self._amake_session() as session:
|
|
234
|
-
# * SQLite specific implementation, can be changed based on dialect.
|
|
235
|
-
# * For SQLite, unlike unixepoch it will work with older versions of SQLite.
|
|
236
|
-
# ----
|
|
237
|
-
# julianday('now'): Julian day number for the current date and time.
|
|
238
|
-
# The Julian day is a continuous count of days, starting from a
|
|
239
|
-
# reference date (Julian day number 0).
|
|
240
|
-
# 2440587.5 - constant represents the Julian day number for January 1, 1970
|
|
241
|
-
# 86400.0 - constant represents the number of seconds
|
|
242
|
-
# in a day (24 hours * 60 minutes * 60 seconds)
|
|
243
|
-
if self.dialect == "sqlite":
|
|
244
|
-
query = text("SELECT (julianday('now') - 2440587.5) * 86400.0;")
|
|
245
|
-
elif self.dialect == "postgresql":
|
|
246
|
-
query = text("SELECT EXTRACT (EPOCH FROM CURRENT_TIMESTAMP);")
|
|
247
|
-
else:
|
|
248
|
-
msg = f"Not implemented for dialect {self.dialect}"
|
|
249
|
-
raise NotImplementedError(msg)
|
|
250
|
-
|
|
251
|
-
dt = (await session.execute(query)).scalar_one_or_none()
|
|
252
|
-
|
|
253
|
-
if isinstance(dt, decimal.Decimal):
|
|
254
|
-
dt = float(dt)
|
|
255
|
-
if not isinstance(dt, float):
|
|
256
|
-
msg = f"Unexpected type for datetime: {type(dt)}"
|
|
257
|
-
raise AssertionError(msg) # noqa: TRY004
|
|
258
|
-
return dt
|
|
259
|
-
|
|
260
|
-
def update(
|
|
261
|
-
self,
|
|
262
|
-
keys: Sequence[str],
|
|
263
|
-
*,
|
|
264
|
-
group_ids: Optional[Sequence[Optional[str]]] = None,
|
|
265
|
-
time_at_least: Optional[float] = None,
|
|
266
|
-
) -> None:
|
|
267
|
-
"""Upsert records into the SQLite database."""
|
|
268
|
-
if group_ids is None:
|
|
269
|
-
group_ids = [None] * len(keys)
|
|
270
|
-
|
|
271
|
-
if len(keys) != len(group_ids):
|
|
272
|
-
msg = (
|
|
273
|
-
f"Number of keys ({len(keys)}) does not match number of "
|
|
274
|
-
f"group_ids ({len(group_ids)})"
|
|
275
|
-
)
|
|
276
|
-
raise ValueError(msg)
|
|
277
|
-
|
|
278
|
-
# Get the current time from the server.
|
|
279
|
-
# This makes an extra round trip to the server, should not be a big deal
|
|
280
|
-
# if the batch size is large enough.
|
|
281
|
-
# Getting the time here helps us compare it against the time_at_least
|
|
282
|
-
# and raise an error if there is a time sync issue.
|
|
283
|
-
# Here, we're just being extra careful to minimize the chance of
|
|
284
|
-
# data loss due to incorrectly deleting records.
|
|
285
|
-
update_time = self.get_time()
|
|
286
|
-
|
|
287
|
-
if time_at_least and update_time < time_at_least:
|
|
288
|
-
# Safeguard against time sync issues
|
|
289
|
-
msg = f"Time sync issue: {update_time} < {time_at_least}"
|
|
290
|
-
raise AssertionError(msg)
|
|
291
|
-
|
|
292
|
-
records_to_upsert = [
|
|
293
|
-
{
|
|
294
|
-
"key": key,
|
|
295
|
-
"namespace": self.namespace,
|
|
296
|
-
"updated_at": update_time,
|
|
297
|
-
"group_id": group_id,
|
|
298
|
-
}
|
|
299
|
-
for key, group_id in zip(keys, group_ids)
|
|
300
|
-
]
|
|
301
|
-
|
|
302
|
-
with self._make_session() as session:
|
|
303
|
-
if self.dialect == "sqlite":
|
|
304
|
-
from sqlalchemy.dialects.sqlite import Insert as SqliteInsertType
|
|
305
|
-
from sqlalchemy.dialects.sqlite import insert as sqlite_insert
|
|
306
|
-
|
|
307
|
-
# Note: uses SQLite insert to make on_conflict_do_update work.
|
|
308
|
-
# This code needs to be generalized a bit to work with more dialects.
|
|
309
|
-
sqlite_insert_stmt: SqliteInsertType = sqlite_insert(
|
|
310
|
-
UpsertionRecord,
|
|
311
|
-
).values(records_to_upsert)
|
|
312
|
-
stmt = sqlite_insert_stmt.on_conflict_do_update(
|
|
313
|
-
[UpsertionRecord.key, UpsertionRecord.namespace],
|
|
314
|
-
set_={
|
|
315
|
-
"updated_at": sqlite_insert_stmt.excluded.updated_at,
|
|
316
|
-
"group_id": sqlite_insert_stmt.excluded.group_id,
|
|
317
|
-
},
|
|
318
|
-
)
|
|
319
|
-
elif self.dialect == "postgresql":
|
|
320
|
-
from sqlalchemy.dialects.postgresql import Insert as PgInsertType
|
|
321
|
-
from sqlalchemy.dialects.postgresql import insert as pg_insert
|
|
322
|
-
|
|
323
|
-
# Note: uses postgresql insert to make on_conflict_do_update work.
|
|
324
|
-
# This code needs to be generalized a bit to work with more dialects.
|
|
325
|
-
pg_insert_stmt: PgInsertType = pg_insert(UpsertionRecord).values(
|
|
326
|
-
records_to_upsert,
|
|
327
|
-
)
|
|
328
|
-
stmt = pg_insert_stmt.on_conflict_do_update( # type: ignore[assignment]
|
|
329
|
-
"uix_key_namespace", # Name of constraint
|
|
330
|
-
set_={
|
|
331
|
-
"updated_at": pg_insert_stmt.excluded.updated_at,
|
|
332
|
-
"group_id": pg_insert_stmt.excluded.group_id,
|
|
333
|
-
},
|
|
334
|
-
)
|
|
335
|
-
else:
|
|
336
|
-
msg = f"Unsupported dialect {self.dialect}"
|
|
337
|
-
raise NotImplementedError(msg)
|
|
338
|
-
|
|
339
|
-
session.execute(stmt)
|
|
340
|
-
session.commit()
|
|
341
|
-
|
|
342
|
-
async def aupdate(
|
|
343
|
-
self,
|
|
344
|
-
keys: Sequence[str],
|
|
345
|
-
*,
|
|
346
|
-
group_ids: Optional[Sequence[Optional[str]]] = None,
|
|
347
|
-
time_at_least: Optional[float] = None,
|
|
348
|
-
) -> None:
|
|
349
|
-
"""Upsert records into the SQLite database."""
|
|
350
|
-
if group_ids is None:
|
|
351
|
-
group_ids = [None] * len(keys)
|
|
352
|
-
|
|
353
|
-
if len(keys) != len(group_ids):
|
|
354
|
-
msg = (
|
|
355
|
-
f"Number of keys ({len(keys)}) does not match number of "
|
|
356
|
-
f"group_ids ({len(group_ids)})"
|
|
357
|
-
)
|
|
358
|
-
raise ValueError(msg)
|
|
359
|
-
|
|
360
|
-
# Get the current time from the server.
|
|
361
|
-
# This makes an extra round trip to the server, should not be a big deal
|
|
362
|
-
# if the batch size is large enough.
|
|
363
|
-
# Getting the time here helps us compare it against the time_at_least
|
|
364
|
-
# and raise an error if there is a time sync issue.
|
|
365
|
-
# Here, we're just being extra careful to minimize the chance of
|
|
366
|
-
# data loss due to incorrectly deleting records.
|
|
367
|
-
update_time = await self.aget_time()
|
|
368
|
-
|
|
369
|
-
if time_at_least and update_time < time_at_least:
|
|
370
|
-
# Safeguard against time sync issues
|
|
371
|
-
msg = f"Time sync issue: {update_time} < {time_at_least}"
|
|
372
|
-
raise AssertionError(msg)
|
|
373
|
-
|
|
374
|
-
records_to_upsert = [
|
|
375
|
-
{
|
|
376
|
-
"key": key,
|
|
377
|
-
"namespace": self.namespace,
|
|
378
|
-
"updated_at": update_time,
|
|
379
|
-
"group_id": group_id,
|
|
380
|
-
}
|
|
381
|
-
for key, group_id in zip(keys, group_ids)
|
|
382
|
-
]
|
|
383
|
-
|
|
384
|
-
async with self._amake_session() as session:
|
|
385
|
-
if self.dialect == "sqlite":
|
|
386
|
-
from sqlalchemy.dialects.sqlite import Insert as SqliteInsertType
|
|
387
|
-
from sqlalchemy.dialects.sqlite import insert as sqlite_insert
|
|
388
|
-
|
|
389
|
-
# Note: uses SQLite insert to make on_conflict_do_update work.
|
|
390
|
-
# This code needs to be generalized a bit to work with more dialects.
|
|
391
|
-
sqlite_insert_stmt: SqliteInsertType = sqlite_insert(
|
|
392
|
-
UpsertionRecord,
|
|
393
|
-
).values(records_to_upsert)
|
|
394
|
-
stmt = sqlite_insert_stmt.on_conflict_do_update(
|
|
395
|
-
[UpsertionRecord.key, UpsertionRecord.namespace],
|
|
396
|
-
set_={
|
|
397
|
-
"updated_at": sqlite_insert_stmt.excluded.updated_at,
|
|
398
|
-
"group_id": sqlite_insert_stmt.excluded.group_id,
|
|
399
|
-
},
|
|
400
|
-
)
|
|
401
|
-
elif self.dialect == "postgresql":
|
|
402
|
-
from sqlalchemy.dialects.postgresql import Insert as PgInsertType
|
|
403
|
-
from sqlalchemy.dialects.postgresql import insert as pg_insert
|
|
404
|
-
|
|
405
|
-
# Note: uses SQLite insert to make on_conflict_do_update work.
|
|
406
|
-
# This code needs to be generalized a bit to work with more dialects.
|
|
407
|
-
pg_insert_stmt: PgInsertType = pg_insert(UpsertionRecord).values(
|
|
408
|
-
records_to_upsert,
|
|
409
|
-
)
|
|
410
|
-
stmt = pg_insert_stmt.on_conflict_do_update( # type: ignore[assignment]
|
|
411
|
-
"uix_key_namespace", # Name of constraint
|
|
412
|
-
set_={
|
|
413
|
-
"updated_at": pg_insert_stmt.excluded.updated_at,
|
|
414
|
-
"group_id": pg_insert_stmt.excluded.group_id,
|
|
415
|
-
},
|
|
416
|
-
)
|
|
417
|
-
else:
|
|
418
|
-
msg = f"Unsupported dialect {self.dialect}"
|
|
419
|
-
raise NotImplementedError(msg)
|
|
420
|
-
|
|
421
|
-
await session.execute(stmt)
|
|
422
|
-
await session.commit()
|
|
423
|
-
|
|
424
|
-
def exists(self, keys: Sequence[str]) -> list[bool]:
|
|
425
|
-
"""Check if the given keys exist in the SQLite database."""
|
|
426
|
-
session: Session
|
|
427
|
-
with self._make_session() as session:
|
|
428
|
-
filtered_query: Query = session.query(UpsertionRecord.key).filter(
|
|
429
|
-
and_(
|
|
430
|
-
UpsertionRecord.key.in_(keys),
|
|
431
|
-
UpsertionRecord.namespace == self.namespace,
|
|
432
|
-
),
|
|
433
|
-
)
|
|
434
|
-
records = filtered_query.all()
|
|
435
|
-
found_keys = {r.key for r in records}
|
|
436
|
-
return [k in found_keys for k in keys]
|
|
437
|
-
|
|
438
|
-
async def aexists(self, keys: Sequence[str]) -> list[bool]:
|
|
439
|
-
"""Check if the given keys exist in the SQLite database."""
|
|
440
|
-
async with self._amake_session() as session:
|
|
441
|
-
records = (
|
|
442
|
-
(
|
|
443
|
-
await session.execute(
|
|
444
|
-
select(UpsertionRecord.key).where(
|
|
445
|
-
and_(
|
|
446
|
-
UpsertionRecord.key.in_(keys),
|
|
447
|
-
UpsertionRecord.namespace == self.namespace,
|
|
448
|
-
),
|
|
449
|
-
),
|
|
450
|
-
)
|
|
451
|
-
)
|
|
452
|
-
.scalars()
|
|
453
|
-
.all()
|
|
454
|
-
)
|
|
455
|
-
found_keys = set(records)
|
|
456
|
-
return [k in found_keys for k in keys]
|
|
457
|
-
|
|
458
|
-
def list_keys(
|
|
459
|
-
self,
|
|
460
|
-
*,
|
|
461
|
-
before: Optional[float] = None,
|
|
462
|
-
after: Optional[float] = None,
|
|
463
|
-
group_ids: Optional[Sequence[str]] = None,
|
|
464
|
-
limit: Optional[int] = None,
|
|
465
|
-
) -> list[str]:
|
|
466
|
-
"""List records in the SQLite database based on the provided date range."""
|
|
467
|
-
session: Session
|
|
468
|
-
with self._make_session() as session:
|
|
469
|
-
query: Query = session.query(UpsertionRecord).filter(
|
|
470
|
-
UpsertionRecord.namespace == self.namespace,
|
|
471
|
-
)
|
|
472
|
-
|
|
473
|
-
if after:
|
|
474
|
-
query = query.filter(UpsertionRecord.updated_at > after)
|
|
475
|
-
if before:
|
|
476
|
-
query = query.filter(UpsertionRecord.updated_at < before)
|
|
477
|
-
if group_ids:
|
|
478
|
-
query = query.filter(UpsertionRecord.group_id.in_(group_ids))
|
|
479
|
-
|
|
480
|
-
if limit:
|
|
481
|
-
query = query.limit(limit)
|
|
482
|
-
records = query.all()
|
|
483
|
-
return [r.key for r in records]
|
|
484
|
-
|
|
485
|
-
async def alist_keys(
|
|
486
|
-
self,
|
|
487
|
-
*,
|
|
488
|
-
before: Optional[float] = None,
|
|
489
|
-
after: Optional[float] = None,
|
|
490
|
-
group_ids: Optional[Sequence[str]] = None,
|
|
491
|
-
limit: Optional[int] = None,
|
|
492
|
-
) -> list[str]:
|
|
493
|
-
"""List records in the SQLite database based on the provided date range."""
|
|
494
|
-
session: AsyncSession
|
|
495
|
-
async with self._amake_session() as session:
|
|
496
|
-
query: Query = select(UpsertionRecord.key).filter( # type: ignore[assignment]
|
|
497
|
-
UpsertionRecord.namespace == self.namespace,
|
|
498
|
-
)
|
|
499
|
-
|
|
500
|
-
# mypy does not recognize .all() or .filter()
|
|
501
|
-
if after:
|
|
502
|
-
query = query.filter(UpsertionRecord.updated_at > after)
|
|
503
|
-
if before:
|
|
504
|
-
query = query.filter(UpsertionRecord.updated_at < before)
|
|
505
|
-
if group_ids:
|
|
506
|
-
query = query.filter(UpsertionRecord.group_id.in_(group_ids))
|
|
507
|
-
|
|
508
|
-
if limit:
|
|
509
|
-
query = query.limit(limit)
|
|
510
|
-
records = (await session.execute(query)).scalars().all()
|
|
511
|
-
return list(records)
|
|
512
|
-
|
|
513
|
-
def delete_keys(self, keys: Sequence[str]) -> None:
|
|
514
|
-
"""Delete records from the SQLite database."""
|
|
515
|
-
session: Session
|
|
516
|
-
with self._make_session() as session:
|
|
517
|
-
filtered_query: Query = session.query(UpsertionRecord).filter(
|
|
518
|
-
and_(
|
|
519
|
-
UpsertionRecord.key.in_(keys),
|
|
520
|
-
UpsertionRecord.namespace == self.namespace,
|
|
521
|
-
),
|
|
522
|
-
)
|
|
523
|
-
|
|
524
|
-
filtered_query.delete()
|
|
525
|
-
session.commit()
|
|
526
|
-
|
|
527
|
-
async def adelete_keys(self, keys: Sequence[str]) -> None:
|
|
528
|
-
"""Delete records from the SQLite database."""
|
|
529
|
-
async with self._amake_session() as session:
|
|
530
|
-
await session.execute(
|
|
531
|
-
delete(UpsertionRecord).where(
|
|
532
|
-
and_(
|
|
533
|
-
UpsertionRecord.key.in_(keys),
|
|
534
|
-
UpsertionRecord.namespace == self.namespace,
|
|
535
|
-
),
|
|
536
|
-
),
|
|
537
|
-
)
|
|
538
|
-
|
|
539
|
-
await session.commit()
|
langchain/indexes/graph.py
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"""**Graphs** provide a natural language interface to graph databases."""
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
|
|
5
|
-
from langchain._api import create_importer
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from langchain_community.graphs.index_creator import GraphIndexCreator
|
|
9
|
-
from langchain_community.graphs.networkx_graph import NetworkxEntityGraph
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# Create a way to dynamically look up deprecated imports.
|
|
13
|
-
# Used to consolidate logic for raising deprecation warnings and
|
|
14
|
-
# handling optional imports.
|
|
15
|
-
DEPRECATED_LOOKUP = {
|
|
16
|
-
"GraphIndexCreator": "langchain_community.graphs.index_creator",
|
|
17
|
-
"NetworkxEntityGraph": "langchain_community.graphs.networkx_graph",
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def __getattr__(name: str) -> Any:
|
|
24
|
-
"""Look up attributes dynamically."""
|
|
25
|
-
return _import_attribute(name)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
__all__ = ["GraphIndexCreator", "NetworkxEntityGraph"]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"""Relevant prompts for constructing indexes."""
|
|
2
|
-
|
|
3
|
-
from langchain_core._api import warn_deprecated
|
|
4
|
-
|
|
5
|
-
warn_deprecated(
|
|
6
|
-
since="0.1.47",
|
|
7
|
-
message=(
|
|
8
|
-
"langchain.indexes.prompts will be removed in the future."
|
|
9
|
-
"If you're relying on these prompts, please open an issue on "
|
|
10
|
-
"GitHub to explain your use case."
|
|
11
|
-
),
|
|
12
|
-
pending=True,
|
|
13
|
-
)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
from langchain_core.prompts.prompt import PromptTemplate
|
|
2
|
-
|
|
3
|
-
_DEFAULT_ENTITY_EXTRACTION_TEMPLATE = """You are an AI assistant reading the transcript of a conversation between an AI and a human. Extract all of the proper nouns from the last line of conversation. As a guideline, a proper noun is generally capitalized. You should definitely extract all names and places.
|
|
4
|
-
|
|
5
|
-
The conversation history is provided just in case of a coreference (e.g. "What do you know about him" where "him" is defined in a previous line) -- ignore items mentioned there that are not in the last line.
|
|
6
|
-
|
|
7
|
-
Return the output as a single comma-separated list, or NONE if there is nothing of note to return (e.g. the user is just issuing a greeting or having a simple conversation).
|
|
8
|
-
|
|
9
|
-
EXAMPLE
|
|
10
|
-
Conversation history:
|
|
11
|
-
Person #1: how's it going today?
|
|
12
|
-
AI: "It's going great! How about you?"
|
|
13
|
-
Person #1: good! busy working on Langchain. lots to do.
|
|
14
|
-
AI: "That sounds like a lot of work! What kind of things are you doing to make Langchain better?"
|
|
15
|
-
Last line:
|
|
16
|
-
Person #1: i'm trying to improve Langchain's interfaces, the UX, its integrations with various products the user might want ... a lot of stuff.
|
|
17
|
-
Output: Langchain
|
|
18
|
-
END OF EXAMPLE
|
|
19
|
-
|
|
20
|
-
EXAMPLE
|
|
21
|
-
Conversation history:
|
|
22
|
-
Person #1: how's it going today?
|
|
23
|
-
AI: "It's going great! How about you?"
|
|
24
|
-
Person #1: good! busy working on Langchain. lots to do.
|
|
25
|
-
AI: "That sounds like a lot of work! What kind of things are you doing to make Langchain better?"
|
|
26
|
-
Last line:
|
|
27
|
-
Person #1: i'm trying to improve Langchain's interfaces, the UX, its integrations with various products the user might want ... a lot of stuff. I'm working with Person #2.
|
|
28
|
-
Output: Langchain, Person #2
|
|
29
|
-
END OF EXAMPLE
|
|
30
|
-
|
|
31
|
-
Conversation history (for reference only):
|
|
32
|
-
{history}
|
|
33
|
-
Last line of conversation (for extraction):
|
|
34
|
-
Human: {input}
|
|
35
|
-
|
|
36
|
-
Output:""" # noqa: E501
|
|
37
|
-
ENTITY_EXTRACTION_PROMPT = PromptTemplate(
|
|
38
|
-
input_variables=["history", "input"], template=_DEFAULT_ENTITY_EXTRACTION_TEMPLATE
|
|
39
|
-
)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from langchain_core.prompts.prompt import PromptTemplate
|
|
2
|
-
|
|
3
|
-
_DEFAULT_ENTITY_SUMMARIZATION_TEMPLATE = """You are an AI assistant helping a human keep track of facts about relevant people, places, and concepts in their life. Update the summary of the provided entity in the "Entity" section based on the last line of your conversation with the human. If you are writing the summary for the first time, return a single sentence.
|
|
4
|
-
The update should only include facts that are relayed in the last line of conversation about the provided entity, and should only contain facts about the provided entity.
|
|
5
|
-
|
|
6
|
-
If there is no new information about the provided entity or the information is not worth noting (not an important or relevant fact to remember long-term), return the existing summary unchanged.
|
|
7
|
-
|
|
8
|
-
Full conversation history (for context):
|
|
9
|
-
{history}
|
|
10
|
-
|
|
11
|
-
Entity to summarize:
|
|
12
|
-
{entity}
|
|
13
|
-
|
|
14
|
-
Existing summary of {entity}:
|
|
15
|
-
{summary}
|
|
16
|
-
|
|
17
|
-
Last line of conversation:
|
|
18
|
-
Human: {input}
|
|
19
|
-
Updated summary:""" # noqa: E501
|
|
20
|
-
|
|
21
|
-
ENTITY_SUMMARIZATION_PROMPT = PromptTemplate(
|
|
22
|
-
input_variables=["entity", "summary", "history", "input"],
|
|
23
|
-
template=_DEFAULT_ENTITY_SUMMARIZATION_TEMPLATE,
|
|
24
|
-
)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from langchain_core.prompts.prompt import PromptTemplate
|
|
2
|
-
|
|
3
|
-
KG_TRIPLE_DELIMITER = "<|>"
|
|
4
|
-
|
|
5
|
-
_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE = (
|
|
6
|
-
"You are a networked intelligence helping a human track knowledge triples"
|
|
7
|
-
" about all relevant people, things, concepts, etc. and integrating"
|
|
8
|
-
" them with your knowledge stored within your weights"
|
|
9
|
-
" as well as that stored in a knowledge graph."
|
|
10
|
-
" Extract all of the knowledge triples from the text."
|
|
11
|
-
" A knowledge triple is a clause that contains a subject, a predicate,"
|
|
12
|
-
" and an object. The subject is the entity being described,"
|
|
13
|
-
" the predicate is the property of the subject that is being"
|
|
14
|
-
" described, and the object is the value of the property.\n\n"
|
|
15
|
-
"EXAMPLE\n"
|
|
16
|
-
"It's a state in the US. It's also the number 1 producer of gold in the US.\n\n"
|
|
17
|
-
f"Output: (Nevada, is a, state){KG_TRIPLE_DELIMITER}(Nevada, is in, US)"
|
|
18
|
-
f"{KG_TRIPLE_DELIMITER}(Nevada, is the number 1 producer of, gold)\n"
|
|
19
|
-
"END OF EXAMPLE\n\n"
|
|
20
|
-
"EXAMPLE\n"
|
|
21
|
-
"I'm going to the store.\n\n"
|
|
22
|
-
"Output: NONE\n"
|
|
23
|
-
"END OF EXAMPLE\n\n"
|
|
24
|
-
"EXAMPLE\n"
|
|
25
|
-
"Oh huh. I know Descartes likes to drive antique scooters and play the mandolin.\n"
|
|
26
|
-
f"Output: (Descartes, likes to drive, antique scooters){KG_TRIPLE_DELIMITER}(Descartes, plays, mandolin)\n" # noqa: E501
|
|
27
|
-
"END OF EXAMPLE\n\n"
|
|
28
|
-
"EXAMPLE\n"
|
|
29
|
-
"{text}"
|
|
30
|
-
"Output:"
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT = PromptTemplate(
|
|
34
|
-
input_variables=["text"],
|
|
35
|
-
template=_DEFAULT_KNOWLEDGE_TRIPLE_EXTRACTION_TEMPLATE,
|
|
36
|
-
)
|