Packages
@anvia/memory-prisma: Examples
Small examples for Prisma-backed Anvia memory.
Basic memory store
import { createPrismaMemoryStore } from "@anvia/memory-prisma";
import { prisma } from "./db";
export const memory = createPrismaMemoryStore(prisma);
Scoped support agent
import { AgentBuilder } from "@anvia/core";
import { createPrismaMemoryStore } from "@anvia/memory-prisma";
export function createSupportAgent(scope: SupportScope) {
return new AgentBuilder("support", scope.model)
.instructions("Answer support questions using the durable conversation history.")
.tools(scope.tools)
.memory(
createPrismaMemoryStore(scope.prisma, {
scope: { metadataKeys: ["tenantId"] },
}),
{ savePolicy: "turn" },
)
.build();
}
Session run
const response = await agent
.session(input.conversationId, {
userId: user.id,
metadata: { tenantId: user.tenantId },
})
.prompt(input.message)
.send();
Load initial messages
export async function loadThread(input: LoadThreadInput) {
const agent = createSupportAgent({
model: input.model,
prisma: input.prisma,
tools: input.tools,
});
const messages = await agent
.session(input.conversationId, {
userId: input.user.id,
metadata: { tenantId: input.user.tenantId },
})
.messages();
return { messages };
}
import type { Message } from "@anvia/core";
import { initialMessagesFromMemory, useChat } from "@anvia/react";
export function ThreadPage({
conversationId,
messages,
}: {
conversationId: string;
messages: Message[];
}) {
const chat = useChat({
endpoint: `/api/conversations/${conversationId}/chat`,
initialMessages: initialMessagesFromMemory(messages),
});
return <ChatProvider controller={chat}>{/* thread */}</ChatProvider>;
}
