Shopee AI Agent 开发 二面
1、Function Calling 和传统工作流有什么区别?
传统工作流是提前把流程写死,比如先做意图识别,再查知识库,再调接口,最后生成答案。它的优点是稳定、可控、方便测试,缺点是灵活性差,场景一复杂就要不断加规则。
Function Calling 是把“什么时候调用工具、调用哪个工具、参数是什么”交给模型决定。它更灵活,适合开放式任务,但稳定性会差一些,容易出现乱调工具、参数错误、重复调用的问题。
线上一般不会纯用其中一种,常见做法是:主流程用工作流控住,局部节点再放给模型做 Function Calling,这样既有灵活性,也不至于失控。
2、多轮对话里上下文太长了怎么处理?
不能把所有历史对话都原样塞给模型,不然 token 成本、时延和噪音都会上升。常见做法是保留最近几轮原文,把更早的内容压缩成摘要,再从历史里补充和当前问题强相关的信息。
如果是线上系统,一般会把上下文拆成三部分:最近对话、历史摘要、外部记忆。最近对话保证连续性,摘要保证长期信息不丢,外部记忆负责补充用户偏好或者稳定事实。
def build_context(recent_msgs, summary, memory):
context = []
context.extend(recent_msgs[-6:])
if summary:
context.append({"role": "system", "content": f"历史摘要:{summary}"})
context.extend(memory)
return context
核心不是“保留越多越好”,而是“保留和当前任务最相关的内容”。
3、模型输出 JSON 不稳定怎么解决?
这是 Agent 里很常见的问题,比如模型输出工具名和参数时,经常会出现字段缺失、类型不对、JSON 不闭合、夹杂解释文本这些情况。
一般有三层处理。第一层是 prompt 约束,明确要求只输出 JSON。第二层是程序校验,用 schema 或 Pydantic 去验证,不合法就拒收。第三层是兜底修复,对轻微格式问题做自动清洗。
from pydantic import BaseModel, ValidationError
class ToolCall(BaseModel):
tool_name: str
args: dict
def parse_tool_call(text):
try:
return ToolCall.model_validate_json(text)
except ValidationError:
return None
工程上不能把执行完全交给模型,模型只负责生成候选,程序负责校验和执行。
4、工具很多的时候怎么做路由?
工具一多,模型容易选错,也容易在不该调的时候乱调。比较稳的做法不是把所有工具都塞进 prompt,而是先做一层候选筛选。
通常会先按任务类型或者意图把工具缩到一个小集合,比如查询类、写入类、分析类、搜索类。然后只把这几个候选工具交给模型选择。最后程序侧再做权限校验和参数校验。
这样做的好处是可以降低模型的选择难度,也能减少上下文长度。工具越多,越要做分层路由,而不是堆工具描述。
5、工具调用失败一般怎么处理?
先分错误类型。像超时、临时网络抖动、短暂 5xx,这种可以退避重试;像参数错误、权限不足、业务状态不允许,这种不应该重试,应该直接返回错误。
如果是有副作用的操作,比如发消息、提交审批、修改状态,就要特别注意幂等性,不能简单重放,否则可能造成重复执行。
import time
def retry_call(func, retries=3):
for i in range(retries):
try:
return func()
except TimeoutError:
if i == retries - 1:
raise
time.sleep(2 ** i)
线上一般还会配合超时、熔断、降级和人工接管,不是只有“加重试”这么简单。
6、ReAct、Plan-and-Execute、Workflow Agent 分别适合什么场景?
ReAct 是边推理边行动,每一步根据观察结果决定下一步,适合开放任务,但步数不稳定,也容易发散。
Plan-and-Execute 是先做整体规划,再按步骤执行,适合长任务或者目标比较明确的任务,但如果初始规划错了,后面容易一路偏掉。
Workflow Agent 更像流程编排,主要流程是固定的,模型只在局部节点做决策。它最适合业务系统,因为可控、稳定、方便排查。
如果是企业里的 Agent 项目,通常不会纯用 ReAct,而是更偏 Workflow + 局部智能决策。
7、Chunk 切分策略为什么会影响 RAG 效果?
因为切分决定了检索的基本单元。如果 chunk 太大,会带入很多噪音;如果太小,语义可能不完整,召回到了也没法回答问题。
常见策略有固定长度切分
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.
查看14道真题和解析