from upsonic import Agent, Task, KnowledgeBase
from upsonic.embeddings import OpenAIEmbedding, OpenAIEmbeddingConfig
from upsonic.vectordb import ChromaProvider, ChromaConfig, ConnectionConfig, Mode
embedding = OpenAIEmbedding(OpenAIEmbeddingConfig())
vectordb = ChromaProvider(ChromaConfig(
collection_name="dynamic_kb",
vector_size=1536,
connection=ConnectionConfig(mode=Mode.IN_MEMORY)
))
kb = KnowledgeBase(
sources=["handbook.pdf"],
embedding_provider=embedding,
vectordb=vectordb
)
# Add text content after initial setup
kb.add_text(
text="New policy: All meetings over 30 minutes require an agenda shared 24 hours in advance.",
document_name="meeting_policy_update",
metadata={"category": "policy", "effective_date": "2025-01-15"}
)
agent = Agent("anthropic/claude-sonnet-4-5")
task = Task(
description="What are the meeting policies?",
context=[kb]
)
result = agent.do(task)
print(result)