FeatureKnowledgeMemory
When UsedPre-loaded before agent executionCreated and updated during runtime
PurposeProvide static reference informationStore dynamic context and interactions
StorageRead-only knowledge baseRead-write memory store
PersistencePermanent until explicitly changedCan be temporary (STM) or persistent (LTM)
UpdatesManual updates through knowledge filesAutomatic updates during agent execution

Quick Start

1

Install Package

Install PraisonAI Agents with knowledge support:

pip install "praisonaiagents[knowledge]"
2

Set API Key

Set your OpenAI API key:

export OPENAI_API_KEY=xxxxx
3

Create Script

Create a new file app.py:

from praisonaiagents import Agent

agent = Agent(
    name="Knowledge Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge=["small.pdf"]
)

agent.start("What is KAG in one line?")

Basic Usage

The simplest way to create a knowledge-based agent is without any configuration:

from praisonaiagents import Agent

agent = Agent(
    name="Knowledge Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge=["small.pdf"]
)

agent.start("What is KAG in one line?")

Advanced Configuration

For more control over the knowledge base, you can specify a configuration:

from praisonaiagents import Agent

config = {
    "vector_store": {
        "provider": "chroma",
        "config": {
            "collection_name": "custom_knowledge",
            "path": ".praison",
        }
    }
}

agent = Agent(
    name="Knowledge Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge=["small.pdf"],
    knowledge_config=config
)

agent.start("What is KAG in one line?")

Multi-Agent Knowledge System

For more complex scenarios, you can create a knowledge-based system with multiple agents:

from praisonaiagents import Agent, Task, PraisonAIAgents
import logging
import os

# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# Define the configuration for the Knowledge instance
config = {
    "vector_store": {
        "provider": "chroma",
        "config": {
            "collection_name": "knowledge_test",
            "path": ".praison",
        }
    }
}

# Create an agent with knowledge capabilities
knowledge_agent = Agent(
    name="KnowledgeAgent",
    role="Information Specialist",
    goal="Store and retrieve knowledge efficiently",
    backstory="Expert in managing and utilizing stored knowledge",
    knowledge=["sample.pdf"],
    knowledge_config=config,
    verbose=True
)

# Define a task for the agent
knowledge_task = Task(
    name="knowledge_task",
    description="Who is Mervin Praison?",
    expected_output="Answer to the question",
    agent=knowledge_agent
)

# Create and start the agents
agents = PraisonAIAgents(
    agents=[knowledge_agent],
    tasks=[knowledge_task],
    process="sequential",
    user_id="user1"
)

# Start execution
result = agents.start()

Understanding Knowledge Configuration

Features

Custom Knowledge

Import your own documents and data as knowledge sources

Vector Storage

Efficient storage and retrieval of knowledge embeddings

Multiple Sources

Combine multiple documents and file types

Persistent Storage

Save and reuse knowledge bases across sessions

Best Practices

  1. Document Preparation

    • Clean and well-formatted documents work best
    • Break large documents into smaller chunks
    • Use consistent formatting
  2. Knowledge Organization

    • Group related documents together
    • Use meaningful file names
    • Keep knowledge bases focused and relevant
  3. Performance Optimization

    • Monitor vector store size
    • Clean up unused collections
    • Use appropriate chunk sizes
  4. Multi-Agent Coordination

    • Define clear roles and responsibilities
    • Set appropriate logging levels for debugging
    • Use unique collection names for different agent groups

Next Steps

Was this page helpful?