[AUR-363, AUR-433, AUR-434] Add Base Tool interface with Wikipedia/Google tools (#30)
* add base Tool * minor update test_tool * update test dependency * update test dependency * Fix namespace conflict * update test --------- Co-authored-by: trducng <trungduc1992@gmail.com>
This commit is contained in:
committed by
GitHub
parent
317323c0e5
commit
f9fc02a32a
70
tests/test_tools.py
Normal file
70
tests/test_tools.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from openai.api_resources.embedding import Embedding
|
||||
|
||||
from kotaemon.docstores import InMemoryDocumentStore
|
||||
from kotaemon.documents.base import Document
|
||||
from kotaemon.embeddings.openai import AzureOpenAIEmbeddings
|
||||
from kotaemon.pipelines.indexing import IndexVectorStoreFromDocumentPipeline
|
||||
from kotaemon.pipelines.retrieving import RetrieveDocumentFromVectorStorePipeline
|
||||
from kotaemon.pipelines.tools import ComponentTool, GoogleSearchTool, WikipediaTool
|
||||
from kotaemon.vectorstores import ChromaVectorStore
|
||||
|
||||
with open(Path(__file__).parent / "resources" / "embedding_openai.json") as f:
|
||||
openai_embedding = json.load(f)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def mock_openai_embedding(monkeypatch):
|
||||
monkeypatch.setattr(Embedding, "create", lambda *args, **kwargs: openai_embedding)
|
||||
|
||||
|
||||
def test_google_tool():
|
||||
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(mock_openai_embedding, tmp_path):
|
||||
db = ChromaVectorStore(path=str(tmp_path))
|
||||
doc_store = InMemoryDocumentStore()
|
||||
embedding = AzureOpenAIEmbeddings(
|
||||
model="text-embedding-ada-002",
|
||||
deployment="embedding-deployment",
|
||||
openai_api_base="https://test.openai.azure.com/",
|
||||
openai_api_key="some-key",
|
||||
)
|
||||
|
||||
index_pipeline = IndexVectorStoreFromDocumentPipeline(
|
||||
vector_store=db, embedding=embedding, doc_store=doc_store
|
||||
)
|
||||
retrieval_pipeline = RetrieveDocumentFromVectorStorePipeline(
|
||||
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
|
Reference in New Issue
Block a user