百度 AI Agent 开发 二面

1、自我介绍

2、我看你做了3个项目, 讲一下你觉得最具代表性的项目

3、项目的Agent怎么设计的

4、Agent 基于什么框架

一般会基于 LangChain 或者 LangGraph 这类框架来实现。如果任务流程比较线性,比如“识别任务 -> 调工具 -> 汇总结果”,LangChain 就够用,因为它比较适合快速搭建工具调用链路和 Prompt 编排。如果任务流程里状态比较多、分支比较复杂,比如失败重试、条件跳转、多轮状态推进、人工确认节点这些,LangGraph 更合适,因为它本质上是图结构编排,更容易描述有状态的 Agent 工作流。

如果是校招项目或者实习项目,比较常见的做法是:底层模型调用、Prompt 模板、输出解析、工具封装用 LangChain,状态控制和复杂分支用自己代码补充;如果项目更完整一点,就会直接用 LangGraph 组织整个流程。

5、LangChain 有哪些常用工具

LangChain 常用的能力主要有 PromptTemplate、LLM、OutputParser、Memory、Retriever、Tool、Agent、Chain 这些。PromptTemplate 用来管理 Prompt 模板;LLM 是模型调用接口;OutputParser 负责把模型输出解析成结构化格式;Memory 用来做对话历史管理;Retriever 用来接知识库检索;Tool 用来封装外部能力,比如搜索、数据库、OCR、接口调用;Agent 负责决定何时调用工具;Chain 用来把多个步骤串起来。

如果是做 RAG,常用的是文本切分、Embedding、向量库检索和 Retriever。如果是做 Agent,常用的是 Tool、AgentExecutor、PromptTemplate、OutputParser 这些组件。

from langchain.tools import tool

@tool
def query_expense_policy(keyword: str) -> str:
    """查询差旅报销制度"""
    if "机票" in keyword:
        return "机票报销需提供行程单和发票"
    if "酒店" in keyword:
        return "酒店报销需提供发票和入住明细"
    return "未查询到相关制度"

print(query_expense_policy.invoke("机票报销"))

6、模型微调经验、微调参数、训练轮次、模型输入输出

如果做过微调,一般是基于现成预训练模型做监督微调,不会从零训练底座模型。微调目标通常有两类,一类是让模型更适配业务场景,比如报销问答、票据理解、知识库问答;另一类是让模型在固定格式输出、工具调用、指令跟随上更稳定。

训练数据一般是指令数据或者问答数据。输入通常是 system prompt、用户问题、上下文信息、工具返回结果这些;输出通常是 assistant 需要生成的目标答案,或者固定 JSON 结构。

训练参数上,常见设置是学习率在 (1e^{-5}) 到 (5e^{-5}) 之间,batch size 结合显存决定,常配合梯度累积,训练轮次一般是 2 到 5 轮。因为指令微调数据通常没有预训练那么大,轮次不会特别高,更多是靠数据质量和任务定义来控制效果。如果是 LoRA 微调,还会有 rank、alpha、dropout 这些参数。比如 rank 常见是 8、16 或 32,dropout 常见是 0.05 左右。

输入输出的本质可以理解成:输入是“问题 + 上下文 + 任务约束”,输出是“目标回答或目标结构”。训练时通常只对 assistant 的回答部分计算 loss,用户输入和系统提示只是条件,不参与监督。

sample = {
    "instruction": "根据用户上传的票据和OCR结果,判断是否可以提交报销",
    "input": {
        "user_query": "帮我看下这次出差材料能不能报销",
        "ocr_text": "机票行程单 金额1200 日期2025-03-01",
        "policy": "机票报销需提供行程单和发票"
    },
    "output": {
        "status": "缺少材料",
        "missing_fields": ["发票"],
        "message": "当前缺少发票,暂时不能提交报销"
    }
}

7、什么是 RAG,和直接让大模型回答有什么区别

