智能体的Hello World——接入大模型

在这里插入图片描述

大家好,欢迎阅读这份《智能体(AI+Agent)开发指南》!
在大模型和智能体快速发展的今天,很多朋友希望学习如何从零开始搭建一个属于自己的智能体。本教程的特点是 完全基于国产大模型与火山推理引擎实现,不用翻墙即可上手,非常适合国内开发者快速实践。
通过循序渐进的讲解,你将学会从 环境配置、基础构建、进阶功能到实际案例 的完整流程,逐步掌握智能体开发的核心技能。无论你是初学者还是有经验的工程师,相信这份教程都能为你带来启发。

一. 什么是AI Agent

• 与普通 AI 的区别: 传统的 AI 应用遵循“一个口令,一个动作”的模式,而 AI Agent 则是“人类只给目标,AI 自己找路”。例如,对于“研究 AI Agent 的定义”这个任务,普通 AI 可能只会回答其定义,而 AI Agent 则会主动规划并执行一系列动作来完成整个研究任务。
• 工作循环 (Working Cycle): AI Agent 的工作流程是一个循环,包含以下几个步骤:
以 AlphaGo 为例,其目标是赢得棋局,它通过观察棋盘状态(Observation),决定下一步的落子位置(Action),对手的回应改变了棋盘状态(Environment Change),AlphaGo 再次观察、行动,如此循环,直至分出胜负。
目标 (Goal):确定最终需要达成的任务。
观察 (Observation):感知当前的环境状态。
行动 (Action):根据观察和目标,决定并执行下一步动作。
环境变化 (Environment Change):行动会改变环境,并产生新的状态。
循环 (Loop):Agent 再次观察新环境,重复上述过程,直到目标达成。

二. LLM驱动的AI Agent

• 工作原理:
由 LLM 驱动的 Agent 通过自然语言接收任务目标。它将环境信息(如文本、图片)作为输入,以文字形式输出决策和行动,并在循环中不断迭代直至任务完成。与需要专门训练的强化学习模型不同,LLM 凭借其强大的语言理解和生成能力,可以直接“推断”出下一步应该做什么。
• 优缺点:
◦ 优点:灵活性极高,能处理各种开放式任务;无需为每个任务定义复杂的奖励函数;行动空间几乎没有限制。
◦ 缺点:有时可能会做出未经深思熟虑的“猜测”;其决策质量高度依赖于对环境描述的准确理解,模糊或不完整的描述可能导致错误。

三. AI Agent的三大关键能力

  1. 根据经验调整行为: Agent 需要根据外部反馈来调整后续行动。LLM 主要通过“上下文学习”(In-context Learning)来实现这一点,即将历史行动和反馈作为新的输入,从而影响后续的输出。这面临着“记忆爆炸”的挑战——如果将所有历史记录都输入给 LLM,计算成本会急剧增加。解决方案通常包括引入 写入 (Write)、读取 (Read) 和 反思 (Reflection) 等记忆模块来高效管理历史信息。
  2. 使用工具 (Tool Using): LLM 自身存在短板(如无法进行实时计算、访问外部网站等),需要借助外部工具来扩展能力。Agent 通过学习如何调用工具(API)来弥补这些不足。当面对复杂任务时,Agent 需要一个“工具选择模块”来决定调用哪个最合适的工具。同时,Agent 也需要具备一定的判断力,以识别并处理工具可能返回的错误信息。
  3. 制定计划 (Planning): 计划能力指的是先思考并规划好所有步骤,再依次执行。LLM 具备一定的规划能力,但往往在细节上表现不佳。提升其规划能力的方法包括 试错法 (Trial and Error)、脑内模拟 (Internal Simulation) 和 借助工具辅助规划。

四. 使用 LangGraph 构建 Agent 实战

如何实现一个 Agent?关键步骤有两个:接入一个优秀的大模型 和 为其配置并调用工具。我们选择 LangGraph 作为构建 Agent 的框架。
GitHub:https://github.com/langchain-ai/langgraph

1. 环境配置

pip install -U langgraph
pip install langchain-openai

2. 代码实现

