Spaces:
Paused
Paused
import json | |
from pathlib import Path | |
from unittest.mock import patch | |
from openai.types.create_embedding_response import CreateEmbeddingResponse | |
from kotaemon.agents.tools import ComponentTool, GoogleSearchTool, WikipediaTool | |
from kotaemon.base import Document | |
from kotaemon.embeddings import AzureOpenAIEmbeddings | |
from kotaemon.indices.vectorindex import VectorIndexing, VectorRetrieval | |
from kotaemon.storages import ChromaVectorStore, InMemoryDocumentStore | |
with open(Path(__file__).parent / "resources" / "embedding_openai.json") as f: | |
openai_embedding = CreateEmbeddingResponse.model_validate(json.load(f)) | |
def test_google_tool(mock_google_search): | |
tool = GoogleSearchTool() | |
assert tool.name | |
assert tool.description | |
output = tool("What is Cinnamon AI") | |
assert output | |
def test_wikipedia_tool(): | |
tool = WikipediaTool() | |
assert tool.name | |
assert tool.description | |
output = tool("Cinnamon") | |
assert output | |
def test_pipeline_tool(tmp_path): | |
db = ChromaVectorStore(path=str(tmp_path)) | |
doc_store = InMemoryDocumentStore() | |
embedding = AzureOpenAIEmbeddings( | |
azure_deployment="embedding-deployment", | |
azure_endpoint="https://test.openai.azure.com/", | |
api_key="some-key", | |
api_version="version", | |
) | |
index_pipeline = VectorIndexing( | |
vector_store=db, embedding=embedding, doc_store=doc_store | |
) | |
retrieval_pipeline = VectorRetrieval( | |
vector_store=db, doc_store=doc_store, embedding=embedding | |
) | |
index_tool = ComponentTool( | |
name="index_document", | |
description="A tool to use to index a document to be searched later", | |
component=index_pipeline, | |
) | |
output = index_tool({"text": Document(text="Cinnamon AI")}) | |
retrieval_tool = ComponentTool( | |
name="search_document", | |
description="A tool to use to search a document in a vectorstore", | |
component=retrieval_pipeline, | |
) | |
output = retrieval_tool("Cinnamon AI") | |
assert output | |