RAG 是 Retrieval-Augmented Generation,中文叫检索增强生成。它的核心思想是在模型生成答案之前,先去外部知识库检索相关内容,再把检索结果连同用户问题一起交给模型生成答案。

和直接让大模型回答相比,RAG 的优势主要在三个方面。第一,知识更新更灵活,不需要每次更新知识都重新训练模型;第二,可以接入企业私有知识,解决大模型参数里没有这部分内容的问题;第三,可以减少模型幻觉,让回答尽量基于检索结果而不是纯凭参数记忆生成。

一个标准 RAG 流程一般包括文档清洗、切分、向量化、建索引、召回、重排和生成。其中真正影响效果的关键点不只是检索到了,而是切分是否合理、召回是否准确、重排是否有效、Prompt 是否限制模型必须参考检索结果。

8、Agent 和普通工作流有什么区别

普通工作流通常是固定流程,节点和调用顺序提前写死,输入到输出的路径比较明确。Agent 则更强调自主决策能力,模型会根据当前任务、上下文和工具结果来决定下一步做什么。

比如一个固定工作流可能写成:收到用户输入后先 OCR,再分类,再抽取,再返回结果。而 Agent 会先判断用户是否真的要走附件解析流程,还是只想查询报销制度;如果材料缺失,还可能选择先询问补充信息,而不是继续往下执行。

简单说,工作流更偏确定性执行,Agent 更偏基于上下文的动态决策。在实际工程里,这两者通常是结合使用的:主流程用工作流保证稳定,局部决策交给 Agent 提升灵活性。

9、Function Calling 是什么

Function Calling 本质上是让大模型不直接生成最终答案,而是先生成一个结构化的函数调用请求,包括调用哪个函数、传什么参数,然后由程序真正执行函数,再把执行结果返回给模型或者直接返回给用户。

它适合做那些需要外部信息或者外部操作的场景,比如查天气、查数据库、调用业务系统接口、执行搜索、创建订单、查询报销记录等。如果不使用 Function Calling,而只是让模型自由生成,它可能会编造函数参数或者直接幻觉出结果。用了

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论
同学很优秀,看面经跟我们在招聘的岗位比较符合,想要投下拼多多试试吗?多一次投递,可能就多一个offer,多一个选择。
点赞 回复 分享
发布于 03-13 16:59 上海

相关推荐

03-17 23:54
黑龙江大学 Java
来个白菜也好啊qaq:可以的,大厂有的缺打手
点赞 评论 收藏
分享
发一下问题给大家参考,攒攒人品!1.项目拷打2.实习拷打3.检索融合的具体流程是什么?召回后有没有做 Rerank?4.Rerank 后返回几个块(Chunk)?有没有针对这个返回数量做过验证?5.Rerank 后的 TopK 截断是怎么做的?为什么是这个值?有没有其他截断方案?6.讲一下上下文工程(Context Engineering),Agent 的记忆(Memory)是怎么做的?7.请详细讲解分布式令牌桶限流的实现。8.漏桶算法(Leaky Bucket)的原理讲一下。9。滑动窗口算法限流讲一下。如果用代码实现,滑动窗口的结构体会包含哪些字段?10.滑动窗口和令牌桶相比有什么缺点?11.在 Redis 中,你会用什么数据结构来实现滑动窗口限流?12.LRU 缓存的实现原理讲一下。13.布隆过滤器(Bloom Filter)的底层原理和适用场景讲一下。14.MySQL 索引会在哪些情况下失效?15.在使用 LIKE 进行模糊查询时,索引什么情况下会失效?16.MySQL 的事务隔离级别有哪些?如何保证一致性?17.详细说说 MVCC 的实现,ReadView 的生成时机是怎样的?18.在不同的隔离级别下,一个事务分别会创造几个 ReadView?19.MySQL 都有哪些锁?它们的作用分别是什么?20.为什么选择 Python 和 Go 作为技术栈?在处理并发时有什么区别?21.手撕代码:实现反转链表
查看21道真题和解析
点赞 评论 收藏
分享
评论
1
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务