官方示例通常采用 Claude、GPT 或 Gemini 等模型,对新手可能不太友好。因此,我们这里改用字节的 doubao-1-5-pro-32k-250115 模型,该模型提供免费调用额度。
https://www.volcengine.com/
在这里插入图片描述

from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

# 配置 火山引擎 的模型服务
# 从 火山引擎 官网获取 API Key 和 Base URL
base_url = 'https://ark.cn-beijing.volces.com/api/v3'
api_key = '02c62e9c-8d14-432a-97fb-4e34ecfe9c5c'
model_name = 'doubao-1-5-pro-32k-250115'

# 定义一个工具函数
@tool
def get_weather(city: str) -> str:
    """为一个给定的城市获取天气信息。"""
    return f"{city}的天气是晴天"

# 初始化大语言模型
llm = ChatOpenAI(
    api_key=api_key,
    base_url=base_url,
    model_name=model_name,
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)

# 使用 LangGraph 创建一个 ReAct 风格的 Agent
# ReAct (Reasoning and Acting) 是一种让 LLM 通过思考和行动来解决问题的框架
agent = create_react_agent(
    model=llm,
    tools=[get_weather],
    prompt="You are a helpful assistant"# 你可以根据需要调整提示词
)

# 运行 Agent
# 我们向 Agent 提问 "what is the weather in sf"
result = agent.invoke(
    {"messages": [{"role": "user", "content": "what is the weather in Wuhan"}]}
)

# 打印最终的输出结果
# result 包含了完整的执行流程,我们这里只关心最终的回复内容
# 通常最终回复在消息列表的最后一条
print(result['messages'][-1].content)

结果输出:武汉目前的天气是晴天。
从结果可以看出,Agent 成功地理解了 "Wuhan 是 “武汉” ,并调用了 get_weather 工具,最终给出了正确的回复。这展示了一个最基本的 LLM Agent 的完整工作流程。

欢迎关注微信公众号:AIWorkshopLab,自动获取完整教程:智能体(AI+Agent)开发指南.pdf

### 如何将 AI 模型部署到 ESP32 设备上 #### 工具与环境准备 为了成功将 AI 模乐部署至 ESP32,需准备好开发工具链以及相应的硬件支持。推荐使用 ESP-IDF(Espressif IoT Development Framework),这是 Espressif 提供的一个官方框架用于开发基于 ESP 芯片的应用程序[^1]。 #### 文件结构配置 在实际操作过程中,通常会创建一个新的项目或将现有模型集成到现有的示例代码中。例如,在 `examples/hello_world/main/` 下存在一个名为 `model.cc` 的文件位置可以用来放置经过转换后的机器学习模型数据。如果涉及图像处理,则可参考 Edge Impulse 平台提供的案例,其中提到通过其导出功能获取特定于平台优化过的库并调整摄像头初始化脚本路径如 `\esp32\esp32_camera\esp32_camera.ino` 来适配具体需求[^4]。 #### 硬件选型考量 值得注意的是同系列的 ESP 处理器对于运行复杂度较高的算法可能存在性能差异。有经验表明即使相同逻辑实现也可能因物理器件状态影响最终效果;因此当遇到困难时妨尝试更换为更新一代产品比如 ESP32-C3 ,它或许能够更稳定地完成任务而受潜在缺陷干扰[^2]。 #### 修改基础流程实例说明 以构建一个人工智能驱动的声音交互装置为例,可以从 esp-adf (Audio Development Framework) 中选取合适的模板作为起点——这里选用 pipeline_baidu_speech_mp3 。在此之上逐步添加所需组件服务链接包括但限于语音识别API接口调用、自然语言理解模块接入还有最后一步合成发音返回给用户听觉反馈等功能点[^3]: ```c++ #include "your_model_header.h" void app_main() { initialize_hardware(); // 初始化外设 model_data_t *model = load_model_from_flash(MODEL_BASE_ADDR); while(true){ data_chunk_t input = capture_audio(); prediction_result_t result = run_inference(model, &input); process_output(result); } } ``` 上述伪代码展示了典型应用架构:从音频采集开始经由推理引擎得出结论直至后续动作执行形成闭环控制回路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV-deeplearning

请博主加个火腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值