diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml index 144eb68c09..8b27adcce3 100644 --- a/.devcontainer/docker-compose.yaml +++ b/.devcontainer/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: langchain: build: - dockerfile: dev.Dockerfile + dockerfile: libs/langchain/dev.Dockerfile context: .. volumes: # Update this to wherever you want VS Code to mount the folder of your project diff --git a/.github/actions/poetry_setup/action.yml b/.github/actions/poetry_setup/action.yml index 79e5e963a0..79dff7cc27 100644 --- a/.github/actions/poetry_setup/action.yml +++ b/.github/actions/poetry_setup/action.yml @@ -52,11 +52,13 @@ runs: - name: Check Poetry File shell: bash + working-directory: ${{ inputs.working-directory }} run: | poetry check - name: Check lock file shell: bash + working-directory: ${{ inputs.working-directory }} run: | poetry lock --check diff --git a/.github/workflows/lint.yml b/.github/workflows/_lint.yml similarity index 73% rename from .github/workflows/lint.yml rename to .github/workflows/_lint.yml index c3e4375fc8..7eec66ca31 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/_lint.yml @@ -1,15 +1,21 @@ name: lint on: - push: - branches: [master] - pull_request: + workflow_call: + inputs: + working-directory: + required: true + type: string + description: "From which folder this pipeline executes" env: POETRY_VERSION: "1.4.2" jobs: build: + defaults: + run: + working-directory: ${{ inputs.working-directory }} runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/release.yml b/.github/workflows/_release.yml similarity index 82% rename from .github/workflows/release.yml rename to .github/workflows/_release.yml index 85b387b27b..6c34a11e6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/_release.yml @@ -1,13 +1,12 @@ name: release on: - pull_request: - types: - - closed - branches: - - master - paths: - - 'pyproject.toml' + workflow_call: + inputs: + working-directory: + required: true + type: string + description: "From which folder this pipeline executes" env: POETRY_VERSION: "1.4.2" @@ -18,6 +17,9 @@ jobs: ${{ github.event.pull_request.merged == true }} && ${{ contains(github.event.pull_request.labels.*.name, 'release') }} runs-on: ubuntu-latest + defaults: + run: + working-directory: ${{ inputs.working-directory }} steps: - uses: actions/checkout@v3 - name: Install poetry diff --git a/.github/workflows/test.yml b/.github/workflows/_test.yml similarity index 80% rename from .github/workflows/test.yml rename to .github/workflows/_test.yml index 0636da4e76..84ed301b7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/_test.yml @@ -1,16 +1,21 @@ name: test on: - push: - branches: [master] - pull_request: - workflow_dispatch: + workflow_call: + inputs: + working-directory: + required: true + type: string + description: "From which folder this pipeline executes" env: POETRY_VERSION: "1.4.2" jobs: build: + defaults: + run: + working-directory: ${{ inputs.working-directory }} runs-on: ubuntu-latest strategy: matrix: @@ -29,6 +34,7 @@ jobs: uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} + working-directory: ${{ inputs.working-directory }} poetry-version: "1.4.2" cache-key: ${{ matrix.test_type }} install-command: | diff --git a/.github/workflows/langchain_ci.yml b/.github/workflows/langchain_ci.yml new file mode 100644 index 0000000000..a3bf615757 --- /dev/null +++ b/.github/workflows/langchain_ci.yml @@ -0,0 +1,27 @@ +--- +name: libs/langchain CI + +on: + push: + branches: [ master ] + pull_request: + paths: + - '.github/workflows/_lint.yml' + - '.github/workflows/_test.yml' + - '.github/workflows/langchain_ci.yml' + - 'libs/langchain/**' + workflow_dispatch: # Allows to trigger the workflow manually in GitHub UI + +jobs: + lint: + uses: + ./.github/workflows/_lint.yml + with: + working-directory: libs/langchain + secrets: inherit + test: + uses: + ./.github/workflows/_test.yml + with: + working-directory: libs/langchain + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/langchain_release.yml b/.github/workflows/langchain_release.yml new file mode 100644 index 0000000000..70ebc596f3 --- /dev/null +++ b/.github/workflows/langchain_release.yml @@ -0,0 +1,19 @@ +--- +name: libs/langchain Release + +on: + pull_request: + types: + - closed + branches: + - master + paths: + - 'libs/langchain/pyproject.toml' + +jobs: + release: + uses: + ./.github/workflows/_release.yml + with: + working-directory: libs/langchain + secrets: inherit \ No newline at end of file diff --git a/Makefile b/Makefile index e81add90a8..b24718c37c 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,8 @@ -.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck format lint test tests test_watch integration_tests docker_tests help extended_tests +.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck # Default target executed when no arguments are given to make. all: help -###################### -# TESTING AND COVERAGE -###################### - -# Run unit tests and generate a coverage report. -coverage: - poetry run pytest --cov \ - --cov-config=.coveragerc \ - --cov-report xml \ - --cov-report term-missing:skip-covered ###################### # DOCUMENTATION @@ -41,45 +31,6 @@ api_docs_clean: api_docs_linkcheck: poetry run linkchecker docs/api_reference/_build/html/index.html -# Define a variable for the test file path. -TEST_FILE ?= tests/unit_tests/ - -test: - poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE) - -tests: - poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE) - -extended_tests: - poetry run pytest --disable-socket --allow-unix-socket --only-extended tests/unit_tests - -test_watch: - poetry run ptw --now . -- tests/unit_tests - -integration_tests: - poetry run pytest tests/integration_tests - -docker_tests: - docker build -t my-langchain-image:test . - docker run --rm my-langchain-image:test - -###################### -# LINTING AND FORMATTING -###################### - -# Define a variable for Python and notebook files. -PYTHON_FILES=. -lint format: PYTHON_FILES=. -lint_diff format_diff: PYTHON_FILES=$(shell git diff --name-only --diff-filter=d master | grep -E '\.py$$|\.ipynb$$') - -lint lint_diff: - poetry run mypy $(PYTHON_FILES) - poetry run black $(PYTHON_FILES) --check - poetry run ruff . - -format format_diff: - poetry run black $(PYTHON_FILES) - poetry run ruff --select I --fix $(PYTHON_FILES) spell_check: poetry run codespell --toml pyproject.toml @@ -97,12 +48,3 @@ help: @echo 'docs_build - build the documentation' @echo 'docs_clean - clean the documentation build artifacts' @echo 'docs_linkcheck - run linkchecker on the documentation' - @echo 'format - run code formatters' - @echo 'lint - run linters' - @echo 'test - run unit tests' - @echo 'tests - run unit tests' - @echo 'test TEST_FILE= - run all tests in file' - @echo 'extended_tests - run only extended unit tests' - @echo 'test_watch - run unit tests in watch mode' - @echo 'integration_tests - run integration tests' - @echo 'docker_tests - run unit tests in docker' diff --git a/docs/api_reference/create_api_rst.py b/docs/api_reference/create_api_rst.py index f71dbce967..ef37a514d4 100644 --- a/docs/api_reference/create_api_rst.py +++ b/docs/api_reference/create_api_rst.py @@ -4,7 +4,7 @@ import re from pathlib import Path ROOT_DIR = Path(__file__).parents[2].absolute() -PKG_DIR = ROOT_DIR / "langchain" +PKG_DIR = ROOT_DIR / "libs" / "langchain" WRITE_FILE = Path(__file__).parent / "api_reference.rst" diff --git a/.dockerignore b/libs/langchain/.dockerignore similarity index 100% rename from .dockerignore rename to libs/langchain/.dockerignore diff --git a/.flake8 b/libs/langchain/.flake8 similarity index 100% rename from .flake8 rename to libs/langchain/.flake8 diff --git a/Dockerfile b/libs/langchain/Dockerfile similarity index 100% rename from Dockerfile rename to libs/langchain/Dockerfile diff --git a/libs/langchain/Makefile b/libs/langchain/Makefile new file mode 100644 index 0000000000..e81add90a8 --- /dev/null +++ b/libs/langchain/Makefile @@ -0,0 +1,108 @@ +.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck format lint test tests test_watch integration_tests docker_tests help extended_tests + +# Default target executed when no arguments are given to make. +all: help + +###################### +# TESTING AND COVERAGE +###################### + +# Run unit tests and generate a coverage report. +coverage: + poetry run pytest --cov \ + --cov-config=.coveragerc \ + --cov-report xml \ + --cov-report term-missing:skip-covered + +###################### +# DOCUMENTATION +###################### + +clean: docs_clean api_docs_clean + + +docs_build: + docs/.local_build.sh + +docs_clean: + rm -r docs/_dist + +docs_linkcheck: + poetry run linkchecker docs/_dist/docs_skeleton/ --ignore-url node_modules + +api_docs_build: + poetry run python docs/api_reference/create_api_rst.py + cd docs/api_reference && poetry run make html + +api_docs_clean: + rm -f docs/api_reference/api_reference.rst + cd docs/api_reference && poetry run make clean + +api_docs_linkcheck: + poetry run linkchecker docs/api_reference/_build/html/index.html + +# Define a variable for the test file path. +TEST_FILE ?= tests/unit_tests/ + +test: + poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE) + +tests: + poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE) + +extended_tests: + poetry run pytest --disable-socket --allow-unix-socket --only-extended tests/unit_tests + +test_watch: + poetry run ptw --now . -- tests/unit_tests + +integration_tests: + poetry run pytest tests/integration_tests + +docker_tests: + docker build -t my-langchain-image:test . + docker run --rm my-langchain-image:test + +###################### +# LINTING AND FORMATTING +###################### + +# Define a variable for Python and notebook files. +PYTHON_FILES=. +lint format: PYTHON_FILES=. +lint_diff format_diff: PYTHON_FILES=$(shell git diff --name-only --diff-filter=d master | grep -E '\.py$$|\.ipynb$$') + +lint lint_diff: + poetry run mypy $(PYTHON_FILES) + poetry run black $(PYTHON_FILES) --check + poetry run ruff . + +format format_diff: + poetry run black $(PYTHON_FILES) + poetry run ruff --select I --fix $(PYTHON_FILES) + +spell_check: + poetry run codespell --toml pyproject.toml + +spell_fix: + poetry run codespell --toml pyproject.toml -w + +###################### +# HELP +###################### + +help: + @echo '----' + @echo 'coverage - run unit tests and generate coverage report' + @echo 'docs_build - build the documentation' + @echo 'docs_clean - clean the documentation build artifacts' + @echo 'docs_linkcheck - run linkchecker on the documentation' + @echo 'format - run code formatters' + @echo 'lint - run linters' + @echo 'test - run unit tests' + @echo 'tests - run unit tests' + @echo 'test TEST_FILE= - run all tests in file' + @echo 'extended_tests - run only extended unit tests' + @echo 'test_watch - run unit tests in watch mode' + @echo 'integration_tests - run integration tests' + @echo 'docker_tests - run unit tests in docker' diff --git a/libs/langchain/README.md b/libs/langchain/README.md new file mode 100644 index 0000000000..3874101826 --- /dev/null +++ b/libs/langchain/README.md @@ -0,0 +1,95 @@ +# 🦜️🔗 LangChain + +⚡ Building applications with LLMs through composability ⚡ + +[![Release Notes](https://img.shields.io/github/release/hwchase17/langchain)](https://github.com/hwchase17/langchain/releases) +[![lint](https://github.com/hwchase17/langchain/actions/workflows/lint.yml/badge.svg)](https://github.com/hwchase17/langchain/actions/workflows/lint.yml) +[![test](https://github.com/hwchase17/langchain/actions/workflows/test.yml/badge.svg)](https://github.com/hwchase17/langchain/actions/workflows/test.yml) +[![Downloads](https://static.pepy.tech/badge/langchain/month)](https://pepy.tech/project/langchain) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchainai.svg?style=social&label=Follow%20%40LangChainAI)](https://twitter.com/langchainai) +[![](https://dcbadge.vercel.app/api/server/6adMQxSpJS?compact=true&style=flat)](https://discord.gg/6adMQxSpJS) +[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/hwchase17/langchain) +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/hwchase17/langchain) +[![GitHub star chart](https://img.shields.io/github/stars/hwchase17/langchain?style=social)](https://star-history.com/#hwchase17/langchain) +[![Dependency Status](https://img.shields.io/librariesio/github/hwchase17/langchain)](https://libraries.io/github/hwchase17/langchain) +[![Open Issues](https://img.shields.io/github/issues-raw/hwchase17/langchain)](https://github.com/hwchase17/langchain/issues) + + +Looking for the JS/TS version? Check out [LangChain.js](https://github.com/hwchase17/langchainjs). + +**Production Support:** As you move your LangChains into production, we'd love to offer more comprehensive support. +Please fill out [this form](https://forms.gle/57d8AmXBYp8PP8tZA) and we'll set up a dedicated support Slack channel. + +## Quick Install + +`pip install langchain` +or +`pip install langsmith && conda install langchain -c conda-forge` + +## 🤔 What is this? + +Large language models (LLMs) are emerging as a transformative technology, enabling developers to build applications that they previously could not. However, using these LLMs in isolation is often insufficient for creating a truly powerful app - the real power comes when you can combine them with other sources of computation or knowledge. + +This library aims to assist in the development of those types of applications. Common examples of these applications include: + +**❓ Question Answering over specific documents** + +- [Documentation](https://python.langchain.com/docs/use_cases/question_answering/) +- End-to-end Example: [Question Answering over Notion Database](https://github.com/hwchase17/notion-qa) + +**💬 Chatbots** + +- [Documentation](https://python.langchain.com/docs/use_cases/chatbots/) +- End-to-end Example: [Chat-LangChain](https://github.com/hwchase17/chat-langchain) + +**🤖 Agents** + +- [Documentation](https://python.langchain.com/docs/modules/agents/) +- End-to-end Example: [GPT+WolframAlpha](https://huggingface.co/spaces/JavaFXpert/Chat-GPT-LangChain) + +## 📖 Documentation + +Please see [here](https://python.langchain.com) for full documentation on: + +- Getting started (installation, setting up the environment, simple examples) +- How-To examples (demos, integrations, helper functions) +- Reference (full API docs) +- Resources (high-level explanation of core concepts) + +## 🚀 What can this help with? + +There are six main areas that LangChain is designed to help with. +These are, in increasing order of complexity: + +**📃 LLMs and Prompts:** + +This includes prompt management, prompt optimization, a generic interface for all LLMs, and common utilities for working with LLMs. + +**🔗 Chains:** + +Chains go beyond a single LLM call and involve sequences of calls (whether to an LLM or a different utility). LangChain provides a standard interface for chains, lots of integrations with other tools, and end-to-end chains for common applications. + +**📚 Data Augmented Generation:** + +Data Augmented Generation involves specific types of chains that first interact with an external data source to fetch data for use in the generation step. Examples include summarization of long pieces of text and question/answering over specific data sources. + +**🤖 Agents:** + +Agents involve an LLM making decisions about which Actions to take, taking that Action, seeing an Observation, and repeating that until done. LangChain provides a standard interface for agents, a selection of agents to choose from, and examples of end-to-end agents. + +**🧠 Memory:** + +Memory refers to persisting state between calls of a chain/agent. LangChain provides a standard interface for memory, a collection of memory implementations, and examples of chains/agents that use memory. + +**🧐 Evaluation:** + +[BETA] Generative models are notoriously hard to evaluate with traditional metrics. One new way of evaluating them is using language models themselves to do the evaluation. LangChain provides some prompts/chains for assisting in this. + +For more information on these concepts, please see our [full documentation](https://python.langchain.com). + +## 💁 Contributing + +As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation. + +For detailed information on how to contribute, see [here](.github/CONTRIBUTING.md). diff --git a/dev.Dockerfile b/libs/langchain/dev.Dockerfile similarity index 100% rename from dev.Dockerfile rename to libs/langchain/dev.Dockerfile diff --git a/langchain/__init__.py b/libs/langchain/langchain/__init__.py similarity index 100% rename from langchain/__init__.py rename to libs/langchain/langchain/__init__.py diff --git a/langchain/agents/__init__.py b/libs/langchain/langchain/agents/__init__.py similarity index 100% rename from langchain/agents/__init__.py rename to libs/langchain/langchain/agents/__init__.py diff --git a/langchain/agents/agent.py b/libs/langchain/langchain/agents/agent.py similarity index 100% rename from langchain/agents/agent.py rename to libs/langchain/langchain/agents/agent.py diff --git a/langchain/agents/agent_toolkits/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/__init__.py diff --git a/langchain/agents/agent_toolkits/amadeus/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/amadeus/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py diff --git a/langchain/agents/agent_toolkits/azure_cognitive_services/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/azure_cognitive_services/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/azure_cognitive_services/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/azure_cognitive_services/__init__.py diff --git a/langchain/agents/agent_toolkits/azure_cognitive_services/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/azure_cognitive_services/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/azure_cognitive_services/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/azure_cognitive_services/toolkit.py diff --git a/langchain/agents/agent_toolkits/base.py b/libs/langchain/langchain/agents/agent_toolkits/base.py similarity index 100% rename from langchain/agents/agent_toolkits/base.py rename to libs/langchain/langchain/agents/agent_toolkits/base.py diff --git a/langchain/agents/agent_toolkits/csv/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/csv/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/csv/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/csv/__init__.py diff --git a/langchain/agents/agent_toolkits/csv/base.py b/libs/langchain/langchain/agents/agent_toolkits/csv/base.py similarity index 100% rename from langchain/agents/agent_toolkits/csv/base.py rename to libs/langchain/langchain/agents/agent_toolkits/csv/base.py diff --git a/langchain/agents/agent_toolkits/file_management/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/file_management/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/file_management/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/file_management/__init__.py diff --git a/langchain/agents/agent_toolkits/file_management/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/file_management/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/file_management/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/file_management/toolkit.py diff --git a/langchain/agents/agent_toolkits/github/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/github/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/github/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/github/__init__.py diff --git a/langchain/agents/agent_toolkits/github/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/github/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/github/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/github/toolkit.py diff --git a/langchain/agents/agent_toolkits/gmail/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/gmail/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/gmail/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/gmail/__init__.py diff --git a/langchain/agents/agent_toolkits/gmail/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/gmail/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/gmail/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/gmail/toolkit.py diff --git a/langchain/agents/agent_toolkits/jira/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/jira/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/jira/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/jira/__init__.py diff --git a/langchain/agents/agent_toolkits/jira/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/jira/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/jira/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/jira/toolkit.py diff --git a/langchain/agents/agent_toolkits/json/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/json/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/json/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/json/__init__.py diff --git a/langchain/agents/agent_toolkits/json/base.py b/libs/langchain/langchain/agents/agent_toolkits/json/base.py similarity index 100% rename from langchain/agents/agent_toolkits/json/base.py rename to libs/langchain/langchain/agents/agent_toolkits/json/base.py diff --git a/langchain/agents/agent_toolkits/json/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/json/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/json/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/json/prompt.py diff --git a/langchain/agents/agent_toolkits/json/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/json/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/json/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/json/toolkit.py diff --git a/langchain/agents/agent_toolkits/nla/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/nla/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/nla/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/nla/__init__.py diff --git a/langchain/agents/agent_toolkits/nla/tool.py b/libs/langchain/langchain/agents/agent_toolkits/nla/tool.py similarity index 100% rename from langchain/agents/agent_toolkits/nla/tool.py rename to libs/langchain/langchain/agents/agent_toolkits/nla/tool.py diff --git a/langchain/agents/agent_toolkits/nla/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/nla/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/nla/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/nla/toolkit.py diff --git a/langchain/agents/agent_toolkits/office365/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/office365/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/office365/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/office365/__init__.py diff --git a/langchain/agents/agent_toolkits/office365/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/office365/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/office365/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/office365/toolkit.py diff --git a/langchain/agents/agent_toolkits/openapi/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/__init__.py diff --git a/langchain/agents/agent_toolkits/openapi/base.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/base.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/base.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/base.py diff --git a/langchain/agents/agent_toolkits/openapi/planner.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/planner.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/planner.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/planner.py diff --git a/langchain/agents/agent_toolkits/openapi/planner_prompt.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/planner_prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py diff --git a/langchain/agents/agent_toolkits/openapi/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py diff --git a/langchain/agents/agent_toolkits/openapi/spec.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/spec.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/spec.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/spec.py diff --git a/langchain/agents/agent_toolkits/openapi/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/openapi/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/openapi/toolkit.py diff --git a/langchain/agents/agent_toolkits/pandas/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/pandas/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/pandas/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/pandas/__init__.py diff --git a/langchain/agents/agent_toolkits/pandas/base.py b/libs/langchain/langchain/agents/agent_toolkits/pandas/base.py similarity index 100% rename from langchain/agents/agent_toolkits/pandas/base.py rename to libs/langchain/langchain/agents/agent_toolkits/pandas/base.py diff --git a/langchain/agents/agent_toolkits/pandas/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/pandas/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/pandas/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/pandas/prompt.py diff --git a/langchain/agents/agent_toolkits/playwright/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/playwright/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/playwright/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/playwright/__init__.py diff --git a/langchain/agents/agent_toolkits/playwright/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/playwright/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/playwright/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/playwright/toolkit.py diff --git a/langchain/agents/agent_toolkits/powerbi/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/powerbi/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/powerbi/__init__.py diff --git a/langchain/agents/agent_toolkits/powerbi/base.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/base.py similarity index 100% rename from langchain/agents/agent_toolkits/powerbi/base.py rename to libs/langchain/langchain/agents/agent_toolkits/powerbi/base.py diff --git a/langchain/agents/agent_toolkits/powerbi/chat_base.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/chat_base.py similarity index 100% rename from langchain/agents/agent_toolkits/powerbi/chat_base.py rename to libs/langchain/langchain/agents/agent_toolkits/powerbi/chat_base.py diff --git a/langchain/agents/agent_toolkits/powerbi/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/powerbi/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py diff --git a/langchain/agents/agent_toolkits/powerbi/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/powerbi/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/powerbi/toolkit.py diff --git a/langchain/agents/agent_toolkits/python/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/python/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/python/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/python/__init__.py diff --git a/langchain/agents/agent_toolkits/python/base.py b/libs/langchain/langchain/agents/agent_toolkits/python/base.py similarity index 100% rename from langchain/agents/agent_toolkits/python/base.py rename to libs/langchain/langchain/agents/agent_toolkits/python/base.py diff --git a/langchain/agents/agent_toolkits/python/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/python/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/python/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/python/prompt.py diff --git a/langchain/agents/agent_toolkits/spark/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/spark/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/spark/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/spark/__init__.py diff --git a/langchain/agents/agent_toolkits/spark/base.py b/libs/langchain/langchain/agents/agent_toolkits/spark/base.py similarity index 100% rename from langchain/agents/agent_toolkits/spark/base.py rename to libs/langchain/langchain/agents/agent_toolkits/spark/base.py diff --git a/langchain/agents/agent_toolkits/spark/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/spark/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/spark/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/spark/prompt.py diff --git a/langchain/agents/agent_toolkits/spark_sql/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/spark_sql/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/spark_sql/__init__.py diff --git a/langchain/agents/agent_toolkits/spark_sql/base.py b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/base.py similarity index 100% rename from langchain/agents/agent_toolkits/spark_sql/base.py rename to libs/langchain/langchain/agents/agent_toolkits/spark_sql/base.py diff --git a/langchain/agents/agent_toolkits/spark_sql/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/spark_sql/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py diff --git a/langchain/agents/agent_toolkits/spark_sql/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/spark_sql/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/spark_sql/toolkit.py diff --git a/langchain/agents/agent_toolkits/sql/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/sql/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/sql/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/sql/__init__.py diff --git a/langchain/agents/agent_toolkits/sql/base.py b/libs/langchain/langchain/agents/agent_toolkits/sql/base.py similarity index 100% rename from langchain/agents/agent_toolkits/sql/base.py rename to libs/langchain/langchain/agents/agent_toolkits/sql/base.py diff --git a/langchain/agents/agent_toolkits/sql/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/sql/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py diff --git a/langchain/agents/agent_toolkits/sql/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/sql/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/sql/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/sql/toolkit.py diff --git a/langchain/agents/agent_toolkits/vectorstore/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/vectorstore/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/vectorstore/__init__.py diff --git a/langchain/agents/agent_toolkits/vectorstore/base.py b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/base.py similarity index 100% rename from langchain/agents/agent_toolkits/vectorstore/base.py rename to libs/langchain/langchain/agents/agent_toolkits/vectorstore/base.py diff --git a/langchain/agents/agent_toolkits/vectorstore/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/vectorstore/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/vectorstore/prompt.py diff --git a/langchain/agents/agent_toolkits/vectorstore/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/vectorstore/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py diff --git a/langchain/agents/agent_toolkits/xorbits/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/xorbits/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/xorbits/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/xorbits/__init__.py diff --git a/langchain/agents/agent_toolkits/xorbits/base.py b/libs/langchain/langchain/agents/agent_toolkits/xorbits/base.py similarity index 100% rename from langchain/agents/agent_toolkits/xorbits/base.py rename to libs/langchain/langchain/agents/agent_toolkits/xorbits/base.py diff --git a/langchain/agents/agent_toolkits/xorbits/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/xorbits/prompt.py similarity index 100% rename from langchain/agents/agent_toolkits/xorbits/prompt.py rename to libs/langchain/langchain/agents/agent_toolkits/xorbits/prompt.py diff --git a/langchain/agents/agent_toolkits/zapier/__init__.py b/libs/langchain/langchain/agents/agent_toolkits/zapier/__init__.py similarity index 100% rename from langchain/agents/agent_toolkits/zapier/__init__.py rename to libs/langchain/langchain/agents/agent_toolkits/zapier/__init__.py diff --git a/langchain/agents/agent_toolkits/zapier/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/zapier/toolkit.py similarity index 100% rename from langchain/agents/agent_toolkits/zapier/toolkit.py rename to libs/langchain/langchain/agents/agent_toolkits/zapier/toolkit.py diff --git a/langchain/agents/agent_types.py b/libs/langchain/langchain/agents/agent_types.py similarity index 100% rename from langchain/agents/agent_types.py rename to libs/langchain/langchain/agents/agent_types.py diff --git a/langchain/agents/chat/__init__.py b/libs/langchain/langchain/agents/chat/__init__.py similarity index 100% rename from langchain/agents/chat/__init__.py rename to libs/langchain/langchain/agents/chat/__init__.py diff --git a/langchain/agents/chat/base.py b/libs/langchain/langchain/agents/chat/base.py similarity index 100% rename from langchain/agents/chat/base.py rename to libs/langchain/langchain/agents/chat/base.py diff --git a/langchain/agents/chat/output_parser.py b/libs/langchain/langchain/agents/chat/output_parser.py similarity index 100% rename from langchain/agents/chat/output_parser.py rename to libs/langchain/langchain/agents/chat/output_parser.py diff --git a/langchain/agents/chat/prompt.py b/libs/langchain/langchain/agents/chat/prompt.py similarity index 100% rename from langchain/agents/chat/prompt.py rename to libs/langchain/langchain/agents/chat/prompt.py diff --git a/langchain/agents/conversational/__init__.py b/libs/langchain/langchain/agents/conversational/__init__.py similarity index 100% rename from langchain/agents/conversational/__init__.py rename to libs/langchain/langchain/agents/conversational/__init__.py diff --git a/langchain/agents/conversational/base.py b/libs/langchain/langchain/agents/conversational/base.py similarity index 100% rename from langchain/agents/conversational/base.py rename to libs/langchain/langchain/agents/conversational/base.py diff --git a/langchain/agents/conversational/output_parser.py b/libs/langchain/langchain/agents/conversational/output_parser.py similarity index 100% rename from langchain/agents/conversational/output_parser.py rename to libs/langchain/langchain/agents/conversational/output_parser.py diff --git a/langchain/agents/conversational/prompt.py b/libs/langchain/langchain/agents/conversational/prompt.py similarity index 100% rename from langchain/agents/conversational/prompt.py rename to libs/langchain/langchain/agents/conversational/prompt.py diff --git a/langchain/agents/conversational_chat/__init__.py b/libs/langchain/langchain/agents/conversational_chat/__init__.py similarity index 100% rename from langchain/agents/conversational_chat/__init__.py rename to libs/langchain/langchain/agents/conversational_chat/__init__.py diff --git a/langchain/agents/conversational_chat/base.py b/libs/langchain/langchain/agents/conversational_chat/base.py similarity index 100% rename from langchain/agents/conversational_chat/base.py rename to libs/langchain/langchain/agents/conversational_chat/base.py diff --git a/langchain/agents/conversational_chat/output_parser.py b/libs/langchain/langchain/agents/conversational_chat/output_parser.py similarity index 100% rename from langchain/agents/conversational_chat/output_parser.py rename to libs/langchain/langchain/agents/conversational_chat/output_parser.py diff --git a/langchain/agents/conversational_chat/prompt.py b/libs/langchain/langchain/agents/conversational_chat/prompt.py similarity index 100% rename from langchain/agents/conversational_chat/prompt.py rename to libs/langchain/langchain/agents/conversational_chat/prompt.py diff --git a/langchain/agents/initialize.py b/libs/langchain/langchain/agents/initialize.py similarity index 100% rename from langchain/agents/initialize.py rename to libs/langchain/langchain/agents/initialize.py diff --git a/langchain/agents/load_tools.py b/libs/langchain/langchain/agents/load_tools.py similarity index 100% rename from langchain/agents/load_tools.py rename to libs/langchain/langchain/agents/load_tools.py diff --git a/langchain/agents/loading.py b/libs/langchain/langchain/agents/loading.py similarity index 100% rename from langchain/agents/loading.py rename to libs/langchain/langchain/agents/loading.py diff --git a/langchain/agents/mrkl/__init__.py b/libs/langchain/langchain/agents/mrkl/__init__.py similarity index 100% rename from langchain/agents/mrkl/__init__.py rename to libs/langchain/langchain/agents/mrkl/__init__.py diff --git a/langchain/agents/mrkl/base.py b/libs/langchain/langchain/agents/mrkl/base.py similarity index 100% rename from langchain/agents/mrkl/base.py rename to libs/langchain/langchain/agents/mrkl/base.py diff --git a/langchain/agents/mrkl/output_parser.py b/libs/langchain/langchain/agents/mrkl/output_parser.py similarity index 100% rename from langchain/agents/mrkl/output_parser.py rename to libs/langchain/langchain/agents/mrkl/output_parser.py diff --git a/langchain/agents/mrkl/prompt.py b/libs/langchain/langchain/agents/mrkl/prompt.py similarity index 100% rename from langchain/agents/mrkl/prompt.py rename to libs/langchain/langchain/agents/mrkl/prompt.py diff --git a/langchain/agents/openai_functions_agent/__init__.py b/libs/langchain/langchain/agents/openai_functions_agent/__init__.py similarity index 100% rename from langchain/agents/openai_functions_agent/__init__.py rename to libs/langchain/langchain/agents/openai_functions_agent/__init__.py diff --git a/langchain/agents/openai_functions_agent/base.py b/libs/langchain/langchain/agents/openai_functions_agent/base.py similarity index 100% rename from langchain/agents/openai_functions_agent/base.py rename to libs/langchain/langchain/agents/openai_functions_agent/base.py diff --git a/langchain/agents/openai_functions_multi_agent/__init__.py b/libs/langchain/langchain/agents/openai_functions_multi_agent/__init__.py similarity index 100% rename from langchain/agents/openai_functions_multi_agent/__init__.py rename to libs/langchain/langchain/agents/openai_functions_multi_agent/__init__.py diff --git a/langchain/agents/openai_functions_multi_agent/base.py b/libs/langchain/langchain/agents/openai_functions_multi_agent/base.py similarity index 100% rename from langchain/agents/openai_functions_multi_agent/base.py rename to libs/langchain/langchain/agents/openai_functions_multi_agent/base.py diff --git a/langchain/agents/react/__init__.py b/libs/langchain/langchain/agents/react/__init__.py similarity index 100% rename from langchain/agents/react/__init__.py rename to libs/langchain/langchain/agents/react/__init__.py diff --git a/langchain/agents/react/base.py b/libs/langchain/langchain/agents/react/base.py similarity index 100% rename from langchain/agents/react/base.py rename to libs/langchain/langchain/agents/react/base.py diff --git a/langchain/agents/react/output_parser.py b/libs/langchain/langchain/agents/react/output_parser.py similarity index 100% rename from langchain/agents/react/output_parser.py rename to libs/langchain/langchain/agents/react/output_parser.py diff --git a/langchain/agents/react/textworld_prompt.py b/libs/langchain/langchain/agents/react/textworld_prompt.py similarity index 100% rename from langchain/agents/react/textworld_prompt.py rename to libs/langchain/langchain/agents/react/textworld_prompt.py diff --git a/langchain/agents/react/wiki_prompt.py b/libs/langchain/langchain/agents/react/wiki_prompt.py similarity index 100% rename from langchain/agents/react/wiki_prompt.py rename to libs/langchain/langchain/agents/react/wiki_prompt.py diff --git a/langchain/agents/schema.py b/libs/langchain/langchain/agents/schema.py similarity index 100% rename from langchain/agents/schema.py rename to libs/langchain/langchain/agents/schema.py diff --git a/langchain/agents/self_ask_with_search/__init__.py b/libs/langchain/langchain/agents/self_ask_with_search/__init__.py similarity index 100% rename from langchain/agents/self_ask_with_search/__init__.py rename to libs/langchain/langchain/agents/self_ask_with_search/__init__.py diff --git a/langchain/agents/self_ask_with_search/base.py b/libs/langchain/langchain/agents/self_ask_with_search/base.py similarity index 100% rename from langchain/agents/self_ask_with_search/base.py rename to libs/langchain/langchain/agents/self_ask_with_search/base.py diff --git a/langchain/agents/self_ask_with_search/output_parser.py b/libs/langchain/langchain/agents/self_ask_with_search/output_parser.py similarity index 100% rename from langchain/agents/self_ask_with_search/output_parser.py rename to libs/langchain/langchain/agents/self_ask_with_search/output_parser.py diff --git a/langchain/agents/self_ask_with_search/prompt.py b/libs/langchain/langchain/agents/self_ask_with_search/prompt.py similarity index 100% rename from langchain/agents/self_ask_with_search/prompt.py rename to libs/langchain/langchain/agents/self_ask_with_search/prompt.py diff --git a/langchain/agents/structured_chat/__init__.py b/libs/langchain/langchain/agents/structured_chat/__init__.py similarity index 100% rename from langchain/agents/structured_chat/__init__.py rename to libs/langchain/langchain/agents/structured_chat/__init__.py diff --git a/langchain/agents/structured_chat/base.py b/libs/langchain/langchain/agents/structured_chat/base.py similarity index 100% rename from langchain/agents/structured_chat/base.py rename to libs/langchain/langchain/agents/structured_chat/base.py diff --git a/langchain/agents/structured_chat/output_parser.py b/libs/langchain/langchain/agents/structured_chat/output_parser.py similarity index 100% rename from langchain/agents/structured_chat/output_parser.py rename to libs/langchain/langchain/agents/structured_chat/output_parser.py diff --git a/langchain/agents/structured_chat/prompt.py b/libs/langchain/langchain/agents/structured_chat/prompt.py similarity index 100% rename from langchain/agents/structured_chat/prompt.py rename to libs/langchain/langchain/agents/structured_chat/prompt.py diff --git a/langchain/agents/tools.py b/libs/langchain/langchain/agents/tools.py similarity index 100% rename from langchain/agents/tools.py rename to libs/langchain/langchain/agents/tools.py diff --git a/langchain/agents/types.py b/libs/langchain/langchain/agents/types.py similarity index 100% rename from langchain/agents/types.py rename to libs/langchain/langchain/agents/types.py diff --git a/langchain/agents/utils.py b/libs/langchain/langchain/agents/utils.py similarity index 100% rename from langchain/agents/utils.py rename to libs/langchain/langchain/agents/utils.py diff --git a/langchain/base_language.py b/libs/langchain/langchain/base_language.py similarity index 100% rename from langchain/base_language.py rename to libs/langchain/langchain/base_language.py diff --git a/langchain/cache.py b/libs/langchain/langchain/cache.py similarity index 100% rename from langchain/cache.py rename to libs/langchain/langchain/cache.py diff --git a/langchain/callbacks/__init__.py b/libs/langchain/langchain/callbacks/__init__.py similarity index 100% rename from langchain/callbacks/__init__.py rename to libs/langchain/langchain/callbacks/__init__.py diff --git a/langchain/callbacks/aim_callback.py b/libs/langchain/langchain/callbacks/aim_callback.py similarity index 100% rename from langchain/callbacks/aim_callback.py rename to libs/langchain/langchain/callbacks/aim_callback.py diff --git a/langchain/callbacks/argilla_callback.py b/libs/langchain/langchain/callbacks/argilla_callback.py similarity index 100% rename from langchain/callbacks/argilla_callback.py rename to libs/langchain/langchain/callbacks/argilla_callback.py diff --git a/langchain/callbacks/arize_callback.py b/libs/langchain/langchain/callbacks/arize_callback.py similarity index 100% rename from langchain/callbacks/arize_callback.py rename to libs/langchain/langchain/callbacks/arize_callback.py diff --git a/langchain/callbacks/arthur_callback.py b/libs/langchain/langchain/callbacks/arthur_callback.py similarity index 100% rename from langchain/callbacks/arthur_callback.py rename to libs/langchain/langchain/callbacks/arthur_callback.py diff --git a/langchain/callbacks/base.py b/libs/langchain/langchain/callbacks/base.py similarity index 100% rename from langchain/callbacks/base.py rename to libs/langchain/langchain/callbacks/base.py diff --git a/langchain/callbacks/clearml_callback.py b/libs/langchain/langchain/callbacks/clearml_callback.py similarity index 100% rename from langchain/callbacks/clearml_callback.py rename to libs/langchain/langchain/callbacks/clearml_callback.py diff --git a/langchain/callbacks/comet_ml_callback.py b/libs/langchain/langchain/callbacks/comet_ml_callback.py similarity index 100% rename from langchain/callbacks/comet_ml_callback.py rename to libs/langchain/langchain/callbacks/comet_ml_callback.py diff --git a/langchain/callbacks/context_callback.py b/libs/langchain/langchain/callbacks/context_callback.py similarity index 100% rename from langchain/callbacks/context_callback.py rename to libs/langchain/langchain/callbacks/context_callback.py diff --git a/langchain/callbacks/file.py b/libs/langchain/langchain/callbacks/file.py similarity index 100% rename from langchain/callbacks/file.py rename to libs/langchain/langchain/callbacks/file.py diff --git a/langchain/callbacks/flyte_callback.py b/libs/langchain/langchain/callbacks/flyte_callback.py similarity index 100% rename from langchain/callbacks/flyte_callback.py rename to libs/langchain/langchain/callbacks/flyte_callback.py diff --git a/langchain/callbacks/human.py b/libs/langchain/langchain/callbacks/human.py similarity index 100% rename from langchain/callbacks/human.py rename to libs/langchain/langchain/callbacks/human.py diff --git a/langchain/callbacks/infino_callback.py b/libs/langchain/langchain/callbacks/infino_callback.py similarity index 100% rename from langchain/callbacks/infino_callback.py rename to libs/langchain/langchain/callbacks/infino_callback.py diff --git a/langchain/callbacks/manager.py b/libs/langchain/langchain/callbacks/manager.py similarity index 100% rename from langchain/callbacks/manager.py rename to libs/langchain/langchain/callbacks/manager.py diff --git a/langchain/callbacks/mlflow_callback.py b/libs/langchain/langchain/callbacks/mlflow_callback.py similarity index 97% rename from langchain/callbacks/mlflow_callback.py rename to libs/langchain/langchain/callbacks/mlflow_callback.py index 89f5c6315f..553404b07f 100644 --- a/langchain/callbacks/mlflow_callback.py +++ b/libs/langchain/langchain/callbacks/mlflow_callback.py @@ -1,656 +1,656 @@ -import random -import string -import tempfile -import traceback -from copy import deepcopy -from pathlib import Path -from typing import Any, Dict, List, Optional, Union - -from langchain.callbacks.base import BaseCallbackHandler -from langchain.callbacks.utils import ( - BaseMetadataCallbackHandler, - flatten_dict, - hash_string, - import_pandas, - import_spacy, - import_textstat, -) -from langchain.schema import AgentAction, AgentFinish, LLMResult -from langchain.utils import get_from_dict_or_env - - -def import_mlflow() -> Any: - """Import the mlflow python package and raise an error if it is not installed.""" - try: - import mlflow - except ImportError: - raise ImportError( - "To use the mlflow callback manager you need to have the `mlflow` python " - "package installed. Please install it with `pip install mlflow>=2.3.0`" - ) - return mlflow - - -def analyze_text( - text: str, - nlp: Any = None, -) -> dict: - """Analyze text using textstat and spacy. - - Parameters: - text (str): The text to analyze. - nlp (spacy.lang): The spacy language model to use for visualization. - - Returns: - (dict): A dictionary containing the complexity metrics and visualization - files serialized to HTML string. - """ - resp: Dict[str, Any] = {} - textstat = import_textstat() - spacy = import_spacy() - text_complexity_metrics = { - "flesch_reading_ease": textstat.flesch_reading_ease(text), - "flesch_kincaid_grade": textstat.flesch_kincaid_grade(text), - "smog_index": textstat.smog_index(text), - "coleman_liau_index": textstat.coleman_liau_index(text), - "automated_readability_index": textstat.automated_readability_index(text), - "dale_chall_readability_score": textstat.dale_chall_readability_score(text), - "difficult_words": textstat.difficult_words(text), - "linsear_write_formula": textstat.linsear_write_formula(text), - "gunning_fog": textstat.gunning_fog(text), - # "text_standard": textstat.text_standard(text), - "fernandez_huerta": textstat.fernandez_huerta(text), - "szigriszt_pazos": textstat.szigriszt_pazos(text), - "gutierrez_polini": textstat.gutierrez_polini(text), - "crawford": textstat.crawford(text), - "gulpease_index": textstat.gulpease_index(text), - "osman": textstat.osman(text), - } - resp.update({"text_complexity_metrics": text_complexity_metrics}) - resp.update(text_complexity_metrics) - - if nlp is not None: - doc = nlp(text) - - dep_out = spacy.displacy.render( # type: ignore - doc, style="dep", jupyter=False, page=True - ) - - ent_out = spacy.displacy.render( # type: ignore - doc, style="ent", jupyter=False, page=True - ) - - text_visualizations = { - "dependency_tree": dep_out, - "entities": ent_out, - } - - resp.update(text_visualizations) - - return resp - - -def construct_html_from_prompt_and_generation(prompt: str, generation: str) -> Any: - """Construct an html element from a prompt and a generation. - - Parameters: - prompt (str): The prompt. - generation (str): The generation. - - Returns: - (str): The html string.""" - formatted_prompt = prompt.replace("\n", "
") - formatted_generation = generation.replace("\n", "
") - - return f""" -

{formatted_prompt}:

-
-

- {formatted_generation} -

-
- """ - - -class MlflowLogger: - """Callback Handler that logs metrics and artifacts to mlflow server. - - Parameters: - name (str): Name of the run. - experiment (str): Name of the experiment. - tags (dict): Tags to be attached for the run. - tracking_uri (str): MLflow tracking server uri. - - This handler implements the helper functions to initialize, - log metrics and artifacts to the mlflow server. - """ - - def __init__(self, **kwargs: Any): - self.mlflow = import_mlflow() - tracking_uri = get_from_dict_or_env( - kwargs, "tracking_uri", "MLFLOW_TRACKING_URI", "" - ) - self.mlflow.set_tracking_uri(tracking_uri) - - # User can set other env variables described here - # > https://www.mlflow.org/docs/latest/tracking.html#logging-to-a-tracking-server - - experiment_name = get_from_dict_or_env( - kwargs, "experiment_name", "MLFLOW_EXPERIMENT_NAME" - ) - self.mlf_exp = self.mlflow.get_experiment_by_name(experiment_name) - if self.mlf_exp is not None: - self.mlf_expid = self.mlf_exp.experiment_id - else: - self.mlf_expid = self.mlflow.create_experiment(experiment_name) - - self.start_run(kwargs["run_name"], kwargs["run_tags"]) - - def start_run(self, name: str, tags: Dict[str, str]) -> None: - """To start a new run, auto generates the random suffix for name""" - if name.endswith("-%"): - rname = "".join(random.choices(string.ascii_uppercase + string.digits, k=7)) - name = name.replace("%", rname) - self.run = self.mlflow.MlflowClient().create_run( - self.mlf_expid, run_name=name, tags=tags - ) - - def finish_run(self) -> None: - """To finish the run.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.end_run() - - def metric(self, key: str, value: float) -> None: - """To log metric to mlflow server.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_metric(key, value) - - def metrics( - self, data: Union[Dict[str, float], Dict[str, int]], step: Optional[int] = 0 - ) -> None: - """To log all metrics in the input dict.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_metrics(data) - - def jsonf(self, data: Dict[str, Any], filename: str) -> None: - """To log the input data as json file artifact.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_dict(data, f"{filename}.json") - - def table(self, name: str, dataframe) -> None: # type: ignore - """To log the input pandas dataframe as a html table""" - self.html(dataframe.to_html(), f"table_{name}") - - def html(self, html: str, filename: str) -> None: - """To log the input html string as html file artifact.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_text(html, f"{filename}.html") - - def text(self, text: str, filename: str) -> None: - """To log the input text as text file artifact.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_text(text, f"{filename}.txt") - - def artifact(self, path: str) -> None: - """To upload the file from given path as artifact.""" - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.log_artifact(path) - - def langchain_artifact(self, chain: Any) -> None: - with self.mlflow.start_run( - run_id=self.run.info.run_id, experiment_id=self.mlf_expid - ): - self.mlflow.langchain.log_model(chain, "langchain-model") - - -class MlflowCallbackHandler(BaseMetadataCallbackHandler, BaseCallbackHandler): - """Callback Handler that logs metrics and artifacts to mlflow server. - - Parameters: - name (str): Name of the run. - experiment (str): Name of the experiment. - tags (dict): Tags to be attached for the run. - tracking_uri (str): MLflow tracking server uri. - - This handler will utilize the associated callback method called and formats - the input of each callback function with metadata regarding the state of LLM run, - and adds the response to the list of records for both the {method}_records and - action. It then logs the response to mlflow server. - """ - - def __init__( - self, - name: Optional[str] = "langchainrun-%", - experiment: Optional[str] = "langchain", - tags: Optional[Dict] = {}, - tracking_uri: Optional[str] = None, - ) -> None: - """Initialize callback handler.""" - import_pandas() - import_textstat() - import_mlflow() - spacy = import_spacy() - super().__init__() - - self.name = name - self.experiment = experiment - self.tags = tags - self.tracking_uri = tracking_uri - - self.temp_dir = tempfile.TemporaryDirectory() - - self.mlflg = MlflowLogger( - tracking_uri=self.tracking_uri, - experiment_name=self.experiment, - run_name=self.name, - run_tags=self.tags, - ) - - self.action_records: list = [] - self.nlp = spacy.load("en_core_web_sm") - - self.metrics = { - "step": 0, - "starts": 0, - "ends": 0, - "errors": 0, - "text_ctr": 0, - "chain_starts": 0, - "chain_ends": 0, - "llm_starts": 0, - "llm_ends": 0, - "llm_streams": 0, - "tool_starts": 0, - "tool_ends": 0, - "agent_ends": 0, - } - - self.records: Dict[str, Any] = { - "on_llm_start_records": [], - "on_llm_token_records": [], - "on_llm_end_records": [], - "on_chain_start_records": [], - "on_chain_end_records": [], - "on_tool_start_records": [], - "on_tool_end_records": [], - "on_text_records": [], - "on_agent_finish_records": [], - "on_agent_action_records": [], - "action_records": [], - } - - def _reset(self) -> None: - for k, v in self.metrics.items(): - self.metrics[k] = 0 - for k, v in self.records.items(): - self.records[k] = [] - - def on_llm_start( - self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any - ) -> None: - """Run when LLM starts.""" - self.metrics["step"] += 1 - self.metrics["llm_starts"] += 1 - self.metrics["starts"] += 1 - - llm_starts = self.metrics["llm_starts"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_llm_start"}) - resp.update(flatten_dict(serialized)) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - for idx, prompt in enumerate(prompts): - prompt_resp = deepcopy(resp) - prompt_resp["prompt"] = prompt - self.records["on_llm_start_records"].append(prompt_resp) - self.records["action_records"].append(prompt_resp) - self.mlflg.jsonf(prompt_resp, f"llm_start_{llm_starts}_prompt_{idx}") - - def on_llm_new_token(self, token: str, **kwargs: Any) -> None: - """Run when LLM generates a new token.""" - self.metrics["step"] += 1 - self.metrics["llm_streams"] += 1 - - llm_streams = self.metrics["llm_streams"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_llm_new_token", "token": token}) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_llm_token_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"llm_new_tokens_{llm_streams}") - - def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: - """Run when LLM ends running.""" - self.metrics["step"] += 1 - self.metrics["llm_ends"] += 1 - self.metrics["ends"] += 1 - - llm_ends = self.metrics["llm_ends"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_llm_end"}) - resp.update(flatten_dict(response.llm_output or {})) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - for generations in response.generations: - for idx, generation in enumerate(generations): - generation_resp = deepcopy(resp) - generation_resp.update(flatten_dict(generation.dict())) - generation_resp.update( - analyze_text( - generation.text, - nlp=self.nlp, - ) - ) - complexity_metrics: Dict[str, float] = generation_resp.pop("text_complexity_metrics") # type: ignore # noqa: E501 - self.mlflg.metrics( - complexity_metrics, - step=self.metrics["step"], - ) - self.records["on_llm_end_records"].append(generation_resp) - self.records["action_records"].append(generation_resp) - self.mlflg.jsonf(resp, f"llm_end_{llm_ends}_generation_{idx}") - dependency_tree = generation_resp["dependency_tree"] - entities = generation_resp["entities"] - self.mlflg.html(dependency_tree, "dep-" + hash_string(generation.text)) - self.mlflg.html(entities, "ent-" + hash_string(generation.text)) - - def on_llm_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - """Run when LLM errors.""" - self.metrics["step"] += 1 - self.metrics["errors"] += 1 - - def on_chain_start( - self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any - ) -> None: - """Run when chain starts running.""" - self.metrics["step"] += 1 - self.metrics["chain_starts"] += 1 - self.metrics["starts"] += 1 - - chain_starts = self.metrics["chain_starts"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_chain_start"}) - resp.update(flatten_dict(serialized)) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - chain_input = ",".join([f"{k}={v}" for k, v in inputs.items()]) - input_resp = deepcopy(resp) - input_resp["inputs"] = chain_input - self.records["on_chain_start_records"].append(input_resp) - self.records["action_records"].append(input_resp) - self.mlflg.jsonf(input_resp, f"chain_start_{chain_starts}") - - def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None: - """Run when chain ends running.""" - self.metrics["step"] += 1 - self.metrics["chain_ends"] += 1 - self.metrics["ends"] += 1 - - chain_ends = self.metrics["chain_ends"] - - resp: Dict[str, Any] = {} - chain_output = ",".join([f"{k}={v}" for k, v in outputs.items()]) - resp.update({"action": "on_chain_end", "outputs": chain_output}) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_chain_end_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"chain_end_{chain_ends}") - - def on_chain_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - """Run when chain errors.""" - self.metrics["step"] += 1 - self.metrics["errors"] += 1 - - def on_tool_start( - self, serialized: Dict[str, Any], input_str: str, **kwargs: Any - ) -> None: - """Run when tool starts running.""" - self.metrics["step"] += 1 - self.metrics["tool_starts"] += 1 - self.metrics["starts"] += 1 - - tool_starts = self.metrics["tool_starts"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_tool_start", "input_str": input_str}) - resp.update(flatten_dict(serialized)) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_tool_start_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"tool_start_{tool_starts}") - - def on_tool_end(self, output: str, **kwargs: Any) -> None: - """Run when tool ends running.""" - self.metrics["step"] += 1 - self.metrics["tool_ends"] += 1 - self.metrics["ends"] += 1 - - tool_ends = self.metrics["tool_ends"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_tool_end", "output": output}) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_tool_end_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"tool_end_{tool_ends}") - - def on_tool_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - """Run when tool errors.""" - self.metrics["step"] += 1 - self.metrics["errors"] += 1 - - def on_text(self, text: str, **kwargs: Any) -> None: - """ - Run when agent is ending. - """ - self.metrics["step"] += 1 - self.metrics["text_ctr"] += 1 - - text_ctr = self.metrics["text_ctr"] - - resp: Dict[str, Any] = {} - resp.update({"action": "on_text", "text": text}) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_text_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"on_text_{text_ctr}") - - def on_agent_finish(self, finish: AgentFinish, **kwargs: Any) -> None: - """Run when agent ends running.""" - self.metrics["step"] += 1 - self.metrics["agent_ends"] += 1 - self.metrics["ends"] += 1 - - agent_ends = self.metrics["agent_ends"] - resp: Dict[str, Any] = {} - resp.update( - { - "action": "on_agent_finish", - "output": finish.return_values["output"], - "log": finish.log, - } - ) - resp.update(self.metrics) - - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - - self.records["on_agent_finish_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"agent_finish_{agent_ends}") - - def on_agent_action(self, action: AgentAction, **kwargs: Any) -> Any: - """Run on agent action.""" - self.metrics["step"] += 1 - self.metrics["tool_starts"] += 1 - self.metrics["starts"] += 1 - - tool_starts = self.metrics["tool_starts"] - resp: Dict[str, Any] = {} - resp.update( - { - "action": "on_agent_action", - "tool": action.tool, - "tool_input": action.tool_input, - "log": action.log, - } - ) - resp.update(self.metrics) - self.mlflg.metrics(self.metrics, step=self.metrics["step"]) - self.records["on_agent_action_records"].append(resp) - self.records["action_records"].append(resp) - self.mlflg.jsonf(resp, f"agent_action_{tool_starts}") - - def _create_session_analysis_df(self) -> Any: - """Create a dataframe with all the information from the session.""" - pd = import_pandas() - on_llm_start_records_df = pd.DataFrame(self.records["on_llm_start_records"]) - on_llm_end_records_df = pd.DataFrame(self.records["on_llm_end_records"]) - - llm_input_columns = ["step", "prompt"] - if "name" in on_llm_start_records_df.columns: - llm_input_columns.append("name") - elif "id" in on_llm_start_records_df.columns: - # id is llm class's full import path. For example: - # ["langchain", "llms", "openai", "AzureOpenAI"] - on_llm_start_records_df["name"] = on_llm_start_records_df["id"].apply( - lambda id_: id_[-1] - ) - llm_input_columns.append("name") - llm_input_prompts_df = ( - on_llm_start_records_df[llm_input_columns] - .dropna(axis=1) - .rename({"step": "prompt_step"}, axis=1) - ) - complexity_metrics_columns = [] - visualizations_columns = [] - - complexity_metrics_columns = [ - "flesch_reading_ease", - "flesch_kincaid_grade", - "smog_index", - "coleman_liau_index", - "automated_readability_index", - "dale_chall_readability_score", - "difficult_words", - "linsear_write_formula", - "gunning_fog", - # "text_standard", - "fernandez_huerta", - "szigriszt_pazos", - "gutierrez_polini", - "crawford", - "gulpease_index", - "osman", - ] - - visualizations_columns = ["dependency_tree", "entities"] - - llm_outputs_df = ( - on_llm_end_records_df[ - [ - "step", - "text", - "token_usage_total_tokens", - "token_usage_prompt_tokens", - "token_usage_completion_tokens", - ] - + complexity_metrics_columns - + visualizations_columns - ] - .dropna(axis=1) - .rename({"step": "output_step", "text": "output"}, axis=1) - ) - session_analysis_df = pd.concat([llm_input_prompts_df, llm_outputs_df], axis=1) - session_analysis_df["chat_html"] = session_analysis_df[ - ["prompt", "output"] - ].apply( - lambda row: construct_html_from_prompt_and_generation( - row["prompt"], row["output"] - ), - axis=1, - ) - return session_analysis_df - - def flush_tracker(self, langchain_asset: Any = None, finish: bool = False) -> None: - pd = import_pandas() - self.mlflg.table("action_records", pd.DataFrame(self.records["action_records"])) - session_analysis_df = self._create_session_analysis_df() - chat_html = session_analysis_df.pop("chat_html") - chat_html = chat_html.replace("\n", "", regex=True) - self.mlflg.table("session_analysis", pd.DataFrame(session_analysis_df)) - self.mlflg.html("".join(chat_html.tolist()), "chat_html") - - if langchain_asset: - # To avoid circular import error - # mlflow only supports LLMChain asset - if "langchain.chains.llm.LLMChain" in str(type(langchain_asset)): - self.mlflg.langchain_artifact(langchain_asset) - else: - langchain_asset_path = str(Path(self.temp_dir.name, "model.json")) - try: - langchain_asset.save(langchain_asset_path) - self.mlflg.artifact(langchain_asset_path) - except ValueError: - try: - langchain_asset.save_agent(langchain_asset_path) - self.mlflg.artifact(langchain_asset_path) - except AttributeError: - print("Could not save model.") - traceback.print_exc() - pass - except NotImplementedError: - print("Could not save model.") - traceback.print_exc() - pass - except NotImplementedError: - print("Could not save model.") - traceback.print_exc() - pass - if finish: - self.mlflg.finish_run() - self._reset() +import random +import string +import tempfile +import traceback +from copy import deepcopy +from pathlib import Path +from typing import Any, Dict, List, Optional, Union + +from langchain.callbacks.base import BaseCallbackHandler +from langchain.callbacks.utils import ( + BaseMetadataCallbackHandler, + flatten_dict, + hash_string, + import_pandas, + import_spacy, + import_textstat, +) +from langchain.schema import AgentAction, AgentFinish, LLMResult +from langchain.utils import get_from_dict_or_env + + +def import_mlflow() -> Any: + """Import the mlflow python package and raise an error if it is not installed.""" + try: + import mlflow + except ImportError: + raise ImportError( + "To use the mlflow callback manager you need to have the `mlflow` python " + "package installed. Please install it with `pip install mlflow>=2.3.0`" + ) + return mlflow + + +def analyze_text( + text: str, + nlp: Any = None, +) -> dict: + """Analyze text using textstat and spacy. + + Parameters: + text (str): The text to analyze. + nlp (spacy.lang): The spacy language model to use for visualization. + + Returns: + (dict): A dictionary containing the complexity metrics and visualization + files serialized to HTML string. + """ + resp: Dict[str, Any] = {} + textstat = import_textstat() + spacy = import_spacy() + text_complexity_metrics = { + "flesch_reading_ease": textstat.flesch_reading_ease(text), + "flesch_kincaid_grade": textstat.flesch_kincaid_grade(text), + "smog_index": textstat.smog_index(text), + "coleman_liau_index": textstat.coleman_liau_index(text), + "automated_readability_index": textstat.automated_readability_index(text), + "dale_chall_readability_score": textstat.dale_chall_readability_score(text), + "difficult_words": textstat.difficult_words(text), + "linsear_write_formula": textstat.linsear_write_formula(text), + "gunning_fog": textstat.gunning_fog(text), + # "text_standard": textstat.text_standard(text), + "fernandez_huerta": textstat.fernandez_huerta(text), + "szigriszt_pazos": textstat.szigriszt_pazos(text), + "gutierrez_polini": textstat.gutierrez_polini(text), + "crawford": textstat.crawford(text), + "gulpease_index": textstat.gulpease_index(text), + "osman": textstat.osman(text), + } + resp.update({"text_complexity_metrics": text_complexity_metrics}) + resp.update(text_complexity_metrics) + + if nlp is not None: + doc = nlp(text) + + dep_out = spacy.displacy.render( # type: ignore + doc, style="dep", jupyter=False, page=True + ) + + ent_out = spacy.displacy.render( # type: ignore + doc, style="ent", jupyter=False, page=True + ) + + text_visualizations = { + "dependency_tree": dep_out, + "entities": ent_out, + } + + resp.update(text_visualizations) + + return resp + + +def construct_html_from_prompt_and_generation(prompt: str, generation: str) -> Any: + """Construct an html element from a prompt and a generation. + + Parameters: + prompt (str): The prompt. + generation (str): The generation. + + Returns: + (str): The html string.""" + formatted_prompt = prompt.replace("\n", "
") + formatted_generation = generation.replace("\n", "
") + + return f""" +

{formatted_prompt}:

+
+

+ {formatted_generation} +

+
+ """ + + +class MlflowLogger: + """Callback Handler that logs metrics and artifacts to mlflow server. + + Parameters: + name (str): Name of the run. + experiment (str): Name of the experiment. + tags (dict): Tags to be attached for the run. + tracking_uri (str): MLflow tracking server uri. + + This handler implements the helper functions to initialize, + log metrics and artifacts to the mlflow server. + """ + + def __init__(self, **kwargs: Any): + self.mlflow = import_mlflow() + tracking_uri = get_from_dict_or_env( + kwargs, "tracking_uri", "MLFLOW_TRACKING_URI", "" + ) + self.mlflow.set_tracking_uri(tracking_uri) + + # User can set other env variables described here + # > https://www.mlflow.org/docs/latest/tracking.html#logging-to-a-tracking-server + + experiment_name = get_from_dict_or_env( + kwargs, "experiment_name", "MLFLOW_EXPERIMENT_NAME" + ) + self.mlf_exp = self.mlflow.get_experiment_by_name(experiment_name) + if self.mlf_exp is not None: + self.mlf_expid = self.mlf_exp.experiment_id + else: + self.mlf_expid = self.mlflow.create_experiment(experiment_name) + + self.start_run(kwargs["run_name"], kwargs["run_tags"]) + + def start_run(self, name: str, tags: Dict[str, str]) -> None: + """To start a new run, auto generates the random suffix for name""" + if name.endswith("-%"): + rname = "".join(random.choices(string.ascii_uppercase + string.digits, k=7)) + name = name.replace("%", rname) + self.run = self.mlflow.MlflowClient().create_run( + self.mlf_expid, run_name=name, tags=tags + ) + + def finish_run(self) -> None: + """To finish the run.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.end_run() + + def metric(self, key: str, value: float) -> None: + """To log metric to mlflow server.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_metric(key, value) + + def metrics( + self, data: Union[Dict[str, float], Dict[str, int]], step: Optional[int] = 0 + ) -> None: + """To log all metrics in the input dict.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_metrics(data) + + def jsonf(self, data: Dict[str, Any], filename: str) -> None: + """To log the input data as json file artifact.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_dict(data, f"{filename}.json") + + def table(self, name: str, dataframe) -> None: # type: ignore + """To log the input pandas dataframe as a html table""" + self.html(dataframe.to_html(), f"table_{name}") + + def html(self, html: str, filename: str) -> None: + """To log the input html string as html file artifact.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_text(html, f"{filename}.html") + + def text(self, text: str, filename: str) -> None: + """To log the input text as text file artifact.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_text(text, f"{filename}.txt") + + def artifact(self, path: str) -> None: + """To upload the file from given path as artifact.""" + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.log_artifact(path) + + def langchain_artifact(self, chain: Any) -> None: + with self.mlflow.start_run( + run_id=self.run.info.run_id, experiment_id=self.mlf_expid + ): + self.mlflow.langchain.log_model(chain, "langchain-model") + + +class MlflowCallbackHandler(BaseMetadataCallbackHandler, BaseCallbackHandler): + """Callback Handler that logs metrics and artifacts to mlflow server. + + Parameters: + name (str): Name of the run. + experiment (str): Name of the experiment. + tags (dict): Tags to be attached for the run. + tracking_uri (str): MLflow tracking server uri. + + This handler will utilize the associated callback method called and formats + the input of each callback function with metadata regarding the state of LLM run, + and adds the response to the list of records for both the {method}_records and + action. It then logs the response to mlflow server. + """ + + def __init__( + self, + name: Optional[str] = "langchainrun-%", + experiment: Optional[str] = "langchain", + tags: Optional[Dict] = {}, + tracking_uri: Optional[str] = None, + ) -> None: + """Initialize callback handler.""" + import_pandas() + import_textstat() + import_mlflow() + spacy = import_spacy() + super().__init__() + + self.name = name + self.experiment = experiment + self.tags = tags + self.tracking_uri = tracking_uri + + self.temp_dir = tempfile.TemporaryDirectory() + + self.mlflg = MlflowLogger( + tracking_uri=self.tracking_uri, + experiment_name=self.experiment, + run_name=self.name, + run_tags=self.tags, + ) + + self.action_records: list = [] + self.nlp = spacy.load("en_core_web_sm") + + self.metrics = { + "step": 0, + "starts": 0, + "ends": 0, + "errors": 0, + "text_ctr": 0, + "chain_starts": 0, + "chain_ends": 0, + "llm_starts": 0, + "llm_ends": 0, + "llm_streams": 0, + "tool_starts": 0, + "tool_ends": 0, + "agent_ends": 0, + } + + self.records: Dict[str, Any] = { + "on_llm_start_records": [], + "on_llm_token_records": [], + "on_llm_end_records": [], + "on_chain_start_records": [], + "on_chain_end_records": [], + "on_tool_start_records": [], + "on_tool_end_records": [], + "on_text_records": [], + "on_agent_finish_records": [], + "on_agent_action_records": [], + "action_records": [], + } + + def _reset(self) -> None: + for k, v in self.metrics.items(): + self.metrics[k] = 0 + for k, v in self.records.items(): + self.records[k] = [] + + def on_llm_start( + self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any + ) -> None: + """Run when LLM starts.""" + self.metrics["step"] += 1 + self.metrics["llm_starts"] += 1 + self.metrics["starts"] += 1 + + llm_starts = self.metrics["llm_starts"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_llm_start"}) + resp.update(flatten_dict(serialized)) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + for idx, prompt in enumerate(prompts): + prompt_resp = deepcopy(resp) + prompt_resp["prompt"] = prompt + self.records["on_llm_start_records"].append(prompt_resp) + self.records["action_records"].append(prompt_resp) + self.mlflg.jsonf(prompt_resp, f"llm_start_{llm_starts}_prompt_{idx}") + + def on_llm_new_token(self, token: str, **kwargs: Any) -> None: + """Run when LLM generates a new token.""" + self.metrics["step"] += 1 + self.metrics["llm_streams"] += 1 + + llm_streams = self.metrics["llm_streams"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_llm_new_token", "token": token}) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_llm_token_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"llm_new_tokens_{llm_streams}") + + def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: + """Run when LLM ends running.""" + self.metrics["step"] += 1 + self.metrics["llm_ends"] += 1 + self.metrics["ends"] += 1 + + llm_ends = self.metrics["llm_ends"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_llm_end"}) + resp.update(flatten_dict(response.llm_output or {})) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + for generations in response.generations: + for idx, generation in enumerate(generations): + generation_resp = deepcopy(resp) + generation_resp.update(flatten_dict(generation.dict())) + generation_resp.update( + analyze_text( + generation.text, + nlp=self.nlp, + ) + ) + complexity_metrics: Dict[str, float] = generation_resp.pop("text_complexity_metrics") # type: ignore # noqa: E501 + self.mlflg.metrics( + complexity_metrics, + step=self.metrics["step"], + ) + self.records["on_llm_end_records"].append(generation_resp) + self.records["action_records"].append(generation_resp) + self.mlflg.jsonf(resp, f"llm_end_{llm_ends}_generation_{idx}") + dependency_tree = generation_resp["dependency_tree"] + entities = generation_resp["entities"] + self.mlflg.html(dependency_tree, "dep-" + hash_string(generation.text)) + self.mlflg.html(entities, "ent-" + hash_string(generation.text)) + + def on_llm_error( + self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any + ) -> None: + """Run when LLM errors.""" + self.metrics["step"] += 1 + self.metrics["errors"] += 1 + + def on_chain_start( + self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any + ) -> None: + """Run when chain starts running.""" + self.metrics["step"] += 1 + self.metrics["chain_starts"] += 1 + self.metrics["starts"] += 1 + + chain_starts = self.metrics["chain_starts"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_chain_start"}) + resp.update(flatten_dict(serialized)) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + chain_input = ",".join([f"{k}={v}" for k, v in inputs.items()]) + input_resp = deepcopy(resp) + input_resp["inputs"] = chain_input + self.records["on_chain_start_records"].append(input_resp) + self.records["action_records"].append(input_resp) + self.mlflg.jsonf(input_resp, f"chain_start_{chain_starts}") + + def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None: + """Run when chain ends running.""" + self.metrics["step"] += 1 + self.metrics["chain_ends"] += 1 + self.metrics["ends"] += 1 + + chain_ends = self.metrics["chain_ends"] + + resp: Dict[str, Any] = {} + chain_output = ",".join([f"{k}={v}" for k, v in outputs.items()]) + resp.update({"action": "on_chain_end", "outputs": chain_output}) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_chain_end_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"chain_end_{chain_ends}") + + def on_chain_error( + self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any + ) -> None: + """Run when chain errors.""" + self.metrics["step"] += 1 + self.metrics["errors"] += 1 + + def on_tool_start( + self, serialized: Dict[str, Any], input_str: str, **kwargs: Any + ) -> None: + """Run when tool starts running.""" + self.metrics["step"] += 1 + self.metrics["tool_starts"] += 1 + self.metrics["starts"] += 1 + + tool_starts = self.metrics["tool_starts"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_tool_start", "input_str": input_str}) + resp.update(flatten_dict(serialized)) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_tool_start_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"tool_start_{tool_starts}") + + def on_tool_end(self, output: str, **kwargs: Any) -> None: + """Run when tool ends running.""" + self.metrics["step"] += 1 + self.metrics["tool_ends"] += 1 + self.metrics["ends"] += 1 + + tool_ends = self.metrics["tool_ends"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_tool_end", "output": output}) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_tool_end_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"tool_end_{tool_ends}") + + def on_tool_error( + self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any + ) -> None: + """Run when tool errors.""" + self.metrics["step"] += 1 + self.metrics["errors"] += 1 + + def on_text(self, text: str, **kwargs: Any) -> None: + """ + Run when agent is ending. + """ + self.metrics["step"] += 1 + self.metrics["text_ctr"] += 1 + + text_ctr = self.metrics["text_ctr"] + + resp: Dict[str, Any] = {} + resp.update({"action": "on_text", "text": text}) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_text_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"on_text_{text_ctr}") + + def on_agent_finish(self, finish: AgentFinish, **kwargs: Any) -> None: + """Run when agent ends running.""" + self.metrics["step"] += 1 + self.metrics["agent_ends"] += 1 + self.metrics["ends"] += 1 + + agent_ends = self.metrics["agent_ends"] + resp: Dict[str, Any] = {} + resp.update( + { + "action": "on_agent_finish", + "output": finish.return_values["output"], + "log": finish.log, + } + ) + resp.update(self.metrics) + + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + + self.records["on_agent_finish_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"agent_finish_{agent_ends}") + + def on_agent_action(self, action: AgentAction, **kwargs: Any) -> Any: + """Run on agent action.""" + self.metrics["step"] += 1 + self.metrics["tool_starts"] += 1 + self.metrics["starts"] += 1 + + tool_starts = self.metrics["tool_starts"] + resp: Dict[str, Any] = {} + resp.update( + { + "action": "on_agent_action", + "tool": action.tool, + "tool_input": action.tool_input, + "log": action.log, + } + ) + resp.update(self.metrics) + self.mlflg.metrics(self.metrics, step=self.metrics["step"]) + self.records["on_agent_action_records"].append(resp) + self.records["action_records"].append(resp) + self.mlflg.jsonf(resp, f"agent_action_{tool_starts}") + + def _create_session_analysis_df(self) -> Any: + """Create a dataframe with all the information from the session.""" + pd = import_pandas() + on_llm_start_records_df = pd.DataFrame(self.records["on_llm_start_records"]) + on_llm_end_records_df = pd.DataFrame(self.records["on_llm_end_records"]) + + llm_input_columns = ["step", "prompt"] + if "name" in on_llm_start_records_df.columns: + llm_input_columns.append("name") + elif "id" in on_llm_start_records_df.columns: + # id is llm class's full import path. For example: + # ["langchain", "llms", "openai", "AzureOpenAI"] + on_llm_start_records_df["name"] = on_llm_start_records_df["id"].apply( + lambda id_: id_[-1] + ) + llm_input_columns.append("name") + llm_input_prompts_df = ( + on_llm_start_records_df[llm_input_columns] + .dropna(axis=1) + .rename({"step": "prompt_step"}, axis=1) + ) + complexity_metrics_columns = [] + visualizations_columns = [] + + complexity_metrics_columns = [ + "flesch_reading_ease", + "flesch_kincaid_grade", + "smog_index", + "coleman_liau_index", + "automated_readability_index", + "dale_chall_readability_score", + "difficult_words", + "linsear_write_formula", + "gunning_fog", + # "text_standard", + "fernandez_huerta", + "szigriszt_pazos", + "gutierrez_polini", + "crawford", + "gulpease_index", + "osman", + ] + + visualizations_columns = ["dependency_tree", "entities"] + + llm_outputs_df = ( + on_llm_end_records_df[ + [ + "step", + "text", + "token_usage_total_tokens", + "token_usage_prompt_tokens", + "token_usage_completion_tokens", + ] + + complexity_metrics_columns + + visualizations_columns + ] + .dropna(axis=1) + .rename({"step": "output_step", "text": "output"}, axis=1) + ) + session_analysis_df = pd.concat([llm_input_prompts_df, llm_outputs_df], axis=1) + session_analysis_df["chat_html"] = session_analysis_df[ + ["prompt", "output"] + ].apply( + lambda row: construct_html_from_prompt_and_generation( + row["prompt"], row["output"] + ), + axis=1, + ) + return session_analysis_df + + def flush_tracker(self, langchain_asset: Any = None, finish: bool = False) -> None: + pd = import_pandas() + self.mlflg.table("action_records", pd.DataFrame(self.records["action_records"])) + session_analysis_df = self._create_session_analysis_df() + chat_html = session_analysis_df.pop("chat_html") + chat_html = chat_html.replace("\n", "", regex=True) + self.mlflg.table("session_analysis", pd.DataFrame(session_analysis_df)) + self.mlflg.html("".join(chat_html.tolist()), "chat_html") + + if langchain_asset: + # To avoid circular import error + # mlflow only supports LLMChain asset + if "langchain.chains.llm.LLMChain" in str(type(langchain_asset)): + self.mlflg.langchain_artifact(langchain_asset) + else: + langchain_asset_path = str(Path(self.temp_dir.name, "model.json")) + try: + langchain_asset.save(langchain_asset_path) + self.mlflg.artifact(langchain_asset_path) + except ValueError: + try: + langchain_asset.save_agent(langchain_asset_path) + self.mlflg.artifact(langchain_asset_path) + except AttributeError: + print("Could not save model.") + traceback.print_exc() + pass + except NotImplementedError: + print("Could not save model.") + traceback.print_exc() + pass + except NotImplementedError: + print("Could not save model.") + traceback.print_exc() + pass + if finish: + self.mlflg.finish_run() + self._reset() diff --git a/langchain/callbacks/openai_info.py b/libs/langchain/langchain/callbacks/openai_info.py similarity index 100% rename from langchain/callbacks/openai_info.py rename to libs/langchain/langchain/callbacks/openai_info.py diff --git a/langchain/callbacks/promptlayer_callback.py b/libs/langchain/langchain/callbacks/promptlayer_callback.py similarity index 100% rename from langchain/callbacks/promptlayer_callback.py rename to libs/langchain/langchain/callbacks/promptlayer_callback.py diff --git a/langchain/callbacks/stdout.py b/libs/langchain/langchain/callbacks/stdout.py similarity index 100% rename from langchain/callbacks/stdout.py rename to libs/langchain/langchain/callbacks/stdout.py diff --git a/langchain/callbacks/streaming_aiter.py b/libs/langchain/langchain/callbacks/streaming_aiter.py similarity index 100% rename from langchain/callbacks/streaming_aiter.py rename to libs/langchain/langchain/callbacks/streaming_aiter.py diff --git a/langchain/callbacks/streaming_aiter_final_only.py b/libs/langchain/langchain/callbacks/streaming_aiter_final_only.py similarity index 100% rename from langchain/callbacks/streaming_aiter_final_only.py rename to libs/langchain/langchain/callbacks/streaming_aiter_final_only.py diff --git a/langchain/callbacks/streaming_stdout.py b/libs/langchain/langchain/callbacks/streaming_stdout.py similarity index 100% rename from langchain/callbacks/streaming_stdout.py rename to libs/langchain/langchain/callbacks/streaming_stdout.py diff --git a/langchain/callbacks/streaming_stdout_final_only.py b/libs/langchain/langchain/callbacks/streaming_stdout_final_only.py similarity index 100% rename from langchain/callbacks/streaming_stdout_final_only.py rename to libs/langchain/langchain/callbacks/streaming_stdout_final_only.py diff --git a/langchain/callbacks/streamlit/__init__.py b/libs/langchain/langchain/callbacks/streamlit/__init__.py similarity index 100% rename from langchain/callbacks/streamlit/__init__.py rename to libs/langchain/langchain/callbacks/streamlit/__init__.py diff --git a/langchain/callbacks/streamlit/mutable_expander.py b/libs/langchain/langchain/callbacks/streamlit/mutable_expander.py similarity index 100% rename from langchain/callbacks/streamlit/mutable_expander.py rename to libs/langchain/langchain/callbacks/streamlit/mutable_expander.py diff --git a/langchain/callbacks/streamlit/streamlit_callback_handler.py b/libs/langchain/langchain/callbacks/streamlit/streamlit_callback_handler.py similarity index 100% rename from langchain/callbacks/streamlit/streamlit_callback_handler.py rename to libs/langchain/langchain/callbacks/streamlit/streamlit_callback_handler.py diff --git a/langchain/callbacks/tracers/__init__.py b/libs/langchain/langchain/callbacks/tracers/__init__.py similarity index 100% rename from langchain/callbacks/tracers/__init__.py rename to libs/langchain/langchain/callbacks/tracers/__init__.py diff --git a/langchain/callbacks/tracers/base.py b/libs/langchain/langchain/callbacks/tracers/base.py similarity index 100% rename from langchain/callbacks/tracers/base.py rename to libs/langchain/langchain/callbacks/tracers/base.py diff --git a/langchain/callbacks/tracers/evaluation.py b/libs/langchain/langchain/callbacks/tracers/evaluation.py similarity index 100% rename from langchain/callbacks/tracers/evaluation.py rename to libs/langchain/langchain/callbacks/tracers/evaluation.py diff --git a/langchain/callbacks/tracers/langchain.py b/libs/langchain/langchain/callbacks/tracers/langchain.py similarity index 100% rename from langchain/callbacks/tracers/langchain.py rename to libs/langchain/langchain/callbacks/tracers/langchain.py diff --git a/langchain/callbacks/tracers/langchain_v1.py b/libs/langchain/langchain/callbacks/tracers/langchain_v1.py similarity index 100% rename from langchain/callbacks/tracers/langchain_v1.py rename to libs/langchain/langchain/callbacks/tracers/langchain_v1.py diff --git a/langchain/callbacks/tracers/run_collector.py b/libs/langchain/langchain/callbacks/tracers/run_collector.py similarity index 100% rename from langchain/callbacks/tracers/run_collector.py rename to libs/langchain/langchain/callbacks/tracers/run_collector.py diff --git a/langchain/callbacks/tracers/schemas.py b/libs/langchain/langchain/callbacks/tracers/schemas.py similarity index 100% rename from langchain/callbacks/tracers/schemas.py rename to libs/langchain/langchain/callbacks/tracers/schemas.py diff --git a/langchain/callbacks/tracers/stdout.py b/libs/langchain/langchain/callbacks/tracers/stdout.py similarity index 100% rename from langchain/callbacks/tracers/stdout.py rename to libs/langchain/langchain/callbacks/tracers/stdout.py diff --git a/langchain/callbacks/tracers/wandb.py b/libs/langchain/langchain/callbacks/tracers/wandb.py similarity index 100% rename from langchain/callbacks/tracers/wandb.py rename to libs/langchain/langchain/callbacks/tracers/wandb.py diff --git a/langchain/callbacks/utils.py b/libs/langchain/langchain/callbacks/utils.py similarity index 100% rename from langchain/callbacks/utils.py rename to libs/langchain/langchain/callbacks/utils.py diff --git a/langchain/callbacks/wandb_callback.py b/libs/langchain/langchain/callbacks/wandb_callback.py similarity index 100% rename from langchain/callbacks/wandb_callback.py rename to libs/langchain/langchain/callbacks/wandb_callback.py diff --git a/langchain/callbacks/whylabs_callback.py b/libs/langchain/langchain/callbacks/whylabs_callback.py similarity index 100% rename from langchain/callbacks/whylabs_callback.py rename to libs/langchain/langchain/callbacks/whylabs_callback.py diff --git a/langchain/chains/__init__.py b/libs/langchain/langchain/chains/__init__.py similarity index 100% rename from langchain/chains/__init__.py rename to libs/langchain/langchain/chains/__init__.py diff --git a/langchain/chains/api/__init__.py b/libs/langchain/langchain/chains/api/__init__.py similarity index 100% rename from langchain/chains/api/__init__.py rename to libs/langchain/langchain/chains/api/__init__.py diff --git a/langchain/chains/api/base.py b/libs/langchain/langchain/chains/api/base.py similarity index 100% rename from langchain/chains/api/base.py rename to libs/langchain/langchain/chains/api/base.py diff --git a/langchain/chains/api/news_docs.py b/libs/langchain/langchain/chains/api/news_docs.py similarity index 100% rename from langchain/chains/api/news_docs.py rename to libs/langchain/langchain/chains/api/news_docs.py diff --git a/langchain/chains/api/open_meteo_docs.py b/libs/langchain/langchain/chains/api/open_meteo_docs.py similarity index 100% rename from langchain/chains/api/open_meteo_docs.py rename to libs/langchain/langchain/chains/api/open_meteo_docs.py diff --git a/langchain/chains/api/openapi/__init__.py b/libs/langchain/langchain/chains/api/openapi/__init__.py similarity index 100% rename from langchain/chains/api/openapi/__init__.py rename to libs/langchain/langchain/chains/api/openapi/__init__.py diff --git a/langchain/chains/api/openapi/chain.py b/libs/langchain/langchain/chains/api/openapi/chain.py similarity index 100% rename from langchain/chains/api/openapi/chain.py rename to libs/langchain/langchain/chains/api/openapi/chain.py diff --git a/langchain/chains/api/openapi/prompts.py b/libs/langchain/langchain/chains/api/openapi/prompts.py similarity index 100% rename from langchain/chains/api/openapi/prompts.py rename to libs/langchain/langchain/chains/api/openapi/prompts.py diff --git a/langchain/chains/api/openapi/requests_chain.py b/libs/langchain/langchain/chains/api/openapi/requests_chain.py similarity index 100% rename from langchain/chains/api/openapi/requests_chain.py rename to libs/langchain/langchain/chains/api/openapi/requests_chain.py diff --git a/langchain/chains/api/openapi/response_chain.py b/libs/langchain/langchain/chains/api/openapi/response_chain.py similarity index 100% rename from langchain/chains/api/openapi/response_chain.py rename to libs/langchain/langchain/chains/api/openapi/response_chain.py diff --git a/langchain/chains/api/podcast_docs.py b/libs/langchain/langchain/chains/api/podcast_docs.py similarity index 100% rename from langchain/chains/api/podcast_docs.py rename to libs/langchain/langchain/chains/api/podcast_docs.py diff --git a/langchain/chains/api/prompt.py b/libs/langchain/langchain/chains/api/prompt.py similarity index 100% rename from langchain/chains/api/prompt.py rename to libs/langchain/langchain/chains/api/prompt.py diff --git a/langchain/chains/api/tmdb_docs.py b/libs/langchain/langchain/chains/api/tmdb_docs.py similarity index 100% rename from langchain/chains/api/tmdb_docs.py rename to libs/langchain/langchain/chains/api/tmdb_docs.py diff --git a/langchain/chains/base.py b/libs/langchain/langchain/chains/base.py similarity index 100% rename from langchain/chains/base.py rename to libs/langchain/langchain/chains/base.py diff --git a/langchain/chains/chat_vector_db/__init__.py b/libs/langchain/langchain/chains/chat_vector_db/__init__.py similarity index 100% rename from langchain/chains/chat_vector_db/__init__.py rename to libs/langchain/langchain/chains/chat_vector_db/__init__.py diff --git a/langchain/chains/chat_vector_db/prompts.py b/libs/langchain/langchain/chains/chat_vector_db/prompts.py similarity index 100% rename from langchain/chains/chat_vector_db/prompts.py rename to libs/langchain/langchain/chains/chat_vector_db/prompts.py diff --git a/langchain/chains/combine_documents/__init__.py b/libs/langchain/langchain/chains/combine_documents/__init__.py similarity index 100% rename from langchain/chains/combine_documents/__init__.py rename to libs/langchain/langchain/chains/combine_documents/__init__.py diff --git a/langchain/chains/combine_documents/base.py b/libs/langchain/langchain/chains/combine_documents/base.py similarity index 100% rename from langchain/chains/combine_documents/base.py rename to libs/langchain/langchain/chains/combine_documents/base.py diff --git a/langchain/chains/combine_documents/map_reduce.py b/libs/langchain/langchain/chains/combine_documents/map_reduce.py similarity index 100% rename from langchain/chains/combine_documents/map_reduce.py rename to libs/langchain/langchain/chains/combine_documents/map_reduce.py diff --git a/langchain/chains/combine_documents/map_rerank.py b/libs/langchain/langchain/chains/combine_documents/map_rerank.py similarity index 100% rename from langchain/chains/combine_documents/map_rerank.py rename to libs/langchain/langchain/chains/combine_documents/map_rerank.py diff --git a/langchain/chains/combine_documents/reduce.py b/libs/langchain/langchain/chains/combine_documents/reduce.py similarity index 100% rename from langchain/chains/combine_documents/reduce.py rename to libs/langchain/langchain/chains/combine_documents/reduce.py diff --git a/langchain/chains/combine_documents/refine.py b/libs/langchain/langchain/chains/combine_documents/refine.py similarity index 100% rename from langchain/chains/combine_documents/refine.py rename to libs/langchain/langchain/chains/combine_documents/refine.py diff --git a/langchain/chains/combine_documents/stuff.py b/libs/langchain/langchain/chains/combine_documents/stuff.py similarity index 100% rename from langchain/chains/combine_documents/stuff.py rename to libs/langchain/langchain/chains/combine_documents/stuff.py diff --git a/langchain/chains/constitutional_ai/__init__.py b/libs/langchain/langchain/chains/constitutional_ai/__init__.py similarity index 100% rename from langchain/chains/constitutional_ai/__init__.py rename to libs/langchain/langchain/chains/constitutional_ai/__init__.py diff --git a/langchain/chains/constitutional_ai/base.py b/libs/langchain/langchain/chains/constitutional_ai/base.py similarity index 100% rename from langchain/chains/constitutional_ai/base.py rename to libs/langchain/langchain/chains/constitutional_ai/base.py diff --git a/langchain/chains/constitutional_ai/models.py b/libs/langchain/langchain/chains/constitutional_ai/models.py similarity index 100% rename from langchain/chains/constitutional_ai/models.py rename to libs/langchain/langchain/chains/constitutional_ai/models.py diff --git a/langchain/chains/constitutional_ai/principles.py b/libs/langchain/langchain/chains/constitutional_ai/principles.py similarity index 100% rename from langchain/chains/constitutional_ai/principles.py rename to libs/langchain/langchain/chains/constitutional_ai/principles.py diff --git a/langchain/chains/constitutional_ai/prompts.py b/libs/langchain/langchain/chains/constitutional_ai/prompts.py similarity index 100% rename from langchain/chains/constitutional_ai/prompts.py rename to libs/langchain/langchain/chains/constitutional_ai/prompts.py diff --git a/langchain/chains/conversation/__init__.py b/libs/langchain/langchain/chains/conversation/__init__.py similarity index 100% rename from langchain/chains/conversation/__init__.py rename to libs/langchain/langchain/chains/conversation/__init__.py diff --git a/langchain/chains/conversation/base.py b/libs/langchain/langchain/chains/conversation/base.py similarity index 100% rename from langchain/chains/conversation/base.py rename to libs/langchain/langchain/chains/conversation/base.py diff --git a/langchain/chains/conversation/memory.py b/libs/langchain/langchain/chains/conversation/memory.py similarity index 100% rename from langchain/chains/conversation/memory.py rename to libs/langchain/langchain/chains/conversation/memory.py diff --git a/langchain/chains/conversation/prompt.py b/libs/langchain/langchain/chains/conversation/prompt.py similarity index 100% rename from langchain/chains/conversation/prompt.py rename to libs/langchain/langchain/chains/conversation/prompt.py diff --git a/langchain/chains/conversational_retrieval/__init__.py b/libs/langchain/langchain/chains/conversational_retrieval/__init__.py similarity index 100% rename from langchain/chains/conversational_retrieval/__init__.py rename to libs/langchain/langchain/chains/conversational_retrieval/__init__.py diff --git a/langchain/chains/conversational_retrieval/base.py b/libs/langchain/langchain/chains/conversational_retrieval/base.py similarity index 100% rename from langchain/chains/conversational_retrieval/base.py rename to libs/langchain/langchain/chains/conversational_retrieval/base.py diff --git a/langchain/chains/conversational_retrieval/prompts.py b/libs/langchain/langchain/chains/conversational_retrieval/prompts.py similarity index 100% rename from langchain/chains/conversational_retrieval/prompts.py rename to libs/langchain/langchain/chains/conversational_retrieval/prompts.py diff --git a/langchain/chains/elasticsearch_database/__init__.py b/libs/langchain/langchain/chains/elasticsearch_database/__init__.py similarity index 100% rename from langchain/chains/elasticsearch_database/__init__.py rename to libs/langchain/langchain/chains/elasticsearch_database/__init__.py diff --git a/langchain/chains/elasticsearch_database/base.py b/libs/langchain/langchain/chains/elasticsearch_database/base.py similarity index 100% rename from langchain/chains/elasticsearch_database/base.py rename to libs/langchain/langchain/chains/elasticsearch_database/base.py diff --git a/langchain/chains/elasticsearch_database/prompts.py b/libs/langchain/langchain/chains/elasticsearch_database/prompts.py similarity index 100% rename from langchain/chains/elasticsearch_database/prompts.py rename to libs/langchain/langchain/chains/elasticsearch_database/prompts.py diff --git a/langchain/chains/flare/__init__.py b/libs/langchain/langchain/chains/flare/__init__.py similarity index 100% rename from langchain/chains/flare/__init__.py rename to libs/langchain/langchain/chains/flare/__init__.py diff --git a/langchain/chains/flare/base.py b/libs/langchain/langchain/chains/flare/base.py similarity index 100% rename from langchain/chains/flare/base.py rename to libs/langchain/langchain/chains/flare/base.py diff --git a/langchain/chains/flare/prompts.py b/libs/langchain/langchain/chains/flare/prompts.py similarity index 100% rename from langchain/chains/flare/prompts.py rename to libs/langchain/langchain/chains/flare/prompts.py diff --git a/langchain/chains/graph_qa/__init__.py b/libs/langchain/langchain/chains/graph_qa/__init__.py similarity index 100% rename from langchain/chains/graph_qa/__init__.py rename to libs/langchain/langchain/chains/graph_qa/__init__.py diff --git a/langchain/chains/graph_qa/base.py b/libs/langchain/langchain/chains/graph_qa/base.py similarity index 100% rename from langchain/chains/graph_qa/base.py rename to libs/langchain/langchain/chains/graph_qa/base.py diff --git a/langchain/chains/graph_qa/cypher.py b/libs/langchain/langchain/chains/graph_qa/cypher.py similarity index 100% rename from langchain/chains/graph_qa/cypher.py rename to libs/langchain/langchain/chains/graph_qa/cypher.py diff --git a/langchain/chains/graph_qa/hugegraph.py b/libs/langchain/langchain/chains/graph_qa/hugegraph.py similarity index 100% rename from langchain/chains/graph_qa/hugegraph.py rename to libs/langchain/langchain/chains/graph_qa/hugegraph.py diff --git a/langchain/chains/graph_qa/kuzu.py b/libs/langchain/langchain/chains/graph_qa/kuzu.py similarity index 100% rename from langchain/chains/graph_qa/kuzu.py rename to libs/langchain/langchain/chains/graph_qa/kuzu.py diff --git a/langchain/chains/graph_qa/nebulagraph.py b/libs/langchain/langchain/chains/graph_qa/nebulagraph.py similarity index 100% rename from langchain/chains/graph_qa/nebulagraph.py rename to libs/langchain/langchain/chains/graph_qa/nebulagraph.py diff --git a/langchain/chains/graph_qa/neptune_cypher.py b/libs/langchain/langchain/chains/graph_qa/neptune_cypher.py similarity index 100% rename from langchain/chains/graph_qa/neptune_cypher.py rename to libs/langchain/langchain/chains/graph_qa/neptune_cypher.py diff --git a/langchain/chains/graph_qa/prompts.py b/libs/langchain/langchain/chains/graph_qa/prompts.py similarity index 100% rename from langchain/chains/graph_qa/prompts.py rename to libs/langchain/langchain/chains/graph_qa/prompts.py diff --git a/langchain/chains/graph_qa/sparql.py b/libs/langchain/langchain/chains/graph_qa/sparql.py similarity index 100% rename from langchain/chains/graph_qa/sparql.py rename to libs/langchain/langchain/chains/graph_qa/sparql.py diff --git a/langchain/chains/hyde/__init__.py b/libs/langchain/langchain/chains/hyde/__init__.py similarity index 100% rename from langchain/chains/hyde/__init__.py rename to libs/langchain/langchain/chains/hyde/__init__.py diff --git a/langchain/chains/hyde/base.py b/libs/langchain/langchain/chains/hyde/base.py similarity index 100% rename from langchain/chains/hyde/base.py rename to libs/langchain/langchain/chains/hyde/base.py diff --git a/langchain/chains/hyde/prompts.py b/libs/langchain/langchain/chains/hyde/prompts.py similarity index 100% rename from langchain/chains/hyde/prompts.py rename to libs/langchain/langchain/chains/hyde/prompts.py diff --git a/langchain/chains/llm.py b/libs/langchain/langchain/chains/llm.py similarity index 100% rename from langchain/chains/llm.py rename to libs/langchain/langchain/chains/llm.py diff --git a/langchain/chains/llm_bash/__init__.py b/libs/langchain/langchain/chains/llm_bash/__init__.py similarity index 100% rename from langchain/chains/llm_bash/__init__.py rename to libs/langchain/langchain/chains/llm_bash/__init__.py diff --git a/langchain/chains/llm_bash/base.py b/libs/langchain/langchain/chains/llm_bash/base.py similarity index 100% rename from langchain/chains/llm_bash/base.py rename to libs/langchain/langchain/chains/llm_bash/base.py diff --git a/langchain/chains/llm_bash/prompt.py b/libs/langchain/langchain/chains/llm_bash/prompt.py similarity index 100% rename from langchain/chains/llm_bash/prompt.py rename to libs/langchain/langchain/chains/llm_bash/prompt.py diff --git a/langchain/chains/llm_checker/__init__.py b/libs/langchain/langchain/chains/llm_checker/__init__.py similarity index 100% rename from langchain/chains/llm_checker/__init__.py rename to libs/langchain/langchain/chains/llm_checker/__init__.py diff --git a/langchain/chains/llm_checker/base.py b/libs/langchain/langchain/chains/llm_checker/base.py similarity index 100% rename from langchain/chains/llm_checker/base.py rename to libs/langchain/langchain/chains/llm_checker/base.py diff --git a/langchain/chains/llm_checker/prompt.py b/libs/langchain/langchain/chains/llm_checker/prompt.py similarity index 100% rename from langchain/chains/llm_checker/prompt.py rename to libs/langchain/langchain/chains/llm_checker/prompt.py diff --git a/langchain/chains/llm_math/__init__.py b/libs/langchain/langchain/chains/llm_math/__init__.py similarity index 100% rename from langchain/chains/llm_math/__init__.py rename to libs/langchain/langchain/chains/llm_math/__init__.py diff --git a/langchain/chains/llm_math/base.py b/libs/langchain/langchain/chains/llm_math/base.py similarity index 100% rename from langchain/chains/llm_math/base.py rename to libs/langchain/langchain/chains/llm_math/base.py diff --git a/langchain/chains/llm_math/prompt.py b/libs/langchain/langchain/chains/llm_math/prompt.py similarity index 100% rename from langchain/chains/llm_math/prompt.py rename to libs/langchain/langchain/chains/llm_math/prompt.py diff --git a/langchain/chains/llm_requests.py b/libs/langchain/langchain/chains/llm_requests.py similarity index 100% rename from langchain/chains/llm_requests.py rename to libs/langchain/langchain/chains/llm_requests.py diff --git a/langchain/chains/llm_summarization_checker/__init__.py b/libs/langchain/langchain/chains/llm_summarization_checker/__init__.py similarity index 100% rename from langchain/chains/llm_summarization_checker/__init__.py rename to libs/langchain/langchain/chains/llm_summarization_checker/__init__.py diff --git a/langchain/chains/llm_summarization_checker/base.py b/libs/langchain/langchain/chains/llm_summarization_checker/base.py similarity index 100% rename from langchain/chains/llm_summarization_checker/base.py rename to libs/langchain/langchain/chains/llm_summarization_checker/base.py diff --git a/langchain/chains/llm_summarization_checker/prompts/are_all_true_prompt.txt b/libs/langchain/langchain/chains/llm_summarization_checker/prompts/are_all_true_prompt.txt similarity index 100% rename from langchain/chains/llm_summarization_checker/prompts/are_all_true_prompt.txt rename to libs/langchain/langchain/chains/llm_summarization_checker/prompts/are_all_true_prompt.txt diff --git a/langchain/chains/llm_summarization_checker/prompts/check_facts.txt b/libs/langchain/langchain/chains/llm_summarization_checker/prompts/check_facts.txt similarity index 100% rename from langchain/chains/llm_summarization_checker/prompts/check_facts.txt rename to libs/langchain/langchain/chains/llm_summarization_checker/prompts/check_facts.txt diff --git a/langchain/chains/llm_summarization_checker/prompts/create_facts.txt b/libs/langchain/langchain/chains/llm_summarization_checker/prompts/create_facts.txt similarity index 100% rename from langchain/chains/llm_summarization_checker/prompts/create_facts.txt rename to libs/langchain/langchain/chains/llm_summarization_checker/prompts/create_facts.txt diff --git a/langchain/chains/llm_summarization_checker/prompts/revise_summary.txt b/libs/langchain/langchain/chains/llm_summarization_checker/prompts/revise_summary.txt similarity index 100% rename from langchain/chains/llm_summarization_checker/prompts/revise_summary.txt rename to libs/langchain/langchain/chains/llm_summarization_checker/prompts/revise_summary.txt diff --git a/langchain/chains/llm_symbolic_math/__init__.py b/libs/langchain/langchain/chains/llm_symbolic_math/__init__.py similarity index 100% rename from langchain/chains/llm_symbolic_math/__init__.py rename to libs/langchain/langchain/chains/llm_symbolic_math/__init__.py diff --git a/langchain/chains/llm_symbolic_math/base.py b/libs/langchain/langchain/chains/llm_symbolic_math/base.py similarity index 100% rename from langchain/chains/llm_symbolic_math/base.py rename to libs/langchain/langchain/chains/llm_symbolic_math/base.py diff --git a/langchain/chains/llm_symbolic_math/prompt.py b/libs/langchain/langchain/chains/llm_symbolic_math/prompt.py similarity index 100% rename from langchain/chains/llm_symbolic_math/prompt.py rename to libs/langchain/langchain/chains/llm_symbolic_math/prompt.py diff --git a/langchain/chains/loading.py b/libs/langchain/langchain/chains/loading.py similarity index 100% rename from langchain/chains/loading.py rename to libs/langchain/langchain/chains/loading.py diff --git a/langchain/chains/mapreduce.py b/libs/langchain/langchain/chains/mapreduce.py similarity index 100% rename from langchain/chains/mapreduce.py rename to libs/langchain/langchain/chains/mapreduce.py diff --git a/langchain/chains/moderation.py b/libs/langchain/langchain/chains/moderation.py similarity index 100% rename from langchain/chains/moderation.py rename to libs/langchain/langchain/chains/moderation.py diff --git a/langchain/chains/natbot/__init__.py b/libs/langchain/langchain/chains/natbot/__init__.py similarity index 100% rename from langchain/chains/natbot/__init__.py rename to libs/langchain/langchain/chains/natbot/__init__.py diff --git a/langchain/chains/natbot/base.py b/libs/langchain/langchain/chains/natbot/base.py similarity index 100% rename from langchain/chains/natbot/base.py rename to libs/langchain/langchain/chains/natbot/base.py diff --git a/langchain/chains/natbot/crawler.py b/libs/langchain/langchain/chains/natbot/crawler.py similarity index 100% rename from langchain/chains/natbot/crawler.py rename to libs/langchain/langchain/chains/natbot/crawler.py diff --git a/langchain/chains/natbot/prompt.py b/libs/langchain/langchain/chains/natbot/prompt.py similarity index 100% rename from langchain/chains/natbot/prompt.py rename to libs/langchain/langchain/chains/natbot/prompt.py diff --git a/langchain/chains/openai_functions/__init__.py b/libs/langchain/langchain/chains/openai_functions/__init__.py similarity index 100% rename from langchain/chains/openai_functions/__init__.py rename to libs/langchain/langchain/chains/openai_functions/__init__.py diff --git a/langchain/chains/openai_functions/base.py b/libs/langchain/langchain/chains/openai_functions/base.py similarity index 100% rename from langchain/chains/openai_functions/base.py rename to libs/langchain/langchain/chains/openai_functions/base.py diff --git a/langchain/chains/openai_functions/citation_fuzzy_match.py b/libs/langchain/langchain/chains/openai_functions/citation_fuzzy_match.py similarity index 100% rename from langchain/chains/openai_functions/citation_fuzzy_match.py rename to libs/langchain/langchain/chains/openai_functions/citation_fuzzy_match.py diff --git a/langchain/chains/openai_functions/extraction.py b/libs/langchain/langchain/chains/openai_functions/extraction.py similarity index 100% rename from langchain/chains/openai_functions/extraction.py rename to libs/langchain/langchain/chains/openai_functions/extraction.py diff --git a/langchain/chains/openai_functions/openapi.py b/libs/langchain/langchain/chains/openai_functions/openapi.py similarity index 100% rename from langchain/chains/openai_functions/openapi.py rename to libs/langchain/langchain/chains/openai_functions/openapi.py diff --git a/langchain/chains/openai_functions/qa_with_structure.py b/libs/langchain/langchain/chains/openai_functions/qa_with_structure.py similarity index 100% rename from langchain/chains/openai_functions/qa_with_structure.py rename to libs/langchain/langchain/chains/openai_functions/qa_with_structure.py diff --git a/langchain/chains/openai_functions/tagging.py b/libs/langchain/langchain/chains/openai_functions/tagging.py similarity index 100% rename from langchain/chains/openai_functions/tagging.py rename to libs/langchain/langchain/chains/openai_functions/tagging.py diff --git a/langchain/chains/openai_functions/utils.py b/libs/langchain/langchain/chains/openai_functions/utils.py similarity index 100% rename from langchain/chains/openai_functions/utils.py rename to libs/langchain/langchain/chains/openai_functions/utils.py diff --git a/langchain/chains/pal/__init__.py b/libs/langchain/langchain/chains/pal/__init__.py similarity index 100% rename from langchain/chains/pal/__init__.py rename to libs/langchain/langchain/chains/pal/__init__.py diff --git a/langchain/chains/pal/base.py b/libs/langchain/langchain/chains/pal/base.py similarity index 100% rename from langchain/chains/pal/base.py rename to libs/langchain/langchain/chains/pal/base.py diff --git a/langchain/chains/pal/colored_object_prompt.py b/libs/langchain/langchain/chains/pal/colored_object_prompt.py similarity index 100% rename from langchain/chains/pal/colored_object_prompt.py rename to libs/langchain/langchain/chains/pal/colored_object_prompt.py diff --git a/langchain/chains/pal/math_prompt.py b/libs/langchain/langchain/chains/pal/math_prompt.py similarity index 100% rename from langchain/chains/pal/math_prompt.py rename to libs/langchain/langchain/chains/pal/math_prompt.py diff --git a/langchain/chains/prompt_selector.py b/libs/langchain/langchain/chains/prompt_selector.py similarity index 100% rename from langchain/chains/prompt_selector.py rename to libs/langchain/langchain/chains/prompt_selector.py diff --git a/langchain/chains/qa_generation/__init__.py b/libs/langchain/langchain/chains/qa_generation/__init__.py similarity index 100% rename from langchain/chains/qa_generation/__init__.py rename to libs/langchain/langchain/chains/qa_generation/__init__.py diff --git a/langchain/chains/qa_generation/base.py b/libs/langchain/langchain/chains/qa_generation/base.py similarity index 100% rename from langchain/chains/qa_generation/base.py rename to libs/langchain/langchain/chains/qa_generation/base.py diff --git a/langchain/chains/qa_generation/prompt.py b/libs/langchain/langchain/chains/qa_generation/prompt.py similarity index 100% rename from langchain/chains/qa_generation/prompt.py rename to libs/langchain/langchain/chains/qa_generation/prompt.py diff --git a/langchain/chains/qa_with_sources/__init__.py b/libs/langchain/langchain/chains/qa_with_sources/__init__.py similarity index 100% rename from langchain/chains/qa_with_sources/__init__.py rename to libs/langchain/langchain/chains/qa_with_sources/__init__.py diff --git a/langchain/chains/qa_with_sources/base.py b/libs/langchain/langchain/chains/qa_with_sources/base.py similarity index 100% rename from langchain/chains/qa_with_sources/base.py rename to libs/langchain/langchain/chains/qa_with_sources/base.py diff --git a/langchain/chains/qa_with_sources/loading.py b/libs/langchain/langchain/chains/qa_with_sources/loading.py similarity index 100% rename from langchain/chains/qa_with_sources/loading.py rename to libs/langchain/langchain/chains/qa_with_sources/loading.py diff --git a/langchain/chains/qa_with_sources/map_reduce_prompt.py b/libs/langchain/langchain/chains/qa_with_sources/map_reduce_prompt.py similarity index 100% rename from langchain/chains/qa_with_sources/map_reduce_prompt.py rename to libs/langchain/langchain/chains/qa_with_sources/map_reduce_prompt.py diff --git a/langchain/chains/qa_with_sources/refine_prompts.py b/libs/langchain/langchain/chains/qa_with_sources/refine_prompts.py similarity index 100% rename from langchain/chains/qa_with_sources/refine_prompts.py rename to libs/langchain/langchain/chains/qa_with_sources/refine_prompts.py diff --git a/langchain/chains/qa_with_sources/retrieval.py b/libs/langchain/langchain/chains/qa_with_sources/retrieval.py similarity index 100% rename from langchain/chains/qa_with_sources/retrieval.py rename to libs/langchain/langchain/chains/qa_with_sources/retrieval.py diff --git a/langchain/chains/qa_with_sources/stuff_prompt.py b/libs/langchain/langchain/chains/qa_with_sources/stuff_prompt.py similarity index 100% rename from langchain/chains/qa_with_sources/stuff_prompt.py rename to libs/langchain/langchain/chains/qa_with_sources/stuff_prompt.py diff --git a/langchain/chains/qa_with_sources/vector_db.py b/libs/langchain/langchain/chains/qa_with_sources/vector_db.py similarity index 100% rename from langchain/chains/qa_with_sources/vector_db.py rename to libs/langchain/langchain/chains/qa_with_sources/vector_db.py diff --git a/langchain/chains/query_constructor/__init__.py b/libs/langchain/langchain/chains/query_constructor/__init__.py similarity index 100% rename from langchain/chains/query_constructor/__init__.py rename to libs/langchain/langchain/chains/query_constructor/__init__.py diff --git a/langchain/chains/query_constructor/base.py b/libs/langchain/langchain/chains/query_constructor/base.py similarity index 100% rename from langchain/chains/query_constructor/base.py rename to libs/langchain/langchain/chains/query_constructor/base.py diff --git a/langchain/chains/query_constructor/ir.py b/libs/langchain/langchain/chains/query_constructor/ir.py similarity index 100% rename from langchain/chains/query_constructor/ir.py rename to libs/langchain/langchain/chains/query_constructor/ir.py diff --git a/langchain/chains/query_constructor/parser.py b/libs/langchain/langchain/chains/query_constructor/parser.py similarity index 100% rename from langchain/chains/query_constructor/parser.py rename to libs/langchain/langchain/chains/query_constructor/parser.py diff --git a/langchain/chains/query_constructor/prompt.py b/libs/langchain/langchain/chains/query_constructor/prompt.py similarity index 100% rename from langchain/chains/query_constructor/prompt.py rename to libs/langchain/langchain/chains/query_constructor/prompt.py diff --git a/langchain/chains/query_constructor/schema.py b/libs/langchain/langchain/chains/query_constructor/schema.py similarity index 100% rename from langchain/chains/query_constructor/schema.py rename to libs/langchain/langchain/chains/query_constructor/schema.py diff --git a/langchain/chains/question_answering/__init__.py b/libs/langchain/langchain/chains/question_answering/__init__.py similarity index 100% rename from langchain/chains/question_answering/__init__.py rename to libs/langchain/langchain/chains/question_answering/__init__.py diff --git a/langchain/chains/question_answering/map_reduce_prompt.py b/libs/langchain/langchain/chains/question_answering/map_reduce_prompt.py similarity index 100% rename from langchain/chains/question_answering/map_reduce_prompt.py rename to libs/langchain/langchain/chains/question_answering/map_reduce_prompt.py diff --git a/langchain/chains/question_answering/map_rerank_prompt.py b/libs/langchain/langchain/chains/question_answering/map_rerank_prompt.py similarity index 100% rename from langchain/chains/question_answering/map_rerank_prompt.py rename to libs/langchain/langchain/chains/question_answering/map_rerank_prompt.py diff --git a/langchain/chains/question_answering/refine_prompts.py b/libs/langchain/langchain/chains/question_answering/refine_prompts.py similarity index 100% rename from langchain/chains/question_answering/refine_prompts.py rename to libs/langchain/langchain/chains/question_answering/refine_prompts.py diff --git a/langchain/chains/question_answering/stuff_prompt.py b/libs/langchain/langchain/chains/question_answering/stuff_prompt.py similarity index 100% rename from langchain/chains/question_answering/stuff_prompt.py rename to libs/langchain/langchain/chains/question_answering/stuff_prompt.py diff --git a/langchain/chains/retrieval_qa/__init__.py b/libs/langchain/langchain/chains/retrieval_qa/__init__.py similarity index 100% rename from langchain/chains/retrieval_qa/__init__.py rename to libs/langchain/langchain/chains/retrieval_qa/__init__.py diff --git a/langchain/chains/retrieval_qa/base.py b/libs/langchain/langchain/chains/retrieval_qa/base.py similarity index 100% rename from langchain/chains/retrieval_qa/base.py rename to libs/langchain/langchain/chains/retrieval_qa/base.py diff --git a/langchain/chains/retrieval_qa/prompt.py b/libs/langchain/langchain/chains/retrieval_qa/prompt.py similarity index 100% rename from langchain/chains/retrieval_qa/prompt.py rename to libs/langchain/langchain/chains/retrieval_qa/prompt.py diff --git a/langchain/chains/router/__init__.py b/libs/langchain/langchain/chains/router/__init__.py similarity index 100% rename from langchain/chains/router/__init__.py rename to libs/langchain/langchain/chains/router/__init__.py diff --git a/langchain/chains/router/base.py b/libs/langchain/langchain/chains/router/base.py similarity index 100% rename from langchain/chains/router/base.py rename to libs/langchain/langchain/chains/router/base.py diff --git a/langchain/chains/router/embedding_router.py b/libs/langchain/langchain/chains/router/embedding_router.py similarity index 100% rename from langchain/chains/router/embedding_router.py rename to libs/langchain/langchain/chains/router/embedding_router.py diff --git a/langchain/chains/router/llm_router.py b/libs/langchain/langchain/chains/router/llm_router.py similarity index 100% rename from langchain/chains/router/llm_router.py rename to libs/langchain/langchain/chains/router/llm_router.py diff --git a/langchain/chains/router/multi_prompt.py b/libs/langchain/langchain/chains/router/multi_prompt.py similarity index 100% rename from langchain/chains/router/multi_prompt.py rename to libs/langchain/langchain/chains/router/multi_prompt.py diff --git a/langchain/chains/router/multi_prompt_prompt.py b/libs/langchain/langchain/chains/router/multi_prompt_prompt.py similarity index 100% rename from langchain/chains/router/multi_prompt_prompt.py rename to libs/langchain/langchain/chains/router/multi_prompt_prompt.py diff --git a/langchain/chains/router/multi_retrieval_prompt.py b/libs/langchain/langchain/chains/router/multi_retrieval_prompt.py similarity index 100% rename from langchain/chains/router/multi_retrieval_prompt.py rename to libs/langchain/langchain/chains/router/multi_retrieval_prompt.py diff --git a/langchain/chains/router/multi_retrieval_qa.py b/libs/langchain/langchain/chains/router/multi_retrieval_qa.py similarity index 100% rename from langchain/chains/router/multi_retrieval_qa.py rename to libs/langchain/langchain/chains/router/multi_retrieval_qa.py diff --git a/langchain/chains/sequential.py b/libs/langchain/langchain/chains/sequential.py similarity index 100% rename from langchain/chains/sequential.py rename to libs/langchain/langchain/chains/sequential.py diff --git a/langchain/chains/sql_database/__init__.py b/libs/langchain/langchain/chains/sql_database/__init__.py similarity index 100% rename from langchain/chains/sql_database/__init__.py rename to libs/langchain/langchain/chains/sql_database/__init__.py diff --git a/langchain/chains/sql_database/base.py b/libs/langchain/langchain/chains/sql_database/base.py similarity index 100% rename from langchain/chains/sql_database/base.py rename to libs/langchain/langchain/chains/sql_database/base.py diff --git a/langchain/chains/sql_database/prompt.py b/libs/langchain/langchain/chains/sql_database/prompt.py similarity index 100% rename from langchain/chains/sql_database/prompt.py rename to libs/langchain/langchain/chains/sql_database/prompt.py diff --git a/langchain/chains/summarize/__init__.py b/libs/langchain/langchain/chains/summarize/__init__.py similarity index 100% rename from langchain/chains/summarize/__init__.py rename to libs/langchain/langchain/chains/summarize/__init__.py diff --git a/langchain/chains/summarize/map_reduce_prompt.py b/libs/langchain/langchain/chains/summarize/map_reduce_prompt.py similarity index 100% rename from langchain/chains/summarize/map_reduce_prompt.py rename to libs/langchain/langchain/chains/summarize/map_reduce_prompt.py diff --git a/langchain/chains/summarize/refine_prompts.py b/libs/langchain/langchain/chains/summarize/refine_prompts.py similarity index 100% rename from langchain/chains/summarize/refine_prompts.py rename to libs/langchain/langchain/chains/summarize/refine_prompts.py diff --git a/langchain/chains/summarize/stuff_prompt.py b/libs/langchain/langchain/chains/summarize/stuff_prompt.py similarity index 100% rename from langchain/chains/summarize/stuff_prompt.py rename to libs/langchain/langchain/chains/summarize/stuff_prompt.py diff --git a/langchain/chains/transform.py b/libs/langchain/langchain/chains/transform.py similarity index 100% rename from langchain/chains/transform.py rename to libs/langchain/langchain/chains/transform.py diff --git a/langchain/chat_models/__init__.py b/libs/langchain/langchain/chat_models/__init__.py similarity index 100% rename from langchain/chat_models/__init__.py rename to libs/langchain/langchain/chat_models/__init__.py diff --git a/langchain/chat_models/anthropic.py b/libs/langchain/langchain/chat_models/anthropic.py similarity index 100% rename from langchain/chat_models/anthropic.py rename to libs/langchain/langchain/chat_models/anthropic.py diff --git a/langchain/chat_models/azure_openai.py b/libs/langchain/langchain/chat_models/azure_openai.py similarity index 100% rename from langchain/chat_models/azure_openai.py rename to libs/langchain/langchain/chat_models/azure_openai.py diff --git a/langchain/chat_models/base.py b/libs/langchain/langchain/chat_models/base.py similarity index 100% rename from langchain/chat_models/base.py rename to libs/langchain/langchain/chat_models/base.py diff --git a/langchain/chat_models/fake.py b/libs/langchain/langchain/chat_models/fake.py similarity index 100% rename from langchain/chat_models/fake.py rename to libs/langchain/langchain/chat_models/fake.py diff --git a/langchain/chat_models/google_palm.py b/libs/langchain/langchain/chat_models/google_palm.py similarity index 100% rename from langchain/chat_models/google_palm.py rename to libs/langchain/langchain/chat_models/google_palm.py diff --git a/langchain/chat_models/human.py b/libs/langchain/langchain/chat_models/human.py similarity index 100% rename from langchain/chat_models/human.py rename to libs/langchain/langchain/chat_models/human.py diff --git a/langchain/chat_models/jinachat.py b/libs/langchain/langchain/chat_models/jinachat.py similarity index 100% rename from langchain/chat_models/jinachat.py rename to libs/langchain/langchain/chat_models/jinachat.py diff --git a/langchain/chat_models/openai.py b/libs/langchain/langchain/chat_models/openai.py similarity index 100% rename from langchain/chat_models/openai.py rename to libs/langchain/langchain/chat_models/openai.py diff --git a/langchain/chat_models/promptlayer_openai.py b/libs/langchain/langchain/chat_models/promptlayer_openai.py similarity index 100% rename from langchain/chat_models/promptlayer_openai.py rename to libs/langchain/langchain/chat_models/promptlayer_openai.py diff --git a/langchain/chat_models/vertexai.py b/libs/langchain/langchain/chat_models/vertexai.py similarity index 100% rename from langchain/chat_models/vertexai.py rename to libs/langchain/langchain/chat_models/vertexai.py diff --git a/langchain/docker-compose.yaml b/libs/langchain/langchain/docker-compose.yaml similarity index 100% rename from langchain/docker-compose.yaml rename to libs/langchain/langchain/docker-compose.yaml diff --git a/langchain/docstore/__init__.py b/libs/langchain/langchain/docstore/__init__.py similarity index 100% rename from langchain/docstore/__init__.py rename to libs/langchain/langchain/docstore/__init__.py diff --git a/langchain/docstore/arbitrary_fn.py b/libs/langchain/langchain/docstore/arbitrary_fn.py similarity index 100% rename from langchain/docstore/arbitrary_fn.py rename to libs/langchain/langchain/docstore/arbitrary_fn.py diff --git a/langchain/docstore/base.py b/libs/langchain/langchain/docstore/base.py similarity index 100% rename from langchain/docstore/base.py rename to libs/langchain/langchain/docstore/base.py diff --git a/langchain/docstore/document.py b/libs/langchain/langchain/docstore/document.py similarity index 100% rename from langchain/docstore/document.py rename to libs/langchain/langchain/docstore/document.py diff --git a/langchain/docstore/in_memory.py b/libs/langchain/langchain/docstore/in_memory.py similarity index 100% rename from langchain/docstore/in_memory.py rename to libs/langchain/langchain/docstore/in_memory.py diff --git a/langchain/docstore/wikipedia.py b/libs/langchain/langchain/docstore/wikipedia.py similarity index 100% rename from langchain/docstore/wikipedia.py rename to libs/langchain/langchain/docstore/wikipedia.py diff --git a/langchain/document_loaders/__init__.py b/libs/langchain/langchain/document_loaders/__init__.py similarity index 100% rename from langchain/document_loaders/__init__.py rename to libs/langchain/langchain/document_loaders/__init__.py diff --git a/langchain/document_loaders/acreom.py b/libs/langchain/langchain/document_loaders/acreom.py similarity index 100% rename from langchain/document_loaders/acreom.py rename to libs/langchain/langchain/document_loaders/acreom.py diff --git a/langchain/document_loaders/airbyte_json.py b/libs/langchain/langchain/document_loaders/airbyte_json.py similarity index 100% rename from langchain/document_loaders/airbyte_json.py rename to libs/langchain/langchain/document_loaders/airbyte_json.py diff --git a/langchain/document_loaders/airtable.py b/libs/langchain/langchain/document_loaders/airtable.py similarity index 100% rename from langchain/document_loaders/airtable.py rename to libs/langchain/langchain/document_loaders/airtable.py diff --git a/langchain/document_loaders/apify_dataset.py b/libs/langchain/langchain/document_loaders/apify_dataset.py similarity index 100% rename from langchain/document_loaders/apify_dataset.py rename to libs/langchain/langchain/document_loaders/apify_dataset.py diff --git a/langchain/document_loaders/arxiv.py b/libs/langchain/langchain/document_loaders/arxiv.py similarity index 100% rename from langchain/document_loaders/arxiv.py rename to libs/langchain/langchain/document_loaders/arxiv.py diff --git a/langchain/document_loaders/async_html.py b/libs/langchain/langchain/document_loaders/async_html.py similarity index 100% rename from langchain/document_loaders/async_html.py rename to libs/langchain/langchain/document_loaders/async_html.py diff --git a/langchain/document_loaders/azlyrics.py b/libs/langchain/langchain/document_loaders/azlyrics.py similarity index 100% rename from langchain/document_loaders/azlyrics.py rename to libs/langchain/langchain/document_loaders/azlyrics.py diff --git a/langchain/document_loaders/azure_blob_storage_container.py b/libs/langchain/langchain/document_loaders/azure_blob_storage_container.py similarity index 100% rename from langchain/document_loaders/azure_blob_storage_container.py rename to libs/langchain/langchain/document_loaders/azure_blob_storage_container.py diff --git a/langchain/document_loaders/azure_blob_storage_file.py b/libs/langchain/langchain/document_loaders/azure_blob_storage_file.py similarity index 100% rename from langchain/document_loaders/azure_blob_storage_file.py rename to libs/langchain/langchain/document_loaders/azure_blob_storage_file.py diff --git a/langchain/document_loaders/base.py b/libs/langchain/langchain/document_loaders/base.py similarity index 100% rename from langchain/document_loaders/base.py rename to libs/langchain/langchain/document_loaders/base.py diff --git a/langchain/document_loaders/bibtex.py b/libs/langchain/langchain/document_loaders/bibtex.py similarity index 100% rename from langchain/document_loaders/bibtex.py rename to libs/langchain/langchain/document_loaders/bibtex.py diff --git a/langchain/document_loaders/bigquery.py b/libs/langchain/langchain/document_loaders/bigquery.py similarity index 100% rename from langchain/document_loaders/bigquery.py rename to libs/langchain/langchain/document_loaders/bigquery.py diff --git a/langchain/document_loaders/bilibili.py b/libs/langchain/langchain/document_loaders/bilibili.py similarity index 100% rename from langchain/document_loaders/bilibili.py rename to libs/langchain/langchain/document_loaders/bilibili.py diff --git a/langchain/document_loaders/blackboard.py b/libs/langchain/langchain/document_loaders/blackboard.py similarity index 100% rename from langchain/document_loaders/blackboard.py rename to libs/langchain/langchain/document_loaders/blackboard.py diff --git a/langchain/document_loaders/blob_loaders/__init__.py b/libs/langchain/langchain/document_loaders/blob_loaders/__init__.py similarity index 100% rename from langchain/document_loaders/blob_loaders/__init__.py rename to libs/langchain/langchain/document_loaders/blob_loaders/__init__.py diff --git a/langchain/document_loaders/blob_loaders/file_system.py b/libs/langchain/langchain/document_loaders/blob_loaders/file_system.py similarity index 100% rename from langchain/document_loaders/blob_loaders/file_system.py rename to libs/langchain/langchain/document_loaders/blob_loaders/file_system.py diff --git a/langchain/document_loaders/blob_loaders/schema.py b/libs/langchain/langchain/document_loaders/blob_loaders/schema.py similarity index 100% rename from langchain/document_loaders/blob_loaders/schema.py rename to libs/langchain/langchain/document_loaders/blob_loaders/schema.py diff --git a/langchain/document_loaders/blob_loaders/youtube_audio.py b/libs/langchain/langchain/document_loaders/blob_loaders/youtube_audio.py similarity index 100% rename from langchain/document_loaders/blob_loaders/youtube_audio.py rename to libs/langchain/langchain/document_loaders/blob_loaders/youtube_audio.py diff --git a/langchain/document_loaders/blockchain.py b/libs/langchain/langchain/document_loaders/blockchain.py similarity index 100% rename from langchain/document_loaders/blockchain.py rename to libs/langchain/langchain/document_loaders/blockchain.py diff --git a/langchain/document_loaders/brave_search.py b/libs/langchain/langchain/document_loaders/brave_search.py similarity index 100% rename from langchain/document_loaders/brave_search.py rename to libs/langchain/langchain/document_loaders/brave_search.py diff --git a/langchain/document_loaders/browserless.py b/libs/langchain/langchain/document_loaders/browserless.py similarity index 100% rename from langchain/document_loaders/browserless.py rename to libs/langchain/langchain/document_loaders/browserless.py diff --git a/langchain/document_loaders/chatgpt.py b/libs/langchain/langchain/document_loaders/chatgpt.py similarity index 100% rename from langchain/document_loaders/chatgpt.py rename to libs/langchain/langchain/document_loaders/chatgpt.py diff --git a/langchain/document_loaders/college_confidential.py b/libs/langchain/langchain/document_loaders/college_confidential.py similarity index 100% rename from langchain/document_loaders/college_confidential.py rename to libs/langchain/langchain/document_loaders/college_confidential.py diff --git a/langchain/document_loaders/confluence.py b/libs/langchain/langchain/document_loaders/confluence.py similarity index 100% rename from langchain/document_loaders/confluence.py rename to libs/langchain/langchain/document_loaders/confluence.py diff --git a/langchain/document_loaders/conllu.py b/libs/langchain/langchain/document_loaders/conllu.py similarity index 97% rename from langchain/document_loaders/conllu.py rename to libs/langchain/langchain/document_loaders/conllu.py index 939ada2075..d22c8500d2 100644 --- a/langchain/document_loaders/conllu.py +++ b/libs/langchain/langchain/document_loaders/conllu.py @@ -1,33 +1,33 @@ -"""Load CoNLL-U files.""" -import csv -from typing import List - -from langchain.docstore.document import Document -from langchain.document_loaders.base import BaseLoader - - -class CoNLLULoader(BaseLoader): - """Load CoNLL-U files.""" - - def __init__(self, file_path: str): - """Initialize with a file path.""" - self.file_path = file_path - - def load(self) -> List[Document]: - """Load from a file path.""" - with open(self.file_path, encoding="utf8") as f: - tsv = list(csv.reader(f, delimiter="\t")) - - # If len(line) > 1, the line is not a comment - lines = [line for line in tsv if len(line) > 1] - - text = "" - for i, line in enumerate(lines): - # Do not add a space after a punctuation mark or at the end of the sentence - if line[9] == "SpaceAfter=No" or i == len(lines) - 1: - text += line[1] - else: - text += line[1] + " " - - metadata = {"source": self.file_path} - return [Document(page_content=text, metadata=metadata)] +"""Load CoNLL-U files.""" +import csv +from typing import List + +from langchain.docstore.document import Document +from langchain.document_loaders.base import BaseLoader + + +class CoNLLULoader(BaseLoader): + """Load CoNLL-U files.""" + + def __init__(self, file_path: str): + """Initialize with a file path.""" + self.file_path = file_path + + def load(self) -> List[Document]: + """Load from a file path.""" + with open(self.file_path, encoding="utf8") as f: + tsv = list(csv.reader(f, delimiter="\t")) + + # If len(line) > 1, the line is not a comment + lines = [line for line in tsv if len(line) > 1] + + text = "" + for i, line in enumerate(lines): + # Do not add a space after a punctuation mark or at the end of the sentence + if line[9] == "SpaceAfter=No" or i == len(lines) - 1: + text += line[1] + else: + text += line[1] + " " + + metadata = {"source": self.file_path} + return [Document(page_content=text, metadata=metadata)] diff --git a/langchain/document_loaders/csv_loader.py b/libs/langchain/langchain/document_loaders/csv_loader.py similarity index 100% rename from langchain/document_loaders/csv_loader.py rename to libs/langchain/langchain/document_loaders/csv_loader.py diff --git a/langchain/document_loaders/cube_semantic.py b/libs/langchain/langchain/document_loaders/cube_semantic.py similarity index 100% rename from langchain/document_loaders/cube_semantic.py rename to libs/langchain/langchain/document_loaders/cube_semantic.py diff --git a/langchain/document_loaders/datadog_logs.py b/libs/langchain/langchain/document_loaders/datadog_logs.py similarity index 100% rename from langchain/document_loaders/datadog_logs.py rename to libs/langchain/langchain/document_loaders/datadog_logs.py diff --git a/langchain/document_loaders/dataframe.py b/libs/langchain/langchain/document_loaders/dataframe.py similarity index 100% rename from langchain/document_loaders/dataframe.py rename to libs/langchain/langchain/document_loaders/dataframe.py diff --git a/langchain/document_loaders/diffbot.py b/libs/langchain/langchain/document_loaders/diffbot.py similarity index 100% rename from langchain/document_loaders/diffbot.py rename to libs/langchain/langchain/document_loaders/diffbot.py diff --git a/langchain/document_loaders/directory.py b/libs/langchain/langchain/document_loaders/directory.py similarity index 100% rename from langchain/document_loaders/directory.py rename to libs/langchain/langchain/document_loaders/directory.py diff --git a/langchain/document_loaders/discord.py b/libs/langchain/langchain/document_loaders/discord.py similarity index 100% rename from langchain/document_loaders/discord.py rename to libs/langchain/langchain/document_loaders/discord.py diff --git a/langchain/document_loaders/docugami.py b/libs/langchain/langchain/document_loaders/docugami.py similarity index 100% rename from langchain/document_loaders/docugami.py rename to libs/langchain/langchain/document_loaders/docugami.py diff --git a/langchain/document_loaders/duckdb_loader.py b/libs/langchain/langchain/document_loaders/duckdb_loader.py similarity index 100% rename from langchain/document_loaders/duckdb_loader.py rename to libs/langchain/langchain/document_loaders/duckdb_loader.py diff --git a/langchain/document_loaders/email.py b/libs/langchain/langchain/document_loaders/email.py similarity index 100% rename from langchain/document_loaders/email.py rename to libs/langchain/langchain/document_loaders/email.py diff --git a/langchain/document_loaders/embaas.py b/libs/langchain/langchain/document_loaders/embaas.py similarity index 100% rename from langchain/document_loaders/embaas.py rename to libs/langchain/langchain/document_loaders/embaas.py diff --git a/langchain/document_loaders/epub.py b/libs/langchain/langchain/document_loaders/epub.py similarity index 100% rename from langchain/document_loaders/epub.py rename to libs/langchain/langchain/document_loaders/epub.py diff --git a/langchain/document_loaders/evernote.py b/libs/langchain/langchain/document_loaders/evernote.py similarity index 100% rename from langchain/document_loaders/evernote.py rename to libs/langchain/langchain/document_loaders/evernote.py diff --git a/langchain/document_loaders/excel.py b/libs/langchain/langchain/document_loaders/excel.py similarity index 100% rename from langchain/document_loaders/excel.py rename to libs/langchain/langchain/document_loaders/excel.py diff --git a/langchain/document_loaders/facebook_chat.py b/libs/langchain/langchain/document_loaders/facebook_chat.py similarity index 100% rename from langchain/document_loaders/facebook_chat.py rename to libs/langchain/langchain/document_loaders/facebook_chat.py diff --git a/langchain/document_loaders/fauna.py b/libs/langchain/langchain/document_loaders/fauna.py similarity index 100% rename from langchain/document_loaders/fauna.py rename to libs/langchain/langchain/document_loaders/fauna.py diff --git a/langchain/document_loaders/figma.py b/libs/langchain/langchain/document_loaders/figma.py similarity index 100% rename from langchain/document_loaders/figma.py rename to libs/langchain/langchain/document_loaders/figma.py diff --git a/langchain/document_loaders/gcs_directory.py b/libs/langchain/langchain/document_loaders/gcs_directory.py similarity index 100% rename from langchain/document_loaders/gcs_directory.py rename to libs/langchain/langchain/document_loaders/gcs_directory.py diff --git a/langchain/document_loaders/gcs_file.py b/libs/langchain/langchain/document_loaders/gcs_file.py similarity index 100% rename from langchain/document_loaders/gcs_file.py rename to libs/langchain/langchain/document_loaders/gcs_file.py diff --git a/langchain/document_loaders/generic.py b/libs/langchain/langchain/document_loaders/generic.py similarity index 100% rename from langchain/document_loaders/generic.py rename to libs/langchain/langchain/document_loaders/generic.py diff --git a/langchain/document_loaders/geodataframe.py b/libs/langchain/langchain/document_loaders/geodataframe.py similarity index 100% rename from langchain/document_loaders/geodataframe.py rename to libs/langchain/langchain/document_loaders/geodataframe.py diff --git a/langchain/document_loaders/git.py b/libs/langchain/langchain/document_loaders/git.py similarity index 100% rename from langchain/document_loaders/git.py rename to libs/langchain/langchain/document_loaders/git.py diff --git a/langchain/document_loaders/gitbook.py b/libs/langchain/langchain/document_loaders/gitbook.py similarity index 100% rename from langchain/document_loaders/gitbook.py rename to libs/langchain/langchain/document_loaders/gitbook.py diff --git a/langchain/document_loaders/github.py b/libs/langchain/langchain/document_loaders/github.py similarity index 100% rename from langchain/document_loaders/github.py rename to libs/langchain/langchain/document_loaders/github.py diff --git a/langchain/document_loaders/googledrive.py b/libs/langchain/langchain/document_loaders/googledrive.py similarity index 100% rename from langchain/document_loaders/googledrive.py rename to libs/langchain/langchain/document_loaders/googledrive.py diff --git a/langchain/document_loaders/gutenberg.py b/libs/langchain/langchain/document_loaders/gutenberg.py similarity index 100% rename from langchain/document_loaders/gutenberg.py rename to libs/langchain/langchain/document_loaders/gutenberg.py diff --git a/langchain/document_loaders/helpers.py b/libs/langchain/langchain/document_loaders/helpers.py similarity index 100% rename from langchain/document_loaders/helpers.py rename to libs/langchain/langchain/document_loaders/helpers.py diff --git a/langchain/document_loaders/hn.py b/libs/langchain/langchain/document_loaders/hn.py similarity index 100% rename from langchain/document_loaders/hn.py rename to libs/langchain/langchain/document_loaders/hn.py diff --git a/langchain/document_loaders/html.py b/libs/langchain/langchain/document_loaders/html.py similarity index 100% rename from langchain/document_loaders/html.py rename to libs/langchain/langchain/document_loaders/html.py diff --git a/langchain/document_loaders/html_bs.py b/libs/langchain/langchain/document_loaders/html_bs.py similarity index 100% rename from langchain/document_loaders/html_bs.py rename to libs/langchain/langchain/document_loaders/html_bs.py diff --git a/langchain/document_loaders/hugging_face_dataset.py b/libs/langchain/langchain/document_loaders/hugging_face_dataset.py similarity index 100% rename from langchain/document_loaders/hugging_face_dataset.py rename to libs/langchain/langchain/document_loaders/hugging_face_dataset.py diff --git a/langchain/document_loaders/ifixit.py b/libs/langchain/langchain/document_loaders/ifixit.py similarity index 100% rename from langchain/document_loaders/ifixit.py rename to libs/langchain/langchain/document_loaders/ifixit.py diff --git a/langchain/document_loaders/image.py b/libs/langchain/langchain/document_loaders/image.py similarity index 100% rename from langchain/document_loaders/image.py rename to libs/langchain/langchain/document_loaders/image.py diff --git a/langchain/document_loaders/image_captions.py b/libs/langchain/langchain/document_loaders/image_captions.py similarity index 100% rename from langchain/document_loaders/image_captions.py rename to libs/langchain/langchain/document_loaders/image_captions.py diff --git a/langchain/document_loaders/imsdb.py b/libs/langchain/langchain/document_loaders/imsdb.py similarity index 100% rename from langchain/document_loaders/imsdb.py rename to libs/langchain/langchain/document_loaders/imsdb.py diff --git a/langchain/document_loaders/iugu.py b/libs/langchain/langchain/document_loaders/iugu.py similarity index 100% rename from langchain/document_loaders/iugu.py rename to libs/langchain/langchain/document_loaders/iugu.py diff --git a/langchain/document_loaders/joplin.py b/libs/langchain/langchain/document_loaders/joplin.py similarity index 100% rename from langchain/document_loaders/joplin.py rename to libs/langchain/langchain/document_loaders/joplin.py diff --git a/langchain/document_loaders/json_loader.py b/libs/langchain/langchain/document_loaders/json_loader.py similarity index 100% rename from langchain/document_loaders/json_loader.py rename to libs/langchain/langchain/document_loaders/json_loader.py diff --git a/langchain/document_loaders/larksuite.py b/libs/langchain/langchain/document_loaders/larksuite.py similarity index 100% rename from langchain/document_loaders/larksuite.py rename to libs/langchain/langchain/document_loaders/larksuite.py diff --git a/langchain/document_loaders/markdown.py b/libs/langchain/langchain/document_loaders/markdown.py similarity index 100% rename from langchain/document_loaders/markdown.py rename to libs/langchain/langchain/document_loaders/markdown.py diff --git a/langchain/document_loaders/mastodon.py b/libs/langchain/langchain/document_loaders/mastodon.py similarity index 100% rename from langchain/document_loaders/mastodon.py rename to libs/langchain/langchain/document_loaders/mastodon.py diff --git a/langchain/document_loaders/max_compute.py b/libs/langchain/langchain/document_loaders/max_compute.py similarity index 100% rename from langchain/document_loaders/max_compute.py rename to libs/langchain/langchain/document_loaders/max_compute.py diff --git a/langchain/document_loaders/mediawikidump.py b/libs/langchain/langchain/document_loaders/mediawikidump.py similarity index 100% rename from langchain/document_loaders/mediawikidump.py rename to libs/langchain/langchain/document_loaders/mediawikidump.py diff --git a/langchain/document_loaders/merge.py b/libs/langchain/langchain/document_loaders/merge.py similarity index 100% rename from langchain/document_loaders/merge.py rename to libs/langchain/langchain/document_loaders/merge.py diff --git a/langchain/document_loaders/mhtml.py b/libs/langchain/langchain/document_loaders/mhtml.py similarity index 100% rename from langchain/document_loaders/mhtml.py rename to libs/langchain/langchain/document_loaders/mhtml.py diff --git a/langchain/document_loaders/modern_treasury.py b/libs/langchain/langchain/document_loaders/modern_treasury.py similarity index 100% rename from langchain/document_loaders/modern_treasury.py rename to libs/langchain/langchain/document_loaders/modern_treasury.py diff --git a/langchain/document_loaders/notebook.py b/libs/langchain/langchain/document_loaders/notebook.py similarity index 100% rename from langchain/document_loaders/notebook.py rename to libs/langchain/langchain/document_loaders/notebook.py diff --git a/langchain/document_loaders/notion.py b/libs/langchain/langchain/document_loaders/notion.py similarity index 100% rename from langchain/document_loaders/notion.py rename to libs/langchain/langchain/document_loaders/notion.py diff --git a/langchain/document_loaders/notiondb.py b/libs/langchain/langchain/document_loaders/notiondb.py similarity index 100% rename from langchain/document_loaders/notiondb.py rename to libs/langchain/langchain/document_loaders/notiondb.py diff --git a/langchain/document_loaders/obsidian.py b/libs/langchain/langchain/document_loaders/obsidian.py similarity index 100% rename from langchain/document_loaders/obsidian.py rename to libs/langchain/langchain/document_loaders/obsidian.py diff --git a/langchain/document_loaders/odt.py b/libs/langchain/langchain/document_loaders/odt.py similarity index 100% rename from langchain/document_loaders/odt.py rename to libs/langchain/langchain/document_loaders/odt.py diff --git a/langchain/document_loaders/onedrive.py b/libs/langchain/langchain/document_loaders/onedrive.py similarity index 100% rename from langchain/document_loaders/onedrive.py rename to libs/langchain/langchain/document_loaders/onedrive.py diff --git a/langchain/document_loaders/onedrive_file.py b/libs/langchain/langchain/document_loaders/onedrive_file.py similarity index 100% rename from langchain/document_loaders/onedrive_file.py rename to libs/langchain/langchain/document_loaders/onedrive_file.py diff --git a/langchain/document_loaders/open_city_data.py b/libs/langchain/langchain/document_loaders/open_city_data.py similarity index 100% rename from langchain/document_loaders/open_city_data.py rename to libs/langchain/langchain/document_loaders/open_city_data.py diff --git a/langchain/document_loaders/org_mode.py b/libs/langchain/langchain/document_loaders/org_mode.py similarity index 100% rename from langchain/document_loaders/org_mode.py rename to libs/langchain/langchain/document_loaders/org_mode.py diff --git a/langchain/document_loaders/parsers/__init__.py b/libs/langchain/langchain/document_loaders/parsers/__init__.py similarity index 100% rename from langchain/document_loaders/parsers/__init__.py rename to libs/langchain/langchain/document_loaders/parsers/__init__.py diff --git a/langchain/document_loaders/parsers/audio.py b/libs/langchain/langchain/document_loaders/parsers/audio.py similarity index 100% rename from langchain/document_loaders/parsers/audio.py rename to libs/langchain/langchain/document_loaders/parsers/audio.py diff --git a/langchain/document_loaders/parsers/generic.py b/libs/langchain/langchain/document_loaders/parsers/generic.py similarity index 100% rename from langchain/document_loaders/parsers/generic.py rename to libs/langchain/langchain/document_loaders/parsers/generic.py diff --git a/langchain/document_loaders/parsers/grobid.py b/libs/langchain/langchain/document_loaders/parsers/grobid.py similarity index 100% rename from langchain/document_loaders/parsers/grobid.py rename to libs/langchain/langchain/document_loaders/parsers/grobid.py diff --git a/langchain/document_loaders/parsers/html/__init__.py b/libs/langchain/langchain/document_loaders/parsers/html/__init__.py similarity index 100% rename from langchain/document_loaders/parsers/html/__init__.py rename to libs/langchain/langchain/document_loaders/parsers/html/__init__.py diff --git a/langchain/document_loaders/parsers/html/bs4.py b/libs/langchain/langchain/document_loaders/parsers/html/bs4.py similarity index 100% rename from langchain/document_loaders/parsers/html/bs4.py rename to libs/langchain/langchain/document_loaders/parsers/html/bs4.py diff --git a/langchain/document_loaders/parsers/language/__init__.py b/libs/langchain/langchain/document_loaders/parsers/language/__init__.py similarity index 100% rename from langchain/document_loaders/parsers/language/__init__.py rename to libs/langchain/langchain/document_loaders/parsers/language/__init__.py diff --git a/langchain/document_loaders/parsers/language/code_segmenter.py b/libs/langchain/langchain/document_loaders/parsers/language/code_segmenter.py similarity index 100% rename from langchain/document_loaders/parsers/language/code_segmenter.py rename to libs/langchain/langchain/document_loaders/parsers/language/code_segmenter.py diff --git a/langchain/document_loaders/parsers/language/javascript.py b/libs/langchain/langchain/document_loaders/parsers/language/javascript.py similarity index 100% rename from langchain/document_loaders/parsers/language/javascript.py rename to libs/langchain/langchain/document_loaders/parsers/language/javascript.py diff --git a/langchain/document_loaders/parsers/language/language_parser.py b/libs/langchain/langchain/document_loaders/parsers/language/language_parser.py similarity index 100% rename from langchain/document_loaders/parsers/language/language_parser.py rename to libs/langchain/langchain/document_loaders/parsers/language/language_parser.py diff --git a/langchain/document_loaders/parsers/language/python.py b/libs/langchain/langchain/document_loaders/parsers/language/python.py similarity index 100% rename from langchain/document_loaders/parsers/language/python.py rename to libs/langchain/langchain/document_loaders/parsers/language/python.py diff --git a/langchain/document_loaders/parsers/pdf.py b/libs/langchain/langchain/document_loaders/parsers/pdf.py similarity index 100% rename from langchain/document_loaders/parsers/pdf.py rename to libs/langchain/langchain/document_loaders/parsers/pdf.py diff --git a/langchain/document_loaders/parsers/registry.py b/libs/langchain/langchain/document_loaders/parsers/registry.py similarity index 100% rename from langchain/document_loaders/parsers/registry.py rename to libs/langchain/langchain/document_loaders/parsers/registry.py diff --git a/langchain/document_loaders/parsers/txt.py b/libs/langchain/langchain/document_loaders/parsers/txt.py similarity index 100% rename from langchain/document_loaders/parsers/txt.py rename to libs/langchain/langchain/document_loaders/parsers/txt.py diff --git a/langchain/document_loaders/pdf.py b/libs/langchain/langchain/document_loaders/pdf.py similarity index 100% rename from langchain/document_loaders/pdf.py rename to libs/langchain/langchain/document_loaders/pdf.py diff --git a/langchain/document_loaders/powerpoint.py b/libs/langchain/langchain/document_loaders/powerpoint.py similarity index 100% rename from langchain/document_loaders/powerpoint.py rename to libs/langchain/langchain/document_loaders/powerpoint.py diff --git a/langchain/document_loaders/psychic.py b/libs/langchain/langchain/document_loaders/psychic.py similarity index 100% rename from langchain/document_loaders/psychic.py rename to libs/langchain/langchain/document_loaders/psychic.py diff --git a/langchain/document_loaders/pyspark_dataframe.py b/libs/langchain/langchain/document_loaders/pyspark_dataframe.py similarity index 100% rename from langchain/document_loaders/pyspark_dataframe.py rename to libs/langchain/langchain/document_loaders/pyspark_dataframe.py diff --git a/langchain/document_loaders/python.py b/libs/langchain/langchain/document_loaders/python.py similarity index 100% rename from langchain/document_loaders/python.py rename to libs/langchain/langchain/document_loaders/python.py diff --git a/langchain/document_loaders/readthedocs.py b/libs/langchain/langchain/document_loaders/readthedocs.py similarity index 100% rename from langchain/document_loaders/readthedocs.py rename to libs/langchain/langchain/document_loaders/readthedocs.py diff --git a/langchain/document_loaders/recursive_url_loader.py b/libs/langchain/langchain/document_loaders/recursive_url_loader.py similarity index 100% rename from langchain/document_loaders/recursive_url_loader.py rename to libs/langchain/langchain/document_loaders/recursive_url_loader.py diff --git a/langchain/document_loaders/reddit.py b/libs/langchain/langchain/document_loaders/reddit.py similarity index 100% rename from langchain/document_loaders/reddit.py rename to libs/langchain/langchain/document_loaders/reddit.py diff --git a/langchain/document_loaders/roam.py b/libs/langchain/langchain/document_loaders/roam.py similarity index 100% rename from langchain/document_loaders/roam.py rename to libs/langchain/langchain/document_loaders/roam.py diff --git a/langchain/document_loaders/rocksetdb.py b/libs/langchain/langchain/document_loaders/rocksetdb.py similarity index 100% rename from langchain/document_loaders/rocksetdb.py rename to libs/langchain/langchain/document_loaders/rocksetdb.py diff --git a/langchain/document_loaders/rst.py b/libs/langchain/langchain/document_loaders/rst.py similarity index 100% rename from langchain/document_loaders/rst.py rename to libs/langchain/langchain/document_loaders/rst.py diff --git a/langchain/document_loaders/rtf.py b/libs/langchain/langchain/document_loaders/rtf.py similarity index 100% rename from langchain/document_loaders/rtf.py rename to libs/langchain/langchain/document_loaders/rtf.py diff --git a/langchain/document_loaders/s3_directory.py b/libs/langchain/langchain/document_loaders/s3_directory.py similarity index 100% rename from langchain/document_loaders/s3_directory.py rename to libs/langchain/langchain/document_loaders/s3_directory.py diff --git a/langchain/document_loaders/s3_file.py b/libs/langchain/langchain/document_loaders/s3_file.py similarity index 100% rename from langchain/document_loaders/s3_file.py rename to libs/langchain/langchain/document_loaders/s3_file.py diff --git a/langchain/document_loaders/sitemap.py b/libs/langchain/langchain/document_loaders/sitemap.py similarity index 100% rename from langchain/document_loaders/sitemap.py rename to libs/langchain/langchain/document_loaders/sitemap.py diff --git a/langchain/document_loaders/slack_directory.py b/libs/langchain/langchain/document_loaders/slack_directory.py similarity index 100% rename from langchain/document_loaders/slack_directory.py rename to libs/langchain/langchain/document_loaders/slack_directory.py diff --git a/langchain/document_loaders/snowflake_loader.py b/libs/langchain/langchain/document_loaders/snowflake_loader.py similarity index 97% rename from langchain/document_loaders/snowflake_loader.py rename to libs/langchain/langchain/document_loaders/snowflake_loader.py index 50219ce35b..5ed676a248 100644 --- a/langchain/document_loaders/snowflake_loader.py +++ b/libs/langchain/langchain/document_loaders/snowflake_loader.py @@ -1,127 +1,127 @@ -from __future__ import annotations - -from typing import Any, Dict, Iterator, List, Optional, Tuple - -from langchain.docstore.document import Document -from langchain.document_loaders.base import BaseLoader - - -class SnowflakeLoader(BaseLoader): - """Loads a query result from Snowflake into a list of documents. - - Each document represents one row of the result. The `page_content_columns` - are written into the `page_content` of the document. The `metadata_columns` - are written into the `metadata` of the document. By default, all columns - are written into the `page_content` and none into the `metadata`. - - """ - - def __init__( - self, - query: str, - user: str, - password: str, - account: str, - warehouse: str, - role: str, - database: str, - schema: str, - parameters: Optional[Dict[str, Any]] = None, - page_content_columns: Optional[List[str]] = None, - metadata_columns: Optional[List[str]] = None, - ): - """Initialize Snowflake document loader. - - Args: - query: The query to run in Snowflake. - user: Snowflake user. - password: Snowflake password. - account: Snowflake account. - warehouse: Snowflake warehouse. - role: Snowflake role. - database: Snowflake database - schema: Snowflake schema - parameters: Optional. Parameters to pass to the query. - page_content_columns: Optional. Columns written to Document `page_content`. - metadata_columns: Optional. Columns written to Document `metadata`. - """ - self.query = query - self.user = user - self.password = password - self.account = account - self.warehouse = warehouse - self.role = role - self.database = database - self.schema = schema - self.parameters = parameters - self.page_content_columns = ( - page_content_columns if page_content_columns is not None else ["*"] - ) - self.metadata_columns = metadata_columns if metadata_columns is not None else [] - - def _execute_query(self) -> List[Dict[str, Any]]: - try: - import snowflake.connector - except ImportError as ex: - raise ImportError( - "Could not import snowflake-connector-python package. " - "Please install it with `pip install snowflake-connector-python`." - ) from ex - - conn = snowflake.connector.connect( - user=self.user, - password=self.password, - account=self.account, - warehouse=self.warehouse, - role=self.role, - database=self.database, - schema=self.schema, - parameters=self.parameters, - ) - try: - cur = conn.cursor() - cur.execute("USE DATABASE " + self.database) - cur.execute("USE SCHEMA " + self.schema) - cur.execute(self.query, self.parameters) - query_result = cur.fetchall() - column_names = [column[0] for column in cur.description] - query_result = [dict(zip(column_names, row)) for row in query_result] - except Exception as e: - print(f"An error occurred: {e}") - query_result = [] - finally: - cur.close() - return query_result - - def _get_columns( - self, query_result: List[Dict[str, Any]] - ) -> Tuple[List[str], List[str]]: - page_content_columns = ( - self.page_content_columns if self.page_content_columns else [] - ) - metadata_columns = self.metadata_columns if self.metadata_columns else [] - if page_content_columns is None and query_result: - page_content_columns = list(query_result[0].keys()) - if metadata_columns is None: - metadata_columns = [] - return page_content_columns or [], metadata_columns - - def lazy_load(self) -> Iterator[Document]: - query_result = self._execute_query() - if isinstance(query_result, Exception): - print(f"An error occurred during the query: {query_result}") - return [] - page_content_columns, metadata_columns = self._get_columns(query_result) - if "*" in page_content_columns: - page_content_columns = list(query_result[0].keys()) - for row in query_result: - page_content = "\n".join( - f"{k}: {v}" for k, v in row.items() if k in page_content_columns - ) - metadata = {k: v for k, v in row.items() if k in metadata_columns} - doc = Document(page_content=page_content, metadata=metadata) - yield doc - - def load(self) -> List[Document]: - """Load data into document objects.""" - return list(self.lazy_load()) +from __future__ import annotations + +from typing import Any, Dict, Iterator, List, Optional, Tuple + +from langchain.docstore.document import Document +from langchain.document_loaders.base import BaseLoader + + +class SnowflakeLoader(BaseLoader): + """Loads a query result from Snowflake into a list of documents. + + Each document represents one row of the result. The `page_content_columns` + are written into the `page_content` of the document. The `metadata_columns` + are written into the `metadata` of the document. By default, all columns + are written into the `page_content` and none into the `metadata`. + + """ + + def __init__( + self, + query: str, + user: str, + password: str, + account: str, + warehouse: str, + role: str, + database: str, + schema: str, + parameters: Optional[Dict[str, Any]] = None, + page_content_columns: Optional[List[str]] = None, + metadata_columns: Optional[List[str]] = None, + ): + """Initialize Snowflake document loader. + + Args: + query: The query to run in Snowflake. + user: Snowflake user. + password: Snowflake password. + account: Snowflake account. + warehouse: Snowflake warehouse. + role: Snowflake role. + database: Snowflake database + schema: Snowflake schema + parameters: Optional. Parameters to pass to the query. + page_content_columns: Optional. Columns written to Document `page_content`. + metadata_columns: Optional. Columns written to Document `metadata`. + """ + self.query = query + self.user = user + self.password = password + self.account = account + self.warehouse = warehouse + self.role = role + self.database = database + self.schema = schema + self.parameters = parameters + self.page_content_columns = ( + page_content_columns if page_content_columns is not None else ["*"] + ) + self.metadata_columns = metadata_columns if metadata_columns is not None else [] + + def _execute_query(self) -> List[Dict[str, Any]]: + try: + import snowflake.connector + except ImportError as ex: + raise ImportError( + "Could not import snowflake-connector-python package. " + "Please install it with `pip install snowflake-connector-python`." + ) from ex + + conn = snowflake.connector.connect( + user=self.user, + password=self.password, + account=self.account, + warehouse=self.warehouse, + role=self.role, + database=self.database, + schema=self.schema, + parameters=self.parameters, + ) + try: + cur = conn.cursor() + cur.execute("USE DATABASE " + self.database) + cur.execute("USE SCHEMA " + self.schema) + cur.execute(self.query, self.parameters) + query_result = cur.fetchall() + column_names = [column[0] for column in cur.description] + query_result = [dict(zip(column_names, row)) for row in query_result] + except Exception as e: + print(f"An error occurred: {e}") + query_result = [] + finally: + cur.close() + return query_result + + def _get_columns( + self, query_result: List[Dict[str, Any]] + ) -> Tuple[List[str], List[str]]: + page_content_columns = ( + self.page_content_columns if self.page_content_columns else [] + ) + metadata_columns = self.metadata_columns if self.metadata_columns else [] + if page_content_columns is None and query_result: + page_content_columns = list(query_result[0].keys()) + if metadata_columns is None: + metadata_columns = [] + return page_content_columns or [], metadata_columns + + def lazy_load(self) -> Iterator[Document]: + query_result = self._execute_query() + if isinstance(query_result, Exception): + print(f"An error occurred during the query: {query_result}") + return [] + page_content_columns, metadata_columns = self._get_columns(query_result) + if "*" in page_content_columns: + page_content_columns = list(query_result[0].keys()) + for row in query_result: + page_content = "\n".join( + f"{k}: {v}" for k, v in row.items() if k in page_content_columns + ) + metadata = {k: v for k, v in row.items() if k in metadata_columns} + doc = Document(page_content=page_content, metadata=metadata) + yield doc + + def load(self) -> List[Document]: + """Load data into document objects.""" + return list(self.lazy_load()) diff --git a/langchain/document_loaders/spreedly.py b/libs/langchain/langchain/document_loaders/spreedly.py similarity index 100% rename from langchain/document_loaders/spreedly.py rename to libs/langchain/langchain/document_loaders/spreedly.py diff --git a/langchain/document_loaders/srt.py b/libs/langchain/langchain/document_loaders/srt.py similarity index 100% rename from langchain/document_loaders/srt.py rename to libs/langchain/langchain/document_loaders/srt.py diff --git a/langchain/document_loaders/stripe.py b/libs/langchain/langchain/document_loaders/stripe.py similarity index 100% rename from langchain/document_loaders/stripe.py rename to libs/langchain/langchain/document_loaders/stripe.py diff --git a/langchain/document_loaders/telegram.py b/libs/langchain/langchain/document_loaders/telegram.py similarity index 100% rename from langchain/document_loaders/telegram.py rename to libs/langchain/langchain/document_loaders/telegram.py diff --git a/langchain/document_loaders/tencent_cos_directory.py b/libs/langchain/langchain/document_loaders/tencent_cos_directory.py similarity index 100% rename from langchain/document_loaders/tencent_cos_directory.py rename to libs/langchain/langchain/document_loaders/tencent_cos_directory.py diff --git a/langchain/document_loaders/tencent_cos_file.py b/libs/langchain/langchain/document_loaders/tencent_cos_file.py similarity index 100% rename from langchain/document_loaders/tencent_cos_file.py rename to libs/langchain/langchain/document_loaders/tencent_cos_file.py diff --git a/langchain/document_loaders/text.py b/libs/langchain/langchain/document_loaders/text.py similarity index 100% rename from langchain/document_loaders/text.py rename to libs/langchain/langchain/document_loaders/text.py diff --git a/langchain/document_loaders/tomarkdown.py b/libs/langchain/langchain/document_loaders/tomarkdown.py similarity index 100% rename from langchain/document_loaders/tomarkdown.py rename to libs/langchain/langchain/document_loaders/tomarkdown.py diff --git a/langchain/document_loaders/toml.py b/libs/langchain/langchain/document_loaders/toml.py similarity index 100% rename from langchain/document_loaders/toml.py rename to libs/langchain/langchain/document_loaders/toml.py diff --git a/langchain/document_loaders/trello.py b/libs/langchain/langchain/document_loaders/trello.py similarity index 100% rename from langchain/document_loaders/trello.py rename to libs/langchain/langchain/document_loaders/trello.py diff --git a/langchain/document_loaders/tsv.py b/libs/langchain/langchain/document_loaders/tsv.py similarity index 100% rename from langchain/document_loaders/tsv.py rename to libs/langchain/langchain/document_loaders/tsv.py diff --git a/langchain/document_loaders/twitter.py b/libs/langchain/langchain/document_loaders/twitter.py similarity index 100% rename from langchain/document_loaders/twitter.py rename to libs/langchain/langchain/document_loaders/twitter.py diff --git a/langchain/document_loaders/unstructured.py b/libs/langchain/langchain/document_loaders/unstructured.py similarity index 100% rename from langchain/document_loaders/unstructured.py rename to libs/langchain/langchain/document_loaders/unstructured.py diff --git a/langchain/document_loaders/url.py b/libs/langchain/langchain/document_loaders/url.py similarity index 100% rename from langchain/document_loaders/url.py rename to libs/langchain/langchain/document_loaders/url.py diff --git a/langchain/document_loaders/url_playwright.py b/libs/langchain/langchain/document_loaders/url_playwright.py similarity index 100% rename from langchain/document_loaders/url_playwright.py rename to libs/langchain/langchain/document_loaders/url_playwright.py diff --git a/langchain/document_loaders/url_selenium.py b/libs/langchain/langchain/document_loaders/url_selenium.py similarity index 100% rename from langchain/document_loaders/url_selenium.py rename to libs/langchain/langchain/document_loaders/url_selenium.py diff --git a/langchain/document_loaders/weather.py b/libs/langchain/langchain/document_loaders/weather.py similarity index 100% rename from langchain/document_loaders/weather.py rename to libs/langchain/langchain/document_loaders/weather.py diff --git a/langchain/document_loaders/web_base.py b/libs/langchain/langchain/document_loaders/web_base.py similarity index 100% rename from langchain/document_loaders/web_base.py rename to libs/langchain/langchain/document_loaders/web_base.py diff --git a/langchain/document_loaders/whatsapp_chat.py b/libs/langchain/langchain/document_loaders/whatsapp_chat.py similarity index 100% rename from langchain/document_loaders/whatsapp_chat.py rename to libs/langchain/langchain/document_loaders/whatsapp_chat.py diff --git a/langchain/document_loaders/wikipedia.py b/libs/langchain/langchain/document_loaders/wikipedia.py similarity index 100% rename from langchain/document_loaders/wikipedia.py rename to libs/langchain/langchain/document_loaders/wikipedia.py diff --git a/langchain/document_loaders/word_document.py b/libs/langchain/langchain/document_loaders/word_document.py similarity index 100% rename from langchain/document_loaders/word_document.py rename to libs/langchain/langchain/document_loaders/word_document.py diff --git a/langchain/document_loaders/xml.py b/libs/langchain/langchain/document_loaders/xml.py similarity index 100% rename from langchain/document_loaders/xml.py rename to libs/langchain/langchain/document_loaders/xml.py diff --git a/langchain/document_loaders/xorbits.py b/libs/langchain/langchain/document_loaders/xorbits.py similarity index 100% rename from langchain/document_loaders/xorbits.py rename to libs/langchain/langchain/document_loaders/xorbits.py diff --git a/langchain/document_loaders/youtube.py b/libs/langchain/langchain/document_loaders/youtube.py similarity index 100% rename from langchain/document_loaders/youtube.py rename to libs/langchain/langchain/document_loaders/youtube.py diff --git a/langchain/document_transformers/__init__.py b/libs/langchain/langchain/document_transformers/__init__.py similarity index 100% rename from langchain/document_transformers/__init__.py rename to libs/langchain/langchain/document_transformers/__init__.py diff --git a/langchain/document_transformers/doctran_text_extract.py b/libs/langchain/langchain/document_transformers/doctran_text_extract.py similarity index 100% rename from langchain/document_transformers/doctran_text_extract.py rename to libs/langchain/langchain/document_transformers/doctran_text_extract.py diff --git a/langchain/document_transformers/doctran_text_qa.py b/libs/langchain/langchain/document_transformers/doctran_text_qa.py similarity index 100% rename from langchain/document_transformers/doctran_text_qa.py rename to libs/langchain/langchain/document_transformers/doctran_text_qa.py diff --git a/langchain/document_transformers/doctran_text_translate.py b/libs/langchain/langchain/document_transformers/doctran_text_translate.py similarity index 100% rename from langchain/document_transformers/doctran_text_translate.py rename to libs/langchain/langchain/document_transformers/doctran_text_translate.py diff --git a/langchain/document_transformers/embeddings_redundant_filter.py b/libs/langchain/langchain/document_transformers/embeddings_redundant_filter.py similarity index 100% rename from langchain/document_transformers/embeddings_redundant_filter.py rename to libs/langchain/langchain/document_transformers/embeddings_redundant_filter.py diff --git a/langchain/document_transformers/html2text.py b/libs/langchain/langchain/document_transformers/html2text.py similarity index 100% rename from langchain/document_transformers/html2text.py rename to libs/langchain/langchain/document_transformers/html2text.py diff --git a/langchain/document_transformers/long_context_reorder.py b/libs/langchain/langchain/document_transformers/long_context_reorder.py similarity index 100% rename from langchain/document_transformers/long_context_reorder.py rename to libs/langchain/langchain/document_transformers/long_context_reorder.py diff --git a/langchain/document_transformers/openai_functions.py b/libs/langchain/langchain/document_transformers/openai_functions.py similarity index 100% rename from langchain/document_transformers/openai_functions.py rename to libs/langchain/langchain/document_transformers/openai_functions.py diff --git a/langchain/embeddings/__init__.py b/libs/langchain/langchain/embeddings/__init__.py similarity index 100% rename from langchain/embeddings/__init__.py rename to libs/langchain/langchain/embeddings/__init__.py diff --git a/langchain/embeddings/aleph_alpha.py b/libs/langchain/langchain/embeddings/aleph_alpha.py similarity index 100% rename from langchain/embeddings/aleph_alpha.py rename to libs/langchain/langchain/embeddings/aleph_alpha.py diff --git a/langchain/embeddings/base.py b/libs/langchain/langchain/embeddings/base.py similarity index 100% rename from langchain/embeddings/base.py rename to libs/langchain/langchain/embeddings/base.py diff --git a/langchain/embeddings/bedrock.py b/libs/langchain/langchain/embeddings/bedrock.py similarity index 100% rename from langchain/embeddings/bedrock.py rename to libs/langchain/langchain/embeddings/bedrock.py diff --git a/langchain/embeddings/clarifai.py b/libs/langchain/langchain/embeddings/clarifai.py similarity index 100% rename from langchain/embeddings/clarifai.py rename to libs/langchain/langchain/embeddings/clarifai.py diff --git a/langchain/embeddings/cohere.py b/libs/langchain/langchain/embeddings/cohere.py similarity index 100% rename from langchain/embeddings/cohere.py rename to libs/langchain/langchain/embeddings/cohere.py diff --git a/langchain/embeddings/dashscope.py b/libs/langchain/langchain/embeddings/dashscope.py similarity index 100% rename from langchain/embeddings/dashscope.py rename to libs/langchain/langchain/embeddings/dashscope.py diff --git a/langchain/embeddings/deepinfra.py b/libs/langchain/langchain/embeddings/deepinfra.py similarity index 100% rename from langchain/embeddings/deepinfra.py rename to libs/langchain/langchain/embeddings/deepinfra.py diff --git a/langchain/embeddings/elasticsearch.py b/libs/langchain/langchain/embeddings/elasticsearch.py similarity index 100% rename from langchain/embeddings/elasticsearch.py rename to libs/langchain/langchain/embeddings/elasticsearch.py diff --git a/langchain/embeddings/embaas.py b/libs/langchain/langchain/embeddings/embaas.py similarity index 100% rename from langchain/embeddings/embaas.py rename to libs/langchain/langchain/embeddings/embaas.py diff --git a/langchain/embeddings/fake.py b/libs/langchain/langchain/embeddings/fake.py similarity index 100% rename from langchain/embeddings/fake.py rename to libs/langchain/langchain/embeddings/fake.py diff --git a/langchain/embeddings/google_palm.py b/libs/langchain/langchain/embeddings/google_palm.py similarity index 100% rename from langchain/embeddings/google_palm.py rename to libs/langchain/langchain/embeddings/google_palm.py diff --git a/langchain/embeddings/gpt4all.py b/libs/langchain/langchain/embeddings/gpt4all.py similarity index 100% rename from langchain/embeddings/gpt4all.py rename to libs/langchain/langchain/embeddings/gpt4all.py diff --git a/langchain/embeddings/huggingface.py b/libs/langchain/langchain/embeddings/huggingface.py similarity index 100% rename from langchain/embeddings/huggingface.py rename to libs/langchain/langchain/embeddings/huggingface.py diff --git a/langchain/embeddings/huggingface_hub.py b/libs/langchain/langchain/embeddings/huggingface_hub.py similarity index 100% rename from langchain/embeddings/huggingface_hub.py rename to libs/langchain/langchain/embeddings/huggingface_hub.py diff --git a/langchain/embeddings/jina.py b/libs/langchain/langchain/embeddings/jina.py similarity index 100% rename from langchain/embeddings/jina.py rename to libs/langchain/langchain/embeddings/jina.py diff --git a/langchain/embeddings/llamacpp.py b/libs/langchain/langchain/embeddings/llamacpp.py similarity index 100% rename from langchain/embeddings/llamacpp.py rename to libs/langchain/langchain/embeddings/llamacpp.py diff --git a/langchain/embeddings/minimax.py b/libs/langchain/langchain/embeddings/minimax.py similarity index 100% rename from langchain/embeddings/minimax.py rename to libs/langchain/langchain/embeddings/minimax.py diff --git a/langchain/embeddings/mlflow_gateway.py b/libs/langchain/langchain/embeddings/mlflow_gateway.py similarity index 100% rename from langchain/embeddings/mlflow_gateway.py rename to libs/langchain/langchain/embeddings/mlflow_gateway.py diff --git a/langchain/embeddings/modelscope_hub.py b/libs/langchain/langchain/embeddings/modelscope_hub.py similarity index 100% rename from langchain/embeddings/modelscope_hub.py rename to libs/langchain/langchain/embeddings/modelscope_hub.py diff --git a/langchain/embeddings/mosaicml.py b/libs/langchain/langchain/embeddings/mosaicml.py similarity index 100% rename from langchain/embeddings/mosaicml.py rename to libs/langchain/langchain/embeddings/mosaicml.py diff --git a/langchain/embeddings/nlpcloud.py b/libs/langchain/langchain/embeddings/nlpcloud.py similarity index 100% rename from langchain/embeddings/nlpcloud.py rename to libs/langchain/langchain/embeddings/nlpcloud.py diff --git a/langchain/embeddings/octoai_embeddings.py b/libs/langchain/langchain/embeddings/octoai_embeddings.py similarity index 100% rename from langchain/embeddings/octoai_embeddings.py rename to libs/langchain/langchain/embeddings/octoai_embeddings.py diff --git a/langchain/embeddings/openai.py b/libs/langchain/langchain/embeddings/openai.py similarity index 100% rename from langchain/embeddings/openai.py rename to libs/langchain/langchain/embeddings/openai.py diff --git a/langchain/embeddings/sagemaker_endpoint.py b/libs/langchain/langchain/embeddings/sagemaker_endpoint.py similarity index 100% rename from langchain/embeddings/sagemaker_endpoint.py rename to libs/langchain/langchain/embeddings/sagemaker_endpoint.py diff --git a/langchain/embeddings/self_hosted.py b/libs/langchain/langchain/embeddings/self_hosted.py similarity index 100% rename from langchain/embeddings/self_hosted.py rename to libs/langchain/langchain/embeddings/self_hosted.py diff --git a/langchain/embeddings/self_hosted_hugging_face.py b/libs/langchain/langchain/embeddings/self_hosted_hugging_face.py similarity index 100% rename from langchain/embeddings/self_hosted_hugging_face.py rename to libs/langchain/langchain/embeddings/self_hosted_hugging_face.py diff --git a/langchain/embeddings/sentence_transformer.py b/libs/langchain/langchain/embeddings/sentence_transformer.py similarity index 100% rename from langchain/embeddings/sentence_transformer.py rename to libs/langchain/langchain/embeddings/sentence_transformer.py diff --git a/langchain/embeddings/spacy_embeddings.py b/libs/langchain/langchain/embeddings/spacy_embeddings.py similarity index 100% rename from langchain/embeddings/spacy_embeddings.py rename to libs/langchain/langchain/embeddings/spacy_embeddings.py diff --git a/langchain/embeddings/tensorflow_hub.py b/libs/langchain/langchain/embeddings/tensorflow_hub.py similarity index 100% rename from langchain/embeddings/tensorflow_hub.py rename to libs/langchain/langchain/embeddings/tensorflow_hub.py diff --git a/langchain/embeddings/vertexai.py b/libs/langchain/langchain/embeddings/vertexai.py similarity index 100% rename from langchain/embeddings/vertexai.py rename to libs/langchain/langchain/embeddings/vertexai.py diff --git a/langchain/env.py b/libs/langchain/langchain/env.py similarity index 100% rename from langchain/env.py rename to libs/langchain/langchain/env.py diff --git a/langchain/evaluation/__init__.py b/libs/langchain/langchain/evaluation/__init__.py similarity index 100% rename from langchain/evaluation/__init__.py rename to libs/langchain/langchain/evaluation/__init__.py diff --git a/langchain/evaluation/agents/__init__.py b/libs/langchain/langchain/evaluation/agents/__init__.py similarity index 100% rename from langchain/evaluation/agents/__init__.py rename to libs/langchain/langchain/evaluation/agents/__init__.py diff --git a/langchain/evaluation/agents/trajectory_eval_chain.py b/libs/langchain/langchain/evaluation/agents/trajectory_eval_chain.py similarity index 100% rename from langchain/evaluation/agents/trajectory_eval_chain.py rename to libs/langchain/langchain/evaluation/agents/trajectory_eval_chain.py diff --git a/langchain/evaluation/agents/trajectory_eval_prompt.py b/libs/langchain/langchain/evaluation/agents/trajectory_eval_prompt.py similarity index 100% rename from langchain/evaluation/agents/trajectory_eval_prompt.py rename to libs/langchain/langchain/evaluation/agents/trajectory_eval_prompt.py diff --git a/langchain/evaluation/comparison/__init__.py b/libs/langchain/langchain/evaluation/comparison/__init__.py similarity index 100% rename from langchain/evaluation/comparison/__init__.py rename to libs/langchain/langchain/evaluation/comparison/__init__.py diff --git a/langchain/evaluation/comparison/eval_chain.py b/libs/langchain/langchain/evaluation/comparison/eval_chain.py similarity index 100% rename from langchain/evaluation/comparison/eval_chain.py rename to libs/langchain/langchain/evaluation/comparison/eval_chain.py diff --git a/langchain/evaluation/comparison/prompt.py b/libs/langchain/langchain/evaluation/comparison/prompt.py similarity index 100% rename from langchain/evaluation/comparison/prompt.py rename to libs/langchain/langchain/evaluation/comparison/prompt.py diff --git a/langchain/evaluation/criteria/__init__.py b/libs/langchain/langchain/evaluation/criteria/__init__.py similarity index 100% rename from langchain/evaluation/criteria/__init__.py rename to libs/langchain/langchain/evaluation/criteria/__init__.py diff --git a/langchain/evaluation/criteria/eval_chain.py b/libs/langchain/langchain/evaluation/criteria/eval_chain.py similarity index 100% rename from langchain/evaluation/criteria/eval_chain.py rename to libs/langchain/langchain/evaluation/criteria/eval_chain.py diff --git a/langchain/evaluation/criteria/prompt.py b/libs/langchain/langchain/evaluation/criteria/prompt.py similarity index 100% rename from langchain/evaluation/criteria/prompt.py rename to libs/langchain/langchain/evaluation/criteria/prompt.py diff --git a/langchain/evaluation/embedding_distance/__init__.py b/libs/langchain/langchain/evaluation/embedding_distance/__init__.py similarity index 100% rename from langchain/evaluation/embedding_distance/__init__.py rename to libs/langchain/langchain/evaluation/embedding_distance/__init__.py diff --git a/langchain/evaluation/embedding_distance/base.py b/libs/langchain/langchain/evaluation/embedding_distance/base.py similarity index 100% rename from langchain/evaluation/embedding_distance/base.py rename to libs/langchain/langchain/evaluation/embedding_distance/base.py diff --git a/langchain/evaluation/loading.py b/libs/langchain/langchain/evaluation/loading.py similarity index 100% rename from langchain/evaluation/loading.py rename to libs/langchain/langchain/evaluation/loading.py diff --git a/langchain/evaluation/qa/__init__.py b/libs/langchain/langchain/evaluation/qa/__init__.py similarity index 100% rename from langchain/evaluation/qa/__init__.py rename to libs/langchain/langchain/evaluation/qa/__init__.py diff --git a/langchain/evaluation/qa/eval_chain.py b/libs/langchain/langchain/evaluation/qa/eval_chain.py similarity index 100% rename from langchain/evaluation/qa/eval_chain.py rename to libs/langchain/langchain/evaluation/qa/eval_chain.py diff --git a/langchain/evaluation/qa/eval_prompt.py b/libs/langchain/langchain/evaluation/qa/eval_prompt.py similarity index 100% rename from langchain/evaluation/qa/eval_prompt.py rename to libs/langchain/langchain/evaluation/qa/eval_prompt.py diff --git a/langchain/evaluation/qa/generate_chain.py b/libs/langchain/langchain/evaluation/qa/generate_chain.py similarity index 100% rename from langchain/evaluation/qa/generate_chain.py rename to libs/langchain/langchain/evaluation/qa/generate_chain.py diff --git a/langchain/evaluation/qa/generate_prompt.py b/libs/langchain/langchain/evaluation/qa/generate_prompt.py similarity index 100% rename from langchain/evaluation/qa/generate_prompt.py rename to libs/langchain/langchain/evaluation/qa/generate_prompt.py diff --git a/langchain/evaluation/schema.py b/libs/langchain/langchain/evaluation/schema.py similarity index 100% rename from langchain/evaluation/schema.py rename to libs/langchain/langchain/evaluation/schema.py diff --git a/langchain/evaluation/string_distance/__init__.py b/libs/langchain/langchain/evaluation/string_distance/__init__.py similarity index 100% rename from langchain/evaluation/string_distance/__init__.py rename to libs/langchain/langchain/evaluation/string_distance/__init__.py diff --git a/langchain/evaluation/string_distance/base.py b/libs/langchain/langchain/evaluation/string_distance/base.py similarity index 100% rename from langchain/evaluation/string_distance/base.py rename to libs/langchain/langchain/evaluation/string_distance/base.py diff --git a/langchain/example_generator.py b/libs/langchain/langchain/example_generator.py similarity index 100% rename from langchain/example_generator.py rename to libs/langchain/langchain/example_generator.py diff --git a/langchain/experimental/__init__.py b/libs/langchain/langchain/experimental/__init__.py similarity index 100% rename from langchain/experimental/__init__.py rename to libs/langchain/langchain/experimental/__init__.py diff --git a/langchain/experimental/autonomous_agents/__init__.py b/libs/langchain/langchain/experimental/autonomous_agents/__init__.py similarity index 100% rename from langchain/experimental/autonomous_agents/__init__.py rename to libs/langchain/langchain/experimental/autonomous_agents/__init__.py diff --git a/langchain/experimental/autonomous_agents/autogpt/__init__.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/__init__.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/__init__.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/__init__.py diff --git a/langchain/experimental/autonomous_agents/autogpt/agent.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/agent.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/agent.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/agent.py diff --git a/langchain/experimental/autonomous_agents/autogpt/memory.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/memory.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/memory.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/memory.py diff --git a/langchain/experimental/autonomous_agents/autogpt/output_parser.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/output_parser.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/output_parser.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/output_parser.py diff --git a/langchain/experimental/autonomous_agents/autogpt/prompt.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/prompt.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/prompt.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/prompt.py diff --git a/langchain/experimental/autonomous_agents/autogpt/prompt_generator.py b/libs/langchain/langchain/experimental/autonomous_agents/autogpt/prompt_generator.py similarity index 100% rename from langchain/experimental/autonomous_agents/autogpt/prompt_generator.py rename to libs/langchain/langchain/experimental/autonomous_agents/autogpt/prompt_generator.py diff --git a/langchain/experimental/autonomous_agents/baby_agi/__init__.py b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/__init__.py similarity index 100% rename from langchain/experimental/autonomous_agents/baby_agi/__init__.py rename to libs/langchain/langchain/experimental/autonomous_agents/baby_agi/__init__.py diff --git a/langchain/experimental/autonomous_agents/baby_agi/baby_agi.py b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/baby_agi.py similarity index 97% rename from langchain/experimental/autonomous_agents/baby_agi/baby_agi.py rename to libs/langchain/langchain/experimental/autonomous_agents/baby_agi/baby_agi.py index ab11b2bd85..2a204f5626 100644 --- a/langchain/experimental/autonomous_agents/baby_agi/baby_agi.py +++ b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/baby_agi.py @@ -1,203 +1,203 @@ -"""BabyAGI agent.""" -from collections import deque -from typing import Any, Dict, List, Optional - -from pydantic import BaseModel, Field - -from langchain.callbacks.manager import CallbackManagerForChainRun -from langchain.chains.base import Chain -from langchain.experimental.autonomous_agents.baby_agi.task_creation import ( - TaskCreationChain, -) -from langchain.experimental.autonomous_agents.baby_agi.task_execution import ( - TaskExecutionChain, -) -from langchain.experimental.autonomous_agents.baby_agi.task_prioritization import ( - TaskPrioritizationChain, -) -from langchain.schema.language_model import BaseLanguageModel -from langchain.vectorstores.base import VectorStore - - -class BabyAGI(Chain, BaseModel): - """Controller model for the BabyAGI agent.""" - - task_list: deque = Field(default_factory=deque) - task_creation_chain: Chain = Field(...) - task_prioritization_chain: Chain = Field(...) - execution_chain: Chain = Field(...) - task_id_counter: int = Field(1) - vectorstore: VectorStore = Field(init=False) - max_iterations: Optional[int] = None - - class Config: - """Configuration for this pydantic object.""" - - arbitrary_types_allowed = True - - def add_task(self, task: Dict) -> None: - self.task_list.append(task) - - def print_task_list(self) -> None: - print("\033[95m\033[1m" + "\n*****TASK LIST*****\n" + "\033[0m\033[0m") - for t in self.task_list: - print(str(t["task_id"]) + ": " + t["task_name"]) - - def print_next_task(self, task: Dict) -> None: - print("\033[92m\033[1m" + "\n*****NEXT TASK*****\n" + "\033[0m\033[0m") - print(str(task["task_id"]) + ": " + task["task_name"]) - - def print_task_result(self, result: str) -> None: - print("\033[93m\033[1m" + "\n*****TASK RESULT*****\n" + "\033[0m\033[0m") - print(result) - - @property - def input_keys(self) -> List[str]: - return ["objective"] - - @property - def output_keys(self) -> List[str]: - return [] - - def get_next_task( - self, result: str, task_description: str, objective: str, **kwargs: Any - ) -> List[Dict]: - """Get the next task.""" - task_names = [t["task_name"] for t in self.task_list] - - incomplete_tasks = ", ".join(task_names) - response = self.task_creation_chain.run( - result=result, - task_description=task_description, - incomplete_tasks=incomplete_tasks, - objective=objective, - **kwargs, - ) - new_tasks = response.split("\n") - return [ - {"task_name": task_name} for task_name in new_tasks if task_name.strip() - ] - - def prioritize_tasks( - self, this_task_id: int, objective: str, **kwargs: Any - ) -> List[Dict]: - """Prioritize tasks.""" - task_names = [t["task_name"] for t in list(self.task_list)] - next_task_id = int(this_task_id) + 1 - response = self.task_prioritization_chain.run( - task_names=", ".join(task_names), - next_task_id=str(next_task_id), - objective=objective, - **kwargs, - ) - new_tasks = response.split("\n") - prioritized_task_list = [] - for task_string in new_tasks: - if not task_string.strip(): - continue - task_parts = task_string.strip().split(".", 1) - if len(task_parts) == 2: - task_id = task_parts[0].strip() - task_name = task_parts[1].strip() - prioritized_task_list.append( - {"task_id": task_id, "task_name": task_name} - ) - return prioritized_task_list - - def _get_top_tasks(self, query: str, k: int) -> List[str]: - """Get the top k tasks based on the query.""" - results = self.vectorstore.similarity_search(query, k=k) - if not results: - return [] - return [str(item.metadata["task"]) for item in results] - - def execute_task(self, objective: str, task: str, k: int = 5, **kwargs: Any) -> str: - """Execute a task.""" - context = self._get_top_tasks(query=objective, k=k) - return self.execution_chain.run( - objective=objective, context="\n".join(context), task=task, **kwargs - ) - - def _call( - self, - inputs: Dict[str, Any], - run_manager: Optional[CallbackManagerForChainRun] = None, - ) -> Dict[str, Any]: - """Run the agent.""" - _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager() - objective = inputs["objective"] - first_task = inputs.get("first_task", "Make a todo list") - self.add_task({"task_id": 1, "task_name": first_task}) - num_iters = 0 - while True: - if self.task_list: - self.print_task_list() - - # Step 1: Pull the first task - task = self.task_list.popleft() - self.print_next_task(task) - - # Step 2: Execute the task - result = self.execute_task( - objective, task["task_name"], callbacks=_run_manager.get_child() - ) - this_task_id = int(task["task_id"]) - self.print_task_result(result) - - # Step 3: Store the result in Pinecone - result_id = f"result_{task['task_id']}" - self.vectorstore.add_texts( - texts=[result], - metadatas=[{"task": task["task_name"]}], - ids=[result_id], - ) - - # Step 4: Create new tasks and reprioritize task list - new_tasks = self.get_next_task( - result, - task["task_name"], - objective, - callbacks=_run_manager.get_child(), - ) - for new_task in new_tasks: - self.task_id_counter += 1 - new_task.update({"task_id": self.task_id_counter}) - self.add_task(new_task) - self.task_list = deque( - self.prioritize_tasks( - this_task_id, objective, callbacks=_run_manager.get_child() - ) - ) - num_iters += 1 - if self.max_iterations is not None and num_iters == self.max_iterations: - print( - "\033[91m\033[1m" + "\n*****TASK ENDING*****\n" + "\033[0m\033[0m" - ) - break - return {} - - @classmethod - def from_llm( - cls, - llm: BaseLanguageModel, - vectorstore: VectorStore, - verbose: bool = False, - task_execution_chain: Optional[Chain] = None, - **kwargs: Dict[str, Any], - ) -> "BabyAGI": - """Initialize the BabyAGI Controller.""" - task_creation_chain = TaskCreationChain.from_llm(llm, verbose=verbose) - task_prioritization_chain = TaskPrioritizationChain.from_llm( - llm, verbose=verbose - ) - if task_execution_chain is None: - execution_chain: Chain = TaskExecutionChain.from_llm(llm, verbose=verbose) - else: - execution_chain = task_execution_chain - return cls( - task_creation_chain=task_creation_chain, - task_prioritization_chain=task_prioritization_chain, - execution_chain=execution_chain, - vectorstore=vectorstore, - **kwargs, - ) +"""BabyAGI agent.""" +from collections import deque +from typing import Any, Dict, List, Optional + +from pydantic import BaseModel, Field + +from langchain.callbacks.manager import CallbackManagerForChainRun +from langchain.chains.base import Chain +from langchain.experimental.autonomous_agents.baby_agi.task_creation import ( + TaskCreationChain, +) +from langchain.experimental.autonomous_agents.baby_agi.task_execution import ( + TaskExecutionChain, +) +from langchain.experimental.autonomous_agents.baby_agi.task_prioritization import ( + TaskPrioritizationChain, +) +from langchain.schema.language_model import BaseLanguageModel +from langchain.vectorstores.base import VectorStore + + +class BabyAGI(Chain, BaseModel): + """Controller model for the BabyAGI agent.""" + + task_list: deque = Field(default_factory=deque) + task_creation_chain: Chain = Field(...) + task_prioritization_chain: Chain = Field(...) + execution_chain: Chain = Field(...) + task_id_counter: int = Field(1) + vectorstore: VectorStore = Field(init=False) + max_iterations: Optional[int] = None + + class Config: + """Configuration for this pydantic object.""" + + arbitrary_types_allowed = True + + def add_task(self, task: Dict) -> None: + self.task_list.append(task) + + def print_task_list(self) -> None: + print("\033[95m\033[1m" + "\n*****TASK LIST*****\n" + "\033[0m\033[0m") + for t in self.task_list: + print(str(t["task_id"]) + ": " + t["task_name"]) + + def print_next_task(self, task: Dict) -> None: + print("\033[92m\033[1m" + "\n*****NEXT TASK*****\n" + "\033[0m\033[0m") + print(str(task["task_id"]) + ": " + task["task_name"]) + + def print_task_result(self, result: str) -> None: + print("\033[93m\033[1m" + "\n*****TASK RESULT*****\n" + "\033[0m\033[0m") + print(result) + + @property + def input_keys(self) -> List[str]: + return ["objective"] + + @property + def output_keys(self) -> List[str]: + return [] + + def get_next_task( + self, result: str, task_description: str, objective: str, **kwargs: Any + ) -> List[Dict]: + """Get the next task.""" + task_names = [t["task_name"] for t in self.task_list] + + incomplete_tasks = ", ".join(task_names) + response = self.task_creation_chain.run( + result=result, + task_description=task_description, + incomplete_tasks=incomplete_tasks, + objective=objective, + **kwargs, + ) + new_tasks = response.split("\n") + return [ + {"task_name": task_name} for task_name in new_tasks if task_name.strip() + ] + + def prioritize_tasks( + self, this_task_id: int, objective: str, **kwargs: Any + ) -> List[Dict]: + """Prioritize tasks.""" + task_names = [t["task_name"] for t in list(self.task_list)] + next_task_id = int(this_task_id) + 1 + response = self.task_prioritization_chain.run( + task_names=", ".join(task_names), + next_task_id=str(next_task_id), + objective=objective, + **kwargs, + ) + new_tasks = response.split("\n") + prioritized_task_list = [] + for task_string in new_tasks: + if not task_string.strip(): + continue + task_parts = task_string.strip().split(".", 1) + if len(task_parts) == 2: + task_id = task_parts[0].strip() + task_name = task_parts[1].strip() + prioritized_task_list.append( + {"task_id": task_id, "task_name": task_name} + ) + return prioritized_task_list + + def _get_top_tasks(self, query: str, k: int) -> List[str]: + """Get the top k tasks based on the query.""" + results = self.vectorstore.similarity_search(query, k=k) + if not results: + return [] + return [str(item.metadata["task"]) for item in results] + + def execute_task(self, objective: str, task: str, k: int = 5, **kwargs: Any) -> str: + """Execute a task.""" + context = self._get_top_tasks(query=objective, k=k) + return self.execution_chain.run( + objective=objective, context="\n".join(context), task=task, **kwargs + ) + + def _call( + self, + inputs: Dict[str, Any], + run_manager: Optional[CallbackManagerForChainRun] = None, + ) -> Dict[str, Any]: + """Run the agent.""" + _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager() + objective = inputs["objective"] + first_task = inputs.get("first_task", "Make a todo list") + self.add_task({"task_id": 1, "task_name": first_task}) + num_iters = 0 + while True: + if self.task_list: + self.print_task_list() + + # Step 1: Pull the first task + task = self.task_list.popleft() + self.print_next_task(task) + + # Step 2: Execute the task + result = self.execute_task( + objective, task["task_name"], callbacks=_run_manager.get_child() + ) + this_task_id = int(task["task_id"]) + self.print_task_result(result) + + # Step 3: Store the result in Pinecone + result_id = f"result_{task['task_id']}" + self.vectorstore.add_texts( + texts=[result], + metadatas=[{"task": task["task_name"]}], + ids=[result_id], + ) + + # Step 4: Create new tasks and reprioritize task list + new_tasks = self.get_next_task( + result, + task["task_name"], + objective, + callbacks=_run_manager.get_child(), + ) + for new_task in new_tasks: + self.task_id_counter += 1 + new_task.update({"task_id": self.task_id_counter}) + self.add_task(new_task) + self.task_list = deque( + self.prioritize_tasks( + this_task_id, objective, callbacks=_run_manager.get_child() + ) + ) + num_iters += 1 + if self.max_iterations is not None and num_iters == self.max_iterations: + print( + "\033[91m\033[1m" + "\n*****TASK ENDING*****\n" + "\033[0m\033[0m" + ) + break + return {} + + @classmethod + def from_llm( + cls, + llm: BaseLanguageModel, + vectorstore: VectorStore, + verbose: bool = False, + task_execution_chain: Optional[Chain] = None, + **kwargs: Dict[str, Any], + ) -> "BabyAGI": + """Initialize the BabyAGI Controller.""" + task_creation_chain = TaskCreationChain.from_llm(llm, verbose=verbose) + task_prioritization_chain = TaskPrioritizationChain.from_llm( + llm, verbose=verbose + ) + if task_execution_chain is None: + execution_chain: Chain = TaskExecutionChain.from_llm(llm, verbose=verbose) + else: + execution_chain = task_execution_chain + return cls( + task_creation_chain=task_creation_chain, + task_prioritization_chain=task_prioritization_chain, + execution_chain=execution_chain, + vectorstore=vectorstore, + **kwargs, + ) diff --git a/langchain/experimental/autonomous_agents/baby_agi/task_creation.py b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_creation.py similarity index 97% rename from langchain/experimental/autonomous_agents/baby_agi/task_creation.py rename to libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_creation.py index 7f7713cdc8..47834b6463 100644 --- a/langchain/experimental/autonomous_agents/baby_agi/task_creation.py +++ b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_creation.py @@ -1,30 +1,30 @@ -from langchain import LLMChain, PromptTemplate -from langchain.schema.language_model import BaseLanguageModel - - -class TaskCreationChain(LLMChain): - """Chain to generates tasks.""" - - @classmethod - def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: - """Get the response parser.""" - task_creation_template = ( - "You are an task creation AI that uses the result of an execution agent" - " to create new tasks with the following objective: {objective}," - " The last completed task has the result: {result}." - " This result was based on this task description: {task_description}." - " These are incomplete tasks: {incomplete_tasks}." - " Based on the result, create new tasks to be completed" - " by the AI system that do not overlap with incomplete tasks." - " Return the tasks as an array." - ) - prompt = PromptTemplate( - template=task_creation_template, - input_variables=[ - "result", - "task_description", - "incomplete_tasks", - "objective", - ], - ) - return cls(prompt=prompt, llm=llm, verbose=verbose) +from langchain import LLMChain, PromptTemplate +from langchain.schema.language_model import BaseLanguageModel + + +class TaskCreationChain(LLMChain): + """Chain to generates tasks.""" + + @classmethod + def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: + """Get the response parser.""" + task_creation_template = ( + "You are an task creation AI that uses the result of an execution agent" + " to create new tasks with the following objective: {objective}," + " The last completed task has the result: {result}." + " This result was based on this task description: {task_description}." + " These are incomplete tasks: {incomplete_tasks}." + " Based on the result, create new tasks to be completed" + " by the AI system that do not overlap with incomplete tasks." + " Return the tasks as an array." + ) + prompt = PromptTemplate( + template=task_creation_template, + input_variables=[ + "result", + "task_description", + "incomplete_tasks", + "objective", + ], + ) + return cls(prompt=prompt, llm=llm, verbose=verbose) diff --git a/langchain/experimental/autonomous_agents/baby_agi/task_execution.py b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_execution.py similarity index 97% rename from langchain/experimental/autonomous_agents/baby_agi/task_execution.py rename to libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_execution.py index d968395c85..d5d137a48a 100644 --- a/langchain/experimental/autonomous_agents/baby_agi/task_execution.py +++ b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_execution.py @@ -1,21 +1,21 @@ -from langchain import LLMChain, PromptTemplate -from langchain.schema.language_model import BaseLanguageModel - - -class TaskExecutionChain(LLMChain): - """Chain to execute tasks.""" - - @classmethod - def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: - """Get the response parser.""" - execution_template = ( - "You are an AI who performs one task based on the following objective: " - "{objective}." - "Take into account these previously completed tasks: {context}." - " Your task: {task}. Response:" - ) - prompt = PromptTemplate( - template=execution_template, - input_variables=["objective", "context", "task"], - ) - return cls(prompt=prompt, llm=llm, verbose=verbose) +from langchain import LLMChain, PromptTemplate +from langchain.schema.language_model import BaseLanguageModel + + +class TaskExecutionChain(LLMChain): + """Chain to execute tasks.""" + + @classmethod + def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: + """Get the response parser.""" + execution_template = ( + "You are an AI who performs one task based on the following objective: " + "{objective}." + "Take into account these previously completed tasks: {context}." + " Your task: {task}. Response:" + ) + prompt = PromptTemplate( + template=execution_template, + input_variables=["objective", "context", "task"], + ) + return cls(prompt=prompt, llm=llm, verbose=verbose) diff --git a/langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py similarity index 97% rename from langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py rename to libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py index 34affa398a..9b6eb58f6e 100644 --- a/langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py +++ b/libs/langchain/langchain/experimental/autonomous_agents/baby_agi/task_prioritization.py @@ -1,24 +1,24 @@ -from langchain import LLMChain, PromptTemplate -from langchain.schema.language_model import BaseLanguageModel - - -class TaskPrioritizationChain(LLMChain): - """Chain to prioritize tasks.""" - - @classmethod - def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: - """Get the response parser.""" - task_prioritization_template = ( - "You are a task prioritization AI tasked with cleaning the formatting of " - "and reprioritizing the following tasks: {task_names}." - " Consider the ultimate objective of your team: {objective}." - " Do not remove any tasks. Return the result as a numbered list, like:" - " #. First task" - " #. Second task" - " Start the task list with number {next_task_id}." - ) - prompt = PromptTemplate( - template=task_prioritization_template, - input_variables=["task_names", "next_task_id", "objective"], - ) - return cls(prompt=prompt, llm=llm, verbose=verbose) +from langchain import LLMChain, PromptTemplate +from langchain.schema.language_model import BaseLanguageModel + + +class TaskPrioritizationChain(LLMChain): + """Chain to prioritize tasks.""" + + @classmethod + def from_llm(cls, llm: BaseLanguageModel, verbose: bool = True) -> LLMChain: + """Get the response parser.""" + task_prioritization_template = ( + "You are a task prioritization AI tasked with cleaning the formatting of " + "and reprioritizing the following tasks: {task_names}." + " Consider the ultimate objective of your team: {objective}." + " Do not remove any tasks. Return the result as a numbered list, like:" + " #. First task" + " #. Second task" + " Start the task list with number {next_task_id}." + ) + prompt = PromptTemplate( + template=task_prioritization_template, + input_variables=["task_names", "next_task_id", "objective"], + ) + return cls(prompt=prompt, llm=llm, verbose=verbose) diff --git a/langchain/experimental/cpal/README.md b/libs/langchain/langchain/experimental/cpal/README.md similarity index 100% rename from langchain/experimental/cpal/README.md rename to libs/langchain/langchain/experimental/cpal/README.md diff --git a/langchain/experimental/cpal/__init__.py b/libs/langchain/langchain/experimental/cpal/__init__.py similarity index 100% rename from langchain/experimental/cpal/__init__.py rename to libs/langchain/langchain/experimental/cpal/__init__.py diff --git a/langchain/experimental/cpal/base.py b/libs/langchain/langchain/experimental/cpal/base.py similarity index 100% rename from langchain/experimental/cpal/base.py rename to libs/langchain/langchain/experimental/cpal/base.py diff --git a/langchain/experimental/cpal/constants.py b/libs/langchain/langchain/experimental/cpal/constants.py similarity index 100% rename from langchain/experimental/cpal/constants.py rename to libs/langchain/langchain/experimental/cpal/constants.py diff --git a/langchain/experimental/cpal/models.py b/libs/langchain/langchain/experimental/cpal/models.py similarity index 100% rename from langchain/experimental/cpal/models.py rename to libs/langchain/langchain/experimental/cpal/models.py diff --git a/langchain/experimental/cpal/templates/__init__.py b/libs/langchain/langchain/experimental/cpal/templates/__init__.py similarity index 100% rename from langchain/experimental/cpal/templates/__init__.py rename to libs/langchain/langchain/experimental/cpal/templates/__init__.py diff --git a/langchain/experimental/cpal/templates/univariate/__init__.py b/libs/langchain/langchain/experimental/cpal/templates/univariate/__init__.py similarity index 100% rename from langchain/experimental/cpal/templates/univariate/__init__.py rename to libs/langchain/langchain/experimental/cpal/templates/univariate/__init__.py diff --git a/langchain/experimental/cpal/templates/univariate/causal.py b/libs/langchain/langchain/experimental/cpal/templates/univariate/causal.py similarity index 100% rename from langchain/experimental/cpal/templates/univariate/causal.py rename to libs/langchain/langchain/experimental/cpal/templates/univariate/causal.py diff --git a/langchain/experimental/cpal/templates/univariate/intervention.py b/libs/langchain/langchain/experimental/cpal/templates/univariate/intervention.py similarity index 100% rename from langchain/experimental/cpal/templates/univariate/intervention.py rename to libs/langchain/langchain/experimental/cpal/templates/univariate/intervention.py diff --git a/langchain/experimental/cpal/templates/univariate/narrative.py b/libs/langchain/langchain/experimental/cpal/templates/univariate/narrative.py similarity index 100% rename from langchain/experimental/cpal/templates/univariate/narrative.py rename to libs/langchain/langchain/experimental/cpal/templates/univariate/narrative.py diff --git a/langchain/experimental/cpal/templates/univariate/query.py b/libs/langchain/langchain/experimental/cpal/templates/univariate/query.py similarity index 100% rename from langchain/experimental/cpal/templates/univariate/query.py rename to libs/langchain/langchain/experimental/cpal/templates/univariate/query.py diff --git a/langchain/experimental/generative_agents/__init__.py b/libs/langchain/langchain/experimental/generative_agents/__init__.py similarity index 100% rename from langchain/experimental/generative_agents/__init__.py rename to libs/langchain/langchain/experimental/generative_agents/__init__.py diff --git a/langchain/experimental/generative_agents/generative_agent.py b/libs/langchain/langchain/experimental/generative_agents/generative_agent.py similarity index 100% rename from langchain/experimental/generative_agents/generative_agent.py rename to libs/langchain/langchain/experimental/generative_agents/generative_agent.py diff --git a/langchain/experimental/generative_agents/memory.py b/libs/langchain/langchain/experimental/generative_agents/memory.py similarity index 100% rename from langchain/experimental/generative_agents/memory.py rename to libs/langchain/langchain/experimental/generative_agents/memory.py diff --git a/langchain/experimental/llms/__init__.py b/libs/langchain/langchain/experimental/llms/__init__.py similarity index 100% rename from langchain/experimental/llms/__init__.py rename to libs/langchain/langchain/experimental/llms/__init__.py diff --git a/langchain/experimental/llms/jsonformer_decoder.py b/libs/langchain/langchain/experimental/llms/jsonformer_decoder.py similarity index 100% rename from langchain/experimental/llms/jsonformer_decoder.py rename to libs/langchain/langchain/experimental/llms/jsonformer_decoder.py diff --git a/langchain/experimental/llms/rellm_decoder.py b/libs/langchain/langchain/experimental/llms/rellm_decoder.py similarity index 100% rename from langchain/experimental/llms/rellm_decoder.py rename to libs/langchain/langchain/experimental/llms/rellm_decoder.py diff --git a/langchain/experimental/plan_and_execute/__init__.py b/libs/langchain/langchain/experimental/plan_and_execute/__init__.py similarity index 100% rename from langchain/experimental/plan_and_execute/__init__.py rename to libs/langchain/langchain/experimental/plan_and_execute/__init__.py diff --git a/langchain/experimental/plan_and_execute/agent_executor.py b/libs/langchain/langchain/experimental/plan_and_execute/agent_executor.py similarity index 100% rename from langchain/experimental/plan_and_execute/agent_executor.py rename to libs/langchain/langchain/experimental/plan_and_execute/agent_executor.py diff --git a/langchain/experimental/plan_and_execute/executors/__init__.py b/libs/langchain/langchain/experimental/plan_and_execute/executors/__init__.py similarity index 100% rename from langchain/experimental/plan_and_execute/executors/__init__.py rename to libs/langchain/langchain/experimental/plan_and_execute/executors/__init__.py diff --git a/langchain/experimental/plan_and_execute/executors/agent_executor.py b/libs/langchain/langchain/experimental/plan_and_execute/executors/agent_executor.py similarity index 100% rename from langchain/experimental/plan_and_execute/executors/agent_executor.py rename to libs/langchain/langchain/experimental/plan_and_execute/executors/agent_executor.py diff --git a/langchain/experimental/plan_and_execute/executors/base.py b/libs/langchain/langchain/experimental/plan_and_execute/executors/base.py similarity index 100% rename from langchain/experimental/plan_and_execute/executors/base.py rename to libs/langchain/langchain/experimental/plan_and_execute/executors/base.py diff --git a/langchain/experimental/plan_and_execute/planners/__init__.py b/libs/langchain/langchain/experimental/plan_and_execute/planners/__init__.py similarity index 100% rename from langchain/experimental/plan_and_execute/planners/__init__.py rename to libs/langchain/langchain/experimental/plan_and_execute/planners/__init__.py diff --git a/langchain/experimental/plan_and_execute/planners/base.py b/libs/langchain/langchain/experimental/plan_and_execute/planners/base.py similarity index 100% rename from langchain/experimental/plan_and_execute/planners/base.py rename to libs/langchain/langchain/experimental/plan_and_execute/planners/base.py diff --git a/langchain/experimental/plan_and_execute/planners/chat_planner.py b/libs/langchain/langchain/experimental/plan_and_execute/planners/chat_planner.py similarity index 100% rename from langchain/experimental/plan_and_execute/planners/chat_planner.py rename to libs/langchain/langchain/experimental/plan_and_execute/planners/chat_planner.py diff --git a/langchain/experimental/plan_and_execute/schema.py b/libs/langchain/langchain/experimental/plan_and_execute/schema.py similarity index 100% rename from langchain/experimental/plan_and_execute/schema.py rename to libs/langchain/langchain/experimental/plan_and_execute/schema.py diff --git a/langchain/formatting.py b/libs/langchain/langchain/formatting.py similarity index 100% rename from langchain/formatting.py rename to libs/langchain/langchain/formatting.py diff --git a/langchain/graphs/__init__.py b/libs/langchain/langchain/graphs/__init__.py similarity index 100% rename from langchain/graphs/__init__.py rename to libs/langchain/langchain/graphs/__init__.py diff --git a/langchain/graphs/hugegraph.py b/libs/langchain/langchain/graphs/hugegraph.py similarity index 100% rename from langchain/graphs/hugegraph.py rename to libs/langchain/langchain/graphs/hugegraph.py diff --git a/langchain/graphs/kuzu_graph.py b/libs/langchain/langchain/graphs/kuzu_graph.py similarity index 100% rename from langchain/graphs/kuzu_graph.py rename to libs/langchain/langchain/graphs/kuzu_graph.py diff --git a/langchain/graphs/nebula_graph.py b/libs/langchain/langchain/graphs/nebula_graph.py similarity index 100% rename from langchain/graphs/nebula_graph.py rename to libs/langchain/langchain/graphs/nebula_graph.py diff --git a/langchain/graphs/neo4j_graph.py b/libs/langchain/langchain/graphs/neo4j_graph.py similarity index 100% rename from langchain/graphs/neo4j_graph.py rename to libs/langchain/langchain/graphs/neo4j_graph.py diff --git a/langchain/graphs/neptune_graph.py b/libs/langchain/langchain/graphs/neptune_graph.py similarity index 100% rename from langchain/graphs/neptune_graph.py rename to libs/langchain/langchain/graphs/neptune_graph.py diff --git a/langchain/graphs/networkx_graph.py b/libs/langchain/langchain/graphs/networkx_graph.py similarity index 100% rename from langchain/graphs/networkx_graph.py rename to libs/langchain/langchain/graphs/networkx_graph.py diff --git a/langchain/graphs/rdf_graph.py b/libs/langchain/langchain/graphs/rdf_graph.py similarity index 100% rename from langchain/graphs/rdf_graph.py rename to libs/langchain/langchain/graphs/rdf_graph.py diff --git a/langchain/indexes/__init__.py b/libs/langchain/langchain/indexes/__init__.py similarity index 100% rename from langchain/indexes/__init__.py rename to libs/langchain/langchain/indexes/__init__.py diff --git a/langchain/indexes/graph.py b/libs/langchain/langchain/indexes/graph.py similarity index 100% rename from langchain/indexes/graph.py rename to libs/langchain/langchain/indexes/graph.py diff --git a/langchain/indexes/prompts/__init__.py b/libs/langchain/langchain/indexes/prompts/__init__.py similarity index 100% rename from langchain/indexes/prompts/__init__.py rename to libs/langchain/langchain/indexes/prompts/__init__.py diff --git a/langchain/indexes/prompts/entity_extraction.py b/libs/langchain/langchain/indexes/prompts/entity_extraction.py similarity index 100% rename from langchain/indexes/prompts/entity_extraction.py rename to libs/langchain/langchain/indexes/prompts/entity_extraction.py diff --git a/langchain/indexes/prompts/entity_summarization.py b/libs/langchain/langchain/indexes/prompts/entity_summarization.py similarity index 100% rename from langchain/indexes/prompts/entity_summarization.py rename to libs/langchain/langchain/indexes/prompts/entity_summarization.py diff --git a/langchain/indexes/prompts/knowledge_triplet_extraction.py b/libs/langchain/langchain/indexes/prompts/knowledge_triplet_extraction.py similarity index 100% rename from langchain/indexes/prompts/knowledge_triplet_extraction.py rename to libs/langchain/langchain/indexes/prompts/knowledge_triplet_extraction.py diff --git a/langchain/indexes/vectorstore.py b/libs/langchain/langchain/indexes/vectorstore.py similarity index 100% rename from langchain/indexes/vectorstore.py rename to libs/langchain/langchain/indexes/vectorstore.py diff --git a/langchain/input.py b/libs/langchain/langchain/input.py similarity index 100% rename from langchain/input.py rename to libs/langchain/langchain/input.py diff --git a/langchain/llms/__init__.py b/libs/langchain/langchain/llms/__init__.py similarity index 100% rename from langchain/llms/__init__.py rename to libs/langchain/langchain/llms/__init__.py diff --git a/langchain/llms/ai21.py b/libs/langchain/langchain/llms/ai21.py similarity index 100% rename from langchain/llms/ai21.py rename to libs/langchain/langchain/llms/ai21.py diff --git a/langchain/llms/aleph_alpha.py b/libs/langchain/langchain/llms/aleph_alpha.py similarity index 100% rename from langchain/llms/aleph_alpha.py rename to libs/langchain/langchain/llms/aleph_alpha.py diff --git a/langchain/llms/amazon_api_gateway.py b/libs/langchain/langchain/llms/amazon_api_gateway.py similarity index 100% rename from langchain/llms/amazon_api_gateway.py rename to libs/langchain/langchain/llms/amazon_api_gateway.py diff --git a/langchain/llms/anthropic.py b/libs/langchain/langchain/llms/anthropic.py similarity index 100% rename from langchain/llms/anthropic.py rename to libs/langchain/langchain/llms/anthropic.py diff --git a/langchain/llms/anyscale.py b/libs/langchain/langchain/llms/anyscale.py similarity index 100% rename from langchain/llms/anyscale.py rename to libs/langchain/langchain/llms/anyscale.py diff --git a/langchain/llms/aviary.py b/libs/langchain/langchain/llms/aviary.py similarity index 100% rename from langchain/llms/aviary.py rename to libs/langchain/langchain/llms/aviary.py diff --git a/langchain/llms/azureml_endpoint.py b/libs/langchain/langchain/llms/azureml_endpoint.py similarity index 100% rename from langchain/llms/azureml_endpoint.py rename to libs/langchain/langchain/llms/azureml_endpoint.py diff --git a/langchain/llms/bananadev.py b/libs/langchain/langchain/llms/bananadev.py similarity index 100% rename from langchain/llms/bananadev.py rename to libs/langchain/langchain/llms/bananadev.py diff --git a/langchain/llms/base.py b/libs/langchain/langchain/llms/base.py similarity index 100% rename from langchain/llms/base.py rename to libs/langchain/langchain/llms/base.py diff --git a/langchain/llms/baseten.py b/libs/langchain/langchain/llms/baseten.py similarity index 100% rename from langchain/llms/baseten.py rename to libs/langchain/langchain/llms/baseten.py diff --git a/langchain/llms/beam.py b/libs/langchain/langchain/llms/beam.py similarity index 100% rename from langchain/llms/beam.py rename to libs/langchain/langchain/llms/beam.py diff --git a/langchain/llms/bedrock.py b/libs/langchain/langchain/llms/bedrock.py similarity index 100% rename from langchain/llms/bedrock.py rename to libs/langchain/langchain/llms/bedrock.py diff --git a/langchain/llms/cerebriumai.py b/libs/langchain/langchain/llms/cerebriumai.py similarity index 100% rename from langchain/llms/cerebriumai.py rename to libs/langchain/langchain/llms/cerebriumai.py diff --git a/langchain/llms/chatglm.py b/libs/langchain/langchain/llms/chatglm.py similarity index 100% rename from langchain/llms/chatglm.py rename to libs/langchain/langchain/llms/chatglm.py diff --git a/langchain/llms/clarifai.py b/libs/langchain/langchain/llms/clarifai.py similarity index 100% rename from langchain/llms/clarifai.py rename to libs/langchain/langchain/llms/clarifai.py diff --git a/langchain/llms/cohere.py b/libs/langchain/langchain/llms/cohere.py similarity index 100% rename from langchain/llms/cohere.py rename to libs/langchain/langchain/llms/cohere.py diff --git a/langchain/llms/ctransformers.py b/libs/langchain/langchain/llms/ctransformers.py similarity index 100% rename from langchain/llms/ctransformers.py rename to libs/langchain/langchain/llms/ctransformers.py diff --git a/langchain/llms/databricks.py b/libs/langchain/langchain/llms/databricks.py similarity index 100% rename from langchain/llms/databricks.py rename to libs/langchain/langchain/llms/databricks.py diff --git a/langchain/llms/deepinfra.py b/libs/langchain/langchain/llms/deepinfra.py similarity index 100% rename from langchain/llms/deepinfra.py rename to libs/langchain/langchain/llms/deepinfra.py diff --git a/langchain/llms/fake.py b/libs/langchain/langchain/llms/fake.py similarity index 100% rename from langchain/llms/fake.py rename to libs/langchain/langchain/llms/fake.py diff --git a/langchain/llms/forefrontai.py b/libs/langchain/langchain/llms/forefrontai.py similarity index 100% rename from langchain/llms/forefrontai.py rename to libs/langchain/langchain/llms/forefrontai.py diff --git a/langchain/llms/google_palm.py b/libs/langchain/langchain/llms/google_palm.py similarity index 100% rename from langchain/llms/google_palm.py rename to libs/langchain/langchain/llms/google_palm.py diff --git a/langchain/llms/gooseai.py b/libs/langchain/langchain/llms/gooseai.py similarity index 100% rename from langchain/llms/gooseai.py rename to libs/langchain/langchain/llms/gooseai.py diff --git a/langchain/llms/gpt4all.py b/libs/langchain/langchain/llms/gpt4all.py similarity index 100% rename from langchain/llms/gpt4all.py rename to libs/langchain/langchain/llms/gpt4all.py diff --git a/langchain/llms/huggingface_endpoint.py b/libs/langchain/langchain/llms/huggingface_endpoint.py similarity index 100% rename from langchain/llms/huggingface_endpoint.py rename to libs/langchain/langchain/llms/huggingface_endpoint.py diff --git a/langchain/llms/huggingface_hub.py b/libs/langchain/langchain/llms/huggingface_hub.py similarity index 100% rename from langchain/llms/huggingface_hub.py rename to libs/langchain/langchain/llms/huggingface_hub.py diff --git a/langchain/llms/huggingface_pipeline.py b/libs/langchain/langchain/llms/huggingface_pipeline.py similarity index 100% rename from langchain/llms/huggingface_pipeline.py rename to libs/langchain/langchain/llms/huggingface_pipeline.py diff --git a/langchain/llms/huggingface_text_gen_inference.py b/libs/langchain/langchain/llms/huggingface_text_gen_inference.py similarity index 100% rename from langchain/llms/huggingface_text_gen_inference.py rename to libs/langchain/langchain/llms/huggingface_text_gen_inference.py diff --git a/langchain/llms/human.py b/libs/langchain/langchain/llms/human.py similarity index 100% rename from langchain/llms/human.py rename to libs/langchain/langchain/llms/human.py diff --git a/langchain/llms/koboldai.py b/libs/langchain/langchain/llms/koboldai.py similarity index 100% rename from langchain/llms/koboldai.py rename to libs/langchain/langchain/llms/koboldai.py diff --git a/langchain/llms/llamacpp.py b/libs/langchain/langchain/llms/llamacpp.py similarity index 100% rename from langchain/llms/llamacpp.py rename to libs/langchain/langchain/llms/llamacpp.py diff --git a/langchain/llms/loading.py b/libs/langchain/langchain/llms/loading.py similarity index 100% rename from langchain/llms/loading.py rename to libs/langchain/langchain/llms/loading.py diff --git a/langchain/llms/manifest.py b/libs/langchain/langchain/llms/manifest.py similarity index 100% rename from langchain/llms/manifest.py rename to libs/langchain/langchain/llms/manifest.py diff --git a/langchain/llms/mlflow_ai_gateway.py b/libs/langchain/langchain/llms/mlflow_ai_gateway.py similarity index 100% rename from langchain/llms/mlflow_ai_gateway.py rename to libs/langchain/langchain/llms/mlflow_ai_gateway.py diff --git a/langchain/llms/modal.py b/libs/langchain/langchain/llms/modal.py similarity index 100% rename from langchain/llms/modal.py rename to libs/langchain/langchain/llms/modal.py diff --git a/langchain/llms/mosaicml.py b/libs/langchain/langchain/llms/mosaicml.py similarity index 100% rename from langchain/llms/mosaicml.py rename to libs/langchain/langchain/llms/mosaicml.py diff --git a/langchain/llms/nlpcloud.py b/libs/langchain/langchain/llms/nlpcloud.py similarity index 100% rename from langchain/llms/nlpcloud.py rename to libs/langchain/langchain/llms/nlpcloud.py diff --git a/langchain/llms/octoai_endpoint.py b/libs/langchain/langchain/llms/octoai_endpoint.py similarity index 100% rename from langchain/llms/octoai_endpoint.py rename to libs/langchain/langchain/llms/octoai_endpoint.py diff --git a/langchain/llms/openai.py b/libs/langchain/langchain/llms/openai.py similarity index 100% rename from langchain/llms/openai.py rename to libs/langchain/langchain/llms/openai.py diff --git a/langchain/llms/openllm.py b/libs/langchain/langchain/llms/openllm.py similarity index 100% rename from langchain/llms/openllm.py rename to libs/langchain/langchain/llms/openllm.py diff --git a/langchain/llms/openlm.py b/libs/langchain/langchain/llms/openlm.py similarity index 100% rename from langchain/llms/openlm.py rename to libs/langchain/langchain/llms/openlm.py diff --git a/langchain/llms/petals.py b/libs/langchain/langchain/llms/petals.py similarity index 100% rename from langchain/llms/petals.py rename to libs/langchain/langchain/llms/petals.py diff --git a/langchain/llms/pipelineai.py b/libs/langchain/langchain/llms/pipelineai.py similarity index 100% rename from langchain/llms/pipelineai.py rename to libs/langchain/langchain/llms/pipelineai.py diff --git a/langchain/llms/predibase.py b/libs/langchain/langchain/llms/predibase.py similarity index 100% rename from langchain/llms/predibase.py rename to libs/langchain/langchain/llms/predibase.py diff --git a/langchain/llms/predictionguard.py b/libs/langchain/langchain/llms/predictionguard.py similarity index 100% rename from langchain/llms/predictionguard.py rename to libs/langchain/langchain/llms/predictionguard.py diff --git a/langchain/llms/promptlayer_openai.py b/libs/langchain/langchain/llms/promptlayer_openai.py similarity index 100% rename from langchain/llms/promptlayer_openai.py rename to libs/langchain/langchain/llms/promptlayer_openai.py diff --git a/langchain/llms/replicate.py b/libs/langchain/langchain/llms/replicate.py similarity index 100% rename from langchain/llms/replicate.py rename to libs/langchain/langchain/llms/replicate.py diff --git a/langchain/llms/rwkv.py b/libs/langchain/langchain/llms/rwkv.py similarity index 100% rename from langchain/llms/rwkv.py rename to libs/langchain/langchain/llms/rwkv.py diff --git a/langchain/llms/sagemaker_endpoint.py b/libs/langchain/langchain/llms/sagemaker_endpoint.py similarity index 100% rename from langchain/llms/sagemaker_endpoint.py rename to libs/langchain/langchain/llms/sagemaker_endpoint.py diff --git a/langchain/llms/self_hosted.py b/libs/langchain/langchain/llms/self_hosted.py similarity index 100% rename from langchain/llms/self_hosted.py rename to libs/langchain/langchain/llms/self_hosted.py diff --git a/langchain/llms/self_hosted_hugging_face.py b/libs/langchain/langchain/llms/self_hosted_hugging_face.py similarity index 100% rename from langchain/llms/self_hosted_hugging_face.py rename to libs/langchain/langchain/llms/self_hosted_hugging_face.py diff --git a/langchain/llms/stochasticai.py b/libs/langchain/langchain/llms/stochasticai.py similarity index 100% rename from langchain/llms/stochasticai.py rename to libs/langchain/langchain/llms/stochasticai.py diff --git a/langchain/llms/textgen.py b/libs/langchain/langchain/llms/textgen.py similarity index 100% rename from langchain/llms/textgen.py rename to libs/langchain/langchain/llms/textgen.py diff --git a/langchain/llms/tongyi.py b/libs/langchain/langchain/llms/tongyi.py similarity index 100% rename from langchain/llms/tongyi.py rename to libs/langchain/langchain/llms/tongyi.py diff --git a/langchain/llms/utils.py b/libs/langchain/langchain/llms/utils.py similarity index 100% rename from langchain/llms/utils.py rename to libs/langchain/langchain/llms/utils.py diff --git a/langchain/llms/vertexai.py b/libs/langchain/langchain/llms/vertexai.py similarity index 100% rename from langchain/llms/vertexai.py rename to libs/langchain/langchain/llms/vertexai.py diff --git a/langchain/llms/writer.py b/libs/langchain/langchain/llms/writer.py similarity index 100% rename from langchain/llms/writer.py rename to libs/langchain/langchain/llms/writer.py diff --git a/langchain/load/__init__.py b/libs/langchain/langchain/load/__init__.py similarity index 100% rename from langchain/load/__init__.py rename to libs/langchain/langchain/load/__init__.py diff --git a/langchain/load/dump.py b/libs/langchain/langchain/load/dump.py similarity index 100% rename from langchain/load/dump.py rename to libs/langchain/langchain/load/dump.py diff --git a/langchain/load/load.py b/libs/langchain/langchain/load/load.py similarity index 100% rename from langchain/load/load.py rename to libs/langchain/langchain/load/load.py diff --git a/langchain/load/serializable.py b/libs/langchain/langchain/load/serializable.py similarity index 100% rename from langchain/load/serializable.py rename to libs/langchain/langchain/load/serializable.py diff --git a/langchain/memory/__init__.py b/libs/langchain/langchain/memory/__init__.py similarity index 100% rename from langchain/memory/__init__.py rename to libs/langchain/langchain/memory/__init__.py diff --git a/langchain/memory/buffer.py b/libs/langchain/langchain/memory/buffer.py similarity index 100% rename from langchain/memory/buffer.py rename to libs/langchain/langchain/memory/buffer.py diff --git a/langchain/memory/buffer_window.py b/libs/langchain/langchain/memory/buffer_window.py similarity index 100% rename from langchain/memory/buffer_window.py rename to libs/langchain/langchain/memory/buffer_window.py diff --git a/langchain/memory/chat_memory.py b/libs/langchain/langchain/memory/chat_memory.py similarity index 100% rename from langchain/memory/chat_memory.py rename to libs/langchain/langchain/memory/chat_memory.py diff --git a/langchain/memory/chat_message_histories/__init__.py b/libs/langchain/langchain/memory/chat_message_histories/__init__.py similarity index 100% rename from langchain/memory/chat_message_histories/__init__.py rename to libs/langchain/langchain/memory/chat_message_histories/__init__.py diff --git a/langchain/memory/chat_message_histories/cassandra.py b/libs/langchain/langchain/memory/chat_message_histories/cassandra.py similarity index 100% rename from langchain/memory/chat_message_histories/cassandra.py rename to libs/langchain/langchain/memory/chat_message_histories/cassandra.py diff --git a/langchain/memory/chat_message_histories/cosmos_db.py b/libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py similarity index 100% rename from langchain/memory/chat_message_histories/cosmos_db.py rename to libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py diff --git a/langchain/memory/chat_message_histories/dynamodb.py b/libs/langchain/langchain/memory/chat_message_histories/dynamodb.py similarity index 100% rename from langchain/memory/chat_message_histories/dynamodb.py rename to libs/langchain/langchain/memory/chat_message_histories/dynamodb.py diff --git a/langchain/memory/chat_message_histories/file.py b/libs/langchain/langchain/memory/chat_message_histories/file.py similarity index 100% rename from langchain/memory/chat_message_histories/file.py rename to libs/langchain/langchain/memory/chat_message_histories/file.py diff --git a/langchain/memory/chat_message_histories/firestore.py b/libs/langchain/langchain/memory/chat_message_histories/firestore.py similarity index 100% rename from langchain/memory/chat_message_histories/firestore.py rename to libs/langchain/langchain/memory/chat_message_histories/firestore.py diff --git a/langchain/memory/chat_message_histories/in_memory.py b/libs/langchain/langchain/memory/chat_message_histories/in_memory.py similarity index 100% rename from langchain/memory/chat_message_histories/in_memory.py rename to libs/langchain/langchain/memory/chat_message_histories/in_memory.py diff --git a/langchain/memory/chat_message_histories/momento.py b/libs/langchain/langchain/memory/chat_message_histories/momento.py similarity index 100% rename from langchain/memory/chat_message_histories/momento.py rename to libs/langchain/langchain/memory/chat_message_histories/momento.py diff --git a/langchain/memory/chat_message_histories/mongodb.py b/libs/langchain/langchain/memory/chat_message_histories/mongodb.py similarity index 100% rename from langchain/memory/chat_message_histories/mongodb.py rename to libs/langchain/langchain/memory/chat_message_histories/mongodb.py diff --git a/langchain/memory/chat_message_histories/postgres.py b/libs/langchain/langchain/memory/chat_message_histories/postgres.py similarity index 100% rename from langchain/memory/chat_message_histories/postgres.py rename to libs/langchain/langchain/memory/chat_message_histories/postgres.py diff --git a/langchain/memory/chat_message_histories/redis.py b/libs/langchain/langchain/memory/chat_message_histories/redis.py similarity index 100% rename from langchain/memory/chat_message_histories/redis.py rename to libs/langchain/langchain/memory/chat_message_histories/redis.py diff --git a/langchain/memory/chat_message_histories/sql.py b/libs/langchain/langchain/memory/chat_message_histories/sql.py similarity index 100% rename from langchain/memory/chat_message_histories/sql.py rename to libs/langchain/langchain/memory/chat_message_histories/sql.py diff --git a/langchain/memory/chat_message_histories/zep.py b/libs/langchain/langchain/memory/chat_message_histories/zep.py similarity index 100% rename from langchain/memory/chat_message_histories/zep.py rename to libs/langchain/langchain/memory/chat_message_histories/zep.py diff --git a/langchain/memory/combined.py b/libs/langchain/langchain/memory/combined.py similarity index 100% rename from langchain/memory/combined.py rename to libs/langchain/langchain/memory/combined.py diff --git a/langchain/memory/entity.py b/libs/langchain/langchain/memory/entity.py similarity index 100% rename from langchain/memory/entity.py rename to libs/langchain/langchain/memory/entity.py diff --git a/langchain/memory/kg.py b/libs/langchain/langchain/memory/kg.py similarity index 100% rename from langchain/memory/kg.py rename to libs/langchain/langchain/memory/kg.py diff --git a/langchain/memory/motorhead_memory.py b/libs/langchain/langchain/memory/motorhead_memory.py similarity index 100% rename from langchain/memory/motorhead_memory.py rename to libs/langchain/langchain/memory/motorhead_memory.py diff --git a/langchain/memory/prompt.py b/libs/langchain/langchain/memory/prompt.py similarity index 100% rename from langchain/memory/prompt.py rename to libs/langchain/langchain/memory/prompt.py diff --git a/langchain/memory/readonly.py b/libs/langchain/langchain/memory/readonly.py similarity index 100% rename from langchain/memory/readonly.py rename to libs/langchain/langchain/memory/readonly.py diff --git a/langchain/memory/simple.py b/libs/langchain/langchain/memory/simple.py similarity index 100% rename from langchain/memory/simple.py rename to libs/langchain/langchain/memory/simple.py diff --git a/langchain/memory/summary.py b/libs/langchain/langchain/memory/summary.py similarity index 100% rename from langchain/memory/summary.py rename to libs/langchain/langchain/memory/summary.py diff --git a/langchain/memory/summary_buffer.py b/libs/langchain/langchain/memory/summary_buffer.py similarity index 100% rename from langchain/memory/summary_buffer.py rename to libs/langchain/langchain/memory/summary_buffer.py diff --git a/langchain/memory/token_buffer.py b/libs/langchain/langchain/memory/token_buffer.py similarity index 100% rename from langchain/memory/token_buffer.py rename to libs/langchain/langchain/memory/token_buffer.py diff --git a/langchain/memory/utils.py b/libs/langchain/langchain/memory/utils.py similarity index 100% rename from langchain/memory/utils.py rename to libs/langchain/langchain/memory/utils.py diff --git a/langchain/memory/vectorstore.py b/libs/langchain/langchain/memory/vectorstore.py similarity index 100% rename from langchain/memory/vectorstore.py rename to libs/langchain/langchain/memory/vectorstore.py diff --git a/langchain/memory/zep_memory.py b/libs/langchain/langchain/memory/zep_memory.py similarity index 100% rename from langchain/memory/zep_memory.py rename to libs/langchain/langchain/memory/zep_memory.py diff --git a/langchain/model_laboratory.py b/libs/langchain/langchain/model_laboratory.py similarity index 100% rename from langchain/model_laboratory.py rename to libs/langchain/langchain/model_laboratory.py diff --git a/langchain/output_parsers/__init__.py b/libs/langchain/langchain/output_parsers/__init__.py similarity index 100% rename from langchain/output_parsers/__init__.py rename to libs/langchain/langchain/output_parsers/__init__.py diff --git a/langchain/output_parsers/boolean.py b/libs/langchain/langchain/output_parsers/boolean.py similarity index 100% rename from langchain/output_parsers/boolean.py rename to libs/langchain/langchain/output_parsers/boolean.py diff --git a/langchain/output_parsers/combining.py b/libs/langchain/langchain/output_parsers/combining.py similarity index 100% rename from langchain/output_parsers/combining.py rename to libs/langchain/langchain/output_parsers/combining.py diff --git a/langchain/output_parsers/datetime.py b/libs/langchain/langchain/output_parsers/datetime.py similarity index 100% rename from langchain/output_parsers/datetime.py rename to libs/langchain/langchain/output_parsers/datetime.py diff --git a/langchain/output_parsers/enum.py b/libs/langchain/langchain/output_parsers/enum.py similarity index 100% rename from langchain/output_parsers/enum.py rename to libs/langchain/langchain/output_parsers/enum.py diff --git a/langchain/output_parsers/fix.py b/libs/langchain/langchain/output_parsers/fix.py similarity index 100% rename from langchain/output_parsers/fix.py rename to libs/langchain/langchain/output_parsers/fix.py diff --git a/langchain/output_parsers/format_instructions.py b/libs/langchain/langchain/output_parsers/format_instructions.py similarity index 100% rename from langchain/output_parsers/format_instructions.py rename to libs/langchain/langchain/output_parsers/format_instructions.py diff --git a/langchain/output_parsers/json.py b/libs/langchain/langchain/output_parsers/json.py similarity index 100% rename from langchain/output_parsers/json.py rename to libs/langchain/langchain/output_parsers/json.py diff --git a/langchain/output_parsers/list.py b/libs/langchain/langchain/output_parsers/list.py similarity index 100% rename from langchain/output_parsers/list.py rename to libs/langchain/langchain/output_parsers/list.py diff --git a/langchain/output_parsers/loading.py b/libs/langchain/langchain/output_parsers/loading.py similarity index 100% rename from langchain/output_parsers/loading.py rename to libs/langchain/langchain/output_parsers/loading.py diff --git a/langchain/output_parsers/openai_functions.py b/libs/langchain/langchain/output_parsers/openai_functions.py similarity index 100% rename from langchain/output_parsers/openai_functions.py rename to libs/langchain/langchain/output_parsers/openai_functions.py diff --git a/langchain/output_parsers/prompts.py b/libs/langchain/langchain/output_parsers/prompts.py similarity index 100% rename from langchain/output_parsers/prompts.py rename to libs/langchain/langchain/output_parsers/prompts.py diff --git a/langchain/output_parsers/pydantic.py b/libs/langchain/langchain/output_parsers/pydantic.py similarity index 100% rename from langchain/output_parsers/pydantic.py rename to libs/langchain/langchain/output_parsers/pydantic.py diff --git a/langchain/output_parsers/rail_parser.py b/libs/langchain/langchain/output_parsers/rail_parser.py similarity index 100% rename from langchain/output_parsers/rail_parser.py rename to libs/langchain/langchain/output_parsers/rail_parser.py diff --git a/langchain/output_parsers/regex.py b/libs/langchain/langchain/output_parsers/regex.py similarity index 100% rename from langchain/output_parsers/regex.py rename to libs/langchain/langchain/output_parsers/regex.py diff --git a/langchain/output_parsers/regex_dict.py b/libs/langchain/langchain/output_parsers/regex_dict.py similarity index 100% rename from langchain/output_parsers/regex_dict.py rename to libs/langchain/langchain/output_parsers/regex_dict.py diff --git a/langchain/output_parsers/retry.py b/libs/langchain/langchain/output_parsers/retry.py similarity index 100% rename from langchain/output_parsers/retry.py rename to libs/langchain/langchain/output_parsers/retry.py diff --git a/langchain/output_parsers/structured.py b/libs/langchain/langchain/output_parsers/structured.py similarity index 100% rename from langchain/output_parsers/structured.py rename to libs/langchain/langchain/output_parsers/structured.py diff --git a/langchain/prompts/__init__.py b/libs/langchain/langchain/prompts/__init__.py similarity index 100% rename from langchain/prompts/__init__.py rename to libs/langchain/langchain/prompts/__init__.py diff --git a/langchain/prompts/base.py b/libs/langchain/langchain/prompts/base.py similarity index 100% rename from langchain/prompts/base.py rename to libs/langchain/langchain/prompts/base.py diff --git a/langchain/prompts/chat.py b/libs/langchain/langchain/prompts/chat.py similarity index 100% rename from langchain/prompts/chat.py rename to libs/langchain/langchain/prompts/chat.py diff --git a/langchain/prompts/example_selector/__init__.py b/libs/langchain/langchain/prompts/example_selector/__init__.py similarity index 100% rename from langchain/prompts/example_selector/__init__.py rename to libs/langchain/langchain/prompts/example_selector/__init__.py diff --git a/langchain/prompts/example_selector/base.py b/libs/langchain/langchain/prompts/example_selector/base.py similarity index 100% rename from langchain/prompts/example_selector/base.py rename to libs/langchain/langchain/prompts/example_selector/base.py diff --git a/langchain/prompts/example_selector/length_based.py b/libs/langchain/langchain/prompts/example_selector/length_based.py similarity index 100% rename from langchain/prompts/example_selector/length_based.py rename to libs/langchain/langchain/prompts/example_selector/length_based.py diff --git a/langchain/prompts/example_selector/ngram_overlap.py b/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py similarity index 100% rename from langchain/prompts/example_selector/ngram_overlap.py rename to libs/langchain/langchain/prompts/example_selector/ngram_overlap.py diff --git a/langchain/prompts/example_selector/semantic_similarity.py b/libs/langchain/langchain/prompts/example_selector/semantic_similarity.py similarity index 100% rename from langchain/prompts/example_selector/semantic_similarity.py rename to libs/langchain/langchain/prompts/example_selector/semantic_similarity.py diff --git a/langchain/prompts/few_shot.py b/libs/langchain/langchain/prompts/few_shot.py similarity index 100% rename from langchain/prompts/few_shot.py rename to libs/langchain/langchain/prompts/few_shot.py diff --git a/langchain/prompts/few_shot_with_templates.py b/libs/langchain/langchain/prompts/few_shot_with_templates.py similarity index 100% rename from langchain/prompts/few_shot_with_templates.py rename to libs/langchain/langchain/prompts/few_shot_with_templates.py diff --git a/langchain/prompts/loading.py b/libs/langchain/langchain/prompts/loading.py similarity index 100% rename from langchain/prompts/loading.py rename to libs/langchain/langchain/prompts/loading.py diff --git a/langchain/prompts/pipeline.py b/libs/langchain/langchain/prompts/pipeline.py similarity index 100% rename from langchain/prompts/pipeline.py rename to libs/langchain/langchain/prompts/pipeline.py diff --git a/langchain/prompts/prompt.py b/libs/langchain/langchain/prompts/prompt.py similarity index 100% rename from langchain/prompts/prompt.py rename to libs/langchain/langchain/prompts/prompt.py diff --git a/langchain/py.typed b/libs/langchain/langchain/py.typed similarity index 100% rename from langchain/py.typed rename to libs/langchain/langchain/py.typed diff --git a/langchain/python.py b/libs/langchain/langchain/python.py similarity index 100% rename from langchain/python.py rename to libs/langchain/langchain/python.py diff --git a/langchain/requests.py b/libs/langchain/langchain/requests.py similarity index 100% rename from langchain/requests.py rename to libs/langchain/langchain/requests.py diff --git a/langchain/retrievers/__init__.py b/libs/langchain/langchain/retrievers/__init__.py similarity index 100% rename from langchain/retrievers/__init__.py rename to libs/langchain/langchain/retrievers/__init__.py diff --git a/langchain/retrievers/arxiv.py b/libs/langchain/langchain/retrievers/arxiv.py similarity index 100% rename from langchain/retrievers/arxiv.py rename to libs/langchain/langchain/retrievers/arxiv.py diff --git a/langchain/retrievers/azure_cognitive_search.py b/libs/langchain/langchain/retrievers/azure_cognitive_search.py similarity index 100% rename from langchain/retrievers/azure_cognitive_search.py rename to libs/langchain/langchain/retrievers/azure_cognitive_search.py diff --git a/langchain/retrievers/bm25.py b/libs/langchain/langchain/retrievers/bm25.py similarity index 100% rename from langchain/retrievers/bm25.py rename to libs/langchain/langchain/retrievers/bm25.py diff --git a/langchain/retrievers/chaindesk.py b/libs/langchain/langchain/retrievers/chaindesk.py similarity index 100% rename from langchain/retrievers/chaindesk.py rename to libs/langchain/langchain/retrievers/chaindesk.py diff --git a/langchain/retrievers/chatgpt_plugin_retriever.py b/libs/langchain/langchain/retrievers/chatgpt_plugin_retriever.py similarity index 100% rename from langchain/retrievers/chatgpt_plugin_retriever.py rename to libs/langchain/langchain/retrievers/chatgpt_plugin_retriever.py diff --git a/langchain/retrievers/contextual_compression.py b/libs/langchain/langchain/retrievers/contextual_compression.py similarity index 100% rename from langchain/retrievers/contextual_compression.py rename to libs/langchain/langchain/retrievers/contextual_compression.py diff --git a/langchain/retrievers/databerry.py b/libs/langchain/langchain/retrievers/databerry.py similarity index 100% rename from langchain/retrievers/databerry.py rename to libs/langchain/langchain/retrievers/databerry.py diff --git a/langchain/retrievers/docarray.py b/libs/langchain/langchain/retrievers/docarray.py similarity index 100% rename from langchain/retrievers/docarray.py rename to libs/langchain/langchain/retrievers/docarray.py diff --git a/langchain/retrievers/document_compressors/__init__.py b/libs/langchain/langchain/retrievers/document_compressors/__init__.py similarity index 100% rename from langchain/retrievers/document_compressors/__init__.py rename to libs/langchain/langchain/retrievers/document_compressors/__init__.py diff --git a/langchain/retrievers/document_compressors/base.py b/libs/langchain/langchain/retrievers/document_compressors/base.py similarity index 100% rename from langchain/retrievers/document_compressors/base.py rename to libs/langchain/langchain/retrievers/document_compressors/base.py diff --git a/langchain/retrievers/document_compressors/chain_extract.py b/libs/langchain/langchain/retrievers/document_compressors/chain_extract.py similarity index 100% rename from langchain/retrievers/document_compressors/chain_extract.py rename to libs/langchain/langchain/retrievers/document_compressors/chain_extract.py diff --git a/langchain/retrievers/document_compressors/chain_extract_prompt.py b/libs/langchain/langchain/retrievers/document_compressors/chain_extract_prompt.py similarity index 100% rename from langchain/retrievers/document_compressors/chain_extract_prompt.py rename to libs/langchain/langchain/retrievers/document_compressors/chain_extract_prompt.py diff --git a/langchain/retrievers/document_compressors/chain_filter.py b/libs/langchain/langchain/retrievers/document_compressors/chain_filter.py similarity index 100% rename from langchain/retrievers/document_compressors/chain_filter.py rename to libs/langchain/langchain/retrievers/document_compressors/chain_filter.py diff --git a/langchain/retrievers/document_compressors/chain_filter_prompt.py b/libs/langchain/langchain/retrievers/document_compressors/chain_filter_prompt.py similarity index 100% rename from langchain/retrievers/document_compressors/chain_filter_prompt.py rename to libs/langchain/langchain/retrievers/document_compressors/chain_filter_prompt.py diff --git a/langchain/retrievers/document_compressors/cohere_rerank.py b/libs/langchain/langchain/retrievers/document_compressors/cohere_rerank.py similarity index 100% rename from langchain/retrievers/document_compressors/cohere_rerank.py rename to libs/langchain/langchain/retrievers/document_compressors/cohere_rerank.py diff --git a/langchain/retrievers/document_compressors/embeddings_filter.py b/libs/langchain/langchain/retrievers/document_compressors/embeddings_filter.py similarity index 100% rename from langchain/retrievers/document_compressors/embeddings_filter.py rename to libs/langchain/langchain/retrievers/document_compressors/embeddings_filter.py diff --git a/langchain/retrievers/elastic_search_bm25.py b/libs/langchain/langchain/retrievers/elastic_search_bm25.py similarity index 100% rename from langchain/retrievers/elastic_search_bm25.py rename to libs/langchain/langchain/retrievers/elastic_search_bm25.py diff --git a/langchain/retrievers/google_cloud_enterprise_search.py b/libs/langchain/langchain/retrievers/google_cloud_enterprise_search.py similarity index 100% rename from langchain/retrievers/google_cloud_enterprise_search.py rename to libs/langchain/langchain/retrievers/google_cloud_enterprise_search.py diff --git a/langchain/retrievers/kendra.py b/libs/langchain/langchain/retrievers/kendra.py similarity index 100% rename from langchain/retrievers/kendra.py rename to libs/langchain/langchain/retrievers/kendra.py diff --git a/langchain/retrievers/knn.py b/libs/langchain/langchain/retrievers/knn.py similarity index 100% rename from langchain/retrievers/knn.py rename to libs/langchain/langchain/retrievers/knn.py diff --git a/langchain/retrievers/llama_index.py b/libs/langchain/langchain/retrievers/llama_index.py similarity index 100% rename from langchain/retrievers/llama_index.py rename to libs/langchain/langchain/retrievers/llama_index.py diff --git a/langchain/retrievers/merger_retriever.py b/libs/langchain/langchain/retrievers/merger_retriever.py similarity index 100% rename from langchain/retrievers/merger_retriever.py rename to libs/langchain/langchain/retrievers/merger_retriever.py diff --git a/langchain/retrievers/metal.py b/libs/langchain/langchain/retrievers/metal.py similarity index 100% rename from langchain/retrievers/metal.py rename to libs/langchain/langchain/retrievers/metal.py diff --git a/langchain/retrievers/milvus.py b/libs/langchain/langchain/retrievers/milvus.py similarity index 100% rename from langchain/retrievers/milvus.py rename to libs/langchain/langchain/retrievers/milvus.py diff --git a/langchain/retrievers/multi_query.py b/libs/langchain/langchain/retrievers/multi_query.py similarity index 100% rename from langchain/retrievers/multi_query.py rename to libs/langchain/langchain/retrievers/multi_query.py diff --git a/langchain/retrievers/pinecone_hybrid_search.py b/libs/langchain/langchain/retrievers/pinecone_hybrid_search.py similarity index 100% rename from langchain/retrievers/pinecone_hybrid_search.py rename to libs/langchain/langchain/retrievers/pinecone_hybrid_search.py diff --git a/langchain/retrievers/pubmed.py b/libs/langchain/langchain/retrievers/pubmed.py similarity index 100% rename from langchain/retrievers/pubmed.py rename to libs/langchain/langchain/retrievers/pubmed.py diff --git a/langchain/retrievers/pupmed.py b/libs/langchain/langchain/retrievers/pupmed.py similarity index 100% rename from langchain/retrievers/pupmed.py rename to libs/langchain/langchain/retrievers/pupmed.py diff --git a/langchain/retrievers/remote_retriever.py b/libs/langchain/langchain/retrievers/remote_retriever.py similarity index 100% rename from langchain/retrievers/remote_retriever.py rename to libs/langchain/langchain/retrievers/remote_retriever.py diff --git a/langchain/retrievers/self_query/__init__.py b/libs/langchain/langchain/retrievers/self_query/__init__.py similarity index 100% rename from langchain/retrievers/self_query/__init__.py rename to libs/langchain/langchain/retrievers/self_query/__init__.py diff --git a/langchain/retrievers/self_query/base.py b/libs/langchain/langchain/retrievers/self_query/base.py similarity index 100% rename from langchain/retrievers/self_query/base.py rename to libs/langchain/langchain/retrievers/self_query/base.py diff --git a/langchain/retrievers/self_query/chroma.py b/libs/langchain/langchain/retrievers/self_query/chroma.py similarity index 100% rename from langchain/retrievers/self_query/chroma.py rename to libs/langchain/langchain/retrievers/self_query/chroma.py diff --git a/langchain/retrievers/self_query/myscale.py b/libs/langchain/langchain/retrievers/self_query/myscale.py similarity index 100% rename from langchain/retrievers/self_query/myscale.py rename to libs/langchain/langchain/retrievers/self_query/myscale.py diff --git a/langchain/retrievers/self_query/pinecone.py b/libs/langchain/langchain/retrievers/self_query/pinecone.py similarity index 100% rename from langchain/retrievers/self_query/pinecone.py rename to libs/langchain/langchain/retrievers/self_query/pinecone.py diff --git a/langchain/retrievers/self_query/qdrant.py b/libs/langchain/langchain/retrievers/self_query/qdrant.py similarity index 100% rename from langchain/retrievers/self_query/qdrant.py rename to libs/langchain/langchain/retrievers/self_query/qdrant.py diff --git a/langchain/retrievers/self_query/weaviate.py b/libs/langchain/langchain/retrievers/self_query/weaviate.py similarity index 100% rename from langchain/retrievers/self_query/weaviate.py rename to libs/langchain/langchain/retrievers/self_query/weaviate.py diff --git a/langchain/retrievers/svm.py b/libs/langchain/langchain/retrievers/svm.py similarity index 100% rename from langchain/retrievers/svm.py rename to libs/langchain/langchain/retrievers/svm.py diff --git a/langchain/retrievers/tfidf.py b/libs/langchain/langchain/retrievers/tfidf.py similarity index 100% rename from langchain/retrievers/tfidf.py rename to libs/langchain/langchain/retrievers/tfidf.py diff --git a/langchain/retrievers/time_weighted_retriever.py b/libs/langchain/langchain/retrievers/time_weighted_retriever.py similarity index 100% rename from langchain/retrievers/time_weighted_retriever.py rename to libs/langchain/langchain/retrievers/time_weighted_retriever.py diff --git a/langchain/retrievers/vespa_retriever.py b/libs/langchain/langchain/retrievers/vespa_retriever.py similarity index 100% rename from langchain/retrievers/vespa_retriever.py rename to libs/langchain/langchain/retrievers/vespa_retriever.py diff --git a/langchain/retrievers/weaviate_hybrid_search.py b/libs/langchain/langchain/retrievers/weaviate_hybrid_search.py similarity index 100% rename from langchain/retrievers/weaviate_hybrid_search.py rename to libs/langchain/langchain/retrievers/weaviate_hybrid_search.py diff --git a/langchain/retrievers/wikipedia.py b/libs/langchain/langchain/retrievers/wikipedia.py similarity index 100% rename from langchain/retrievers/wikipedia.py rename to libs/langchain/langchain/retrievers/wikipedia.py diff --git a/langchain/retrievers/zep.py b/libs/langchain/langchain/retrievers/zep.py similarity index 100% rename from langchain/retrievers/zep.py rename to libs/langchain/langchain/retrievers/zep.py diff --git a/langchain/retrievers/zilliz.py b/libs/langchain/langchain/retrievers/zilliz.py similarity index 100% rename from langchain/retrievers/zilliz.py rename to libs/langchain/langchain/retrievers/zilliz.py diff --git a/langchain/schema/__init__.py b/libs/langchain/langchain/schema/__init__.py similarity index 100% rename from langchain/schema/__init__.py rename to libs/langchain/langchain/schema/__init__.py diff --git a/langchain/schema/agent.py b/libs/langchain/langchain/schema/agent.py similarity index 100% rename from langchain/schema/agent.py rename to libs/langchain/langchain/schema/agent.py diff --git a/langchain/schema/document.py b/libs/langchain/langchain/schema/document.py similarity index 100% rename from langchain/schema/document.py rename to libs/langchain/langchain/schema/document.py diff --git a/langchain/schema/language_model.py b/libs/langchain/langchain/schema/language_model.py similarity index 100% rename from langchain/schema/language_model.py rename to libs/langchain/langchain/schema/language_model.py diff --git a/langchain/schema/memory.py b/libs/langchain/langchain/schema/memory.py similarity index 100% rename from langchain/schema/memory.py rename to libs/langchain/langchain/schema/memory.py diff --git a/langchain/schema/messages.py b/libs/langchain/langchain/schema/messages.py similarity index 100% rename from langchain/schema/messages.py rename to libs/langchain/langchain/schema/messages.py diff --git a/langchain/schema/output.py b/libs/langchain/langchain/schema/output.py similarity index 100% rename from langchain/schema/output.py rename to libs/langchain/langchain/schema/output.py diff --git a/langchain/schema/output_parser.py b/libs/langchain/langchain/schema/output_parser.py similarity index 100% rename from langchain/schema/output_parser.py rename to libs/langchain/langchain/schema/output_parser.py diff --git a/langchain/schema/prompt.py b/libs/langchain/langchain/schema/prompt.py similarity index 100% rename from langchain/schema/prompt.py rename to libs/langchain/langchain/schema/prompt.py diff --git a/langchain/schema/prompt_template.py b/libs/langchain/langchain/schema/prompt_template.py similarity index 100% rename from langchain/schema/prompt_template.py rename to libs/langchain/langchain/schema/prompt_template.py diff --git a/langchain/schema/retriever.py b/libs/langchain/langchain/schema/retriever.py similarity index 100% rename from langchain/schema/retriever.py rename to libs/langchain/langchain/schema/retriever.py diff --git a/langchain/serpapi.py b/libs/langchain/langchain/serpapi.py similarity index 100% rename from langchain/serpapi.py rename to libs/langchain/langchain/serpapi.py diff --git a/langchain/server.py b/libs/langchain/langchain/server.py similarity index 100% rename from langchain/server.py rename to libs/langchain/langchain/server.py diff --git a/langchain/smith/__init__.py b/libs/langchain/langchain/smith/__init__.py similarity index 100% rename from langchain/smith/__init__.py rename to libs/langchain/langchain/smith/__init__.py diff --git a/langchain/smith/evaluation/__init__.py b/libs/langchain/langchain/smith/evaluation/__init__.py similarity index 100% rename from langchain/smith/evaluation/__init__.py rename to libs/langchain/langchain/smith/evaluation/__init__.py diff --git a/langchain/smith/evaluation/config.py b/libs/langchain/langchain/smith/evaluation/config.py similarity index 100% rename from langchain/smith/evaluation/config.py rename to libs/langchain/langchain/smith/evaluation/config.py diff --git a/langchain/smith/evaluation/runner_utils.py b/libs/langchain/langchain/smith/evaluation/runner_utils.py similarity index 100% rename from langchain/smith/evaluation/runner_utils.py rename to libs/langchain/langchain/smith/evaluation/runner_utils.py diff --git a/langchain/smith/evaluation/string_run_evaluator.py b/libs/langchain/langchain/smith/evaluation/string_run_evaluator.py similarity index 100% rename from langchain/smith/evaluation/string_run_evaluator.py rename to libs/langchain/langchain/smith/evaluation/string_run_evaluator.py diff --git a/langchain/smith/evaluation/utils.py b/libs/langchain/langchain/smith/evaluation/utils.py similarity index 100% rename from langchain/smith/evaluation/utils.py rename to libs/langchain/langchain/smith/evaluation/utils.py diff --git a/langchain/sql_database.py b/libs/langchain/langchain/sql_database.py similarity index 100% rename from langchain/sql_database.py rename to libs/langchain/langchain/sql_database.py diff --git a/langchain/text_splitter.py b/libs/langchain/langchain/text_splitter.py similarity index 100% rename from langchain/text_splitter.py rename to libs/langchain/langchain/text_splitter.py diff --git a/langchain/tools/__init__.py b/libs/langchain/langchain/tools/__init__.py similarity index 100% rename from langchain/tools/__init__.py rename to libs/langchain/langchain/tools/__init__.py diff --git a/langchain/tools/amadeus/__init__.py b/libs/langchain/langchain/tools/amadeus/__init__.py similarity index 100% rename from langchain/tools/amadeus/__init__.py rename to libs/langchain/langchain/tools/amadeus/__init__.py diff --git a/langchain/tools/amadeus/base.py b/libs/langchain/langchain/tools/amadeus/base.py similarity index 100% rename from langchain/tools/amadeus/base.py rename to libs/langchain/langchain/tools/amadeus/base.py diff --git a/langchain/tools/amadeus/closest_airport.py b/libs/langchain/langchain/tools/amadeus/closest_airport.py similarity index 100% rename from langchain/tools/amadeus/closest_airport.py rename to libs/langchain/langchain/tools/amadeus/closest_airport.py diff --git a/langchain/tools/amadeus/flight_search.py b/libs/langchain/langchain/tools/amadeus/flight_search.py similarity index 100% rename from langchain/tools/amadeus/flight_search.py rename to libs/langchain/langchain/tools/amadeus/flight_search.py diff --git a/langchain/tools/amadeus/utils.py b/libs/langchain/langchain/tools/amadeus/utils.py similarity index 100% rename from langchain/tools/amadeus/utils.py rename to libs/langchain/langchain/tools/amadeus/utils.py diff --git a/langchain/tools/arxiv/__init__.py b/libs/langchain/langchain/tools/arxiv/__init__.py similarity index 100% rename from langchain/tools/arxiv/__init__.py rename to libs/langchain/langchain/tools/arxiv/__init__.py diff --git a/langchain/tools/arxiv/tool.py b/libs/langchain/langchain/tools/arxiv/tool.py similarity index 100% rename from langchain/tools/arxiv/tool.py rename to libs/langchain/langchain/tools/arxiv/tool.py diff --git a/langchain/tools/azure_cognitive_services/__init__.py b/libs/langchain/langchain/tools/azure_cognitive_services/__init__.py similarity index 100% rename from langchain/tools/azure_cognitive_services/__init__.py rename to libs/langchain/langchain/tools/azure_cognitive_services/__init__.py diff --git a/langchain/tools/azure_cognitive_services/form_recognizer.py b/libs/langchain/langchain/tools/azure_cognitive_services/form_recognizer.py similarity index 100% rename from langchain/tools/azure_cognitive_services/form_recognizer.py rename to libs/langchain/langchain/tools/azure_cognitive_services/form_recognizer.py diff --git a/langchain/tools/azure_cognitive_services/image_analysis.py b/libs/langchain/langchain/tools/azure_cognitive_services/image_analysis.py similarity index 100% rename from langchain/tools/azure_cognitive_services/image_analysis.py rename to libs/langchain/langchain/tools/azure_cognitive_services/image_analysis.py diff --git a/langchain/tools/azure_cognitive_services/speech2text.py b/libs/langchain/langchain/tools/azure_cognitive_services/speech2text.py similarity index 100% rename from langchain/tools/azure_cognitive_services/speech2text.py rename to libs/langchain/langchain/tools/azure_cognitive_services/speech2text.py diff --git a/langchain/tools/azure_cognitive_services/text2speech.py b/libs/langchain/langchain/tools/azure_cognitive_services/text2speech.py similarity index 100% rename from langchain/tools/azure_cognitive_services/text2speech.py rename to libs/langchain/langchain/tools/azure_cognitive_services/text2speech.py diff --git a/langchain/tools/azure_cognitive_services/utils.py b/libs/langchain/langchain/tools/azure_cognitive_services/utils.py similarity index 100% rename from langchain/tools/azure_cognitive_services/utils.py rename to libs/langchain/langchain/tools/azure_cognitive_services/utils.py diff --git a/langchain/tools/base.py b/libs/langchain/langchain/tools/base.py similarity index 100% rename from langchain/tools/base.py rename to libs/langchain/langchain/tools/base.py diff --git a/langchain/tools/bing_search/__init__.py b/libs/langchain/langchain/tools/bing_search/__init__.py similarity index 100% rename from langchain/tools/bing_search/__init__.py rename to libs/langchain/langchain/tools/bing_search/__init__.py diff --git a/langchain/tools/bing_search/tool.py b/libs/langchain/langchain/tools/bing_search/tool.py similarity index 100% rename from langchain/tools/bing_search/tool.py rename to libs/langchain/langchain/tools/bing_search/tool.py diff --git a/langchain/tools/brave_search/__init__.py b/libs/langchain/langchain/tools/brave_search/__init__.py similarity index 100% rename from langchain/tools/brave_search/__init__.py rename to libs/langchain/langchain/tools/brave_search/__init__.py diff --git a/langchain/tools/brave_search/tool.py b/libs/langchain/langchain/tools/brave_search/tool.py similarity index 100% rename from langchain/tools/brave_search/tool.py rename to libs/langchain/langchain/tools/brave_search/tool.py diff --git a/langchain/tools/convert_to_openai.py b/libs/langchain/langchain/tools/convert_to_openai.py similarity index 100% rename from langchain/tools/convert_to_openai.py rename to libs/langchain/langchain/tools/convert_to_openai.py diff --git a/langchain/tools/dataforseo_api_search/__init__.py b/libs/langchain/langchain/tools/dataforseo_api_search/__init__.py similarity index 100% rename from langchain/tools/dataforseo_api_search/__init__.py rename to libs/langchain/langchain/tools/dataforseo_api_search/__init__.py diff --git a/langchain/tools/dataforseo_api_search/tool.py b/libs/langchain/langchain/tools/dataforseo_api_search/tool.py similarity index 100% rename from langchain/tools/dataforseo_api_search/tool.py rename to libs/langchain/langchain/tools/dataforseo_api_search/tool.py diff --git a/langchain/tools/ddg_search/__init__.py b/libs/langchain/langchain/tools/ddg_search/__init__.py similarity index 100% rename from langchain/tools/ddg_search/__init__.py rename to libs/langchain/langchain/tools/ddg_search/__init__.py diff --git a/langchain/tools/ddg_search/tool.py b/libs/langchain/langchain/tools/ddg_search/tool.py similarity index 100% rename from langchain/tools/ddg_search/tool.py rename to libs/langchain/langchain/tools/ddg_search/tool.py diff --git a/langchain/tools/file_management/__init__.py b/libs/langchain/langchain/tools/file_management/__init__.py similarity index 100% rename from langchain/tools/file_management/__init__.py rename to libs/langchain/langchain/tools/file_management/__init__.py diff --git a/langchain/tools/file_management/copy.py b/libs/langchain/langchain/tools/file_management/copy.py similarity index 100% rename from langchain/tools/file_management/copy.py rename to libs/langchain/langchain/tools/file_management/copy.py diff --git a/langchain/tools/file_management/delete.py b/libs/langchain/langchain/tools/file_management/delete.py similarity index 100% rename from langchain/tools/file_management/delete.py rename to libs/langchain/langchain/tools/file_management/delete.py diff --git a/langchain/tools/file_management/file_search.py b/libs/langchain/langchain/tools/file_management/file_search.py similarity index 100% rename from langchain/tools/file_management/file_search.py rename to libs/langchain/langchain/tools/file_management/file_search.py diff --git a/langchain/tools/file_management/list_dir.py b/libs/langchain/langchain/tools/file_management/list_dir.py similarity index 100% rename from langchain/tools/file_management/list_dir.py rename to libs/langchain/langchain/tools/file_management/list_dir.py diff --git a/langchain/tools/file_management/move.py b/libs/langchain/langchain/tools/file_management/move.py similarity index 100% rename from langchain/tools/file_management/move.py rename to libs/langchain/langchain/tools/file_management/move.py diff --git a/langchain/tools/file_management/read.py b/libs/langchain/langchain/tools/file_management/read.py similarity index 100% rename from langchain/tools/file_management/read.py rename to libs/langchain/langchain/tools/file_management/read.py diff --git a/langchain/tools/file_management/utils.py b/libs/langchain/langchain/tools/file_management/utils.py similarity index 100% rename from langchain/tools/file_management/utils.py rename to libs/langchain/langchain/tools/file_management/utils.py diff --git a/langchain/tools/file_management/write.py b/libs/langchain/langchain/tools/file_management/write.py similarity index 100% rename from langchain/tools/file_management/write.py rename to libs/langchain/langchain/tools/file_management/write.py diff --git a/langchain/tools/github/__init__.py b/libs/langchain/langchain/tools/github/__init__.py similarity index 100% rename from langchain/tools/github/__init__.py rename to libs/langchain/langchain/tools/github/__init__.py diff --git a/langchain/tools/github/prompt.py b/libs/langchain/langchain/tools/github/prompt.py similarity index 100% rename from langchain/tools/github/prompt.py rename to libs/langchain/langchain/tools/github/prompt.py diff --git a/langchain/tools/github/tool.py b/libs/langchain/langchain/tools/github/tool.py similarity index 100% rename from langchain/tools/github/tool.py rename to libs/langchain/langchain/tools/github/tool.py diff --git a/langchain/tools/gmail/__init__.py b/libs/langchain/langchain/tools/gmail/__init__.py similarity index 100% rename from langchain/tools/gmail/__init__.py rename to libs/langchain/langchain/tools/gmail/__init__.py diff --git a/langchain/tools/gmail/base.py b/libs/langchain/langchain/tools/gmail/base.py similarity index 100% rename from langchain/tools/gmail/base.py rename to libs/langchain/langchain/tools/gmail/base.py diff --git a/langchain/tools/gmail/create_draft.py b/libs/langchain/langchain/tools/gmail/create_draft.py similarity index 100% rename from langchain/tools/gmail/create_draft.py rename to libs/langchain/langchain/tools/gmail/create_draft.py diff --git a/langchain/tools/gmail/get_message.py b/libs/langchain/langchain/tools/gmail/get_message.py similarity index 100% rename from langchain/tools/gmail/get_message.py rename to libs/langchain/langchain/tools/gmail/get_message.py diff --git a/langchain/tools/gmail/get_thread.py b/libs/langchain/langchain/tools/gmail/get_thread.py similarity index 100% rename from langchain/tools/gmail/get_thread.py rename to libs/langchain/langchain/tools/gmail/get_thread.py diff --git a/langchain/tools/gmail/search.py b/libs/langchain/langchain/tools/gmail/search.py similarity index 100% rename from langchain/tools/gmail/search.py rename to libs/langchain/langchain/tools/gmail/search.py diff --git a/langchain/tools/gmail/send_message.py b/libs/langchain/langchain/tools/gmail/send_message.py similarity index 100% rename from langchain/tools/gmail/send_message.py rename to libs/langchain/langchain/tools/gmail/send_message.py diff --git a/langchain/tools/gmail/utils.py b/libs/langchain/langchain/tools/gmail/utils.py similarity index 100% rename from langchain/tools/gmail/utils.py rename to libs/langchain/langchain/tools/gmail/utils.py diff --git a/langchain/tools/golden_query/__init__.py b/libs/langchain/langchain/tools/golden_query/__init__.py similarity index 100% rename from langchain/tools/golden_query/__init__.py rename to libs/langchain/langchain/tools/golden_query/__init__.py diff --git a/langchain/tools/golden_query/tool.py b/libs/langchain/langchain/tools/golden_query/tool.py similarity index 100% rename from langchain/tools/golden_query/tool.py rename to libs/langchain/langchain/tools/golden_query/tool.py diff --git a/langchain/tools/google_places/__init__.py b/libs/langchain/langchain/tools/google_places/__init__.py similarity index 100% rename from langchain/tools/google_places/__init__.py rename to libs/langchain/langchain/tools/google_places/__init__.py diff --git a/langchain/tools/google_places/tool.py b/libs/langchain/langchain/tools/google_places/tool.py similarity index 100% rename from langchain/tools/google_places/tool.py rename to libs/langchain/langchain/tools/google_places/tool.py diff --git a/langchain/tools/google_search/__init__.py b/libs/langchain/langchain/tools/google_search/__init__.py similarity index 100% rename from langchain/tools/google_search/__init__.py rename to libs/langchain/langchain/tools/google_search/__init__.py diff --git a/langchain/tools/google_search/tool.py b/libs/langchain/langchain/tools/google_search/tool.py similarity index 100% rename from langchain/tools/google_search/tool.py rename to libs/langchain/langchain/tools/google_search/tool.py diff --git a/langchain/tools/google_serper/__init__.py b/libs/langchain/langchain/tools/google_serper/__init__.py similarity index 100% rename from langchain/tools/google_serper/__init__.py rename to libs/langchain/langchain/tools/google_serper/__init__.py diff --git a/langchain/tools/google_serper/tool.py b/libs/langchain/langchain/tools/google_serper/tool.py similarity index 100% rename from langchain/tools/google_serper/tool.py rename to libs/langchain/langchain/tools/google_serper/tool.py diff --git a/langchain/tools/graphql/__init__.py b/libs/langchain/langchain/tools/graphql/__init__.py similarity index 100% rename from langchain/tools/graphql/__init__.py rename to libs/langchain/langchain/tools/graphql/__init__.py diff --git a/langchain/tools/graphql/tool.py b/libs/langchain/langchain/tools/graphql/tool.py similarity index 100% rename from langchain/tools/graphql/tool.py rename to libs/langchain/langchain/tools/graphql/tool.py diff --git a/langchain/tools/human/__init__.py b/libs/langchain/langchain/tools/human/__init__.py similarity index 100% rename from langchain/tools/human/__init__.py rename to libs/langchain/langchain/tools/human/__init__.py diff --git a/langchain/tools/human/tool.py b/libs/langchain/langchain/tools/human/tool.py similarity index 100% rename from langchain/tools/human/tool.py rename to libs/langchain/langchain/tools/human/tool.py diff --git a/langchain/tools/ifttt.py b/libs/langchain/langchain/tools/ifttt.py similarity index 100% rename from langchain/tools/ifttt.py rename to libs/langchain/langchain/tools/ifttt.py diff --git a/langchain/tools/interaction/__init__.py b/libs/langchain/langchain/tools/interaction/__init__.py similarity index 100% rename from langchain/tools/interaction/__init__.py rename to libs/langchain/langchain/tools/interaction/__init__.py diff --git a/langchain/tools/interaction/tool.py b/libs/langchain/langchain/tools/interaction/tool.py similarity index 100% rename from langchain/tools/interaction/tool.py rename to libs/langchain/langchain/tools/interaction/tool.py diff --git a/langchain/tools/jira/__init__.py b/libs/langchain/langchain/tools/jira/__init__.py similarity index 100% rename from langchain/tools/jira/__init__.py rename to libs/langchain/langchain/tools/jira/__init__.py diff --git a/langchain/tools/jira/prompt.py b/libs/langchain/langchain/tools/jira/prompt.py similarity index 100% rename from langchain/tools/jira/prompt.py rename to libs/langchain/langchain/tools/jira/prompt.py diff --git a/langchain/tools/jira/tool.py b/libs/langchain/langchain/tools/jira/tool.py similarity index 100% rename from langchain/tools/jira/tool.py rename to libs/langchain/langchain/tools/jira/tool.py diff --git a/langchain/tools/json/__init__.py b/libs/langchain/langchain/tools/json/__init__.py similarity index 100% rename from langchain/tools/json/__init__.py rename to libs/langchain/langchain/tools/json/__init__.py diff --git a/langchain/tools/json/tool.py b/libs/langchain/langchain/tools/json/tool.py similarity index 100% rename from langchain/tools/json/tool.py rename to libs/langchain/langchain/tools/json/tool.py diff --git a/langchain/tools/metaphor_search/__init__.py b/libs/langchain/langchain/tools/metaphor_search/__init__.py similarity index 100% rename from langchain/tools/metaphor_search/__init__.py rename to libs/langchain/langchain/tools/metaphor_search/__init__.py diff --git a/langchain/tools/metaphor_search/tool.py b/libs/langchain/langchain/tools/metaphor_search/tool.py similarity index 100% rename from langchain/tools/metaphor_search/tool.py rename to libs/langchain/langchain/tools/metaphor_search/tool.py diff --git a/langchain/tools/office365/__init__.py b/libs/langchain/langchain/tools/office365/__init__.py similarity index 100% rename from langchain/tools/office365/__init__.py rename to libs/langchain/langchain/tools/office365/__init__.py diff --git a/langchain/tools/office365/base.py b/libs/langchain/langchain/tools/office365/base.py similarity index 100% rename from langchain/tools/office365/base.py rename to libs/langchain/langchain/tools/office365/base.py diff --git a/langchain/tools/office365/create_draft_message.py b/libs/langchain/langchain/tools/office365/create_draft_message.py similarity index 100% rename from langchain/tools/office365/create_draft_message.py rename to libs/langchain/langchain/tools/office365/create_draft_message.py diff --git a/langchain/tools/office365/events_search.py b/libs/langchain/langchain/tools/office365/events_search.py similarity index 100% rename from langchain/tools/office365/events_search.py rename to libs/langchain/langchain/tools/office365/events_search.py diff --git a/langchain/tools/office365/messages_search.py b/libs/langchain/langchain/tools/office365/messages_search.py similarity index 100% rename from langchain/tools/office365/messages_search.py rename to libs/langchain/langchain/tools/office365/messages_search.py diff --git a/langchain/tools/office365/send_event.py b/libs/langchain/langchain/tools/office365/send_event.py similarity index 100% rename from langchain/tools/office365/send_event.py rename to libs/langchain/langchain/tools/office365/send_event.py diff --git a/langchain/tools/office365/send_message.py b/libs/langchain/langchain/tools/office365/send_message.py similarity index 100% rename from langchain/tools/office365/send_message.py rename to libs/langchain/langchain/tools/office365/send_message.py diff --git a/langchain/tools/office365/utils.py b/libs/langchain/langchain/tools/office365/utils.py similarity index 100% rename from langchain/tools/office365/utils.py rename to libs/langchain/langchain/tools/office365/utils.py diff --git a/langchain/tools/openapi/__init__.py b/libs/langchain/langchain/tools/openapi/__init__.py similarity index 100% rename from langchain/tools/openapi/__init__.py rename to libs/langchain/langchain/tools/openapi/__init__.py diff --git a/langchain/tools/openapi/utils/__init__.py b/libs/langchain/langchain/tools/openapi/utils/__init__.py similarity index 100% rename from langchain/tools/openapi/utils/__init__.py rename to libs/langchain/langchain/tools/openapi/utils/__init__.py diff --git a/langchain/tools/openapi/utils/api_models.py b/libs/langchain/langchain/tools/openapi/utils/api_models.py similarity index 100% rename from langchain/tools/openapi/utils/api_models.py rename to libs/langchain/langchain/tools/openapi/utils/api_models.py diff --git a/langchain/tools/openapi/utils/openapi_utils.py b/libs/langchain/langchain/tools/openapi/utils/openapi_utils.py similarity index 100% rename from langchain/tools/openapi/utils/openapi_utils.py rename to libs/langchain/langchain/tools/openapi/utils/openapi_utils.py diff --git a/langchain/tools/openweathermap/__init__.py b/libs/langchain/langchain/tools/openweathermap/__init__.py similarity index 100% rename from langchain/tools/openweathermap/__init__.py rename to libs/langchain/langchain/tools/openweathermap/__init__.py diff --git a/langchain/tools/openweathermap/tool.py b/libs/langchain/langchain/tools/openweathermap/tool.py similarity index 96% rename from langchain/tools/openweathermap/tool.py rename to libs/langchain/langchain/tools/openweathermap/tool.py index eba3524bf8..d7cba573df 100644 --- a/langchain/tools/openweathermap/tool.py +++ b/libs/langchain/langchain/tools/openweathermap/tool.py @@ -1,41 +1,41 @@ -"""Tool for the OpenWeatherMap API.""" - -from typing import Optional - -from pydantic import Field - -from langchain.callbacks.manager import ( - AsyncCallbackManagerForToolRun, - CallbackManagerForToolRun, -) -from langchain.tools.base import BaseTool -from langchain.utilities import OpenWeatherMapAPIWrapper - - -class OpenWeatherMapQueryRun(BaseTool): - """Tool that queries the OpenWeatherMap API.""" - - api_wrapper: OpenWeatherMapAPIWrapper = Field( - default_factory=OpenWeatherMapAPIWrapper - ) - - name = "OpenWeatherMap" - description = ( - "A wrapper around OpenWeatherMap API. " - "Useful for fetching current weather information for a specified location. " - "Input should be a location string (e.g. London,GB)." - ) - - def _run( - self, location: str, run_manager: Optional[CallbackManagerForToolRun] = None - ) -> str: - """Use the OpenWeatherMap tool.""" - return self.api_wrapper.run(location) - - async def _arun( - self, - location: str, - run_manager: Optional[AsyncCallbackManagerForToolRun] = None, - ) -> str: - """Use the OpenWeatherMap tool asynchronously.""" - raise NotImplementedError("OpenWeatherMapQueryRun does not support async") +"""Tool for the OpenWeatherMap API.""" + +from typing import Optional + +from pydantic import Field + +from langchain.callbacks.manager import ( + AsyncCallbackManagerForToolRun, + CallbackManagerForToolRun, +) +from langchain.tools.base import BaseTool +from langchain.utilities import OpenWeatherMapAPIWrapper + + +class OpenWeatherMapQueryRun(BaseTool): + """Tool that queries the OpenWeatherMap API.""" + + api_wrapper: OpenWeatherMapAPIWrapper = Field( + default_factory=OpenWeatherMapAPIWrapper + ) + + name = "OpenWeatherMap" + description = ( + "A wrapper around OpenWeatherMap API. " + "Useful for fetching current weather information for a specified location. " + "Input should be a location string (e.g. London,GB)." + ) + + def _run( + self, location: str, run_manager: Optional[CallbackManagerForToolRun] = None + ) -> str: + """Use the OpenWeatherMap tool.""" + return self.api_wrapper.run(location) + + async def _arun( + self, + location: str, + run_manager: Optional[AsyncCallbackManagerForToolRun] = None, + ) -> str: + """Use the OpenWeatherMap tool asynchronously.""" + raise NotImplementedError("OpenWeatherMapQueryRun does not support async") diff --git a/langchain/tools/playwright/__init__.py b/libs/langchain/langchain/tools/playwright/__init__.py similarity index 100% rename from langchain/tools/playwright/__init__.py rename to libs/langchain/langchain/tools/playwright/__init__.py diff --git a/langchain/tools/playwright/base.py b/libs/langchain/langchain/tools/playwright/base.py similarity index 100% rename from langchain/tools/playwright/base.py rename to libs/langchain/langchain/tools/playwright/base.py diff --git a/langchain/tools/playwright/click.py b/libs/langchain/langchain/tools/playwright/click.py similarity index 100% rename from langchain/tools/playwright/click.py rename to libs/langchain/langchain/tools/playwright/click.py diff --git a/langchain/tools/playwright/current_page.py b/libs/langchain/langchain/tools/playwright/current_page.py similarity index 100% rename from langchain/tools/playwright/current_page.py rename to libs/langchain/langchain/tools/playwright/current_page.py diff --git a/langchain/tools/playwright/extract_hyperlinks.py b/libs/langchain/langchain/tools/playwright/extract_hyperlinks.py similarity index 100% rename from langchain/tools/playwright/extract_hyperlinks.py rename to libs/langchain/langchain/tools/playwright/extract_hyperlinks.py diff --git a/langchain/tools/playwright/extract_text.py b/libs/langchain/langchain/tools/playwright/extract_text.py similarity index 100% rename from langchain/tools/playwright/extract_text.py rename to libs/langchain/langchain/tools/playwright/extract_text.py diff --git a/langchain/tools/playwright/get_elements.py b/libs/langchain/langchain/tools/playwright/get_elements.py similarity index 100% rename from langchain/tools/playwright/get_elements.py rename to libs/langchain/langchain/tools/playwright/get_elements.py diff --git a/langchain/tools/playwright/navigate.py b/libs/langchain/langchain/tools/playwright/navigate.py similarity index 100% rename from langchain/tools/playwright/navigate.py rename to libs/langchain/langchain/tools/playwright/navigate.py diff --git a/langchain/tools/playwright/navigate_back.py b/libs/langchain/langchain/tools/playwright/navigate_back.py similarity index 100% rename from langchain/tools/playwright/navigate_back.py rename to libs/langchain/langchain/tools/playwright/navigate_back.py diff --git a/langchain/tools/playwright/utils.py b/libs/langchain/langchain/tools/playwright/utils.py similarity index 100% rename from langchain/tools/playwright/utils.py rename to libs/langchain/langchain/tools/playwright/utils.py diff --git a/langchain/tools/plugin.py b/libs/langchain/langchain/tools/plugin.py similarity index 100% rename from langchain/tools/plugin.py rename to libs/langchain/langchain/tools/plugin.py diff --git a/langchain/tools/powerbi/__init__.py b/libs/langchain/langchain/tools/powerbi/__init__.py similarity index 100% rename from langchain/tools/powerbi/__init__.py rename to libs/langchain/langchain/tools/powerbi/__init__.py diff --git a/langchain/tools/powerbi/prompt.py b/libs/langchain/langchain/tools/powerbi/prompt.py similarity index 100% rename from langchain/tools/powerbi/prompt.py rename to libs/langchain/langchain/tools/powerbi/prompt.py diff --git a/langchain/tools/powerbi/tool.py b/libs/langchain/langchain/tools/powerbi/tool.py similarity index 100% rename from langchain/tools/powerbi/tool.py rename to libs/langchain/langchain/tools/powerbi/tool.py diff --git a/langchain/tools/pubmed/__init__.py b/libs/langchain/langchain/tools/pubmed/__init__.py similarity index 100% rename from langchain/tools/pubmed/__init__.py rename to libs/langchain/langchain/tools/pubmed/__init__.py diff --git a/langchain/tools/pubmed/tool.py b/libs/langchain/langchain/tools/pubmed/tool.py similarity index 100% rename from langchain/tools/pubmed/tool.py rename to libs/langchain/langchain/tools/pubmed/tool.py diff --git a/langchain/tools/python/__init__.py b/libs/langchain/langchain/tools/python/__init__.py similarity index 100% rename from langchain/tools/python/__init__.py rename to libs/langchain/langchain/tools/python/__init__.py diff --git a/langchain/tools/python/tool.py b/libs/langchain/langchain/tools/python/tool.py similarity index 100% rename from langchain/tools/python/tool.py rename to libs/langchain/langchain/tools/python/tool.py diff --git a/langchain/tools/requests/__init__.py b/libs/langchain/langchain/tools/requests/__init__.py similarity index 100% rename from langchain/tools/requests/__init__.py rename to libs/langchain/langchain/tools/requests/__init__.py diff --git a/langchain/tools/requests/tool.py b/libs/langchain/langchain/tools/requests/tool.py similarity index 100% rename from langchain/tools/requests/tool.py rename to libs/langchain/langchain/tools/requests/tool.py diff --git a/langchain/tools/scenexplain/__init__.py b/libs/langchain/langchain/tools/scenexplain/__init__.py similarity index 100% rename from langchain/tools/scenexplain/__init__.py rename to libs/langchain/langchain/tools/scenexplain/__init__.py diff --git a/langchain/tools/scenexplain/tool.py b/libs/langchain/langchain/tools/scenexplain/tool.py similarity index 100% rename from langchain/tools/scenexplain/tool.py rename to libs/langchain/langchain/tools/scenexplain/tool.py diff --git a/langchain/tools/searx_search/__init__.py b/libs/langchain/langchain/tools/searx_search/__init__.py similarity index 100% rename from langchain/tools/searx_search/__init__.py rename to libs/langchain/langchain/tools/searx_search/__init__.py diff --git a/langchain/tools/searx_search/tool.py b/libs/langchain/langchain/tools/searx_search/tool.py similarity index 100% rename from langchain/tools/searx_search/tool.py rename to libs/langchain/langchain/tools/searx_search/tool.py diff --git a/langchain/tools/shell/__init__.py b/libs/langchain/langchain/tools/shell/__init__.py similarity index 100% rename from langchain/tools/shell/__init__.py rename to libs/langchain/langchain/tools/shell/__init__.py diff --git a/langchain/tools/shell/tool.py b/libs/langchain/langchain/tools/shell/tool.py similarity index 100% rename from langchain/tools/shell/tool.py rename to libs/langchain/langchain/tools/shell/tool.py diff --git a/langchain/tools/sleep/__init__.py b/libs/langchain/langchain/tools/sleep/__init__.py similarity index 100% rename from langchain/tools/sleep/__init__.py rename to libs/langchain/langchain/tools/sleep/__init__.py diff --git a/langchain/tools/sleep/tool.py b/libs/langchain/langchain/tools/sleep/tool.py similarity index 100% rename from langchain/tools/sleep/tool.py rename to libs/langchain/langchain/tools/sleep/tool.py diff --git a/langchain/tools/spark_sql/__init__.py b/libs/langchain/langchain/tools/spark_sql/__init__.py similarity index 100% rename from langchain/tools/spark_sql/__init__.py rename to libs/langchain/langchain/tools/spark_sql/__init__.py diff --git a/langchain/tools/spark_sql/prompt.py b/libs/langchain/langchain/tools/spark_sql/prompt.py similarity index 100% rename from langchain/tools/spark_sql/prompt.py rename to libs/langchain/langchain/tools/spark_sql/prompt.py diff --git a/langchain/tools/spark_sql/tool.py b/libs/langchain/langchain/tools/spark_sql/tool.py similarity index 100% rename from langchain/tools/spark_sql/tool.py rename to libs/langchain/langchain/tools/spark_sql/tool.py diff --git a/langchain/tools/sql_database/__init__.py b/libs/langchain/langchain/tools/sql_database/__init__.py similarity index 100% rename from langchain/tools/sql_database/__init__.py rename to libs/langchain/langchain/tools/sql_database/__init__.py diff --git a/langchain/tools/sql_database/prompt.py b/libs/langchain/langchain/tools/sql_database/prompt.py similarity index 100% rename from langchain/tools/sql_database/prompt.py rename to libs/langchain/langchain/tools/sql_database/prompt.py diff --git a/langchain/tools/sql_database/tool.py b/libs/langchain/langchain/tools/sql_database/tool.py similarity index 100% rename from langchain/tools/sql_database/tool.py rename to libs/langchain/langchain/tools/sql_database/tool.py diff --git a/langchain/tools/steamship_image_generation/__init__.py b/libs/langchain/langchain/tools/steamship_image_generation/__init__.py similarity index 100% rename from langchain/tools/steamship_image_generation/__init__.py rename to libs/langchain/langchain/tools/steamship_image_generation/__init__.py diff --git a/langchain/tools/steamship_image_generation/tool.py b/libs/langchain/langchain/tools/steamship_image_generation/tool.py similarity index 100% rename from langchain/tools/steamship_image_generation/tool.py rename to libs/langchain/langchain/tools/steamship_image_generation/tool.py diff --git a/langchain/tools/steamship_image_generation/utils.py b/libs/langchain/langchain/tools/steamship_image_generation/utils.py similarity index 100% rename from langchain/tools/steamship_image_generation/utils.py rename to libs/langchain/langchain/tools/steamship_image_generation/utils.py diff --git a/langchain/tools/vectorstore/__init__.py b/libs/langchain/langchain/tools/vectorstore/__init__.py similarity index 100% rename from langchain/tools/vectorstore/__init__.py rename to libs/langchain/langchain/tools/vectorstore/__init__.py diff --git a/langchain/tools/vectorstore/tool.py b/libs/langchain/langchain/tools/vectorstore/tool.py similarity index 100% rename from langchain/tools/vectorstore/tool.py rename to libs/langchain/langchain/tools/vectorstore/tool.py diff --git a/langchain/tools/wikipedia/__init__.py b/libs/langchain/langchain/tools/wikipedia/__init__.py similarity index 100% rename from langchain/tools/wikipedia/__init__.py rename to libs/langchain/langchain/tools/wikipedia/__init__.py diff --git a/langchain/tools/wikipedia/tool.py b/libs/langchain/langchain/tools/wikipedia/tool.py similarity index 100% rename from langchain/tools/wikipedia/tool.py rename to libs/langchain/langchain/tools/wikipedia/tool.py diff --git a/langchain/tools/wolfram_alpha/__init__.py b/libs/langchain/langchain/tools/wolfram_alpha/__init__.py similarity index 100% rename from langchain/tools/wolfram_alpha/__init__.py rename to libs/langchain/langchain/tools/wolfram_alpha/__init__.py diff --git a/langchain/tools/wolfram_alpha/tool.py b/libs/langchain/langchain/tools/wolfram_alpha/tool.py similarity index 100% rename from langchain/tools/wolfram_alpha/tool.py rename to libs/langchain/langchain/tools/wolfram_alpha/tool.py diff --git a/langchain/tools/youtube/__init__.py b/libs/langchain/langchain/tools/youtube/__init__.py similarity index 100% rename from langchain/tools/youtube/__init__.py rename to libs/langchain/langchain/tools/youtube/__init__.py diff --git a/langchain/tools/youtube/search.py b/libs/langchain/langchain/tools/youtube/search.py similarity index 100% rename from langchain/tools/youtube/search.py rename to libs/langchain/langchain/tools/youtube/search.py diff --git a/langchain/tools/zapier/__init__.py b/libs/langchain/langchain/tools/zapier/__init__.py similarity index 100% rename from langchain/tools/zapier/__init__.py rename to libs/langchain/langchain/tools/zapier/__init__.py diff --git a/langchain/tools/zapier/prompt.py b/libs/langchain/langchain/tools/zapier/prompt.py similarity index 100% rename from langchain/tools/zapier/prompt.py rename to libs/langchain/langchain/tools/zapier/prompt.py diff --git a/langchain/tools/zapier/tool.py b/libs/langchain/langchain/tools/zapier/tool.py similarity index 100% rename from langchain/tools/zapier/tool.py rename to libs/langchain/langchain/tools/zapier/tool.py diff --git a/langchain/utilities/__init__.py b/libs/langchain/langchain/utilities/__init__.py similarity index 100% rename from langchain/utilities/__init__.py rename to libs/langchain/langchain/utilities/__init__.py diff --git a/langchain/utilities/apify.py b/libs/langchain/langchain/utilities/apify.py similarity index 100% rename from langchain/utilities/apify.py rename to libs/langchain/langchain/utilities/apify.py diff --git a/langchain/utilities/arxiv.py b/libs/langchain/langchain/utilities/arxiv.py similarity index 100% rename from langchain/utilities/arxiv.py rename to libs/langchain/langchain/utilities/arxiv.py diff --git a/langchain/utilities/asyncio.py b/libs/langchain/langchain/utilities/asyncio.py similarity index 100% rename from langchain/utilities/asyncio.py rename to libs/langchain/langchain/utilities/asyncio.py diff --git a/langchain/utilities/awslambda.py b/libs/langchain/langchain/utilities/awslambda.py similarity index 100% rename from langchain/utilities/awslambda.py rename to libs/langchain/langchain/utilities/awslambda.py diff --git a/langchain/utilities/bash.py b/libs/langchain/langchain/utilities/bash.py similarity index 100% rename from langchain/utilities/bash.py rename to libs/langchain/langchain/utilities/bash.py diff --git a/langchain/utilities/bibtex.py b/libs/langchain/langchain/utilities/bibtex.py similarity index 100% rename from langchain/utilities/bibtex.py rename to libs/langchain/langchain/utilities/bibtex.py diff --git a/langchain/utilities/bing_search.py b/libs/langchain/langchain/utilities/bing_search.py similarity index 100% rename from langchain/utilities/bing_search.py rename to libs/langchain/langchain/utilities/bing_search.py diff --git a/langchain/utilities/brave_search.py b/libs/langchain/langchain/utilities/brave_search.py similarity index 100% rename from langchain/utilities/brave_search.py rename to libs/langchain/langchain/utilities/brave_search.py diff --git a/langchain/utilities/dataforseo_api_search.py b/libs/langchain/langchain/utilities/dataforseo_api_search.py similarity index 100% rename from langchain/utilities/dataforseo_api_search.py rename to libs/langchain/langchain/utilities/dataforseo_api_search.py diff --git a/langchain/utilities/duckduckgo_search.py b/libs/langchain/langchain/utilities/duckduckgo_search.py similarity index 100% rename from langchain/utilities/duckduckgo_search.py rename to libs/langchain/langchain/utilities/duckduckgo_search.py diff --git a/langchain/utilities/github.py b/libs/langchain/langchain/utilities/github.py similarity index 100% rename from langchain/utilities/github.py rename to libs/langchain/langchain/utilities/github.py diff --git a/langchain/utilities/golden_query.py b/libs/langchain/langchain/utilities/golden_query.py similarity index 100% rename from langchain/utilities/golden_query.py rename to libs/langchain/langchain/utilities/golden_query.py diff --git a/langchain/utilities/google_places_api.py b/libs/langchain/langchain/utilities/google_places_api.py similarity index 100% rename from langchain/utilities/google_places_api.py rename to libs/langchain/langchain/utilities/google_places_api.py diff --git a/langchain/utilities/google_search.py b/libs/langchain/langchain/utilities/google_search.py similarity index 100% rename from langchain/utilities/google_search.py rename to libs/langchain/langchain/utilities/google_search.py diff --git a/langchain/utilities/google_serper.py b/libs/langchain/langchain/utilities/google_serper.py similarity index 100% rename from langchain/utilities/google_serper.py rename to libs/langchain/langchain/utilities/google_serper.py diff --git a/langchain/utilities/graphql.py b/libs/langchain/langchain/utilities/graphql.py similarity index 100% rename from langchain/utilities/graphql.py rename to libs/langchain/langchain/utilities/graphql.py diff --git a/langchain/utilities/jira.py b/libs/langchain/langchain/utilities/jira.py similarity index 100% rename from langchain/utilities/jira.py rename to libs/langchain/langchain/utilities/jira.py diff --git a/langchain/utilities/loading.py b/libs/langchain/langchain/utilities/loading.py similarity index 100% rename from langchain/utilities/loading.py rename to libs/langchain/langchain/utilities/loading.py diff --git a/langchain/utilities/max_compute.py b/libs/langchain/langchain/utilities/max_compute.py similarity index 100% rename from langchain/utilities/max_compute.py rename to libs/langchain/langchain/utilities/max_compute.py diff --git a/langchain/utilities/metaphor_search.py b/libs/langchain/langchain/utilities/metaphor_search.py similarity index 100% rename from langchain/utilities/metaphor_search.py rename to libs/langchain/langchain/utilities/metaphor_search.py diff --git a/langchain/utilities/openapi.py b/libs/langchain/langchain/utilities/openapi.py similarity index 100% rename from langchain/utilities/openapi.py rename to libs/langchain/langchain/utilities/openapi.py diff --git a/langchain/utilities/openweathermap.py b/libs/langchain/langchain/utilities/openweathermap.py similarity index 96% rename from langchain/utilities/openweathermap.py rename to libs/langchain/langchain/utilities/openweathermap.py index 2b10fb38c2..5fd40b92fc 100644 --- a/langchain/utilities/openweathermap.py +++ b/libs/langchain/langchain/utilities/openweathermap.py @@ -1,78 +1,78 @@ -"""Util that calls OpenWeatherMap using PyOWM.""" -from typing import Any, Dict, Optional - -from pydantic import Extra, root_validator - -from langchain.tools.base import BaseModel -from langchain.utils import get_from_dict_or_env - - -class OpenWeatherMapAPIWrapper(BaseModel): - """Wrapper for OpenWeatherMap API using PyOWM. - - Docs for using: - - 1. Go to OpenWeatherMap and sign up for an API key - 2. Save your API KEY into OPENWEATHERMAP_API_KEY env variable - 3. pip install pyowm - """ - - owm: Any - openweathermap_api_key: Optional[str] = None - - class Config: - """Configuration for this pydantic object.""" - - extra = Extra.forbid - - @root_validator(pre=True) - def validate_environment(cls, values: Dict) -> Dict: - """Validate that api key exists in environment.""" - openweathermap_api_key = get_from_dict_or_env( - values, "openweathermap_api_key", "OPENWEATHERMAP_API_KEY" - ) - - try: - import pyowm - - except ImportError: - raise ImportError( - "pyowm is not installed. Please install it with `pip install pyowm`" - ) - - owm = pyowm.OWM(openweathermap_api_key) - values["owm"] = owm - - return values - - def _format_weather_info(self, location: str, w: Any) -> str: - detailed_status = w.detailed_status - wind = w.wind() - humidity = w.humidity - temperature = w.temperature("celsius") - rain = w.rain - heat_index = w.heat_index - clouds = w.clouds - - return ( - f"In {location}, the current weather is as follows:\n" - f"Detailed status: {detailed_status}\n" - f"Wind speed: {wind['speed']} m/s, direction: {wind['deg']}°\n" - f"Humidity: {humidity}%\n" - f"Temperature: \n" - f" - Current: {temperature['temp']}°C\n" - f" - High: {temperature['temp_max']}°C\n" - f" - Low: {temperature['temp_min']}°C\n" - f" - Feels like: {temperature['feels_like']}°C\n" - f"Rain: {rain}\n" - f"Heat index: {heat_index}\n" - f"Cloud cover: {clouds}%" - ) - - def run(self, location: str) -> str: - """Get the current weather information for a specified location.""" - mgr = self.owm.weather_manager() - observation = mgr.weather_at_place(location) - w = observation.weather - - return self._format_weather_info(location, w) +"""Util that calls OpenWeatherMap using PyOWM.""" +from typing import Any, Dict, Optional + +from pydantic import Extra, root_validator + +from langchain.tools.base import BaseModel +from langchain.utils import get_from_dict_or_env + + +class OpenWeatherMapAPIWrapper(BaseModel): + """Wrapper for OpenWeatherMap API using PyOWM. + + Docs for using: + + 1. Go to OpenWeatherMap and sign up for an API key + 2. Save your API KEY into OPENWEATHERMAP_API_KEY env variable + 3. pip install pyowm + """ + + owm: Any + openweathermap_api_key: Optional[str] = None + + class Config: + """Configuration for this pydantic object.""" + + extra = Extra.forbid + + @root_validator(pre=True) + def validate_environment(cls, values: Dict) -> Dict: + """Validate that api key exists in environment.""" + openweathermap_api_key = get_from_dict_or_env( + values, "openweathermap_api_key", "OPENWEATHERMAP_API_KEY" + ) + + try: + import pyowm + + except ImportError: + raise ImportError( + "pyowm is not installed. Please install it with `pip install pyowm`" + ) + + owm = pyowm.OWM(openweathermap_api_key) + values["owm"] = owm + + return values + + def _format_weather_info(self, location: str, w: Any) -> str: + detailed_status = w.detailed_status + wind = w.wind() + humidity = w.humidity + temperature = w.temperature("celsius") + rain = w.rain + heat_index = w.heat_index + clouds = w.clouds + + return ( + f"In {location}, the current weather is as follows:\n" + f"Detailed status: {detailed_status}\n" + f"Wind speed: {wind['speed']} m/s, direction: {wind['deg']}°\n" + f"Humidity: {humidity}%\n" + f"Temperature: \n" + f" - Current: {temperature['temp']}°C\n" + f" - High: {temperature['temp_max']}°C\n" + f" - Low: {temperature['temp_min']}°C\n" + f" - Feels like: {temperature['feels_like']}°C\n" + f"Rain: {rain}\n" + f"Heat index: {heat_index}\n" + f"Cloud cover: {clouds}%" + ) + + def run(self, location: str) -> str: + """Get the current weather information for a specified location.""" + mgr = self.owm.weather_manager() + observation = mgr.weather_at_place(location) + w = observation.weather + + return self._format_weather_info(location, w) diff --git a/langchain/utilities/portkey.py b/libs/langchain/langchain/utilities/portkey.py similarity index 100% rename from langchain/utilities/portkey.py rename to libs/langchain/langchain/utilities/portkey.py diff --git a/langchain/utilities/powerbi.py b/libs/langchain/langchain/utilities/powerbi.py similarity index 100% rename from langchain/utilities/powerbi.py rename to libs/langchain/langchain/utilities/powerbi.py diff --git a/langchain/utilities/pupmed.py b/libs/langchain/langchain/utilities/pupmed.py similarity index 100% rename from langchain/utilities/pupmed.py rename to libs/langchain/langchain/utilities/pupmed.py diff --git a/langchain/utilities/python.py b/libs/langchain/langchain/utilities/python.py similarity index 100% rename from langchain/utilities/python.py rename to libs/langchain/langchain/utilities/python.py diff --git a/langchain/utilities/redis.py b/libs/langchain/langchain/utilities/redis.py similarity index 100% rename from langchain/utilities/redis.py rename to libs/langchain/langchain/utilities/redis.py diff --git a/langchain/utilities/scenexplain.py b/libs/langchain/langchain/utilities/scenexplain.py similarity index 100% rename from langchain/utilities/scenexplain.py rename to libs/langchain/langchain/utilities/scenexplain.py diff --git a/langchain/utilities/searx_search.py b/libs/langchain/langchain/utilities/searx_search.py similarity index 100% rename from langchain/utilities/searx_search.py rename to libs/langchain/langchain/utilities/searx_search.py diff --git a/langchain/utilities/serpapi.py b/libs/langchain/langchain/utilities/serpapi.py similarity index 100% rename from langchain/utilities/serpapi.py rename to libs/langchain/langchain/utilities/serpapi.py diff --git a/langchain/utilities/spark_sql.py b/libs/langchain/langchain/utilities/spark_sql.py similarity index 100% rename from langchain/utilities/spark_sql.py rename to libs/langchain/langchain/utilities/spark_sql.py diff --git a/langchain/utilities/sql_database.py b/libs/langchain/langchain/utilities/sql_database.py similarity index 100% rename from langchain/utilities/sql_database.py rename to libs/langchain/langchain/utilities/sql_database.py diff --git a/langchain/utilities/twilio.py b/libs/langchain/langchain/utilities/twilio.py similarity index 100% rename from langchain/utilities/twilio.py rename to libs/langchain/langchain/utilities/twilio.py diff --git a/langchain/utilities/vertexai.py b/libs/langchain/langchain/utilities/vertexai.py similarity index 100% rename from langchain/utilities/vertexai.py rename to libs/langchain/langchain/utilities/vertexai.py diff --git a/langchain/utilities/wikipedia.py b/libs/langchain/langchain/utilities/wikipedia.py similarity index 100% rename from langchain/utilities/wikipedia.py rename to libs/langchain/langchain/utilities/wikipedia.py diff --git a/langchain/utilities/wolfram_alpha.py b/libs/langchain/langchain/utilities/wolfram_alpha.py similarity index 100% rename from langchain/utilities/wolfram_alpha.py rename to libs/langchain/langchain/utilities/wolfram_alpha.py diff --git a/langchain/utilities/zapier.py b/libs/langchain/langchain/utilities/zapier.py similarity index 100% rename from langchain/utilities/zapier.py rename to libs/langchain/langchain/utilities/zapier.py diff --git a/langchain/utils/__init__.py b/libs/langchain/langchain/utils/__init__.py similarity index 100% rename from langchain/utils/__init__.py rename to libs/langchain/langchain/utils/__init__.py diff --git a/langchain/utils/env.py b/libs/langchain/langchain/utils/env.py similarity index 100% rename from langchain/utils/env.py rename to libs/langchain/langchain/utils/env.py diff --git a/langchain/utils/math.py b/libs/langchain/langchain/utils/math.py similarity index 100% rename from langchain/utils/math.py rename to libs/langchain/langchain/utils/math.py diff --git a/langchain/utils/strings.py b/libs/langchain/langchain/utils/strings.py similarity index 100% rename from langchain/utils/strings.py rename to libs/langchain/langchain/utils/strings.py diff --git a/langchain/utils/utils.py b/libs/langchain/langchain/utils/utils.py similarity index 100% rename from langchain/utils/utils.py rename to libs/langchain/langchain/utils/utils.py diff --git a/langchain/vectorstores/__init__.py b/libs/langchain/langchain/vectorstores/__init__.py similarity index 100% rename from langchain/vectorstores/__init__.py rename to libs/langchain/langchain/vectorstores/__init__.py diff --git a/langchain/vectorstores/_pgvector_data_models.py b/libs/langchain/langchain/vectorstores/_pgvector_data_models.py similarity index 100% rename from langchain/vectorstores/_pgvector_data_models.py rename to libs/langchain/langchain/vectorstores/_pgvector_data_models.py diff --git a/langchain/vectorstores/alibabacloud_opensearch.py b/libs/langchain/langchain/vectorstores/alibabacloud_opensearch.py similarity index 100% rename from langchain/vectorstores/alibabacloud_opensearch.py rename to libs/langchain/langchain/vectorstores/alibabacloud_opensearch.py diff --git a/langchain/vectorstores/analyticdb.py b/libs/langchain/langchain/vectorstores/analyticdb.py similarity index 100% rename from langchain/vectorstores/analyticdb.py rename to libs/langchain/langchain/vectorstores/analyticdb.py diff --git a/langchain/vectorstores/annoy.py b/libs/langchain/langchain/vectorstores/annoy.py similarity index 100% rename from langchain/vectorstores/annoy.py rename to libs/langchain/langchain/vectorstores/annoy.py diff --git a/langchain/vectorstores/atlas.py b/libs/langchain/langchain/vectorstores/atlas.py similarity index 100% rename from langchain/vectorstores/atlas.py rename to libs/langchain/langchain/vectorstores/atlas.py diff --git a/langchain/vectorstores/awadb.py b/libs/langchain/langchain/vectorstores/awadb.py similarity index 100% rename from langchain/vectorstores/awadb.py rename to libs/langchain/langchain/vectorstores/awadb.py diff --git a/langchain/vectorstores/azuresearch.py b/libs/langchain/langchain/vectorstores/azuresearch.py similarity index 100% rename from langchain/vectorstores/azuresearch.py rename to libs/langchain/langchain/vectorstores/azuresearch.py diff --git a/langchain/vectorstores/base.py b/libs/langchain/langchain/vectorstores/base.py similarity index 100% rename from langchain/vectorstores/base.py rename to libs/langchain/langchain/vectorstores/base.py diff --git a/langchain/vectorstores/cassandra.py b/libs/langchain/langchain/vectorstores/cassandra.py similarity index 100% rename from langchain/vectorstores/cassandra.py rename to libs/langchain/langchain/vectorstores/cassandra.py diff --git a/langchain/vectorstores/chroma.py b/libs/langchain/langchain/vectorstores/chroma.py similarity index 100% rename from langchain/vectorstores/chroma.py rename to libs/langchain/langchain/vectorstores/chroma.py diff --git a/langchain/vectorstores/clarifai.py b/libs/langchain/langchain/vectorstores/clarifai.py similarity index 100% rename from langchain/vectorstores/clarifai.py rename to libs/langchain/langchain/vectorstores/clarifai.py diff --git a/langchain/vectorstores/clickhouse.py b/libs/langchain/langchain/vectorstores/clickhouse.py similarity index 100% rename from langchain/vectorstores/clickhouse.py rename to libs/langchain/langchain/vectorstores/clickhouse.py diff --git a/langchain/vectorstores/deeplake.py b/libs/langchain/langchain/vectorstores/deeplake.py similarity index 100% rename from langchain/vectorstores/deeplake.py rename to libs/langchain/langchain/vectorstores/deeplake.py diff --git a/langchain/vectorstores/docarray/__init__.py b/libs/langchain/langchain/vectorstores/docarray/__init__.py similarity index 100% rename from langchain/vectorstores/docarray/__init__.py rename to libs/langchain/langchain/vectorstores/docarray/__init__.py diff --git a/langchain/vectorstores/docarray/base.py b/libs/langchain/langchain/vectorstores/docarray/base.py similarity index 100% rename from langchain/vectorstores/docarray/base.py rename to libs/langchain/langchain/vectorstores/docarray/base.py diff --git a/langchain/vectorstores/docarray/hnsw.py b/libs/langchain/langchain/vectorstores/docarray/hnsw.py similarity index 100% rename from langchain/vectorstores/docarray/hnsw.py rename to libs/langchain/langchain/vectorstores/docarray/hnsw.py diff --git a/langchain/vectorstores/docarray/in_memory.py b/libs/langchain/langchain/vectorstores/docarray/in_memory.py similarity index 100% rename from langchain/vectorstores/docarray/in_memory.py rename to libs/langchain/langchain/vectorstores/docarray/in_memory.py diff --git a/langchain/vectorstores/elastic_vector_search.py b/libs/langchain/langchain/vectorstores/elastic_vector_search.py similarity index 100% rename from langchain/vectorstores/elastic_vector_search.py rename to libs/langchain/langchain/vectorstores/elastic_vector_search.py diff --git a/langchain/vectorstores/faiss.py b/libs/langchain/langchain/vectorstores/faiss.py similarity index 100% rename from langchain/vectorstores/faiss.py rename to libs/langchain/langchain/vectorstores/faiss.py diff --git a/langchain/vectorstores/hologres.py b/libs/langchain/langchain/vectorstores/hologres.py similarity index 100% rename from langchain/vectorstores/hologres.py rename to libs/langchain/langchain/vectorstores/hologres.py diff --git a/langchain/vectorstores/lancedb.py b/libs/langchain/langchain/vectorstores/lancedb.py similarity index 100% rename from langchain/vectorstores/lancedb.py rename to libs/langchain/langchain/vectorstores/lancedb.py diff --git a/langchain/vectorstores/marqo.py b/libs/langchain/langchain/vectorstores/marqo.py similarity index 100% rename from langchain/vectorstores/marqo.py rename to libs/langchain/langchain/vectorstores/marqo.py diff --git a/langchain/vectorstores/matching_engine.py b/libs/langchain/langchain/vectorstores/matching_engine.py similarity index 100% rename from langchain/vectorstores/matching_engine.py rename to libs/langchain/langchain/vectorstores/matching_engine.py diff --git a/langchain/vectorstores/milvus.py b/libs/langchain/langchain/vectorstores/milvus.py similarity index 100% rename from langchain/vectorstores/milvus.py rename to libs/langchain/langchain/vectorstores/milvus.py diff --git a/langchain/vectorstores/mongodb_atlas.py b/libs/langchain/langchain/vectorstores/mongodb_atlas.py similarity index 100% rename from langchain/vectorstores/mongodb_atlas.py rename to libs/langchain/langchain/vectorstores/mongodb_atlas.py diff --git a/langchain/vectorstores/myscale.py b/libs/langchain/langchain/vectorstores/myscale.py similarity index 100% rename from langchain/vectorstores/myscale.py rename to libs/langchain/langchain/vectorstores/myscale.py diff --git a/langchain/vectorstores/opensearch_vector_search.py b/libs/langchain/langchain/vectorstores/opensearch_vector_search.py similarity index 100% rename from langchain/vectorstores/opensearch_vector_search.py rename to libs/langchain/langchain/vectorstores/opensearch_vector_search.py diff --git a/langchain/vectorstores/pgembedding.py b/libs/langchain/langchain/vectorstores/pgembedding.py similarity index 100% rename from langchain/vectorstores/pgembedding.py rename to libs/langchain/langchain/vectorstores/pgembedding.py diff --git a/langchain/vectorstores/pgvector.py b/libs/langchain/langchain/vectorstores/pgvector.py similarity index 100% rename from langchain/vectorstores/pgvector.py rename to libs/langchain/langchain/vectorstores/pgvector.py diff --git a/langchain/vectorstores/pinecone.py b/libs/langchain/langchain/vectorstores/pinecone.py similarity index 100% rename from langchain/vectorstores/pinecone.py rename to libs/langchain/langchain/vectorstores/pinecone.py diff --git a/langchain/vectorstores/qdrant.py b/libs/langchain/langchain/vectorstores/qdrant.py similarity index 100% rename from langchain/vectorstores/qdrant.py rename to libs/langchain/langchain/vectorstores/qdrant.py diff --git a/langchain/vectorstores/redis.py b/libs/langchain/langchain/vectorstores/redis.py similarity index 100% rename from langchain/vectorstores/redis.py rename to libs/langchain/langchain/vectorstores/redis.py diff --git a/langchain/vectorstores/rocksetdb.py b/libs/langchain/langchain/vectorstores/rocksetdb.py similarity index 100% rename from langchain/vectorstores/rocksetdb.py rename to libs/langchain/langchain/vectorstores/rocksetdb.py diff --git a/langchain/vectorstores/singlestoredb.py b/libs/langchain/langchain/vectorstores/singlestoredb.py similarity index 100% rename from langchain/vectorstores/singlestoredb.py rename to libs/langchain/langchain/vectorstores/singlestoredb.py diff --git a/langchain/vectorstores/sklearn.py b/libs/langchain/langchain/vectorstores/sklearn.py similarity index 100% rename from langchain/vectorstores/sklearn.py rename to libs/langchain/langchain/vectorstores/sklearn.py diff --git a/langchain/vectorstores/starrocks.py b/libs/langchain/langchain/vectorstores/starrocks.py similarity index 100% rename from langchain/vectorstores/starrocks.py rename to libs/langchain/langchain/vectorstores/starrocks.py diff --git a/langchain/vectorstores/supabase.py b/libs/langchain/langchain/vectorstores/supabase.py similarity index 100% rename from langchain/vectorstores/supabase.py rename to libs/langchain/langchain/vectorstores/supabase.py diff --git a/langchain/vectorstores/tair.py b/libs/langchain/langchain/vectorstores/tair.py similarity index 100% rename from langchain/vectorstores/tair.py rename to libs/langchain/langchain/vectorstores/tair.py diff --git a/langchain/vectorstores/tigris.py b/libs/langchain/langchain/vectorstores/tigris.py similarity index 100% rename from langchain/vectorstores/tigris.py rename to libs/langchain/langchain/vectorstores/tigris.py diff --git a/langchain/vectorstores/typesense.py b/libs/langchain/langchain/vectorstores/typesense.py similarity index 100% rename from langchain/vectorstores/typesense.py rename to libs/langchain/langchain/vectorstores/typesense.py diff --git a/langchain/vectorstores/utils.py b/libs/langchain/langchain/vectorstores/utils.py similarity index 100% rename from langchain/vectorstores/utils.py rename to libs/langchain/langchain/vectorstores/utils.py diff --git a/langchain/vectorstores/vectara.py b/libs/langchain/langchain/vectorstores/vectara.py similarity index 100% rename from langchain/vectorstores/vectara.py rename to libs/langchain/langchain/vectorstores/vectara.py diff --git a/langchain/vectorstores/weaviate.py b/libs/langchain/langchain/vectorstores/weaviate.py similarity index 100% rename from langchain/vectorstores/weaviate.py rename to libs/langchain/langchain/vectorstores/weaviate.py diff --git a/langchain/vectorstores/zilliz.py b/libs/langchain/langchain/vectorstores/zilliz.py similarity index 100% rename from langchain/vectorstores/zilliz.py rename to libs/langchain/langchain/vectorstores/zilliz.py diff --git a/poetry.lock b/libs/langchain/poetry.lock similarity index 100% rename from poetry.lock rename to libs/langchain/poetry.lock diff --git a/poetry.toml b/libs/langchain/poetry.toml similarity index 100% rename from poetry.toml rename to libs/langchain/poetry.toml diff --git a/libs/langchain/pyproject.toml b/libs/langchain/pyproject.toml new file mode 100644 index 0000000000..f988eb7714 --- /dev/null +++ b/libs/langchain/pyproject.toml @@ -0,0 +1,426 @@ +[tool.poetry] +name = "langchain" +version = "0.0.239" +description = "Building applications with LLMs through composability" +authors = [] +license = "MIT" +readme = "README.md" +repository = "https://www.github.com/hwchase17/langchain" + +[tool.poetry.scripts] +langchain-server = "langchain.server:main" + +[tool.poetry.dependencies] +python = ">=3.8.1,<4.0" +pydantic = "^1" +SQLAlchemy = ">=1.4,<3" +requests = "^2" +PyYAML = ">=5.4.1" +numpy = "^1" +azure-core = {version = "^1.26.4", optional=true} +tqdm = {version = ">=4.48.0", optional = true} +openapi-schema-pydantic = "^1.2" +faiss-cpu = {version = "^1", optional = true} +wikipedia = {version = "^1", optional = true} +elasticsearch = {version = "^8", optional = true} +opensearch-py = {version = "^2.0.0", optional = true} +redis = {version = "^4", optional = true} +manifest-ml = {version = "^0.0.1", optional = true} +spacy = {version = "^3", optional = true} +nltk = {version = "^3", optional = true} +transformers = {version = "^4", optional = true} +beautifulsoup4 = {version = "^4", optional = true} +torch = {version = ">=1,<3", optional = true} +jinja2 = {version = "^3", optional = true} +tiktoken = {version = "^0.3.2", optional = true, python="^3.9"} +pinecone-client = {version = "^2", optional = true} +pinecone-text = {version = "^0.4.2", optional = true} +pymongo = {version = "^4.3.3", optional = true} +clickhouse-connect = {version="^0.5.14", optional=true} +weaviate-client = {version = "^3", optional = true} +marqo = {version = "^0.11.0", optional=true} +google-api-python-client = {version = "2.70.0", optional = true} +google-auth = {version = "^2.18.1", optional = true} +wolframalpha = {version = "5.0.0", optional = true} +anthropic = {version = "^0.3", optional = true} +qdrant-client = {version = "^1.3.1", optional = true, python = ">=3.8.1,<3.12"} +dataclasses-json = "^0.5.7" +tensorflow-text = {version = "^2.11.0", optional = true, python = "^3.10, <3.12"} +tenacity = "^8.1.0" +cohere = {version = "^3", optional = true} +openai = {version = "^0", optional = true} +nlpcloud = {version = "^1", optional = true} +nomic = {version = "^1.0.43", optional = true} +huggingface_hub = {version = "^0", optional = true} +octoai-sdk = {version = "^0.1.1", optional = true} +jina = {version = "^3.14", optional = true} +google-search-results = {version = "^2", optional = true} +sentence-transformers = {version = "^2", optional = true} +aiohttp = "^3.8.3" +arxiv = {version = "^1.4", optional = true} +pypdf = {version = "^3.4.0", optional = true} +networkx = {version="^2.6.3", optional = true} +aleph-alpha-client = {version="^2.15.0", optional = true} +deeplake = {version = "^3.6.8", optional = true} +libdeeplake = {version = "^0.0.60", optional = true} +pgvector = {version = "^0.1.6", optional = true} +psycopg2-binary = {version = "^2.9.5", optional = true} +pyowm = {version = "^3.3.0", optional = true} +async-timeout = {version = "^4.0.0", python = "<3.11"} +azure-identity = {version = "^1.12.0", optional=true} +gptcache = {version = ">=0.1.7", optional = true} +atlassian-python-api = {version = "^3.36.0", optional=true} +pytesseract = {version = "^0.3.10", optional=true} +html2text = {version="^2020.1.16", optional=true} +numexpr = "^2.8.4" +duckduckgo-search = {version="^3.8.3", optional=true} +azure-cosmos = {version="^4.4.0b1", optional=true} +lark = {version="^1.1.5", optional=true} +lancedb = {version = "^0.1", optional = true} +pexpect = {version = "^4.8.0", optional = true} +pyvespa = {version = "^0.33.0", optional = true} +O365 = {version = "^2.0.26", optional = true} +jq = {version = "^1.4.1", optional = true} +steamship = {version = "^2.16.9", optional = true} +pdfminer-six = {version = "^20221105", optional = true} +docarray = {version="^0.32.0", extras=["hnswlib"], optional=true} +lxml = {version = "^4.9.2", optional = true} +pymupdf = {version = "^1.22.3", optional = true} +pypdfium2 = {version = "^4.10.0", optional = true} +gql = {version = "^3.4.1", optional = true} +pandas = {version = "^2.0.1", optional = true} +telethon = {version = "^1.28.5", optional = true} +neo4j = {version = "^5.8.1", optional = true} +zep-python = {version=">=0.32", optional=true} +langkit = {version = ">=0.0.6, <0.1.0", optional = true} +chardet = {version="^5.1.0", optional=true} +requests-toolbelt = {version = "^1.0.0", optional = true} +openlm = {version = "^0.0.5", optional = true} +scikit-learn = {version = "^1.2.2", optional = true} +azure-ai-formrecognizer = {version = "^3.2.1", optional = true} +azure-ai-vision = {version = "^0.11.1b1", optional = true} +azure-cognitiveservices-speech = {version = "^1.28.0", optional = true} +py-trello = {version = "^0.19.0", optional = true} +momento = {version = "^1.5.0", optional = true} +bibtexparser = {version = "^1.4.0", optional = true} +singlestoredb = {version = "^0.7.1", optional = true} +pyspark = {version = "^3.4.0", optional = true} +clarifai = {version = ">=9.1.0", optional = true} +tigrisdb = {version = "^1.0.0b6", optional = true} +nebula3-python = {version = "^3.4.0", optional = true} +mwparserfromhell = {version = "^0.6.4", optional = true} +mwxml = {version = "^0.3.3", optional = true} +awadb = {version = "^0.3.3", optional = true} +azure-search-documents = {version = "11.4.0a20230509004", source = "azure-sdk-dev", optional = true} +esprima = {version = "^4.0.1", optional = true} +openllm = {version = ">=0.1.19", optional = true} +streamlit = {version = "^1.18.0", optional = true, python = ">=3.8.1,<3.9.7 || >3.9.7,<4.0"} +psychicapi = {version = "^0.8.0", optional = true} +cassio = {version = "^0.0.7", optional = true} +rdflib = {version = "^6.3.2", optional = true} +sympy = {version = "^1.12", optional = true} +rapidfuzz = {version = "^3.1.1", optional = true} +langsmith = "~0.0.11" +rank-bm25 = {version = "^0.2.2", optional = true} +amadeus = {version = ">=8.1.0", optional = true} +geopandas = {version = "^0.13.1", optional = true} + +[tool.poetry.group.docs.dependencies] +autodoc_pydantic = "^1.8.0" +myst_parser = "^0.18.1" +nbsphinx = "^0.8.9" +sphinx = "^4.5.0" +sphinx-autobuild = "^2021.3.14" +sphinx_book_theme = "^0.3.3" +sphinx_rtd_theme = "^1.0.0" +sphinx-typlog-theme = "^0.8.0" +sphinx-panels = "^0.6.0" +toml = "^0.10.2" +myst-nb = "^0.17.1" +linkchecker = "^10.2.1" +sphinx-copybutton = "^0.5.1" +nbdoc = "^0.0.82" + +[tool.poetry.group.test.dependencies] +# The only dependencies that should be added are +# dependencies used for running tests (e.g., pytest, freezegun, response). +# Any dependencies that do not meet that criteria will be removed. +pytest = "^7.3.0" +pytest-cov = "^4.0.0" +pytest-dotenv = "^0.5.2" +duckdb-engine = "^0.7.0" +pytest-watcher = "^0.2.6" +freezegun = "^1.2.2" +responses = "^0.22.0" +pytest-asyncio = "^0.20.3" +lark = "^1.1.5" +pandas = "^2.0.0" +pytest-mock = "^3.10.0" +pytest-socket = "^0.6.0" +syrupy = "^4.0.2" + +[tool.poetry.group.codespell.dependencies] +codespell = "^2.2.0" + +[tool.poetry.group.test_integration] +optional = true + +[tool.poetry.group.test_integration.dependencies] +# Do not add dependencies in the test_integration group +# Instead: +# 1. Add an optional dependency to the main group +# poetry add --optional [package name] +# 2. Add the package name to the extended_testing extra (find it below) +# 3. Relock the poetry file +# poetry lock --no-update +# 4. Favor unit tests not integration tests. +# Use the @pytest.mark.requires(pkg_name) decorator in unit_tests. +# Your tests should not rely on network access, as it prevents other +# developers from being able to easily run them. +# Instead write unit tests that use the `responses` library or mock.patch with +# fixtures. Keep the fixtures minimal. +# See CONTRIBUTING.md for more instructions on working with optional dependencies. +# https://github.com/hwchase17/langchain/blob/master/.github/CONTRIBUTING.md#working-with-optional-dependencies +pytest-vcr = "^1.0.2" +wrapt = "^1.15.0" +openai = "^0.27.4" +elasticsearch = {extras = ["async"], version = "^8.6.2"} +redis = "^4.5.4" +pinecone-client = "^2.2.1" +pinecone-text = "^0.4.2" +pymongo = "^4.3.3" +clickhouse-connect = "^0.5.14" +transformers = "^4.27.4" +deeplake = "^3.6.8" +libdeeplake = "^0.0.60" +weaviate-client = "^3.15.5" +torch = "^1.0.0" +chromadb = "^0.4.0" +tiktoken = "^0.3.3" +python-dotenv = "^1.0.0" +sentence-transformers = "^2" +gptcache = "^0.1.9" +promptlayer = "^0.1.80" +tair = "^1.3.3" +wikipedia = "^1" +cassio = "^0.0.7" +arxiv = "^1.4" +mastodon-py = "^1.8.1" +momento = "^1.5.0" +# Please do not add any dependencies in the test_integration group +# See instructions above ^^ + +[tool.poetry.group.lint.dependencies] +ruff = "^0.0.249" +types-toml = "^0.10.8.1" +types-redis = "^4.3.21.6" +types-pytz = "^2023.3.0.0" +black = "^23.1.0" +types-chardet = "^5.0.4.6" +mypy-protobuf = "^3.0.0" + +[tool.poetry.group.typing.dependencies] +mypy = "^0.991" +types-pyyaml = "^6.0.12.2" +types-requests = "^2.28.11.5" + +[tool.poetry.group.dev] +optional = true + +[tool.poetry.group.dev.dependencies] +jupyter = "^1.0.0" +playwright = "^1.28.0" +setuptools = "^67.6.1" + +[tool.poetry.extras] +llms = ["anthropic", "clarifai", "cohere", "openai", "openllm", "openlm", "nlpcloud", "huggingface_hub", "manifest-ml", "torch", "transformers"] +qdrant = ["qdrant-client"] +openai = ["openai", "tiktoken"] +text_helpers = ["chardet"] +clarifai = ["clarifai"] +cohere = ["cohere"] +docarray = ["docarray"] +embeddings = ["sentence-transformers"] +javascript = ["esprima"] +azure = [ + "azure-identity", + "azure-cosmos", + "openai", + "azure-core", + "azure-ai-formrecognizer", + "azure-ai-vision", + "azure-cognitiveservices-speech", + "azure-search-documents", +] +all = [ + "anthropic", + "clarifai", + "cohere", + "openai", + "nlpcloud", + "huggingface_hub", + "jina", + "manifest-ml", + "elasticsearch", + "opensearch-py", + "google-search-results", + "faiss-cpu", + "sentence-transformers", + "transformers", + "spacy", + "nltk", + "wikipedia", + "beautifulsoup4", + "tiktoken", + "torch", + "jinja2", + "pinecone-client", + "pinecone-text", + "marqo", + "pymongo", + "weaviate-client", + "redis", + "google-api-python-client", + "google-auth", + "wolframalpha", + "qdrant-client", + "tensorflow-text", + "pypdf", + "networkx", + "nomic", + "aleph-alpha-client", + "deeplake", + "libdeeplake", + "pgvector", + "psycopg2-binary", + "pyowm", + "pytesseract", + "html2text", + "atlassian-python-api", + "gptcache", + "duckduckgo-search", + "arxiv", + "azure-identity", + "clickhouse-connect", + "azure-cosmos", + "lancedb", + "langkit", + "lark", + "pexpect", + "pyvespa", + "O365", + "jq", + "docarray", + "steamship", + "pdfminer-six", + "lxml", + "requests-toolbelt", + "neo4j", + "openlm", + "azure-ai-formrecognizer", + "azure-ai-vision", + "azure-cognitiveservices-speech", + "momento", + "singlestoredb", + "tigrisdb", + "nebula3-python", + "awadb", + "esprima", + "octoai-sdk", + "rdflib", + "amadeus", +] + +# An extra used to be able to add extended testing. +# Please use new-line on formatting to make it easier to add new packages without +# merge-conflicts +extended_testing = [ + "beautifulsoup4", + "bibtexparser", + "cassio", + "chardet", + "esprima", + "jq", + "pdfminer.six", + "pgvector", + "pypdf", + "pymupdf", + "pypdfium2", + "tqdm", + "lxml", + "atlassian-python-api", + "mwparserfromhell", + "mwxml", + "pandas", + "telethon", + "psychicapi", + "zep-python", + "gql", + "requests_toolbelt", + "html2text", + "py-trello", + "scikit-learn", + "streamlit", + "pyspark", + "openai", + "sympy", + "rapidfuzz", + "openai", + "rank_bm25", + "geopandas", +] + +[[tool.poetry.source]] +name = "azure-sdk-dev" +url = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" +secondary = true + +[tool.ruff] +select = [ + "E", # pycodestyle + "F", # pyflakes + "I", # isort +] +exclude = [ + "tests/integration_tests/examples/non-utf8-encoding.py", +] + +[tool.mypy] +ignore_missing_imports = "True" +disallow_untyped_defs = "True" +exclude = ["notebooks", "examples", "example_data"] + +[tool.coverage.run] +omit = [ + "tests/*", +] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.pytest.ini_options] +# --strict-markers will raise errors on unknown marks. +# https://docs.pytest.org/en/7.1.x/how-to/mark.html#raising-errors-on-unknown-marks +# +# https://docs.pytest.org/en/7.1.x/reference/reference.html +# --strict-config any warnings encountered while parsing the `pytest` +# section of the configuration file raise errors. +# +# https://github.com/tophat/syrupy +# --snapshot-warn-unused Prints a warning on unused snapshots rather than fail the test suite. +addopts = "--strict-markers --strict-config --durations=5 --snapshot-warn-unused" +# Registering custom markers. +# https://docs.pytest.org/en/7.1.x/example/markers.html#registering-markers +markers = [ + "requires: mark tests as requiring a specific library" +] + +[tool.codespell] +skip = '.git,*.pdf,*.svg,*.pdf,*.yaml,*.ipynb,poetry.lock,*.min.js,*.css,package-lock.json,example_data,_dist,examples' +# Ignore latin etc +ignore-regex = '.*(Stati Uniti|Tense=Pres).*' +# whats is a typo but used frequently in queries so kept as is +# aapply - async apply +# unsecure - typo but part of API, decided to not bother for now +ignore-words-list = 'momento,collison,ned,foor,reworkd,parth,whats,aapply,mysogyny,unsecure,damon' diff --git a/tests/README.md b/libs/langchain/tests/README.md similarity index 100% rename from tests/README.md rename to libs/langchain/tests/README.md diff --git a/tests/__init__.py b/libs/langchain/tests/__init__.py similarity index 100% rename from tests/__init__.py rename to libs/langchain/tests/__init__.py diff --git a/tests/data.py b/libs/langchain/tests/data.py similarity index 100% rename from tests/data.py rename to libs/langchain/tests/data.py diff --git a/tests/integration_tests/.env.example b/libs/langchain/tests/integration_tests/.env.example similarity index 100% rename from tests/integration_tests/.env.example rename to libs/langchain/tests/integration_tests/.env.example diff --git a/tests/integration_tests/__init__.py b/libs/langchain/tests/integration_tests/__init__.py similarity index 100% rename from tests/integration_tests/__init__.py rename to libs/langchain/tests/integration_tests/__init__.py diff --git a/tests/integration_tests/agent/test_csv_agent.py b/libs/langchain/tests/integration_tests/agent/test_csv_agent.py similarity index 100% rename from tests/integration_tests/agent/test_csv_agent.py rename to libs/langchain/tests/integration_tests/agent/test_csv_agent.py diff --git a/tests/integration_tests/agent/test_pandas_agent.py b/libs/langchain/tests/integration_tests/agent/test_pandas_agent.py similarity index 100% rename from tests/integration_tests/agent/test_pandas_agent.py rename to libs/langchain/tests/integration_tests/agent/test_pandas_agent.py diff --git a/tests/integration_tests/agent/test_powerbi_agent.py b/libs/langchain/tests/integration_tests/agent/test_powerbi_agent.py similarity index 100% rename from tests/integration_tests/agent/test_powerbi_agent.py rename to libs/langchain/tests/integration_tests/agent/test_powerbi_agent.py diff --git a/tests/integration_tests/cache/__init__.py b/libs/langchain/tests/integration_tests/cache/__init__.py similarity index 100% rename from tests/integration_tests/cache/__init__.py rename to libs/langchain/tests/integration_tests/cache/__init__.py diff --git a/tests/integration_tests/cache/test_gptcache.py b/libs/langchain/tests/integration_tests/cache/test_gptcache.py similarity index 100% rename from tests/integration_tests/cache/test_gptcache.py rename to libs/langchain/tests/integration_tests/cache/test_gptcache.py diff --git a/tests/integration_tests/cache/test_momento_cache.py b/libs/langchain/tests/integration_tests/cache/test_momento_cache.py similarity index 100% rename from tests/integration_tests/cache/test_momento_cache.py rename to libs/langchain/tests/integration_tests/cache/test_momento_cache.py diff --git a/tests/integration_tests/cache/test_redis_cache.py b/libs/langchain/tests/integration_tests/cache/test_redis_cache.py similarity index 100% rename from tests/integration_tests/cache/test_redis_cache.py rename to libs/langchain/tests/integration_tests/cache/test_redis_cache.py diff --git a/tests/integration_tests/callbacks/__init__.py b/libs/langchain/tests/integration_tests/callbacks/__init__.py similarity index 100% rename from tests/integration_tests/callbacks/__init__.py rename to libs/langchain/tests/integration_tests/callbacks/__init__.py diff --git a/tests/integration_tests/callbacks/test_langchain_tracer.py b/libs/langchain/tests/integration_tests/callbacks/test_langchain_tracer.py similarity index 100% rename from tests/integration_tests/callbacks/test_langchain_tracer.py rename to libs/langchain/tests/integration_tests/callbacks/test_langchain_tracer.py diff --git a/tests/integration_tests/callbacks/test_openai_callback.py b/libs/langchain/tests/integration_tests/callbacks/test_openai_callback.py similarity index 100% rename from tests/integration_tests/callbacks/test_openai_callback.py rename to libs/langchain/tests/integration_tests/callbacks/test_openai_callback.py diff --git a/tests/integration_tests/callbacks/test_streamlit_callback.py b/libs/langchain/tests/integration_tests/callbacks/test_streamlit_callback.py similarity index 100% rename from tests/integration_tests/callbacks/test_streamlit_callback.py rename to libs/langchain/tests/integration_tests/callbacks/test_streamlit_callback.py diff --git a/tests/integration_tests/callbacks/test_wandb_tracer.py b/libs/langchain/tests/integration_tests/callbacks/test_wandb_tracer.py similarity index 100% rename from tests/integration_tests/callbacks/test_wandb_tracer.py rename to libs/langchain/tests/integration_tests/callbacks/test_wandb_tracer.py diff --git a/tests/integration_tests/chains/__init__.py b/libs/langchain/tests/integration_tests/chains/__init__.py similarity index 100% rename from tests/integration_tests/chains/__init__.py rename to libs/langchain/tests/integration_tests/chains/__init__.py diff --git a/tests/integration_tests/chains/openai_functions/__init__.py b/libs/langchain/tests/integration_tests/chains/openai_functions/__init__.py similarity index 100% rename from tests/integration_tests/chains/openai_functions/__init__.py rename to libs/langchain/tests/integration_tests/chains/openai_functions/__init__.py diff --git a/tests/integration_tests/chains/openai_functions/test_openapi.py b/libs/langchain/tests/integration_tests/chains/openai_functions/test_openapi.py similarity index 100% rename from tests/integration_tests/chains/openai_functions/test_openapi.py rename to libs/langchain/tests/integration_tests/chains/openai_functions/test_openapi.py diff --git a/tests/integration_tests/chains/test_cpal.py b/libs/langchain/tests/integration_tests/chains/test_cpal.py similarity index 100% rename from tests/integration_tests/chains/test_cpal.py rename to libs/langchain/tests/integration_tests/chains/test_cpal.py diff --git a/tests/integration_tests/chains/test_graph_database.py b/libs/langchain/tests/integration_tests/chains/test_graph_database.py similarity index 100% rename from tests/integration_tests/chains/test_graph_database.py rename to libs/langchain/tests/integration_tests/chains/test_graph_database.py diff --git a/tests/integration_tests/chains/test_graph_database_sparql.py b/libs/langchain/tests/integration_tests/chains/test_graph_database_sparql.py similarity index 100% rename from tests/integration_tests/chains/test_graph_database_sparql.py rename to libs/langchain/tests/integration_tests/chains/test_graph_database_sparql.py diff --git a/tests/integration_tests/chains/test_memory.py b/libs/langchain/tests/integration_tests/chains/test_memory.py similarity index 100% rename from tests/integration_tests/chains/test_memory.py rename to libs/langchain/tests/integration_tests/chains/test_memory.py diff --git a/tests/integration_tests/chains/test_pal.py b/libs/langchain/tests/integration_tests/chains/test_pal.py similarity index 100% rename from tests/integration_tests/chains/test_pal.py rename to libs/langchain/tests/integration_tests/chains/test_pal.py diff --git a/tests/integration_tests/chains/test_react.py b/libs/langchain/tests/integration_tests/chains/test_react.py similarity index 100% rename from tests/integration_tests/chains/test_react.py rename to libs/langchain/tests/integration_tests/chains/test_react.py diff --git a/tests/integration_tests/chains/test_retrieval_qa.py b/libs/langchain/tests/integration_tests/chains/test_retrieval_qa.py similarity index 100% rename from tests/integration_tests/chains/test_retrieval_qa.py rename to libs/langchain/tests/integration_tests/chains/test_retrieval_qa.py diff --git a/tests/integration_tests/chains/test_self_ask_with_search.py b/libs/langchain/tests/integration_tests/chains/test_self_ask_with_search.py similarity index 100% rename from tests/integration_tests/chains/test_self_ask_with_search.py rename to libs/langchain/tests/integration_tests/chains/test_self_ask_with_search.py diff --git a/tests/integration_tests/chains/test_sql_database.py b/libs/langchain/tests/integration_tests/chains/test_sql_database.py similarity index 100% rename from tests/integration_tests/chains/test_sql_database.py rename to libs/langchain/tests/integration_tests/chains/test_sql_database.py diff --git a/tests/integration_tests/chat_models/__init__.py b/libs/langchain/tests/integration_tests/chat_models/__init__.py similarity index 100% rename from tests/integration_tests/chat_models/__init__.py rename to libs/langchain/tests/integration_tests/chat_models/__init__.py diff --git a/tests/integration_tests/chat_models/test_anthropic.py b/libs/langchain/tests/integration_tests/chat_models/test_anthropic.py similarity index 100% rename from tests/integration_tests/chat_models/test_anthropic.py rename to libs/langchain/tests/integration_tests/chat_models/test_anthropic.py diff --git a/tests/integration_tests/chat_models/test_google_palm.py b/libs/langchain/tests/integration_tests/chat_models/test_google_palm.py similarity index 100% rename from tests/integration_tests/chat_models/test_google_palm.py rename to libs/langchain/tests/integration_tests/chat_models/test_google_palm.py diff --git a/tests/integration_tests/chat_models/test_jinachat.py b/libs/langchain/tests/integration_tests/chat_models/test_jinachat.py similarity index 100% rename from tests/integration_tests/chat_models/test_jinachat.py rename to libs/langchain/tests/integration_tests/chat_models/test_jinachat.py diff --git a/tests/integration_tests/chat_models/test_openai.py b/libs/langchain/tests/integration_tests/chat_models/test_openai.py similarity index 100% rename from tests/integration_tests/chat_models/test_openai.py rename to libs/langchain/tests/integration_tests/chat_models/test_openai.py diff --git a/tests/integration_tests/chat_models/test_promptlayer_openai.py b/libs/langchain/tests/integration_tests/chat_models/test_promptlayer_openai.py similarity index 100% rename from tests/integration_tests/chat_models/test_promptlayer_openai.py rename to libs/langchain/tests/integration_tests/chat_models/test_promptlayer_openai.py diff --git a/tests/integration_tests/chat_models/test_vertexai.py b/libs/langchain/tests/integration_tests/chat_models/test_vertexai.py similarity index 100% rename from tests/integration_tests/chat_models/test_vertexai.py rename to libs/langchain/tests/integration_tests/chat_models/test_vertexai.py diff --git a/tests/integration_tests/conftest.py b/libs/langchain/tests/integration_tests/conftest.py similarity index 100% rename from tests/integration_tests/conftest.py rename to libs/langchain/tests/integration_tests/conftest.py diff --git a/tests/integration_tests/document_loaders/__init__.py b/libs/langchain/tests/integration_tests/document_loaders/__init__.py similarity index 100% rename from tests/integration_tests/document_loaders/__init__.py rename to libs/langchain/tests/integration_tests/document_loaders/__init__.py diff --git a/tests/integration_tests/document_loaders/parsers/__init__.py b/libs/langchain/tests/integration_tests/document_loaders/parsers/__init__.py similarity index 100% rename from tests/integration_tests/document_loaders/parsers/__init__.py rename to libs/langchain/tests/integration_tests/document_loaders/parsers/__init__.py diff --git a/tests/integration_tests/document_loaders/parsers/test_language.py b/libs/langchain/tests/integration_tests/document_loaders/parsers/test_language.py similarity index 100% rename from tests/integration_tests/document_loaders/parsers/test_language.py rename to libs/langchain/tests/integration_tests/document_loaders/parsers/test_language.py diff --git a/tests/integration_tests/document_loaders/parsers/test_pdf_parsers.py b/libs/langchain/tests/integration_tests/document_loaders/parsers/test_pdf_parsers.py similarity index 100% rename from tests/integration_tests/document_loaders/parsers/test_pdf_parsers.py rename to libs/langchain/tests/integration_tests/document_loaders/parsers/test_pdf_parsers.py diff --git a/tests/integration_tests/document_loaders/test_arxiv.py b/libs/langchain/tests/integration_tests/document_loaders/test_arxiv.py similarity index 100% rename from tests/integration_tests/document_loaders/test_arxiv.py rename to libs/langchain/tests/integration_tests/document_loaders/test_arxiv.py diff --git a/tests/integration_tests/document_loaders/test_bigquery.py b/libs/langchain/tests/integration_tests/document_loaders/test_bigquery.py similarity index 100% rename from tests/integration_tests/document_loaders/test_bigquery.py rename to libs/langchain/tests/integration_tests/document_loaders/test_bigquery.py diff --git a/tests/integration_tests/document_loaders/test_bilibili.py b/libs/langchain/tests/integration_tests/document_loaders/test_bilibili.py similarity index 100% rename from tests/integration_tests/document_loaders/test_bilibili.py rename to libs/langchain/tests/integration_tests/document_loaders/test_bilibili.py diff --git a/tests/integration_tests/document_loaders/test_blockchain.py b/libs/langchain/tests/integration_tests/document_loaders/test_blockchain.py similarity index 100% rename from tests/integration_tests/document_loaders/test_blockchain.py rename to libs/langchain/tests/integration_tests/document_loaders/test_blockchain.py diff --git a/tests/integration_tests/document_loaders/test_confluence.py b/libs/langchain/tests/integration_tests/document_loaders/test_confluence.py similarity index 100% rename from tests/integration_tests/document_loaders/test_confluence.py rename to libs/langchain/tests/integration_tests/document_loaders/test_confluence.py diff --git a/tests/integration_tests/document_loaders/test_csv_loader.py b/libs/langchain/tests/integration_tests/document_loaders/test_csv_loader.py similarity index 100% rename from tests/integration_tests/document_loaders/test_csv_loader.py rename to libs/langchain/tests/integration_tests/document_loaders/test_csv_loader.py diff --git a/tests/integration_tests/document_loaders/test_dataframe.py b/libs/langchain/tests/integration_tests/document_loaders/test_dataframe.py similarity index 100% rename from tests/integration_tests/document_loaders/test_dataframe.py rename to libs/langchain/tests/integration_tests/document_loaders/test_dataframe.py diff --git a/tests/integration_tests/document_loaders/test_duckdb.py b/libs/langchain/tests/integration_tests/document_loaders/test_duckdb.py similarity index 100% rename from tests/integration_tests/document_loaders/test_duckdb.py rename to libs/langchain/tests/integration_tests/document_loaders/test_duckdb.py diff --git a/tests/integration_tests/document_loaders/test_email.py b/libs/langchain/tests/integration_tests/document_loaders/test_email.py similarity index 100% rename from tests/integration_tests/document_loaders/test_email.py rename to libs/langchain/tests/integration_tests/document_loaders/test_email.py diff --git a/tests/integration_tests/document_loaders/test_embaas.py b/libs/langchain/tests/integration_tests/document_loaders/test_embaas.py similarity index 100% rename from tests/integration_tests/document_loaders/test_embaas.py rename to libs/langchain/tests/integration_tests/document_loaders/test_embaas.py diff --git a/tests/integration_tests/document_loaders/test_excel.py b/libs/langchain/tests/integration_tests/document_loaders/test_excel.py similarity index 100% rename from tests/integration_tests/document_loaders/test_excel.py rename to libs/langchain/tests/integration_tests/document_loaders/test_excel.py diff --git a/tests/integration_tests/document_loaders/test_facebook_chat.py b/libs/langchain/tests/integration_tests/document_loaders/test_facebook_chat.py similarity index 100% rename from tests/integration_tests/document_loaders/test_facebook_chat.py rename to libs/langchain/tests/integration_tests/document_loaders/test_facebook_chat.py diff --git a/tests/integration_tests/document_loaders/test_fauna.py b/libs/langchain/tests/integration_tests/document_loaders/test_fauna.py similarity index 100% rename from tests/integration_tests/document_loaders/test_fauna.py rename to libs/langchain/tests/integration_tests/document_loaders/test_fauna.py diff --git a/tests/integration_tests/document_loaders/test_figma.py b/libs/langchain/tests/integration_tests/document_loaders/test_figma.py similarity index 100% rename from tests/integration_tests/document_loaders/test_figma.py rename to libs/langchain/tests/integration_tests/document_loaders/test_figma.py diff --git a/tests/integration_tests/document_loaders/test_geodataframe.py b/libs/langchain/tests/integration_tests/document_loaders/test_geodataframe.py similarity index 100% rename from tests/integration_tests/document_loaders/test_geodataframe.py rename to libs/langchain/tests/integration_tests/document_loaders/test_geodataframe.py diff --git a/tests/integration_tests/document_loaders/test_gitbook.py b/libs/langchain/tests/integration_tests/document_loaders/test_gitbook.py similarity index 100% rename from tests/integration_tests/document_loaders/test_gitbook.py rename to libs/langchain/tests/integration_tests/document_loaders/test_gitbook.py diff --git a/tests/integration_tests/document_loaders/test_github.py b/libs/langchain/tests/integration_tests/document_loaders/test_github.py similarity index 100% rename from tests/integration_tests/document_loaders/test_github.py rename to libs/langchain/tests/integration_tests/document_loaders/test_github.py diff --git a/tests/integration_tests/document_loaders/test_ifixit.py b/libs/langchain/tests/integration_tests/document_loaders/test_ifixit.py similarity index 100% rename from tests/integration_tests/document_loaders/test_ifixit.py rename to libs/langchain/tests/integration_tests/document_loaders/test_ifixit.py diff --git a/tests/integration_tests/document_loaders/test_joplin.py b/libs/langchain/tests/integration_tests/document_loaders/test_joplin.py similarity index 100% rename from tests/integration_tests/document_loaders/test_joplin.py rename to libs/langchain/tests/integration_tests/document_loaders/test_joplin.py diff --git a/tests/integration_tests/document_loaders/test_json_loader.py b/libs/langchain/tests/integration_tests/document_loaders/test_json_loader.py similarity index 100% rename from tests/integration_tests/document_loaders/test_json_loader.py rename to libs/langchain/tests/integration_tests/document_loaders/test_json_loader.py diff --git a/tests/integration_tests/document_loaders/test_language.py b/libs/langchain/tests/integration_tests/document_loaders/test_language.py similarity index 100% rename from tests/integration_tests/document_loaders/test_language.py rename to libs/langchain/tests/integration_tests/document_loaders/test_language.py diff --git a/tests/integration_tests/document_loaders/test_larksuite.py b/libs/langchain/tests/integration_tests/document_loaders/test_larksuite.py similarity index 100% rename from tests/integration_tests/document_loaders/test_larksuite.py rename to libs/langchain/tests/integration_tests/document_loaders/test_larksuite.py diff --git a/tests/integration_tests/document_loaders/test_mastodon.py b/libs/langchain/tests/integration_tests/document_loaders/test_mastodon.py similarity index 100% rename from tests/integration_tests/document_loaders/test_mastodon.py rename to libs/langchain/tests/integration_tests/document_loaders/test_mastodon.py diff --git a/tests/integration_tests/document_loaders/test_max_compute.py b/libs/langchain/tests/integration_tests/document_loaders/test_max_compute.py similarity index 100% rename from tests/integration_tests/document_loaders/test_max_compute.py rename to libs/langchain/tests/integration_tests/document_loaders/test_max_compute.py diff --git a/tests/integration_tests/document_loaders/test_modern_treasury.py b/libs/langchain/tests/integration_tests/document_loaders/test_modern_treasury.py similarity index 100% rename from tests/integration_tests/document_loaders/test_modern_treasury.py rename to libs/langchain/tests/integration_tests/document_loaders/test_modern_treasury.py diff --git a/tests/integration_tests/document_loaders/test_odt.py b/libs/langchain/tests/integration_tests/document_loaders/test_odt.py similarity index 100% rename from tests/integration_tests/document_loaders/test_odt.py rename to libs/langchain/tests/integration_tests/document_loaders/test_odt.py diff --git a/tests/integration_tests/document_loaders/test_org_mode.py b/libs/langchain/tests/integration_tests/document_loaders/test_org_mode.py similarity index 100% rename from tests/integration_tests/document_loaders/test_org_mode.py rename to libs/langchain/tests/integration_tests/document_loaders/test_org_mode.py diff --git a/tests/integration_tests/document_loaders/test_pdf.py b/libs/langchain/tests/integration_tests/document_loaders/test_pdf.py similarity index 100% rename from tests/integration_tests/document_loaders/test_pdf.py rename to libs/langchain/tests/integration_tests/document_loaders/test_pdf.py diff --git a/tests/integration_tests/document_loaders/test_pyspark_dataframe_loader.py b/libs/langchain/tests/integration_tests/document_loaders/test_pyspark_dataframe_loader.py similarity index 100% rename from tests/integration_tests/document_loaders/test_pyspark_dataframe_loader.py rename to libs/langchain/tests/integration_tests/document_loaders/test_pyspark_dataframe_loader.py diff --git a/tests/integration_tests/document_loaders/test_python.py b/libs/langchain/tests/integration_tests/document_loaders/test_python.py similarity index 100% rename from tests/integration_tests/document_loaders/test_python.py rename to libs/langchain/tests/integration_tests/document_loaders/test_python.py diff --git a/tests/integration_tests/document_loaders/test_rocksetdb.py b/libs/langchain/tests/integration_tests/document_loaders/test_rocksetdb.py similarity index 100% rename from tests/integration_tests/document_loaders/test_rocksetdb.py rename to libs/langchain/tests/integration_tests/document_loaders/test_rocksetdb.py diff --git a/tests/integration_tests/document_loaders/test_rst.py b/libs/langchain/tests/integration_tests/document_loaders/test_rst.py similarity index 100% rename from tests/integration_tests/document_loaders/test_rst.py rename to libs/langchain/tests/integration_tests/document_loaders/test_rst.py diff --git a/tests/integration_tests/document_loaders/test_sitemap.py b/libs/langchain/tests/integration_tests/document_loaders/test_sitemap.py similarity index 100% rename from tests/integration_tests/document_loaders/test_sitemap.py rename to libs/langchain/tests/integration_tests/document_loaders/test_sitemap.py diff --git a/tests/integration_tests/document_loaders/test_slack.py b/libs/langchain/tests/integration_tests/document_loaders/test_slack.py similarity index 100% rename from tests/integration_tests/document_loaders/test_slack.py rename to libs/langchain/tests/integration_tests/document_loaders/test_slack.py diff --git a/tests/integration_tests/document_loaders/test_spreedly.py b/libs/langchain/tests/integration_tests/document_loaders/test_spreedly.py similarity index 100% rename from tests/integration_tests/document_loaders/test_spreedly.py rename to libs/langchain/tests/integration_tests/document_loaders/test_spreedly.py diff --git a/tests/integration_tests/document_loaders/test_stripe.py b/libs/langchain/tests/integration_tests/document_loaders/test_stripe.py similarity index 100% rename from tests/integration_tests/document_loaders/test_stripe.py rename to libs/langchain/tests/integration_tests/document_loaders/test_stripe.py diff --git a/tests/integration_tests/document_loaders/test_tsv.py b/libs/langchain/tests/integration_tests/document_loaders/test_tsv.py similarity index 100% rename from tests/integration_tests/document_loaders/test_tsv.py rename to libs/langchain/tests/integration_tests/document_loaders/test_tsv.py diff --git a/tests/integration_tests/document_loaders/test_unstructured.py b/libs/langchain/tests/integration_tests/document_loaders/test_unstructured.py similarity index 100% rename from tests/integration_tests/document_loaders/test_unstructured.py rename to libs/langchain/tests/integration_tests/document_loaders/test_unstructured.py diff --git a/tests/integration_tests/document_loaders/test_url.py b/libs/langchain/tests/integration_tests/document_loaders/test_url.py similarity index 100% rename from tests/integration_tests/document_loaders/test_url.py rename to libs/langchain/tests/integration_tests/document_loaders/test_url.py diff --git a/tests/integration_tests/document_loaders/test_url_playwright.py b/libs/langchain/tests/integration_tests/document_loaders/test_url_playwright.py similarity index 100% rename from tests/integration_tests/document_loaders/test_url_playwright.py rename to libs/langchain/tests/integration_tests/document_loaders/test_url_playwright.py diff --git a/tests/integration_tests/document_loaders/test_whatsapp_chat.py b/libs/langchain/tests/integration_tests/document_loaders/test_whatsapp_chat.py similarity index 100% rename from tests/integration_tests/document_loaders/test_whatsapp_chat.py rename to libs/langchain/tests/integration_tests/document_loaders/test_whatsapp_chat.py diff --git a/tests/integration_tests/document_loaders/test_xml.py b/libs/langchain/tests/integration_tests/document_loaders/test_xml.py similarity index 100% rename from tests/integration_tests/document_loaders/test_xml.py rename to libs/langchain/tests/integration_tests/document_loaders/test_xml.py diff --git a/tests/integration_tests/document_loaders/test_xorbits.py b/libs/langchain/tests/integration_tests/document_loaders/test_xorbits.py similarity index 100% rename from tests/integration_tests/document_loaders/test_xorbits.py rename to libs/langchain/tests/integration_tests/document_loaders/test_xorbits.py diff --git a/tests/integration_tests/embeddings/__init__.py b/libs/langchain/tests/integration_tests/embeddings/__init__.py similarity index 100% rename from tests/integration_tests/embeddings/__init__.py rename to libs/langchain/tests/integration_tests/embeddings/__init__.py diff --git a/tests/integration_tests/embeddings/test_cohere.py b/libs/langchain/tests/integration_tests/embeddings/test_cohere.py similarity index 100% rename from tests/integration_tests/embeddings/test_cohere.py rename to libs/langchain/tests/integration_tests/embeddings/test_cohere.py diff --git a/tests/integration_tests/embeddings/test_dashscope.py b/libs/langchain/tests/integration_tests/embeddings/test_dashscope.py similarity index 100% rename from tests/integration_tests/embeddings/test_dashscope.py rename to libs/langchain/tests/integration_tests/embeddings/test_dashscope.py diff --git a/tests/integration_tests/embeddings/test_deepinfra.py b/libs/langchain/tests/integration_tests/embeddings/test_deepinfra.py similarity index 100% rename from tests/integration_tests/embeddings/test_deepinfra.py rename to libs/langchain/tests/integration_tests/embeddings/test_deepinfra.py diff --git a/tests/integration_tests/embeddings/test_elasticsearch.py b/libs/langchain/tests/integration_tests/embeddings/test_elasticsearch.py similarity index 100% rename from tests/integration_tests/embeddings/test_elasticsearch.py rename to libs/langchain/tests/integration_tests/embeddings/test_elasticsearch.py diff --git a/tests/integration_tests/embeddings/test_embaas.py b/libs/langchain/tests/integration_tests/embeddings/test_embaas.py similarity index 100% rename from tests/integration_tests/embeddings/test_embaas.py rename to libs/langchain/tests/integration_tests/embeddings/test_embaas.py diff --git a/tests/integration_tests/embeddings/test_google_palm.py b/libs/langchain/tests/integration_tests/embeddings/test_google_palm.py similarity index 100% rename from tests/integration_tests/embeddings/test_google_palm.py rename to libs/langchain/tests/integration_tests/embeddings/test_google_palm.py diff --git a/tests/integration_tests/embeddings/test_huggingface.py b/libs/langchain/tests/integration_tests/embeddings/test_huggingface.py similarity index 100% rename from tests/integration_tests/embeddings/test_huggingface.py rename to libs/langchain/tests/integration_tests/embeddings/test_huggingface.py diff --git a/tests/integration_tests/embeddings/test_huggingface_hub.py b/libs/langchain/tests/integration_tests/embeddings/test_huggingface_hub.py similarity index 100% rename from tests/integration_tests/embeddings/test_huggingface_hub.py rename to libs/langchain/tests/integration_tests/embeddings/test_huggingface_hub.py diff --git a/tests/integration_tests/embeddings/test_jina.py b/libs/langchain/tests/integration_tests/embeddings/test_jina.py similarity index 100% rename from tests/integration_tests/embeddings/test_jina.py rename to libs/langchain/tests/integration_tests/embeddings/test_jina.py diff --git a/tests/integration_tests/embeddings/test_llamacpp.py b/libs/langchain/tests/integration_tests/embeddings/test_llamacpp.py similarity index 100% rename from tests/integration_tests/embeddings/test_llamacpp.py rename to libs/langchain/tests/integration_tests/embeddings/test_llamacpp.py diff --git a/tests/integration_tests/embeddings/test_modelscope_hub.py b/libs/langchain/tests/integration_tests/embeddings/test_modelscope_hub.py similarity index 100% rename from tests/integration_tests/embeddings/test_modelscope_hub.py rename to libs/langchain/tests/integration_tests/embeddings/test_modelscope_hub.py diff --git a/tests/integration_tests/embeddings/test_mosaicml.py b/libs/langchain/tests/integration_tests/embeddings/test_mosaicml.py similarity index 100% rename from tests/integration_tests/embeddings/test_mosaicml.py rename to libs/langchain/tests/integration_tests/embeddings/test_mosaicml.py diff --git a/tests/integration_tests/embeddings/test_octoai_embeddings.py b/libs/langchain/tests/integration_tests/embeddings/test_octoai_embeddings.py similarity index 100% rename from tests/integration_tests/embeddings/test_octoai_embeddings.py rename to libs/langchain/tests/integration_tests/embeddings/test_octoai_embeddings.py diff --git a/tests/integration_tests/embeddings/test_openai.py b/libs/langchain/tests/integration_tests/embeddings/test_openai.py similarity index 100% rename from tests/integration_tests/embeddings/test_openai.py rename to libs/langchain/tests/integration_tests/embeddings/test_openai.py diff --git a/tests/integration_tests/embeddings/test_self_hosted.py b/libs/langchain/tests/integration_tests/embeddings/test_self_hosted.py similarity index 100% rename from tests/integration_tests/embeddings/test_self_hosted.py rename to libs/langchain/tests/integration_tests/embeddings/test_self_hosted.py diff --git a/tests/integration_tests/embeddings/test_sentence_transformer.py b/libs/langchain/tests/integration_tests/embeddings/test_sentence_transformer.py similarity index 100% rename from tests/integration_tests/embeddings/test_sentence_transformer.py rename to libs/langchain/tests/integration_tests/embeddings/test_sentence_transformer.py diff --git a/tests/integration_tests/embeddings/test_tensorflow_hub.py b/libs/langchain/tests/integration_tests/embeddings/test_tensorflow_hub.py similarity index 100% rename from tests/integration_tests/embeddings/test_tensorflow_hub.py rename to libs/langchain/tests/integration_tests/embeddings/test_tensorflow_hub.py diff --git a/tests/integration_tests/embeddings/test_vertexai.py b/libs/langchain/tests/integration_tests/embeddings/test_vertexai.py similarity index 100% rename from tests/integration_tests/embeddings/test_vertexai.py rename to libs/langchain/tests/integration_tests/embeddings/test_vertexai.py diff --git a/tests/integration_tests/evaluation/__init__.py b/libs/langchain/tests/integration_tests/evaluation/__init__.py similarity index 100% rename from tests/integration_tests/evaluation/__init__.py rename to libs/langchain/tests/integration_tests/evaluation/__init__.py diff --git a/tests/integration_tests/evaluation/embedding_distance/test_embedding.py b/libs/langchain/tests/integration_tests/evaluation/embedding_distance/test_embedding.py similarity index 100% rename from tests/integration_tests/evaluation/embedding_distance/test_embedding.py rename to libs/langchain/tests/integration_tests/evaluation/embedding_distance/test_embedding.py diff --git a/tests/integration_tests/examples/README.org b/libs/langchain/tests/integration_tests/examples/README.org similarity index 100% rename from tests/integration_tests/examples/README.org rename to libs/langchain/tests/integration_tests/examples/README.org diff --git a/tests/integration_tests/examples/README.rst b/libs/langchain/tests/integration_tests/examples/README.rst similarity index 100% rename from tests/integration_tests/examples/README.rst rename to libs/langchain/tests/integration_tests/examples/README.rst diff --git a/tests/integration_tests/examples/brandfetch-brandfetch-2.0.0-resolved.json b/libs/langchain/tests/integration_tests/examples/brandfetch-brandfetch-2.0.0-resolved.json similarity index 100% rename from tests/integration_tests/examples/brandfetch-brandfetch-2.0.0-resolved.json rename to libs/langchain/tests/integration_tests/examples/brandfetch-brandfetch-2.0.0-resolved.json diff --git a/tests/integration_tests/examples/default-encoding.py b/libs/langchain/tests/integration_tests/examples/default-encoding.py similarity index 100% rename from tests/integration_tests/examples/default-encoding.py rename to libs/langchain/tests/integration_tests/examples/default-encoding.py diff --git a/tests/integration_tests/examples/example-utf8.html b/libs/langchain/tests/integration_tests/examples/example-utf8.html similarity index 100% rename from tests/integration_tests/examples/example-utf8.html rename to libs/langchain/tests/integration_tests/examples/example-utf8.html diff --git a/tests/integration_tests/examples/example.html b/libs/langchain/tests/integration_tests/examples/example.html similarity index 100% rename from tests/integration_tests/examples/example.html rename to libs/langchain/tests/integration_tests/examples/example.html diff --git a/tests/integration_tests/examples/example.json b/libs/langchain/tests/integration_tests/examples/example.json similarity index 100% rename from tests/integration_tests/examples/example.json rename to libs/langchain/tests/integration_tests/examples/example.json diff --git a/tests/integration_tests/examples/example.mht b/libs/langchain/tests/integration_tests/examples/example.mht similarity index 97% rename from tests/integration_tests/examples/example.mht rename to libs/langchain/tests/integration_tests/examples/example.mht index 44a45ea020..4827353c4d 100644 --- a/tests/integration_tests/examples/example.mht +++ b/libs/langchain/tests/integration_tests/examples/example.mht @@ -1,108 +1,108 @@ -From: -Snapshot-Content-Location: https://langchain.com/ -Subject: -Date: Fri, 16 Jun 2023 19:32:59 -0000 -MIME-Version: 1.0 -Content-Type: multipart/related; - type="text/html"; - boundary="----MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt----" - - -------MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt---- -Content-Type: text/html -Content-ID: -Content-Transfer-Encoding: quoted-printable -Content-Location: https://langchain.com/ - -LangChain

- LANG C= -HAIN =F0=9F=A6=9C=EF=B8=8F= -=F0=9F=94=97
Official Home Page
 = -

- -
-
- - - - - - - - - - - - - =20 -=09 - - - - - - - - - - =09 - - -
- -
- -
- -
- -
- -
- -
-
- -

If you have any comments about our WEB page, you can=20 -write us at the address shown above. However, due to=20 -the limited number of personnel in our corporate office, we are unable to= -=20 -provide a direct response.

-
-

Copyright =C2=A9 2023-2023 LangChain = -Inc.=20 -

- - -------MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt------ +From: +Snapshot-Content-Location: https://langchain.com/ +Subject: +Date: Fri, 16 Jun 2023 19:32:59 -0000 +MIME-Version: 1.0 +Content-Type: multipart/related; + type="text/html"; + boundary="----MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt----" + + +------MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt---- +Content-Type: text/html +Content-ID: +Content-Transfer-Encoding: quoted-printable +Content-Location: https://langchain.com/ + +LangChain

+ LANG C= +HAIN =F0=9F=A6=9C=EF=B8=8F= +=F0=9F=94=97
Official Home Page
 = +

+ +
+
+ + + + + + + + + + + + + =20 +=09 + + + + + + + + + + =09 + + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +

If you have any comments about our WEB page, you can=20 +write us at the address shown above. However, due to=20 +the limited number of personnel in our corporate office, we are unable to= +=20 +provide a direct response.

+
+

Copyright =C2=A9 2023-2023 LangChain = +Inc.=20 +

+ + +------MultipartBoundary--dYaUgeoeP18TqraaeOwkeZyu1vI09OtkFwH2rcnJMt------ diff --git a/tests/integration_tests/examples/facebook_chat.json b/libs/langchain/tests/integration_tests/examples/facebook_chat.json similarity index 100% rename from tests/integration_tests/examples/facebook_chat.json rename to libs/langchain/tests/integration_tests/examples/facebook_chat.json diff --git a/tests/integration_tests/examples/factbook.xml b/libs/langchain/tests/integration_tests/examples/factbook.xml similarity index 100% rename from tests/integration_tests/examples/factbook.xml rename to libs/langchain/tests/integration_tests/examples/factbook.xml diff --git a/tests/integration_tests/examples/fake-email-attachment.eml b/libs/langchain/tests/integration_tests/examples/fake-email-attachment.eml similarity index 100% rename from tests/integration_tests/examples/fake-email-attachment.eml rename to libs/langchain/tests/integration_tests/examples/fake-email-attachment.eml diff --git a/tests/integration_tests/examples/fake.odt b/libs/langchain/tests/integration_tests/examples/fake.odt similarity index 100% rename from tests/integration_tests/examples/fake.odt rename to libs/langchain/tests/integration_tests/examples/fake.odt diff --git a/tests/integration_tests/examples/hello.msg b/libs/langchain/tests/integration_tests/examples/hello.msg similarity index 100% rename from tests/integration_tests/examples/hello.msg rename to libs/langchain/tests/integration_tests/examples/hello.msg diff --git a/tests/integration_tests/examples/hello.pdf b/libs/langchain/tests/integration_tests/examples/hello.pdf similarity index 100% rename from tests/integration_tests/examples/hello.pdf rename to libs/langchain/tests/integration_tests/examples/hello.pdf diff --git a/tests/integration_tests/examples/hello_world.js b/libs/langchain/tests/integration_tests/examples/hello_world.js similarity index 100% rename from tests/integration_tests/examples/hello_world.js rename to libs/langchain/tests/integration_tests/examples/hello_world.js diff --git a/tests/integration_tests/examples/hello_world.py b/libs/langchain/tests/integration_tests/examples/hello_world.py similarity index 100% rename from tests/integration_tests/examples/hello_world.py rename to libs/langchain/tests/integration_tests/examples/hello_world.py diff --git a/tests/integration_tests/examples/layout-parser-paper.pdf b/libs/langchain/tests/integration_tests/examples/layout-parser-paper.pdf similarity index 100% rename from tests/integration_tests/examples/layout-parser-paper.pdf rename to libs/langchain/tests/integration_tests/examples/layout-parser-paper.pdf diff --git a/tests/integration_tests/examples/non-utf8-encoding.py b/libs/langchain/tests/integration_tests/examples/non-utf8-encoding.py similarity index 100% rename from tests/integration_tests/examples/non-utf8-encoding.py rename to libs/langchain/tests/integration_tests/examples/non-utf8-encoding.py diff --git a/tests/integration_tests/examples/sitemap.xml b/libs/langchain/tests/integration_tests/examples/sitemap.xml similarity index 100% rename from tests/integration_tests/examples/sitemap.xml rename to libs/langchain/tests/integration_tests/examples/sitemap.xml diff --git a/tests/integration_tests/examples/slack_export.zip b/libs/langchain/tests/integration_tests/examples/slack_export.zip similarity index 100% rename from tests/integration_tests/examples/slack_export.zip rename to libs/langchain/tests/integration_tests/examples/slack_export.zip diff --git a/tests/integration_tests/examples/stanley-cups.csv b/libs/langchain/tests/integration_tests/examples/stanley-cups.csv similarity index 75% rename from tests/integration_tests/examples/stanley-cups.csv rename to libs/langchain/tests/integration_tests/examples/stanley-cups.csv index 4414023f00..482a10ddfd 100644 --- a/tests/integration_tests/examples/stanley-cups.csv +++ b/libs/langchain/tests/integration_tests/examples/stanley-cups.csv @@ -1,5 +1,5 @@ -Stanley Cups,, -Team,Location,Stanley Cups -Blues,STL,1 -Flyers,PHI,2 +Stanley Cups,, +Team,Location,Stanley Cups +Blues,STL,1 +Flyers,PHI,2 Maple Leafs,TOR,13 \ No newline at end of file diff --git a/tests/integration_tests/examples/stanley-cups.tsv b/libs/langchain/tests/integration_tests/examples/stanley-cups.tsv similarity index 100% rename from tests/integration_tests/examples/stanley-cups.tsv rename to libs/langchain/tests/integration_tests/examples/stanley-cups.tsv diff --git a/tests/integration_tests/examples/stanley-cups.xlsx b/libs/langchain/tests/integration_tests/examples/stanley-cups.xlsx similarity index 100% rename from tests/integration_tests/examples/stanley-cups.xlsx rename to libs/langchain/tests/integration_tests/examples/stanley-cups.xlsx diff --git a/tests/integration_tests/examples/whatsapp_chat.txt b/libs/langchain/tests/integration_tests/examples/whatsapp_chat.txt similarity index 100% rename from tests/integration_tests/examples/whatsapp_chat.txt rename to libs/langchain/tests/integration_tests/examples/whatsapp_chat.txt diff --git a/tests/integration_tests/graphs/__init__.py b/libs/langchain/tests/integration_tests/graphs/__init__.py similarity index 100% rename from tests/integration_tests/graphs/__init__.py rename to libs/langchain/tests/integration_tests/graphs/__init__.py diff --git a/tests/integration_tests/graphs/test_hugegraph.py b/libs/langchain/tests/integration_tests/graphs/test_hugegraph.py similarity index 100% rename from tests/integration_tests/graphs/test_hugegraph.py rename to libs/langchain/tests/integration_tests/graphs/test_hugegraph.py diff --git a/tests/integration_tests/llms/__init__.py b/libs/langchain/tests/integration_tests/llms/__init__.py similarity index 100% rename from tests/integration_tests/llms/__init__.py rename to libs/langchain/tests/integration_tests/llms/__init__.py diff --git a/tests/integration_tests/llms/test_ai21.py b/libs/langchain/tests/integration_tests/llms/test_ai21.py similarity index 100% rename from tests/integration_tests/llms/test_ai21.py rename to libs/langchain/tests/integration_tests/llms/test_ai21.py diff --git a/tests/integration_tests/llms/test_aleph_alpha.py b/libs/langchain/tests/integration_tests/llms/test_aleph_alpha.py similarity index 100% rename from tests/integration_tests/llms/test_aleph_alpha.py rename to libs/langchain/tests/integration_tests/llms/test_aleph_alpha.py diff --git a/tests/integration_tests/llms/test_anthropic.py b/libs/langchain/tests/integration_tests/llms/test_anthropic.py similarity index 100% rename from tests/integration_tests/llms/test_anthropic.py rename to libs/langchain/tests/integration_tests/llms/test_anthropic.py diff --git a/tests/integration_tests/llms/test_anyscale.py b/libs/langchain/tests/integration_tests/llms/test_anyscale.py similarity index 100% rename from tests/integration_tests/llms/test_anyscale.py rename to libs/langchain/tests/integration_tests/llms/test_anyscale.py diff --git a/tests/integration_tests/llms/test_aviary.py b/libs/langchain/tests/integration_tests/llms/test_aviary.py similarity index 100% rename from tests/integration_tests/llms/test_aviary.py rename to libs/langchain/tests/integration_tests/llms/test_aviary.py diff --git a/tests/integration_tests/llms/test_azureml_endpoint.py b/libs/langchain/tests/integration_tests/llms/test_azureml_endpoint.py similarity index 100% rename from tests/integration_tests/llms/test_azureml_endpoint.py rename to libs/langchain/tests/integration_tests/llms/test_azureml_endpoint.py diff --git a/tests/integration_tests/llms/test_banana.py b/libs/langchain/tests/integration_tests/llms/test_banana.py similarity index 100% rename from tests/integration_tests/llms/test_banana.py rename to libs/langchain/tests/integration_tests/llms/test_banana.py diff --git a/tests/integration_tests/llms/test_baseten.py b/libs/langchain/tests/integration_tests/llms/test_baseten.py similarity index 100% rename from tests/integration_tests/llms/test_baseten.py rename to libs/langchain/tests/integration_tests/llms/test_baseten.py diff --git a/tests/integration_tests/llms/test_beam.py b/libs/langchain/tests/integration_tests/llms/test_beam.py similarity index 100% rename from tests/integration_tests/llms/test_beam.py rename to libs/langchain/tests/integration_tests/llms/test_beam.py diff --git a/tests/integration_tests/llms/test_cerebrium.py b/libs/langchain/tests/integration_tests/llms/test_cerebrium.py similarity index 100% rename from tests/integration_tests/llms/test_cerebrium.py rename to libs/langchain/tests/integration_tests/llms/test_cerebrium.py diff --git a/tests/integration_tests/llms/test_chatglm.py b/libs/langchain/tests/integration_tests/llms/test_chatglm.py similarity index 100% rename from tests/integration_tests/llms/test_chatglm.py rename to libs/langchain/tests/integration_tests/llms/test_chatglm.py diff --git a/tests/integration_tests/llms/test_clarifai.py b/libs/langchain/tests/integration_tests/llms/test_clarifai.py similarity index 100% rename from tests/integration_tests/llms/test_clarifai.py rename to libs/langchain/tests/integration_tests/llms/test_clarifai.py diff --git a/tests/integration_tests/llms/test_cohere.py b/libs/langchain/tests/integration_tests/llms/test_cohere.py similarity index 100% rename from tests/integration_tests/llms/test_cohere.py rename to libs/langchain/tests/integration_tests/llms/test_cohere.py diff --git a/tests/integration_tests/llms/test_ctransformers.py b/libs/langchain/tests/integration_tests/llms/test_ctransformers.py similarity index 100% rename from tests/integration_tests/llms/test_ctransformers.py rename to libs/langchain/tests/integration_tests/llms/test_ctransformers.py diff --git a/tests/integration_tests/llms/test_deepinfra.py b/libs/langchain/tests/integration_tests/llms/test_deepinfra.py similarity index 100% rename from tests/integration_tests/llms/test_deepinfra.py rename to libs/langchain/tests/integration_tests/llms/test_deepinfra.py diff --git a/tests/integration_tests/llms/test_forefrontai.py b/libs/langchain/tests/integration_tests/llms/test_forefrontai.py similarity index 100% rename from tests/integration_tests/llms/test_forefrontai.py rename to libs/langchain/tests/integration_tests/llms/test_forefrontai.py diff --git a/tests/integration_tests/llms/test_google_palm.py b/libs/langchain/tests/integration_tests/llms/test_google_palm.py similarity index 100% rename from tests/integration_tests/llms/test_google_palm.py rename to libs/langchain/tests/integration_tests/llms/test_google_palm.py diff --git a/tests/integration_tests/llms/test_gooseai.py b/libs/langchain/tests/integration_tests/llms/test_gooseai.py similarity index 100% rename from tests/integration_tests/llms/test_gooseai.py rename to libs/langchain/tests/integration_tests/llms/test_gooseai.py diff --git a/tests/integration_tests/llms/test_gpt4all.py b/libs/langchain/tests/integration_tests/llms/test_gpt4all.py similarity index 100% rename from tests/integration_tests/llms/test_gpt4all.py rename to libs/langchain/tests/integration_tests/llms/test_gpt4all.py diff --git a/tests/integration_tests/llms/test_huggingface_endpoint.py b/libs/langchain/tests/integration_tests/llms/test_huggingface_endpoint.py similarity index 100% rename from tests/integration_tests/llms/test_huggingface_endpoint.py rename to libs/langchain/tests/integration_tests/llms/test_huggingface_endpoint.py diff --git a/tests/integration_tests/llms/test_huggingface_hub.py b/libs/langchain/tests/integration_tests/llms/test_huggingface_hub.py similarity index 100% rename from tests/integration_tests/llms/test_huggingface_hub.py rename to libs/langchain/tests/integration_tests/llms/test_huggingface_hub.py diff --git a/tests/integration_tests/llms/test_huggingface_pipeline.py b/libs/langchain/tests/integration_tests/llms/test_huggingface_pipeline.py similarity index 100% rename from tests/integration_tests/llms/test_huggingface_pipeline.py rename to libs/langchain/tests/integration_tests/llms/test_huggingface_pipeline.py diff --git a/tests/integration_tests/llms/test_huggingface_text_gen_inference.py b/libs/langchain/tests/integration_tests/llms/test_huggingface_text_gen_inference.py similarity index 100% rename from tests/integration_tests/llms/test_huggingface_text_gen_inference.py rename to libs/langchain/tests/integration_tests/llms/test_huggingface_text_gen_inference.py diff --git a/tests/integration_tests/llms/test_llamacpp.py b/libs/langchain/tests/integration_tests/llms/test_llamacpp.py similarity index 100% rename from tests/integration_tests/llms/test_llamacpp.py rename to libs/langchain/tests/integration_tests/llms/test_llamacpp.py diff --git a/tests/integration_tests/llms/test_manifest.py b/libs/langchain/tests/integration_tests/llms/test_manifest.py similarity index 100% rename from tests/integration_tests/llms/test_manifest.py rename to libs/langchain/tests/integration_tests/llms/test_manifest.py diff --git a/tests/integration_tests/llms/test_modal.py b/libs/langchain/tests/integration_tests/llms/test_modal.py similarity index 100% rename from tests/integration_tests/llms/test_modal.py rename to libs/langchain/tests/integration_tests/llms/test_modal.py diff --git a/tests/integration_tests/llms/test_mosaicml.py b/libs/langchain/tests/integration_tests/llms/test_mosaicml.py similarity index 100% rename from tests/integration_tests/llms/test_mosaicml.py rename to libs/langchain/tests/integration_tests/llms/test_mosaicml.py diff --git a/tests/integration_tests/llms/test_nlpcloud.py b/libs/langchain/tests/integration_tests/llms/test_nlpcloud.py similarity index 100% rename from tests/integration_tests/llms/test_nlpcloud.py rename to libs/langchain/tests/integration_tests/llms/test_nlpcloud.py diff --git a/tests/integration_tests/llms/test_octoai_endpoint.py b/libs/langchain/tests/integration_tests/llms/test_octoai_endpoint.py similarity index 100% rename from tests/integration_tests/llms/test_octoai_endpoint.py rename to libs/langchain/tests/integration_tests/llms/test_octoai_endpoint.py diff --git a/tests/integration_tests/llms/test_openai.py b/libs/langchain/tests/integration_tests/llms/test_openai.py similarity index 100% rename from tests/integration_tests/llms/test_openai.py rename to libs/langchain/tests/integration_tests/llms/test_openai.py diff --git a/tests/integration_tests/llms/test_openllm.py b/libs/langchain/tests/integration_tests/llms/test_openllm.py similarity index 100% rename from tests/integration_tests/llms/test_openllm.py rename to libs/langchain/tests/integration_tests/llms/test_openllm.py diff --git a/tests/integration_tests/llms/test_openlm.py b/libs/langchain/tests/integration_tests/llms/test_openlm.py similarity index 100% rename from tests/integration_tests/llms/test_openlm.py rename to libs/langchain/tests/integration_tests/llms/test_openlm.py diff --git a/tests/integration_tests/llms/test_petals.py b/libs/langchain/tests/integration_tests/llms/test_petals.py similarity index 100% rename from tests/integration_tests/llms/test_petals.py rename to libs/langchain/tests/integration_tests/llms/test_petals.py diff --git a/tests/integration_tests/llms/test_pipelineai.py b/libs/langchain/tests/integration_tests/llms/test_pipelineai.py similarity index 100% rename from tests/integration_tests/llms/test_pipelineai.py rename to libs/langchain/tests/integration_tests/llms/test_pipelineai.py diff --git a/tests/integration_tests/llms/test_predictionguard.py b/libs/langchain/tests/integration_tests/llms/test_predictionguard.py similarity index 100% rename from tests/integration_tests/llms/test_predictionguard.py rename to libs/langchain/tests/integration_tests/llms/test_predictionguard.py diff --git a/tests/integration_tests/llms/test_promptlayer_openai.py b/libs/langchain/tests/integration_tests/llms/test_promptlayer_openai.py similarity index 100% rename from tests/integration_tests/llms/test_promptlayer_openai.py rename to libs/langchain/tests/integration_tests/llms/test_promptlayer_openai.py diff --git a/tests/integration_tests/llms/test_propmptlayer_openai_chat.py b/libs/langchain/tests/integration_tests/llms/test_propmptlayer_openai_chat.py similarity index 100% rename from tests/integration_tests/llms/test_propmptlayer_openai_chat.py rename to libs/langchain/tests/integration_tests/llms/test_propmptlayer_openai_chat.py diff --git a/tests/integration_tests/llms/test_replicate.py b/libs/langchain/tests/integration_tests/llms/test_replicate.py similarity index 100% rename from tests/integration_tests/llms/test_replicate.py rename to libs/langchain/tests/integration_tests/llms/test_replicate.py diff --git a/tests/integration_tests/llms/test_rwkv.py b/libs/langchain/tests/integration_tests/llms/test_rwkv.py similarity index 100% rename from tests/integration_tests/llms/test_rwkv.py rename to libs/langchain/tests/integration_tests/llms/test_rwkv.py diff --git a/tests/integration_tests/llms/test_self_hosted_llm.py b/libs/langchain/tests/integration_tests/llms/test_self_hosted_llm.py similarity index 100% rename from tests/integration_tests/llms/test_self_hosted_llm.py rename to libs/langchain/tests/integration_tests/llms/test_self_hosted_llm.py diff --git a/tests/integration_tests/llms/test_stochasticai.py b/libs/langchain/tests/integration_tests/llms/test_stochasticai.py similarity index 100% rename from tests/integration_tests/llms/test_stochasticai.py rename to libs/langchain/tests/integration_tests/llms/test_stochasticai.py diff --git a/tests/integration_tests/llms/test_tongyi.py b/libs/langchain/tests/integration_tests/llms/test_tongyi.py similarity index 100% rename from tests/integration_tests/llms/test_tongyi.py rename to libs/langchain/tests/integration_tests/llms/test_tongyi.py diff --git a/tests/integration_tests/llms/test_vertexai.py b/libs/langchain/tests/integration_tests/llms/test_vertexai.py similarity index 100% rename from tests/integration_tests/llms/test_vertexai.py rename to libs/langchain/tests/integration_tests/llms/test_vertexai.py diff --git a/tests/integration_tests/llms/test_writer.py b/libs/langchain/tests/integration_tests/llms/test_writer.py similarity index 100% rename from tests/integration_tests/llms/test_writer.py rename to libs/langchain/tests/integration_tests/llms/test_writer.py diff --git a/tests/integration_tests/llms/utils.py b/libs/langchain/tests/integration_tests/llms/utils.py similarity index 100% rename from tests/integration_tests/llms/utils.py rename to libs/langchain/tests/integration_tests/llms/utils.py diff --git a/tests/integration_tests/memory/__init__.py b/libs/langchain/tests/integration_tests/memory/__init__.py similarity index 100% rename from tests/integration_tests/memory/__init__.py rename to libs/langchain/tests/integration_tests/memory/__init__.py diff --git a/tests/integration_tests/memory/test_cassandra.py b/libs/langchain/tests/integration_tests/memory/test_cassandra.py similarity index 100% rename from tests/integration_tests/memory/test_cassandra.py rename to libs/langchain/tests/integration_tests/memory/test_cassandra.py diff --git a/tests/integration_tests/memory/test_cosmos_db.py b/libs/langchain/tests/integration_tests/memory/test_cosmos_db.py similarity index 100% rename from tests/integration_tests/memory/test_cosmos_db.py rename to libs/langchain/tests/integration_tests/memory/test_cosmos_db.py diff --git a/tests/integration_tests/memory/test_firestore.py b/libs/langchain/tests/integration_tests/memory/test_firestore.py similarity index 100% rename from tests/integration_tests/memory/test_firestore.py rename to libs/langchain/tests/integration_tests/memory/test_firestore.py diff --git a/tests/integration_tests/memory/test_momento.py b/libs/langchain/tests/integration_tests/memory/test_momento.py similarity index 100% rename from tests/integration_tests/memory/test_momento.py rename to libs/langchain/tests/integration_tests/memory/test_momento.py diff --git a/tests/integration_tests/memory/test_mongodb.py b/libs/langchain/tests/integration_tests/memory/test_mongodb.py similarity index 100% rename from tests/integration_tests/memory/test_mongodb.py rename to libs/langchain/tests/integration_tests/memory/test_mongodb.py diff --git a/tests/integration_tests/memory/test_redis.py b/libs/langchain/tests/integration_tests/memory/test_redis.py similarity index 100% rename from tests/integration_tests/memory/test_redis.py rename to libs/langchain/tests/integration_tests/memory/test_redis.py diff --git a/tests/integration_tests/prompts/__init__.py b/libs/langchain/tests/integration_tests/prompts/__init__.py similarity index 100% rename from tests/integration_tests/prompts/__init__.py rename to libs/langchain/tests/integration_tests/prompts/__init__.py diff --git a/tests/integration_tests/prompts/test_ngram_overlap_example_selector.py b/libs/langchain/tests/integration_tests/prompts/test_ngram_overlap_example_selector.py similarity index 100% rename from tests/integration_tests/prompts/test_ngram_overlap_example_selector.py rename to libs/langchain/tests/integration_tests/prompts/test_ngram_overlap_example_selector.py diff --git a/tests/integration_tests/retrievers/__init__.py b/libs/langchain/tests/integration_tests/retrievers/__init__.py similarity index 100% rename from tests/integration_tests/retrievers/__init__.py rename to libs/langchain/tests/integration_tests/retrievers/__init__.py diff --git a/tests/integration_tests/retrievers/docarray/__init__.py b/libs/langchain/tests/integration_tests/retrievers/docarray/__init__.py similarity index 100% rename from tests/integration_tests/retrievers/docarray/__init__.py rename to libs/langchain/tests/integration_tests/retrievers/docarray/__init__.py diff --git a/tests/integration_tests/retrievers/docarray/fixtures.py b/libs/langchain/tests/integration_tests/retrievers/docarray/fixtures.py similarity index 100% rename from tests/integration_tests/retrievers/docarray/fixtures.py rename to libs/langchain/tests/integration_tests/retrievers/docarray/fixtures.py diff --git a/tests/integration_tests/retrievers/docarray/test_backends.py b/libs/langchain/tests/integration_tests/retrievers/docarray/test_backends.py similarity index 100% rename from tests/integration_tests/retrievers/docarray/test_backends.py rename to libs/langchain/tests/integration_tests/retrievers/docarray/test_backends.py diff --git a/tests/integration_tests/retrievers/document_compressors/__init__.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/__init__.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/__init__.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/__init__.py diff --git a/tests/integration_tests/retrievers/document_compressors/test_base.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/test_base.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/test_base.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/test_base.py diff --git a/tests/integration_tests/retrievers/document_compressors/test_chain_extract.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/test_chain_extract.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/test_chain_extract.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/test_chain_extract.py diff --git a/tests/integration_tests/retrievers/document_compressors/test_chain_filter.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/test_chain_filter.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/test_chain_filter.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/test_chain_filter.py diff --git a/tests/integration_tests/retrievers/document_compressors/test_cohere_reranker.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/test_cohere_reranker.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/test_cohere_reranker.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/test_cohere_reranker.py diff --git a/tests/integration_tests/retrievers/document_compressors/test_embeddings_filter.py b/libs/langchain/tests/integration_tests/retrievers/document_compressors/test_embeddings_filter.py similarity index 100% rename from tests/integration_tests/retrievers/document_compressors/test_embeddings_filter.py rename to libs/langchain/tests/integration_tests/retrievers/document_compressors/test_embeddings_filter.py diff --git a/tests/integration_tests/retrievers/test_arxiv.py b/libs/langchain/tests/integration_tests/retrievers/test_arxiv.py similarity index 100% rename from tests/integration_tests/retrievers/test_arxiv.py rename to libs/langchain/tests/integration_tests/retrievers/test_arxiv.py diff --git a/tests/integration_tests/retrievers/test_azure_cognitive_search.py b/libs/langchain/tests/integration_tests/retrievers/test_azure_cognitive_search.py similarity index 100% rename from tests/integration_tests/retrievers/test_azure_cognitive_search.py rename to libs/langchain/tests/integration_tests/retrievers/test_azure_cognitive_search.py diff --git a/tests/integration_tests/retrievers/test_contextual_compression.py b/libs/langchain/tests/integration_tests/retrievers/test_contextual_compression.py similarity index 100% rename from tests/integration_tests/retrievers/test_contextual_compression.py rename to libs/langchain/tests/integration_tests/retrievers/test_contextual_compression.py diff --git a/tests/integration_tests/retrievers/test_google_cloud_enterprise_search.py b/libs/langchain/tests/integration_tests/retrievers/test_google_cloud_enterprise_search.py similarity index 100% rename from tests/integration_tests/retrievers/test_google_cloud_enterprise_search.py rename to libs/langchain/tests/integration_tests/retrievers/test_google_cloud_enterprise_search.py diff --git a/tests/integration_tests/retrievers/test_merger_retriever.py b/libs/langchain/tests/integration_tests/retrievers/test_merger_retriever.py similarity index 100% rename from tests/integration_tests/retrievers/test_merger_retriever.py rename to libs/langchain/tests/integration_tests/retrievers/test_merger_retriever.py diff --git a/tests/integration_tests/retrievers/test_pupmed.py b/libs/langchain/tests/integration_tests/retrievers/test_pupmed.py similarity index 100% rename from tests/integration_tests/retrievers/test_pupmed.py rename to libs/langchain/tests/integration_tests/retrievers/test_pupmed.py diff --git a/tests/integration_tests/retrievers/test_weaviate_hybrid_search.py b/libs/langchain/tests/integration_tests/retrievers/test_weaviate_hybrid_search.py similarity index 100% rename from tests/integration_tests/retrievers/test_weaviate_hybrid_search.py rename to libs/langchain/tests/integration_tests/retrievers/test_weaviate_hybrid_search.py diff --git a/tests/integration_tests/retrievers/test_wikipedia.py b/libs/langchain/tests/integration_tests/retrievers/test_wikipedia.py similarity index 100% rename from tests/integration_tests/retrievers/test_wikipedia.py rename to libs/langchain/tests/integration_tests/retrievers/test_wikipedia.py diff --git a/tests/integration_tests/smith/evaluation/test_runner_utils.py b/libs/langchain/tests/integration_tests/smith/evaluation/test_runner_utils.py similarity index 100% rename from tests/integration_tests/smith/evaluation/test_runner_utils.py rename to libs/langchain/tests/integration_tests/smith/evaluation/test_runner_utils.py diff --git a/tests/integration_tests/test_document_transformers.py b/libs/langchain/tests/integration_tests/test_document_transformers.py similarity index 100% rename from tests/integration_tests/test_document_transformers.py rename to libs/langchain/tests/integration_tests/test_document_transformers.py diff --git a/tests/integration_tests/test_kuzu.py b/libs/langchain/tests/integration_tests/test_kuzu.py similarity index 100% rename from tests/integration_tests/test_kuzu.py rename to libs/langchain/tests/integration_tests/test_kuzu.py diff --git a/tests/integration_tests/test_long_context_reorder.py b/libs/langchain/tests/integration_tests/test_long_context_reorder.py similarity index 100% rename from tests/integration_tests/test_long_context_reorder.py rename to libs/langchain/tests/integration_tests/test_long_context_reorder.py diff --git a/tests/integration_tests/test_nebulagraph.py b/libs/langchain/tests/integration_tests/test_nebulagraph.py similarity index 100% rename from tests/integration_tests/test_nebulagraph.py rename to libs/langchain/tests/integration_tests/test_nebulagraph.py diff --git a/tests/integration_tests/test_nlp_text_splitters.py b/libs/langchain/tests/integration_tests/test_nlp_text_splitters.py similarity index 100% rename from tests/integration_tests/test_nlp_text_splitters.py rename to libs/langchain/tests/integration_tests/test_nlp_text_splitters.py diff --git a/tests/integration_tests/test_pdf_pagesplitter.py b/libs/langchain/tests/integration_tests/test_pdf_pagesplitter.py similarity index 97% rename from tests/integration_tests/test_pdf_pagesplitter.py rename to libs/langchain/tests/integration_tests/test_pdf_pagesplitter.py index e2086d89f7..f86c2f166a 100644 --- a/tests/integration_tests/test_pdf_pagesplitter.py +++ b/libs/langchain/tests/integration_tests/test_pdf_pagesplitter.py @@ -1,19 +1,19 @@ -"""Test splitting with page numbers included.""" -import os - -from langchain.document_loaders import PyPDFLoader -from langchain.embeddings.openai import OpenAIEmbeddings -from langchain.vectorstores import FAISS - - -def test_pdf_pagesplitter() -> None: - """Test splitting with page numbers included.""" - script_dir = os.path.dirname(__file__) - loader = PyPDFLoader(os.path.join(script_dir, "examples/hello.pdf")) - docs = loader.load() - assert "page" in docs[0].metadata - assert "source" in docs[0].metadata - - faiss_index = FAISS.from_documents(docs, OpenAIEmbeddings()) - docs = faiss_index.similarity_search("Complete this sentence: Hello", k=1) - assert "Hello world" in docs[0].page_content +"""Test splitting with page numbers included.""" +import os + +from langchain.document_loaders import PyPDFLoader +from langchain.embeddings.openai import OpenAIEmbeddings +from langchain.vectorstores import FAISS + + +def test_pdf_pagesplitter() -> None: + """Test splitting with page numbers included.""" + script_dir = os.path.dirname(__file__) + loader = PyPDFLoader(os.path.join(script_dir, "examples/hello.pdf")) + docs = loader.load() + assert "page" in docs[0].metadata + assert "source" in docs[0].metadata + + faiss_index = FAISS.from_documents(docs, OpenAIEmbeddings()) + docs = faiss_index.similarity_search("Complete this sentence: Hello", k=1) + assert "Hello world" in docs[0].page_content diff --git a/tests/integration_tests/test_schema.py b/libs/langchain/tests/integration_tests/test_schema.py similarity index 100% rename from tests/integration_tests/test_schema.py rename to libs/langchain/tests/integration_tests/test_schema.py diff --git a/tests/integration_tests/test_text_splitter.py b/libs/langchain/tests/integration_tests/test_text_splitter.py similarity index 100% rename from tests/integration_tests/test_text_splitter.py rename to libs/langchain/tests/integration_tests/test_text_splitter.py diff --git a/tests/integration_tests/utilities/__init__.py b/libs/langchain/tests/integration_tests/utilities/__init__.py similarity index 100% rename from tests/integration_tests/utilities/__init__.py rename to libs/langchain/tests/integration_tests/utilities/__init__.py diff --git a/tests/integration_tests/utilities/test_arxiv.py b/libs/langchain/tests/integration_tests/utilities/test_arxiv.py similarity index 100% rename from tests/integration_tests/utilities/test_arxiv.py rename to libs/langchain/tests/integration_tests/utilities/test_arxiv.py diff --git a/tests/integration_tests/utilities/test_dataforseo_api.py b/libs/langchain/tests/integration_tests/utilities/test_dataforseo_api.py similarity index 100% rename from tests/integration_tests/utilities/test_dataforseo_api.py rename to libs/langchain/tests/integration_tests/utilities/test_dataforseo_api.py diff --git a/tests/integration_tests/utilities/test_duckduckdgo_search_api.py b/libs/langchain/tests/integration_tests/utilities/test_duckduckdgo_search_api.py similarity index 100% rename from tests/integration_tests/utilities/test_duckduckdgo_search_api.py rename to libs/langchain/tests/integration_tests/utilities/test_duckduckdgo_search_api.py diff --git a/tests/integration_tests/utilities/test_golden_query_api.py b/libs/langchain/tests/integration_tests/utilities/test_golden_query_api.py similarity index 100% rename from tests/integration_tests/utilities/test_golden_query_api.py rename to libs/langchain/tests/integration_tests/utilities/test_golden_query_api.py diff --git a/tests/integration_tests/utilities/test_googlesearch_api.py b/libs/langchain/tests/integration_tests/utilities/test_googlesearch_api.py similarity index 100% rename from tests/integration_tests/utilities/test_googlesearch_api.py rename to libs/langchain/tests/integration_tests/utilities/test_googlesearch_api.py diff --git a/tests/integration_tests/utilities/test_googleserper_api.py b/libs/langchain/tests/integration_tests/utilities/test_googleserper_api.py similarity index 100% rename from tests/integration_tests/utilities/test_googleserper_api.py rename to libs/langchain/tests/integration_tests/utilities/test_googleserper_api.py diff --git a/tests/integration_tests/utilities/test_jira_api.py b/libs/langchain/tests/integration_tests/utilities/test_jira_api.py similarity index 100% rename from tests/integration_tests/utilities/test_jira_api.py rename to libs/langchain/tests/integration_tests/utilities/test_jira_api.py diff --git a/tests/integration_tests/utilities/test_openweathermap.py b/libs/langchain/tests/integration_tests/utilities/test_openweathermap.py similarity index 97% rename from tests/integration_tests/utilities/test_openweathermap.py rename to libs/langchain/tests/integration_tests/utilities/test_openweathermap.py index 8bbf476d12..df25c67ebb 100644 --- a/tests/integration_tests/utilities/test_openweathermap.py +++ b/libs/langchain/tests/integration_tests/utilities/test_openweathermap.py @@ -1,24 +1,24 @@ -from langchain.utilities.openweathermap import OpenWeatherMapAPIWrapper - - -def test_openweathermap_api_wrapper() -> None: - """Test that OpenWeatherMapAPIWrapper returns correct data for London, GB.""" - - weather = OpenWeatherMapAPIWrapper() - weather_data = weather.run("London,GB") - - assert weather_data is not None - assert "London" in weather_data - assert "GB" in weather_data - assert "Detailed status:" in weather_data - assert "Wind speed:" in weather_data - assert "direction:" in weather_data - assert "Humidity:" in weather_data - assert "Temperature:" in weather_data - assert "Current:" in weather_data - assert "High:" in weather_data - assert "Low:" in weather_data - assert "Feels like:" in weather_data - assert "Rain:" in weather_data - assert "Heat index:" in weather_data - assert "Cloud cover:" in weather_data +from langchain.utilities.openweathermap import OpenWeatherMapAPIWrapper + + +def test_openweathermap_api_wrapper() -> None: + """Test that OpenWeatherMapAPIWrapper returns correct data for London, GB.""" + + weather = OpenWeatherMapAPIWrapper() + weather_data = weather.run("London,GB") + + assert weather_data is not None + assert "London" in weather_data + assert "GB" in weather_data + assert "Detailed status:" in weather_data + assert "Wind speed:" in weather_data + assert "direction:" in weather_data + assert "Humidity:" in weather_data + assert "Temperature:" in weather_data + assert "Current:" in weather_data + assert "High:" in weather_data + assert "Low:" in weather_data + assert "Feels like:" in weather_data + assert "Rain:" in weather_data + assert "Heat index:" in weather_data + assert "Cloud cover:" in weather_data diff --git a/tests/integration_tests/utilities/test_portkey.py b/libs/langchain/tests/integration_tests/utilities/test_portkey.py similarity index 100% rename from tests/integration_tests/utilities/test_portkey.py rename to libs/langchain/tests/integration_tests/utilities/test_portkey.py diff --git a/tests/integration_tests/utilities/test_powerbi_api.py b/libs/langchain/tests/integration_tests/utilities/test_powerbi_api.py similarity index 100% rename from tests/integration_tests/utilities/test_powerbi_api.py rename to libs/langchain/tests/integration_tests/utilities/test_powerbi_api.py diff --git a/tests/integration_tests/utilities/test_pupmed.py b/libs/langchain/tests/integration_tests/utilities/test_pupmed.py similarity index 100% rename from tests/integration_tests/utilities/test_pupmed.py rename to libs/langchain/tests/integration_tests/utilities/test_pupmed.py diff --git a/tests/integration_tests/utilities/test_serpapi.py b/libs/langchain/tests/integration_tests/utilities/test_serpapi.py similarity index 100% rename from tests/integration_tests/utilities/test_serpapi.py rename to libs/langchain/tests/integration_tests/utilities/test_serpapi.py diff --git a/tests/integration_tests/utilities/test_twilio.py b/libs/langchain/tests/integration_tests/utilities/test_twilio.py similarity index 100% rename from tests/integration_tests/utilities/test_twilio.py rename to libs/langchain/tests/integration_tests/utilities/test_twilio.py diff --git a/tests/integration_tests/utilities/test_wikipedia_api.py b/libs/langchain/tests/integration_tests/utilities/test_wikipedia_api.py similarity index 100% rename from tests/integration_tests/utilities/test_wikipedia_api.py rename to libs/langchain/tests/integration_tests/utilities/test_wikipedia_api.py diff --git a/tests/integration_tests/utilities/test_wolfram_alpha_api.py b/libs/langchain/tests/integration_tests/utilities/test_wolfram_alpha_api.py similarity index 100% rename from tests/integration_tests/utilities/test_wolfram_alpha_api.py rename to libs/langchain/tests/integration_tests/utilities/test_wolfram_alpha_api.py diff --git a/tests/integration_tests/vectorstores/__init__.py b/libs/langchain/tests/integration_tests/vectorstores/__init__.py similarity index 100% rename from tests/integration_tests/vectorstores/__init__.py rename to libs/langchain/tests/integration_tests/vectorstores/__init__.py diff --git a/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_add_documents.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_add_documents.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_add_documents.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_add_documents.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_from_documents.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_from_documents.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_from_documents.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_custom_index_from_documents.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_default_index_from_documents.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_default_index_from_documents.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_default_index_from_documents.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_elasticsearch/TestElasticsearch.test_default_index_from_documents.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_metadatas.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_metadatas.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_metadatas.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_metadatas.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_scores.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_scores.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_scores.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_pinecone/TestPinecone.test_from_texts_with_scores.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_by_vector.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_by_vector.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_by_vector.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_by_vector.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_with_filter.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_with_filter.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_with_filter.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search_with_filter.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata_and_filter.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata_and_filter.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata_and_filter.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata_and_filter.yaml diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml b/libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml similarity index 100% rename from tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml rename to libs/langchain/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml diff --git a/tests/integration_tests/vectorstores/conftest.py b/libs/langchain/tests/integration_tests/vectorstores/conftest.py similarity index 100% rename from tests/integration_tests/vectorstores/conftest.py rename to libs/langchain/tests/integration_tests/vectorstores/conftest.py diff --git a/tests/integration_tests/vectorstores/docarray/__init__.py b/libs/langchain/tests/integration_tests/vectorstores/docarray/__init__.py similarity index 100% rename from tests/integration_tests/vectorstores/docarray/__init__.py rename to libs/langchain/tests/integration_tests/vectorstores/docarray/__init__.py diff --git a/tests/integration_tests/vectorstores/docarray/test_hnsw.py b/libs/langchain/tests/integration_tests/vectorstores/docarray/test_hnsw.py similarity index 100% rename from tests/integration_tests/vectorstores/docarray/test_hnsw.py rename to libs/langchain/tests/integration_tests/vectorstores/docarray/test_hnsw.py diff --git a/tests/integration_tests/vectorstores/docarray/test_in_memory.py b/libs/langchain/tests/integration_tests/vectorstores/docarray/test_in_memory.py similarity index 100% rename from tests/integration_tests/vectorstores/docarray/test_in_memory.py rename to libs/langchain/tests/integration_tests/vectorstores/docarray/test_in_memory.py diff --git a/tests/integration_tests/vectorstores/docker-compose/elasticsearch.yml b/libs/langchain/tests/integration_tests/vectorstores/docker-compose/elasticsearch.yml similarity index 100% rename from tests/integration_tests/vectorstores/docker-compose/elasticsearch.yml rename to libs/langchain/tests/integration_tests/vectorstores/docker-compose/elasticsearch.yml diff --git a/tests/integration_tests/vectorstores/docker-compose/weaviate.yml b/libs/langchain/tests/integration_tests/vectorstores/docker-compose/weaviate.yml similarity index 100% rename from tests/integration_tests/vectorstores/docker-compose/weaviate.yml rename to libs/langchain/tests/integration_tests/vectorstores/docker-compose/weaviate.yml diff --git a/tests/integration_tests/vectorstores/fake_embeddings.py b/libs/langchain/tests/integration_tests/vectorstores/fake_embeddings.py similarity index 100% rename from tests/integration_tests/vectorstores/fake_embeddings.py rename to libs/langchain/tests/integration_tests/vectorstores/fake_embeddings.py diff --git a/tests/integration_tests/vectorstores/fixtures/sharks.txt b/libs/langchain/tests/integration_tests/vectorstores/fixtures/sharks.txt similarity index 100% rename from tests/integration_tests/vectorstores/fixtures/sharks.txt rename to libs/langchain/tests/integration_tests/vectorstores/fixtures/sharks.txt diff --git a/tests/integration_tests/vectorstores/qdrant/__init__.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/__init__.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/__init__.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/__init__.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/__init__.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/__init__.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/__init__.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/__init__.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/fixtures.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/fixtures.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/fixtures.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/fixtures.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/test_add_texts.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_add_texts.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/test_add_texts.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_add_texts.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/test_from_texts.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_from_texts.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/test_from_texts.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_from_texts.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/test_max_marginal_relevance.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_max_marginal_relevance.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/test_max_marginal_relevance.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_max_marginal_relevance.py diff --git a/tests/integration_tests/vectorstores/qdrant/async_api/test_similarity_search.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_similarity_search.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/async_api/test_similarity_search.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/async_api/test_similarity_search.py diff --git a/tests/integration_tests/vectorstores/qdrant/common.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/common.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/common.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/common.py diff --git a/tests/integration_tests/vectorstores/qdrant/fixtures.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/fixtures.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/fixtures.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/fixtures.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_add_texts.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_add_texts.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_add_texts.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_add_texts.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_delete.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_delete.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_delete.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_delete.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_embedding_interface.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_embedding_interface.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_embedding_interface.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_embedding_interface.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_from_texts.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_from_texts.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_from_texts.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_from_texts.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_max_marginal_relevance.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_max_marginal_relevance.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_max_marginal_relevance.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_max_marginal_relevance.py diff --git a/tests/integration_tests/vectorstores/qdrant/test_similarity_search.py b/libs/langchain/tests/integration_tests/vectorstores/qdrant/test_similarity_search.py similarity index 100% rename from tests/integration_tests/vectorstores/qdrant/test_similarity_search.py rename to libs/langchain/tests/integration_tests/vectorstores/qdrant/test_similarity_search.py diff --git a/tests/integration_tests/vectorstores/test_alibabacloud_opensearch.py b/libs/langchain/tests/integration_tests/vectorstores/test_alibabacloud_opensearch.py similarity index 100% rename from tests/integration_tests/vectorstores/test_alibabacloud_opensearch.py rename to libs/langchain/tests/integration_tests/vectorstores/test_alibabacloud_opensearch.py diff --git a/tests/integration_tests/vectorstores/test_analyticdb.py b/libs/langchain/tests/integration_tests/vectorstores/test_analyticdb.py similarity index 100% rename from tests/integration_tests/vectorstores/test_analyticdb.py rename to libs/langchain/tests/integration_tests/vectorstores/test_analyticdb.py diff --git a/tests/integration_tests/vectorstores/test_annoy.py b/libs/langchain/tests/integration_tests/vectorstores/test_annoy.py similarity index 100% rename from tests/integration_tests/vectorstores/test_annoy.py rename to libs/langchain/tests/integration_tests/vectorstores/test_annoy.py diff --git a/tests/integration_tests/vectorstores/test_atlas.py b/libs/langchain/tests/integration_tests/vectorstores/test_atlas.py similarity index 100% rename from tests/integration_tests/vectorstores/test_atlas.py rename to libs/langchain/tests/integration_tests/vectorstores/test_atlas.py diff --git a/tests/integration_tests/vectorstores/test_awadb.py b/libs/langchain/tests/integration_tests/vectorstores/test_awadb.py similarity index 100% rename from tests/integration_tests/vectorstores/test_awadb.py rename to libs/langchain/tests/integration_tests/vectorstores/test_awadb.py diff --git a/tests/integration_tests/vectorstores/test_azuresearch.py b/libs/langchain/tests/integration_tests/vectorstores/test_azuresearch.py similarity index 100% rename from tests/integration_tests/vectorstores/test_azuresearch.py rename to libs/langchain/tests/integration_tests/vectorstores/test_azuresearch.py diff --git a/tests/integration_tests/vectorstores/test_cassandra.py b/libs/langchain/tests/integration_tests/vectorstores/test_cassandra.py similarity index 100% rename from tests/integration_tests/vectorstores/test_cassandra.py rename to libs/langchain/tests/integration_tests/vectorstores/test_cassandra.py diff --git a/tests/integration_tests/vectorstores/test_chroma.py b/libs/langchain/tests/integration_tests/vectorstores/test_chroma.py similarity index 100% rename from tests/integration_tests/vectorstores/test_chroma.py rename to libs/langchain/tests/integration_tests/vectorstores/test_chroma.py diff --git a/tests/integration_tests/vectorstores/test_clarifai.py b/libs/langchain/tests/integration_tests/vectorstores/test_clarifai.py similarity index 100% rename from tests/integration_tests/vectorstores/test_clarifai.py rename to libs/langchain/tests/integration_tests/vectorstores/test_clarifai.py diff --git a/tests/integration_tests/vectorstores/test_clickhouse.py b/libs/langchain/tests/integration_tests/vectorstores/test_clickhouse.py similarity index 100% rename from tests/integration_tests/vectorstores/test_clickhouse.py rename to libs/langchain/tests/integration_tests/vectorstores/test_clickhouse.py diff --git a/tests/integration_tests/vectorstores/test_deeplake.py b/libs/langchain/tests/integration_tests/vectorstores/test_deeplake.py similarity index 100% rename from tests/integration_tests/vectorstores/test_deeplake.py rename to libs/langchain/tests/integration_tests/vectorstores/test_deeplake.py diff --git a/tests/integration_tests/vectorstores/test_elasticsearch.py b/libs/langchain/tests/integration_tests/vectorstores/test_elasticsearch.py similarity index 100% rename from tests/integration_tests/vectorstores/test_elasticsearch.py rename to libs/langchain/tests/integration_tests/vectorstores/test_elasticsearch.py diff --git a/tests/integration_tests/vectorstores/test_faiss.py b/libs/langchain/tests/integration_tests/vectorstores/test_faiss.py similarity index 100% rename from tests/integration_tests/vectorstores/test_faiss.py rename to libs/langchain/tests/integration_tests/vectorstores/test_faiss.py diff --git a/tests/integration_tests/vectorstores/test_hologres.py b/libs/langchain/tests/integration_tests/vectorstores/test_hologres.py similarity index 100% rename from tests/integration_tests/vectorstores/test_hologres.py rename to libs/langchain/tests/integration_tests/vectorstores/test_hologres.py diff --git a/tests/integration_tests/vectorstores/test_lancedb.py b/libs/langchain/tests/integration_tests/vectorstores/test_lancedb.py similarity index 100% rename from tests/integration_tests/vectorstores/test_lancedb.py rename to libs/langchain/tests/integration_tests/vectorstores/test_lancedb.py diff --git a/tests/integration_tests/vectorstores/test_marqo.py b/libs/langchain/tests/integration_tests/vectorstores/test_marqo.py similarity index 100% rename from tests/integration_tests/vectorstores/test_marqo.py rename to libs/langchain/tests/integration_tests/vectorstores/test_marqo.py diff --git a/tests/integration_tests/vectorstores/test_milvus.py b/libs/langchain/tests/integration_tests/vectorstores/test_milvus.py similarity index 100% rename from tests/integration_tests/vectorstores/test_milvus.py rename to libs/langchain/tests/integration_tests/vectorstores/test_milvus.py diff --git a/tests/integration_tests/vectorstores/test_mongodb_atlas.py b/libs/langchain/tests/integration_tests/vectorstores/test_mongodb_atlas.py similarity index 100% rename from tests/integration_tests/vectorstores/test_mongodb_atlas.py rename to libs/langchain/tests/integration_tests/vectorstores/test_mongodb_atlas.py diff --git a/tests/integration_tests/vectorstores/test_myscale.py b/libs/langchain/tests/integration_tests/vectorstores/test_myscale.py similarity index 100% rename from tests/integration_tests/vectorstores/test_myscale.py rename to libs/langchain/tests/integration_tests/vectorstores/test_myscale.py diff --git a/tests/integration_tests/vectorstores/test_opensearch.py b/libs/langchain/tests/integration_tests/vectorstores/test_opensearch.py similarity index 100% rename from tests/integration_tests/vectorstores/test_opensearch.py rename to libs/langchain/tests/integration_tests/vectorstores/test_opensearch.py diff --git a/tests/integration_tests/vectorstores/test_pgvector.py b/libs/langchain/tests/integration_tests/vectorstores/test_pgvector.py similarity index 100% rename from tests/integration_tests/vectorstores/test_pgvector.py rename to libs/langchain/tests/integration_tests/vectorstores/test_pgvector.py diff --git a/tests/integration_tests/vectorstores/test_pinecone.py b/libs/langchain/tests/integration_tests/vectorstores/test_pinecone.py similarity index 100% rename from tests/integration_tests/vectorstores/test_pinecone.py rename to libs/langchain/tests/integration_tests/vectorstores/test_pinecone.py diff --git a/tests/integration_tests/vectorstores/test_redis.py b/libs/langchain/tests/integration_tests/vectorstores/test_redis.py similarity index 100% rename from tests/integration_tests/vectorstores/test_redis.py rename to libs/langchain/tests/integration_tests/vectorstores/test_redis.py diff --git a/tests/integration_tests/vectorstores/test_rocksetdb.py b/libs/langchain/tests/integration_tests/vectorstores/test_rocksetdb.py similarity index 100% rename from tests/integration_tests/vectorstores/test_rocksetdb.py rename to libs/langchain/tests/integration_tests/vectorstores/test_rocksetdb.py diff --git a/tests/integration_tests/vectorstores/test_singlestoredb.py b/libs/langchain/tests/integration_tests/vectorstores/test_singlestoredb.py similarity index 100% rename from tests/integration_tests/vectorstores/test_singlestoredb.py rename to libs/langchain/tests/integration_tests/vectorstores/test_singlestoredb.py diff --git a/tests/integration_tests/vectorstores/test_tair.py b/libs/langchain/tests/integration_tests/vectorstores/test_tair.py similarity index 100% rename from tests/integration_tests/vectorstores/test_tair.py rename to libs/langchain/tests/integration_tests/vectorstores/test_tair.py diff --git a/tests/integration_tests/vectorstores/test_vectara.py b/libs/langchain/tests/integration_tests/vectorstores/test_vectara.py similarity index 100% rename from tests/integration_tests/vectorstores/test_vectara.py rename to libs/langchain/tests/integration_tests/vectorstores/test_vectara.py diff --git a/tests/integration_tests/vectorstores/test_weaviate.py b/libs/langchain/tests/integration_tests/vectorstores/test_weaviate.py similarity index 100% rename from tests/integration_tests/vectorstores/test_weaviate.py rename to libs/langchain/tests/integration_tests/vectorstores/test_weaviate.py diff --git a/tests/integration_tests/vectorstores/test_zilliz.py b/libs/langchain/tests/integration_tests/vectorstores/test_zilliz.py similarity index 100% rename from tests/integration_tests/vectorstores/test_zilliz.py rename to libs/langchain/tests/integration_tests/vectorstores/test_zilliz.py diff --git a/tests/mock_servers/__init__.py b/libs/langchain/tests/mock_servers/__init__.py similarity index 100% rename from tests/mock_servers/__init__.py rename to libs/langchain/tests/mock_servers/__init__.py diff --git a/tests/mock_servers/robot/__init__.py b/libs/langchain/tests/mock_servers/robot/__init__.py similarity index 100% rename from tests/mock_servers/robot/__init__.py rename to libs/langchain/tests/mock_servers/robot/__init__.py diff --git a/tests/mock_servers/robot/server.py b/libs/langchain/tests/mock_servers/robot/server.py similarity index 100% rename from tests/mock_servers/robot/server.py rename to libs/langchain/tests/mock_servers/robot/server.py diff --git a/tests/unit_tests/__init__.py b/libs/langchain/tests/unit_tests/__init__.py similarity index 100% rename from tests/unit_tests/__init__.py rename to libs/langchain/tests/unit_tests/__init__.py diff --git a/tests/unit_tests/agents/__init__.py b/libs/langchain/tests/unit_tests/agents/__init__.py similarity index 100% rename from tests/unit_tests/agents/__init__.py rename to libs/langchain/tests/unit_tests/agents/__init__.py diff --git a/tests/unit_tests/agents/test_agent.py b/libs/langchain/tests/unit_tests/agents/test_agent.py similarity index 100% rename from tests/unit_tests/agents/test_agent.py rename to libs/langchain/tests/unit_tests/agents/test_agent.py diff --git a/tests/unit_tests/agents/test_chat.py b/libs/langchain/tests/unit_tests/agents/test_chat.py similarity index 100% rename from tests/unit_tests/agents/test_chat.py rename to libs/langchain/tests/unit_tests/agents/test_chat.py diff --git a/tests/unit_tests/agents/test_initialize.py b/libs/langchain/tests/unit_tests/agents/test_initialize.py similarity index 100% rename from tests/unit_tests/agents/test_initialize.py rename to libs/langchain/tests/unit_tests/agents/test_initialize.py diff --git a/tests/unit_tests/agents/test_mrkl.py b/libs/langchain/tests/unit_tests/agents/test_mrkl.py similarity index 100% rename from tests/unit_tests/agents/test_mrkl.py rename to libs/langchain/tests/unit_tests/agents/test_mrkl.py diff --git a/tests/unit_tests/agents/test_public_api.py b/libs/langchain/tests/unit_tests/agents/test_public_api.py similarity index 100% rename from tests/unit_tests/agents/test_public_api.py rename to libs/langchain/tests/unit_tests/agents/test_public_api.py diff --git a/tests/unit_tests/agents/test_react.py b/libs/langchain/tests/unit_tests/agents/test_react.py similarity index 100% rename from tests/unit_tests/agents/test_react.py rename to libs/langchain/tests/unit_tests/agents/test_react.py diff --git a/tests/unit_tests/agents/test_serialization.py b/libs/langchain/tests/unit_tests/agents/test_serialization.py similarity index 100% rename from tests/unit_tests/agents/test_serialization.py rename to libs/langchain/tests/unit_tests/agents/test_serialization.py diff --git a/tests/unit_tests/agents/test_sql.py b/libs/langchain/tests/unit_tests/agents/test_sql.py similarity index 100% rename from tests/unit_tests/agents/test_sql.py rename to libs/langchain/tests/unit_tests/agents/test_sql.py diff --git a/tests/unit_tests/agents/test_tools.py b/libs/langchain/tests/unit_tests/agents/test_tools.py similarity index 100% rename from tests/unit_tests/agents/test_tools.py rename to libs/langchain/tests/unit_tests/agents/test_tools.py diff --git a/tests/unit_tests/agents/test_types.py b/libs/langchain/tests/unit_tests/agents/test_types.py similarity index 100% rename from tests/unit_tests/agents/test_types.py rename to libs/langchain/tests/unit_tests/agents/test_types.py diff --git a/tests/unit_tests/callbacks/__init__.py b/libs/langchain/tests/unit_tests/callbacks/__init__.py similarity index 100% rename from tests/unit_tests/callbacks/__init__.py rename to libs/langchain/tests/unit_tests/callbacks/__init__.py diff --git a/tests/unit_tests/callbacks/fake_callback_handler.py b/libs/langchain/tests/unit_tests/callbacks/fake_callback_handler.py similarity index 100% rename from tests/unit_tests/callbacks/fake_callback_handler.py rename to libs/langchain/tests/unit_tests/callbacks/fake_callback_handler.py diff --git a/tests/unit_tests/callbacks/test_callback_manager.py b/libs/langchain/tests/unit_tests/callbacks/test_callback_manager.py similarity index 100% rename from tests/unit_tests/callbacks/test_callback_manager.py rename to libs/langchain/tests/unit_tests/callbacks/test_callback_manager.py diff --git a/tests/unit_tests/callbacks/test_openai_info.py b/libs/langchain/tests/unit_tests/callbacks/test_openai_info.py similarity index 100% rename from tests/unit_tests/callbacks/test_openai_info.py rename to libs/langchain/tests/unit_tests/callbacks/test_openai_info.py diff --git a/tests/unit_tests/callbacks/test_schemas.py b/libs/langchain/tests/unit_tests/callbacks/test_schemas.py similarity index 100% rename from tests/unit_tests/callbacks/test_schemas.py rename to libs/langchain/tests/unit_tests/callbacks/test_schemas.py diff --git a/tests/unit_tests/callbacks/test_streamlit_callback.py b/libs/langchain/tests/unit_tests/callbacks/test_streamlit_callback.py similarity index 100% rename from tests/unit_tests/callbacks/test_streamlit_callback.py rename to libs/langchain/tests/unit_tests/callbacks/test_streamlit_callback.py diff --git a/tests/unit_tests/callbacks/tracers/__init__.py b/libs/langchain/tests/unit_tests/callbacks/tracers/__init__.py similarity index 100% rename from tests/unit_tests/callbacks/tracers/__init__.py rename to libs/langchain/tests/unit_tests/callbacks/tracers/__init__.py diff --git a/tests/unit_tests/callbacks/tracers/test_base_tracer.py b/libs/langchain/tests/unit_tests/callbacks/tracers/test_base_tracer.py similarity index 100% rename from tests/unit_tests/callbacks/tracers/test_base_tracer.py rename to libs/langchain/tests/unit_tests/callbacks/tracers/test_base_tracer.py diff --git a/tests/unit_tests/callbacks/tracers/test_langchain.py b/libs/langchain/tests/unit_tests/callbacks/tracers/test_langchain.py similarity index 100% rename from tests/unit_tests/callbacks/tracers/test_langchain.py rename to libs/langchain/tests/unit_tests/callbacks/tracers/test_langchain.py diff --git a/tests/unit_tests/callbacks/tracers/test_langchain_v1.py b/libs/langchain/tests/unit_tests/callbacks/tracers/test_langchain_v1.py similarity index 100% rename from tests/unit_tests/callbacks/tracers/test_langchain_v1.py rename to libs/langchain/tests/unit_tests/callbacks/tracers/test_langchain_v1.py diff --git a/tests/unit_tests/chains/__init__.py b/libs/langchain/tests/unit_tests/chains/__init__.py similarity index 100% rename from tests/unit_tests/chains/__init__.py rename to libs/langchain/tests/unit_tests/chains/__init__.py diff --git a/tests/unit_tests/chains/query_constructor/__init__.py b/libs/langchain/tests/unit_tests/chains/query_constructor/__init__.py similarity index 100% rename from tests/unit_tests/chains/query_constructor/__init__.py rename to libs/langchain/tests/unit_tests/chains/query_constructor/__init__.py diff --git a/tests/unit_tests/chains/query_constructor/test_parser.py b/libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py similarity index 100% rename from tests/unit_tests/chains/query_constructor/test_parser.py rename to libs/langchain/tests/unit_tests/chains/query_constructor/test_parser.py diff --git a/tests/unit_tests/chains/question_answering/__init__.py b/libs/langchain/tests/unit_tests/chains/question_answering/__init__.py similarity index 100% rename from tests/unit_tests/chains/question_answering/__init__.py rename to libs/langchain/tests/unit_tests/chains/question_answering/__init__.py diff --git a/tests/unit_tests/chains/question_answering/test_map_rerank_prompt.py b/libs/langchain/tests/unit_tests/chains/question_answering/test_map_rerank_prompt.py similarity index 100% rename from tests/unit_tests/chains/question_answering/test_map_rerank_prompt.py rename to libs/langchain/tests/unit_tests/chains/question_answering/test_map_rerank_prompt.py diff --git a/tests/unit_tests/chains/test_api.py b/libs/langchain/tests/unit_tests/chains/test_api.py similarity index 100% rename from tests/unit_tests/chains/test_api.py rename to libs/langchain/tests/unit_tests/chains/test_api.py diff --git a/tests/unit_tests/chains/test_base.py b/libs/langchain/tests/unit_tests/chains/test_base.py similarity index 100% rename from tests/unit_tests/chains/test_base.py rename to libs/langchain/tests/unit_tests/chains/test_base.py diff --git a/tests/unit_tests/chains/test_combine_documents.py b/libs/langchain/tests/unit_tests/chains/test_combine_documents.py similarity index 100% rename from tests/unit_tests/chains/test_combine_documents.py rename to libs/langchain/tests/unit_tests/chains/test_combine_documents.py diff --git a/tests/unit_tests/chains/test_constitutional_ai.py b/libs/langchain/tests/unit_tests/chains/test_constitutional_ai.py similarity index 100% rename from tests/unit_tests/chains/test_constitutional_ai.py rename to libs/langchain/tests/unit_tests/chains/test_constitutional_ai.py diff --git a/tests/unit_tests/chains/test_conversation.py b/libs/langchain/tests/unit_tests/chains/test_conversation.py similarity index 100% rename from tests/unit_tests/chains/test_conversation.py rename to libs/langchain/tests/unit_tests/chains/test_conversation.py diff --git a/tests/unit_tests/chains/test_graph_qa.py b/libs/langchain/tests/unit_tests/chains/test_graph_qa.py similarity index 100% rename from tests/unit_tests/chains/test_graph_qa.py rename to libs/langchain/tests/unit_tests/chains/test_graph_qa.py diff --git a/tests/unit_tests/chains/test_hyde.py b/libs/langchain/tests/unit_tests/chains/test_hyde.py similarity index 100% rename from tests/unit_tests/chains/test_hyde.py rename to libs/langchain/tests/unit_tests/chains/test_hyde.py diff --git a/tests/unit_tests/chains/test_llm.py b/libs/langchain/tests/unit_tests/chains/test_llm.py similarity index 100% rename from tests/unit_tests/chains/test_llm.py rename to libs/langchain/tests/unit_tests/chains/test_llm.py diff --git a/tests/unit_tests/chains/test_llm_bash.py b/libs/langchain/tests/unit_tests/chains/test_llm_bash.py similarity index 100% rename from tests/unit_tests/chains/test_llm_bash.py rename to libs/langchain/tests/unit_tests/chains/test_llm_bash.py diff --git a/tests/unit_tests/chains/test_llm_checker.py b/libs/langchain/tests/unit_tests/chains/test_llm_checker.py similarity index 100% rename from tests/unit_tests/chains/test_llm_checker.py rename to libs/langchain/tests/unit_tests/chains/test_llm_checker.py diff --git a/tests/unit_tests/chains/test_llm_math.py b/libs/langchain/tests/unit_tests/chains/test_llm_math.py similarity index 100% rename from tests/unit_tests/chains/test_llm_math.py rename to libs/langchain/tests/unit_tests/chains/test_llm_math.py diff --git a/tests/unit_tests/chains/test_llm_summarization_checker.py b/libs/langchain/tests/unit_tests/chains/test_llm_summarization_checker.py similarity index 100% rename from tests/unit_tests/chains/test_llm_summarization_checker.py rename to libs/langchain/tests/unit_tests/chains/test_llm_summarization_checker.py diff --git a/tests/unit_tests/chains/test_llm_symbolic_math.py b/libs/langchain/tests/unit_tests/chains/test_llm_symbolic_math.py similarity index 100% rename from tests/unit_tests/chains/test_llm_symbolic_math.py rename to libs/langchain/tests/unit_tests/chains/test_llm_symbolic_math.py diff --git a/tests/unit_tests/chains/test_memory.py b/libs/langchain/tests/unit_tests/chains/test_memory.py similarity index 100% rename from tests/unit_tests/chains/test_memory.py rename to libs/langchain/tests/unit_tests/chains/test_memory.py diff --git a/tests/unit_tests/chains/test_natbot.py b/libs/langchain/tests/unit_tests/chains/test_natbot.py similarity index 100% rename from tests/unit_tests/chains/test_natbot.py rename to libs/langchain/tests/unit_tests/chains/test_natbot.py diff --git a/tests/unit_tests/chains/test_pal.py b/libs/langchain/tests/unit_tests/chains/test_pal.py similarity index 100% rename from tests/unit_tests/chains/test_pal.py rename to libs/langchain/tests/unit_tests/chains/test_pal.py diff --git a/tests/unit_tests/chains/test_sequential.py b/libs/langchain/tests/unit_tests/chains/test_sequential.py similarity index 100% rename from tests/unit_tests/chains/test_sequential.py rename to libs/langchain/tests/unit_tests/chains/test_sequential.py diff --git a/tests/unit_tests/chains/test_transform.py b/libs/langchain/tests/unit_tests/chains/test_transform.py similarity index 100% rename from tests/unit_tests/chains/test_transform.py rename to libs/langchain/tests/unit_tests/chains/test_transform.py diff --git a/tests/unit_tests/chat_models/__init__.py b/libs/langchain/tests/unit_tests/chat_models/__init__.py similarity index 100% rename from tests/unit_tests/chat_models/__init__.py rename to libs/langchain/tests/unit_tests/chat_models/__init__.py diff --git a/tests/unit_tests/chat_models/test_google_palm.py b/libs/langchain/tests/unit_tests/chat_models/test_google_palm.py similarity index 100% rename from tests/unit_tests/chat_models/test_google_palm.py rename to libs/langchain/tests/unit_tests/chat_models/test_google_palm.py diff --git a/tests/unit_tests/chat_models/test_openai.py b/libs/langchain/tests/unit_tests/chat_models/test_openai.py similarity index 100% rename from tests/unit_tests/chat_models/test_openai.py rename to libs/langchain/tests/unit_tests/chat_models/test_openai.py diff --git a/tests/unit_tests/conftest.py b/libs/langchain/tests/unit_tests/conftest.py similarity index 100% rename from tests/unit_tests/conftest.py rename to libs/langchain/tests/unit_tests/conftest.py diff --git a/tests/unit_tests/data/prompt_file.txt b/libs/langchain/tests/unit_tests/data/prompt_file.txt similarity index 100% rename from tests/unit_tests/data/prompt_file.txt rename to libs/langchain/tests/unit_tests/data/prompt_file.txt diff --git a/tests/unit_tests/data/prompts/prompt_extra_args.json b/libs/langchain/tests/unit_tests/data/prompts/prompt_extra_args.json similarity index 100% rename from tests/unit_tests/data/prompts/prompt_extra_args.json rename to libs/langchain/tests/unit_tests/data/prompts/prompt_extra_args.json diff --git a/tests/unit_tests/data/prompts/prompt_missing_args.json b/libs/langchain/tests/unit_tests/data/prompts/prompt_missing_args.json similarity index 100% rename from tests/unit_tests/data/prompts/prompt_missing_args.json rename to libs/langchain/tests/unit_tests/data/prompts/prompt_missing_args.json diff --git a/tests/unit_tests/data/prompts/simple_prompt.json b/libs/langchain/tests/unit_tests/data/prompts/simple_prompt.json similarity index 100% rename from tests/unit_tests/data/prompts/simple_prompt.json rename to libs/langchain/tests/unit_tests/data/prompts/simple_prompt.json diff --git a/tests/unit_tests/docstore/__init__.py b/libs/langchain/tests/unit_tests/docstore/__init__.py similarity index 100% rename from tests/unit_tests/docstore/__init__.py rename to libs/langchain/tests/unit_tests/docstore/__init__.py diff --git a/tests/unit_tests/docstore/test_arbitrary_fn.py b/libs/langchain/tests/unit_tests/docstore/test_arbitrary_fn.py similarity index 100% rename from tests/unit_tests/docstore/test_arbitrary_fn.py rename to libs/langchain/tests/unit_tests/docstore/test_arbitrary_fn.py diff --git a/tests/unit_tests/docstore/test_inmemory.py b/libs/langchain/tests/unit_tests/docstore/test_inmemory.py similarity index 100% rename from tests/unit_tests/docstore/test_inmemory.py rename to libs/langchain/tests/unit_tests/docstore/test_inmemory.py diff --git a/tests/unit_tests/document_loaders/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/__init__.py diff --git a/tests/unit_tests/document_loaders/blob_loaders/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/blob_loaders/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/blob_loaders/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/blob_loaders/__init__.py diff --git a/tests/unit_tests/document_loaders/blob_loaders/test_filesystem_blob_loader.py b/libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_filesystem_blob_loader.py similarity index 100% rename from tests/unit_tests/document_loaders/blob_loaders/test_filesystem_blob_loader.py rename to libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_filesystem_blob_loader.py diff --git a/tests/unit_tests/document_loaders/blob_loaders/test_public_api.py b/libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_public_api.py similarity index 100% rename from tests/unit_tests/document_loaders/blob_loaders/test_public_api.py rename to libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_public_api.py diff --git a/tests/unit_tests/document_loaders/blob_loaders/test_schema.py b/libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_schema.py similarity index 100% rename from tests/unit_tests/document_loaders/blob_loaders/test_schema.py rename to libs/langchain/tests/unit_tests/document_loaders/blob_loaders/test_schema.py diff --git a/tests/unit_tests/document_loaders/loaders/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/loaders/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/loaders/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/loaders/__init__.py diff --git a/tests/unit_tests/document_loaders/loaders/vendors/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/loaders/vendors/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/__init__.py diff --git a/tests/unit_tests/document_loaders/loaders/vendors/test_data/docugami-example.xml b/libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/test_data/docugami-example.xml similarity index 100% rename from tests/unit_tests/document_loaders/loaders/vendors/test_data/docugami-example.xml rename to libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/test_data/docugami-example.xml diff --git a/tests/unit_tests/document_loaders/loaders/vendors/test_docugami.py b/libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/test_docugami.py similarity index 100% rename from tests/unit_tests/document_loaders/loaders/vendors/test_docugami.py rename to libs/langchain/tests/unit_tests/document_loaders/loaders/vendors/test_docugami.py diff --git a/tests/unit_tests/document_loaders/parsers/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/__init__.py diff --git a/tests/unit_tests/document_loaders/parsers/language/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/language/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/language/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/language/__init__.py diff --git a/tests/unit_tests/document_loaders/parsers/language/test_javascript.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/language/test_javascript.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/language/test_javascript.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/language/test_javascript.py diff --git a/tests/unit_tests/document_loaders/parsers/language/test_python.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/language/test_python.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/language/test_python.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/language/test_python.py diff --git a/tests/unit_tests/document_loaders/parsers/test_generic.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/test_generic.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/test_generic.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/test_generic.py diff --git a/tests/unit_tests/document_loaders/parsers/test_html_parsers.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/test_html_parsers.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/test_html_parsers.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/test_html_parsers.py diff --git a/tests/unit_tests/document_loaders/parsers/test_pdf_parsers.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/test_pdf_parsers.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/test_pdf_parsers.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/test_pdf_parsers.py diff --git a/tests/unit_tests/document_loaders/parsers/test_public_api.py b/libs/langchain/tests/unit_tests/document_loaders/parsers/test_public_api.py similarity index 100% rename from tests/unit_tests/document_loaders/parsers/test_public_api.py rename to libs/langchain/tests/unit_tests/document_loaders/parsers/test_public_api.py diff --git a/tests/unit_tests/document_loaders/sample_documents/__init__.py b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/__init__.py similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/__init__.py rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/__init__.py diff --git a/tests/unit_tests/document_loaders/sample_documents/bibtex.bib b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/bibtex.bib similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/bibtex.bib rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/bibtex.bib diff --git a/tests/unit_tests/document_loaders/sample_documents/empty_export.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/empty_export.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/empty_export.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/empty_export.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/layout-parser-paper.pdf b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/layout-parser-paper.pdf similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/layout-parser-paper.pdf rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/layout-parser-paper.pdf diff --git a/tests/unit_tests/document_loaders/sample_documents/mwtest_current_pages.xml b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/mwtest_current_pages.xml similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/mwtest_current_pages.xml rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/mwtest_current_pages.xml diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook_2.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_2.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook_2.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_2.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook_emptynote.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_emptynote.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook_emptynote.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_emptynote.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingcontenttag.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingcontenttag.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingcontenttag.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingcontenttag.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingmetadata.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingmetadata.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingmetadata.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_missingmetadata.enex diff --git a/tests/unit_tests/document_loaders/sample_documents/sample_notebook_with_media.enex b/libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_with_media.enex similarity index 100% rename from tests/unit_tests/document_loaders/sample_documents/sample_notebook_with_media.enex rename to libs/langchain/tests/unit_tests/document_loaders/sample_documents/sample_notebook_with_media.enex diff --git a/tests/unit_tests/document_loaders/test_base.py b/libs/langchain/tests/unit_tests/document_loaders/test_base.py similarity index 100% rename from tests/unit_tests/document_loaders/test_base.py rename to libs/langchain/tests/unit_tests/document_loaders/test_base.py diff --git a/tests/unit_tests/document_loaders/test_bibtex.py b/libs/langchain/tests/unit_tests/document_loaders/test_bibtex.py similarity index 100% rename from tests/unit_tests/document_loaders/test_bibtex.py rename to libs/langchain/tests/unit_tests/document_loaders/test_bibtex.py diff --git a/tests/unit_tests/document_loaders/test_bshtml.py b/libs/langchain/tests/unit_tests/document_loaders/test_bshtml.py similarity index 100% rename from tests/unit_tests/document_loaders/test_bshtml.py rename to libs/langchain/tests/unit_tests/document_loaders/test_bshtml.py diff --git a/tests/unit_tests/document_loaders/test_confluence.py b/libs/langchain/tests/unit_tests/document_loaders/test_confluence.py similarity index 100% rename from tests/unit_tests/document_loaders/test_confluence.py rename to libs/langchain/tests/unit_tests/document_loaders/test_confluence.py diff --git a/tests/unit_tests/document_loaders/test_csv_loader.py b/libs/langchain/tests/unit_tests/document_loaders/test_csv_loader.py similarity index 100% rename from tests/unit_tests/document_loaders/test_csv_loader.py rename to libs/langchain/tests/unit_tests/document_loaders/test_csv_loader.py diff --git a/tests/unit_tests/document_loaders/test_cube_semantic.py b/libs/langchain/tests/unit_tests/document_loaders/test_cube_semantic.py similarity index 100% rename from tests/unit_tests/document_loaders/test_cube_semantic.py rename to libs/langchain/tests/unit_tests/document_loaders/test_cube_semantic.py diff --git a/tests/unit_tests/document_loaders/test_detect_encoding.py b/libs/langchain/tests/unit_tests/document_loaders/test_detect_encoding.py similarity index 100% rename from tests/unit_tests/document_loaders/test_detect_encoding.py rename to libs/langchain/tests/unit_tests/document_loaders/test_detect_encoding.py diff --git a/tests/unit_tests/document_loaders/test_directory.py b/libs/langchain/tests/unit_tests/document_loaders/test_directory.py similarity index 100% rename from tests/unit_tests/document_loaders/test_directory.py rename to libs/langchain/tests/unit_tests/document_loaders/test_directory.py diff --git a/tests/unit_tests/document_loaders/test_docs/csv/test_empty.csv b/libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_empty.csv similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/csv/test_empty.csv rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_empty.csv diff --git a/tests/unit_tests/document_loaders/test_docs/csv/test_nominal.csv b/libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_nominal.csv similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/csv/test_nominal.csv rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_nominal.csv diff --git a/tests/unit_tests/document_loaders/test_docs/csv/test_one_col.csv b/libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_one_col.csv similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/csv/test_one_col.csv rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_one_col.csv diff --git a/tests/unit_tests/document_loaders/test_docs/csv/test_one_row.csv b/libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_one_row.csv similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/csv/test_one_row.csv rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/csv/test_one_row.csv diff --git a/tests/unit_tests/document_loaders/test_docs/readthedocs/custom/test.html b/libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/custom/test.html similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/readthedocs/custom/test.html rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/custom/test.html diff --git a/tests/unit_tests/document_loaders/test_docs/readthedocs/div_role_main/test.html b/libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/div_role_main/test.html similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/readthedocs/div_role_main/test.html rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/div_role_main/test.html diff --git a/tests/unit_tests/document_loaders/test_docs/readthedocs/main_id_main_content/test.html b/libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/main_id_main_content/test.html similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/readthedocs/main_id_main_content/test.html rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/readthedocs/main_id_main_content/test.html diff --git a/tests/unit_tests/document_loaders/test_docs/telegram.json b/libs/langchain/tests/unit_tests/document_loaders/test_docs/telegram.json similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/telegram.json rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/telegram.json diff --git a/tests/unit_tests/document_loaders/test_docs/telegram_channel.json b/libs/langchain/tests/unit_tests/document_loaders/test_docs/telegram_channel.json similarity index 100% rename from tests/unit_tests/document_loaders/test_docs/telegram_channel.json rename to libs/langchain/tests/unit_tests/document_loaders/test_docs/telegram_channel.json diff --git a/tests/unit_tests/document_loaders/test_evernote_loader.py b/libs/langchain/tests/unit_tests/document_loaders/test_evernote_loader.py similarity index 100% rename from tests/unit_tests/document_loaders/test_evernote_loader.py rename to libs/langchain/tests/unit_tests/document_loaders/test_evernote_loader.py diff --git a/tests/unit_tests/document_loaders/test_generic_loader.py b/libs/langchain/tests/unit_tests/document_loaders/test_generic_loader.py similarity index 100% rename from tests/unit_tests/document_loaders/test_generic_loader.py rename to libs/langchain/tests/unit_tests/document_loaders/test_generic_loader.py diff --git a/tests/unit_tests/document_loaders/test_github.py b/libs/langchain/tests/unit_tests/document_loaders/test_github.py similarity index 100% rename from tests/unit_tests/document_loaders/test_github.py rename to libs/langchain/tests/unit_tests/document_loaders/test_github.py diff --git a/tests/unit_tests/document_loaders/test_json_loader.py b/libs/langchain/tests/unit_tests/document_loaders/test_json_loader.py similarity index 100% rename from tests/unit_tests/document_loaders/test_json_loader.py rename to libs/langchain/tests/unit_tests/document_loaders/test_json_loader.py diff --git a/tests/unit_tests/document_loaders/test_mediawikidump.py b/libs/langchain/tests/unit_tests/document_loaders/test_mediawikidump.py similarity index 100% rename from tests/unit_tests/document_loaders/test_mediawikidump.py rename to libs/langchain/tests/unit_tests/document_loaders/test_mediawikidump.py diff --git a/tests/unit_tests/document_loaders/test_mhtml.py b/libs/langchain/tests/unit_tests/document_loaders/test_mhtml.py similarity index 100% rename from tests/unit_tests/document_loaders/test_mhtml.py rename to libs/langchain/tests/unit_tests/document_loaders/test_mhtml.py diff --git a/tests/unit_tests/document_loaders/test_psychic.py b/libs/langchain/tests/unit_tests/document_loaders/test_psychic.py similarity index 100% rename from tests/unit_tests/document_loaders/test_psychic.py rename to libs/langchain/tests/unit_tests/document_loaders/test_psychic.py diff --git a/tests/unit_tests/document_loaders/test_readthedoc.py b/libs/langchain/tests/unit_tests/document_loaders/test_readthedoc.py similarity index 100% rename from tests/unit_tests/document_loaders/test_readthedoc.py rename to libs/langchain/tests/unit_tests/document_loaders/test_readthedoc.py diff --git a/tests/unit_tests/document_loaders/test_telegram.py b/libs/langchain/tests/unit_tests/document_loaders/test_telegram.py similarity index 100% rename from tests/unit_tests/document_loaders/test_telegram.py rename to libs/langchain/tests/unit_tests/document_loaders/test_telegram.py diff --git a/tests/unit_tests/document_loaders/test_trello.py b/libs/langchain/tests/unit_tests/document_loaders/test_trello.py similarity index 100% rename from tests/unit_tests/document_loaders/test_trello.py rename to libs/langchain/tests/unit_tests/document_loaders/test_trello.py diff --git a/tests/unit_tests/document_loaders/test_web_base.py b/libs/langchain/tests/unit_tests/document_loaders/test_web_base.py similarity index 100% rename from tests/unit_tests/document_loaders/test_web_base.py rename to libs/langchain/tests/unit_tests/document_loaders/test_web_base.py diff --git a/tests/unit_tests/document_loaders/test_youtube.py b/libs/langchain/tests/unit_tests/document_loaders/test_youtube.py similarity index 100% rename from tests/unit_tests/document_loaders/test_youtube.py rename to libs/langchain/tests/unit_tests/document_loaders/test_youtube.py diff --git a/tests/unit_tests/embeddings/__init__.py b/libs/langchain/tests/unit_tests/embeddings/__init__.py similarity index 100% rename from tests/unit_tests/embeddings/__init__.py rename to libs/langchain/tests/unit_tests/embeddings/__init__.py diff --git a/tests/unit_tests/embeddings/test_openai.py b/libs/langchain/tests/unit_tests/embeddings/test_openai.py similarity index 100% rename from tests/unit_tests/embeddings/test_openai.py rename to libs/langchain/tests/unit_tests/embeddings/test_openai.py diff --git a/tests/unit_tests/evaluation/__init__.py b/libs/langchain/tests/unit_tests/evaluation/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/__init__.py diff --git a/tests/unit_tests/evaluation/agents/__init__.py b/libs/langchain/tests/unit_tests/evaluation/agents/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/agents/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/agents/__init__.py diff --git a/tests/unit_tests/evaluation/agents/test_eval_chain.py b/libs/langchain/tests/unit_tests/evaluation/agents/test_eval_chain.py similarity index 100% rename from tests/unit_tests/evaluation/agents/test_eval_chain.py rename to libs/langchain/tests/unit_tests/evaluation/agents/test_eval_chain.py diff --git a/tests/unit_tests/evaluation/comparison/__init__.py b/libs/langchain/tests/unit_tests/evaluation/comparison/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/comparison/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/comparison/__init__.py diff --git a/tests/unit_tests/evaluation/comparison/test_eval_chain.py b/libs/langchain/tests/unit_tests/evaluation/comparison/test_eval_chain.py similarity index 100% rename from tests/unit_tests/evaluation/comparison/test_eval_chain.py rename to libs/langchain/tests/unit_tests/evaluation/comparison/test_eval_chain.py diff --git a/tests/unit_tests/evaluation/criteria/__init__.py b/libs/langchain/tests/unit_tests/evaluation/criteria/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/criteria/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/criteria/__init__.py diff --git a/tests/unit_tests/evaluation/criteria/test_eval_chain.py b/libs/langchain/tests/unit_tests/evaluation/criteria/test_eval_chain.py similarity index 100% rename from tests/unit_tests/evaluation/criteria/test_eval_chain.py rename to libs/langchain/tests/unit_tests/evaluation/criteria/test_eval_chain.py diff --git a/tests/unit_tests/evaluation/qa/__init__.py b/libs/langchain/tests/unit_tests/evaluation/qa/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/qa/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/qa/__init__.py diff --git a/tests/unit_tests/evaluation/qa/test_eval_chain.py b/libs/langchain/tests/unit_tests/evaluation/qa/test_eval_chain.py similarity index 100% rename from tests/unit_tests/evaluation/qa/test_eval_chain.py rename to libs/langchain/tests/unit_tests/evaluation/qa/test_eval_chain.py diff --git a/tests/unit_tests/evaluation/run_evaluators/__init__.py b/libs/langchain/tests/unit_tests/evaluation/run_evaluators/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/run_evaluators/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/run_evaluators/__init__.py diff --git a/tests/unit_tests/evaluation/string_distance/__init__.py b/libs/langchain/tests/unit_tests/evaluation/string_distance/__init__.py similarity index 100% rename from tests/unit_tests/evaluation/string_distance/__init__.py rename to libs/langchain/tests/unit_tests/evaluation/string_distance/__init__.py diff --git a/tests/unit_tests/evaluation/string_distance/test_base.py b/libs/langchain/tests/unit_tests/evaluation/string_distance/test_base.py similarity index 100% rename from tests/unit_tests/evaluation/string_distance/test_base.py rename to libs/langchain/tests/unit_tests/evaluation/string_distance/test_base.py diff --git a/tests/unit_tests/evaluation/test_loading.py b/libs/langchain/tests/unit_tests/evaluation/test_loading.py similarity index 100% rename from tests/unit_tests/evaluation/test_loading.py rename to libs/langchain/tests/unit_tests/evaluation/test_loading.py diff --git a/tests/unit_tests/examples/example-non-utf8.txt b/libs/langchain/tests/unit_tests/examples/example-non-utf8.txt similarity index 100% rename from tests/unit_tests/examples/example-non-utf8.txt rename to libs/langchain/tests/unit_tests/examples/example-non-utf8.txt diff --git a/tests/unit_tests/examples/example-utf8.txt b/libs/langchain/tests/unit_tests/examples/example-utf8.txt similarity index 100% rename from tests/unit_tests/examples/example-utf8.txt rename to libs/langchain/tests/unit_tests/examples/example-utf8.txt diff --git a/tests/unit_tests/examples/example_prompt.json b/libs/langchain/tests/unit_tests/examples/example_prompt.json similarity index 100% rename from tests/unit_tests/examples/example_prompt.json rename to libs/langchain/tests/unit_tests/examples/example_prompt.json diff --git a/tests/unit_tests/examples/examples.json b/libs/langchain/tests/unit_tests/examples/examples.json similarity index 100% rename from tests/unit_tests/examples/examples.json rename to libs/langchain/tests/unit_tests/examples/examples.json diff --git a/tests/unit_tests/examples/examples.yaml b/libs/langchain/tests/unit_tests/examples/examples.yaml similarity index 100% rename from tests/unit_tests/examples/examples.yaml rename to libs/langchain/tests/unit_tests/examples/examples.yaml diff --git a/tests/unit_tests/examples/few_shot_prompt.json b/libs/langchain/tests/unit_tests/examples/few_shot_prompt.json similarity index 100% rename from tests/unit_tests/examples/few_shot_prompt.json rename to libs/langchain/tests/unit_tests/examples/few_shot_prompt.json diff --git a/tests/unit_tests/examples/few_shot_prompt.yaml b/libs/langchain/tests/unit_tests/examples/few_shot_prompt.yaml similarity index 100% rename from tests/unit_tests/examples/few_shot_prompt.yaml rename to libs/langchain/tests/unit_tests/examples/few_shot_prompt.yaml diff --git a/tests/unit_tests/examples/few_shot_prompt_example_prompt.json b/libs/langchain/tests/unit_tests/examples/few_shot_prompt_example_prompt.json similarity index 100% rename from tests/unit_tests/examples/few_shot_prompt_example_prompt.json rename to libs/langchain/tests/unit_tests/examples/few_shot_prompt_example_prompt.json diff --git a/tests/unit_tests/examples/few_shot_prompt_examples_in.json b/libs/langchain/tests/unit_tests/examples/few_shot_prompt_examples_in.json similarity index 100% rename from tests/unit_tests/examples/few_shot_prompt_examples_in.json rename to libs/langchain/tests/unit_tests/examples/few_shot_prompt_examples_in.json diff --git a/tests/unit_tests/examples/few_shot_prompt_yaml_examples.yaml b/libs/langchain/tests/unit_tests/examples/few_shot_prompt_yaml_examples.yaml similarity index 100% rename from tests/unit_tests/examples/few_shot_prompt_yaml_examples.yaml rename to libs/langchain/tests/unit_tests/examples/few_shot_prompt_yaml_examples.yaml diff --git a/tests/unit_tests/examples/prompt_with_output_parser.json b/libs/langchain/tests/unit_tests/examples/prompt_with_output_parser.json similarity index 100% rename from tests/unit_tests/examples/prompt_with_output_parser.json rename to libs/langchain/tests/unit_tests/examples/prompt_with_output_parser.json diff --git a/tests/unit_tests/examples/simple_prompt.json b/libs/langchain/tests/unit_tests/examples/simple_prompt.json similarity index 100% rename from tests/unit_tests/examples/simple_prompt.json rename to libs/langchain/tests/unit_tests/examples/simple_prompt.json diff --git a/tests/unit_tests/examples/simple_prompt.yaml b/libs/langchain/tests/unit_tests/examples/simple_prompt.yaml similarity index 100% rename from tests/unit_tests/examples/simple_prompt.yaml rename to libs/langchain/tests/unit_tests/examples/simple_prompt.yaml diff --git a/tests/unit_tests/examples/simple_prompt_with_template_file.json b/libs/langchain/tests/unit_tests/examples/simple_prompt_with_template_file.json similarity index 100% rename from tests/unit_tests/examples/simple_prompt_with_template_file.json rename to libs/langchain/tests/unit_tests/examples/simple_prompt_with_template_file.json diff --git a/tests/unit_tests/examples/simple_template.txt b/libs/langchain/tests/unit_tests/examples/simple_template.txt similarity index 100% rename from tests/unit_tests/examples/simple_template.txt rename to libs/langchain/tests/unit_tests/examples/simple_template.txt diff --git a/tests/unit_tests/examples/test_specs/apis-guru/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/apis-guru/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/apis-guru/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/apis-guru/apispec.json diff --git a/tests/unit_tests/examples/test_specs/biztoc/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/biztoc/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/biztoc/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/biztoc/apispec.json diff --git a/tests/unit_tests/examples/test_specs/calculator/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/calculator/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/calculator/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/calculator/apispec.json diff --git a/tests/unit_tests/examples/test_specs/datasette/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/datasette/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/datasette/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/datasette/apispec.json diff --git a/tests/unit_tests/examples/test_specs/freetv-app/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/freetv-app/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/freetv-app/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/freetv-app/apispec.json diff --git a/tests/unit_tests/examples/test_specs/joinmilo/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/joinmilo/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/joinmilo/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/joinmilo/apispec.json diff --git a/tests/unit_tests/examples/test_specs/klarna/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/klarna/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/klarna/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/klarna/apispec.json diff --git a/tests/unit_tests/examples/test_specs/milo/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/milo/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/milo/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/milo/apispec.json diff --git a/tests/unit_tests/examples/test_specs/quickchart/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/quickchart/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/quickchart/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/quickchart/apispec.json diff --git a/tests/unit_tests/examples/test_specs/robot/apispec.yaml b/libs/langchain/tests/unit_tests/examples/test_specs/robot/apispec.yaml similarity index 100% rename from tests/unit_tests/examples/test_specs/robot/apispec.yaml rename to libs/langchain/tests/unit_tests/examples/test_specs/robot/apispec.yaml diff --git a/tests/unit_tests/examples/test_specs/robot_openapi.yaml b/libs/langchain/tests/unit_tests/examples/test_specs/robot_openapi.yaml similarity index 100% rename from tests/unit_tests/examples/test_specs/robot_openapi.yaml rename to libs/langchain/tests/unit_tests/examples/test_specs/robot_openapi.yaml diff --git a/tests/unit_tests/examples/test_specs/schooldigger/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/schooldigger/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/schooldigger/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/schooldigger/apispec.json diff --git a/tests/unit_tests/examples/test_specs/shop/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/shop/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/shop/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/shop/apispec.json diff --git a/tests/unit_tests/examples/test_specs/slack/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/slack/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/slack/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/slack/apispec.json diff --git a/tests/unit_tests/examples/test_specs/speak/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/speak/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/speak/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/speak/apispec.json diff --git a/tests/unit_tests/examples/test_specs/urlbox/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/urlbox/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/urlbox/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/urlbox/apispec.json diff --git a/tests/unit_tests/examples/test_specs/wellknown/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/wellknown/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/wellknown/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/wellknown/apispec.json diff --git a/tests/unit_tests/examples/test_specs/wolframalpha/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/wolframalpha/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/wolframalpha/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/wolframalpha/apispec.json diff --git a/tests/unit_tests/examples/test_specs/wolframcloud/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/wolframcloud/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/wolframcloud/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/wolframcloud/apispec.json diff --git a/tests/unit_tests/examples/test_specs/zapier/apispec.json b/libs/langchain/tests/unit_tests/examples/test_specs/zapier/apispec.json similarity index 100% rename from tests/unit_tests/examples/test_specs/zapier/apispec.json rename to libs/langchain/tests/unit_tests/examples/test_specs/zapier/apispec.json diff --git a/tests/unit_tests/llms/__init__.py b/libs/langchain/tests/unit_tests/llms/__init__.py similarity index 100% rename from tests/unit_tests/llms/__init__.py rename to libs/langchain/tests/unit_tests/llms/__init__.py diff --git a/tests/unit_tests/llms/fake_chat_model.py b/libs/langchain/tests/unit_tests/llms/fake_chat_model.py similarity index 100% rename from tests/unit_tests/llms/fake_chat_model.py rename to libs/langchain/tests/unit_tests/llms/fake_chat_model.py diff --git a/tests/unit_tests/llms/fake_llm.py b/libs/langchain/tests/unit_tests/llms/fake_llm.py similarity index 100% rename from tests/unit_tests/llms/fake_llm.py rename to libs/langchain/tests/unit_tests/llms/fake_llm.py diff --git a/tests/unit_tests/llms/test_base.py b/libs/langchain/tests/unit_tests/llms/test_base.py similarity index 100% rename from tests/unit_tests/llms/test_base.py rename to libs/langchain/tests/unit_tests/llms/test_base.py diff --git a/tests/unit_tests/llms/test_callbacks.py b/libs/langchain/tests/unit_tests/llms/test_callbacks.py similarity index 100% rename from tests/unit_tests/llms/test_callbacks.py rename to libs/langchain/tests/unit_tests/llms/test_callbacks.py diff --git a/tests/unit_tests/llms/test_loading.py b/libs/langchain/tests/unit_tests/llms/test_loading.py similarity index 100% rename from tests/unit_tests/llms/test_loading.py rename to libs/langchain/tests/unit_tests/llms/test_loading.py diff --git a/tests/unit_tests/llms/test_openai.py b/libs/langchain/tests/unit_tests/llms/test_openai.py similarity index 100% rename from tests/unit_tests/llms/test_openai.py rename to libs/langchain/tests/unit_tests/llms/test_openai.py diff --git a/tests/unit_tests/llms/test_utils.py b/libs/langchain/tests/unit_tests/llms/test_utils.py similarity index 100% rename from tests/unit_tests/llms/test_utils.py rename to libs/langchain/tests/unit_tests/llms/test_utils.py diff --git a/tests/unit_tests/load/__snapshots__/test_dump.ambr b/libs/langchain/tests/unit_tests/load/__snapshots__/test_dump.ambr similarity index 100% rename from tests/unit_tests/load/__snapshots__/test_dump.ambr rename to libs/langchain/tests/unit_tests/load/__snapshots__/test_dump.ambr diff --git a/tests/unit_tests/load/test_dump.py b/libs/langchain/tests/unit_tests/load/test_dump.py similarity index 100% rename from tests/unit_tests/load/test_dump.py rename to libs/langchain/tests/unit_tests/load/test_dump.py diff --git a/tests/unit_tests/load/test_load.py b/libs/langchain/tests/unit_tests/load/test_load.py similarity index 100% rename from tests/unit_tests/load/test_load.py rename to libs/langchain/tests/unit_tests/load/test_load.py diff --git a/tests/unit_tests/memory/__init__.py b/libs/langchain/tests/unit_tests/memory/__init__.py similarity index 100% rename from tests/unit_tests/memory/__init__.py rename to libs/langchain/tests/unit_tests/memory/__init__.py diff --git a/tests/unit_tests/memory/chat_message_histories/__init__.py b/libs/langchain/tests/unit_tests/memory/chat_message_histories/__init__.py similarity index 100% rename from tests/unit_tests/memory/chat_message_histories/__init__.py rename to libs/langchain/tests/unit_tests/memory/chat_message_histories/__init__.py diff --git a/tests/unit_tests/memory/chat_message_histories/test_file.py b/libs/langchain/tests/unit_tests/memory/chat_message_histories/test_file.py similarity index 100% rename from tests/unit_tests/memory/chat_message_histories/test_file.py rename to libs/langchain/tests/unit_tests/memory/chat_message_histories/test_file.py diff --git a/tests/unit_tests/memory/chat_message_histories/test_sql.py b/libs/langchain/tests/unit_tests/memory/chat_message_histories/test_sql.py similarity index 100% rename from tests/unit_tests/memory/chat_message_histories/test_sql.py rename to libs/langchain/tests/unit_tests/memory/chat_message_histories/test_sql.py diff --git a/tests/unit_tests/memory/chat_message_histories/test_zep.py b/libs/langchain/tests/unit_tests/memory/chat_message_histories/test_zep.py similarity index 100% rename from tests/unit_tests/memory/chat_message_histories/test_zep.py rename to libs/langchain/tests/unit_tests/memory/chat_message_histories/test_zep.py diff --git a/tests/unit_tests/memory/test_combined_memory.py b/libs/langchain/tests/unit_tests/memory/test_combined_memory.py similarity index 97% rename from tests/unit_tests/memory/test_combined_memory.py rename to libs/langchain/tests/unit_tests/memory/test_combined_memory.py index dcaf240183..b056e53c4e 100644 --- a/tests/unit_tests/memory/test_combined_memory.py +++ b/libs/langchain/tests/unit_tests/memory/test_combined_memory.py @@ -1,37 +1,37 @@ -"""Test for CombinedMemory class""" -# from langchain.prompts import PromptTemplate -from typing import List - -import pytest - -from langchain.memory import CombinedMemory, ConversationBufferMemory - - -@pytest.fixture() -def example_memory() -> List[ConversationBufferMemory]: - example_1 = ConversationBufferMemory(memory_key="foo") - example_2 = ConversationBufferMemory(memory_key="bar") - example_3 = ConversationBufferMemory(memory_key="bar") - return [example_1, example_2, example_3] - - -def test_basic_functionality(example_memory: List[ConversationBufferMemory]) -> None: - """Test basic functionality of methods exposed by class""" - combined_memory = CombinedMemory(memories=[example_memory[0], example_memory[1]]) - assert combined_memory.memory_variables == ["foo", "bar"] - assert combined_memory.load_memory_variables({}) == {"foo": "", "bar": ""} - combined_memory.save_context( - {"input": "Hello there"}, {"output": "Hello, how can I help you?"} - ) - assert combined_memory.load_memory_variables({}) == { - "foo": "Human: Hello there\nAI: Hello, how can I help you?", - "bar": "Human: Hello there\nAI: Hello, how can I help you?", - } - combined_memory.clear() - assert combined_memory.load_memory_variables({}) == {"foo": "", "bar": ""} - - -def test_repeated_memory_var(example_memory: List[ConversationBufferMemory]) -> None: - """Test raising error when repeated memory variables found""" - with pytest.raises(ValueError): - CombinedMemory(memories=[example_memory[1], example_memory[2]]) +"""Test for CombinedMemory class""" +# from langchain.prompts import PromptTemplate +from typing import List + +import pytest + +from langchain.memory import CombinedMemory, ConversationBufferMemory + + +@pytest.fixture() +def example_memory() -> List[ConversationBufferMemory]: + example_1 = ConversationBufferMemory(memory_key="foo") + example_2 = ConversationBufferMemory(memory_key="bar") + example_3 = ConversationBufferMemory(memory_key="bar") + return [example_1, example_2, example_3] + + +def test_basic_functionality(example_memory: List[ConversationBufferMemory]) -> None: + """Test basic functionality of methods exposed by class""" + combined_memory = CombinedMemory(memories=[example_memory[0], example_memory[1]]) + assert combined_memory.memory_variables == ["foo", "bar"] + assert combined_memory.load_memory_variables({}) == {"foo": "", "bar": ""} + combined_memory.save_context( + {"input": "Hello there"}, {"output": "Hello, how can I help you?"} + ) + assert combined_memory.load_memory_variables({}) == { + "foo": "Human: Hello there\nAI: Hello, how can I help you?", + "bar": "Human: Hello there\nAI: Hello, how can I help you?", + } + combined_memory.clear() + assert combined_memory.load_memory_variables({}) == {"foo": "", "bar": ""} + + +def test_repeated_memory_var(example_memory: List[ConversationBufferMemory]) -> None: + """Test raising error when repeated memory variables found""" + with pytest.raises(ValueError): + CombinedMemory(memories=[example_memory[1], example_memory[2]]) diff --git a/tests/unit_tests/output_parsers/__init__.py b/libs/langchain/tests/unit_tests/output_parsers/__init__.py similarity index 100% rename from tests/unit_tests/output_parsers/__init__.py rename to libs/langchain/tests/unit_tests/output_parsers/__init__.py diff --git a/tests/unit_tests/output_parsers/test_base_output_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_base_output_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py diff --git a/tests/unit_tests/output_parsers/test_boolean_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_boolean_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_boolean_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_boolean_parser.py diff --git a/tests/unit_tests/output_parsers/test_combining_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_combining_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_combining_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_combining_parser.py diff --git a/tests/unit_tests/output_parsers/test_datetime_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_datetime_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_datetime_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_datetime_parser.py diff --git a/tests/unit_tests/output_parsers/test_enum_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_enum_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_enum_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_enum_parser.py diff --git a/tests/unit_tests/output_parsers/test_json.py b/libs/langchain/tests/unit_tests/output_parsers/test_json.py similarity index 100% rename from tests/unit_tests/output_parsers/test_json.py rename to libs/langchain/tests/unit_tests/output_parsers/test_json.py diff --git a/tests/unit_tests/output_parsers/test_list_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_list_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_list_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_list_parser.py diff --git a/tests/unit_tests/output_parsers/test_pydantic_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_pydantic_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_pydantic_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_pydantic_parser.py diff --git a/tests/unit_tests/output_parsers/test_regex_dict.py b/libs/langchain/tests/unit_tests/output_parsers/test_regex_dict.py similarity index 100% rename from tests/unit_tests/output_parsers/test_regex_dict.py rename to libs/langchain/tests/unit_tests/output_parsers/test_regex_dict.py diff --git a/tests/unit_tests/output_parsers/test_structured_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_structured_parser.py similarity index 100% rename from tests/unit_tests/output_parsers/test_structured_parser.py rename to libs/langchain/tests/unit_tests/output_parsers/test_structured_parser.py diff --git a/tests/unit_tests/prompts/__init__.py b/libs/langchain/tests/unit_tests/prompts/__init__.py similarity index 100% rename from tests/unit_tests/prompts/__init__.py rename to libs/langchain/tests/unit_tests/prompts/__init__.py diff --git a/tests/unit_tests/prompts/test_chat.py b/libs/langchain/tests/unit_tests/prompts/test_chat.py similarity index 100% rename from tests/unit_tests/prompts/test_chat.py rename to libs/langchain/tests/unit_tests/prompts/test_chat.py diff --git a/tests/unit_tests/prompts/test_few_shot.py b/libs/langchain/tests/unit_tests/prompts/test_few_shot.py similarity index 100% rename from tests/unit_tests/prompts/test_few_shot.py rename to libs/langchain/tests/unit_tests/prompts/test_few_shot.py diff --git a/tests/unit_tests/prompts/test_few_shot_with_templates.py b/libs/langchain/tests/unit_tests/prompts/test_few_shot_with_templates.py similarity index 100% rename from tests/unit_tests/prompts/test_few_shot_with_templates.py rename to libs/langchain/tests/unit_tests/prompts/test_few_shot_with_templates.py diff --git a/tests/unit_tests/prompts/test_length_based_example_selector.py b/libs/langchain/tests/unit_tests/prompts/test_length_based_example_selector.py similarity index 100% rename from tests/unit_tests/prompts/test_length_based_example_selector.py rename to libs/langchain/tests/unit_tests/prompts/test_length_based_example_selector.py diff --git a/tests/unit_tests/prompts/test_loading.py b/libs/langchain/tests/unit_tests/prompts/test_loading.py similarity index 100% rename from tests/unit_tests/prompts/test_loading.py rename to libs/langchain/tests/unit_tests/prompts/test_loading.py diff --git a/tests/unit_tests/prompts/test_pipeline_prompt.py b/libs/langchain/tests/unit_tests/prompts/test_pipeline_prompt.py similarity index 100% rename from tests/unit_tests/prompts/test_pipeline_prompt.py rename to libs/langchain/tests/unit_tests/prompts/test_pipeline_prompt.py diff --git a/tests/unit_tests/prompts/test_prompt.py b/libs/langchain/tests/unit_tests/prompts/test_prompt.py similarity index 100% rename from tests/unit_tests/prompts/test_prompt.py rename to libs/langchain/tests/unit_tests/prompts/test_prompt.py diff --git a/tests/unit_tests/prompts/test_utils.py b/libs/langchain/tests/unit_tests/prompts/test_utils.py similarity index 100% rename from tests/unit_tests/prompts/test_utils.py rename to libs/langchain/tests/unit_tests/prompts/test_utils.py diff --git a/tests/unit_tests/retrievers/__init__.py b/libs/langchain/tests/unit_tests/retrievers/__init__.py similarity index 100% rename from tests/unit_tests/retrievers/__init__.py rename to libs/langchain/tests/unit_tests/retrievers/__init__.py diff --git a/tests/unit_tests/retrievers/self_query/__init__.py b/libs/langchain/tests/unit_tests/retrievers/self_query/__init__.py similarity index 100% rename from tests/unit_tests/retrievers/self_query/__init__.py rename to libs/langchain/tests/unit_tests/retrievers/self_query/__init__.py diff --git a/tests/unit_tests/retrievers/self_query/test_myscale.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py similarity index 100% rename from tests/unit_tests/retrievers/self_query/test_myscale.py rename to libs/langchain/tests/unit_tests/retrievers/self_query/test_myscale.py diff --git a/tests/unit_tests/retrievers/self_query/test_pinecone.py b/libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py similarity index 100% rename from tests/unit_tests/retrievers/self_query/test_pinecone.py rename to libs/langchain/tests/unit_tests/retrievers/self_query/test_pinecone.py diff --git a/tests/unit_tests/retrievers/test_base.py b/libs/langchain/tests/unit_tests/retrievers/test_base.py similarity index 100% rename from tests/unit_tests/retrievers/test_base.py rename to libs/langchain/tests/unit_tests/retrievers/test_base.py diff --git a/tests/unit_tests/retrievers/test_bm25.py b/libs/langchain/tests/unit_tests/retrievers/test_bm25.py similarity index 100% rename from tests/unit_tests/retrievers/test_bm25.py rename to libs/langchain/tests/unit_tests/retrievers/test_bm25.py diff --git a/tests/unit_tests/retrievers/test_knn.py b/libs/langchain/tests/unit_tests/retrievers/test_knn.py similarity index 100% rename from tests/unit_tests/retrievers/test_knn.py rename to libs/langchain/tests/unit_tests/retrievers/test_knn.py diff --git a/tests/unit_tests/retrievers/test_svm.py b/libs/langchain/tests/unit_tests/retrievers/test_svm.py similarity index 100% rename from tests/unit_tests/retrievers/test_svm.py rename to libs/langchain/tests/unit_tests/retrievers/test_svm.py diff --git a/tests/unit_tests/retrievers/test_tfidf.py b/libs/langchain/tests/unit_tests/retrievers/test_tfidf.py similarity index 100% rename from tests/unit_tests/retrievers/test_tfidf.py rename to libs/langchain/tests/unit_tests/retrievers/test_tfidf.py diff --git a/tests/unit_tests/retrievers/test_time_weighted_retriever.py b/libs/langchain/tests/unit_tests/retrievers/test_time_weighted_retriever.py similarity index 100% rename from tests/unit_tests/retrievers/test_time_weighted_retriever.py rename to libs/langchain/tests/unit_tests/retrievers/test_time_weighted_retriever.py diff --git a/tests/unit_tests/retrievers/test_zep.py b/libs/langchain/tests/unit_tests/retrievers/test_zep.py similarity index 100% rename from tests/unit_tests/retrievers/test_zep.py rename to libs/langchain/tests/unit_tests/retrievers/test_zep.py diff --git a/tests/unit_tests/smith/__init__.py b/libs/langchain/tests/unit_tests/smith/__init__.py similarity index 100% rename from tests/unit_tests/smith/__init__.py rename to libs/langchain/tests/unit_tests/smith/__init__.py diff --git a/tests/unit_tests/smith/evaluation/__init__.py b/libs/langchain/tests/unit_tests/smith/evaluation/__init__.py similarity index 100% rename from tests/unit_tests/smith/evaluation/__init__.py rename to libs/langchain/tests/unit_tests/smith/evaluation/__init__.py diff --git a/tests/unit_tests/smith/evaluation/test_runner_utils.py b/libs/langchain/tests/unit_tests/smith/evaluation/test_runner_utils.py similarity index 100% rename from tests/unit_tests/smith/evaluation/test_runner_utils.py rename to libs/langchain/tests/unit_tests/smith/evaluation/test_runner_utils.py diff --git a/tests/unit_tests/smith/test_runner_utils.py b/libs/langchain/tests/unit_tests/smith/test_runner_utils.py similarity index 100% rename from tests/unit_tests/smith/test_runner_utils.py rename to libs/langchain/tests/unit_tests/smith/test_runner_utils.py diff --git a/tests/unit_tests/test_bash.py b/libs/langchain/tests/unit_tests/test_bash.py similarity index 100% rename from tests/unit_tests/test_bash.py rename to libs/langchain/tests/unit_tests/test_bash.py diff --git a/tests/unit_tests/test_cache.py b/libs/langchain/tests/unit_tests/test_cache.py similarity index 100% rename from tests/unit_tests/test_cache.py rename to libs/langchain/tests/unit_tests/test_cache.py diff --git a/tests/unit_tests/test_dependencies.py b/libs/langchain/tests/unit_tests/test_dependencies.py similarity index 100% rename from tests/unit_tests/test_dependencies.py rename to libs/langchain/tests/unit_tests/test_dependencies.py diff --git a/tests/unit_tests/test_document_transformers.py b/libs/langchain/tests/unit_tests/test_document_transformers.py similarity index 100% rename from tests/unit_tests/test_document_transformers.py rename to libs/langchain/tests/unit_tests/test_document_transformers.py diff --git a/tests/unit_tests/test_formatting.py b/libs/langchain/tests/unit_tests/test_formatting.py similarity index 100% rename from tests/unit_tests/test_formatting.py rename to libs/langchain/tests/unit_tests/test_formatting.py diff --git a/tests/unit_tests/test_math_utils.py b/libs/langchain/tests/unit_tests/test_math_utils.py similarity index 100% rename from tests/unit_tests/test_math_utils.py rename to libs/langchain/tests/unit_tests/test_math_utils.py diff --git a/tests/unit_tests/test_pytest_config.py b/libs/langchain/tests/unit_tests/test_pytest_config.py similarity index 100% rename from tests/unit_tests/test_pytest_config.py rename to libs/langchain/tests/unit_tests/test_pytest_config.py diff --git a/tests/unit_tests/test_python.py b/libs/langchain/tests/unit_tests/test_python.py similarity index 100% rename from tests/unit_tests/test_python.py rename to libs/langchain/tests/unit_tests/test_python.py diff --git a/tests/unit_tests/test_schema.py b/libs/langchain/tests/unit_tests/test_schema.py similarity index 100% rename from tests/unit_tests/test_schema.py rename to libs/langchain/tests/unit_tests/test_schema.py diff --git a/tests/unit_tests/test_sql_database.py b/libs/langchain/tests/unit_tests/test_sql_database.py similarity index 100% rename from tests/unit_tests/test_sql_database.py rename to libs/langchain/tests/unit_tests/test_sql_database.py diff --git a/tests/unit_tests/test_sql_database_schema.py b/libs/langchain/tests/unit_tests/test_sql_database_schema.py similarity index 100% rename from tests/unit_tests/test_sql_database_schema.py rename to libs/langchain/tests/unit_tests/test_sql_database_schema.py diff --git a/tests/unit_tests/test_sqlalchemy.py b/libs/langchain/tests/unit_tests/test_sqlalchemy.py similarity index 100% rename from tests/unit_tests/test_sqlalchemy.py rename to libs/langchain/tests/unit_tests/test_sqlalchemy.py diff --git a/tests/unit_tests/test_text_splitter.py b/libs/langchain/tests/unit_tests/test_text_splitter.py similarity index 100% rename from tests/unit_tests/test_text_splitter.py rename to libs/langchain/tests/unit_tests/test_text_splitter.py diff --git a/tests/unit_tests/test_utils.py b/libs/langchain/tests/unit_tests/test_utils.py similarity index 100% rename from tests/unit_tests/test_utils.py rename to libs/langchain/tests/unit_tests/test_utils.py diff --git a/tests/unit_tests/tools/__init__.py b/libs/langchain/tests/unit_tests/tools/__init__.py similarity index 100% rename from tests/unit_tests/tools/__init__.py rename to libs/langchain/tests/unit_tests/tools/__init__.py diff --git a/tests/unit_tests/tools/file_management/__init__.py b/libs/langchain/tests/unit_tests/tools/file_management/__init__.py similarity index 100% rename from tests/unit_tests/tools/file_management/__init__.py rename to libs/langchain/tests/unit_tests/tools/file_management/__init__.py diff --git a/tests/unit_tests/tools/file_management/test_copy.py b/libs/langchain/tests/unit_tests/tools/file_management/test_copy.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_copy.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_copy.py diff --git a/tests/unit_tests/tools/file_management/test_file_search.py b/libs/langchain/tests/unit_tests/tools/file_management/test_file_search.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_file_search.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_file_search.py diff --git a/tests/unit_tests/tools/file_management/test_list_dir.py b/libs/langchain/tests/unit_tests/tools/file_management/test_list_dir.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_list_dir.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_list_dir.py diff --git a/tests/unit_tests/tools/file_management/test_move.py b/libs/langchain/tests/unit_tests/tools/file_management/test_move.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_move.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_move.py diff --git a/tests/unit_tests/tools/file_management/test_read.py b/libs/langchain/tests/unit_tests/tools/file_management/test_read.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_read.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_read.py diff --git a/tests/unit_tests/tools/file_management/test_toolkit.py b/libs/langchain/tests/unit_tests/tools/file_management/test_toolkit.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_toolkit.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_toolkit.py diff --git a/tests/unit_tests/tools/file_management/test_utils.py b/libs/langchain/tests/unit_tests/tools/file_management/test_utils.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_utils.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_utils.py diff --git a/tests/unit_tests/tools/file_management/test_write.py b/libs/langchain/tests/unit_tests/tools/file_management/test_write.py similarity index 100% rename from tests/unit_tests/tools/file_management/test_write.py rename to libs/langchain/tests/unit_tests/tools/file_management/test_write.py diff --git a/tests/unit_tests/tools/openapi/__init__.py b/libs/langchain/tests/unit_tests/tools/openapi/__init__.py similarity index 100% rename from tests/unit_tests/tools/openapi/__init__.py rename to libs/langchain/tests/unit_tests/tools/openapi/__init__.py diff --git a/tests/unit_tests/tools/openapi/test_api_models.py b/libs/langchain/tests/unit_tests/tools/openapi/test_api_models.py similarity index 100% rename from tests/unit_tests/tools/openapi/test_api_models.py rename to libs/langchain/tests/unit_tests/tools/openapi/test_api_models.py diff --git a/tests/unit_tests/tools/powerbi/__init__.py b/libs/langchain/tests/unit_tests/tools/powerbi/__init__.py similarity index 100% rename from tests/unit_tests/tools/powerbi/__init__.py rename to libs/langchain/tests/unit_tests/tools/powerbi/__init__.py diff --git a/tests/unit_tests/tools/powerbi/test_powerbi.py b/libs/langchain/tests/unit_tests/tools/powerbi/test_powerbi.py similarity index 100% rename from tests/unit_tests/tools/powerbi/test_powerbi.py rename to libs/langchain/tests/unit_tests/tools/powerbi/test_powerbi.py diff --git a/tests/unit_tests/tools/python/__init__.py b/libs/langchain/tests/unit_tests/tools/python/__init__.py similarity index 100% rename from tests/unit_tests/tools/python/__init__.py rename to libs/langchain/tests/unit_tests/tools/python/__init__.py diff --git a/tests/unit_tests/tools/python/test_python.py b/libs/langchain/tests/unit_tests/tools/python/test_python.py similarity index 100% rename from tests/unit_tests/tools/python/test_python.py rename to libs/langchain/tests/unit_tests/tools/python/test_python.py diff --git a/tests/unit_tests/tools/requests/__init__.py b/libs/langchain/tests/unit_tests/tools/requests/__init__.py similarity index 100% rename from tests/unit_tests/tools/requests/__init__.py rename to libs/langchain/tests/unit_tests/tools/requests/__init__.py diff --git a/tests/unit_tests/tools/requests/test_tool.py b/libs/langchain/tests/unit_tests/tools/requests/test_tool.py similarity index 100% rename from tests/unit_tests/tools/requests/test_tool.py rename to libs/langchain/tests/unit_tests/tools/requests/test_tool.py diff --git a/tests/unit_tests/tools/shell/__init__.py b/libs/langchain/tests/unit_tests/tools/shell/__init__.py similarity index 100% rename from tests/unit_tests/tools/shell/__init__.py rename to libs/langchain/tests/unit_tests/tools/shell/__init__.py diff --git a/tests/unit_tests/tools/shell/test_shell.py b/libs/langchain/tests/unit_tests/tools/shell/test_shell.py similarity index 100% rename from tests/unit_tests/tools/shell/test_shell.py rename to libs/langchain/tests/unit_tests/tools/shell/test_shell.py diff --git a/tests/unit_tests/tools/test_base.py b/libs/langchain/tests/unit_tests/tools/test_base.py similarity index 100% rename from tests/unit_tests/tools/test_base.py rename to libs/langchain/tests/unit_tests/tools/test_base.py diff --git a/tests/unit_tests/tools/test_exported.py b/libs/langchain/tests/unit_tests/tools/test_exported.py similarity index 100% rename from tests/unit_tests/tools/test_exported.py rename to libs/langchain/tests/unit_tests/tools/test_exported.py diff --git a/tests/unit_tests/tools/test_json.py b/libs/langchain/tests/unit_tests/tools/test_json.py similarity index 100% rename from tests/unit_tests/tools/test_json.py rename to libs/langchain/tests/unit_tests/tools/test_json.py diff --git a/tests/unit_tests/tools/test_public_api.py b/libs/langchain/tests/unit_tests/tools/test_public_api.py similarity index 100% rename from tests/unit_tests/tools/test_public_api.py rename to libs/langchain/tests/unit_tests/tools/test_public_api.py diff --git a/tests/unit_tests/tools/test_signatures.py b/libs/langchain/tests/unit_tests/tools/test_signatures.py similarity index 100% rename from tests/unit_tests/tools/test_signatures.py rename to libs/langchain/tests/unit_tests/tools/test_signatures.py diff --git a/tests/unit_tests/tools/test_zapier.py b/libs/langchain/tests/unit_tests/tools/test_zapier.py similarity index 97% rename from tests/unit_tests/tools/test_zapier.py rename to libs/langchain/tests/unit_tests/tools/test_zapier.py index 05ae4230e0..44b93180a9 100644 --- a/tests/unit_tests/tools/test_zapier.py +++ b/libs/langchain/tests/unit_tests/tools/test_zapier.py @@ -1,286 +1,286 @@ -"""Test building the Zapier tool, not running it.""" -from unittest.mock import MagicMock, patch - -import pytest -import requests - -from langchain.tools.zapier.prompt import BASE_ZAPIER_TOOL_PROMPT -from langchain.tools.zapier.tool import ZapierNLARunAction -from langchain.utilities.zapier import ZapierNLAWrapper - - -def test_default_base_prompt() -> None: - """Test that the default prompt is being inserted.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - # Test that the base prompt was successfully assigned to the default prompt - assert tool.base_prompt == BASE_ZAPIER_TOOL_PROMPT - assert tool.description == BASE_ZAPIER_TOOL_PROMPT.format( - zapier_description="test", - params=str(list({"test": "test"}.keys())), - ) - - -def test_custom_base_prompt() -> None: - """Test that a custom prompt is being inserted.""" - base_prompt = "Test. {zapier_description} and {params}." - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - base_prompt=base_prompt, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - # Test that the base prompt was successfully assigned to the default prompt - assert tool.base_prompt == base_prompt - assert tool.description == "Test. test and ['test']." - - -def test_custom_base_prompt_fail() -> None: - """Test validating an invalid custom prompt.""" - base_prompt = "Test. {zapier_description}." - with pytest.raises(ValueError): - ZapierNLARunAction( - action_id="test", - zapier_description="test", - params={"test": "test"}, - base_prompt=base_prompt, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - -def test_format_headers_api_key() -> None: - """Test that the action headers is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - headers = tool.api_wrapper._format_headers() - assert headers["Content-Type"] == "application/json" - assert headers["Accept"] == "application/json" - assert headers["X-API-Key"] == "test" - - -def test_format_headers_access_token() -> None: - """Test that the action headers is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_oauth_access_token="test"), - ) - headers = tool.api_wrapper._format_headers() - assert headers["Content-Type"] == "application/json" - assert headers["Accept"] == "application/json" - assert headers["Authorization"] == "Bearer test" - - -def test_create_action_payload() -> None: - """Test that the action payload is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - payload = tool.api_wrapper._create_action_payload("some instructions") - assert payload["instructions"] == "some instructions" - assert payload.get("preview_only") is None - - -def test_create_action_payload_preview() -> None: - """Test that the action payload with preview is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - payload = tool.api_wrapper._create_action_payload( - "some instructions", - preview_only=True, - ) - assert payload["instructions"] == "some instructions" - assert payload["preview_only"] is True - - -def test_create_action_payload_with_params() -> None: - """Test that the action payload with params is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), - ) - - payload = tool.api_wrapper._create_action_payload( - "some instructions", - {"test": "test"}, - preview_only=True, - ) - assert payload["instructions"] == "some instructions" - assert payload["preview_only"] is True - assert payload["test"] == "test" - - -@pytest.mark.asyncio -async def test_apreview(mocker) -> None: # type: ignore[no-untyped-def] - """Test that the action payload with params is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper( - zapier_nla_api_key="test", - zapier_nla_api_base="http://localhost:8080/v1/", - ), - ) - mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") - await tool.api_wrapper.apreview( - "random_action_id", - "some instructions", - {"test": "test"}, - ) - mockObj.assert_called_once_with( - "POST", - "http://localhost:8080/v1/exposed/random_action_id/execute/", - json={ - "instructions": "some instructions", - "preview_only": True, - "test": "test", - }, - ) - - -@pytest.mark.asyncio -async def test_arun(mocker) -> None: # type: ignore[no-untyped-def] - """Test that the action payload with params is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper( - zapier_nla_api_key="test", - zapier_nla_api_base="http://localhost:8080/v1/", - ), - ) - mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") - await tool.api_wrapper.arun( - "random_action_id", - "some instructions", - {"test": "test"}, - ) - mockObj.assert_called_once_with( - "POST", - "http://localhost:8080/v1/exposed/random_action_id/execute/", - json={"instructions": "some instructions", "test": "test"}, - ) - - -@pytest.mark.asyncio -async def test_alist(mocker) -> None: # type: ignore[no-untyped-def] - """Test that the action payload with params is being created correctly.""" - tool = ZapierNLARunAction( - action_id="test", - zapier_description="test", - params_schema={"test": "test"}, - api_wrapper=ZapierNLAWrapper( - zapier_nla_api_key="test", - zapier_nla_api_base="http://localhost:8080/v1/", - ), - ) - mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") - await tool.api_wrapper.alist() - mockObj.assert_called_once_with( - "GET", - "http://localhost:8080/v1/exposed/", - ) - - -def test_wrapper_fails_no_api_key_or_access_token_initialization() -> None: - """Test Wrapper requires either an API Key or OAuth Access Token.""" - with pytest.raises(ValueError): - ZapierNLAWrapper() - - -def test_wrapper_api_key_initialization() -> None: - """Test Wrapper initializes with an API Key.""" - ZapierNLAWrapper(zapier_nla_api_key="test") - - -def test_wrapper_access_token_initialization() -> None: - """Test Wrapper initializes with an API Key.""" - ZapierNLAWrapper(zapier_nla_oauth_access_token="test") - - -def test_list_raises_401_invalid_api_key() -> None: - """Test that a valid error is raised when the API Key is invalid.""" - mock_response = MagicMock() - mock_response.status_code = 401 - mock_response.raise_for_status.side_effect = requests.HTTPError( - "401 Client Error: Unauthorized for url: https://nla.zapier.com/api/v1/exposed/" - ) - mock_session = MagicMock() - mock_session.get.return_value = mock_response - - with patch("requests.Session", return_value=mock_session): - wrapper = ZapierNLAWrapper(zapier_nla_api_key="test") - - with pytest.raises(requests.HTTPError) as err: - wrapper.list() - - assert str(err.value).startswith( - "An unauthorized response occurred. Check that your api key is correct. " - "Err:" - ) - - -def test_list_raises_401_invalid_access_token() -> None: - """Test that a valid error is raised when the API Key is invalid.""" - mock_response = MagicMock() - mock_response.status_code = 401 - mock_response.raise_for_status.side_effect = requests.HTTPError( - "401 Client Error: Unauthorized for url: https://nla.zapier.com/api/v1/exposed/" - ) - mock_session = MagicMock() - mock_session.get.return_value = mock_response - - with patch("requests.Session", return_value=mock_session): - wrapper = ZapierNLAWrapper(zapier_nla_oauth_access_token="test") - - with pytest.raises(requests.HTTPError) as err: - wrapper.list() - - assert str(err.value).startswith( - "An unauthorized response occurred. Check that your access token is " - "correct and doesn't need to be refreshed. Err:" - ) - - -def test_list_raises_other_error() -> None: - """Test that a valid error is raised when an unknown HTTP Error occurs.""" - mock_response = MagicMock() - mock_response.status_code = 404 - mock_response.raise_for_status.side_effect = requests.HTTPError( - "404 Client Error: Not found for url" - ) - mock_session = MagicMock() - mock_session.get.return_value = mock_response - - with patch("requests.Session", return_value=mock_session): - wrapper = ZapierNLAWrapper(zapier_nla_oauth_access_token="test") - - with pytest.raises(requests.HTTPError) as err: - wrapper.list() - - assert str(err.value) == "404 Client Error: Not found for url" +"""Test building the Zapier tool, not running it.""" +from unittest.mock import MagicMock, patch + +import pytest +import requests + +from langchain.tools.zapier.prompt import BASE_ZAPIER_TOOL_PROMPT +from langchain.tools.zapier.tool import ZapierNLARunAction +from langchain.utilities.zapier import ZapierNLAWrapper + + +def test_default_base_prompt() -> None: + """Test that the default prompt is being inserted.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + # Test that the base prompt was successfully assigned to the default prompt + assert tool.base_prompt == BASE_ZAPIER_TOOL_PROMPT + assert tool.description == BASE_ZAPIER_TOOL_PROMPT.format( + zapier_description="test", + params=str(list({"test": "test"}.keys())), + ) + + +def test_custom_base_prompt() -> None: + """Test that a custom prompt is being inserted.""" + base_prompt = "Test. {zapier_description} and {params}." + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + base_prompt=base_prompt, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + # Test that the base prompt was successfully assigned to the default prompt + assert tool.base_prompt == base_prompt + assert tool.description == "Test. test and ['test']." + + +def test_custom_base_prompt_fail() -> None: + """Test validating an invalid custom prompt.""" + base_prompt = "Test. {zapier_description}." + with pytest.raises(ValueError): + ZapierNLARunAction( + action_id="test", + zapier_description="test", + params={"test": "test"}, + base_prompt=base_prompt, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + +def test_format_headers_api_key() -> None: + """Test that the action headers is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + headers = tool.api_wrapper._format_headers() + assert headers["Content-Type"] == "application/json" + assert headers["Accept"] == "application/json" + assert headers["X-API-Key"] == "test" + + +def test_format_headers_access_token() -> None: + """Test that the action headers is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_oauth_access_token="test"), + ) + headers = tool.api_wrapper._format_headers() + assert headers["Content-Type"] == "application/json" + assert headers["Accept"] == "application/json" + assert headers["Authorization"] == "Bearer test" + + +def test_create_action_payload() -> None: + """Test that the action payload is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + payload = tool.api_wrapper._create_action_payload("some instructions") + assert payload["instructions"] == "some instructions" + assert payload.get("preview_only") is None + + +def test_create_action_payload_preview() -> None: + """Test that the action payload with preview is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + payload = tool.api_wrapper._create_action_payload( + "some instructions", + preview_only=True, + ) + assert payload["instructions"] == "some instructions" + assert payload["preview_only"] is True + + +def test_create_action_payload_with_params() -> None: + """Test that the action payload with params is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"), + ) + + payload = tool.api_wrapper._create_action_payload( + "some instructions", + {"test": "test"}, + preview_only=True, + ) + assert payload["instructions"] == "some instructions" + assert payload["preview_only"] is True + assert payload["test"] == "test" + + +@pytest.mark.asyncio +async def test_apreview(mocker) -> None: # type: ignore[no-untyped-def] + """Test that the action payload with params is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper( + zapier_nla_api_key="test", + zapier_nla_api_base="http://localhost:8080/v1/", + ), + ) + mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") + await tool.api_wrapper.apreview( + "random_action_id", + "some instructions", + {"test": "test"}, + ) + mockObj.assert_called_once_with( + "POST", + "http://localhost:8080/v1/exposed/random_action_id/execute/", + json={ + "instructions": "some instructions", + "preview_only": True, + "test": "test", + }, + ) + + +@pytest.mark.asyncio +async def test_arun(mocker) -> None: # type: ignore[no-untyped-def] + """Test that the action payload with params is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper( + zapier_nla_api_key="test", + zapier_nla_api_base="http://localhost:8080/v1/", + ), + ) + mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") + await tool.api_wrapper.arun( + "random_action_id", + "some instructions", + {"test": "test"}, + ) + mockObj.assert_called_once_with( + "POST", + "http://localhost:8080/v1/exposed/random_action_id/execute/", + json={"instructions": "some instructions", "test": "test"}, + ) + + +@pytest.mark.asyncio +async def test_alist(mocker) -> None: # type: ignore[no-untyped-def] + """Test that the action payload with params is being created correctly.""" + tool = ZapierNLARunAction( + action_id="test", + zapier_description="test", + params_schema={"test": "test"}, + api_wrapper=ZapierNLAWrapper( + zapier_nla_api_key="test", + zapier_nla_api_base="http://localhost:8080/v1/", + ), + ) + mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest") + await tool.api_wrapper.alist() + mockObj.assert_called_once_with( + "GET", + "http://localhost:8080/v1/exposed/", + ) + + +def test_wrapper_fails_no_api_key_or_access_token_initialization() -> None: + """Test Wrapper requires either an API Key or OAuth Access Token.""" + with pytest.raises(ValueError): + ZapierNLAWrapper() + + +def test_wrapper_api_key_initialization() -> None: + """Test Wrapper initializes with an API Key.""" + ZapierNLAWrapper(zapier_nla_api_key="test") + + +def test_wrapper_access_token_initialization() -> None: + """Test Wrapper initializes with an API Key.""" + ZapierNLAWrapper(zapier_nla_oauth_access_token="test") + + +def test_list_raises_401_invalid_api_key() -> None: + """Test that a valid error is raised when the API Key is invalid.""" + mock_response = MagicMock() + mock_response.status_code = 401 + mock_response.raise_for_status.side_effect = requests.HTTPError( + "401 Client Error: Unauthorized for url: https://nla.zapier.com/api/v1/exposed/" + ) + mock_session = MagicMock() + mock_session.get.return_value = mock_response + + with patch("requests.Session", return_value=mock_session): + wrapper = ZapierNLAWrapper(zapier_nla_api_key="test") + + with pytest.raises(requests.HTTPError) as err: + wrapper.list() + + assert str(err.value).startswith( + "An unauthorized response occurred. Check that your api key is correct. " + "Err:" + ) + + +def test_list_raises_401_invalid_access_token() -> None: + """Test that a valid error is raised when the API Key is invalid.""" + mock_response = MagicMock() + mock_response.status_code = 401 + mock_response.raise_for_status.side_effect = requests.HTTPError( + "401 Client Error: Unauthorized for url: https://nla.zapier.com/api/v1/exposed/" + ) + mock_session = MagicMock() + mock_session.get.return_value = mock_response + + with patch("requests.Session", return_value=mock_session): + wrapper = ZapierNLAWrapper(zapier_nla_oauth_access_token="test") + + with pytest.raises(requests.HTTPError) as err: + wrapper.list() + + assert str(err.value).startswith( + "An unauthorized response occurred. Check that your access token is " + "correct and doesn't need to be refreshed. Err:" + ) + + +def test_list_raises_other_error() -> None: + """Test that a valid error is raised when an unknown HTTP Error occurs.""" + mock_response = MagicMock() + mock_response.status_code = 404 + mock_response.raise_for_status.side_effect = requests.HTTPError( + "404 Client Error: Not found for url" + ) + mock_session = MagicMock() + mock_session.get.return_value = mock_response + + with patch("requests.Session", return_value=mock_session): + wrapper = ZapierNLAWrapper(zapier_nla_oauth_access_token="test") + + with pytest.raises(requests.HTTPError) as err: + wrapper.list() + + assert str(err.value) == "404 Client Error: Not found for url" diff --git a/tests/unit_tests/utilities/__init__.py b/libs/langchain/tests/unit_tests/utilities/__init__.py similarity index 100% rename from tests/unit_tests/utilities/__init__.py rename to libs/langchain/tests/unit_tests/utilities/__init__.py diff --git a/tests/unit_tests/utilities/test_graphql.py b/libs/langchain/tests/unit_tests/utilities/test_graphql.py similarity index 100% rename from tests/unit_tests/utilities/test_graphql.py rename to libs/langchain/tests/unit_tests/utilities/test_graphql.py diff --git a/tests/unit_tests/utilities/test_loading.py b/libs/langchain/tests/unit_tests/utilities/test_loading.py similarity index 100% rename from tests/unit_tests/utilities/test_loading.py rename to libs/langchain/tests/unit_tests/utilities/test_loading.py diff --git a/tests/unit_tests/vectorstores/__init__.py b/libs/langchain/tests/unit_tests/vectorstores/__init__.py similarity index 100% rename from tests/unit_tests/vectorstores/__init__.py rename to libs/langchain/tests/unit_tests/vectorstores/__init__.py diff --git a/tests/unit_tests/vectorstores/test_sklearn.py b/libs/langchain/tests/unit_tests/vectorstores/test_sklearn.py similarity index 100% rename from tests/unit_tests/vectorstores/test_sklearn.py rename to libs/langchain/tests/unit_tests/vectorstores/test_sklearn.py diff --git a/tests/unit_tests/vectorstores/test_utils.py b/libs/langchain/tests/unit_tests/vectorstores/test_utils.py similarity index 100% rename from tests/unit_tests/vectorstores/test_utils.py rename to libs/langchain/tests/unit_tests/vectorstores/test_utils.py diff --git a/pyproject.toml b/pyproject.toml index f988eb7714..81f499992c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,420 +1,6 @@ -[tool.poetry] -name = "langchain" -version = "0.0.239" -description = "Building applications with LLMs through composability" -authors = [] -license = "MIT" -readme = "README.md" -repository = "https://www.github.com/hwchase17/langchain" - -[tool.poetry.scripts] -langchain-server = "langchain.server:main" - -[tool.poetry.dependencies] -python = ">=3.8.1,<4.0" -pydantic = "^1" -SQLAlchemy = ">=1.4,<3" -requests = "^2" -PyYAML = ">=5.4.1" -numpy = "^1" -azure-core = {version = "^1.26.4", optional=true} -tqdm = {version = ">=4.48.0", optional = true} -openapi-schema-pydantic = "^1.2" -faiss-cpu = {version = "^1", optional = true} -wikipedia = {version = "^1", optional = true} -elasticsearch = {version = "^8", optional = true} -opensearch-py = {version = "^2.0.0", optional = true} -redis = {version = "^4", optional = true} -manifest-ml = {version = "^0.0.1", optional = true} -spacy = {version = "^3", optional = true} -nltk = {version = "^3", optional = true} -transformers = {version = "^4", optional = true} -beautifulsoup4 = {version = "^4", optional = true} -torch = {version = ">=1,<3", optional = true} -jinja2 = {version = "^3", optional = true} -tiktoken = {version = "^0.3.2", optional = true, python="^3.9"} -pinecone-client = {version = "^2", optional = true} -pinecone-text = {version = "^0.4.2", optional = true} -pymongo = {version = "^4.3.3", optional = true} -clickhouse-connect = {version="^0.5.14", optional=true} -weaviate-client = {version = "^3", optional = true} -marqo = {version = "^0.11.0", optional=true} -google-api-python-client = {version = "2.70.0", optional = true} -google-auth = {version = "^2.18.1", optional = true} -wolframalpha = {version = "5.0.0", optional = true} -anthropic = {version = "^0.3", optional = true} -qdrant-client = {version = "^1.3.1", optional = true, python = ">=3.8.1,<3.12"} -dataclasses-json = "^0.5.7" -tensorflow-text = {version = "^2.11.0", optional = true, python = "^3.10, <3.12"} -tenacity = "^8.1.0" -cohere = {version = "^3", optional = true} -openai = {version = "^0", optional = true} -nlpcloud = {version = "^1", optional = true} -nomic = {version = "^1.0.43", optional = true} -huggingface_hub = {version = "^0", optional = true} -octoai-sdk = {version = "^0.1.1", optional = true} -jina = {version = "^3.14", optional = true} -google-search-results = {version = "^2", optional = true} -sentence-transformers = {version = "^2", optional = true} -aiohttp = "^3.8.3" -arxiv = {version = "^1.4", optional = true} -pypdf = {version = "^3.4.0", optional = true} -networkx = {version="^2.6.3", optional = true} -aleph-alpha-client = {version="^2.15.0", optional = true} -deeplake = {version = "^3.6.8", optional = true} -libdeeplake = {version = "^0.0.60", optional = true} -pgvector = {version = "^0.1.6", optional = true} -psycopg2-binary = {version = "^2.9.5", optional = true} -pyowm = {version = "^3.3.0", optional = true} -async-timeout = {version = "^4.0.0", python = "<3.11"} -azure-identity = {version = "^1.12.0", optional=true} -gptcache = {version = ">=0.1.7", optional = true} -atlassian-python-api = {version = "^3.36.0", optional=true} -pytesseract = {version = "^0.3.10", optional=true} -html2text = {version="^2020.1.16", optional=true} -numexpr = "^2.8.4" -duckduckgo-search = {version="^3.8.3", optional=true} -azure-cosmos = {version="^4.4.0b1", optional=true} -lark = {version="^1.1.5", optional=true} -lancedb = {version = "^0.1", optional = true} -pexpect = {version = "^4.8.0", optional = true} -pyvespa = {version = "^0.33.0", optional = true} -O365 = {version = "^2.0.26", optional = true} -jq = {version = "^1.4.1", optional = true} -steamship = {version = "^2.16.9", optional = true} -pdfminer-six = {version = "^20221105", optional = true} -docarray = {version="^0.32.0", extras=["hnswlib"], optional=true} -lxml = {version = "^4.9.2", optional = true} -pymupdf = {version = "^1.22.3", optional = true} -pypdfium2 = {version = "^4.10.0", optional = true} -gql = {version = "^3.4.1", optional = true} -pandas = {version = "^2.0.1", optional = true} -telethon = {version = "^1.28.5", optional = true} -neo4j = {version = "^5.8.1", optional = true} -zep-python = {version=">=0.32", optional=true} -langkit = {version = ">=0.0.6, <0.1.0", optional = true} -chardet = {version="^5.1.0", optional=true} -requests-toolbelt = {version = "^1.0.0", optional = true} -openlm = {version = "^0.0.5", optional = true} -scikit-learn = {version = "^1.2.2", optional = true} -azure-ai-formrecognizer = {version = "^3.2.1", optional = true} -azure-ai-vision = {version = "^0.11.1b1", optional = true} -azure-cognitiveservices-speech = {version = "^1.28.0", optional = true} -py-trello = {version = "^0.19.0", optional = true} -momento = {version = "^1.5.0", optional = true} -bibtexparser = {version = "^1.4.0", optional = true} -singlestoredb = {version = "^0.7.1", optional = true} -pyspark = {version = "^3.4.0", optional = true} -clarifai = {version = ">=9.1.0", optional = true} -tigrisdb = {version = "^1.0.0b6", optional = true} -nebula3-python = {version = "^3.4.0", optional = true} -mwparserfromhell = {version = "^0.6.4", optional = true} -mwxml = {version = "^0.3.3", optional = true} -awadb = {version = "^0.3.3", optional = true} -azure-search-documents = {version = "11.4.0a20230509004", source = "azure-sdk-dev", optional = true} -esprima = {version = "^4.0.1", optional = true} -openllm = {version = ">=0.1.19", optional = true} -streamlit = {version = "^1.18.0", optional = true, python = ">=3.8.1,<3.9.7 || >3.9.7,<4.0"} -psychicapi = {version = "^0.8.0", optional = true} -cassio = {version = "^0.0.7", optional = true} -rdflib = {version = "^6.3.2", optional = true} -sympy = {version = "^1.12", optional = true} -rapidfuzz = {version = "^3.1.1", optional = true} -langsmith = "~0.0.11" -rank-bm25 = {version = "^0.2.2", optional = true} -amadeus = {version = ">=8.1.0", optional = true} -geopandas = {version = "^0.13.1", optional = true} - -[tool.poetry.group.docs.dependencies] -autodoc_pydantic = "^1.8.0" -myst_parser = "^0.18.1" -nbsphinx = "^0.8.9" -sphinx = "^4.5.0" -sphinx-autobuild = "^2021.3.14" -sphinx_book_theme = "^0.3.3" -sphinx_rtd_theme = "^1.0.0" -sphinx-typlog-theme = "^0.8.0" -sphinx-panels = "^0.6.0" -toml = "^0.10.2" -myst-nb = "^0.17.1" -linkchecker = "^10.2.1" -sphinx-copybutton = "^0.5.1" -nbdoc = "^0.0.82" - -[tool.poetry.group.test.dependencies] -# The only dependencies that should be added are -# dependencies used for running tests (e.g., pytest, freezegun, response). -# Any dependencies that do not meet that criteria will be removed. -pytest = "^7.3.0" -pytest-cov = "^4.0.0" -pytest-dotenv = "^0.5.2" -duckdb-engine = "^0.7.0" -pytest-watcher = "^0.2.6" -freezegun = "^1.2.2" -responses = "^0.22.0" -pytest-asyncio = "^0.20.3" -lark = "^1.1.5" -pandas = "^2.0.0" -pytest-mock = "^3.10.0" -pytest-socket = "^0.6.0" -syrupy = "^4.0.2" - [tool.poetry.group.codespell.dependencies] codespell = "^2.2.0" -[tool.poetry.group.test_integration] -optional = true - -[tool.poetry.group.test_integration.dependencies] -# Do not add dependencies in the test_integration group -# Instead: -# 1. Add an optional dependency to the main group -# poetry add --optional [package name] -# 2. Add the package name to the extended_testing extra (find it below) -# 3. Relock the poetry file -# poetry lock --no-update -# 4. Favor unit tests not integration tests. -# Use the @pytest.mark.requires(pkg_name) decorator in unit_tests. -# Your tests should not rely on network access, as it prevents other -# developers from being able to easily run them. -# Instead write unit tests that use the `responses` library or mock.patch with -# fixtures. Keep the fixtures minimal. -# See CONTRIBUTING.md for more instructions on working with optional dependencies. -# https://github.com/hwchase17/langchain/blob/master/.github/CONTRIBUTING.md#working-with-optional-dependencies -pytest-vcr = "^1.0.2" -wrapt = "^1.15.0" -openai = "^0.27.4" -elasticsearch = {extras = ["async"], version = "^8.6.2"} -redis = "^4.5.4" -pinecone-client = "^2.2.1" -pinecone-text = "^0.4.2" -pymongo = "^4.3.3" -clickhouse-connect = "^0.5.14" -transformers = "^4.27.4" -deeplake = "^3.6.8" -libdeeplake = "^0.0.60" -weaviate-client = "^3.15.5" -torch = "^1.0.0" -chromadb = "^0.4.0" -tiktoken = "^0.3.3" -python-dotenv = "^1.0.0" -sentence-transformers = "^2" -gptcache = "^0.1.9" -promptlayer = "^0.1.80" -tair = "^1.3.3" -wikipedia = "^1" -cassio = "^0.0.7" -arxiv = "^1.4" -mastodon-py = "^1.8.1" -momento = "^1.5.0" -# Please do not add any dependencies in the test_integration group -# See instructions above ^^ - -[tool.poetry.group.lint.dependencies] -ruff = "^0.0.249" -types-toml = "^0.10.8.1" -types-redis = "^4.3.21.6" -types-pytz = "^2023.3.0.0" -black = "^23.1.0" -types-chardet = "^5.0.4.6" -mypy-protobuf = "^3.0.0" - -[tool.poetry.group.typing.dependencies] -mypy = "^0.991" -types-pyyaml = "^6.0.12.2" -types-requests = "^2.28.11.5" - -[tool.poetry.group.dev] -optional = true - -[tool.poetry.group.dev.dependencies] -jupyter = "^1.0.0" -playwright = "^1.28.0" -setuptools = "^67.6.1" - -[tool.poetry.extras] -llms = ["anthropic", "clarifai", "cohere", "openai", "openllm", "openlm", "nlpcloud", "huggingface_hub", "manifest-ml", "torch", "transformers"] -qdrant = ["qdrant-client"] -openai = ["openai", "tiktoken"] -text_helpers = ["chardet"] -clarifai = ["clarifai"] -cohere = ["cohere"] -docarray = ["docarray"] -embeddings = ["sentence-transformers"] -javascript = ["esprima"] -azure = [ - "azure-identity", - "azure-cosmos", - "openai", - "azure-core", - "azure-ai-formrecognizer", - "azure-ai-vision", - "azure-cognitiveservices-speech", - "azure-search-documents", -] -all = [ - "anthropic", - "clarifai", - "cohere", - "openai", - "nlpcloud", - "huggingface_hub", - "jina", - "manifest-ml", - "elasticsearch", - "opensearch-py", - "google-search-results", - "faiss-cpu", - "sentence-transformers", - "transformers", - "spacy", - "nltk", - "wikipedia", - "beautifulsoup4", - "tiktoken", - "torch", - "jinja2", - "pinecone-client", - "pinecone-text", - "marqo", - "pymongo", - "weaviate-client", - "redis", - "google-api-python-client", - "google-auth", - "wolframalpha", - "qdrant-client", - "tensorflow-text", - "pypdf", - "networkx", - "nomic", - "aleph-alpha-client", - "deeplake", - "libdeeplake", - "pgvector", - "psycopg2-binary", - "pyowm", - "pytesseract", - "html2text", - "atlassian-python-api", - "gptcache", - "duckduckgo-search", - "arxiv", - "azure-identity", - "clickhouse-connect", - "azure-cosmos", - "lancedb", - "langkit", - "lark", - "pexpect", - "pyvespa", - "O365", - "jq", - "docarray", - "steamship", - "pdfminer-six", - "lxml", - "requests-toolbelt", - "neo4j", - "openlm", - "azure-ai-formrecognizer", - "azure-ai-vision", - "azure-cognitiveservices-speech", - "momento", - "singlestoredb", - "tigrisdb", - "nebula3-python", - "awadb", - "esprima", - "octoai-sdk", - "rdflib", - "amadeus", -] - -# An extra used to be able to add extended testing. -# Please use new-line on formatting to make it easier to add new packages without -# merge-conflicts -extended_testing = [ - "beautifulsoup4", - "bibtexparser", - "cassio", - "chardet", - "esprima", - "jq", - "pdfminer.six", - "pgvector", - "pypdf", - "pymupdf", - "pypdfium2", - "tqdm", - "lxml", - "atlassian-python-api", - "mwparserfromhell", - "mwxml", - "pandas", - "telethon", - "psychicapi", - "zep-python", - "gql", - "requests_toolbelt", - "html2text", - "py-trello", - "scikit-learn", - "streamlit", - "pyspark", - "openai", - "sympy", - "rapidfuzz", - "openai", - "rank_bm25", - "geopandas", -] - -[[tool.poetry.source]] -name = "azure-sdk-dev" -url = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" -secondary = true - -[tool.ruff] -select = [ - "E", # pycodestyle - "F", # pyflakes - "I", # isort -] -exclude = [ - "tests/integration_tests/examples/non-utf8-encoding.py", -] - -[tool.mypy] -ignore_missing_imports = "True" -disallow_untyped_defs = "True" -exclude = ["notebooks", "examples", "example_data"] - -[tool.coverage.run] -omit = [ - "tests/*", -] - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" - -[tool.pytest.ini_options] -# --strict-markers will raise errors on unknown marks. -# https://docs.pytest.org/en/7.1.x/how-to/mark.html#raising-errors-on-unknown-marks -# -# https://docs.pytest.org/en/7.1.x/reference/reference.html -# --strict-config any warnings encountered while parsing the `pytest` -# section of the configuration file raise errors. -# -# https://github.com/tophat/syrupy -# --snapshot-warn-unused Prints a warning on unused snapshots rather than fail the test suite. -addopts = "--strict-markers --strict-config --durations=5 --snapshot-warn-unused" -# Registering custom markers. -# https://docs.pytest.org/en/7.1.x/example/markers.html#registering-markers -markers = [ - "requires: mark tests as requiring a specific library" -] [tool.codespell] skip = '.git,*.pdf,*.svg,*.pdf,*.yaml,*.ipynb,poetry.lock,*.min.js,*.css,package-lock.json,example_data,_dist,examples'