昆仑弟子_面霸
08-18·后端开发·10年+
面试吊打面试官
面试官:Java微服务,假如要接入大模型,你会怎么做?我:大模型的访问做一个独立服务,所有服务通过网关进行调用。网关里统一做鉴权、限流、计费、日志埋点面试官:为什么不直接在业务服务里调?我:大模型的调用是钱,也是性能瓶颈。如果每个服务自己调,token用量没法统计,key也没法轮换,限流更没法做面试官:Java侧用什么框架接入?我:Spring Boot项目使用Spring AI,自动配置开箱即用。如果要更灵活的Agent编排,可以用LangChain4j面试官:接入大模型只是第一步,Agent系统怎么接?我:可以在网关服务里再加一个Agent层,把现有的微服务接口封装成Tool。比如订单查询接口,封装成一个@Tool注解的方法,描述清楚入参和用途,大模型自己决定要不要调面试官:架构上怎么分层?我:分三层。最下面是原有的业务微服务;中间是AI网关,负责模型调用、Prompt管理、会话上下文存储;最上面是Agent编排层,负责意图识别、工具路由、多步任务串联面试官:大模型本身是无状态的,会话上下文怎么存?我:可以用Redis存会话历史,key是sessionId,value是消息列表。每次调大模型前,从Redis拉历史消息拼到Prompt里。长对话要做截断或者摘要,不然token超限直接报错面试官:大模型的响应很慢,几秒甚至几十秒,怎么处理?我:流式响应SSE面试官:如果Agent要调多个工具,中间某一步失败了怎么办?我:每个工具调用都要包一层try-catch,失败的话把错误信息喂回给大模型,让它自己决定是重试还是换个方案。但要设一个最大轮次,防止死循环面试官:接入之后,可观测性怎么做?我:添加调用日志,记录每次请求的Prompt、模型、token数、耗时、是否成功。用Micrometer上报QPS、平均延迟、错误率、token消耗速率到Prometheus。把Agent的多步调用串成一个trace,方便定位卡在哪一步面试官:大模型可能会被诱导干坏事,安全方面怎么保障?我:输入侧做Prompt注入检测,过滤掉明显的越狱指令;输出侧做敏感词过滤,特别是调工具之前要校验参数合法性。工具调用的权限要收敛,Agent能调什么工具要白名单控制,别让它能调到删库的接口
发布于 广东
6
3
11
未登录
友善发言
image-upload
评论
加载中