langchain 0.3.26__py3-none-any.whl → 0.3.27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of langchain might be problematic. Click here for more details.
- langchain/__init__.py +110 -96
- langchain/_api/__init__.py +2 -2
- langchain/_api/deprecation.py +3 -3
- langchain/_api/module_import.py +51 -46
- langchain/_api/path.py +1 -1
- langchain/adapters/openai.py +8 -8
- langchain/agents/__init__.py +15 -12
- langchain/agents/agent.py +160 -133
- langchain/agents/agent_iterator.py +31 -14
- langchain/agents/agent_toolkits/__init__.py +7 -6
- langchain/agents/agent_toolkits/ainetwork/toolkit.py +1 -1
- langchain/agents/agent_toolkits/amadeus/toolkit.py +1 -1
- langchain/agents/agent_toolkits/azure_cognitive_services.py +1 -1
- langchain/agents/agent_toolkits/clickup/toolkit.py +1 -1
- langchain/agents/agent_toolkits/conversational_retrieval/openai_functions.py +6 -4
- langchain/agents/agent_toolkits/csv/__init__.py +4 -2
- langchain/agents/agent_toolkits/file_management/__init__.py +1 -1
- langchain/agents/agent_toolkits/file_management/toolkit.py +1 -1
- langchain/agents/agent_toolkits/github/toolkit.py +9 -9
- langchain/agents/agent_toolkits/gitlab/toolkit.py +1 -1
- langchain/agents/agent_toolkits/json/base.py +1 -1
- langchain/agents/agent_toolkits/multion/toolkit.py +1 -1
- langchain/agents/agent_toolkits/office365/toolkit.py +1 -1
- langchain/agents/agent_toolkits/openapi/base.py +1 -1
- langchain/agents/agent_toolkits/openapi/planner.py +2 -2
- langchain/agents/agent_toolkits/openapi/planner_prompt.py +10 -10
- langchain/agents/agent_toolkits/openapi/prompt.py +1 -1
- langchain/agents/agent_toolkits/openapi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/pandas/__init__.py +4 -2
- langchain/agents/agent_toolkits/playwright/__init__.py +1 -1
- langchain/agents/agent_toolkits/playwright/toolkit.py +1 -1
- langchain/agents/agent_toolkits/powerbi/base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/chat_base.py +1 -1
- langchain/agents/agent_toolkits/powerbi/prompt.py +2 -2
- langchain/agents/agent_toolkits/powerbi/toolkit.py +1 -1
- langchain/agents/agent_toolkits/python/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark/__init__.py +4 -2
- langchain/agents/agent_toolkits/spark_sql/base.py +1 -1
- langchain/agents/agent_toolkits/spark_sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/sql/prompt.py +1 -1
- langchain/agents/agent_toolkits/sql/toolkit.py +1 -1
- langchain/agents/agent_toolkits/vectorstore/base.py +2 -2
- langchain/agents/agent_toolkits/vectorstore/prompt.py +2 -4
- langchain/agents/agent_toolkits/vectorstore/toolkit.py +12 -11
- langchain/agents/agent_toolkits/xorbits/__init__.py +4 -2
- langchain/agents/agent_toolkits/zapier/toolkit.py +1 -1
- langchain/agents/agent_types.py +6 -6
- langchain/agents/chat/base.py +6 -12
- langchain/agents/chat/output_parser.py +9 -6
- langchain/agents/chat/prompt.py +3 -4
- langchain/agents/conversational/base.py +9 -5
- langchain/agents/conversational/output_parser.py +4 -2
- langchain/agents/conversational/prompt.py +2 -3
- langchain/agents/conversational_chat/base.py +7 -5
- langchain/agents/conversational_chat/output_parser.py +9 -11
- langchain/agents/conversational_chat/prompt.py +5 -6
- langchain/agents/format_scratchpad/__init__.py +3 -3
- langchain/agents/format_scratchpad/log_to_messages.py +1 -1
- langchain/agents/format_scratchpad/openai_functions.py +8 -6
- langchain/agents/format_scratchpad/tools.py +5 -3
- langchain/agents/format_scratchpad/xml.py +33 -2
- langchain/agents/initialize.py +16 -8
- langchain/agents/json_chat/base.py +18 -18
- langchain/agents/json_chat/prompt.py +2 -3
- langchain/agents/load_tools.py +2 -1
- langchain/agents/loading.py +28 -18
- langchain/agents/mrkl/base.py +9 -4
- langchain/agents/mrkl/output_parser.py +17 -13
- langchain/agents/mrkl/prompt.py +1 -2
- langchain/agents/openai_assistant/base.py +80 -70
- langchain/agents/openai_functions_agent/base.py +46 -37
- langchain/agents/openai_functions_multi_agent/base.py +39 -26
- langchain/agents/openai_tools/base.py +8 -8
- langchain/agents/output_parsers/__init__.py +3 -3
- langchain/agents/output_parsers/json.py +6 -6
- langchain/agents/output_parsers/openai_functions.py +15 -7
- langchain/agents/output_parsers/openai_tools.py +9 -4
- langchain/agents/output_parsers/react_json_single_input.py +10 -5
- langchain/agents/output_parsers/react_single_input.py +15 -11
- langchain/agents/output_parsers/self_ask.py +3 -2
- langchain/agents/output_parsers/tools.py +18 -13
- langchain/agents/output_parsers/xml.py +99 -28
- langchain/agents/react/agent.py +4 -4
- langchain/agents/react/base.py +22 -17
- langchain/agents/react/output_parser.py +5 -6
- langchain/agents/react/textworld_prompt.py +0 -1
- langchain/agents/react/wiki_prompt.py +14 -15
- langchain/agents/schema.py +3 -2
- langchain/agents/self_ask_with_search/base.py +19 -15
- langchain/agents/self_ask_with_search/prompt.py +0 -1
- langchain/agents/structured_chat/base.py +14 -11
- langchain/agents/structured_chat/output_parser.py +16 -18
- langchain/agents/structured_chat/prompt.py +3 -4
- langchain/agents/tool_calling_agent/base.py +7 -6
- langchain/agents/tools.py +2 -2
- langchain/agents/utils.py +2 -3
- langchain/agents/xml/base.py +5 -5
- langchain/agents/xml/prompt.py +1 -2
- langchain/cache.py +12 -12
- langchain/callbacks/__init__.py +11 -11
- langchain/callbacks/aim_callback.py +2 -2
- langchain/callbacks/argilla_callback.py +1 -1
- langchain/callbacks/arize_callback.py +1 -1
- langchain/callbacks/arthur_callback.py +1 -1
- langchain/callbacks/base.py +7 -7
- langchain/callbacks/clearml_callback.py +1 -1
- langchain/callbacks/comet_ml_callback.py +1 -1
- langchain/callbacks/confident_callback.py +1 -1
- langchain/callbacks/context_callback.py +1 -1
- langchain/callbacks/flyte_callback.py +1 -1
- langchain/callbacks/human.py +2 -2
- langchain/callbacks/infino_callback.py +1 -1
- langchain/callbacks/labelstudio_callback.py +1 -1
- langchain/callbacks/llmonitor_callback.py +1 -1
- langchain/callbacks/manager.py +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 +4 -1
- langchain/callbacks/streaming_aiter_final_only.py +5 -3
- langchain/callbacks/streaming_stdout_final_only.py +5 -3
- langchain/callbacks/streamlit/__init__.py +3 -2
- langchain/callbacks/streamlit/mutable_expander.py +1 -1
- langchain/callbacks/streamlit/streamlit_callback_handler.py +3 -3
- langchain/callbacks/tracers/__init__.py +1 -1
- langchain/callbacks/tracers/comet.py +1 -1
- langchain/callbacks/tracers/evaluation.py +1 -1
- langchain/callbacks/tracers/log_stream.py +1 -1
- langchain/callbacks/tracers/logging.py +1 -1
- langchain/callbacks/tracers/stdout.py +1 -1
- langchain/callbacks/trubrics_callback.py +1 -1
- langchain/callbacks/utils.py +4 -4
- langchain/callbacks/wandb_callback.py +1 -1
- langchain/callbacks/whylabs_callback.py +1 -1
- langchain/chains/api/base.py +36 -22
- langchain/chains/api/news_docs.py +1 -2
- langchain/chains/api/open_meteo_docs.py +1 -2
- langchain/chains/api/openapi/requests_chain.py +1 -1
- langchain/chains/api/openapi/response_chain.py +1 -1
- langchain/chains/api/podcast_docs.py +1 -2
- langchain/chains/api/prompt.py +1 -2
- langchain/chains/api/tmdb_docs.py +1 -2
- langchain/chains/base.py +88 -54
- langchain/chains/chat_vector_db/prompts.py +2 -3
- langchain/chains/combine_documents/__init__.py +1 -1
- langchain/chains/combine_documents/base.py +23 -10
- langchain/chains/combine_documents/map_reduce.py +38 -30
- langchain/chains/combine_documents/map_rerank.py +33 -20
- langchain/chains/combine_documents/reduce.py +47 -26
- langchain/chains/combine_documents/refine.py +26 -17
- langchain/chains/combine_documents/stuff.py +19 -12
- langchain/chains/constitutional_ai/base.py +4 -4
- langchain/chains/constitutional_ai/principles.py +22 -25
- langchain/chains/constitutional_ai/prompts.py +25 -28
- langchain/chains/conversation/base.py +5 -3
- langchain/chains/conversation/memory.py +5 -5
- langchain/chains/conversation/prompt.py +5 -5
- langchain/chains/conversational_retrieval/base.py +41 -20
- langchain/chains/conversational_retrieval/prompts.py +2 -3
- langchain/chains/elasticsearch_database/base.py +8 -9
- langchain/chains/elasticsearch_database/prompts.py +2 -3
- langchain/chains/ernie_functions/__init__.py +2 -2
- langchain/chains/example_generator.py +3 -1
- langchain/chains/flare/base.py +26 -12
- langchain/chains/graph_qa/cypher.py +2 -2
- langchain/chains/graph_qa/falkordb.py +1 -1
- langchain/chains/graph_qa/gremlin.py +1 -1
- langchain/chains/graph_qa/neptune_sparql.py +1 -1
- langchain/chains/graph_qa/prompts.py +2 -2
- langchain/chains/history_aware_retriever.py +2 -1
- langchain/chains/hyde/base.py +6 -5
- langchain/chains/hyde/prompts.py +5 -6
- langchain/chains/llm.py +77 -61
- langchain/chains/llm_bash/__init__.py +2 -1
- langchain/chains/llm_checker/base.py +7 -5
- langchain/chains/llm_checker/prompt.py +3 -4
- langchain/chains/llm_math/base.py +16 -9
- langchain/chains/llm_math/prompt.py +1 -2
- langchain/chains/llm_summarization_checker/base.py +9 -6
- langchain/chains/llm_symbolic_math/__init__.py +2 -1
- langchain/chains/loading.py +151 -95
- langchain/chains/mapreduce.py +4 -3
- langchain/chains/moderation.py +8 -9
- langchain/chains/natbot/base.py +8 -8
- langchain/chains/natbot/crawler.py +73 -76
- langchain/chains/natbot/prompt.py +2 -3
- langchain/chains/openai_functions/__init__.py +7 -7
- langchain/chains/openai_functions/base.py +13 -10
- langchain/chains/openai_functions/citation_fuzzy_match.py +12 -11
- langchain/chains/openai_functions/extraction.py +19 -19
- langchain/chains/openai_functions/openapi.py +35 -35
- langchain/chains/openai_functions/qa_with_structure.py +19 -12
- langchain/chains/openai_functions/tagging.py +2 -4
- langchain/chains/openai_tools/extraction.py +7 -8
- langchain/chains/qa_generation/base.py +4 -3
- langchain/chains/qa_generation/prompt.py +5 -5
- langchain/chains/qa_with_sources/base.py +14 -6
- langchain/chains/qa_with_sources/loading.py +16 -8
- langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
- langchain/chains/qa_with_sources/refine_prompts.py +0 -1
- langchain/chains/qa_with_sources/retrieval.py +14 -5
- langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
- langchain/chains/qa_with_sources/vector_db.py +17 -6
- langchain/chains/query_constructor/base.py +34 -33
- langchain/chains/query_constructor/ir.py +4 -4
- langchain/chains/query_constructor/parser.py +37 -32
- langchain/chains/query_constructor/prompt.py +5 -6
- langchain/chains/question_answering/chain.py +21 -10
- langchain/chains/question_answering/map_reduce_prompt.py +14 -14
- langchain/chains/question_answering/map_rerank_prompt.py +3 -3
- langchain/chains/question_answering/refine_prompts.py +2 -5
- langchain/chains/question_answering/stuff_prompt.py +5 -5
- langchain/chains/retrieval.py +1 -3
- langchain/chains/retrieval_qa/base.py +34 -27
- langchain/chains/retrieval_qa/prompt.py +1 -2
- langchain/chains/router/__init__.py +3 -3
- langchain/chains/router/base.py +24 -20
- langchain/chains/router/embedding_router.py +12 -8
- langchain/chains/router/llm_router.py +17 -16
- langchain/chains/router/multi_prompt.py +2 -2
- langchain/chains/router/multi_retrieval_qa.py +10 -5
- langchain/chains/sequential.py +30 -18
- langchain/chains/sql_database/prompt.py +14 -16
- langchain/chains/sql_database/query.py +6 -5
- langchain/chains/structured_output/__init__.py +1 -1
- langchain/chains/structured_output/base.py +75 -67
- langchain/chains/summarize/chain.py +11 -5
- langchain/chains/summarize/map_reduce_prompt.py +0 -1
- langchain/chains/summarize/stuff_prompt.py +0 -1
- langchain/chains/transform.py +5 -6
- langchain/chat_loaders/facebook_messenger.py +1 -1
- langchain/chat_loaders/langsmith.py +1 -1
- langchain/chat_loaders/utils.py +3 -3
- langchain/chat_models/__init__.py +20 -19
- langchain/chat_models/anthropic.py +1 -1
- langchain/chat_models/azureml_endpoint.py +1 -1
- langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
- langchain/chat_models/base.py +160 -123
- langchain/chat_models/bedrock.py +1 -1
- langchain/chat_models/fake.py +1 -1
- langchain/chat_models/meta.py +1 -1
- langchain/chat_models/pai_eas_endpoint.py +1 -1
- langchain/chat_models/promptlayer_openai.py +1 -1
- langchain/chat_models/volcengine_maas.py +1 -1
- langchain/docstore/base.py +1 -1
- langchain/document_loaders/__init__.py +9 -9
- langchain/document_loaders/airbyte.py +3 -3
- langchain/document_loaders/assemblyai.py +1 -1
- langchain/document_loaders/azure_blob_storage_container.py +1 -1
- langchain/document_loaders/azure_blob_storage_file.py +1 -1
- langchain/document_loaders/baiducloud_bos_file.py +1 -1
- langchain/document_loaders/base.py +1 -1
- langchain/document_loaders/blob_loaders/__init__.py +1 -1
- langchain/document_loaders/blockchain.py +1 -1
- langchain/document_loaders/chatgpt.py +1 -1
- langchain/document_loaders/college_confidential.py +1 -1
- langchain/document_loaders/confluence.py +1 -1
- langchain/document_loaders/email.py +1 -1
- langchain/document_loaders/facebook_chat.py +1 -1
- langchain/document_loaders/markdown.py +1 -1
- langchain/document_loaders/notebook.py +1 -1
- langchain/document_loaders/org_mode.py +1 -1
- langchain/document_loaders/parsers/__init__.py +1 -1
- langchain/document_loaders/parsers/docai.py +1 -1
- langchain/document_loaders/parsers/generic.py +1 -1
- langchain/document_loaders/parsers/html/__init__.py +1 -1
- langchain/document_loaders/parsers/html/bs4.py +1 -1
- langchain/document_loaders/parsers/language/cobol.py +1 -1
- langchain/document_loaders/parsers/language/python.py +1 -1
- langchain/document_loaders/parsers/msword.py +1 -1
- langchain/document_loaders/parsers/pdf.py +5 -5
- langchain/document_loaders/parsers/registry.py +1 -1
- langchain/document_loaders/pdf.py +8 -8
- langchain/document_loaders/powerpoint.py +1 -1
- langchain/document_loaders/pyspark_dataframe.py +1 -1
- langchain/document_loaders/telegram.py +2 -2
- langchain/document_loaders/tencent_cos_directory.py +1 -1
- langchain/document_loaders/unstructured.py +5 -5
- langchain/document_loaders/url_playwright.py +1 -1
- langchain/document_loaders/whatsapp_chat.py +1 -1
- langchain/document_loaders/youtube.py +2 -2
- langchain/document_transformers/__init__.py +3 -3
- langchain/document_transformers/beautiful_soup_transformer.py +1 -1
- langchain/document_transformers/doctran_text_extract.py +1 -1
- langchain/document_transformers/doctran_text_qa.py +1 -1
- langchain/document_transformers/doctran_text_translate.py +1 -1
- langchain/document_transformers/embeddings_redundant_filter.py +3 -3
- langchain/document_transformers/google_translate.py +1 -1
- langchain/document_transformers/html2text.py +1 -1
- langchain/document_transformers/nuclia_text_transform.py +1 -1
- langchain/embeddings/__init__.py +5 -5
- langchain/embeddings/base.py +33 -24
- langchain/embeddings/cache.py +36 -31
- 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 +23 -23
- langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
- langchain/evaluation/comparison/__init__.py +1 -1
- langchain/evaluation/comparison/eval_chain.py +20 -13
- langchain/evaluation/comparison/prompt.py +1 -2
- langchain/evaluation/criteria/__init__.py +1 -1
- langchain/evaluation/criteria/eval_chain.py +20 -11
- langchain/evaluation/criteria/prompt.py +2 -3
- langchain/evaluation/embedding_distance/base.py +23 -20
- langchain/evaluation/loading.py +15 -11
- langchain/evaluation/parsing/base.py +4 -1
- langchain/evaluation/parsing/json_distance.py +5 -2
- langchain/evaluation/parsing/json_schema.py +12 -8
- langchain/evaluation/qa/__init__.py +1 -1
- langchain/evaluation/qa/eval_chain.py +12 -5
- langchain/evaluation/qa/eval_prompt.py +7 -8
- langchain/evaluation/qa/generate_chain.py +2 -1
- langchain/evaluation/qa/generate_prompt.py +2 -4
- langchain/evaluation/schema.py +38 -30
- langchain/evaluation/scoring/__init__.py +1 -1
- langchain/evaluation/scoring/eval_chain.py +22 -15
- langchain/evaluation/scoring/prompt.py +0 -1
- langchain/evaluation/string_distance/base.py +14 -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 +9 -7
- langchain/memory/chat_memory.py +14 -8
- langchain/memory/chat_message_histories/__init__.py +1 -1
- langchain/memory/chat_message_histories/astradb.py +1 -1
- langchain/memory/chat_message_histories/cassandra.py +1 -1
- langchain/memory/chat_message_histories/cosmos_db.py +1 -1
- langchain/memory/chat_message_histories/dynamodb.py +1 -1
- langchain/memory/chat_message_histories/elasticsearch.py +1 -1
- langchain/memory/chat_message_histories/file.py +1 -1
- langchain/memory/chat_message_histories/firestore.py +1 -1
- langchain/memory/chat_message_histories/momento.py +1 -1
- langchain/memory/chat_message_histories/mongodb.py +1 -1
- langchain/memory/chat_message_histories/neo4j.py +1 -1
- langchain/memory/chat_message_histories/postgres.py +1 -1
- langchain/memory/chat_message_histories/redis.py +1 -1
- langchain/memory/chat_message_histories/rocksetdb.py +1 -1
- langchain/memory/chat_message_histories/singlestoredb.py +1 -1
- langchain/memory/chat_message_histories/streamlit.py +1 -1
- langchain/memory/chat_message_histories/upstash_redis.py +1 -1
- langchain/memory/chat_message_histories/xata.py +1 -1
- langchain/memory/chat_message_histories/zep.py +1 -1
- langchain/memory/combined.py +13 -12
- langchain/memory/entity.py +84 -61
- langchain/memory/prompt.py +10 -11
- langchain/memory/readonly.py +0 -2
- langchain/memory/simple.py +1 -3
- langchain/memory/summary.py +13 -11
- langchain/memory/summary_buffer.py +17 -8
- langchain/memory/utils.py +3 -2
- langchain/memory/vectorstore.py +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 +10 -5
- langchain/output_parsers/datetime.py +32 -31
- langchain/output_parsers/enum.py +5 -3
- langchain/output_parsers/fix.py +52 -52
- langchain/output_parsers/format_instructions.py +6 -8
- langchain/output_parsers/json.py +2 -2
- langchain/output_parsers/list.py +2 -2
- langchain/output_parsers/loading.py +9 -9
- langchain/output_parsers/openai_functions.py +3 -3
- langchain/output_parsers/openai_tools.py +1 -1
- langchain/output_parsers/pandas_dataframe.py +43 -47
- langchain/output_parsers/prompts.py +1 -2
- langchain/output_parsers/rail_parser.py +1 -1
- langchain/output_parsers/regex.py +7 -8
- langchain/output_parsers/regex_dict.py +7 -10
- langchain/output_parsers/retry.py +77 -78
- langchain/output_parsers/structured.py +11 -6
- langchain/output_parsers/yaml.py +15 -11
- langchain/prompts/__init__.py +5 -3
- langchain/prompts/base.py +5 -5
- langchain/prompts/chat.py +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/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 +2 -2
- 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 +15 -15
- langchain/retrievers/document_compressors/embeddings_filter.py +21 -17
- langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
- langchain/retrievers/document_compressors/listwise_rerank.py +7 -5
- langchain/retrievers/ensemble.py +28 -25
- langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
- langchain/retrievers/google_vertex_ai_search.py +2 -2
- langchain/retrievers/kendra.py +10 -10
- langchain/retrievers/llama_index.py +1 -1
- langchain/retrievers/merger_retriever.py +11 -11
- langchain/retrievers/milvus.py +1 -1
- langchain/retrievers/multi_query.py +32 -26
- langchain/retrievers/multi_vector.py +20 -8
- langchain/retrievers/parent_document_retriever.py +18 -9
- langchain/retrievers/re_phraser.py +6 -5
- langchain/retrievers/self_query/base.py +138 -127
- langchain/retrievers/time_weighted_retriever.py +18 -7
- langchain/retrievers/zilliz.py +1 -1
- langchain/runnables/openai_functions.py +6 -2
- langchain/schema/__init__.py +23 -23
- langchain/schema/cache.py +1 -1
- langchain/schema/callbacks/base.py +7 -7
- langchain/schema/callbacks/manager.py +19 -19
- langchain/schema/callbacks/tracers/base.py +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 +1 -1
- langchain/smith/evaluation/__init__.py +2 -2
- langchain/smith/evaluation/config.py +10 -7
- langchain/smith/evaluation/name_generation.py +3 -3
- langchain/smith/evaluation/progress.py +11 -2
- langchain/smith/evaluation/runner_utils.py +179 -127
- langchain/smith/evaluation/string_run_evaluator.py +75 -68
- langchain/storage/__init__.py +2 -2
- langchain/storage/_lc_store.py +4 -2
- langchain/storage/encoder_backed.py +6 -2
- langchain/storage/file_system.py +19 -16
- langchain/storage/in_memory.py +1 -1
- langchain/storage/upstash_redis.py +1 -1
- langchain/text_splitter.py +15 -15
- langchain/tools/__init__.py +28 -26
- langchain/tools/ainetwork/app.py +1 -1
- langchain/tools/ainetwork/base.py +1 -1
- langchain/tools/ainetwork/owner.py +1 -1
- langchain/tools/ainetwork/rule.py +1 -1
- langchain/tools/ainetwork/transfer.py +1 -1
- langchain/tools/ainetwork/value.py +1 -1
- langchain/tools/amadeus/closest_airport.py +1 -1
- langchain/tools/amadeus/flight_search.py +1 -1
- langchain/tools/azure_cognitive_services/__init__.py +1 -1
- langchain/tools/base.py +4 -4
- langchain/tools/bearly/tool.py +1 -1
- langchain/tools/bing_search/__init__.py +1 -1
- langchain/tools/bing_search/tool.py +1 -1
- langchain/tools/dataforseo_api_search/__init__.py +1 -1
- langchain/tools/dataforseo_api_search/tool.py +1 -1
- langchain/tools/ddg_search/tool.py +1 -1
- langchain/tools/e2b_data_analysis/tool.py +2 -2
- langchain/tools/edenai/__init__.py +1 -1
- langchain/tools/file_management/__init__.py +1 -1
- langchain/tools/file_management/copy.py +1 -1
- langchain/tools/file_management/delete.py +1 -1
- langchain/tools/gmail/__init__.py +2 -2
- langchain/tools/gmail/get_message.py +1 -1
- langchain/tools/gmail/search.py +1 -1
- langchain/tools/gmail/send_message.py +1 -1
- langchain/tools/google_finance/__init__.py +1 -1
- langchain/tools/google_finance/tool.py +1 -1
- langchain/tools/google_scholar/__init__.py +1 -1
- langchain/tools/google_scholar/tool.py +1 -1
- langchain/tools/google_search/__init__.py +1 -1
- langchain/tools/google_search/tool.py +1 -1
- langchain/tools/google_serper/__init__.py +1 -1
- langchain/tools/google_serper/tool.py +1 -1
- langchain/tools/google_trends/__init__.py +1 -1
- langchain/tools/google_trends/tool.py +1 -1
- langchain/tools/jira/tool.py +20 -1
- langchain/tools/json/tool.py +25 -3
- langchain/tools/memorize/tool.py +1 -1
- langchain/tools/multion/__init__.py +1 -1
- langchain/tools/multion/update_session.py +1 -1
- langchain/tools/office365/__init__.py +2 -2
- langchain/tools/office365/events_search.py +1 -1
- langchain/tools/office365/messages_search.py +1 -1
- langchain/tools/office365/send_event.py +1 -1
- langchain/tools/office365/send_message.py +1 -1
- langchain/tools/openapi/utils/api_models.py +6 -6
- langchain/tools/playwright/__init__.py +5 -5
- langchain/tools/playwright/click.py +1 -1
- langchain/tools/playwright/extract_hyperlinks.py +1 -1
- langchain/tools/playwright/get_elements.py +1 -1
- langchain/tools/playwright/navigate.py +1 -1
- langchain/tools/plugin.py +2 -2
- langchain/tools/powerbi/tool.py +1 -1
- langchain/tools/python/__init__.py +2 -1
- langchain/tools/reddit_search/tool.py +1 -1
- langchain/tools/render.py +2 -2
- langchain/tools/requests/tool.py +2 -2
- langchain/tools/searchapi/tool.py +1 -1
- langchain/tools/searx_search/tool.py +1 -1
- langchain/tools/slack/get_message.py +1 -1
- langchain/tools/spark_sql/tool.py +1 -1
- langchain/tools/sql_database/tool.py +1 -1
- langchain/tools/tavily_search/__init__.py +1 -1
- langchain/tools/tavily_search/tool.py +1 -1
- langchain/tools/zapier/__init__.py +1 -1
- langchain/tools/zapier/tool.py +24 -2
- langchain/utilities/__init__.py +4 -4
- langchain/utilities/arcee.py +4 -4
- langchain/utilities/clickup.py +4 -4
- langchain/utilities/dalle_image_generator.py +1 -1
- langchain/utilities/dataforseo_api_search.py +1 -1
- langchain/utilities/opaqueprompts.py +1 -1
- langchain/utilities/reddit_search.py +1 -1
- langchain/utilities/sql_database.py +1 -1
- langchain/utilities/tavily_search.py +1 -1
- langchain/utilities/vertexai.py +2 -2
- langchain/utils/__init__.py +1 -1
- langchain/utils/aiter.py +1 -1
- langchain/utils/html.py +3 -3
- langchain/utils/input.py +1 -1
- langchain/utils/iter.py +1 -1
- langchain/utils/json_schema.py +1 -3
- langchain/utils/strings.py +1 -1
- langchain/utils/utils.py +6 -6
- langchain/vectorstores/__init__.py +5 -5
- langchain/vectorstores/alibabacloud_opensearch.py +1 -1
- langchain/vectorstores/azure_cosmos_db.py +1 -1
- langchain/vectorstores/clickhouse.py +1 -1
- langchain/vectorstores/elastic_vector_search.py +1 -1
- langchain/vectorstores/elasticsearch.py +2 -2
- langchain/vectorstores/myscale.py +1 -1
- langchain/vectorstores/neo4j_vector.py +1 -1
- langchain/vectorstores/pgembedding.py +1 -1
- langchain/vectorstores/qdrant.py +1 -1
- langchain/vectorstores/redis/__init__.py +1 -1
- langchain/vectorstores/redis/base.py +1 -1
- langchain/vectorstores/redis/filters.py +4 -4
- langchain/vectorstores/redis/schema.py +6 -6
- langchain/vectorstores/sklearn.py +2 -2
- langchain/vectorstores/starrocks.py +1 -1
- langchain/vectorstores/utils.py +1 -1
- {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/METADATA +4 -4
- {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/RECORD +580 -580
- {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/WHEEL +1 -1
- {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/entry_points.txt +0 -0
- {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/licenses/LICENSE +0 -0
|
@@ -47,18 +47,18 @@ from pydantic import BaseModel
|
|
|
47
47
|
"""
|
|
48
48
|
from pydantic import BaseModel, Field
|
|
49
49
|
from langchain_anthropic import ChatAnthropic
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
class Joke(BaseModel):
|
|
52
52
|
setup: str = Field(description="The setup of the joke")
|
|
53
|
-
punchline: str = Field(description="The punchline to the joke")
|
|
54
|
-
|
|
53
|
+
punchline: str = Field(description="The punchline to the joke")
|
|
54
|
+
|
|
55
55
|
# Or any other chat model that supports tools.
|
|
56
56
|
# Please reference to to the documentation of structured_output
|
|
57
|
-
# to see an up to date list of which models support
|
|
57
|
+
# to see an up to date list of which models support
|
|
58
58
|
# with_structured_output.
|
|
59
59
|
model = ChatAnthropic(model="claude-3-opus-20240229", temperature=0)
|
|
60
60
|
structured_llm = model.with_structured_output(Joke)
|
|
61
|
-
structured_llm.invoke("Tell me a joke about cats.
|
|
61
|
+
structured_llm.invoke("Tell me a joke about cats.
|
|
62
62
|
Make sure to call the Joke function.")
|
|
63
63
|
"""
|
|
64
64
|
),
|
|
@@ -134,7 +134,8 @@ def create_openai_fn_runnable(
|
|
|
134
134
|
# -> RecordDog(name="Harry", color="brown", fav_food="chicken")
|
|
135
135
|
""" # noqa: E501
|
|
136
136
|
if not functions:
|
|
137
|
-
|
|
137
|
+
msg = "Need to pass in at least one function. Received zero."
|
|
138
|
+
raise ValueError(msg)
|
|
138
139
|
openai_functions = [convert_to_openai_function(f) for f in functions]
|
|
139
140
|
llm_kwargs_: dict[str, Any] = {"functions": openai_functions, **llm_kwargs}
|
|
140
141
|
if len(openai_functions) == 1 and enforce_single_function_usage:
|
|
@@ -142,8 +143,7 @@ def create_openai_fn_runnable(
|
|
|
142
143
|
output_parser = output_parser or get_openai_output_parser(functions)
|
|
143
144
|
if prompt:
|
|
144
145
|
return prompt | llm.bind(**llm_kwargs_) | output_parser
|
|
145
|
-
|
|
146
|
-
return llm.bind(**llm_kwargs_) | output_parser
|
|
146
|
+
return llm.bind(**llm_kwargs_) | output_parser
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
@deprecated(
|
|
@@ -168,15 +168,15 @@ def create_openai_fn_runnable(
|
|
|
168
168
|
|
|
169
169
|
class Joke(BaseModel):
|
|
170
170
|
setup: str = Field(description="The setup of the joke")
|
|
171
|
-
punchline: str = Field(description="The punchline to the joke")
|
|
171
|
+
punchline: str = Field(description="The punchline to the joke")
|
|
172
172
|
|
|
173
173
|
# Or any other chat model that supports tools.
|
|
174
174
|
# Please reference to to the documentation of structured_output
|
|
175
|
-
# to see an up to date list of which models support
|
|
175
|
+
# to see an up to date list of which models support
|
|
176
176
|
# with_structured_output.
|
|
177
177
|
model = ChatAnthropic(model="claude-3-opus-20240229", temperature=0)
|
|
178
178
|
structured_llm = model.with_structured_output(Joke)
|
|
179
|
-
structured_llm.invoke("Tell me a joke about cats.
|
|
179
|
+
structured_llm.invoke("Tell me a joke about cats.
|
|
180
180
|
Make sure to call the Joke function.")
|
|
181
181
|
"""
|
|
182
182
|
),
|
|
@@ -190,7 +190,9 @@ def create_structured_output_runnable(
|
|
|
190
190
|
enforce_function_usage: bool = True,
|
|
191
191
|
return_single: bool = True,
|
|
192
192
|
mode: Literal[
|
|
193
|
-
"openai-functions",
|
|
193
|
+
"openai-functions",
|
|
194
|
+
"openai-tools",
|
|
195
|
+
"openai-json",
|
|
194
196
|
] = "openai-functions",
|
|
195
197
|
**kwargs: Any,
|
|
196
198
|
) -> Runnable:
|
|
@@ -201,39 +203,39 @@ def create_structured_output_runnable(
|
|
|
201
203
|
is passed in, it's assumed to already be a valid JsonSchema.
|
|
202
204
|
For best results, pydantic.BaseModels should have docstrings describing what
|
|
203
205
|
the schema represents and descriptions for the parameters.
|
|
204
|
-
llm: Language model to use. Assumed to support the OpenAI function-calling API
|
|
205
|
-
if mode is 'openai-function'. Assumed to support OpenAI response_format
|
|
206
|
+
llm: Language model to use. Assumed to support the OpenAI function-calling API
|
|
207
|
+
if mode is 'openai-function'. Assumed to support OpenAI response_format
|
|
206
208
|
parameter if mode is 'openai-json'.
|
|
207
|
-
prompt: BasePromptTemplate to pass to the model. If mode is 'openai-json' and
|
|
208
|
-
prompt has input variable 'output_schema' then the given output_schema
|
|
209
|
+
prompt: BasePromptTemplate to pass to the model. If mode is 'openai-json' and
|
|
210
|
+
prompt has input variable 'output_schema' then the given output_schema
|
|
209
211
|
will be converted to a JsonSchema and inserted in the prompt.
|
|
210
212
|
output_parser: Output parser to use for parsing model outputs. By default
|
|
211
213
|
will be inferred from the function types. If pydantic.BaseModel is passed
|
|
212
|
-
in, then the OutputParser will try to parse outputs using the pydantic
|
|
214
|
+
in, then the OutputParser will try to parse outputs using the pydantic
|
|
213
215
|
class. Otherwise model outputs will be parsed as JSON.
|
|
214
|
-
mode: How structured outputs are extracted from the model. If 'openai-functions'
|
|
215
|
-
then OpenAI function calling is used with the deprecated 'functions',
|
|
216
|
-
'function_call' schema. If 'openai-tools' then OpenAI function
|
|
217
|
-
calling with the latest 'tools', 'tool_choice' schema is used. This is
|
|
218
|
-
recommended over 'openai-functions'. If 'openai-json' then OpenAI model
|
|
216
|
+
mode: How structured outputs are extracted from the model. If 'openai-functions'
|
|
217
|
+
then OpenAI function calling is used with the deprecated 'functions',
|
|
218
|
+
'function_call' schema. If 'openai-tools' then OpenAI function
|
|
219
|
+
calling with the latest 'tools', 'tool_choice' schema is used. This is
|
|
220
|
+
recommended over 'openai-functions'. If 'openai-json' then OpenAI model
|
|
219
221
|
with response_format set to JSON is used.
|
|
220
|
-
enforce_function_usage: Only applies when mode is 'openai-tools' or
|
|
221
|
-
'openai-functions'. If True, then the model will be forced to use the given
|
|
222
|
-
output schema. If False, then the model can elect whether to use the output
|
|
222
|
+
enforce_function_usage: Only applies when mode is 'openai-tools' or
|
|
223
|
+
'openai-functions'. If True, then the model will be forced to use the given
|
|
224
|
+
output schema. If False, then the model can elect whether to use the output
|
|
223
225
|
schema.
|
|
224
|
-
return_single: Only applies when mode is 'openai-tools'. Whether to a list of
|
|
225
|
-
structured outputs or a single one. If True and model does not return any
|
|
226
|
-
structured outputs then chain output is None. If False and model does not
|
|
226
|
+
return_single: Only applies when mode is 'openai-tools'. Whether to a list of
|
|
227
|
+
structured outputs or a single one. If True and model does not return any
|
|
228
|
+
structured outputs then chain output is None. If False and model does not
|
|
227
229
|
return any structured outputs then chain output is an empty list.
|
|
228
230
|
kwargs: Additional named arguments.
|
|
229
231
|
|
|
230
232
|
Returns:
|
|
231
|
-
A runnable sequence that will return a structured output(s) matching the given
|
|
233
|
+
A runnable sequence that will return a structured output(s) matching the given
|
|
232
234
|
output_schema.
|
|
233
|
-
|
|
235
|
+
|
|
234
236
|
OpenAI tools example with Pydantic schema (mode='openai-tools'):
|
|
235
237
|
.. code-block:: python
|
|
236
|
-
|
|
238
|
+
|
|
237
239
|
from typing import Optional
|
|
238
240
|
|
|
239
241
|
from langchain.chains import create_structured_output_runnable
|
|
@@ -251,23 +253,23 @@ def create_structured_output_runnable(
|
|
|
251
253
|
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
|
|
252
254
|
prompt = ChatPromptTemplate.from_messages(
|
|
253
255
|
[
|
|
254
|
-
("system", "You are an extraction algorithm. Please extract every possible instance"),
|
|
256
|
+
("system", "You are an extraction algorithm. Please extract every possible instance"),
|
|
255
257
|
('human', '{input}')
|
|
256
258
|
]
|
|
257
259
|
)
|
|
258
260
|
structured_llm = create_structured_output_runnable(
|
|
259
|
-
RecordDog,
|
|
260
|
-
llm,
|
|
261
|
-
mode="openai-tools",
|
|
262
|
-
enforce_function_usage=True,
|
|
261
|
+
RecordDog,
|
|
262
|
+
llm,
|
|
263
|
+
mode="openai-tools",
|
|
264
|
+
enforce_function_usage=True,
|
|
263
265
|
return_single=True
|
|
264
266
|
)
|
|
265
267
|
structured_llm.invoke({"input": "Harry was a chubby brown beagle who loved chicken"})
|
|
266
268
|
# -> RecordDog(name="Harry", color="brown", fav_food="chicken")
|
|
267
|
-
|
|
269
|
+
|
|
268
270
|
OpenAI tools example with dict schema (mode="openai-tools"):
|
|
269
271
|
.. code-block:: python
|
|
270
|
-
|
|
272
|
+
|
|
271
273
|
from typing import Optional
|
|
272
274
|
|
|
273
275
|
from langchain.chains import create_structured_output_runnable
|
|
@@ -303,15 +305,15 @@ def create_structured_output_runnable(
|
|
|
303
305
|
|
|
304
306
|
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
|
|
305
307
|
structured_llm = create_structured_output_runnable(
|
|
306
|
-
dog_schema,
|
|
307
|
-
llm,
|
|
308
|
-
mode="openai-tools",
|
|
309
|
-
enforce_function_usage=True,
|
|
308
|
+
dog_schema,
|
|
309
|
+
llm,
|
|
310
|
+
mode="openai-tools",
|
|
311
|
+
enforce_function_usage=True,
|
|
310
312
|
return_single=True
|
|
311
313
|
)
|
|
312
314
|
structured_llm.invoke("Harry was a chubby brown beagle who loved chicken")
|
|
313
315
|
# -> {'name': 'Harry', 'color': 'brown', 'fav_food': 'chicken'}
|
|
314
|
-
|
|
316
|
+
|
|
315
317
|
OpenAI functions example (mode="openai-functions"):
|
|
316
318
|
.. code-block:: python
|
|
317
319
|
|
|
@@ -332,7 +334,7 @@ def create_structured_output_runnable(
|
|
|
332
334
|
structured_llm = create_structured_output_runnable(Dog, llm, mode="openai-functions")
|
|
333
335
|
structured_llm.invoke("Harry was a chubby brown beagle who loved chicken")
|
|
334
336
|
# -> Dog(name="Harry", color="brown", fav_food="chicken")
|
|
335
|
-
|
|
337
|
+
|
|
336
338
|
OpenAI functions with prompt example:
|
|
337
339
|
.. code-block:: python
|
|
338
340
|
|
|
@@ -361,7 +363,7 @@ def create_structured_output_runnable(
|
|
|
361
363
|
# -> Dog(name="Harry", color="brown", fav_food="chicken")
|
|
362
364
|
OpenAI json response format example (mode="openai-json"):
|
|
363
365
|
.. code-block:: python
|
|
364
|
-
|
|
366
|
+
|
|
365
367
|
from typing import Optional
|
|
366
368
|
|
|
367
369
|
from langchain.chains import create_structured_output_runnable
|
|
@@ -379,9 +381,9 @@ def create_structured_output_runnable(
|
|
|
379
381
|
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
|
|
380
382
|
structured_llm = create_structured_output_runnable(Dog, llm, mode="openai-json")
|
|
381
383
|
system = '''You are a world class assistant for extracting information in structured JSON formats. \
|
|
382
|
-
|
|
384
|
+
|
|
383
385
|
Extract a valid JSON blob from the user input that matches the following JSON Schema:
|
|
384
|
-
|
|
386
|
+
|
|
385
387
|
{output_schema}'''
|
|
386
388
|
prompt = ChatPromptTemplate.from_messages(
|
|
387
389
|
[("system", system), ("human", "{input}"),]
|
|
@@ -391,7 +393,8 @@ def create_structured_output_runnable(
|
|
|
391
393
|
""" # noqa: E501
|
|
392
394
|
# for backwards compatibility
|
|
393
395
|
force_function_usage = kwargs.get(
|
|
394
|
-
"enforce_single_function_usage",
|
|
396
|
+
"enforce_single_function_usage",
|
|
397
|
+
enforce_function_usage,
|
|
395
398
|
)
|
|
396
399
|
|
|
397
400
|
if mode == "openai-tools":
|
|
@@ -400,9 +403,8 @@ def create_structured_output_runnable(
|
|
|
400
403
|
# Backwards compatibility keys
|
|
401
404
|
unrecognized_keys = keys_in_kwargs - {"enforce_single_function_usage"}
|
|
402
405
|
if unrecognized_keys:
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
)
|
|
406
|
+
msg = f"Got an unexpected keyword argument(s): {unrecognized_keys}."
|
|
407
|
+
raise TypeError(msg)
|
|
406
408
|
|
|
407
409
|
return _create_openai_tools_runnable(
|
|
408
410
|
output_schema,
|
|
@@ -413,7 +415,7 @@ def create_structured_output_runnable(
|
|
|
413
415
|
first_tool_only=return_single,
|
|
414
416
|
)
|
|
415
417
|
|
|
416
|
-
|
|
418
|
+
if mode == "openai-functions":
|
|
417
419
|
return _create_openai_functions_structured_output_runnable(
|
|
418
420
|
output_schema,
|
|
419
421
|
llm,
|
|
@@ -422,19 +424,24 @@ def create_structured_output_runnable(
|
|
|
422
424
|
enforce_single_function_usage=force_function_usage,
|
|
423
425
|
**kwargs, # llm-specific kwargs
|
|
424
426
|
)
|
|
425
|
-
|
|
427
|
+
if mode == "openai-json":
|
|
426
428
|
if force_function_usage:
|
|
427
|
-
|
|
429
|
+
msg = (
|
|
428
430
|
"enforce_single_function_usage is not supported for mode='openai-json'."
|
|
429
431
|
)
|
|
432
|
+
raise ValueError(msg)
|
|
430
433
|
return _create_openai_json_runnable(
|
|
431
|
-
output_schema,
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
f"'openai-json'."
|
|
434
|
+
output_schema,
|
|
435
|
+
llm,
|
|
436
|
+
prompt=prompt,
|
|
437
|
+
output_parser=output_parser,
|
|
438
|
+
**kwargs,
|
|
437
439
|
)
|
|
440
|
+
msg = (
|
|
441
|
+
f"Invalid mode {mode}. Expected one of 'openai-tools', 'openai-functions', "
|
|
442
|
+
f"'openai-json'."
|
|
443
|
+
)
|
|
444
|
+
raise ValueError(msg)
|
|
438
445
|
|
|
439
446
|
|
|
440
447
|
def _create_openai_tools_runnable(
|
|
@@ -454,12 +461,12 @@ def _create_openai_tools_runnable(
|
|
|
454
461
|
"function": {"name": oai_tool["function"]["name"]},
|
|
455
462
|
}
|
|
456
463
|
output_parser = output_parser or _get_openai_tool_output_parser(
|
|
457
|
-
tool,
|
|
464
|
+
tool,
|
|
465
|
+
first_tool_only=first_tool_only,
|
|
458
466
|
)
|
|
459
467
|
if prompt:
|
|
460
468
|
return prompt | llm.bind(**llm_kwargs) | output_parser
|
|
461
|
-
|
|
462
|
-
return llm.bind(**llm_kwargs) | output_parser
|
|
469
|
+
return llm.bind(**llm_kwargs) | output_parser
|
|
463
470
|
|
|
464
471
|
|
|
465
472
|
def _get_openai_tool_output_parser(
|
|
@@ -474,7 +481,8 @@ def _get_openai_tool_output_parser(
|
|
|
474
481
|
else:
|
|
475
482
|
key_name = convert_to_openai_tool(tool)["function"]["name"]
|
|
476
483
|
output_parser = JsonOutputKeyToolsParser(
|
|
477
|
-
first_tool_only=first_tool_only,
|
|
484
|
+
first_tool_only=first_tool_only,
|
|
485
|
+
key_name=key_name,
|
|
478
486
|
)
|
|
479
487
|
return output_parser
|
|
480
488
|
|
|
@@ -533,8 +541,7 @@ def _create_openai_json_runnable(
|
|
|
533
541
|
prompt = prompt.partial(output_schema=json.dumps(schema_as_dict, indent=2))
|
|
534
542
|
|
|
535
543
|
return prompt | llm | output_parser
|
|
536
|
-
|
|
537
|
-
return llm | output_parser
|
|
544
|
+
return llm | output_parser
|
|
538
545
|
|
|
539
546
|
|
|
540
547
|
def _create_openai_functions_structured_output_runnable(
|
|
@@ -563,7 +570,8 @@ def _create_openai_functions_structured_output_runnable(
|
|
|
563
570
|
|
|
564
571
|
function = _OutputFormatter
|
|
565
572
|
output_parser = output_parser or PydanticAttrOutputFunctionsParser(
|
|
566
|
-
pydantic_schema=_OutputFormatter,
|
|
573
|
+
pydantic_schema=_OutputFormatter,
|
|
574
|
+
attr_name="output",
|
|
567
575
|
)
|
|
568
576
|
return create_openai_fn_runnable(
|
|
569
577
|
[function],
|
|
@@ -20,13 +20,16 @@ class LoadingCallable(Protocol):
|
|
|
20
20
|
"""Interface for loading the combine documents chain."""
|
|
21
21
|
|
|
22
22
|
def __call__(
|
|
23
|
-
self,
|
|
23
|
+
self,
|
|
24
|
+
llm: BaseLanguageModel,
|
|
25
|
+
**kwargs: Any,
|
|
24
26
|
) -> BaseCombineDocumentsChain:
|
|
25
27
|
"""Callable to load the combine documents chain."""
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
def _load_stuff_chain(
|
|
29
31
|
llm: BaseLanguageModel,
|
|
32
|
+
*,
|
|
30
33
|
prompt: BasePromptTemplate = stuff_prompt.PROMPT,
|
|
31
34
|
document_variable_name: str = "text",
|
|
32
35
|
verbose: Optional[bool] = None,
|
|
@@ -44,6 +47,7 @@ def _load_stuff_chain(
|
|
|
44
47
|
|
|
45
48
|
def _load_map_reduce_chain(
|
|
46
49
|
llm: BaseLanguageModel,
|
|
50
|
+
*,
|
|
47
51
|
map_prompt: BasePromptTemplate = map_reduce_prompt.PROMPT,
|
|
48
52
|
combine_prompt: BasePromptTemplate = map_reduce_prompt.PROMPT,
|
|
49
53
|
combine_document_variable_name: str = "text",
|
|
@@ -54,7 +58,6 @@ def _load_map_reduce_chain(
|
|
|
54
58
|
verbose: Optional[bool] = None,
|
|
55
59
|
token_max: int = 3000,
|
|
56
60
|
callbacks: Callbacks = None,
|
|
57
|
-
*,
|
|
58
61
|
collapse_max_retries: Optional[int] = None,
|
|
59
62
|
**kwargs: Any,
|
|
60
63
|
) -> MapReduceDocumentsChain:
|
|
@@ -81,10 +84,11 @@ def _load_map_reduce_chain(
|
|
|
81
84
|
if collapse_prompt is None:
|
|
82
85
|
collapse_chain = None
|
|
83
86
|
if collapse_llm is not None:
|
|
84
|
-
|
|
87
|
+
msg = (
|
|
85
88
|
"collapse_llm provided, but collapse_prompt was not: please "
|
|
86
89
|
"provide one or stop providing collapse_llm."
|
|
87
90
|
)
|
|
91
|
+
raise ValueError(msg)
|
|
88
92
|
else:
|
|
89
93
|
_collapse_llm = collapse_llm or llm
|
|
90
94
|
collapse_chain = StuffDocumentsChain(
|
|
@@ -116,6 +120,7 @@ def _load_map_reduce_chain(
|
|
|
116
120
|
|
|
117
121
|
def _load_refine_chain(
|
|
118
122
|
llm: BaseLanguageModel,
|
|
123
|
+
*,
|
|
119
124
|
question_prompt: BasePromptTemplate = refine_prompts.PROMPT,
|
|
120
125
|
refine_prompt: BasePromptTemplate = refine_prompts.REFINE_PROMPT,
|
|
121
126
|
document_variable_name: str = "text",
|
|
@@ -140,7 +145,7 @@ def _load_refine_chain(
|
|
|
140
145
|
def load_summarize_chain(
|
|
141
146
|
llm: BaseLanguageModel,
|
|
142
147
|
chain_type: str = "stuff",
|
|
143
|
-
verbose: Optional[bool] = None,
|
|
148
|
+
verbose: Optional[bool] = None, # noqa: FBT001
|
|
144
149
|
**kwargs: Any,
|
|
145
150
|
) -> BaseCombineDocumentsChain:
|
|
146
151
|
"""Load summarizing chain.
|
|
@@ -161,8 +166,9 @@ def load_summarize_chain(
|
|
|
161
166
|
"refine": _load_refine_chain,
|
|
162
167
|
}
|
|
163
168
|
if chain_type not in loader_mapping:
|
|
164
|
-
|
|
169
|
+
msg = (
|
|
165
170
|
f"Got unsupported chain type: {chain_type}. "
|
|
166
171
|
f"Should be one of {loader_mapping.keys()}"
|
|
167
172
|
)
|
|
173
|
+
raise ValueError(msg)
|
|
168
174
|
return loader_mapping[chain_type](llm, verbose=verbose, **kwargs)
|
langchain/chains/transform.py
CHANGED
|
@@ -77,9 +77,8 @@ class TransformChain(Chain):
|
|
|
77
77
|
) -> dict[str, Any]:
|
|
78
78
|
if self.atransform_cb is not None:
|
|
79
79
|
return await self.atransform_cb(inputs)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return self.transform_cb(inputs)
|
|
80
|
+
self._log_once(
|
|
81
|
+
"TransformChain's atransform is not provided, falling"
|
|
82
|
+
" back to synchronous transform",
|
|
83
|
+
)
|
|
84
|
+
return self.transform_cb(inputs)
|
langchain/chat_loaders/utils.py
CHANGED
|
@@ -29,8 +29,8 @@ def __getattr__(name: str) -> Any:
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
__all__ = [
|
|
32
|
-
"merge_chat_runs_in_session",
|
|
33
|
-
"merge_chat_runs",
|
|
34
|
-
"map_ai_messages_in_session",
|
|
35
32
|
"map_ai_messages",
|
|
33
|
+
"map_ai_messages_in_session",
|
|
34
|
+
"merge_chat_runs",
|
|
35
|
+
"merge_chat_runs_in_session",
|
|
36
36
|
]
|
|
@@ -36,6 +36,7 @@ def __getattr__(name: str) -> None:
|
|
|
36
36
|
"Please import from langchain-community instead:\n\n"
|
|
37
37
|
f"`from langchain_community.chat_models import {name}`.\n\n"
|
|
38
38
|
"To install langchain-community run `pip install -U langchain-community`.",
|
|
39
|
+
stacklevel=2,
|
|
39
40
|
category=LangChainDeprecationWarning,
|
|
40
41
|
)
|
|
41
42
|
|
|
@@ -43,35 +44,35 @@ def __getattr__(name: str) -> None:
|
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
__all__ = [
|
|
46
|
-
"init_chat_model",
|
|
47
|
-
"ChatOpenAI",
|
|
48
|
-
"BedrockChat",
|
|
49
47
|
"AzureChatOpenAI",
|
|
50
|
-
"
|
|
51
|
-
"PromptLayerChatOpenAI",
|
|
52
|
-
"ChatDatabricks",
|
|
53
|
-
"ChatEverlyAI",
|
|
48
|
+
"BedrockChat",
|
|
54
49
|
"ChatAnthropic",
|
|
50
|
+
"ChatAnyscale",
|
|
51
|
+
"ChatBaichuan",
|
|
55
52
|
"ChatCohere",
|
|
53
|
+
"ChatDatabricks",
|
|
54
|
+
"ChatEverlyAI",
|
|
55
|
+
"ChatFireworks",
|
|
56
56
|
"ChatGooglePalm",
|
|
57
|
-
"
|
|
57
|
+
"ChatHunyuan",
|
|
58
|
+
"ChatJavelinAIGateway",
|
|
59
|
+
"ChatKonko",
|
|
60
|
+
"ChatLiteLLM",
|
|
58
61
|
"ChatMLflowAIGateway",
|
|
62
|
+
"ChatMlflow",
|
|
59
63
|
"ChatOllama",
|
|
64
|
+
"ChatOpenAI",
|
|
60
65
|
"ChatVertexAI",
|
|
61
|
-
"
|
|
66
|
+
"ChatYandexGPT",
|
|
67
|
+
"ErnieBotChat",
|
|
68
|
+
"FakeListChatModel",
|
|
69
|
+
"GigaChat",
|
|
62
70
|
"HumanInputChatModel",
|
|
71
|
+
"JinaChat",
|
|
63
72
|
"MiniMaxChat",
|
|
64
|
-
"ChatAnyscale",
|
|
65
|
-
"ChatLiteLLM",
|
|
66
|
-
"ErnieBotChat",
|
|
67
|
-
"ChatJavelinAIGateway",
|
|
68
|
-
"ChatKonko",
|
|
69
73
|
"PaiEasChatEndpoint",
|
|
74
|
+
"PromptLayerChatOpenAI",
|
|
70
75
|
"QianfanChatEndpoint",
|
|
71
|
-
"ChatFireworks",
|
|
72
|
-
"ChatYandexGPT",
|
|
73
|
-
"ChatBaichuan",
|
|
74
|
-
"ChatHunyuan",
|
|
75
|
-
"GigaChat",
|
|
76
76
|
"VolcEngineMaasChat",
|
|
77
|
+
"init_chat_model",
|
|
77
78
|
]
|
|
@@ -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
|
-
"QianfanChatEndpoint": "langchain_community.chat_models.baidu_qianfan_endpoint"
|
|
14
|
+
"QianfanChatEndpoint": "langchain_community.chat_models.baidu_qianfan_endpoint",
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
|