Spaces:
Runtime error
Runtime error
import unittest | |
import chromadb | |
import subprocess | |
import time | |
import yaml | |
import psutil | |
from langchain_community.embeddings.sentence_transformer import ( | |
SentenceTransformerEmbeddings, | |
) | |
from langchain_chroma import Chroma | |
from langchain_google_genai import ChatGoogleGenerativeAI | |
from dotenv import load_dotenv | |
# Load environment variables from .env file | |
load_dotenv() | |
class TestChromaVectorStore(unittest.TestCase): | |
def setUp(self): | |
try: | |
# Attempt to load configuration data from config.yaml file | |
with open("./config.yaml", 'r') as file: | |
config_data = yaml.safe_load(file) | |
except Exception as e: | |
# Raise exception if config.yaml file is not found | |
raise Exception(f"Not able to find the file ./config.yaml") | |
self.client = chromadb.PersistentClient("./posts_db") | |
collection_name = config_data['collection_name'] | |
self.collection = self.client.get_collection(name=collection_name) | |
# Initialize embedding function for sentence transformer | |
embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") | |
self.langchain_chroma = Chroma( | |
client=self.client, | |
collection_name=collection_name, | |
embedding_function=embedding_function, | |
).as_retriever(n_results=1) | |
def test_retrieve_vector_store(self): | |
# Testing whether the Chroma vector store retrieves data | |
data = self.langchain_chroma.invoke("Wordpress") | |
self.assertIsNotNone(data) | |
print("Vector Store is Working Properly!") | |
class TestLLM(unittest.TestCase): | |
def setUp(self): | |
self.model = ChatGoogleGenerativeAI(model="gemini-pro") | |
def test_response_from_model(self): | |
# Testing whether LLM returns responses | |
response = self.model.invoke("Hello!") | |
self.assertIsNotNone(response) | |
print("LLM is generating responses!") | |
class TestStreamlitUI(unittest.TestCase): | |
def test_streamlit_ui(self): | |
process = subprocess.Popen(["streamlit", "run", "app.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
time.sleep(60) | |
if process.poll() is None: | |
print("Streamlit app is running. Stopping the app...") | |
process_id = process.pid | |
parent = psutil.Process(process_id) | |
for child in parent.children(recursive=True): | |
child.terminate() | |
parent.terminate() | |
process.wait() | |
print("Streamlit is working properly.") | |
else: | |
print("Streamlit app has already terminated.") | |
if __name__ == '__main__': | |
unittest.main() | |