langchain-core 0.3.76__tar.gz → 0.3.81__tar.gz
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_core-0.3.76 → langchain_core-0.3.81}/PKG-INFO +8 -18
- {langchain_core-0.3.76 → langchain_core-0.3.81}/README.md +0 -10
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_api/beta_decorator.py +6 -5
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_api/deprecation.py +11 -11
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/base.py +17 -11
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/manager.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/usage.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/chat_history.py +26 -16
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/document_loaders/langsmith.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/indexing/api.py +31 -31
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/chat_models.py +4 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/fake_chat_models.py +5 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/llms.py +3 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/load/__init__.py +10 -2
- langchain_core-0.3.81/langchain_core/load/_validation.py +176 -0
- langchain_core-0.3.81/langchain_core/load/dump.py +120 -0
- langchain_core-0.3.81/langchain_core/load/load.py +674 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/load/mapping.py +12 -19
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/load/serializable.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/ai.py +22 -10
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/base.py +30 -16
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/chat.py +4 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/function.py +9 -5
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/human.py +11 -4
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/modifier.py +1 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/system.py +9 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/tool.py +27 -16
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/utils.py +97 -83
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/chat_generation.py +10 -6
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompt_values.py +6 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/chat.py +6 -3
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/few_shot.py +4 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/string.py +104 -14
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/base.py +14 -13
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/graph.py +4 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/graph_ascii.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/graph_mermaid.py +27 -10
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/history.py +4 -4
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/retry.py +35 -18
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/stores.py +6 -6
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/base.py +7 -5
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/convert.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/simple.py +1 -5
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/structured.py +0 -10
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/event_stream.py +13 -15
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/log_stream.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/aiter.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/function_calling.py +13 -8
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/iter.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/json.py +7 -1
- langchain_core-0.3.81/langchain_core/utils/json_schema.py +238 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/mustache.py +24 -9
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/pydantic.py +6 -5
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/utils.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/vectorstores/in_memory.py +7 -7
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/version.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/pyproject.toml +29 -30
- langchain_core-0.3.81/tests/unit_tests/callbacks/test_sync_callback_manager.py +43 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/test_indexing.py +347 -59
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/chat_models/test_base.py +54 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/llms/test_base.py +45 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/load/test_imports.py +8 -1
- langchain_core-0.3.81/tests/unit_tests/load/test_secret_injection.py +431 -0
- langchain_core-0.3.81/tests/unit_tests/load/test_serializable.py +893 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/messages/test_ai.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/messages/test_utils.py +73 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_json.py +13 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/__snapshots__/test_chat.ambr +28 -34
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_chat.py +162 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_dict.py +1 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_few_shot.py +0 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_image.py +2 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_pipeline_prompt.py +21 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_prompt.py +1 -2
- langchain_core-0.3.81/tests/unit_tests/prompts/test_string.py +32 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_structured.py +0 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/__snapshots__/test_graph.ambr +82 -64
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/__snapshots__/test_runnable.ambr +112 -136
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_graph.py +120 -7
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_runnable.py +52 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/stubs.py +5 -4
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_imports.py +10 -2
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_messages.py +9 -3
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_pydantic_imports.py +5 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_tools.py +6 -1
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_function_calling.py +42 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_json_schema.py +382 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_strings.py +32 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/vectorstores/test_in_memory.py +4 -4
- langchain_core-0.3.76/langchain_core/load/dump.py +0 -85
- langchain_core-0.3.76/langchain_core/load/load.py +0 -280
- langchain_core-0.3.76/langchain_core/utils/json_schema.py +0 -132
- langchain_core-0.3.76/tests/unit_tests/callbacks/test_sync_callback_manager.py +0 -15
- langchain_core-0.3.76/tests/unit_tests/load/test_serializable.py +0 -367
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_api/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_api/internal.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_api/path.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/_import_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/agents.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/beta/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/beta/runnables/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/beta/runnables/context.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/caches.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/file.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/stdout.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/callbacks/streaming_stdout.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/chat_loaders.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/chat_sessions.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/document_loaders/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/document_loaders/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/document_loaders/blob_loaders.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/documents/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/documents/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/documents/compressor.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/documents/transformers.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/embeddings/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/embeddings/embeddings.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/embeddings/fake.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/env.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/example_selectors/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/example_selectors/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/example_selectors/length_based.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/example_selectors/semantic_similarity.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/exceptions.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/globals.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/indexing/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/indexing/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/indexing/in_memory.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/fake.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/memory.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/messages/content_blocks.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/format_instructions.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/json.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/list.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/openai_functions.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/openai_tools.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/pydantic.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/string.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/transform.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/output_parsers/xml.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/chat_result.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/generation.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/llm_result.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/outputs/run_info.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/dict.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/few_shot_with_templates.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/image.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/loading.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/message.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/pipeline.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/prompt.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/prompts/structured.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/py.typed +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/pydantic_v1/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/pydantic_v1/dataclasses.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/pydantic_v1/main.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/rate_limiters.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/retrievers.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/branch.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/config.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/configurable.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/fallbacks.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/graph_png.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/passthrough.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/router.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/schema.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/runnables/utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/structured_query.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/sys_info.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/render.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tools/retriever.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/_streaming.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/context.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/core.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/evaluation.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/langchain.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/langchain_v1.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/memory_stream.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/root_listeners.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/run_collector.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/schemas.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/tracers/stdout.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/_merge.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/env.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/formatting.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/html.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/image.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/input.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/interactive_env.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/loading.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/strings.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/utils/usage.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/vectorstores/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/vectorstores/base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/vectorstores/utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/benchmarks/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/benchmarks/test_async_callbacks.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/benchmarks/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/integration_tests/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/integration_tests/test_compile.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/_api/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/_api/test_beta_decorator.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/_api/test_deprecation.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/_api/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/_api/test_path.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/caches/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/caches/test_in_memory_cache.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/callbacks/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/callbacks/test_async_callback_manager.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/callbacks/test_dispatch_custom_event.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/callbacks/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/callbacks/test_usage_callback.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/chat_history/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/chat_history/test_chat_history.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/conftest.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/data/prompt_file.txt +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/data/prompts/prompt_extra_args.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/data/prompts/prompt_missing_args.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/data/prompts/simple_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/dependencies/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/dependencies/test_dependencies.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/document_loaders/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/document_loaders/test_base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/document_loaders/test_langsmith.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/documents/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/documents/test_document.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/documents/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/documents/test_str.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/embeddings/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/embeddings/test_deterministic_embedding.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/example_selectors/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/example_selectors/test_base.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/example_selectors/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/example_selectors/test_length_based_example_selector.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/example_selectors/test_similarity.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/example-non-utf8.csv +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/example-non-utf8.txt +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/example-utf8.csv +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/example-utf8.txt +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/example_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/examples.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/examples.yaml +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/few_shot_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/few_shot_prompt.yaml +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/few_shot_prompt_example_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/few_shot_prompt_examples_in.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/few_shot_prompt_yaml_examples.yaml +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/jinja_injection_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/jinja_injection_prompt.yaml +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/prompt_with_output_parser.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/simple_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/simple_prompt.yaml +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/simple_prompt_with_template_file.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/examples/simple_template.txt +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/fake/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/fake/callbacks.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/fake/test_fake_chat_model.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/test_hashed_document.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/test_in_memory_indexer.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/test_in_memory_record_manager.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/indexing/test_public_api.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/chat_models/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/chat_models/test_benchmark.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/chat_models/test_cache.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/chat_models/test_rate_limiting.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/llms/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/llms/test_cache.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/language_models/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/load/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/messages/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/messages/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_base_parsers.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_list_parser.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_openai_functions.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_openai_tools.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_pydantic_parser.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/output_parsers/test_xml_parser.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/outputs/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/outputs/test_chat_generation.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/outputs/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompt_file.txt +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/__snapshots__/test_prompt.ambr +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/prompt_extra_args.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/prompt_missing_args.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/simple_prompt.json +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_few_shot_with_templates.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_loading.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/prompts/test_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/pydantic_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/rate_limiters/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/rate_limiters/test_in_memory_rate_limiter.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/__snapshots__/test_fallbacks.ambr +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_concurrency.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_config.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_configurable.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_context.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_fallbacks.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_history.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_runnable_events_v1.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_runnable_events_v2.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_tracing_interops.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/runnables/test_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/stores/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/stores/test_in_memory.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_globals.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_outputs.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_prompt_values.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_pydantic_serde.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_retrievers.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_setup.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/test_sys_info.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_async_base_tracer.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_base_tracer.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_langchain.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_memory_stream.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_run_collector.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/tracers/test_schemas.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_aiter.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_env.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_html.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_imports.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_iter.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_pydantic.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_rm_titles.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_usage.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/utils/test_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/vectorstores/__init__.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/vectorstores/test_utils.py +0 -0
- {langchain_core-0.3.76 → langchain_core-0.3.81}/tests/unit_tests/vectorstores/test_vectorstore.py +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langchain-core
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.81
|
|
4
4
|
Summary: Building applications with LLMs through composability
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Source Code, https://github.com/langchain-ai/langchain/tree/master/libs/core
|
|
7
7
|
Project-URL: Release Notes, https://github.com/langchain-ai/langchain/releases?q=tag%3A%22langchain-core%3D%3D0%22&expanded=true
|
|
8
8
|
Project-URL: repository, https://github.com/langchain-ai/langchain
|
|
9
|
-
Requires-Python:
|
|
10
|
-
Requires-Dist: langsmith
|
|
9
|
+
Requires-Python: <4.0.0,>=3.9.0
|
|
10
|
+
Requires-Dist: langsmith<1.0.0,>=0.3.45
|
|
11
11
|
Requires-Dist: tenacity!=8.4.0,<10.0.0,>=8.1.0
|
|
12
|
-
Requires-Dist: jsonpatch<2.0,>=1.33
|
|
13
|
-
Requires-Dist: PyYAML
|
|
14
|
-
Requires-Dist: typing-extensions
|
|
15
|
-
Requires-Dist: packaging
|
|
16
|
-
Requires-Dist: pydantic
|
|
12
|
+
Requires-Dist: jsonpatch<2.0.0,>=1.33.0
|
|
13
|
+
Requires-Dist: PyYAML<7.0.0,>=5.3.0
|
|
14
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.7.0
|
|
15
|
+
Requires-Dist: packaging<26.0.0,>=23.2.0
|
|
16
|
+
Requires-Dist: pydantic<3.0.0,>=2.7.4
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
|
|
19
19
|
# 🦜🍎️ LangChain Core
|
|
@@ -45,16 +45,6 @@ The LangChain ecosystem is built on top of `langchain-core`. Some of the benefit
|
|
|
45
45
|
- **Stability**: We are committed to a stable versioning scheme, and will communicate any breaking changes with advance notice and version bumps.
|
|
46
46
|
- **Battle-tested**: Core components have the largest install base in the LLM ecosystem, and are used in production by many companies.
|
|
47
47
|
|
|
48
|
-
## 1️⃣ Core Interface: Runnables
|
|
49
|
-
|
|
50
|
-
The concept of a `Runnable` is central to LangChain Core – it is the interface that most LangChain Core components implement, giving them
|
|
51
|
-
|
|
52
|
-
- A common invocation interface (`invoke()`, `batch()`, `stream()`, etc.)
|
|
53
|
-
- Built-in utilities for retries, fallbacks, schemas and runtime configurability
|
|
54
|
-
- Easy deployment with [LangGraph](https://github.com/langchain-ai/langgraph)
|
|
55
|
-
|
|
56
|
-
For more check out the [`Runnable` docs](https://python.langchain.com/docs/concepts/runnables/). Examples of components that implement the interface include: Chat Models, Tools, Retrievers, and Output Parsers.
|
|
57
|
-
|
|
58
48
|
## 📕 Releases & Versioning
|
|
59
49
|
|
|
60
50
|
As `langchain-core` contains the base abstractions and runtime for the whole LangChain ecosystem, we will communicate any breaking changes with advance notice and version bumps. The exception for this is anything in `langchain_core.beta`. The reason for `langchain_core.beta` is that given the rate of change of the field, being able to move quickly is still a priority, and this module is our attempt to do so.
|
|
@@ -27,16 +27,6 @@ The LangChain ecosystem is built on top of `langchain-core`. Some of the benefit
|
|
|
27
27
|
- **Stability**: We are committed to a stable versioning scheme, and will communicate any breaking changes with advance notice and version bumps.
|
|
28
28
|
- **Battle-tested**: Core components have the largest install base in the LLM ecosystem, and are used in production by many companies.
|
|
29
29
|
|
|
30
|
-
## 1️⃣ Core Interface: Runnables
|
|
31
|
-
|
|
32
|
-
The concept of a `Runnable` is central to LangChain Core – it is the interface that most LangChain Core components implement, giving them
|
|
33
|
-
|
|
34
|
-
- A common invocation interface (`invoke()`, `batch()`, `stream()`, etc.)
|
|
35
|
-
- Built-in utilities for retries, fallbacks, schemas and runtime configurability
|
|
36
|
-
- Easy deployment with [LangGraph](https://github.com/langchain-ai/langgraph)
|
|
37
|
-
|
|
38
|
-
For more check out the [`Runnable` docs](https://python.langchain.com/docs/concepts/runnables/). Examples of components that implement the interface include: Chat Models, Tools, Retrievers, and Output Parsers.
|
|
39
|
-
|
|
40
30
|
## 📕 Releases & Versioning
|
|
41
31
|
|
|
42
32
|
As `langchain-core` contains the base abstractions and runtime for the whole LangChain ecosystem, we will communicate any breaking changes with advance notice and version bumps. The exception for this is anything in `langchain_core.beta`. The reason for `langchain_core.beta` is that given the rate of change of the field, being able to move quickly is still a priority, and this module is our attempt to do so.
|
|
@@ -174,6 +174,7 @@ def beta(
|
|
|
174
174
|
def finalize(_wrapper: Callable[..., Any], new_doc: str) -> Any:
|
|
175
175
|
"""Finalize the property."""
|
|
176
176
|
return property(fget=_fget, fset=_fset, fdel=_fdel, doc=new_doc)
|
|
177
|
+
|
|
177
178
|
else:
|
|
178
179
|
_name = _name or obj.__qualname__
|
|
179
180
|
if not _obj_type:
|
|
@@ -226,17 +227,17 @@ def warn_beta(
|
|
|
226
227
|
) -> None:
|
|
227
228
|
"""Display a standardized beta annotation.
|
|
228
229
|
|
|
229
|
-
|
|
230
|
-
message
|
|
230
|
+
Args:
|
|
231
|
+
message:
|
|
231
232
|
Override the default beta message. The
|
|
232
233
|
%(name)s, %(obj_type)s, %(addendum)s
|
|
233
234
|
format specifiers will be replaced by the
|
|
234
235
|
values of the respective arguments passed to this function.
|
|
235
|
-
name
|
|
236
|
+
name:
|
|
236
237
|
The name of the annotated object.
|
|
237
|
-
obj_type
|
|
238
|
+
obj_type:
|
|
238
239
|
The object type being annotated.
|
|
239
|
-
addendum
|
|
240
|
+
addendum:
|
|
240
241
|
Additional text appended directly to the final message.
|
|
241
242
|
"""
|
|
242
243
|
if not message:
|
|
@@ -431,35 +431,35 @@ def warn_deprecated(
|
|
|
431
431
|
) -> None:
|
|
432
432
|
"""Display a standardized deprecation.
|
|
433
433
|
|
|
434
|
-
|
|
435
|
-
since
|
|
434
|
+
Args:
|
|
435
|
+
since:
|
|
436
436
|
The release at which this API became deprecated.
|
|
437
|
-
message
|
|
437
|
+
message:
|
|
438
438
|
Override the default deprecation message. The %(since)s,
|
|
439
439
|
%(name)s, %(alternative)s, %(obj_type)s, %(addendum)s,
|
|
440
440
|
and %(removal)s format specifiers will be replaced by the
|
|
441
441
|
values of the respective arguments passed to this function.
|
|
442
|
-
name
|
|
442
|
+
name:
|
|
443
443
|
The name of the deprecated object.
|
|
444
|
-
alternative
|
|
444
|
+
alternative:
|
|
445
445
|
An alternative API that the user may use in place of the
|
|
446
446
|
deprecated API. The deprecation warning will tell the user
|
|
447
447
|
about this alternative if provided.
|
|
448
|
-
alternative_import:
|
|
448
|
+
alternative_import:
|
|
449
449
|
An alternative import that the user may use instead.
|
|
450
|
-
pending
|
|
450
|
+
pending:
|
|
451
451
|
If True, uses a PendingDeprecationWarning instead of a
|
|
452
452
|
DeprecationWarning. Cannot be used together with removal.
|
|
453
|
-
obj_type
|
|
453
|
+
obj_type:
|
|
454
454
|
The object type being deprecated.
|
|
455
|
-
addendum
|
|
455
|
+
addendum:
|
|
456
456
|
Additional text appended directly to the final message.
|
|
457
|
-
removal
|
|
457
|
+
removal:
|
|
458
458
|
The expected removal version. With the default (an empty
|
|
459
459
|
string), a removal version is automatically computed from
|
|
460
460
|
since. Set to other Falsy values to not schedule a removal
|
|
461
461
|
date. Cannot be used together with pending.
|
|
462
|
-
package:
|
|
462
|
+
package:
|
|
463
463
|
The package of the deprecated object.
|
|
464
464
|
"""
|
|
465
465
|
if not pending:
|
|
@@ -71,7 +71,9 @@ class LLMManagerMixin:
|
|
|
71
71
|
parent_run_id: Optional[UUID] = None,
|
|
72
72
|
**kwargs: Any,
|
|
73
73
|
) -> Any:
|
|
74
|
-
"""Run on new
|
|
74
|
+
"""Run on new output token. Only available when streaming is enabled.
|
|
75
|
+
|
|
76
|
+
For both chat models and non-chat models (legacy LLMs).
|
|
75
77
|
|
|
76
78
|
Args:
|
|
77
79
|
token (str): The new token.
|
|
@@ -243,7 +245,7 @@ class CallbackManagerMixin:
|
|
|
243
245
|
) -> Any:
|
|
244
246
|
"""Run when LLM starts running.
|
|
245
247
|
|
|
246
|
-
..
|
|
248
|
+
.. warning::
|
|
247
249
|
This method is called for non-chat models (regular LLMs). If you're
|
|
248
250
|
implementing a handler for a chat model, you should use
|
|
249
251
|
``on_chat_model_start`` instead.
|
|
@@ -271,8 +273,9 @@ class CallbackManagerMixin:
|
|
|
271
273
|
) -> Any:
|
|
272
274
|
"""Run when a chat model starts running.
|
|
273
275
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
+
.. warning::
|
|
277
|
+
This method is called for chat models. If you're implementing a handler for
|
|
278
|
+
a non-chat model, you should use ``on_llm_start`` instead.
|
|
276
279
|
|
|
277
280
|
Args:
|
|
278
281
|
serialized (dict[str, Any]): The serialized chat model.
|
|
@@ -489,9 +492,9 @@ class AsyncCallbackHandler(BaseCallbackHandler):
|
|
|
489
492
|
metadata: Optional[dict[str, Any]] = None,
|
|
490
493
|
**kwargs: Any,
|
|
491
494
|
) -> None:
|
|
492
|
-
"""Run when
|
|
495
|
+
"""Run when the model starts running.
|
|
493
496
|
|
|
494
|
-
..
|
|
497
|
+
.. warning::
|
|
495
498
|
This method is called for non-chat models (regular LLMs). If you're
|
|
496
499
|
implementing a handler for a chat model, you should use
|
|
497
500
|
``on_chat_model_start`` instead.
|
|
@@ -519,8 +522,9 @@ class AsyncCallbackHandler(BaseCallbackHandler):
|
|
|
519
522
|
) -> Any:
|
|
520
523
|
"""Run when a chat model starts running.
|
|
521
524
|
|
|
522
|
-
|
|
523
|
-
|
|
525
|
+
.. warning::
|
|
526
|
+
This method is called for chat models. If you're implementing a handler for
|
|
527
|
+
a non-chat model, you should use ``on_llm_start`` instead.
|
|
524
528
|
|
|
525
529
|
Args:
|
|
526
530
|
serialized (dict[str, Any]): The serialized chat model.
|
|
@@ -546,7 +550,9 @@ class AsyncCallbackHandler(BaseCallbackHandler):
|
|
|
546
550
|
tags: Optional[list[str]] = None,
|
|
547
551
|
**kwargs: Any,
|
|
548
552
|
) -> None:
|
|
549
|
-
"""Run on new
|
|
553
|
+
"""Run on new output token. Only available when streaming is enabled.
|
|
554
|
+
|
|
555
|
+
For both chat models and non-chat models (legacy LLMs).
|
|
550
556
|
|
|
551
557
|
Args:
|
|
552
558
|
token (str): The new token.
|
|
@@ -567,7 +573,7 @@ class AsyncCallbackHandler(BaseCallbackHandler):
|
|
|
567
573
|
tags: Optional[list[str]] = None,
|
|
568
574
|
**kwargs: Any,
|
|
569
575
|
) -> None:
|
|
570
|
-
"""Run when
|
|
576
|
+
"""Run when the model ends running.
|
|
571
577
|
|
|
572
578
|
Args:
|
|
573
579
|
response (LLMResult): The response which was generated.
|
|
@@ -867,7 +873,7 @@ class AsyncCallbackHandler(BaseCallbackHandler):
|
|
|
867
873
|
metadata: Optional[dict[str, Any]] = None,
|
|
868
874
|
**kwargs: Any,
|
|
869
875
|
) -> None:
|
|
870
|
-
"""Override to define a handler for
|
|
876
|
+
"""Override to define a handler for custom events.
|
|
871
877
|
|
|
872
878
|
Args:
|
|
873
879
|
name: The name of the custom event.
|
|
@@ -92,7 +92,7 @@ def trace_as_chain_group(
|
|
|
92
92
|
metadata (dict[str, Any], optional): The metadata to apply to all runs.
|
|
93
93
|
Defaults to None.
|
|
94
94
|
|
|
95
|
-
.. note
|
|
95
|
+
.. note::
|
|
96
96
|
Must have ``LANGCHAIN_TRACING_V2`` env var set to true to see the trace in
|
|
97
97
|
LangSmith.
|
|
98
98
|
|
|
@@ -179,7 +179,7 @@ async def atrace_as_chain_group(
|
|
|
179
179
|
Yields:
|
|
180
180
|
The async callback manager for the chain group.
|
|
181
181
|
|
|
182
|
-
.. note
|
|
182
|
+
.. note::
|
|
183
183
|
Must have ``LANGCHAIN_TRACING_V2`` env var set to true to see the trace in
|
|
184
184
|
LangSmith.
|
|
185
185
|
|
|
@@ -32,7 +32,7 @@ class UsageMetadataCallbackHandler(BaseCallbackHandler):
|
|
|
32
32
|
result_2 = llm_2.invoke("Hello", config={"callbacks": [callback]})
|
|
33
33
|
callback.usage_metadata
|
|
34
34
|
|
|
35
|
-
.. code-block::
|
|
35
|
+
.. code-block::
|
|
36
36
|
|
|
37
37
|
{'gpt-4o-mini-2024-07-18': {'input_tokens': 8,
|
|
38
38
|
'output_tokens': 10,
|
|
@@ -119,7 +119,7 @@ def get_usage_metadata_callback(
|
|
|
119
119
|
llm_2.invoke("Hello")
|
|
120
120
|
print(cb.usage_metadata)
|
|
121
121
|
|
|
122
|
-
.. code-block::
|
|
122
|
+
.. code-block::
|
|
123
123
|
|
|
124
124
|
{'gpt-4o-mini-2024-07-18': {'input_tokens': 8,
|
|
125
125
|
'output_tokens': 10,
|
|
@@ -65,33 +65,43 @@ class BaseChatMessageHistory(ABC):
|
|
|
65
65
|
|
|
66
66
|
.. code-block:: python
|
|
67
67
|
|
|
68
|
+
import json
|
|
69
|
+
import os
|
|
70
|
+
from langchain_core.messages import messages_from_dict, message_to_dict
|
|
71
|
+
|
|
72
|
+
|
|
68
73
|
class FileChatMessageHistory(BaseChatMessageHistory):
|
|
69
74
|
storage_path: str
|
|
70
75
|
session_id: str
|
|
71
76
|
|
|
72
77
|
@property
|
|
73
|
-
def messages(self):
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
def messages(self) -> list[BaseMessage]:
|
|
79
|
+
try:
|
|
80
|
+
with open(
|
|
81
|
+
os.path.join(self.storage_path, self.session_id),
|
|
82
|
+
"r",
|
|
83
|
+
encoding="utf-8",
|
|
84
|
+
) as f:
|
|
85
|
+
messages_data = json.load(f)
|
|
86
|
+
return messages_from_dict(messages_data)
|
|
87
|
+
except FileNotFoundError:
|
|
88
|
+
return []
|
|
81
89
|
|
|
82
90
|
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
|
|
83
91
|
all_messages = list(self.messages) # Existing messages
|
|
84
92
|
all_messages.extend(messages) # Add new messages
|
|
85
93
|
|
|
86
94
|
serialized = [message_to_dict(message) for message in all_messages]
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
with open(
|
|
90
|
-
json.dump(
|
|
91
|
-
|
|
92
|
-
def clear(self):
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
file_path = os.path.join(self.storage_path, self.session_id)
|
|
96
|
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
97
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
98
|
+
json.dump(serialized, f)
|
|
99
|
+
|
|
100
|
+
def clear(self) -> None:
|
|
101
|
+
file_path = os.path.join(self.storage_path, self.session_id)
|
|
102
|
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
103
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
104
|
+
json.dump([], f)
|
|
95
105
|
|
|
96
106
|
"""
|
|
97
107
|
|
|
@@ -56,7 +56,7 @@ def _warn_about_sha1() -> None:
|
|
|
56
56
|
"that map to the same fingerprint. If this matters in your "
|
|
57
57
|
"threat model, switch to a stronger algorithm such "
|
|
58
58
|
"as 'blake2b', 'sha256', or 'sha512' by specifying "
|
|
59
|
-
" `key_encoder` parameter in the
|
|
59
|
+
" `key_encoder` parameter in the `index` or `aindex` function. ",
|
|
60
60
|
category=UserWarning,
|
|
61
61
|
stacklevel=2,
|
|
62
62
|
)
|
|
@@ -296,7 +296,11 @@ def index(
|
|
|
296
296
|
For the time being, documents are indexed using their hashes, and users
|
|
297
297
|
are not able to specify the uid of the document.
|
|
298
298
|
|
|
299
|
-
|
|
299
|
+
.. versionchanged:: 0.3.25
|
|
300
|
+
Added ``scoped_full`` cleanup mode.
|
|
301
|
+
|
|
302
|
+
.. important::
|
|
303
|
+
|
|
300
304
|
* In full mode, the loader should be returning
|
|
301
305
|
the entire dataset, and not just a subset of the dataset.
|
|
302
306
|
Otherwise, the auto_cleanup will remove documents that it is not
|
|
@@ -309,7 +313,7 @@ def index(
|
|
|
309
313
|
chunks, and we index them using a batch size of 5, we'll have 3 batches
|
|
310
314
|
all with the same source id. In general, to avoid doing too much
|
|
311
315
|
redundant work select as big a batch size as possible.
|
|
312
|
-
* The
|
|
316
|
+
* The ``scoped_full`` mode is suitable if determining an appropriate batch size
|
|
313
317
|
is challenging or if your data loader cannot return the entire dataset at
|
|
314
318
|
once. This mode keeps track of source IDs in memory, which should be fine
|
|
315
319
|
for most use cases. If your dataset is large (10M+ docs), you will likely
|
|
@@ -378,10 +382,6 @@ def index(
|
|
|
378
382
|
TypeError: If ``vectorstore`` is not a VectorStore or a DocumentIndex.
|
|
379
383
|
AssertionError: If ``source_id`` is None when cleanup mode is incremental.
|
|
380
384
|
(should be unreachable code).
|
|
381
|
-
|
|
382
|
-
.. version_modified:: 0.3.25
|
|
383
|
-
|
|
384
|
-
* Added `scoped_full` cleanup mode.
|
|
385
385
|
"""
|
|
386
386
|
# Behavior is deprecated, but we keep it for backwards compatibility.
|
|
387
387
|
# # Warn only once per process.
|
|
@@ -636,26 +636,30 @@ async def aindex(
|
|
|
636
636
|
documents were deleted, which documents should be skipped.
|
|
637
637
|
|
|
638
638
|
For the time being, documents are indexed using their hashes, and users
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
639
|
+
are not able to specify the uid of the document.
|
|
640
|
+
|
|
641
|
+
.. versionchanged:: 0.3.25
|
|
642
|
+
Added ``scoped_full`` cleanup mode.
|
|
643
|
+
|
|
644
|
+
.. important::
|
|
645
|
+
|
|
646
|
+
* In full mode, the loader should be returning
|
|
647
|
+
the entire dataset, and not just a subset of the dataset.
|
|
648
|
+
Otherwise, the auto_cleanup will remove documents that it is not
|
|
649
|
+
supposed to.
|
|
650
|
+
* In incremental mode, if documents associated with a particular
|
|
651
|
+
source id appear across different batches, the indexing API
|
|
652
|
+
will do some redundant work. This will still result in the
|
|
653
|
+
correct end state of the index, but will unfortunately not be
|
|
654
|
+
100% efficient. For example, if a given document is split into 15
|
|
655
|
+
chunks, and we index them using a batch size of 5, we'll have 3 batches
|
|
656
|
+
all with the same source id. In general, to avoid doing too much
|
|
657
|
+
redundant work select as big a batch size as possible.
|
|
658
|
+
* The ``scoped_full`` mode is suitable if determining an appropriate batch size
|
|
659
|
+
is challenging or if your data loader cannot return the entire dataset at
|
|
660
|
+
once. This mode keeps track of source IDs in memory, which should be fine
|
|
661
|
+
for most use cases. If your dataset is large (10M+ docs), you will likely
|
|
662
|
+
need to parallelize the indexing process regardless.
|
|
659
663
|
|
|
660
664
|
Args:
|
|
661
665
|
docs_source: Data loader or iterable of documents to index.
|
|
@@ -720,10 +724,6 @@ async def aindex(
|
|
|
720
724
|
TypeError: If ``vector_store`` is not a VectorStore or DocumentIndex.
|
|
721
725
|
AssertionError: If ``source_id_key`` is None when cleanup mode is
|
|
722
726
|
incremental or ``scoped_full`` (should be unreachable).
|
|
723
|
-
|
|
724
|
-
.. version_modified:: 0.3.25
|
|
725
|
-
|
|
726
|
-
* Added `scoped_full` cleanup mode.
|
|
727
727
|
"""
|
|
728
728
|
# Behavior is deprecated, but we keep it for backwards compatibility.
|
|
729
729
|
# # Warn only once per process.
|
{langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/chat_models.py
RENAMED
|
@@ -471,7 +471,7 @@ class BaseChatModel(BaseLanguageModel[BaseMessage], ABC):
|
|
|
471
471
|
**kwargs: Any,
|
|
472
472
|
) -> Iterator[BaseMessageChunk]:
|
|
473
473
|
if not self._should_stream(async_api=False, **{**kwargs, "stream": True}):
|
|
474
|
-
#
|
|
474
|
+
# Model doesn't implement streaming, so use default implementation
|
|
475
475
|
yield cast(
|
|
476
476
|
"BaseMessageChunk",
|
|
477
477
|
self.invoke(input, config=config, stop=stop, **kwargs),
|
|
@@ -720,7 +720,9 @@ class BaseChatModel(BaseLanguageModel[BaseMessage], ABC):
|
|
|
720
720
|
ls_params["ls_stop"] = stop
|
|
721
721
|
|
|
722
722
|
# model
|
|
723
|
-
if
|
|
723
|
+
if "model" in kwargs and isinstance(kwargs["model"], str):
|
|
724
|
+
ls_params["ls_model_name"] = kwargs["model"]
|
|
725
|
+
elif hasattr(self, "model") and isinstance(self.model, str):
|
|
724
726
|
ls_params["ls_model_name"] = self.model
|
|
725
727
|
elif hasattr(self, "model_name") and isinstance(self.model_name, str):
|
|
726
728
|
ls_params["ls_model_name"] = self.model_name
|
{langchain_core-0.3.76 → langchain_core-0.3.81}/langchain_core/language_models/fake_chat_models.py
RENAMED
|
@@ -19,7 +19,7 @@ from langchain_core.runnables import RunnableConfig
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class FakeMessagesListChatModel(BaseChatModel):
|
|
22
|
-
"""Fake ChatModel for testing purposes."""
|
|
22
|
+
"""Fake ``ChatModel`` for testing purposes."""
|
|
23
23
|
|
|
24
24
|
responses: list[BaseMessage]
|
|
25
25
|
"""List of responses to **cycle** through in order."""
|
|
@@ -212,10 +212,11 @@ class GenericFakeChatModel(BaseChatModel):
|
|
|
212
212
|
"""Generic fake chat model that can be used to test the chat model interface.
|
|
213
213
|
|
|
214
214
|
* Chat model should be usable in both sync and async tests
|
|
215
|
-
* Invokes on_llm_new_token to allow for testing of callback related code for new
|
|
215
|
+
* Invokes ``on_llm_new_token`` to allow for testing of callback related code for new
|
|
216
216
|
tokens.
|
|
217
217
|
* Includes logic to break messages into message chunk to facilitate testing of
|
|
218
218
|
streaming.
|
|
219
|
+
|
|
219
220
|
"""
|
|
220
221
|
|
|
221
222
|
messages: Iterator[Union[AIMessage, str]]
|
|
@@ -230,6 +231,7 @@ class GenericFakeChatModel(BaseChatModel):
|
|
|
230
231
|
.. warning::
|
|
231
232
|
Streaming is not implemented yet. We should try to implement it in the future by
|
|
232
233
|
delegating to invoke and then breaking the resulting output into message chunks.
|
|
234
|
+
|
|
233
235
|
"""
|
|
234
236
|
|
|
235
237
|
@override
|
|
@@ -351,6 +353,7 @@ class ParrotFakeChatModel(BaseChatModel):
|
|
|
351
353
|
"""Generic fake chat model that can be used to test the chat model interface.
|
|
352
354
|
|
|
353
355
|
* Chat model should be usable in both sync and async tests
|
|
356
|
+
|
|
354
357
|
"""
|
|
355
358
|
|
|
356
359
|
@override
|
|
@@ -357,7 +357,9 @@ class BaseLLM(BaseLanguageModel[str], ABC):
|
|
|
357
357
|
ls_params["ls_stop"] = stop
|
|
358
358
|
|
|
359
359
|
# model
|
|
360
|
-
if
|
|
360
|
+
if "model" in kwargs and isinstance(kwargs["model"], str):
|
|
361
|
+
ls_params["ls_model_name"] = kwargs["model"]
|
|
362
|
+
elif hasattr(self, "model") and isinstance(self.model, str):
|
|
361
363
|
ls_params["ls_model_name"] = self.model
|
|
362
364
|
elif hasattr(self, "model_name") and isinstance(self.model_name, str):
|
|
363
365
|
ls_params["ls_model_name"] = self.model_name
|
|
@@ -6,7 +6,7 @@ from langchain_core._import_utils import import_attr
|
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
8
|
from langchain_core.load.dump import dumpd, dumps
|
|
9
|
-
from langchain_core.load.load import loads
|
|
9
|
+
from langchain_core.load.load import InitValidator, loads
|
|
10
10
|
from langchain_core.load.serializable import Serializable
|
|
11
11
|
|
|
12
12
|
# Unfortunately, we have to eagerly import load from langchain_core/load/load.py
|
|
@@ -15,11 +15,19 @@ if TYPE_CHECKING:
|
|
|
15
15
|
# the `from langchain_core.load.load import load` absolute import should also work.
|
|
16
16
|
from langchain_core.load.load import load
|
|
17
17
|
|
|
18
|
-
__all__ = (
|
|
18
|
+
__all__ = (
|
|
19
|
+
"InitValidator",
|
|
20
|
+
"Serializable",
|
|
21
|
+
"dumpd",
|
|
22
|
+
"dumps",
|
|
23
|
+
"load",
|
|
24
|
+
"loads",
|
|
25
|
+
)
|
|
19
26
|
|
|
20
27
|
_dynamic_imports = {
|
|
21
28
|
"dumpd": "dump",
|
|
22
29
|
"dumps": "dump",
|
|
30
|
+
"InitValidator": "load",
|
|
23
31
|
"loads": "load",
|
|
24
32
|
"Serializable": "serializable",
|
|
25
33
|
}
|