diff --git a/demo/blog_writer/actions.py b/demo/blog_writer/actions.py index 0283c518..13ff9337 100644 --- a/demo/blog_writer/actions.py +++ b/demo/blog_writer/actions.py @@ -1,7 +1,7 @@ -from langchain_community.document_loaders import PDFMinerLoader # type: ignore -from langchain_community.vectorstores import Chroma # type: ignore -from langchain_text_splitters import SentenceTransformersTokenTextSplitter # type: ignore -from loguru import logger # type: ignore +from langchain_community.document_loaders import PDFMinerLoader +from langchain_community.vectorstores import Chroma +from langchain_text_splitters import SentenceTransformersTokenTextSplitter +from loguru import logger from sherpa_ai.actions.base import BaseAction diff --git a/demo/blog_writer/outliner.py b/demo/blog_writer/outliner.py index b4ce6870..35544a13 100644 --- a/demo/blog_writer/outliner.py +++ b/demo/blog_writer/outliner.py @@ -1,12 +1,12 @@ import os import time -import tiktoken # type: ignore -from langchain_community.chat_models import ChatOpenAI # type: ignore -from langchain_core.prompts import (ChatPromptTemplate, # type: ignore +import tiktoken +from langchain_community.chat_models import ChatOpenAI +from langchain_core.prompts import (ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate) -from langchain_text_splitters import MarkdownTextSplitter # type: ignore +from langchain_text_splitters import MarkdownTextSplitter class Outliner: diff --git a/demo/question_answering/qa_demo.py b/demo/question_answering/qa_demo.py index e6f9a3bd..a0ba76c1 100644 --- a/demo/question_answering/qa_demo.py +++ b/demo/question_answering/qa_demo.py @@ -1,6 +1,6 @@ from argparse import ArgumentParser -from langchain_core.messages import HumanMessage # type: ignore +from langchain_core.messages import HumanMessage from slackapp.utils import get_qa_agent_from_config_file import sherpa_ai.config as cfg diff --git a/demo/software_modeler/modeler_demo.py b/demo/software_modeler/modeler_demo.py index 483ece98..c7ac3bea 100644 --- a/demo/software_modeler/modeler_demo.py +++ b/demo/software_modeler/modeler_demo.py @@ -1,6 +1,6 @@ from argparse import ArgumentParser -from langchain_core.messages import HumanMessage # type: ignore +from langchain_core.messages import HumanMessage from slackapp.utils import get_qa_agent_from_config_file import sherpa_ai.config as cfg diff --git a/src/apps/slackapp/slackapp/bolt_app.py b/src/apps/slackapp/slackapp/bolt_app.py index c563f201..5620f78e 100644 --- a/src/apps/slackapp/slackapp/bolt_app.py +++ b/src/apps/slackapp/slackapp/bolt_app.py @@ -6,12 +6,12 @@ import time from typing import Dict, List, Optional -from flask import Flask, request # type: ignore -from langchain_core.messages import AIMessage, BaseMessage, HumanMessage # type: ignore -from loguru import logger # type: ignore -from omegaconf import OmegaConf # type: ignore -from slack_bolt import App # type: ignore -from slack_bolt.adapter.flask import SlackRequestHandler # type: ignore +from flask import Flask, request +from langchain_core.messages import AIMessage, BaseMessage, HumanMessage +from loguru import logger +from omegaconf import OmegaConf +from slack_bolt import App +from slack_bolt.adapter.flask import SlackRequestHandler from slackapp.routes.whitelist import whitelist_blueprint from slackapp.utils import get_qa_agent_from_config_file @@ -27,7 +27,7 @@ from sherpa_ai.post_processors import md_link_to_slack from sherpa_ai.scrape.file_scraper import QuestionWithFileHandler from sherpa_ai.scrape.prompt_reconstructor import PromptReconstructor -from sherpa_ai.task_agent import TaskAgent # type: ignore +from sherpa_ai.task_agent import TaskAgent from sherpa_ai.tools import get_tools from sherpa_ai.utils import count_string_tokens, log_formatter, show_commands_only from sherpa_ai.verbose_loggers import DummyVerboseLogger, SlackVerboseLogger diff --git a/src/apps/slackapp/slackapp/utils.py b/src/apps/slackapp/slackapp/utils.py index eeae5dfa..15ef0065 100644 --- a/src/apps/slackapp/slackapp/utils.py +++ b/src/apps/slackapp/slackapp/utils.py @@ -1,8 +1,8 @@ from typing import Optional -from hydra.utils import instantiate # type: ignore -from langchain_core.language_models import BaseLanguageModel # type: ignore -from omegaconf import OmegaConf # type: ignore +from hydra.utils import instantiate +from langchain_core.language_models import BaseLanguageModel +from omegaconf import OmegaConf from sherpa_ai.agents.qa_agent import QAAgent from sherpa_ai.config.task_config import AgentConfig diff --git a/src/apps/slackapp/tests/test_get_response.py b/src/apps/slackapp/tests/test_get_response.py index f04f5cc6..6485227e 100644 --- a/src/apps/slackapp/tests/test_get_response.py +++ b/src/apps/slackapp/tests/test_get_response.py @@ -1,9 +1,9 @@ from datetime import datetime from unittest.mock import MagicMock -import pytest # type: ignore -from langchain_community.llms import FakeListLLM # type: ignore -from loguru import logger # type: ignore +import pytest +from langchain_community.llms import FakeListLLM +from loguru import logger from slackapp.bolt_app import get_response import sherpa_ai.config as cfg diff --git a/src/sherpa_ai/actions/synthesize.py b/src/sherpa_ai/actions/synthesize.py index 84d7cdbb..48645e82 100644 --- a/src/sherpa_ai/actions/synthesize.py +++ b/src/sherpa_ai/actions/synthesize.py @@ -1,7 +1,7 @@ from typing import Any -from langchain_core.language_models import BaseLanguageModel # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import BaseLanguageModel +from loguru import logger from sherpa_ai.actions.base import BaseAction diff --git a/src/sherpa_ai/agents/base.py b/src/sherpa_ai/agents/base.py index 852c8970..174b3adb 100644 --- a/src/sherpa_ai/agents/base.py +++ b/src/sherpa_ai/agents/base.py @@ -3,8 +3,8 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, List, Optional -from langchain_core.language_models import BaseLanguageModel # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import BaseLanguageModel +from loguru import logger from sherpa_ai.actions.base import BaseAction, BaseRetrievalAction from sherpa_ai.events import EventType diff --git a/src/sherpa_ai/agents/critic.py b/src/sherpa_ai/agents/critic.py index 654a3cf3..01be6d99 100644 --- a/src/sherpa_ai/agents/critic.py +++ b/src/sherpa_ai/agents/critic.py @@ -1,7 +1,7 @@ from typing import List, Optional -from langchain_core.language_models import BaseChatModel # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import BaseChatModel +from loguru import logger from sherpa_ai.agents.base import BaseAgent from sherpa_ai.events import EventType diff --git a/src/sherpa_ai/agents/ml_engineer.py b/src/sherpa_ai/agents/ml_engineer.py index 36373bc9..038c653b 100644 --- a/src/sherpa_ai/agents/ml_engineer.py +++ b/src/sherpa_ai/agents/ml_engineer.py @@ -1,6 +1,6 @@ from typing import List, Optional -from langchain_core.language_models import BaseLanguageModel # type: ignore +from langchain_core.language_models import BaseLanguageModel from sherpa_ai.actions import Deliberation, GoogleSearch, SynthesizeOutput from sherpa_ai.actions.arxiv_search import ArxivSearch diff --git a/src/sherpa_ai/agents/physicist.py b/src/sherpa_ai/agents/physicist.py index c6ca2766..4c41b12e 100644 --- a/src/sherpa_ai/agents/physicist.py +++ b/src/sherpa_ai/agents/physicist.py @@ -1,6 +1,6 @@ from typing import List, Optional -from langchain_core.language_models import BaseLanguageModel # type: ignore +from langchain_core.language_models import BaseLanguageModel from sherpa_ai.actions import Deliberation, GoogleSearch, SynthesizeOutput from sherpa_ai.actions.base import BaseAction diff --git a/src/sherpa_ai/agents/planner.py b/src/sherpa_ai/agents/planner.py index e6fc1e01..f0a36661 100644 --- a/src/sherpa_ai/agents/planner.py +++ b/src/sherpa_ai/agents/planner.py @@ -1,7 +1,7 @@ from typing import Optional -from langchain_core.language_models import LLM # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import LLM +from loguru import logger from sherpa_ai.actions.planning import TaskPlanning from sherpa_ai.agents.agent_pool import AgentPool diff --git a/src/sherpa_ai/agents/qa_agent.py b/src/sherpa_ai/agents/qa_agent.py index 384582f8..0173d21a 100644 --- a/src/sherpa_ai/agents/qa_agent.py +++ b/src/sherpa_ai/agents/qa_agent.py @@ -1,6 +1,6 @@ from typing import List, Optional -from langchain_core.language_models import BaseLanguageModel # type: ignore +from langchain_core.language_models import BaseLanguageModel from sherpa_ai.actions import GoogleSearch, SynthesizeOutput from sherpa_ai.actions.base import BaseAction diff --git a/src/sherpa_ai/connectors/base.py b/src/sherpa_ai/connectors/base.py index b142d17a..9a53e513 100644 --- a/src/sherpa_ai/connectors/base.py +++ b/src/sherpa_ai/connectors/base.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod from typing import List -from langchain_core.documents import Document # type: ignore +from langchain_core.documents import Document class BaseVectorDB(ABC): diff --git a/src/sherpa_ai/connectors/chroma_vector_store.py b/src/sherpa_ai/connectors/chroma_vector_store.py index cc96cd59..b33b9662 100644 --- a/src/sherpa_ai/connectors/chroma_vector_store.py +++ b/src/sherpa_ai/connectors/chroma_vector_store.py @@ -1,9 +1,9 @@ import uuid -import chromadb # type: ignore -from chromadb.utils import embedding_functions # type: ignore -from langchain_core.documents import Document # type: ignore -from langchain_text_splitters import CharacterTextSplitter # type: ignore +import chromadb +from chromadb.utils import embedding_functions +from langchain_core.documents import Document +from langchain_text_splitters import CharacterTextSplitter import sherpa_ai.config as cfg from sherpa_ai.connectors.base import BaseVectorDB diff --git a/src/sherpa_ai/connectors/scripts/query_chroma.py b/src/sherpa_ai/connectors/scripts/query_chroma.py index cdf62396..fdda9006 100644 --- a/src/sherpa_ai/connectors/scripts/query_chroma.py +++ b/src/sherpa_ai/connectors/scripts/query_chroma.py @@ -2,12 +2,12 @@ import json import uuid -import chromadb # type: ignore -from chromadb.config import Settings # type: ignore -from dotenv import load_dotenv # type: ignore -from langchain_openai import OpenAIEmbeddings # type: ignore -from langchain_community.vectorstores import Chroma # type: ignore -from loguru import logger # type: ignore +import chromadb +from chromadb.config import Settings +from dotenv import load_dotenv +from langchain_openai import OpenAIEmbeddings +from langchain_community.vectorstores import Chroma +from loguru import logger def main(args): diff --git a/src/sherpa_ai/connectors/vectorstores.py b/src/sherpa_ai/connectors/vectorstores.py index c0c7335a..f91c3bad 100644 --- a/src/sherpa_ai/connectors/vectorstores.py +++ b/src/sherpa_ai/connectors/vectorstores.py @@ -2,19 +2,19 @@ import uuid from typing import Any, Iterable, List, Optional, Tuple, Type -import chromadb # type: ignore -import pinecone # type: ignore -from langchain_community.vectorstores import Chroma # type: ignore -from langchain_core.documents import Document # type: ignore -from langchain_core.embeddings import Embeddings # type: ignore -from langchain_core.vectorstores import ( # type: ignore +import chromadb +import pinecone +from langchain_community.vectorstores import Chroma +from langchain_core.documents import Document +from langchain_core.embeddings import Embeddings +from langchain_core.vectorstores import ( VectorStore, VectorStoreRetriever, ) -from langchain_openai import OpenAIEmbeddings # type: ignore +from langchain_openai import OpenAIEmbeddings -from langchain_text_splitters import CharacterTextSplitter # type: ignore -from loguru import logger # type: ignore +from langchain_text_splitters import CharacterTextSplitter +from loguru import logger import sherpa_ai.config as cfg from sherpa_ai.utils import load_files diff --git a/src/sherpa_ai/memory/shared_memory_with_vectordb.py b/src/sherpa_ai/memory/shared_memory_with_vectordb.py index 4130dfc2..eb647b72 100644 --- a/src/sherpa_ai/memory/shared_memory_with_vectordb.py +++ b/src/sherpa_ai/memory/shared_memory_with_vectordb.py @@ -1,6 +1,6 @@ from typing import List, Optional -from langchain_openai import OpenAIEmbeddings # type: ignore +from langchain_openai import OpenAIEmbeddings from sherpa_ai.actions.planning import Plan diff --git a/src/sherpa_ai/models/chat_model_with_logging.py b/src/sherpa_ai/models/chat_model_with_logging.py index e73d09ac..59bbb9ff 100644 --- a/src/sherpa_ai/models/chat_model_with_logging.py +++ b/src/sherpa_ai/models/chat_model_with_logging.py @@ -2,19 +2,19 @@ import typing from typing import Any, Coroutine, List, Optional -from langchain_core.callbacks import ( # type: ignore +from langchain_core.callbacks import ( AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun, ) -from langchain_core.language_models import BaseChatModel # type: ignore -from langchain_core.messages import BaseMessage # type: ignore -from langchain_core.outputs import ChatResult # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import BaseChatModel +from langchain_core.messages import BaseMessage +from langchain_core.outputs import ChatResult +from loguru import logger class ChatModelWithLogging(BaseChatModel): llm: BaseChatModel - logger: type(logger) # type: ignore + logger: type(logger) @property def _llm_type(self): diff --git a/src/sherpa_ai/models/sherpa_base_chat_model.py b/src/sherpa_ai/models/sherpa_base_chat_model.py index 5b670bb8..84f022c4 100644 --- a/src/sherpa_ai/models/sherpa_base_chat_model.py +++ b/src/sherpa_ai/models/sherpa_base_chat_model.py @@ -1,14 +1,14 @@ import typing from typing import Any, List, Optional -from langchain_openai import ChatOpenAI # type: ignore -from langchain_core.callbacks import ( # type: ignore +from langchain_openai import ChatOpenAI +from langchain_core.callbacks import ( AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun, ) -from langchain_core.language_models import BaseChatModel # type: ignore -from langchain_core.messages import BaseMessage # type: ignore -from langchain_core.outputs import ChatResult # type: ignore +from langchain_core.language_models import BaseChatModel +from langchain_core.messages import BaseMessage +from langchain_core.outputs import ChatResult from sherpa_ai.database.user_usage_tracker import UserUsageTracker from sherpa_ai.verbose_loggers.base import BaseVerboseLogger diff --git a/src/sherpa_ai/models/sherpa_base_model.py b/src/sherpa_ai/models/sherpa_base_model.py index 90dc1047..6e97dfc1 100644 --- a/src/sherpa_ai/models/sherpa_base_model.py +++ b/src/sherpa_ai/models/sherpa_base_model.py @@ -1,15 +1,15 @@ import typing from typing import Any, List, Optional -from langchain_openai import ChatOpenAI # type: ignore -from langchain_core.callbacks import ( # type: ignore +from langchain_openai import ChatOpenAI +from langchain_core.callbacks import ( AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun, ) -from langchain_core.language_models import BaseChatModel # type: ignore -from langchain_core.messages import BaseMessage # type: ignore -from langchain_core.outputs import ChatResult # type: ignore -from pydantic import BaseModel # type: ignore +from langchain_core.language_models import BaseChatModel +from langchain_core.messages import BaseMessage +from langchain_core.outputs import ChatResult +from pydantic import BaseModel from sherpa_ai.database.user_usage_tracker import UserUsageTracker diff --git a/src/sherpa_ai/orchestrator.py b/src/sherpa_ai/orchestrator.py index f4e9b46a..ff0a9d13 100644 --- a/src/sherpa_ai/orchestrator.py +++ b/src/sherpa_ai/orchestrator.py @@ -1,7 +1,7 @@ from typing import List, Optional -from langchain_openai import ChatOpenAI # type: ignore -from pydantic import BaseModel # type: ignore +from langchain_openai import ChatOpenAI +from pydantic import BaseModel from sherpa_ai.actions.planning import Plan from sherpa_ai.agents import AgentPool, Critic, MLEngineer, Physicist, Planner diff --git a/src/sherpa_ai/output_parser.py b/src/sherpa_ai/output_parser.py index 2c482ac0..3162a5e2 100644 --- a/src/sherpa_ai/output_parser.py +++ b/src/sherpa_ai/output_parser.py @@ -3,7 +3,7 @@ from abc import abstractmethod from typing import Dict, NamedTuple -from langchain_core.output_parsers import BaseOutputParser # type: ignore +from langchain_core.output_parsers import BaseOutputParser class TaskAction(NamedTuple): diff --git a/src/sherpa_ai/output_parsers/entity_validation.py b/src/sherpa_ai/output_parsers/entity_validation.py index 853d61c0..ea2ace1e 100644 --- a/src/sherpa_ai/output_parsers/entity_validation.py +++ b/src/sherpa_ai/output_parsers/entity_validation.py @@ -1,7 +1,7 @@ from enum import Enum from typing import Tuple -from langchain_core.language_models import BaseLanguageModel # type: ignore +from langchain_core.language_models import BaseLanguageModel from sherpa_ai.events import EventType from sherpa_ai.memory import Belief diff --git a/src/sherpa_ai/prompt.py b/src/sherpa_ai/prompt.py index 4819374e..3294fc65 100644 --- a/src/sherpa_ai/prompt.py +++ b/src/sherpa_ai/prompt.py @@ -1,16 +1,16 @@ import time from typing import Any, Callable, List -from langchain_core.messages import ( # type: ignore +from langchain_core.messages import ( AIMessage, BaseMessage, HumanMessage, SystemMessage, ) -from langchain_core.prompts import BaseChatPromptTemplate # type: ignore -from langchain_core.vectorstores import VectorStoreRetriever # type: ignore -from loguru import logger # type: ignore -from pydantic import BaseModel # type: ignore +from langchain_core.prompts import BaseChatPromptTemplate +from langchain_core.vectorstores import VectorStoreRetriever +from loguru import logger +from pydantic import BaseModel from sherpa_ai.prompt_generator import get_prompt from sherpa_ai.tools import BaseTool diff --git a/src/sherpa_ai/prompt_generator.py b/src/sherpa_ai/prompt_generator.py index 92ee5817..8d14ffbf 100644 --- a/src/sherpa_ai/prompt_generator.py +++ b/src/sherpa_ai/prompt_generator.py @@ -1,7 +1,7 @@ import json from typing import List -from langchain_core.tools import BaseTool # type: ignore +from langchain_core.tools import BaseTool FINISH_NAME = "finish" diff --git a/src/sherpa_ai/reflection.py b/src/sherpa_ai/reflection.py index 3a99b7b7..932075e2 100644 --- a/src/sherpa_ai/reflection.py +++ b/src/sherpa_ai/reflection.py @@ -1,10 +1,10 @@ from os import environ from typing import List -from langchain_core.language_models import BaseLanguageModel # type: ignore -from langchain_core.messages import BaseMessage # type: ignore -from langchain_core.tools import BaseTool # type: ignore -from loguru import logger # type: ignore +from langchain_core.language_models import BaseLanguageModel +from langchain_core.messages import BaseMessage +from langchain_core.tools import BaseTool +from loguru import logger from sherpa_ai.prompt_generator import PromptGenerator diff --git a/src/sherpa_ai/scrape/extract_github_readme.py b/src/sherpa_ai/scrape/extract_github_readme.py index 54ad7dd3..c3825abf 100644 --- a/src/sherpa_ai/scrape/extract_github_readme.py +++ b/src/sherpa_ai/scrape/extract_github_readme.py @@ -1,11 +1,11 @@ import base64 import re -import pinecone # type: ignore +import pinecone import requests -from dotenv import dotenv_values # type: ignore -from langchain_openai import OpenAIEmbeddings # type: ignore -from loguru import logger # type: ignore +from dotenv import dotenv_values +from langchain_openai import OpenAIEmbeddings +from loguru import logger import sherpa_ai.config as cfg from sherpa_ai.connectors.vectorstores import ConversationStore diff --git a/src/sherpa_ai/test_utils/llms.py b/src/sherpa_ai/test_utils/llms.py index 87847320..a447a028 100644 --- a/src/sherpa_ai/test_utils/llms.py +++ b/src/sherpa_ai/test_utils/llms.py @@ -1,10 +1,10 @@ import json import re -import pytest # type: ignore -from langchain_core.language_models import BaseLanguageModel # type: ignore -from langchain_community.chat_models import ChatOpenAI # type: ignore -from langchain_core.language_models import FakeListLLM # type: ignore +import pytest +from langchain_core.language_models import BaseLanguageModel +from langchain_community.chat_models import ChatOpenAI +from langchain_core.language_models import FakeListLLM from sherpa_ai.models.chat_model_with_logging import ChatModelWithLogging from sherpa_ai.test_utils.loggers import get_new_logger diff --git a/src/sherpa_ai/tools.py b/src/sherpa_ai/tools.py index 9b76a8c0..2bc9a90b 100644 --- a/src/sherpa_ai/tools.py +++ b/src/sherpa_ai/tools.py @@ -3,11 +3,11 @@ from typing import Any, List, Tuple, Union import requests -from langchain_community.utilities import GoogleSerperAPIWrapper # type: ignore -from langchain_core.tools import BaseTool # type: ignore -from langchain_core.vectorstores import VectorStoreRetriever # type: ignore -from loguru import logger # type: ignore -from typing_extensions import Literal # type: ignore +from langchain_community.utilities import GoogleSerperAPIWrapper +from langchain_core.tools import BaseTool +from langchain_core.vectorstores import VectorStoreRetriever +from loguru import logger +from typing_extensions import Literal import sherpa_ai.config as cfg from sherpa_ai.config.task_config import AgentConfig diff --git a/src/sherpa_ai/utils.py b/src/sherpa_ai/utils.py index a58643a0..a1d4c96e 100644 --- a/src/sherpa_ai/utils.py +++ b/src/sherpa_ai/utils.py @@ -4,24 +4,24 @@ from urllib.parse import urlparse import requests -import spacy # type: ignore -import tiktoken # type: ignore -from bs4 import BeautifulSoup # type: ignore -from langchain_community.document_loaders import ( # type: ignore +import spacy +import tiktoken +from bs4 import BeautifulSoup +from langchain_community.document_loaders import ( UnstructuredMarkdownLoader, UnstructuredPDFLoader, ) -from langchain_openai import OpenAI # type: ignore -from langchain_core.documents import Document # type: ignore -from langchain_core.language_models import BaseLanguageModel # type: ignore -from langchain_text_splitters import ( # type: ignore +from langchain_openai import OpenAI +from langchain_core.documents import Document +from langchain_core.language_models import BaseLanguageModel +from langchain_text_splitters import ( CharacterTextSplitter, TokenTextSplitter, ) -from loguru import logger # type: ignore -from nltk.metrics import edit_distance, jaccard_distance # type: ignore -from pypdf import PdfReader # type: ignore -from word2number import w2n # type: ignore +from loguru import logger +from nltk.metrics import edit_distance, jaccard_distance +from pypdf import PdfReader +from word2number import w2n import sherpa_ai.config as cfg from sherpa_ai.database.user_usage_tracker import UserUsageTracker diff --git a/src/tests/integration_tests/test_qa_agent_with_vector_shared_memory.py b/src/tests/integration_tests/test_qa_agent_with_vector_shared_memory.py index a63d4305..5105b90d 100644 --- a/src/tests/integration_tests/test_qa_agent_with_vector_shared_memory.py +++ b/src/tests/integration_tests/test_qa_agent_with_vector_shared_memory.py @@ -1,10 +1,10 @@ import sys from unittest.mock import MagicMock, patch -import pytest # type: ignore -from langchain_openai import ChatOpenAI # type: ignore -from langchain_core.documents import Document # type: ignore -from loguru import logger # type: ignore +import pytest +from langchain_openai import ChatOpenAI +from langchain_core.documents import Document +from loguru import logger from sherpa_ai.agents import QAAgent from sherpa_ai.connectors.base import BaseVectorDB