multi-agent-interview

核心概念小白指南

用大白话解释Agent开发中的核心概念,零基础也能看懂

一、什么是Agent?

1.1 通俗理解

Agent 就像一个数字员工

类比

传统程序:计算器
    输入:1 + 1
    输出:2
    特点:固定规则,不会思考

Agent:像人一样工作的程序
    输入:"帮我面试一个前端候选人"
    处理:理解要求 → 准备问题 → 根据回答追问 → 评估表现
    输出:面试报告
    特点:能思考、能决策、能自主行动

1.2 Agent vs 传统程序

对比 传统程序 Agent
决策方式 固定规则 基于LLM推理
灵活性
可扩展性 需要改代码 改Prompt即可
适用场景 确定逻辑 需要理解/推理的场景

二、什么是Multi-Agent?

2.1 通俗理解

Multi-Agent = 多个数字员工协作完成任务

现实类比

开一家餐厅需要:
- 厨师:做菜
- 服务员:接待客人
- 收银员:结账
- 清洁工:打扫卫生

每个人有自己的职责,互相协作,餐厅才能运转。

本项目中的Multi-Agent

AI面试系统需要:
- 面试官Agent:提问、追问
- 评估员Agent:打分、写评语
- 学习顾问Agent:推荐学习资源

三个Agent协作,完成整个面试流程。

2.2 为什么不用一个Agent?

想象一个超级员工

分工的好处


三、什么是RAG?

3.1 通俗理解

RAG = Retrieval(检索)+ Augmented(增强)+ Generation(生成)

大白话:先查资料,再回答

3.2 类比理解

闭卷考试 vs 开卷考试

闭卷考试(传统LLM):
- 只能凭记忆回答
- 可能会记错(幻觉)
- 知识停留在训练时

开卷考试(RAG):
- 先查书(检索)
- 再基于查到的内容回答(生成)
- 答案更准确,可以引用资料

3.3 本项目怎么用RAG?

场景:面试结束后推荐学习资源

1. 检索阶段:
   评估结果:"专业知识60分(薄弱)、逻辑思维85分(良好)"
   ↓
   向量化:"专业知识薄弱 需要学习Python..."
   ↓
   向量搜索:找到Python教程、算法书等相关资源

2. 生成阶段:
   LLM看到:评估结果 + 检索到的资源
   ↓
   生成推荐理由:"根据您的评估,建议在Python基础上加强学习,推荐《Python编程从入门到实践》..."

四、什么是Embedding?

4.1 通俗理解

Embedding = 把文字变成数字向量

4.2 为什么需要Embedding?

计算机不懂文字,只懂数字

人类理解:
"Python" 和 "编程语言" 意思相关

计算机理解(原始):
"Python" = [字母P, 字母y, 字母t...]
"编程语言" = [编, 程, 语, 言]
完全不同的表示!

Embedding转换后:
"Python" = [0.1, 0.5, -0.2, 0.8, ...]  (384个数字)
"编程语言" = [0.15, 0.48, -0.18, 0.82, ...]
数字接近,表示意思相近!

4.3 向量空间

想象一个三维空间:

        ^
       /|
      / |
     /  |     "Python"
    /   |      /
   /    |     /
  /_____|____/________>
        |   /
        |  / "Java"
        | /
        |/


相似的词在空间中距离近
"Python" 和 "Java" 距离近(都是编程语言)
"Python" 和 "苹果" 距离远(不相关)

实际上用的是384维空间(想象不了,但计算机能计算)


五、什么是向量数据库?

5.1 通俗理解

传统数据库:按关键字查

向量数据库:按意思查

5.2 工作原理

存入数据:
"Python基础教程" → Embedding → [0.1, 0.5, -0.2, ...]
"Java入门"       → Embedding → [0.2, 0.4, -0.1, ...]
"数据结构"       → Embedding → [-0.3, 0.1, 0.8, ...]

查询:
输入:"Python学习"
Embedding → [0.12, 0.48, -0.19, ...]

