AI Agent / LLM / Python方向常见面试问题

1. 第一个 AI Agent 系统是多 Agent 系统还是单 Agent 系统? 我最开始实现的是 单 Agent 系统,主要采用 Think–Execute 的 Agent 架构。 这个 Agent 负责: 接收用户问题 进行推理(Think) 判断是否需要调用工具 执行工具(Execute) 返回最终结果 后…

作者:lh

1. 第一个 AI Agent 系统是多 Agent 系统还是单 Agent 系统?

我最开始实现的是 单 Agent 系统,主要采用 Think–Execute 的 Agent 架构

这个 Agent 负责:

  • 接收用户问题

  • 进行推理(Think)

  • 判断是否需要调用工具

  • 执行工具(Execute)

  • 返回最终结果

后续为了提升能力,我也尝试过 多 Agent 协作架构,例如:

  • Planner Agent(任务规划)

  • Executor Agent(工具执行)

  • Critic Agent(结果评估)

但在实际工程中,如果任务复杂度不高,单 Agent + 工具调用通常已经可以满足需求,并且系统复杂度更低。


2. Think–Execute 循环机制的 Prompt 是你自己写的吗?

是的,Prompt 主要是我自己设计的

整体设计思路是参考:

  • ReAct (Reason + Act)

  • Chain-of-Thought

  • Tool Calling

我通过 Prompt 明确规定模型的输出结构,例如:

Thought: ...
Action: ...
Action Input: ...

这样系统就可以解析模型输出,然后调用对应工具。


3. Think–Execute 的 Prompt 是怎么设计的?

核心思想是 约束模型输出格式,让模型既能推理又能调用工具

例如:

You are an AI agent that can think and use tools.

When solving a task you should follow this format:

Thought: analyze the problem
Action: choose a tool
Action Input: parameters

If you already know the answer:

Final Answer: ...

Agent 执行流程:

1️⃣ 用户问题输入
2️⃣ LLM 产生 Thought
3️⃣ 判断是否需要 Action
4️⃣ 调用工具
5️⃣ 返回 Observation
6️⃣ 再次 Think
7️⃣ 直到 Final Answer

这就是典型的 Think → Execute → Observe → Think 循环


4. 系统用的基座模型是什么?

我使用过几种模型,例如:

  • Qwen 系列

  • DeepSeek 系列

  • GPT 系列

  • LLaMA 系列

在本地部署场景下,我通常会选择:

  • DeepSeek

  • Qwen

因为它们 中文能力强、开源、推理效果好


5. 基座模型是通过 API 调用的吗?

有两种方式:

1️⃣ API 调用

例如:

  • OpenAI API

  • DeepSeek API

优点:

  • 部署简单

  • 推理质量高

缺点:

  • 成本高

  • 网络依赖


2️⃣ 本地部署

例如:

  • vLLM

  • Ollama

  • HuggingFace Transformers

优点:

  • 数据安全

  • 成本可控

缺点:

  • GPU资源要求高

在企业项目里,本地部署 + API封装是比较常见的方案。


6. RAG 系统包含哪些模块?

一个完整的 RAG 系统通常包含 5 个模块:

1️⃣ 数据处理

  • 文档解析

  • Chunk 切分

  • 文本清洗


2️⃣ 向量化

使用 Embedding 模型,例如:

  • BGE

  • E5

  • OpenAI embedding


3️⃣ 向量数据库

存储向量,例如:

  • FAISS

  • Milvus

  • Chroma

  • Elasticsearch


4️⃣ 检索模块

根据用户问题进行:

  • 向量检索

  • rerank


5️⃣ LLM生成模块

把检索到的内容 + 用户问题一起输入模型生成答案。

流程:

User Query
↓
Embedding
↓
Vector Search
↓
Retrieve Documents
↓
LLM Generate Answer

7. 系统支持多轮对话吗?上下文爆炸如何解决?

系统是 支持多轮对话的

常见问题是 上下文长度爆炸,解决方案包括:

方法1:Sliding Window

只保留最近几轮对话,例如:

最近5轮对话

方法2:Conversation Summary

定期把历史对话总结成摘要:

summary + recent chat

方法3:Memory Retrieval

把对话存储到向量数据库:

需要时再检索。


方法4:限制工具调用次数

防止 Agent 进入循环。

例如:

max_iterations = 5

8. 如果要解决上下文爆炸,还有什么方案?

除了前面的方法,还可以:

1️⃣ Long Context 模型

例如:

  • Claude

  • Gemini

  • Longformer


2️⃣ RAG + Memory

把历史对话存储成知识库。


3️⃣ Hierarchical Memory

分层记忆:

短期记忆
长期记忆
摘要记忆

9. DeepSeek 了解吗?

了解。

DeepSeek 是一家中国的 AI 公司,推出了多种模型,例如:

  • DeepSeek LLM

  • DeepSeek Coder

  • DeepSeek-V3

  • DeepSeek-R1(推理模型)

特点:

  • 推理能力强

  • 开源

  • 成本较低

DeepSeek-R1 还采用了 强化学习训练推理能力


10. BERT 和 Transformer 了解吗?

了解。

Transformer

Transformer 是一种 基于注意力机制的深度学习模型架构

核心结构:

Self Attention
Feed Forward
Residual
LayerNorm

特点:

  • 并行计算

  • 长距离依赖建模


BERT

BERT 是 基于 Transformer Encoder 的预训练模型

训练任务:

  • Masked Language Model

  • Next Sentence Prediction

应用:

  • 文本分类

  • 情感分析

  • 问答系统


11. Python 用的多吗?

用得非常多。

我主要用 Python 做:

  • AI模型开发

  • Agent系统

  • RAG系统

  • 数据处理

  • Web接口开发(FastAPI / Flask)

常用库包括:

transformers
langchain
pytorch
numpy
pandas
faiss

12. Skil 了解吗?

如果指的是 SKIL 框架,它是一个用于 AI Agent orchestration 的工具

不过在实际项目中,我更多使用:

  • LangChain

  • LlamaIndex

  • AutoGen

来实现 Agent 系统。


13. 可以分享 Think–Execute 的伪代码吗?

可以,例如:

class Agent:

def run(self, query):
context = query

for step in range(5):

thought = self.think(context)

if thought["type"] == "final":
return thought["answer"]

result = self.execute(thought["tool"], thought["input"])

context += result

14. Think 和 Execute 是框架自带的吗?

不是。

通常是 我自己实现的逻辑

例如:

think() → 调用 LLM
execute() → 调用工具

框架(例如 LangChain)只是提供工具接口。


15. 简单说一下快速排序的思想

快速排序是一种 分治算法

核心思想:

1️⃣ 选择一个 pivot(基准值)

2️⃣ 将数组分成两部分:

左边:小于 pivot
右边:大于 pivot

3️⃣ 对左右子数组递归排序

时间复杂度:

平均:O(n log n)
最坏:O(n²)

示例代码:

def quick_sort(arr):
if len(arr) <= 1:
return arr

pivot = arr[0]

left = [x for x in arr[1:] if x <= pivot]
right = [x for x in arr[1:] if x > pivot]

return quick_sort(left) + [pivot] + quick_sort(right)