import OpenAI from "openai";
import { MemoryOS, MemoryOSError } from "memoryo-sdk";
const BASE_PROMPT = "You are a helpful product assistant.";
export async function answerUser(externalUserId: string, userMessage: string): Promise<string> {
const memory = new MemoryOS(process.env.MEMORYOS_API_KEY!);
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY! });
let systemPrompt = BASE_PROMPT;
try {
const memories = await memory.get({
query: userMessage,
externalUserId,
limit: 5,
contextMaxTokens: 500,
});
if (memories.hasContext) {
systemPrompt = `${BASE_PROMPT}\n\n${memories.systemPromptAddition}`;
}
} catch (error) {
if (!(error instanceof MemoryOSError)) throw error;
// Log in server telemetry; continue the customer conversation.
}
const response = await openai.responses.create({
model: "gpt-4.1-mini",
input: [
{ role: "system", content: systemPrompt },
{ role: "user", content: userMessage },
],
});
try {
await memory.add(
[
{ role: "user", content: userMessage },
{ role: "assistant", content: response.output_text },
],
externalUserId,
undefined,
{ source: "chat" },
);
} catch (error) {
if (!(error instanceof MemoryOSError)) throw error;
// The answer is already available; retry ingestion separately if desired.
}
return response.output_text;
}