langchain 0.3.26__py3-none-any.whl → 0.4.0.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langchain/__init__.py +110 -96
- langchain/_api/__init__.py +2 -2
- langchain/_api/deprecation.py +3 -3
- langchain/_api/module_import.py +51 -46
- langchain/_api/path.py +1 -1
- langchain/adapters/openai.py +8 -8
- langchain/agents/__init__.py +15 -12
- langchain/agents/agent.py +174 -151
- langchain/agents/agent_iterator.py +50 -26
- langchain/agents/agent_toolkits/__init__.py +7 -6
- langchain/agents/agent_toolkits/ainetwork/toolkit.py +1 -1
- langchain/agents/agent_toolkits/amadeus/toolkit.py +1 -1
- langchain/agents/agent_toolkits/azure_cognitive_services.py +1 -1
- langchain/agents/agent_toolkits/clickup/toolkit.py +1 -1
- langchain/agents/agent_toolkits/conversational_retrieval/openai_functions.py +6 -4
- langchain/agents/agent_toolkits/csv/__init__.py +4 -2
- langchain/agents/agent_toolkits/file_management/__init__.py +1 -1
- langchain/agents/agent_toolkits/file_management/toolkit.py +1 -1
- langchain/agents/agent_toolkits/github/toolkit.py +9 -9
- langchain/agents/agent_toolkits/gitlab/toolkit.py +1 -1
- langchain/agents/agent_toolkits/json/base.py +1 -1
- langchain/agents/agent_toolkits/multion/toolkit.py +1 -1
- langchain/agents/agent_toolkits/office365/toolkit.py +1 -1
- langchain/agents/agent_toolkits/openapi/base.py +1 -1
- langchain/agents/agent_toolkits/openapi/planner.py +2 -2
- langchain/agents/agent_toolkits/openapi/planner_prompt.py +10 -10
- langchain/agents/agent_toolkits/openapi/prompt.py +1 -1
- langchain/agents/agent_toolkits/openapi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/pandas/__init__.py +4 -2
- langchain/agents/agent_toolkits/playwright/__init__.py +1 -1
- langchain/agents/agent_toolkits/playwright/toolkit.py +1 -1
- langchain/agents/agent_toolkits/powerbi/base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/chat_base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/prompt.py +2 -2
- langchain/agents/agent_toolkits/powerbi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/python/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark_sql/base.py +1 -1
- langchain/agents/agent_toolkits/spark_sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/sql/prompt.py +1 -1
- langchain/agents/agent_toolkits/sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/vectorstore/base.py +4 -2
- langchain/agents/agent_toolkits/vectorstore/prompt.py +2 -4
- langchain/agents/agent_toolkits/vectorstore/toolkit.py +12 -11
- langchain/agents/agent_toolkits/xorbits/__init__.py +4 -2
- langchain/agents/agent_toolkits/zapier/toolkit.py +1 -1
- langchain/agents/agent_types.py +6 -6
- langchain/agents/chat/base.py +8 -12
- langchain/agents/chat/output_parser.py +9 -6
- langchain/agents/chat/prompt.py +3 -4
- langchain/agents/conversational/base.py +11 -5
- langchain/agents/conversational/output_parser.py +4 -2
- langchain/agents/conversational/prompt.py +2 -3
- langchain/agents/conversational_chat/base.py +9 -5
- langchain/agents/conversational_chat/output_parser.py +9 -11
- langchain/agents/conversational_chat/prompt.py +5 -6
- langchain/agents/format_scratchpad/__init__.py +3 -3
- langchain/agents/format_scratchpad/log_to_messages.py +1 -1
- langchain/agents/format_scratchpad/openai_functions.py +8 -6
- langchain/agents/format_scratchpad/tools.py +5 -3
- langchain/agents/format_scratchpad/xml.py +33 -2
- langchain/agents/initialize.py +17 -9
- langchain/agents/json_chat/base.py +19 -18
- langchain/agents/json_chat/prompt.py +2 -3
- langchain/agents/load_tools.py +2 -1
- langchain/agents/loading.py +28 -18
- langchain/agents/mrkl/base.py +11 -4
- langchain/agents/mrkl/output_parser.py +17 -13
- langchain/agents/mrkl/prompt.py +1 -2
- langchain/agents/openai_assistant/base.py +81 -71
- langchain/agents/openai_functions_agent/agent_token_buffer_memory.py +2 -0
- langchain/agents/openai_functions_agent/base.py +47 -37
- langchain/agents/openai_functions_multi_agent/base.py +40 -27
- langchain/agents/openai_tools/base.py +9 -8
- langchain/agents/output_parsers/__init__.py +3 -3
- langchain/agents/output_parsers/json.py +8 -6
- langchain/agents/output_parsers/openai_functions.py +24 -9
- langchain/agents/output_parsers/openai_tools.py +16 -4
- langchain/agents/output_parsers/react_json_single_input.py +13 -5
- langchain/agents/output_parsers/react_single_input.py +18 -11
- langchain/agents/output_parsers/self_ask.py +5 -2
- langchain/agents/output_parsers/tools.py +32 -13
- langchain/agents/output_parsers/xml.py +102 -28
- langchain/agents/react/agent.py +5 -4
- langchain/agents/react/base.py +26 -17
- langchain/agents/react/output_parser.py +7 -6
- langchain/agents/react/textworld_prompt.py +0 -1
- langchain/agents/react/wiki_prompt.py +14 -15
- langchain/agents/schema.py +5 -2
- langchain/agents/self_ask_with_search/base.py +23 -15
- langchain/agents/self_ask_with_search/prompt.py +0 -1
- langchain/agents/structured_chat/base.py +19 -11
- langchain/agents/structured_chat/output_parser.py +29 -18
- langchain/agents/structured_chat/prompt.py +3 -4
- langchain/agents/tool_calling_agent/base.py +8 -6
- langchain/agents/tools.py +5 -2
- langchain/agents/utils.py +2 -3
- langchain/agents/xml/base.py +12 -6
- langchain/agents/xml/prompt.py +1 -2
- langchain/cache.py +12 -12
- langchain/callbacks/__init__.py +11 -11
- langchain/callbacks/aim_callback.py +2 -2
- langchain/callbacks/argilla_callback.py +1 -1
- langchain/callbacks/arize_callback.py +1 -1
- langchain/callbacks/arthur_callback.py +1 -1
- langchain/callbacks/base.py +7 -7
- langchain/callbacks/clearml_callback.py +1 -1
- langchain/callbacks/comet_ml_callback.py +1 -1
- langchain/callbacks/confident_callback.py +1 -1
- langchain/callbacks/context_callback.py +1 -1
- langchain/callbacks/flyte_callback.py +1 -1
- langchain/callbacks/human.py +2 -2
- langchain/callbacks/infino_callback.py +1 -1
- langchain/callbacks/labelstudio_callback.py +1 -1
- langchain/callbacks/llmonitor_callback.py +1 -1
- langchain/callbacks/manager.py +5 -5
- langchain/callbacks/mlflow_callback.py +2 -2
- langchain/callbacks/openai_info.py +1 -1
- langchain/callbacks/promptlayer_callback.py +1 -1
- langchain/callbacks/sagemaker_callback.py +1 -1
- langchain/callbacks/streaming_aiter.py +17 -3
- langchain/callbacks/streaming_aiter_final_only.py +16 -5
- langchain/callbacks/streaming_stdout_final_only.py +10 -3
- langchain/callbacks/streamlit/__init__.py +3 -2
- langchain/callbacks/streamlit/mutable_expander.py +1 -1
- langchain/callbacks/streamlit/streamlit_callback_handler.py +3 -3
- langchain/callbacks/tracers/__init__.py +1 -1
- langchain/callbacks/tracers/comet.py +1 -1
- langchain/callbacks/tracers/evaluation.py +1 -1
- langchain/callbacks/tracers/log_stream.py +1 -1
- langchain/callbacks/tracers/logging.py +12 -1
- langchain/callbacks/tracers/stdout.py +1 -1
- langchain/callbacks/trubrics_callback.py +1 -1
- langchain/callbacks/utils.py +4 -4
- langchain/callbacks/wandb_callback.py +1 -1
- langchain/callbacks/whylabs_callback.py +1 -1
- langchain/chains/api/base.py +41 -23
- langchain/chains/api/news_docs.py +1 -2
- langchain/chains/api/open_meteo_docs.py +1 -2
- langchain/chains/api/openapi/requests_chain.py +1 -1
- langchain/chains/api/openapi/response_chain.py +1 -1
- langchain/chains/api/podcast_docs.py +1 -2
- langchain/chains/api/prompt.py +1 -2
- langchain/chains/api/tmdb_docs.py +1 -2
- langchain/chains/base.py +96 -56
- langchain/chains/chat_vector_db/prompts.py +2 -3
- langchain/chains/combine_documents/__init__.py +1 -1
- langchain/chains/combine_documents/base.py +30 -11
- langchain/chains/combine_documents/map_reduce.py +41 -30
- langchain/chains/combine_documents/map_rerank.py +39 -24
- langchain/chains/combine_documents/reduce.py +48 -26
- langchain/chains/combine_documents/refine.py +27 -17
- langchain/chains/combine_documents/stuff.py +24 -13
- langchain/chains/constitutional_ai/base.py +11 -4
- langchain/chains/constitutional_ai/principles.py +22 -25
- langchain/chains/constitutional_ai/prompts.py +25 -28
- langchain/chains/conversation/base.py +9 -4
- langchain/chains/conversation/memory.py +5 -5
- langchain/chains/conversation/prompt.py +5 -5
- langchain/chains/conversational_retrieval/base.py +108 -79
- langchain/chains/conversational_retrieval/prompts.py +2 -3
- langchain/chains/elasticsearch_database/base.py +10 -10
- langchain/chains/elasticsearch_database/prompts.py +2 -3
- langchain/chains/ernie_functions/__init__.py +2 -2
- langchain/chains/example_generator.py +3 -1
- langchain/chains/flare/base.py +28 -12
- langchain/chains/flare/prompts.py +2 -0
- langchain/chains/graph_qa/cypher.py +2 -2
- langchain/chains/graph_qa/falkordb.py +1 -1
- langchain/chains/graph_qa/gremlin.py +1 -1
- langchain/chains/graph_qa/neptune_sparql.py +1 -1
- langchain/chains/graph_qa/prompts.py +2 -2
- langchain/chains/history_aware_retriever.py +2 -1
- langchain/chains/hyde/base.py +6 -5
- langchain/chains/hyde/prompts.py +5 -6
- langchain/chains/llm.py +82 -61
- langchain/chains/llm_bash/__init__.py +3 -2
- langchain/chains/llm_checker/base.py +19 -6
- langchain/chains/llm_checker/prompt.py +3 -4
- langchain/chains/llm_math/base.py +25 -10
- langchain/chains/llm_math/prompt.py +1 -2
- langchain/chains/llm_summarization_checker/base.py +22 -7
- langchain/chains/llm_symbolic_math/__init__.py +3 -2
- langchain/chains/loading.py +155 -97
- langchain/chains/mapreduce.py +4 -3
- langchain/chains/moderation.py +11 -9
- langchain/chains/natbot/base.py +11 -9
- langchain/chains/natbot/crawler.py +102 -76
- langchain/chains/natbot/prompt.py +2 -3
- langchain/chains/openai_functions/__init__.py +7 -7
- langchain/chains/openai_functions/base.py +15 -10
- langchain/chains/openai_functions/citation_fuzzy_match.py +21 -11
- langchain/chains/openai_functions/extraction.py +19 -19
- langchain/chains/openai_functions/openapi.py +39 -35
- langchain/chains/openai_functions/qa_with_structure.py +22 -15
- langchain/chains/openai_functions/tagging.py +4 -4
- langchain/chains/openai_tools/extraction.py +7 -8
- langchain/chains/qa_generation/base.py +8 -3
- langchain/chains/qa_generation/prompt.py +5 -5
- langchain/chains/qa_with_sources/base.py +17 -6
- langchain/chains/qa_with_sources/loading.py +16 -8
- langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
- langchain/chains/qa_with_sources/refine_prompts.py +0 -1
- langchain/chains/qa_with_sources/retrieval.py +15 -6
- langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
- langchain/chains/qa_with_sources/vector_db.py +21 -8
- langchain/chains/query_constructor/base.py +37 -34
- langchain/chains/query_constructor/ir.py +4 -4
- langchain/chains/query_constructor/parser.py +101 -34
- langchain/chains/query_constructor/prompt.py +5 -6
- langchain/chains/question_answering/chain.py +21 -10
- langchain/chains/question_answering/map_reduce_prompt.py +14 -14
- langchain/chains/question_answering/map_rerank_prompt.py +3 -3
- langchain/chains/question_answering/refine_prompts.py +2 -5
- langchain/chains/question_answering/stuff_prompt.py +5 -5
- langchain/chains/retrieval.py +1 -3
- langchain/chains/retrieval_qa/base.py +38 -27
- langchain/chains/retrieval_qa/prompt.py +1 -2
- langchain/chains/router/__init__.py +3 -3
- langchain/chains/router/base.py +38 -22
- langchain/chains/router/embedding_router.py +15 -8
- langchain/chains/router/llm_router.py +23 -20
- langchain/chains/router/multi_prompt.py +5 -2
- langchain/chains/router/multi_retrieval_qa.py +28 -5
- langchain/chains/sequential.py +30 -18
- langchain/chains/sql_database/prompt.py +14 -16
- langchain/chains/sql_database/query.py +7 -5
- langchain/chains/structured_output/__init__.py +1 -1
- langchain/chains/structured_output/base.py +77 -67
- langchain/chains/summarize/chain.py +11 -5
- langchain/chains/summarize/map_reduce_prompt.py +0 -1
- langchain/chains/summarize/stuff_prompt.py +0 -1
- langchain/chains/transform.py +9 -6
- langchain/chat_loaders/facebook_messenger.py +1 -1
- langchain/chat_loaders/langsmith.py +1 -1
- langchain/chat_loaders/utils.py +3 -3
- langchain/chat_models/__init__.py +20 -19
- langchain/chat_models/anthropic.py +1 -1
- langchain/chat_models/azureml_endpoint.py +1 -1
- langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
- langchain/chat_models/base.py +213 -139
- langchain/chat_models/bedrock.py +1 -1
- langchain/chat_models/fake.py +1 -1
- langchain/chat_models/meta.py +1 -1
- langchain/chat_models/pai_eas_endpoint.py +1 -1
- langchain/chat_models/promptlayer_openai.py +1 -1
- langchain/chat_models/volcengine_maas.py +1 -1
- langchain/docstore/base.py +1 -1
- langchain/document_loaders/__init__.py +9 -9
- langchain/document_loaders/airbyte.py +3 -3
- langchain/document_loaders/assemblyai.py +1 -1
- langchain/document_loaders/azure_blob_storage_container.py +1 -1
- langchain/document_loaders/azure_blob_storage_file.py +1 -1
- langchain/document_loaders/baiducloud_bos_file.py +1 -1
- langchain/document_loaders/base.py +1 -1
- langchain/document_loaders/blob_loaders/__init__.py +1 -1
- langchain/document_loaders/blob_loaders/schema.py +1 -4
- langchain/document_loaders/blockchain.py +1 -1
- langchain/document_loaders/chatgpt.py +1 -1
- langchain/document_loaders/college_confidential.py +1 -1
- langchain/document_loaders/confluence.py +1 -1
- langchain/document_loaders/email.py +1 -1
- langchain/document_loaders/facebook_chat.py +1 -1
- langchain/document_loaders/markdown.py +1 -1
- langchain/document_loaders/notebook.py +1 -1
- langchain/document_loaders/org_mode.py +1 -1
- langchain/document_loaders/parsers/__init__.py +1 -1
- langchain/document_loaders/parsers/docai.py +1 -1
- langchain/document_loaders/parsers/generic.py +1 -1
- langchain/document_loaders/parsers/html/__init__.py +1 -1
- langchain/document_loaders/parsers/html/bs4.py +1 -1
- langchain/document_loaders/parsers/language/cobol.py +1 -1
- langchain/document_loaders/parsers/language/python.py +1 -1
- langchain/document_loaders/parsers/msword.py +1 -1
- langchain/document_loaders/parsers/pdf.py +5 -5
- langchain/document_loaders/parsers/registry.py +1 -1
- langchain/document_loaders/pdf.py +8 -8
- langchain/document_loaders/powerpoint.py +1 -1
- langchain/document_loaders/pyspark_dataframe.py +1 -1
- langchain/document_loaders/telegram.py +2 -2
- langchain/document_loaders/tencent_cos_directory.py +1 -1
- langchain/document_loaders/unstructured.py +5 -5
- langchain/document_loaders/url_playwright.py +1 -1
- langchain/document_loaders/whatsapp_chat.py +1 -1
- langchain/document_loaders/youtube.py +2 -2
- langchain/document_transformers/__init__.py +3 -3
- langchain/document_transformers/beautiful_soup_transformer.py +1 -1
- langchain/document_transformers/doctran_text_extract.py +1 -1
- langchain/document_transformers/doctran_text_qa.py +1 -1
- langchain/document_transformers/doctran_text_translate.py +1 -1
- langchain/document_transformers/embeddings_redundant_filter.py +3 -3
- langchain/document_transformers/google_translate.py +1 -1
- langchain/document_transformers/html2text.py +1 -1
- langchain/document_transformers/nuclia_text_transform.py +1 -1
- langchain/embeddings/__init__.py +5 -5
- langchain/embeddings/base.py +35 -24
- langchain/embeddings/cache.py +37 -32
- langchain/embeddings/fake.py +1 -1
- langchain/embeddings/huggingface.py +2 -2
- langchain/evaluation/__init__.py +22 -22
- langchain/evaluation/agents/trajectory_eval_chain.py +26 -25
- langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
- langchain/evaluation/comparison/__init__.py +1 -1
- langchain/evaluation/comparison/eval_chain.py +21 -13
- langchain/evaluation/comparison/prompt.py +1 -2
- langchain/evaluation/criteria/__init__.py +1 -1
- langchain/evaluation/criteria/eval_chain.py +23 -11
- langchain/evaluation/criteria/prompt.py +2 -3
- langchain/evaluation/embedding_distance/base.py +34 -20
- langchain/evaluation/exact_match/base.py +14 -1
- langchain/evaluation/loading.py +16 -11
- langchain/evaluation/parsing/base.py +20 -4
- langchain/evaluation/parsing/json_distance.py +24 -10
- langchain/evaluation/parsing/json_schema.py +13 -12
- langchain/evaluation/qa/__init__.py +1 -1
- langchain/evaluation/qa/eval_chain.py +20 -5
- langchain/evaluation/qa/eval_prompt.py +7 -8
- langchain/evaluation/qa/generate_chain.py +4 -1
- langchain/evaluation/qa/generate_prompt.py +2 -4
- langchain/evaluation/regex_match/base.py +9 -1
- langchain/evaluation/schema.py +38 -30
- langchain/evaluation/scoring/__init__.py +1 -1
- langchain/evaluation/scoring/eval_chain.py +23 -15
- langchain/evaluation/scoring/prompt.py +0 -1
- langchain/evaluation/string_distance/base.py +20 -9
- langchain/globals.py +12 -11
- langchain/graphs/__init__.py +6 -6
- langchain/graphs/graph_document.py +1 -1
- langchain/graphs/networkx_graph.py +2 -2
- langchain/hub.py +9 -11
- langchain/indexes/__init__.py +3 -3
- langchain/indexes/_sql_record_manager.py +63 -46
- langchain/indexes/prompts/entity_extraction.py +1 -2
- langchain/indexes/prompts/entity_summarization.py +1 -2
- langchain/indexes/prompts/knowledge_triplet_extraction.py +1 -3
- langchain/indexes/vectorstore.py +35 -19
- langchain/llms/__init__.py +13 -13
- langchain/llms/ai21.py +1 -1
- langchain/llms/azureml_endpoint.py +4 -4
- langchain/llms/base.py +15 -7
- langchain/llms/bedrock.py +1 -1
- langchain/llms/cloudflare_workersai.py +1 -1
- langchain/llms/gradient_ai.py +1 -1
- langchain/llms/loading.py +1 -1
- langchain/llms/openai.py +1 -1
- langchain/llms/sagemaker_endpoint.py +1 -1
- langchain/load/dump.py +1 -1
- langchain/load/load.py +1 -1
- langchain/load/serializable.py +3 -3
- langchain/memory/__init__.py +3 -3
- langchain/memory/buffer.py +14 -7
- langchain/memory/buffer_window.py +2 -0
- langchain/memory/chat_memory.py +14 -8
- langchain/memory/chat_message_histories/__init__.py +1 -1
- langchain/memory/chat_message_histories/astradb.py +1 -1
- langchain/memory/chat_message_histories/cassandra.py +1 -1
- langchain/memory/chat_message_histories/cosmos_db.py +1 -1
- langchain/memory/chat_message_histories/dynamodb.py +1 -1
- langchain/memory/chat_message_histories/elasticsearch.py +1 -1
- langchain/memory/chat_message_histories/file.py +1 -1
- langchain/memory/chat_message_histories/firestore.py +1 -1
- langchain/memory/chat_message_histories/momento.py +1 -1
- langchain/memory/chat_message_histories/mongodb.py +1 -1
- langchain/memory/chat_message_histories/neo4j.py +1 -1
- langchain/memory/chat_message_histories/postgres.py +1 -1
- langchain/memory/chat_message_histories/redis.py +1 -1
- langchain/memory/chat_message_histories/rocksetdb.py +1 -1
- langchain/memory/chat_message_histories/singlestoredb.py +1 -1
- langchain/memory/chat_message_histories/streamlit.py +1 -1
- langchain/memory/chat_message_histories/upstash_redis.py +1 -1
- langchain/memory/chat_message_histories/xata.py +1 -1
- langchain/memory/chat_message_histories/zep.py +1 -1
- langchain/memory/combined.py +14 -13
- langchain/memory/entity.py +131 -61
- langchain/memory/prompt.py +10 -11
- langchain/memory/readonly.py +0 -2
- langchain/memory/simple.py +4 -3
- langchain/memory/summary.py +43 -11
- langchain/memory/summary_buffer.py +20 -8
- langchain/memory/token_buffer.py +2 -0
- langchain/memory/utils.py +3 -2
- langchain/memory/vectorstore.py +12 -5
- langchain/memory/vectorstore_token_buffer_memory.py +5 -5
- langchain/model_laboratory.py +12 -11
- langchain/output_parsers/__init__.py +4 -4
- langchain/output_parsers/boolean.py +7 -4
- langchain/output_parsers/combining.py +14 -7
- langchain/output_parsers/datetime.py +32 -31
- langchain/output_parsers/enum.py +10 -4
- langchain/output_parsers/fix.py +60 -53
- langchain/output_parsers/format_instructions.py +6 -8
- langchain/output_parsers/json.py +2 -2
- langchain/output_parsers/list.py +2 -2
- langchain/output_parsers/loading.py +9 -9
- langchain/output_parsers/openai_functions.py +3 -3
- langchain/output_parsers/openai_tools.py +1 -1
- langchain/output_parsers/pandas_dataframe.py +59 -48
- langchain/output_parsers/prompts.py +1 -2
- langchain/output_parsers/rail_parser.py +1 -1
- langchain/output_parsers/regex.py +9 -8
- langchain/output_parsers/regex_dict.py +7 -10
- langchain/output_parsers/retry.py +99 -80
- langchain/output_parsers/structured.py +21 -6
- langchain/output_parsers/yaml.py +19 -11
- langchain/prompts/__init__.py +5 -3
- langchain/prompts/base.py +5 -5
- langchain/prompts/chat.py +8 -8
- langchain/prompts/example_selector/__init__.py +3 -1
- langchain/prompts/example_selector/semantic_similarity.py +2 -2
- langchain/prompts/few_shot.py +1 -1
- langchain/prompts/loading.py +3 -3
- langchain/prompts/prompt.py +1 -1
- langchain/pydantic_v1/__init__.py +1 -1
- langchain/retrievers/__init__.py +5 -5
- langchain/retrievers/bedrock.py +2 -2
- langchain/retrievers/bm25.py +1 -1
- langchain/retrievers/contextual_compression.py +14 -8
- langchain/retrievers/docarray.py +1 -1
- langchain/retrievers/document_compressors/__init__.py +5 -4
- langchain/retrievers/document_compressors/base.py +12 -6
- langchain/retrievers/document_compressors/chain_extract.py +5 -3
- langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
- langchain/retrievers/document_compressors/chain_filter.py +9 -9
- langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
- langchain/retrievers/document_compressors/cohere_rerank.py +17 -15
- langchain/retrievers/document_compressors/cross_encoder_rerank.py +2 -0
- langchain/retrievers/document_compressors/embeddings_filter.py +24 -17
- langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
- langchain/retrievers/document_compressors/listwise_rerank.py +8 -5
- langchain/retrievers/ensemble.py +30 -27
- langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
- langchain/retrievers/google_vertex_ai_search.py +2 -2
- langchain/retrievers/kendra.py +10 -10
- langchain/retrievers/llama_index.py +1 -1
- langchain/retrievers/merger_retriever.py +11 -11
- langchain/retrievers/milvus.py +1 -1
- langchain/retrievers/multi_query.py +35 -27
- langchain/retrievers/multi_vector.py +24 -9
- langchain/retrievers/parent_document_retriever.py +33 -9
- langchain/retrievers/re_phraser.py +6 -5
- langchain/retrievers/self_query/base.py +157 -127
- langchain/retrievers/time_weighted_retriever.py +21 -7
- langchain/retrievers/zilliz.py +1 -1
- langchain/runnables/hub.py +12 -0
- langchain/runnables/openai_functions.py +12 -2
- langchain/schema/__init__.py +23 -23
- langchain/schema/cache.py +1 -1
- langchain/schema/callbacks/base.py +7 -7
- langchain/schema/callbacks/manager.py +19 -19
- langchain/schema/callbacks/tracers/base.py +1 -1
- langchain/schema/callbacks/tracers/evaluation.py +1 -1
- langchain/schema/callbacks/tracers/langchain.py +1 -1
- langchain/schema/callbacks/tracers/langchain_v1.py +1 -1
- langchain/schema/callbacks/tracers/log_stream.py +1 -1
- langchain/schema/callbacks/tracers/schemas.py +8 -8
- langchain/schema/callbacks/tracers/stdout.py +3 -3
- langchain/schema/document.py +1 -1
- langchain/schema/language_model.py +2 -2
- langchain/schema/messages.py +12 -12
- langchain/schema/output.py +3 -3
- langchain/schema/output_parser.py +3 -3
- langchain/schema/runnable/__init__.py +3 -3
- langchain/schema/runnable/base.py +9 -9
- langchain/schema/runnable/config.py +5 -5
- langchain/schema/runnable/configurable.py +1 -1
- langchain/schema/runnable/history.py +1 -1
- langchain/schema/runnable/passthrough.py +1 -1
- langchain/schema/runnable/utils.py +16 -16
- langchain/schema/vectorstore.py +1 -1
- langchain/smith/__init__.py +2 -1
- langchain/smith/evaluation/__init__.py +2 -2
- langchain/smith/evaluation/config.py +9 -23
- langchain/smith/evaluation/name_generation.py +3 -3
- langchain/smith/evaluation/progress.py +22 -4
- langchain/smith/evaluation/runner_utils.py +416 -247
- langchain/smith/evaluation/string_run_evaluator.py +102 -68
- langchain/storage/__init__.py +2 -2
- langchain/storage/_lc_store.py +4 -2
- langchain/storage/encoder_backed.py +7 -2
- langchain/storage/file_system.py +19 -16
- langchain/storage/in_memory.py +1 -1
- langchain/storage/upstash_redis.py +1 -1
- langchain/text_splitter.py +15 -15
- langchain/tools/__init__.py +28 -26
- langchain/tools/ainetwork/app.py +1 -1
- langchain/tools/ainetwork/base.py +1 -1
- langchain/tools/ainetwork/owner.py +1 -1
- langchain/tools/ainetwork/rule.py +1 -1
- langchain/tools/ainetwork/transfer.py +1 -1
- langchain/tools/ainetwork/value.py +1 -1
- langchain/tools/amadeus/closest_airport.py +1 -1
- langchain/tools/amadeus/flight_search.py +1 -1
- langchain/tools/azure_cognitive_services/__init__.py +1 -1
- langchain/tools/base.py +4 -4
- langchain/tools/bearly/tool.py +1 -1
- langchain/tools/bing_search/__init__.py +1 -1
- langchain/tools/bing_search/tool.py +1 -1
- langchain/tools/dataforseo_api_search/__init__.py +1 -1
- langchain/tools/dataforseo_api_search/tool.py +1 -1
- langchain/tools/ddg_search/tool.py +1 -1
- langchain/tools/e2b_data_analysis/tool.py +2 -2
- langchain/tools/edenai/__init__.py +1 -1
- langchain/tools/file_management/__init__.py +1 -1
- langchain/tools/file_management/copy.py +1 -1
- langchain/tools/file_management/delete.py +1 -1
- langchain/tools/gmail/__init__.py +2 -2
- langchain/tools/gmail/get_message.py +1 -1
- langchain/tools/gmail/search.py +1 -1
- langchain/tools/gmail/send_message.py +1 -1
- langchain/tools/google_finance/__init__.py +1 -1
- langchain/tools/google_finance/tool.py +1 -1
- langchain/tools/google_scholar/__init__.py +1 -1
- langchain/tools/google_scholar/tool.py +1 -1
- langchain/tools/google_search/__init__.py +1 -1
- langchain/tools/google_search/tool.py +1 -1
- langchain/tools/google_serper/__init__.py +1 -1
- langchain/tools/google_serper/tool.py +1 -1
- langchain/tools/google_trends/__init__.py +1 -1
- langchain/tools/google_trends/tool.py +1 -1
- langchain/tools/jira/tool.py +20 -1
- langchain/tools/json/tool.py +25 -3
- langchain/tools/memorize/tool.py +1 -1
- langchain/tools/multion/__init__.py +1 -1
- langchain/tools/multion/update_session.py +1 -1
- langchain/tools/office365/__init__.py +2 -2
- langchain/tools/office365/events_search.py +1 -1
- langchain/tools/office365/messages_search.py +1 -1
- langchain/tools/office365/send_event.py +1 -1
- langchain/tools/office365/send_message.py +1 -1
- langchain/tools/openapi/utils/api_models.py +6 -6
- langchain/tools/playwright/__init__.py +5 -5
- langchain/tools/playwright/click.py +1 -1
- langchain/tools/playwright/extract_hyperlinks.py +1 -1
- langchain/tools/playwright/get_elements.py +1 -1
- langchain/tools/playwright/navigate.py +1 -1
- langchain/tools/plugin.py +2 -2
- langchain/tools/powerbi/tool.py +1 -1
- langchain/tools/python/__init__.py +3 -2
- langchain/tools/reddit_search/tool.py +1 -1
- langchain/tools/render.py +2 -2
- langchain/tools/requests/tool.py +2 -2
- langchain/tools/searchapi/tool.py +1 -1
- langchain/tools/searx_search/tool.py +1 -1
- langchain/tools/slack/get_message.py +1 -1
- langchain/tools/spark_sql/tool.py +1 -1
- langchain/tools/sql_database/tool.py +1 -1
- langchain/tools/tavily_search/__init__.py +1 -1
- langchain/tools/tavily_search/tool.py +1 -1
- langchain/tools/zapier/__init__.py +1 -1
- langchain/tools/zapier/tool.py +24 -2
- langchain/utilities/__init__.py +4 -4
- langchain/utilities/arcee.py +4 -4
- langchain/utilities/clickup.py +4 -4
- langchain/utilities/dalle_image_generator.py +1 -1
- langchain/utilities/dataforseo_api_search.py +1 -1
- langchain/utilities/opaqueprompts.py +1 -1
- langchain/utilities/reddit_search.py +1 -1
- langchain/utilities/sql_database.py +1 -1
- langchain/utilities/tavily_search.py +1 -1
- langchain/utilities/vertexai.py +2 -2
- langchain/utils/__init__.py +1 -1
- langchain/utils/aiter.py +1 -1
- langchain/utils/html.py +3 -3
- langchain/utils/input.py +1 -1
- langchain/utils/iter.py +1 -1
- langchain/utils/json_schema.py +1 -3
- langchain/utils/strings.py +1 -1
- langchain/utils/utils.py +6 -6
- langchain/vectorstores/__init__.py +5 -5
- langchain/vectorstores/alibabacloud_opensearch.py +1 -1
- langchain/vectorstores/azure_cosmos_db.py +1 -1
- langchain/vectorstores/clickhouse.py +1 -1
- langchain/vectorstores/elastic_vector_search.py +1 -1
- langchain/vectorstores/elasticsearch.py +2 -2
- langchain/vectorstores/myscale.py +1 -1
- langchain/vectorstores/neo4j_vector.py +1 -1
- langchain/vectorstores/pgembedding.py +1 -1
- langchain/vectorstores/qdrant.py +1 -1
- langchain/vectorstores/redis/__init__.py +1 -1
- langchain/vectorstores/redis/base.py +1 -1
- langchain/vectorstores/redis/filters.py +4 -4
- langchain/vectorstores/redis/schema.py +6 -6
- langchain/vectorstores/sklearn.py +2 -2
- langchain/vectorstores/starrocks.py +1 -1
- langchain/vectorstores/utils.py +1 -1
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/METADATA +4 -14
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/RECORD +590 -591
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/WHEEL +1 -1
- langchain/smith/evaluation/utils.py +0 -0
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/entry_points.txt +0 -0
- {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/licenses/LICENSE +0 -0
|
@@ -10,6 +10,7 @@ from langchain_core.agents import AgentAction, AgentFinish
|
|
|
10
10
|
from langchain_core.exceptions import OutputParserException
|
|
11
11
|
from langchain_core.language_models import BaseLanguageModel
|
|
12
12
|
from pydantic import Field
|
|
13
|
+
from typing_extensions import override
|
|
13
14
|
|
|
14
15
|
from langchain.agents.agent import AgentOutputParser
|
|
15
16
|
from langchain.agents.structured_chat.prompt import FORMAT_INSTRUCTIONS
|
|
@@ -27,10 +28,12 @@ class StructuredChatOutputParser(AgentOutputParser):
|
|
|
27
28
|
pattern: Pattern = re.compile(r"```(?:json\s+)?(\W.*?)```", re.DOTALL)
|
|
28
29
|
"""Regex pattern to parse the output."""
|
|
29
30
|
|
|
31
|
+
@override
|
|
30
32
|
def get_format_instructions(self) -> str:
|
|
31
33
|
"""Returns formatting instructions for the given output parser."""
|
|
32
34
|
return self.format_instructions
|
|
33
35
|
|
|
36
|
+
@override
|
|
34
37
|
def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
|
|
35
38
|
try:
|
|
36
39
|
action_match = self.pattern.search(text)
|
|
@@ -42,14 +45,15 @@ class StructuredChatOutputParser(AgentOutputParser):
|
|
|
42
45
|
response = response[0]
|
|
43
46
|
if response["action"] == "Final Answer":
|
|
44
47
|
return AgentFinish({"output": response["action_input"]}, text)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
return AgentAction(
|
|
49
|
+
response["action"],
|
|
50
|
+
response.get("action_input", {}),
|
|
51
|
+
text,
|
|
52
|
+
)
|
|
53
|
+
return AgentFinish({"output": text}, text)
|
|
51
54
|
except Exception as e:
|
|
52
|
-
|
|
55
|
+
msg = f"Could not parse LLM output: {text}"
|
|
56
|
+
raise OutputParserException(msg) from e
|
|
53
57
|
|
|
54
58
|
@property
|
|
55
59
|
def _type(self) -> str:
|
|
@@ -64,20 +68,19 @@ class StructuredChatOutputParserWithRetries(AgentOutputParser):
|
|
|
64
68
|
output_fixing_parser: Optional[OutputFixingParser] = None
|
|
65
69
|
"""The output fixing parser to use."""
|
|
66
70
|
|
|
71
|
+
@override
|
|
67
72
|
def get_format_instructions(self) -> str:
|
|
68
73
|
return FORMAT_INSTRUCTIONS
|
|
69
74
|
|
|
75
|
+
@override
|
|
70
76
|
def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
|
|
71
77
|
try:
|
|
72
78
|
if self.output_fixing_parser is not None:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
)
|
|
76
|
-
else:
|
|
77
|
-
parsed_obj = self.base_parser.parse(text)
|
|
78
|
-
return parsed_obj
|
|
79
|
+
return self.output_fixing_parser.parse(text)
|
|
80
|
+
return self.base_parser.parse(text)
|
|
79
81
|
except Exception as e:
|
|
80
|
-
|
|
82
|
+
msg = f"Could not parse LLM output: {text}"
|
|
83
|
+
raise OutputParserException(msg) from e
|
|
81
84
|
|
|
82
85
|
@classmethod
|
|
83
86
|
def from_llm(
|
|
@@ -85,16 +88,24 @@ class StructuredChatOutputParserWithRetries(AgentOutputParser):
|
|
|
85
88
|
llm: Optional[BaseLanguageModel] = None,
|
|
86
89
|
base_parser: Optional[StructuredChatOutputParser] = None,
|
|
87
90
|
) -> StructuredChatOutputParserWithRetries:
|
|
91
|
+
"""Create a StructuredChatOutputParserWithRetries from a language model.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
llm: The language model to use.
|
|
95
|
+
base_parser: An optional StructuredChatOutputParser to use.
|
|
96
|
+
Returns:
|
|
97
|
+
An instance of StructuredChatOutputParserWithRetries.
|
|
98
|
+
"""
|
|
88
99
|
if llm is not None:
|
|
89
100
|
base_parser = base_parser or StructuredChatOutputParser()
|
|
90
101
|
output_fixing_parser: OutputFixingParser = OutputFixingParser.from_llm(
|
|
91
|
-
llm=llm,
|
|
102
|
+
llm=llm,
|
|
103
|
+
parser=base_parser,
|
|
92
104
|
)
|
|
93
105
|
return cls(output_fixing_parser=output_fixing_parser)
|
|
94
|
-
|
|
106
|
+
if base_parser is not None:
|
|
95
107
|
return cls(base_parser=base_parser)
|
|
96
|
-
|
|
97
|
-
return cls()
|
|
108
|
+
return cls()
|
|
98
109
|
|
|
99
110
|
@property
|
|
100
111
|
def _type(self) -> str:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
#
|
|
2
|
-
PREFIX = """Respond to the human as helpfully and accurately as possible. You have access to the following tools:"""
|
|
1
|
+
PREFIX = """Respond to the human as helpfully and accurately as possible. You have access to the following tools:""" # noqa: E501
|
|
3
2
|
FORMAT_INSTRUCTIONS = """Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).
|
|
4
3
|
|
|
5
4
|
Valid "action" values: "Final Answer" or {tool_names}
|
|
@@ -30,6 +29,6 @@ Action:
|
|
|
30
29
|
"action": "Final Answer",
|
|
31
30
|
"action_input": "Final response to human"
|
|
32
31
|
}}}}
|
|
33
|
-
```"""
|
|
32
|
+
```""" # noqa: E501
|
|
34
33
|
SUFFIX = """Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.
|
|
35
|
-
Thought:"""
|
|
34
|
+
Thought:""" # noqa: E501
|
|
@@ -85,25 +85,27 @@ def create_tool_calling_agent(
|
|
|
85
85
|
The agent prompt must have an `agent_scratchpad` key that is a
|
|
86
86
|
``MessagesPlaceholder``. Intermediate agent actions and tool output
|
|
87
87
|
messages will be passed in here.
|
|
88
|
+
|
|
88
89
|
"""
|
|
89
90
|
missing_vars = {"agent_scratchpad"}.difference(
|
|
90
|
-
prompt.input_variables + list(prompt.partial_variables)
|
|
91
|
+
prompt.input_variables + list(prompt.partial_variables),
|
|
91
92
|
)
|
|
92
93
|
if missing_vars:
|
|
93
|
-
|
|
94
|
+
msg = f"Prompt missing required variables: {missing_vars}"
|
|
95
|
+
raise ValueError(msg)
|
|
94
96
|
|
|
95
97
|
if not hasattr(llm, "bind_tools"):
|
|
98
|
+
msg = "This function requires a bind_tools() method be implemented on the LLM."
|
|
96
99
|
raise ValueError(
|
|
97
|
-
|
|
100
|
+
msg,
|
|
98
101
|
)
|
|
99
102
|
llm_with_tools = llm.bind_tools(tools)
|
|
100
103
|
|
|
101
|
-
|
|
104
|
+
return (
|
|
102
105
|
RunnablePassthrough.assign(
|
|
103
|
-
agent_scratchpad=lambda x: message_formatter(x["intermediate_steps"])
|
|
106
|
+
agent_scratchpad=lambda x: message_formatter(x["intermediate_steps"]),
|
|
104
107
|
)
|
|
105
108
|
| prompt
|
|
106
109
|
| llm_with_tools
|
|
107
110
|
| ToolsAgentOutputParser()
|
|
108
111
|
)
|
|
109
|
-
return agent
|
langchain/agents/tools.py
CHANGED
|
@@ -7,6 +7,7 @@ from langchain_core.callbacks import (
|
|
|
7
7
|
CallbackManagerForToolRun,
|
|
8
8
|
)
|
|
9
9
|
from langchain_core.tools import BaseTool, tool
|
|
10
|
+
from typing_extensions import override
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class InvalidTool(BaseTool):
|
|
@@ -17,6 +18,7 @@ class InvalidTool(BaseTool):
|
|
|
17
18
|
description: str = "Called when tool name is invalid. Suggests valid tool names."
|
|
18
19
|
"""Description of the tool."""
|
|
19
20
|
|
|
21
|
+
@override
|
|
20
22
|
def _run(
|
|
21
23
|
self,
|
|
22
24
|
requested_tool_name: str,
|
|
@@ -24,12 +26,13 @@ class InvalidTool(BaseTool):
|
|
|
24
26
|
run_manager: Optional[CallbackManagerForToolRun] = None,
|
|
25
27
|
) -> str:
|
|
26
28
|
"""Use the tool."""
|
|
27
|
-
available_tool_names_str = ", ".join(
|
|
29
|
+
available_tool_names_str = ", ".join(list(available_tool_names))
|
|
28
30
|
return (
|
|
29
31
|
f"{requested_tool_name} is not a valid tool, "
|
|
30
32
|
f"try one of [{available_tool_names_str}]."
|
|
31
33
|
)
|
|
32
34
|
|
|
35
|
+
@override
|
|
33
36
|
async def _arun(
|
|
34
37
|
self,
|
|
35
38
|
requested_tool_name: str,
|
|
@@ -37,7 +40,7 @@ class InvalidTool(BaseTool):
|
|
|
37
40
|
run_manager: Optional[AsyncCallbackManagerForToolRun] = None,
|
|
38
41
|
) -> str:
|
|
39
42
|
"""Use the tool asynchronously."""
|
|
40
|
-
available_tool_names_str = ", ".join(
|
|
43
|
+
available_tool_names_str = ", ".join(list(available_tool_names))
|
|
41
44
|
return (
|
|
42
45
|
f"{requested_tool_name} is not a valid tool, "
|
|
43
46
|
f"try one of [{available_tool_names_str}]."
|
langchain/agents/utils.py
CHANGED
|
@@ -15,6 +15,5 @@ def validate_tools_single_input(class_name: str, tools: Sequence[BaseTool]) -> N
|
|
|
15
15
|
"""
|
|
16
16
|
for tool in tools:
|
|
17
17
|
if not tool.is_single_input:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
)
|
|
18
|
+
msg = f"{class_name} does not support multi-input tool {tool.name}."
|
|
19
|
+
raise ValueError(msg)
|
langchain/agents/xml/base.py
CHANGED
|
@@ -10,6 +10,7 @@ from langchain_core.prompts.chat import AIMessagePromptTemplate, ChatPromptTempl
|
|
|
10
10
|
from langchain_core.runnables import Runnable, RunnablePassthrough
|
|
11
11
|
from langchain_core.tools import BaseTool
|
|
12
12
|
from langchain_core.tools.render import ToolsRenderer, render_text_description
|
|
13
|
+
from typing_extensions import override
|
|
13
14
|
|
|
14
15
|
from langchain.agents.agent import BaseSingleActionAgent
|
|
15
16
|
from langchain.agents.format_scratchpad import format_xml
|
|
@@ -36,7 +37,6 @@ class XMLAgent(BaseSingleActionAgent):
|
|
|
36
37
|
tools = ...
|
|
37
38
|
model =
|
|
38
39
|
|
|
39
|
-
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
42
|
tools: list[BaseTool]
|
|
@@ -45,20 +45,24 @@ class XMLAgent(BaseSingleActionAgent):
|
|
|
45
45
|
"""Chain to use to predict action."""
|
|
46
46
|
|
|
47
47
|
@property
|
|
48
|
+
@override
|
|
48
49
|
def input_keys(self) -> list[str]:
|
|
49
50
|
return ["input"]
|
|
50
51
|
|
|
51
52
|
@staticmethod
|
|
52
53
|
def get_default_prompt() -> ChatPromptTemplate:
|
|
54
|
+
"""Return the default prompt for the XML agent."""
|
|
53
55
|
base_prompt = ChatPromptTemplate.from_template(agent_instructions)
|
|
54
56
|
return base_prompt + AIMessagePromptTemplate.from_template(
|
|
55
|
-
"{intermediate_steps}"
|
|
57
|
+
"{intermediate_steps}",
|
|
56
58
|
)
|
|
57
59
|
|
|
58
60
|
@staticmethod
|
|
59
61
|
def get_default_output_parser() -> XMLAgentOutputParser:
|
|
62
|
+
"""Return an XMLAgentOutputParser."""
|
|
60
63
|
return XMLAgentOutputParser()
|
|
61
64
|
|
|
65
|
+
@override
|
|
62
66
|
def plan(
|
|
63
67
|
self,
|
|
64
68
|
intermediate_steps: list[tuple[AgentAction, str]],
|
|
@@ -83,6 +87,7 @@ class XMLAgent(BaseSingleActionAgent):
|
|
|
83
87
|
response = self.llm_chain(inputs, callbacks=callbacks)
|
|
84
88
|
return response[self.llm_chain.output_key]
|
|
85
89
|
|
|
90
|
+
@override
|
|
86
91
|
async def aplan(
|
|
87
92
|
self,
|
|
88
93
|
intermediate_steps: list[tuple[AgentAction, str]],
|
|
@@ -203,12 +208,14 @@ def create_xml_agent(
|
|
|
203
208
|
Question: {input}
|
|
204
209
|
{agent_scratchpad}'''
|
|
205
210
|
prompt = PromptTemplate.from_template(template)
|
|
211
|
+
|
|
206
212
|
""" # noqa: E501
|
|
207
213
|
missing_vars = {"tools", "agent_scratchpad"}.difference(
|
|
208
|
-
prompt.input_variables + list(prompt.partial_variables)
|
|
214
|
+
prompt.input_variables + list(prompt.partial_variables),
|
|
209
215
|
)
|
|
210
216
|
if missing_vars:
|
|
211
|
-
|
|
217
|
+
msg = f"Prompt missing required variables: {missing_vars}"
|
|
218
|
+
raise ValueError(msg)
|
|
212
219
|
|
|
213
220
|
prompt = prompt.partial(
|
|
214
221
|
tools=tools_renderer(list(tools)),
|
|
@@ -220,7 +227,7 @@ def create_xml_agent(
|
|
|
220
227
|
else:
|
|
221
228
|
llm_with_stop = llm
|
|
222
229
|
|
|
223
|
-
|
|
230
|
+
return (
|
|
224
231
|
RunnablePassthrough.assign(
|
|
225
232
|
agent_scratchpad=lambda x: format_xml(x["intermediate_steps"]),
|
|
226
233
|
)
|
|
@@ -228,4 +235,3 @@ def create_xml_agent(
|
|
|
228
235
|
| llm_with_stop
|
|
229
236
|
| XMLAgentOutputParser()
|
|
230
237
|
)
|
|
231
|
-
return agent
|
langchain/agents/xml/prompt.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# flake8: noqa
|
|
2
1
|
# TODO: deprecate
|
|
3
2
|
agent_instructions = """You are a helpful assistant. Help the user answer any questions.
|
|
4
3
|
|
|
@@ -19,4 +18,4 @@ When you are done, respond with a final answer between <final_answer></final_ans
|
|
|
19
18
|
|
|
20
19
|
Begin!
|
|
21
20
|
|
|
22
|
-
Question: {question}"""
|
|
21
|
+
Question: {question}""" # noqa: E501
|
langchain/cache.py
CHANGED
|
@@ -53,20 +53,20 @@ def __getattr__(name: str) -> Any:
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
__all__ = [
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"UpstashRedisCache",
|
|
60
|
-
"RedisCache",
|
|
61
|
-
"RedisSemanticCache",
|
|
62
|
-
"GPTCache",
|
|
63
|
-
"MomentoCache",
|
|
64
|
-
"InMemoryCache",
|
|
56
|
+
"AstraDBCache",
|
|
57
|
+
"AstraDBSemanticCache",
|
|
58
|
+
"AzureCosmosDBSemanticCache",
|
|
65
59
|
"CassandraCache",
|
|
66
60
|
"CassandraSemanticCache",
|
|
61
|
+
"FullLLMCache",
|
|
67
62
|
"FullMd5LLMCache",
|
|
63
|
+
"GPTCache",
|
|
64
|
+
"InMemoryCache",
|
|
65
|
+
"MomentoCache",
|
|
66
|
+
"RedisCache",
|
|
67
|
+
"RedisSemanticCache",
|
|
68
|
+
"SQLAlchemyCache",
|
|
68
69
|
"SQLAlchemyMd5Cache",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"AzureCosmosDBSemanticCache",
|
|
70
|
+
"SQLiteCache",
|
|
71
|
+
"UpstashRedisCache",
|
|
72
72
|
]
|
langchain/callbacks/__init__.py
CHANGED
|
@@ -107,33 +107,33 @@ __all__ = [
|
|
|
107
107
|
"AimCallbackHandler",
|
|
108
108
|
"ArgillaCallbackHandler",
|
|
109
109
|
"ArizeCallbackHandler",
|
|
110
|
-
"PromptLayerCallbackHandler",
|
|
111
110
|
"ArthurCallbackHandler",
|
|
111
|
+
"AsyncIteratorCallbackHandler",
|
|
112
112
|
"ClearMLCallbackHandler",
|
|
113
113
|
"CometCallbackHandler",
|
|
114
114
|
"ContextCallbackHandler",
|
|
115
115
|
"FileCallbackHandler",
|
|
116
|
+
"FinalStreamingStdOutCallbackHandler",
|
|
117
|
+
"FlyteCallbackHandler",
|
|
116
118
|
"HumanApprovalCallbackHandler",
|
|
117
119
|
"InfinoCallbackHandler",
|
|
118
|
-
"
|
|
120
|
+
"LLMThoughtLabeler",
|
|
119
121
|
"LLMonitorCallbackHandler",
|
|
122
|
+
"LabelStudioCallbackHandler",
|
|
123
|
+
"LangChainTracer",
|
|
124
|
+
"MlflowCallbackHandler",
|
|
120
125
|
"OpenAICallbackHandler",
|
|
126
|
+
"PromptLayerCallbackHandler",
|
|
127
|
+
"SageMakerCallbackHandler",
|
|
121
128
|
"StdOutCallbackHandler",
|
|
122
|
-
"AsyncIteratorCallbackHandler",
|
|
123
129
|
"StreamingStdOutCallbackHandler",
|
|
124
|
-
"FinalStreamingStdOutCallbackHandler",
|
|
125
|
-
"LLMThoughtLabeler",
|
|
126
|
-
"LangChainTracer",
|
|
127
130
|
"StreamlitCallbackHandler",
|
|
131
|
+
"TrubricsCallbackHandler",
|
|
128
132
|
"WandbCallbackHandler",
|
|
129
133
|
"WhyLabsCallbackHandler",
|
|
134
|
+
"collect_runs",
|
|
130
135
|
"get_openai_callback",
|
|
131
136
|
"tracing_enabled",
|
|
132
137
|
"tracing_v2_enabled",
|
|
133
|
-
"collect_runs",
|
|
134
138
|
"wandb_tracing_enabled",
|
|
135
|
-
"FlyteCallbackHandler",
|
|
136
|
-
"SageMakerCallbackHandler",
|
|
137
|
-
"LabelStudioCallbackHandler",
|
|
138
|
-
"TrubricsCallbackHandler",
|
|
139
139
|
]
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback"
|
|
12
|
+
"ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ArizeCallbackHandler": "langchain_community.callbacks.arize_callback"
|
|
12
|
+
"ArizeCallbackHandler": "langchain_community.callbacks.arize_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback"
|
|
12
|
+
"ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
langchain/callbacks/base.py
CHANGED
|
@@ -16,14 +16,14 @@ from langchain_core.callbacks import (
|
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
__all__ = [
|
|
19
|
-
"RetrieverManagerMixin",
|
|
20
|
-
"LLMManagerMixin",
|
|
21
|
-
"ChainManagerMixin",
|
|
22
|
-
"ToolManagerMixin",
|
|
23
|
-
"CallbackManagerMixin",
|
|
24
|
-
"RunManagerMixin",
|
|
25
|
-
"BaseCallbackHandler",
|
|
26
19
|
"AsyncCallbackHandler",
|
|
20
|
+
"BaseCallbackHandler",
|
|
27
21
|
"BaseCallbackManager",
|
|
22
|
+
"CallbackManagerMixin",
|
|
28
23
|
"Callbacks",
|
|
24
|
+
"ChainManagerMixin",
|
|
25
|
+
"LLMManagerMixin",
|
|
26
|
+
"RetrieverManagerMixin",
|
|
27
|
+
"RunManagerMixin",
|
|
28
|
+
"ToolManagerMixin",
|
|
29
29
|
]
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback"
|
|
12
|
+
"ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback"
|
|
12
|
+
"CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"DeepEvalCallbackHandler": "langchain_community.callbacks.confident_callback"
|
|
12
|
+
"DeepEvalCallbackHandler": "langchain_community.callbacks.confident_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"ContextCallbackHandler": "langchain_community.callbacks.context_callback"
|
|
12
|
+
"ContextCallbackHandler": "langchain_community.callbacks.context_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback"
|
|
12
|
+
"FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
langchain/callbacks/human.py
CHANGED
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"InfinoCallbackHandler": "langchain_community.callbacks.infino_callback"
|
|
12
|
+
"InfinoCallbackHandler": "langchain_community.callbacks.infino_callback",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"LLMonitorCallbackHandler": "langchain_community.callbacks.llmonitor_callback"
|
|
14
|
+
"LLMonitorCallbackHandler": "langchain_community.callbacks.llmonitor_callback",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
langchain/callbacks/manager.py
CHANGED
|
@@ -58,7 +58,7 @@ def __getattr__(name: str) -> Any:
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
__all__ = [
|
|
61
|
-
"
|
|
61
|
+
"AsyncCallbackManager",
|
|
62
62
|
"AsyncCallbackManagerForChainGroup",
|
|
63
63
|
"AsyncCallbackManagerForChainRun",
|
|
64
64
|
"AsyncCallbackManagerForLLMRun",
|
|
@@ -66,7 +66,6 @@ __all__ = [
|
|
|
66
66
|
"AsyncCallbackManagerForToolRun",
|
|
67
67
|
"AsyncParentRunManager",
|
|
68
68
|
"AsyncRunManager",
|
|
69
|
-
"atrace_as_chain_group",
|
|
70
69
|
"BaseRunManager",
|
|
71
70
|
"CallbackManager",
|
|
72
71
|
"CallbackManagerForChainGroup",
|
|
@@ -75,13 +74,14 @@ __all__ = [
|
|
|
75
74
|
"CallbackManagerForRetrieverRun",
|
|
76
75
|
"CallbackManagerForToolRun",
|
|
77
76
|
"Callbacks",
|
|
78
|
-
"
|
|
77
|
+
"ParentRunManager",
|
|
78
|
+
"RunManager",
|
|
79
|
+
"ahandle_event",
|
|
80
|
+
"atrace_as_chain_group",
|
|
79
81
|
"collect_runs",
|
|
80
82
|
"env_var_is_set",
|
|
81
83
|
"get_openai_callback",
|
|
82
84
|
"handle_event",
|
|
83
|
-
"ParentRunManager",
|
|
84
|
-
"RunManager",
|
|
85
85
|
"trace_as_chain_group",
|
|
86
86
|
"tracing_enabled",
|
|
87
87
|
"tracing_v2_enabled",
|
|
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|
|
9
9
|
# Used to consolidate logic for raising deprecation warnings and
|
|
10
10
|
# handling optional imports.
|
|
11
11
|
DEPRECATED_LOOKUP = {
|
|
12
|
-
"OpenAICallbackHandler": "langchain_community.callbacks.openai_info"
|
|
12
|
+
"OpenAICallbackHandler": "langchain_community.callbacks.openai_info",
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"PromptLayerCallbackHandler": "langchain_community.callbacks.promptlayer_callback"
|
|
14
|
+
"PromptLayerCallbackHandler": "langchain_community.callbacks.promptlayer_callback",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|
|
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
# Used to consolidate logic for raising deprecation warnings and
|
|
12
12
|
# handling optional imports.
|
|
13
13
|
DEPRECATED_LOOKUP = {
|
|
14
|
-
"SageMakerCallbackHandler": "langchain_community.callbacks.sagemaker_callback"
|
|
14
|
+
"SageMakerCallbackHandler": "langchain_community.callbacks.sagemaker_callback",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
|