Creating a knowledge base
Create a knowledge source insrc/knowledge/:
src/knowledge/:
import { Knowledge, DataSource } from "@botpress/runtime";
export default new Knowledge({
name: "documentation",
description: "Product documentation",
sources: [
// Add knowledge sources
],
});
import { DataSource } from "@botpress/runtime";
const WebsiteSource = DataSource.Website.fromSitemap(
"https://example.com/sitemap.xml",
{
filter: ({ url }) => !url.includes("/admin"),
}
);
export default new Knowledge({
name: "website-docs",
sources: [WebsiteSource],
});
const FileSource = DataSource.Directory.fromPath("./docs", {
filter: (filePath) => filePath.endsWith(".md") || filePath.endsWith(".txt"),
});
export default new Knowledge({
name: "local-docs",
sources: [FileSource],
});
import { DataSource } from "@botpress/runtime";
import { OrderTable } from "../tables/OrderTable";
const TableSource = DataSource.Table.fromTable(OrderTable, {
id: "orders",
transform: ({ row }) => {
return `Order #${row.id}\nCustomer: ${row.userId}\nTotal: $${row.total}\nStatus: ${row.status}`;
},
});
export default new Knowledge({
name: "orders-kb",
sources: [TableSource],
});
import { WebsiteKB } from "../knowledge/docs";
export default new Conversation({
channel: "*",
handler: async ({ execute }) => {
await execute({
instructions: "You are a helpful assistant.",
knowledge: [WebsiteKB],
});
},
});
import { Workflow } from "@botpress/runtime";
import { WebsiteKB } from "..knowledge/docs"
export default new Workflow({
name: "refresh-knowledge",
schedule: "0 0 * * *", // Daily
handler: async () => {
await WebsiteKB.refresh();
},
});
Was this page helpful?