mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from typing import Any, Optional
|
|
|
|
from crewai_tools.tools.rag.rag_tool import Adapter
|
|
|
|
try:
|
|
from embedchain import App
|
|
EMBEDCHAIN_AVAILABLE = True
|
|
except ImportError:
|
|
EMBEDCHAIN_AVAILABLE = False
|
|
|
|
|
|
class PDFEmbedchainAdapter(Adapter):
|
|
embedchain_app: Any # Will be App when embedchain is available
|
|
summarize: bool = False
|
|
src: Optional[str] = None
|
|
|
|
def __init__(self, **data):
|
|
if not EMBEDCHAIN_AVAILABLE:
|
|
raise ImportError("embedchain is not installed. Please install it with `pip install crewai-tools[embedchain]`")
|
|
super().__init__(**data)
|
|
|
|
def query(self, question: str) -> str:
|
|
where = (
|
|
{"app_id": self.embedchain_app.config.id, "source": self.src}
|
|
if self.src
|
|
else None
|
|
)
|
|
result, sources = self.embedchain_app.query(
|
|
question, citations=True, dry_run=(not self.summarize), where=where
|
|
)
|
|
if self.summarize:
|
|
return result
|
|
return "\n\n".join([source[0] for source in sources])
|
|
|
|
def add(
|
|
self,
|
|
*args: Any,
|
|
**kwargs: Any,
|
|
) -> None:
|
|
self.src = args[0] if args else None
|
|
self.embedchain_app.add(*args, **kwargs)
|