test(AbstractGraph): add AbstractGraph tests

This commit is contained in:
Federico Aguzzi 2024-08-27 13:46:42 +02:00
parent f6df9b7512
commit 229d74d4bd
4 changed files with 34 additions and 314 deletions

View File

@ -15,8 +15,6 @@ aiohappyeyeballs==2.3.5
aiohttp==3.10.3
# via langchain
# via langchain-community
# via langchain-fireworks
# via langchain-nvidia-ai-endpoints
aiosignal==1.3.1
# via aiohttp
alabaster==0.7.16
@ -25,11 +23,7 @@ altair==5.4.0
# via streamlit
annotated-types==0.7.0
# via pydantic
anthropic==0.33.0
# via langchain-anthropic
anyio==4.4.0
# via anthropic
# via groq
# via httpx
# via openai
# via starlette
@ -55,8 +49,6 @@ boto3==1.34.158
botocore==1.34.158
# via boto3
# via s3transfer
browserbase==0.3.0
# via scrapegraphai
burr==0.22.1
# via scrapegraphai
cachetools==5.4.0
@ -78,17 +70,11 @@ cycler==0.12.1
# via matplotlib
dataclasses-json==0.6.7
# via langchain-community
defusedxml==0.7.1
# via langchain-anthropic
dill==0.3.8
# via multiprocess
# via pylint
distro==1.9.0
# via anthropic
# via groq
# via openai
docstring-parser==0.16
# via google-cloud-aiplatform
docutils==0.19
# via sphinx
exceptiongroup==1.2.2
@ -102,10 +88,6 @@ fastapi-pagination==0.12.26
# via burr
filelock==3.15.4
# via huggingface-hub
# via torch
# via transformers
fireworks-ai==0.15.0
# via langchain-fireworks
fonttools==4.53.1
# via matplotlib
free-proxy==1.1.1
@ -115,7 +97,6 @@ frozenlist==1.4.1
# via aiosignal
fsspec==2024.6.1
# via huggingface-hub
# via torch
furo==2024.5.6
# via scrapegraphai
gitdb==4.0.11
@ -129,11 +110,6 @@ google-ai-generativelanguage==0.6.6
google-api-core==2.19.1
# via google-ai-generativelanguage
# via google-api-python-client
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via google-cloud-core
# via google-cloud-resource-manager
# via google-cloud-storage
# via google-generativeai
google-api-python-client==2.140.0
# via google-generativeai
@ -142,52 +118,21 @@ google-auth==2.33.0
# via google-api-core
# via google-api-python-client
# via google-auth-httplib2
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via google-cloud-core
# via google-cloud-resource-manager
# via google-cloud-storage
# via google-generativeai
google-auth-httplib2==0.2.0
# via google-api-python-client
google-cloud-aiplatform==1.61.0
# via langchain-google-vertexai
google-cloud-bigquery==3.25.0
# via google-cloud-aiplatform
google-cloud-core==2.4.1
# via google-cloud-bigquery
# via google-cloud-storage
google-cloud-resource-manager==1.12.5
# via google-cloud-aiplatform
google-cloud-storage==2.18.2
# via google-cloud-aiplatform
# via langchain-google-vertexai
google-crc32c==1.5.0
# via google-cloud-storage
# via google-resumable-media
google-generativeai==0.7.2
# via langchain-google-genai
google-resumable-media==2.7.2
# via google-cloud-bigquery
# via google-cloud-storage
googleapis-common-protos==1.63.2
# via google-api-core
# via grpc-google-iam-v1
# via grpcio-status
graphviz==0.20.3
# via burr
# via scrapegraphai
greenlet==3.0.3
# via playwright
# via sqlalchemy
groq==0.9.0
# via langchain-groq
grpc-google-iam-v1==0.13.1
# via google-cloud-resource-manager
grpcio==1.65.4
# via google-api-core
# via googleapis-common-protos
# via grpc-google-iam-v1
# via grpcio-status
grpcio-status==1.62.3
# via google-api-core
@ -202,20 +147,12 @@ httplib2==0.22.0
# via google-api-python-client
# via google-auth-httplib2
httpx==0.27.0
# via anthropic
# via browserbase
# via fireworks-ai
# via groq
# via langchain-mistralai
# via openai
httpx-sse==0.4.0
# via fireworks-ai
# via langchain-mistralai
huggingface-hub==0.24.5
# via langchain-huggingface
# via sentence-transformers
# via tokenizers
# via transformers
idna==3.7
# via anyio
# via httpx
@ -236,15 +173,11 @@ jinja2==3.1.4
# via burr
# via pydeck
# via sphinx
# via torch
jiter==0.5.0
# via anthropic
# via openai
jmespath==1.0.1
# via boto3
# via botocore
joblib==1.4.2
# via scikit-learn
jsonpatch==1.33
# via langchain-core
jsonpointer==3.0.0
@ -258,40 +191,22 @@ kiwisolver==1.4.5
langchain==0.2.14
# via langchain-community
# via scrapegraphai
langchain-anthropic==0.1.22
# via scrapegraphai
langchain-aws==0.1.16
# via scrapegraphai
langchain-community==0.2.11
# via scrapegraphai
langchain-core==0.2.33
# via langchain
# via langchain-anthropic
# via langchain-aws
# via langchain-community
# via langchain-fireworks
# via langchain-google-genai
# via langchain-google-vertexai
# via langchain-groq
# via langchain-huggingface
# via langchain-mistralai
# via langchain-nvidia-ai-endpoints
# via langchain-openai
# via langchain-text-splitters
langchain-fireworks==0.1.7
# via scrapegraphai
langchain-google-genai==1.0.8
# via scrapegraphai
langchain-google-vertexai==1.0.8
# via scrapegraphai
langchain-groq==0.1.9
# via scrapegraphai
langchain-huggingface==0.0.3
# via scrapegraphai
langchain-mistralai==0.1.12
# via scrapegraphai
langchain-nvidia-ai-endpoints==0.2.1
# via scrapegraphai
langchain-openai==0.1.22
# via scrapegraphai
langchain-text-splitters==0.2.2
@ -320,8 +235,6 @@ minify-html==0.15.0
# via scrapegraphai
mpire==2.10.2
# via semchunk
mpmath==1.3.0
# via sympy
multidict==6.0.5
# via aiohttp
# via yarl
@ -331,8 +244,6 @@ mypy-extensions==1.0.0
# via typing-inspect
narwhals==1.3.0
# via altair
networkx==3.2.1
# via torch
numpy==1.26.4
# via contourpy
# via faiss-cpu
@ -343,24 +254,16 @@ numpy==1.26.4
# via pandas
# via pyarrow
# via pydeck
# via scikit-learn
# via scipy
# via sentence-transformers
# via sf-hamilton
# via shapely
# via streamlit
# via transformers
openai==1.40.3
# via burr
# via langchain-fireworks
# via langchain-openai
orjson==3.10.7
# via langsmith
packaging==24.1
# via altair
# via faiss-cpu
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via huggingface-hub
# via langchain-core
# via marshmallow
@ -368,21 +271,16 @@ packaging==24.1
# via pytest
# via sphinx
# via streamlit
# via transformers
pandas==2.2.2
# via scrapegraphai
# via sf-hamilton
# via streamlit
pillow==10.4.0
# via fireworks-ai
# via langchain-nvidia-ai-endpoints
# via matplotlib
# via sentence-transformers
# via streamlit
platformdirs==4.2.2
# via pylint
playwright==1.45.1
# via browserbase
# via scrapegraphai
# via undetected-playwright
pluggy==1.5.0
@ -390,16 +288,11 @@ pluggy==1.5.0
proto-plus==1.24.0
# via google-ai-generativelanguage
# via google-api-core
# via google-cloud-aiplatform
# via google-cloud-resource-manager
protobuf==4.25.4
# via google-ai-generativelanguage
# via google-api-core
# via google-cloud-aiplatform
# via google-cloud-resource-manager
# via google-generativeai
# via googleapis-common-protos
# via grpc-google-iam-v1
# via grpcio-status
# via proto-plus
# via streamlit
@ -411,15 +304,10 @@ pyasn1==0.6.0
pyasn1-modules==0.4.0
# via google-auth
pydantic==2.8.2
# via anthropic
# via browserbase
# via burr
# via fastapi
# via fastapi-pagination
# via fireworks-ai
# via google-cloud-aiplatform
# via google-generativeai
# via groq
# via langchain
# via langchain-core
# via langsmith
@ -444,7 +332,6 @@ pytest==8.0.0
pytest-mock==3.14.0
python-dateutil==2.9.0.post0
# via botocore
# via google-cloud-bigquery
# via matplotlib
# via pandas
python-dotenv==1.0.1
@ -456,28 +343,22 @@ pyyaml==6.0.2
# via langchain
# via langchain-community
# via langchain-core
# via transformers
referencing==0.35.1
# via jsonschema
# via jsonschema-specifications
regex==2024.7.24
# via tiktoken
# via transformers
requests==2.32.3
# via burr
# via free-proxy
# via google-api-core
# via google-cloud-bigquery
# via google-cloud-storage
# via huggingface-hub
# via langchain
# via langchain-community
# via langchain-fireworks
# via langsmith
# via sphinx
# via streamlit
# via tiktoken
# via transformers
rich==13.7.1
# via streamlit
rpds-py==0.20.0
@ -487,29 +368,16 @@ rsa==4.9
# via google-auth
s3transfer==0.10.2
# via boto3
safetensors==0.4.4
# via transformers
scikit-learn==1.5.1
# via sentence-transformers
scipy==1.13.1
# via scikit-learn
# via sentence-transformers
semchunk==2.2.0
# via scrapegraphai
sentence-transformers==3.0.1
# via langchain-huggingface
sf-hamilton==1.73.1
# via burr
shapely==2.0.5
# via google-cloud-aiplatform
six==1.16.0
# via python-dateutil
smmap==5.0.1
# via gitdb
sniffio==1.3.1
# via anthropic
# via anyio
# via groq
# via httpx
# via openai
snowballstemmer==2.2.0
@ -541,23 +409,16 @@ starlette==0.37.2
# via fastapi
streamlit==1.37.1
# via burr
sympy==1.13.2
# via torch
tenacity==8.5.0
# via langchain
# via langchain-community
# via langchain-core
# via streamlit
threadpoolctl==3.5.0
# via scikit-learn
tiktoken==0.7.0
# via langchain-openai
# via scrapegraphai
tokenizers==0.19.1
# via anthropic
# via langchain-huggingface
# via langchain-mistralai
# via transformers
toml==0.10.2
# via streamlit
tomli==2.0.1
@ -565,8 +426,6 @@ tomli==2.0.1
# via pytest
tomlkit==0.13.0
# via pylint
torch==2.2.2
# via sentence-transformers
tornado==6.4.1
# via streamlit
tqdm==4.66.5
@ -576,20 +435,13 @@ tqdm==4.66.5
# via openai
# via scrapegraphai
# via semchunk
# via sentence-transformers
# via transformers
transformers==4.44.0
# via langchain-huggingface
# via sentence-transformers
typing-extensions==4.12.2
# via altair
# via anthropic
# via anyio
# via astroid
# via fastapi
# via fastapi-pagination
# via google-generativeai
# via groq
# via huggingface-hub
# via langchain-core
# via openai
@ -601,7 +453,6 @@ typing-extensions==4.12.2
# via sqlalchemy
# via starlette
# via streamlit
# via torch
# via typing-inspect
# via uvicorn
typing-inspect==0.9.0

