最近跟着 datawhale 的 hello-agents 教程入门智能体,从模糊的概念到亲手写出可运行的程序,每一步都充满惊喜。今天就把这份学习笔记整理出来,和大家聊聊智能体的定义、类型、核心范式,还有我用 Deepseek 在 PyCharm 里实现的实操案例~
一、先搞懂:到底什么是智能体?![]()
其实智能体的核心定义特别好理解 —— 它就是一个能感知周围环境,还能自主行动去达成目标的 “实体”。这个实体可能是自动驾驶汽车、手机里的导航 APP,甚至是处理金融交易的算法。
拆解下来,智能体得满足四个关键条件:首先得有 “感知器官”,比如摄像头、传感器或者 API 接口,能捕捉环境信息;其次得有 “行动工具”,像机械臂、代码函数这些,能对环境产生影响;最重要的是 “自主性”,不用人一步一步指挥,能自己做决策;最后还要有明确的 “目标”,所有行动都围绕这个目标展开。
就像我们日常用的导航 APP,它通过地图数据感知你的位置和路况(感知),通过规划路线和语音提示(行动),帮你在最短时间内到达目的地(目标),全程不用你手动计算路线,这就是一个典型的智能体。
二、智能体的类型与范式
智能体的世界并不是单一的,而是多元而精彩的。根据功能和应用场景的不同,智能体可以分为多种类型,比如任务型智能体、交互型智能体、学习型智能体等。每一种类型都有其独特的魅力和应用场景。
任务型智能体:就像是一个勤劳的小蜜蜂,专注于完成特定的任务,比如查询天气、订购机票等。
交互型智能体:则更像是一个善解人意的朋友,能够与你进行自然的语言交流,理解你的情感和需求。
学习型智能体:则是一个不断进步的学生,通过不断的学习和优化,提升自己的能力和效率。
在智能体的范式方面,也有监督学习、强化学习等多种方式。这些范式为智能体的训练和优化提供了丰富的工具和方法,使得智能体能够更加智能、更加高效。
三、智能体的三大分类维度
,智能体还能从三个角度分类,不同分类对应不同的应用场景:
1. 按决策架构分:从简单到复杂
就是我们前面聊的 “进化史” 分类 —— 简单反射、基于模型、基于目标、基于效用、学习型,复杂度逐级提升,适用场景也从简单的自动化任务,扩展到金融交易、医疗诊断等复杂场景。
2. 按反应速度分:快反应 vs 深思考
反应式智能体:像安全气囊系统,必须毫秒级反应,追求速度优先,不做复杂规划;
规划式智能体:像 AlphaGo 或物流路径规划系统,会提前思考未来几步甚至几十步的行动,追求最优结果,不在乎多花一点时间;
混合式智能体:结合两者优点,比如自动驾驶汽车,遇到突发情况(如前方突然出现障碍物)会瞬间反应刹车(反应式),但日常行驶会规划最优路线(规划式)。
3. 按知识存储分:显性规则 vs 隐性模式
符号主义智能体:像严谨的图书管理员,知识都以明确的规则和概念存在,比如 “猫有四条腿、会喵喵叫”,推理过程清晰可追溯,但面对模糊情况容易出错;
亚符号主义智能体:像牙牙学语的孩子,通过大量数据学习规律,不用明确规则就能识别猫的图片,但说不出 “为什么这是猫”,推理过程像 “黑箱”;
神经符号主义智能体:结合两者优点,既有神经网络的模式识别能力,又有符号系统的逻辑推理能力,就像人类的 “直觉 + 理性”,是现在最热门的发展方向。
四、实操环节:用 Deepseek 实现智能旅行助手
理论说得再多,不如亲手写一段代码。跟着教程,我在 PyCharm 里用 Deepseek 模型,实现了一个简单的智能旅行助手 —— 核心功能是 “查询北京今日天气,再根据天气推荐景点”。
1. 准备工作
首先得安装必要的库:requests(调用 API)、tavily-python(搜索工具)、openai(对接 Deepseek,因为 Deepseek 兼容 OpenAI 接口),用 pip 命令一键安装:
pip install requests tavily-python openai然后要准备两个关键工具:
天气查询工具:调用 wttr.in 的免费 API,获取北京的实时天气;
景点推荐工具:用 Tavily 搜索 API,根据天气推荐合适的景点。
2. 核心逻辑:Thought-Action-Observation 循环
智能体的运行核心就是这个 “思考 - 行动 - 观察” 的闭环,我来拆解一下这个过程:
思考(Thought):智能体收到用户指令后,分析需要做什么 —— 先查天气,再根据天气推荐景点;
行动(Action):调用对应的工具函数,比如先调用 get_weather ("北京") 获取天气数据;
观察(Observation):工具返回结果后,智能体读取这个结果,作为下一步行动的依据;
循环:直到完成目标,输出最终答案。
3. 关键代码片段
首先是工具函数的实现,天气查询函数:
import requests def get_weather(city: str) -> str: url = f"https://wttr.in/{city}?format=j1" try: response = requests.get(url) response.raise_for_status() data = response.json() current_condition = data['current_condition'][0] weather_desc = current_condition['weatherDesc'][0]['value'] temp_c = current_condition['temp_C'] return f"{city}当前天气:{weather_desc},气温{temp_c}摄氏度" except Exception as e: return f"天气查询失败:{e}"然后是景点推荐函数,结合 Tavily 搜索:
import os from tavily import TavilyClient def get_attraction(city: str, weather: str) -> str: api_key = os.environ.get("TAVILY_API_KEY") if not api_key: return "未配置TAVILY_API_KEY" tavily = TavilyClient(api_key=api_key) query = f"'{city}' 在'{weather}'天气下最值得去的旅游景点及理由" try: response = tavily.search(query=query, search_depth="basic", include_answer=True) if response.get("answer"): return response["answer"] return "未找到合适的景点推荐" except Exception as e: return f"景点搜索失败:{e}"最后是对接 Deepseek,实现循环逻辑:
from openai import OpenAI # 初始化Deepseek客户端 client = OpenAI( api_key="你的Deepseek API密钥", base_url="https://api.deepseek.com" ) # 系统提示,定义智能体角色和行动规则 system_prompt = """ 你是智能旅行助手,用以下工具解决用户问题: - get_weather(city: str):查询城市实时天气 - get_attraction(city: str, weather: str):根据天气推荐景点 每次回复需遵循:先思考过程,再行动,格式为: Thought: [思考过程] Action: [工具调用,如function_name(arg="value")] 完成任务后用finish(answer="最终答案")输出结果 """ # 用户指令 user_prompt = "帮我查询一下今天北京的天气,然后根据天气推荐一个合适的旅游景点" # 运行循环 prompt_history = [{"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}] for _ in range(5): # 限制最大循环次数 response = client.chat.completions.create( model="deepseek-chat", messages=prompt_history ) llm_output = response.choices[0].message.content prompt_history.append({"role": "assistant", "content": llm_output}) # 解析行动并执行 if "get_weather" in llm_output: weather = get_weather("北京") prompt_history.append({"role": "user", "content": f"Observation: {weather}"}) elif "get_attraction" in llm_output: # 提取天气信息 weather = [msg for msg in prompt_history if "Observation:" in msg["content"]][0]["content"].split(":")[-1] attraction = get_attraction("北京", weather) prompt_history.append({"role": "user", "content": f"Observation: {attraction}"}) elif "finish" in llm_output: final_answer = llm_output.split('"')[1] print("最终结果:", final_answer) break4. 运行结果超惊喜!
程序运行后,先调用天气接口获取到 “Observation: 北京当前天气:Clear,气温-3摄氏度”,然后自动调用景点推荐工具,最后输出:“任务完成,最终答案: 根据查询,北京今天的天气是多云,气温7摄氏度。这种天气比较凉爽但适合户外活动。我推荐您参观颐和园,多云天气下漫步在湖畔和园林中会很舒适,既能欣赏皇家园林的秋色,又不会太晒。记得穿件外套保暖。”
整个过程完全自动化,不用手动干预,智能体自己完成了 “查天气 - 分析场景 - 推荐景点” 的全流程,这就是 LLM 驱动智能体的魅力~
五、学习小结
这次学习《第一章 初识智能体》,最大的收获就是把 “智能体” 这个抽象概念,变成了可理解、可实操的知识。从定义来看,智能体的核心是 “感知 - 自主行动 - 目标导向”;从发展来看,它从简单反射进化到了能自主学习的高级形态;从应用来看,LLM 驱动的智能体正在改变我们的工作和生活方式。
而亲手用 Deepseek 实现旅行助手的过程,更让我感受到了智能体的落地魅力 —— 不用复杂的代码,通过 “思考 - 行动 - 观察” 的循环,就能让模型自主调用工具、解决实际问题。接下来还想试试给智能体添加 “记忆功能”,让它记住用户的旅行偏好,或者处理景点售罄时的备选方案,继续探索智能体的更多可能性~