from upsonic import Agent, Task, KnowledgeBase
from upsonic.embeddings import OpenAIEmbedding, OpenAIEmbeddingConfig
from upsonic.vectordb import ChromaProvider, ChromaConfig, ConnectionConfig, Mode
from upsonic.loaders.pdf import PdfLoader
from upsonic.loaders.config import PdfLoaderConfig
embedding = OpenAIEmbedding(OpenAIEmbeddingConfig())
vectordb = ChromaProvider(ChromaConfig(
collection_name="docs_kb",
vector_size=1536,
connection=ConnectionConfig(mode=Mode.EMBEDDED, db_path="./kb_db")
))
loader = PdfLoader(PdfLoaderConfig())
kb = KnowledgeBase(
sources=["product_docs/"],
embedding_provider=embedding,
vectordb=vectordb,
loaders=[loader]
)
agent = Agent("anthropic/claude-sonnet-4-5")
# Task 1: Needs KB context
task_with_rag = Task(
description="Summarize the product specifications",
context=[kb],
query_knowledge_base=True
)
# Task 2: Does NOT need KB context
task_without_rag = Task(
description="Draft a marketing tagline for our product",
context=[kb],
query_knowledge_base=False
)
result1 = agent.do(task_with_rag) # Uses RAG context
result2 = agent.do(task_without_rag) # No RAG context