View File

@ -11,17 +11,11 @@
aiohttp==3.9.5
# via langchain
# via langchain-community
# via langchain-fireworks
# via langchain-nvidia-ai-endpoints
aiosignal==1.3.1
# via aiohttp
annotated-types==0.7.0
# via pydantic
anthropic==0.31.2
# via langchain-anthropic
anyio==4.4.0
# via anthropic
# via groq
# via httpx
# via openai
async-timeout==4.0.3
@ -37,8 +31,6 @@ boto3==1.34.146
botocore==1.34.146
# via boto3
# via s3transfer
browserbase==0.3.0
# via scrapegraphai
cachetools==5.4.0
# via google-auth
certifi==2024.7.4
@ -49,26 +41,16 @@ charset-normalizer==3.3.2
# via requests
dataclasses-json==0.6.7
# via langchain-community
defusedxml==0.7.1
# via langchain-anthropic
dill==0.3.8
# via multiprocess
distro==1.9.0
# via anthropic
# via groq
# via openai
docstring-parser==0.16
# via google-cloud-aiplatform
exceptiongroup==1.2.2
# via anyio
faiss-cpu==1.8.0.post1
# via scrapegraphai
filelock==3.15.4
# via huggingface-hub
# via torch
# via transformers
fireworks-ai==0.14.0
# via langchain-fireworks
free-proxy==1.1.1
# via scrapegraphai
frozenlist==1.4.1
@ -76,7 +58,6 @@ frozenlist==1.4.1
# via aiosignal
fsspec==2024.6.1
# via huggingface-hub
# via torch
google==3.0.0
# via scrapegraphai
google-ai-generativelanguage==0.6.6
@ -84,11 +65,6 @@ google-ai-generativelanguage==0.6.6
google-api-core==2.19.1
# via google-ai-generativelanguage
# via google-api-python-client
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via google-cloud-core
# via google-cloud-resource-manager
# via google-cloud-storage
# via google-generativeai
google-api-python-client==2.137.0
# via google-generativeai
@ -97,51 +73,19 @@ google-auth==2.32.0
# via google-api-core
# via google-api-python-client
# via google-auth-httplib2
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via google-cloud-core
# via google-cloud-resource-manager
# via google-cloud-storage
# via google-generativeai
google-auth-httplib2==0.2.0
# via google-api-python-client
google-cloud-aiplatform==1.59.0
# via langchain-google-vertexai
google-cloud-bigquery==3.25.0
# via google-cloud-aiplatform
google-cloud-core==2.4.1
# via google-cloud-bigquery
# via google-cloud-storage
google-cloud-resource-manager==1.12.4
# via google-cloud-aiplatform
google-cloud-storage==2.18.0
# via google-cloud-aiplatform
# via langchain-google-vertexai
google-crc32c==1.5.0
# via google-cloud-storage
# via google-resumable-media
google-generativeai==0.7.2
# via langchain-google-genai
google-resumable-media==2.7.1
# via google-cloud-bigquery
# via google-cloud-storage
googleapis-common-protos==1.63.2
# via google-api-core
# via grpc-google-iam-v1
# via grpcio-status
graphviz==0.20.3
# via scrapegraphai
greenlet==3.0.3
# via playwright
# via sqlalchemy
groq==0.9.0
# via langchain-groq
grpc-google-iam-v1==0.13.1
# via google-cloud-resource-manager
grpcio==1.65.1
# via google-api-core
# via googleapis-common-protos
# via grpc-google-iam-v1
# via grpcio-status
grpcio-status==1.62.2
# via google-api-core
@ -155,35 +99,22 @@ httplib2==0.22.0
# via google-api-python-client
# via google-auth-httplib2
httpx==0.27.0
# via anthropic
# via browserbase
# via fireworks-ai
# via groq
# via langchain-mistralai
# via openai
httpx-sse==0.4.0
# via fireworks-ai
# via langchain-mistralai
huggingface-hub==0.24.1
# via langchain-huggingface
# via sentence-transformers
# via tokenizers
# via transformers
idna==3.7
# via anyio
# via httpx
# via requests
# via yarl
jinja2==3.1.4
# via torch
jiter==0.5.0
# via anthropic
# via openai
jmespath==1.0.1
# via boto3
# via botocore
joblib==1.4.2
# via scikit-learn
jsonpatch==1.33
# via langchain-core
jsonpointer==3.0.0
@ -191,40 +122,22 @@ jsonpointer==3.0.0
langchain==0.2.14
# via langchain-community
# via scrapegraphai
langchain-anthropic==0.1.20
# via scrapegraphai
langchain-aws==0.1.12
# via scrapegraphai
langchain-community==0.2.10
# via scrapegraphai
langchain-core==0.2.33
# via langchain
# via langchain-anthropic
# via langchain-aws
# via langchain-community
# via langchain-fireworks
# via langchain-google-genai
# via langchain-google-vertexai
# via langchain-groq
# via langchain-huggingface
# via langchain-mistralai
# via langchain-nvidia-ai-endpoints
# via langchain-openai
# via langchain-text-splitters
langchain-fireworks==0.1.5
# via scrapegraphai
langchain-google-genai==1.0.8
# via scrapegraphai
langchain-google-vertexai==1.0.7
# via scrapegraphai
langchain-groq==0.1.6
# via scrapegraphai
langchain-huggingface==0.0.3
# via scrapegraphai
langchain-mistralai==0.1.12
# via scrapegraphai
langchain-nvidia-ai-endpoints==0.1.7
# via scrapegraphai
langchain-openai==0.1.22
# via scrapegraphai
langchain-text-splitters==0.2.2
@ -235,16 +148,12 @@ langsmith==0.1.93
# via langchain-core
lxml==5.2.2
# via free-proxy
markupsafe==2.1.5
# via jinja2
marshmallow==3.21.3
# via dataclasses-json
minify-html==0.15.0
# via scrapegraphai
mpire==2.10.2
# via semchunk
mpmath==1.3.0
# via sympy
multidict==6.0.5
# via aiohttp
# via yarl
@ -252,55 +161,34 @@ multiprocess==0.70.16
# via mpire
mypy-extensions==1.0.0
# via typing-inspect
networkx==3.2.1
# via torch
numpy==1.26.4
# via faiss-cpu
# via langchain
# via langchain-aws
# via langchain-community
# via pandas
# via scikit-learn
# via scipy
# via sentence-transformers
# via shapely
# via transformers
openai==1.41.0
# via langchain-fireworks
# via langchain-openai
orjson==3.10.6
# via langsmith
packaging==24.1
# via faiss-cpu
# via google-cloud-aiplatform
# via google-cloud-bigquery
# via huggingface-hub
# via langchain-core
# via marshmallow
# via transformers
pandas==2.2.2
# via scrapegraphai
pillow==10.4.0
# via fireworks-ai
# via langchain-nvidia-ai-endpoints
# via sentence-transformers
playwright==1.45.1
# via browserbase
# via scrapegraphai
# via undetected-playwright
proto-plus==1.24.0
# via google-ai-generativelanguage
# via google-api-core
# via google-cloud-aiplatform
# via google-cloud-resource-manager
protobuf==4.25.3
# via google-ai-generativelanguage
# via google-api-core
# via google-cloud-aiplatform
# via google-cloud-resource-manager
# via google-generativeai
# via googleapis-common-protos
# via grpc-google-iam-v1
# via grpcio-status
# via proto-plus
pyasn1==0.6.0
@ -309,12 +197,7 @@ pyasn1==0.6.0
pyasn1-modules==0.4.0
# via google-auth
pydantic==2.8.2
# via anthropic
# via browserbase
# via fireworks-ai
# via google-cloud-aiplatform
# via google-generativeai
# via groq
# via langchain
# via langchain-core
# via langsmith
@ -329,7 +212,6 @@ pyparsing==3.1.2
# via httplib2
python-dateutil==2.9.0.post0
# via botocore
# via google-cloud-bigquery
# via pandas
python-dotenv==1.0.1
# via scrapegraphai
@ -340,45 +222,26 @@ pyyaml==6.0.1
# via langchain
# via langchain-community
# via langchain-core
# via transformers
regex==2024.5.15
# via tiktoken
# via transformers
requests==2.32.3
# via free-proxy
# via google-api-core
# via google-cloud-bigquery
# via google-cloud-storage
# via huggingface-hub
# via langchain
# via langchain-community
# via langchain-fireworks
# via langsmith
# via tiktoken
# via transformers
rsa==4.9
# via google-auth
s3transfer==0.10.2
# via boto3
safetensors==0.4.3
# via transformers
scikit-learn==1.5.1
# via sentence-transformers
scipy==1.13.1
# via scikit-learn
# via sentence-transformers
semchunk==2.2.0
# via scrapegraphai
sentence-transformers==3.0.1
# via langchain-huggingface
shapely==2.0.5
# via google-cloud-aiplatform
six==1.16.0
# via python-dateutil
sniffio==1.3.1
# via anthropic
# via anyio
# via groq
# via httpx
# via openai
soupsieve==2.5
@ -386,24 +249,15 @@ soupsieve==2.5
sqlalchemy==2.0.31
# via langchain
# via langchain-community
sympy==1.13.1
# via torch
tenacity==8.5.0
# via langchain
# via langchain-community
# via langchain-core
threadpoolctl==3.5.0
# via scikit-learn
tiktoken==0.7.0
# via langchain-openai
# via scrapegraphai
tokenizers==0.19.1
# via anthropic
# via langchain-huggingface
# via langchain-mistralai
# via transformers
torch==2.2.2
# via sentence-transformers
tqdm==4.66.4
# via google-generativeai
# via huggingface-hub
@ -411,16 +265,9 @@ tqdm==4.66.4
# via openai
# via scrapegraphai
# via semchunk
# via sentence-transformers
# via transformers
transformers==4.43.3
# via langchain-huggingface
# via sentence-transformers
typing-extensions==4.12.2
# via anthropic
# via anyio
# via google-generativeai
# via groq
# via huggingface-hub
# via langchain-core
# via openai
@ -428,7 +275,6 @@ typing-extensions==4.12.2
# via pydantic-core
# via pyee
# via sqlalchemy
# via torch
# via typing-inspect
typing-inspect==0.9.0
# via dataclasses-json

