1、Q:多模型支持架构应该怎么设计?
A:做一层模型网关、上层agent不直接依赖某个模型厂商(解偶模型厂商),而是统一调用chat、stream chat、embedding这些接口,
底层用adapter适配不同模型,比如gpt、claude、gemini、deepseek等,中间用Model Router做模型路由,根据租户、场景、成本和延迟选择模型。
2、Q:多租户场景下模型切换能不能热更新?
A:可以,但不能写死在代码里,必须配置化。
每个租户都有自己的模型配置,比如模型名称、参数、超时时间、版本号。切换时切换配置不重启服务。
为了互不影响要做到三点:租户配置隔离、请求级配置快照、版本化切换。
3、Q:agent的记忆、工具调用、知识检索怎么实现?
A:三个核心模块:
Memory(记忆):保存短期上下文、保存长期用户信息
Tool(工具调用):查订单、发邮件、调用业务API
Retrieval(知识检索):知识库召回->交给模型回答
4、Q:一个agent在系统中有哪些状态?
A:agent要设计成状态机,常见状态有:已创建、执行中、等待模型、知识检索中、工具调用中、等待工具结果、暂停中、执行完成、执行失败、用户取消、执行超时。
复杂一点还有规划中、反思中、重试中。
5、Q:后端agent是否支持多租户并发调用?
A:支持,但要做好隔离。
第一:数据隔离,不同租户的会话、记忆、知识库不能串。
第二:配置隔离,不同租户可以用不同的模型、Prompt和工具。
第三:资源隔离,保证系统稳定性与公平。做限流、并发控制、Token配额。
6、Q:Session和user id 如何绑定?
A:UserID表示用户时谁,SessionID表示哪一次对话。一个用户可以有多个Session,但一个Session只能属于一个用户。
前端每次请求带SessionID,后端要校验它是否属于当前user id 和tenant id。
7、Q:agent工具调用的完整流程怎么走?
A:用户输入问题后,后端创建一次Agent Run,然后加载上下文,包括历史消息、记忆、工具列表、知识检索结果。
模型判断是否需要调用工具,如果需要就返回Tool Call,后端再做权限校验、参数校验,然后执行工具结果返回后,交给模型生成回答。
8、Q:长期记忆和短期记忆有什么区别?
A:短期记忆是当前会话上下文,主要服务这一轮对话。
长期记忆是跨会话沉淀的信息,比如用户偏好、项目背景、历史总结。通常要持久化存储。
9、Q:SSE是什么?在前后端如何交互?
A:SSE(Server-Sent Events)本质是前端和后端建立一条HTTP长连接。前端发起请求后,后端持续往这个连接里推送事件。
比如,模型生成一段,就推一个Token事件;发生工具调用就推Tool Call事件;完成后推Done事件。
10、Q:后端推流通畅采用什么数据格式?
A:一般是两层格式,外层是SSE协议格式(event+data),内层data通常是Json。
常见事件有:start、token、tool call、tool result、status、error、done
11、Q:agent工具调用时SSE通常包含哪些字段?
A:通常要包含:run_id、session_id、agent_id、tool_call_id、tool_name、arguments、status、result、error_code、error_message、timestamp
工具开始时推tool call,成功或者失败后推tool result,