Remove packages for pydantic compatibility (#9217)

# Poetry updates

This PR updates LangChains poetry file to remove
any dependencies that aren't pydantic v2 compatible yet.

All packages remain usable under pydantic v1, and can be installed
separately. 

## Bumping the following packages:

* langsmith

## Removing the following packages

not used in extended unit-tests:

* zep-python, anthropic, jina, spacy, steamship, betabageldb

not used at all:

* octoai-sdk

Cleaning up extras w/ for removed packages.

## Snapshots updated

Some snapshots had to be updated due to a change in the data model in
langsmith. RunType used to be Union of Enum and string and was changed
to be string only.
pull/9254/head
Eugene Yurtsev 1 year ago committed by GitHub
parent e986afa13a
commit 0470198fb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

File diff suppressed because it is too large Load Diff

@ -26,7 +26,6 @@ elasticsearch = {version = "^8", optional = true}
opensearch-py = {version = "^2.0.0", optional = true} opensearch-py = {version = "^2.0.0", optional = true}
redis = {version = "^4", optional = true} redis = {version = "^4", optional = true}
manifest-ml = {version = "^0.0.1", optional = true} manifest-ml = {version = "^0.0.1", optional = true}
spacy = {version = "^3", optional = true}
nltk = {version = "^3", optional = true} nltk = {version = "^3", optional = true}
transformers = {version = "^4", optional = true} transformers = {version = "^4", optional = true}
beautifulsoup4 = {version = "^4", optional = true} beautifulsoup4 = {version = "^4", optional = true}
@ -42,7 +41,6 @@ marqo = {version = "^0.11.0", optional=true}
google-api-python-client = {version = "2.70.0", optional = true} google-api-python-client = {version = "2.70.0", optional = true}
google-auth = {version = "^2.18.1", optional = true} google-auth = {version = "^2.18.1", optional = true}
wolframalpha = {version = "5.0.0", 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"} qdrant-client = {version = "^1.3.1", optional = true, python = ">=3.8.1,<3.12"}
dataclasses-json = "^0.5.7" dataclasses-json = "^0.5.7"
tensorflow-text = {version = "^2.11.0", optional = true, python = "^3.10, <3.12"} tensorflow-text = {version = "^2.11.0", optional = true, python = "^3.10, <3.12"}
@ -52,8 +50,6 @@ openai = {version = "^0", optional = true}
nlpcloud = {version = "^1", optional = true} nlpcloud = {version = "^1", optional = true}
nomic = {version = "^1.0.43", optional = true} nomic = {version = "^1.0.43", optional = true}
huggingface_hub = {version = "^0", 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} google-search-results = {version = "^2", optional = true}
sentence-transformers = {version = "^2", optional = true} sentence-transformers = {version = "^2", optional = true}
aiohttp = "^3.8.3" aiohttp = "^3.8.3"
@ -81,7 +77,6 @@ pexpect = {version = "^4.8.0", optional = true}
pyvespa = {version = "^0.33.0", optional = true} pyvespa = {version = "^0.33.0", optional = true}
O365 = {version = "^2.0.26", optional = true} O365 = {version = "^2.0.26", optional = true}
jq = {version = "^1.4.1", optional = true} jq = {version = "^1.4.1", optional = true}
steamship = {version = "^2.16.9", optional = true}
pdfminer-six = {version = "^20221105", optional = true} pdfminer-six = {version = "^20221105", optional = true}
docarray = {version="^0.32.0", extras=["hnswlib"], optional=true} docarray = {version="^0.32.0", extras=["hnswlib"], optional=true}
lxml = {version = "^4.9.2", optional = true} lxml = {version = "^4.9.2", optional = true}
@ -91,7 +86,6 @@ gql = {version = "^3.4.1", optional = true}
pandas = {version = "^2.0.1", optional = true} pandas = {version = "^2.0.1", optional = true}
telethon = {version = "^1.28.5", optional = true} telethon = {version = "^1.28.5", optional = true}
neo4j = {version = "^5.8.1", optional = true} neo4j = {version = "^5.8.1", optional = true}
zep-python = {version = ">=1.0.1,<1.1.0", optional = true}
langkit = {version = ">=0.0.6, <0.1.0", optional = true} langkit = {version = ">=0.0.6, <0.1.0", optional = true}
chardet = {version="^5.1.0", optional=true} chardet = {version="^5.1.0", optional=true}
requests-toolbelt = {version = "^1.0.0", optional = true} requests-toolbelt = {version = "^1.0.0", optional = true}
@ -120,11 +114,10 @@ cassio = {version = "^0.0.7", optional = true}
rdflib = {version = "^6.3.2", optional = true} rdflib = {version = "^6.3.2", optional = true}
sympy = {version = "^1.12", optional = true} sympy = {version = "^1.12", optional = true}
rapidfuzz = {version = "^3.1.1", optional = true} rapidfuzz = {version = "^3.1.1", optional = true}
langsmith = "~0.0.11" langsmith = "~0.0.21"
rank-bm25 = {version = "^0.2.2", optional = true} rank-bm25 = {version = "^0.2.2", optional = true}
amadeus = {version = ">=8.1.0", optional = true} amadeus = {version = ">=8.1.0", optional = true}
geopandas = {version = "^0.13.1", optional = true} geopandas = {version = "^0.13.1", optional = true}
xinference = {version = "^0.0.6", optional = true}
python-arango = {version = "^7.5.9", optional = true} python-arango = {version = "^7.5.9", optional = true}
gitpython = {version = "^3.1.32", optional = true} gitpython = {version = "^3.1.32", optional = true}
librosa = {version="^0.10.0.post2", optional = true } librosa = {version="^0.10.0.post2", optional = true }
@ -133,7 +126,6 @@ newspaper3k = {version = "^0.2.8", optional = true}
amazon-textract-caller = {version = "<2", optional = true} amazon-textract-caller = {version = "<2", optional = true}
xata = {version = "^1.0.0a7", optional = true} xata = {version = "^1.0.0a7", optional = true}
xmltodict = {version = "^0.13.0", optional = true} xmltodict = {version = "^0.13.0", optional = true}
betabageldb = {version = "0.2.32", optional = true, python = ">=3.7,<3.11"}
[tool.poetry.group.test.dependencies] [tool.poetry.group.test.dependencies]
@ -205,7 +197,7 @@ playwright = "^1.28.0"
setuptools = "^67.6.1" setuptools = "^67.6.1"
[tool.poetry.extras] [tool.poetry.extras]
llms = ["anthropic", "clarifai", "cohere", "openai", "openllm", "openlm", "nlpcloud", "huggingface_hub", "manifest-ml", "torch", "transformers", "xinference"] llms = ["clarifai", "cohere", "openai", "openllm", "openlm", "nlpcloud", "huggingface_hub", "manifest-ml", "torch", "transformers", ]
qdrant = ["qdrant-client"] qdrant = ["qdrant-client"]
openai = ["openai", "tiktoken"] openai = ["openai", "tiktoken"]
text_helpers = ["chardet"] text_helpers = ["chardet"]
@ -225,13 +217,11 @@ azure = [
"azure-search-documents", "azure-search-documents",
] ]
all = [ all = [
"anthropic",
"clarifai", "clarifai",
"cohere", "cohere",
"openai", "openai",
"nlpcloud", "nlpcloud",
"huggingface_hub", "huggingface_hub",
"jina",
"manifest-ml", "manifest-ml",
"elasticsearch", "elasticsearch",
"opensearch-py", "opensearch-py",
@ -239,7 +229,6 @@ all = [
"faiss-cpu", "faiss-cpu",
"sentence-transformers", "sentence-transformers",
"transformers", "transformers",
"spacy",
"nltk", "nltk",
"wikipedia", "wikipedia",
"beautifulsoup4", "beautifulsoup4",
@ -283,7 +272,6 @@ all = [
"O365", "O365",
"jq", "jq",
"docarray", "docarray",
"steamship",
"pdfminer-six", "pdfminer-six",
"lxml", "lxml",
"requests-toolbelt", "requests-toolbelt",
@ -298,10 +286,8 @@ all = [
"nebula3-python", "nebula3-python",
"awadb", "awadb",
"esprima", "esprima",
"octoai-sdk",
"rdflib", "rdflib",
"amadeus", "amadeus",
"xinference",
"librosa", "librosa",
"python-arango", "python-arango",
] ]
@ -330,7 +316,6 @@ extended_testing = [
"pandas", "pandas",
"telethon", "telethon",
"psychicapi", "psychicapi",
"zep-python",
"gql", "gql",
"requests_toolbelt", "requests_toolbelt",
"html2text", "html2text",
@ -345,14 +330,11 @@ extended_testing = [
"rank_bm25", "rank_bm25",
"geopandas", "geopandas",
"jinja2", "jinja2",
"xinference",
"gitpython", "gitpython",
"newspaper3k", "newspaper3k",
"feedparser", "feedparser",
"xata", "xata",
"xmltodict", "xmltodict",
"betabageldb",
"anthropic",
] ]
[tool.ruff] [tool.ruff]

@ -95,3 +95,19 @@ def test_formatting() -> None:
chat_messages = [HumanMessage(content="Hello"), AIMessage(content="Answer:")] chat_messages = [HumanMessage(content="Hello"), AIMessage(content="Answer:")]
result = chat._convert_messages_to_prompt(chat_messages) result = chat._convert_messages_to_prompt(chat_messages)
assert result == "\n\nHuman: Hello\n\nAssistant: Answer:" assert result == "\n\nHuman: Hello\n\nAssistant: Answer:"
def test_anthropic_model_kwargs() -> None:
llm = ChatAnthropic(model_kwargs={"foo": "bar"})
assert llm.model_kwargs == {"foo": "bar"}
def test_anthropic_invalid_model_kwargs() -> None:
with pytest.raises(ValueError):
ChatAnthropic(model_kwargs={"max_tokens_to_sample": 5})
def test_anthropic_incorrect_field() -> None:
with pytest.warns(match="not default parameter"):
llm = ChatAnthropic(foo="bar")
assert llm.model_kwargs == {"foo": "bar"}

File diff suppressed because one or more lines are too long

@ -1,4 +1,3 @@
import warnings
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
from uuid import UUID from uuid import UUID
@ -35,7 +34,6 @@ from langchain.schema.runnable import (
RunnableSequence, RunnableSequence,
RunnableWithFallbacks, RunnableWithFallbacks,
) )
from langchain.utils.pydantic import PYDANTIC_MAJOR_VERSION
class FakeTracer(BaseTracer): class FakeTracer(BaseTracer):
@ -253,13 +251,7 @@ async def test_prompt_with_chat_model(
] ]
) )
if PYDANTIC_MAJOR_VERSION == 1:
assert tracer.runs == snapshot assert tracer.runs == snapshot
else:
warnings.warn(
f"testing snapshot for pydantic version {PYDANTIC_MAJOR_VERSION} is "
f"not supported yet"
)
mocker.stop(prompt_spy) mocker.stop(prompt_spy)
mocker.stop(chat_spy) mocker.stop(chat_spy)
@ -361,13 +353,7 @@ async def test_prompt_with_llm(
HumanMessage(content="What is your name?"), HumanMessage(content="What is your name?"),
] ]
) )
if PYDANTIC_MAJOR_VERSION == 1:
assert tracer.runs == snapshot assert tracer.runs == snapshot
else:
warnings.warn(
f"testing snapshot for pydantic version {PYDANTIC_MAJOR_VERSION} is "
f"not supported yet"
)
mocker.stop(prompt_spy) mocker.stop(prompt_spy)
mocker.stop(llm_spy) mocker.stop(llm_spy)
@ -400,13 +386,7 @@ async def test_prompt_with_llm(
] ]
), ),
] ]
if PYDANTIC_MAJOR_VERSION == 1:
assert tracer.runs == snapshot assert tracer.runs == snapshot
else:
warnings.warn(
f"testing snapshot for pydantic version {PYDANTIC_MAJOR_VERSION} is "
f"not supported yet"
)
mocker.stop(prompt_spy) mocker.stop(prompt_spy)
mocker.stop(llm_spy) mocker.stop(llm_spy)
@ -465,13 +445,7 @@ def test_prompt_with_chat_model_and_parser(
) )
assert parser_spy.call_args.args[1] == AIMessage(content="foo, bar") assert parser_spy.call_args.args[1] == AIMessage(content="foo, bar")
if PYDANTIC_MAJOR_VERSION == 1:
assert tracer.runs == snapshot assert tracer.runs == snapshot
else:
warnings.warn(
f"testing snapshot for pydantic version {PYDANTIC_MAJOR_VERSION} is "
f"not supported yet"
)
@freeze_time("2023-01-01") @freeze_time("2023-01-01")
@ -529,13 +503,8 @@ def test_combining_sequences(
assert combined_chain.invoke( assert combined_chain.invoke(
{"question": "What is your name?"}, dict(callbacks=[tracer]) {"question": "What is your name?"}, dict(callbacks=[tracer])
) == ["baz", "qux"] ) == ["baz", "qux"]
if PYDANTIC_MAJOR_VERSION == 1:
assert tracer.runs == snapshot assert tracer.runs == snapshot
else:
warnings.warn(
f"testing snapshot for pydantic version {PYDANTIC_MAJOR_VERSION} is "
f"not supported yet"
)
@freeze_time("2023-01-01") @freeze_time("2023-01-01")

Loading…
Cancel
Save