View File

@ -1,15 +1,9 @@
langchain>=0.2.14
langchain-fireworks>=0.1.3
langchain_community>=0.2.9
langchain-google-genai>=1.0.7
langchain-google-vertexai>=1.0.7
langchain-openai>=0.1.22
langchain-groq>=0.1.3
langchain-aws>=0.1.3
langchain-anthropic>=0.1.11
langchain-mistralai>=0.1.12
langchain-huggingface>=0.0.3
langchain-nvidia-ai-endpoints>=0.1.6
langchain_community>=0.2.9
langchain-aws>=0.1.3
html2text>=2024.2.26
faiss-cpu>=1.8.0
beautifulsoup4>=4.12.3
@ -17,11 +11,9 @@ pandas>=2.2.2
python-dotenv>=1.0.1
tiktoken>=0.7
tqdm>=4.66.4
graphviz>=0.20.3
minify-html>=0.15.0
free-proxy>=1.1.1
playwright>=1.43.0
google>=3.0.0
undetected-playwright>=0.3.0
google>=3.0.0
semchunk>=1.0.1
browserbase>=0.3.0

View File

@ -0,0 +1,31 @@
"""
Tests for the AbstractGraph.
"""
import pytest
from unittest.mock import patch
from scrapegraphai.graphs import AbstractGraph
class TestAbstractGraph:
@pytest.mark.parametrize("llm_config, expected_model", [
({"model": "openai/gpt-3.5-turbo"}, "ChatOpenAI"),
({"model": "azure_openai/gpt-3.5-turbo"}, "AzureChatOpenAI"),
({"model": "google_genai/gemini-pro"}, "ChatGoogleGenerativeAI"),
({"model": "google_vertexai/chat-bison"}, "ChatVertexAI"),
({"model": "ollama/llama2"}, "Ollama"),
({"model": "oneapi/text-davinci-003"}, "OneApi"),
({"model": "nvidia/clara-instant-1-base"}, "ChatNVIDIA"),
({"model": "deepseek/deepseek-coder-6.7b-instruct"}, "DeepSeek"),
({"model": "ernie/ernie-bot"}, "ErnieBotChat"),
])
def test_create_llm(self, llm_config, expected_model):
graph = AbstractGraph("Test prompt", {"llm": llm_config})
assert isinstance(graph.llm_model, expected_model)
def test_create_llm_unknown_provider(self):
with pytest.raises(ValueError):
AbstractGraph("Test prompt", {"llm": {"model": "unknown_provider/model"}})
def test_create_llm_error(self):
with patch("your_module.init_chat_model", side_effect=Exception("Test error")):
with pytest.raises(Exception):
AbstractGraph("Test prompt", {"llm": {"model": "openai/gpt-3.5-turbo"}})