计算相似度:
"Python学习" vs "Python基础教程" = 0.95 (很相似)✓
"Python学习" vs "Java入门"       = 0.75 (有点相关)
"Python学习" vs "数据结构"       = 0.2  (不相关)

返回最相似的:Python基础教程

5.3 为什么不用传统数据库?

场景 传统数据库 向量数据库
查”Python” ✅ 精确匹配 ✅ 精确匹配
查意思相近的 ❌ 做不到 ✅ 语义搜索
推荐相关内容 ❌ 做不到 ✅ 相似度推荐

六、什么是Prompt工程?

6.1 通俗理解

Prompt = 给AI的指令/问题

Prompt工程 = 写好指令的技巧

6.2 类比

Prompt就像"提问的艺术"

不好的提问:
"写代码"
→ AI:写什么代码?什么语言?什么功能?

好的提问:
"请用Python写一个函数,输入是一个列表,输出是列表去重后的结果,要求保持原有顺序"
→ AI:明确要求,能给出准确答案

6.3 本项目中的Prompt示例

# 面试官Agent的Prompt
INTERVIEWER_SYSTEM_PROMPT = """
你是一位专业的技术面试官。

你的目标:通过专业的技术面试,全面评估候选人的技术能力

你的背景:你是一位拥有10年以上经验的技术面试官...

请始终以专业、友好的态度完成任务。
"""

# 评估Agent的Prompt
EVALUATOR_PROMPT = """
【面试场景】{scenario}
【问题】{question}
【回答】{answer}

请评估以上回答,按以下格式输出:
- 分数(0-5分)
- 优点
- 改进建议
"""

6.4 Prompt技巧

技巧 说明 示例
角色设定 告诉AI它是谁 “你是一位资深面试官…”
明确格式 指定输出格式 “按JSON格式输出…”
示例说明 给例子 “例如:好的回答应该包含…”
约束条件 限制范围 “评分范围0-5分…”

七、什么是流程编排?

7.1 通俗理解

流程编排 = 定义任务执行的顺序和规则

7.2 类比:做菜的流程

传统程序:固定流程
1. 买菜 → 2. 洗菜 → 3. 切菜 → 4. 炒菜 → 5. 上桌
问题:如果菜已经洗好了?还是要重新洗

流程编排:灵活流程
@start
async def 买菜():
    return "买到菜了"

@listen(买菜)
async def 洗菜(prev_result):
    if 菜已经洗过了:
        return "跳过洗菜"
    return "洗好了"

@listen(洗菜)
async def 炒菜(prev_result):
    return "炒好了"

特点:可以根据情况调整流程

7.3 本项目中的流程

class InterviewFlow(Flow):

    @start()
    async def 自我介绍(self, context):
        return "请做个自我介绍"

    @listen(自我介绍)
    async def 技术问答(self, prev_result, context):
        return "技术问题..."

    @router(技术问答)
    async def 自适应下一环节(self, prev_result, context):
        # 根据候选人水平决定下一环节
        if 水平 == "专家":
            return "系统设计"
        else:
            return "基础编程"

    @parallel([技术评估, 沟通评估])
    async def 综合评分(self, results, context):
        return 合并评分结果

八、常用术语表

术语 大白话解释
LLM 大语言模型,如ChatGPT、通义千问,能理解和生成文字
Token 文字的基本单位,一个汉字≈1-2个token
Temperature 温度,控制AI回答的随机性,0=保守,1=随机
Embedding 把文字变成数字向量
Vector 向量,一串数字,代表文字的语义
Cosine Similarity 余弦相似度,计算两个向量的相似程度
RAG 先查资料再回答
Multi-Agent 多个AI协作完成任务
Prompt 给AI的指令
Fine-tuning 微调,用特定数据训练模型
Inference 推理,模型生成回答的过程

九、学习路径建议

第一周:理解概念

第二周:看代码

第三周:动手实验

第四周:准备面试


下一篇:面试准备指南 - 如何向面试官介绍这个项目