AI--初识智能体

AI–初识智能体

0.前言

  在人工智能浪潮席卷全球的今天,智能体(Agent)已成为驱动技术变革与应用创新的核心概念之一,那么智能体是什么?它有哪些主要的类型?它又是如何与我们邻近的世界进行交互的?这就是今天要学习的内容(学习内容主要参考来源:https://github.com/datawhalechina/hello-agents)

  

1.什么是智能体

  智能体(AI Agent)本质上就是人工智能领域的一种高级系统,它能够感知环境,并自主采取行动以实现特定目标。如果说传统的AI只是被动等待指令、执行单一任务的“工具”,那么智能体则是拥有目标、具备逻辑和行动力的“助手”甚至“伙伴”。目前而言, 智能体依赖于LLM大模型作为大脑,智能体的上限取决于LLM模型的能力。

  

2.智能体应用的协作模式

  目前市面上的智能体模式可以分为两种,一种是作为开发者工具的智能体,这种智能体主要是为了深入融合到我们的工作流中,一种是作为自主协作者的智能体,与其他智能体协作完成比较复杂的目标内容

  • 协助开发智能体

  这种智能体的目的是为了增强开发者,通过自动化处理繁琐、重复的任务,让开发者能够更加专注于创造更核心的工作内容,主要测评有例如:Claude Code、Trae、Cursor:等

  • 自主协作智能体

  这一类智能体,我们不在是手把手的指导AI完成每一步内容,而是将一个更高层的目标委托给它,将他当做一个员工看待,能够独立地规划、推理。执行和反思,最后交付成果,从助手到协作者的转变,这种智能体也就是现在企业常说的AI agent智能体

  

3.Workflow vs Agent

  一般而言,智能体的构造是任务分解、工具调用、上下文理解和结果合成这四个步骤,workflow即工作流,二者尽管都是为了实现任务自动化,但其底层逻辑、核心特征和适用场景却截然不同。

  工作流是一种传统的自动化范式,其核心是对一系列任务或步骤进行预先定义的、结构化的编排。它本质上是一个精确的、静态的流程图,规定了在何种条件下、以何种顺序执行哪些操作。而智能体是一个具备自主性的、以目标为导向的系统。它不仅仅是执行预设指令,而是能够在一定程度上理解环境、进行推理、制定计划,并动态地采取行动以达成最终目标。

  通俗的讲,工作流的判断流程是人提前预设好的,,而智能体基于大模型的思考下,会基于实时信息进行动态推理和决策的能力。也就仨我们将思考权交给了大模型,从而完成工作,这就是本质区别

  

4.智能体的经典范式构建

  一个现代的智能体,核心能力在于将大语言模型的推理能力与外部世界联通,使得其能够用自主的理解用户意图,拆解复杂任务,通过调用代码解释器等一系列操作的工具,来获取信息、执行操作,到最终的达成目标,而为了更好的让智能体进行“思考”和“行动”的过程,业界中也出现了一些的比较经典的架构范式,这里我们给出三种最具有代表性的例子

  • ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
  • Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
  • Reflection: 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。

  总结来说就是一个边想边做,一个思考后再做,一个做完加入反思进行修正。

  

5.基础的环境准备与基础工具定义

  现在我们将开始构建这些基础的范式,在此之前,需要先搭建好开发环境并定义一些基础的组件。

  • 语言选定

  之前的章节有说过目前ai框架中适配的语言是python和java,我只用过python,所以使用Python语言,版本是3.11(这里建议是使用3.10及更高版本),至于python的部署网络上都有,这里就不过多讲述了

  • 安装依赖库

  大语言的交互需要使用openai库,以及python-dotenv库用于更加安全的管理我们的API密钥,所以需要在终端执行:

1
pip install openai python-dotenv
  • 配置API密钥

  为了让我们的代码更通用,我们将模型服务的相关信息(模型ID、API密钥、服务地址)统一配置在环境变量中。我这里用的是minimax官方的key

    1. 在你的项目根目录下,创建一个名为 .env 的文件。
    2. 在该文件中,添加以下内容。你可以根据自己的需要,将其指向 OpenAI 官方服务,或任何兼容 OpenAI 接口的本地/第三方服务。(用其他的api也行,不过要注意对应官方的调用文档)
1
2
3
4
# .env file
LLM_API_KEY="YOUR-API-KEY"
LLM_MODEL_ID="YOUR-MODEL"
LLM_BASE_URL="YOUR-URL"
  • 封装LLM调用函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import os
#为后续调用llm下载函数
from openai import OpenAI
#把.env 文件里的键值对读进当前进程的环境变量
from dotenv import load_dotenv


# 加载 .env 文件中的环境变量
load_dotenv()

#定义一个类,类名是HelloAgentsLLM,类里面有三个方法:__init__、think、__main__
class HelloAgentsLLM:
"""
为本书 "Hello Agents" 定制的LLM客户端。
它用于调用任何兼容OpenAI接口的服务,并默认使用流式响应。
"""
#等价于 def __init__(self, model=None, apiKey=None, baseUrl=None, timeout=None):
def __init__(self, model: str | None = None, apiKey: str | None = None, baseUrl: str | None = None, timeout: int | None = None):
"""
初始化客户端。优先使用传入参数,如果未提供,则从环境变量加载。
"""
self.model = model or os.getenv("LLM_MODEL_ID")
apiKey = apiKey or os.getenv("LLM_API_KEY")
baseUrl = baseUrl or os.getenv("LLM_BASE_URL")
timeout = timeout or int(os.getenv("LLM_TIMEOUT", 60))

# 检查是否提供了必要的参数
if not all([self.model, apiKey, baseUrl]):
raise ValueError("模型ID、API密钥和服务地址必须被提供或在.env文件中定义。")

#
self.client = OpenAI(api_key=apiKey, base_url=baseUrl, timeout=timeout)

def think(self, messages: list[dict[str, str]], temperature: float = 0) -> str | None:
"""
调用大语言模型进行思考,并返回其响应。
"""
print(f"🧠 正在调用 {self.model} 模型...")
try:
response = self.client.chat.completions.create(
model=self.model,
messages=messages,
temperature=temperature,
stream=True,
)

# 处理流式响应
print("✅ 大语言模型响应成功:")
collected_content = []
for chunk in response:
if not chunk.choices: # 如果没有选择,跳过,因为有些大语言模型会返回空的选择,比如OpenAI 会在所有正常 chunk 推完之后,再单独推一个特殊的收尾 chunk
continue
# 从当前 chunk 中提取内容
content = chunk.choices[0].delta.content or ""
print(content, end="", flush=True) # 直接打印到标准输出,不换行
# 收集内容到列表中,用于后续返回
collected_content.append(content)
print() # 在流式输出结束后换行
return "".join(collected_content)

# 处理异常情况
except Exception as e:
print(f"❌ 调用LLM API时发生错误: {e}")
return None

# --- 客户端使用示例 ---
if __name__ == '__main__':
try:
llmClient = HelloAgentsLLM()

exampleMessages = [
{"role": "system", "content": "You are a helpful assistant that writes Python code."},
{"role": "user", "content": "写一个快速排序算法"}
]

print("--- 调用LLM ---")
responseText = llmClient.think(exampleMessages)
if responseText:
print("\n\n--- 完整模型响应 ---")
print(responseText)

except ValueError as e:
print(e)

  这是定义的一个快速排序算法的交互客户端:


AI--初识智能体
https://one-null-pointer.github.io/2026/03/10/AI --初识智能体/
Author
liaoyue
Posted on
March 10, 2026
传送口