Skip to content
Go to Dashboard

User Case

这个场景适合 GUMem,因为用户不应该每次都重复说明“欧洲团队用 Berlin,美洲团队用 Toronto”。这些偏好会影响后续排期任务,应该被召回。

场景

用户正在使用一个 team scheduling assistant。你的服务端已经保存了当前对话的 session.id,并且此前已经写入过用户的排期偏好。

本轮用户输入:

text
Can you schedule the Europe team check-in for next week?

Agent 应该先查询 GUMem。如果 Memory 中已经有 “Europe team uses Berlin” 这类偏好,就在回复和后续工具调用中自然使用它。

推荐顺序

  1. 用户输入到达服务端。
  2. 使用当前 session.id 查询 GUMem Memory。
  3. 把召回结果放入模型上下文。
  4. 调用模型生成回复。
  5. 将本轮用户消息和 assistant 回复异步写回 GUMem。

先召回再生成,最后写回。这样本轮回复不会污染本轮召回结果。

示例

ts
import { GUMemClient } from "@steamory-agent-kit/gumem";

const gumem = new GUMemClient({
  apiKey: process.env.GUMEM_API_KEY!,
});

async function schedulingAssistantTurn(params: {
  sessionId: string;
  userContent: string;
}) {
  const session = gumem.sessions.fromId(params.sessionId);

  const memory = await session.getMemory({
    query: params.userContent,
    details: true,
  });

  const systemPrompt = `
You are a team scheduling assistant.
Use recalled memory only when it is relevant to the current scheduling task.

Recalled memory:
${memory.data?.formatted_context ?? JSON.stringify(memory.data ?? {}, null, 2)}
`;

  const assistantReply = await callYourLLM(systemPrompt, params.userContent);

  void session.addMessages([
    { role: "user", content: params.userContent },
    { role: "assistant", content: assistantReply },
  ]).catch((error) => {
    console.error("GUMem memory write failed", error);
  });

  return {
    reply: assistantReply,
    recalledMemory: memory.data,
  };
}

检查结果

这个流程接通后,你应该能观察到:

  • 用户问欧洲团队排期时,Agent 可以召回与 Europe team 相关的城市偏好。
  • GUMem 写入失败不会阻塞当前用户响应。
  • 新一轮用户消息和 assistant 回复会进入后续 Memory 处理链路。
  • 当召回结果为空时,Agent 仍能正常询问必要信息,而不是假装知道用户偏好。

失败处理

情况推荐处理
Query Memory 失败记录错误,降级为无历史 Memory 的普通 Agent 回复。
写回 GUMem 失败不阻塞主响应,记录错误并在后台重试。
召回结果为空让 Agent 向用户询问缺失信息。
召回结果和当前输入冲突以用户当前明确表达为准,并把更正写回 GUMem。

下一步