逐日AI

面试题库

共 328 题,当前筛选 1 题。

标签
还有 126 个标签
#agent-loop2#api-design2#chunking2#cost-tradeoff2#debugging2#distributed-systems2#error-handling2#hybrid-search2#llm-as-judge2#multi-agent2#multi-hop2#oauth2#operations2#pipeline-design2#prompt-caching2#rag2#recall2#retrospective2#retry2#scheduling2#sse2#tool-permissions2#trade-offs2#access-control1#agentic-rag1#agents-sdk1#analytics1#architecture-review1#behavioral1#budget-control1#caching1#cancellation1#checkpointing1#circuit-breaker1#citation-verification1#client1#client-integration1#coding-agent1#compaction1#compliance1#concurrency1#confused-deputy1#context-engineering1#contextual-retrieval1#copyright1#correctness1#cost-control1#customer-support1#data-quality1#database1#deployment1#distribution1#embedding-migration1#error-propagation1#escalation1#evidence1#faithfulness1#fallback1#feedback-loop1#fencing-token1#filter-pushdown1#filtering1#framework-design1#graph-rag1#guardrails1#handoff1#image-generation1#integration1#iterative-scan1#json-parsing1#labeling1#latency1#latency-budget1#least-privilege1#long-context1#long-session1#long-term-memory1#mcp1#message-bus1#methodology1#model-migration1#multi-tenancy1#notifications1#ocr1#offline-testing1#project-storytelling1#protocol-versions1#quality1#query-rewriting1#rate-limiting1#reconnect1#refusal1#replay1#reproducibility1#rerank1#resume1#retrieval1#risk-assessment1#rollout1#routing1#runtime1#safety1#scaling1#self-introduction1#split-brain1#state-management1#state-persistence1#statelessness1#stdio-transport1#storytelling1#subagent1#subagents1#subscriptions1#test-strategy1#thresholds1#timezone1#token-accounting1#tool-schema1#tools1#trust-boundary1#ux1#verification1#versioning1#workflow-design1#workflow-engine1#zero-downtime1

30 天从前端工程师到 Agent 工程师

D12 长期记忆:pgvector、embedding、chunking、memory_search 工具

  • 把记忆检索包装成 memory_search 这样的工具时,参数设计上要注意什么?What matters when designing the parameters of a retrieval tool such as memory_search?
    国内高频海外高频深入#tool-design#security#long-term-memory

    分析过程 · 先想清楚再作答

    1. 这题看着是接口设计题,真正的区分度在安全。多数人会答 query 和 limit,答完就停;能不能说出「哪些参数绝对不能给模型」,决定了这题的分数。
    2. 先说 query:描述里要写清它不是用户原话,而是模型自己组织的检索语句,并给一个合法示例。用户问「我有什么忌口」,模型应该用「用户的食物忌口」去检索——这是从 D5 那条「格式类字段要给合法示例」延续下来的。
    3. 再说 limit:可选、默认 5、上限 10。上限的理由不是防呆,是上下文预算——一条记忆约 400 token,10 条就是 4000 token 进请求。模型传 50 时按工具协议回一条可读错误让它改,而不是静默截断成 10,否则模型永远不知道自己传错了。
    4. 然后是关键的一条:**绝不给 user_id 这类身份参数**。用户身份只能来自会话上下文。做成参数等于把「查谁的记忆」交给一段概率生成的文本,配上一句提示词注入就是现成的越权读取漏洞。一句话收尾:提示词管意图,代码管权限。
    5. 返回格式同样要说:空结果必须显式返回一句「没有找到相关记忆,请不要凭空推测」,返回空串模型会当成没有约束然后自己编;把相似度分数一起返回,模型才能区分「你说过」和「我印象里你好像提过」;设一条相似度下限,宁可不返回也不要拿噪声污染上下文。
    6. 可以预期的追问:检索不到的时候该怎么办?答案是分两层——工具层如实返回空并禁止推测,提示词层要求模型转而向用户确认,而不是把「没检索到」当成「用户没有偏好」。

    How to reason about it · think before answering

    1. It looks like an API design question; the discriminating part is security. Most candidates name query and limit and stop. Saying which parameters must never be exposed to the model is what earns the point.
    2. On query: the description must state that it is a retrieval phrase the model composes, not the user's literal words, and give a concrete example. Asked 'what are my dietary restrictions', the model should search for 'the user's food allergies and restrictions'.
    3. On limit: optional, default 5, capped at 10. The cap is a context budget, not idiot-proofing — a memory is roughly 400 tokens, so ten of them put 4000 tokens into the request. When the model asks for 50, return a readable validation error naming the field, the valid range and an example, rather than silently clamping, or it never learns it was wrong.
    4. The critical rule: never expose an identity parameter such as user_id. Identity comes from the session. Making it a parameter hands 'whose memories to read' to probabilistically generated text, and one prompt injection turns it into a privilege-escalation read. Prompts govern intent; code governs permission.
    5. Cover the response shape too: an empty result must say so explicitly and forbid guessing, because an empty string reads to the model as 'no constraints' and invites fabrication; return similarity scores so the model can distinguish a firm memory from a vague one; and set a minimum score, since no result beats a noisy one.
    6. Expect: what should happen on a miss? Two layers — the tool returns empty honestly and forbids speculation, and the prompt instructs the model to ask the user instead of treating 'not found' as 'no preference'.

    答题要点

    • query 必填,描述里说明它是模型组织的检索语句而非用户原话,并给一个合法示例
    • limit 可选、默认 5、上限 10,上限的依据是上下文预算;超限按工具协议回可读错误让模型改,不要静默截断
    • 绝不把 user_id 这类身份参数交给模型,身份只能来自会话——否则一句提示词注入就是越权读取
    • 空结果要显式说「没找到,请不要凭空推测」,返回空串模型会自己编
    • 返回相似度分数并设下限,宁可不返回也不要用低相关记忆污染上下文

    Key points

    • query is required; document it as a model-composed retrieval phrase, not the user's literal words, with an example
    • limit is optional, defaults to 5 and caps at 10 on context-budget grounds; over the cap, return a readable validation error instead of silently clamping
    • Never expose user_id or any identity parameter — identity comes from the session, or prompt injection becomes a privilege-escalation read
    • An empty result must say so explicitly and forbid speculation, or the model fabricates
    • Return similarity scores and enforce a minimum, since no result beats a noisy one