创建时间: 2026-08-12最后更新: 2026-08-12

1. 什么是 AI Agent

我们常说的 Agent 是对于大模型(LLM)对话能力的封装。

Agent 的复杂度,会按照如下几个方向,进行演变

  • 从单次对话,到多次对话、
  • 从短期对话,到长期对话、
  • 从有回应,到有更好的回应
  • 从单角色,到多角色对话、

而我们的速成学习法,也是围绕这个方向进行展开。因此,这一章,我们要要掌握的,就是我们最熟悉的最常见的一种场景:跟 LLM 单次对话

单次对话

如下案例所示,我这里实现了一个最简单 Agent. 在此 Agent 中,我没有做任何处理,直接跟大语言模型进行对话,通俗来说就是直接调用大语言模型的 API,我的第一个需求是:「明天出门我应该带什么?」

出行规划 AgentLangChain + DeepSeek
agent.ts
chat-demo.tsx
01
import { readRequiredActiveLlmConfig } from '@keepzml/llm-runtime/client'
02
import { createChatModel } from '@keepzml/llm-runtime/model'
03
04
export interface AgentReplyChunk {
05
content: string
06
model: string
07
}
08
09
export interface AgentMessage {
10
role: 'user' | 'assistant'
11
content: string
12
}
13
14
export async function* runTravelAgent(
15
messages: readonly AgentMessage[],
16
abortSignal?: AbortSignal,
17
): AsyncGenerator<AgentReplyChunk> {
18
const config = await readRequiredActiveLlmConfig()
19
const model = await createChatModel(config, {
20
temperature: config.temperature ?? 0,
21
thinkingIntensity: 'off',
22
})
23
24
const stream = await model.stream([
25
[
26
'system',
27
`你是一个谨慎的出行规划 Agent。你的目标是根据用户的目的地、行程、天气和个人习惯,给出可靠的出行准备建议`,
28
],
29
...messages.map(message => ({
30
role: message.role,
31
content: message.content,
32
})),
33
], { signal: abortSignal })
34
35
let hasContent = false
36
37
for await (const chunk of stream) {
38
const content = readTextContent(chunk.content)
39
if (!content) continue
40
41
hasContent = true
42
yield {
43
content,
44
model: config.model,
45
}
46
}
47
48
if (!hasContent) throw new Error('模型没有返回可显示的文字内容')
49
}
50
51
function readTextContent(content: unknown) {
52
if (typeof content === 'string') return content
53
if (!Array.isArray(content)) return ''
54
55
const text = content
56
.map((part) => {
57
if (typeof part === 'string') return part
58
if (
59
part
60
&& typeof part === 'object'
61
&& 'text' in part
62
&& typeof part.text === 'string'
63
) {
64
return part.text
65
}
66
return ''
67
})
68
.filter(Boolean)
69
.join('\n')
70
71
return text
72
}
73

目前为止,从回复中,我们可以看到。此时 LLM 并无法给我们准确答案,它给出的答案,更像是一种通用建议,而非针对性的建议。

这个回答并不算错,但它没有真正解决问题。

因为「应该带什么」并不是一个固定清单,而是取决于很多事情:明天去哪里,要待多久,天气怎么样,中间有没有特殊安排,身上有没有已经习惯携带的物品。

如果明天只是下楼取个快递,带上手机和钥匙就够了;如果要坐高铁去外地出差,身份证、充电器、电脑和药品也许更重要。问题本身没有变,答案却会随着场景变化。

这就是我们学习开发 AI Agent 时非常重要的第一个观察:用户说出来的通常只是一个结果愿望,而不是一份完整需求。

并且,用户大概率并不会主动告诉我们所有背景。他只会说自己此刻最先想到的那句话

因此,当用户期望我们的 Agent 变得更加强大,能够给出更加精准的答案时,我们就需要帮助用户低成本的补充缺失的信息,例如,常见的前置信息有

  • 用户的目的地
  • 用户的出行方式
  • 用户的出行时间
  • 天气怎么样
  • 用户的出行习惯
  • 用户的出行特殊需求
  • 用户出行的陪同人员
  • ...

当我们开始尝试去补全这些前置信息时,我们的 Agent 就会逐渐变得更加复杂,相对应的一系列我们需要学习的知识点,也会随之出现

首先第一个需要学习的知识点是:意图识别

订阅后可阅读剩余内容
AI 电子伴侣企业级项目实战
已发布239计划发布120目标已完成199%