构建会思考的AI助手:核心架构与天气查询案例解析

一、什么是Agent

AI Agent(人工智能代理)可以理解为一种“智能小帮手”。它就像一个能自己动脑子、会做事的机器人程序,只不过它不一定有实体,以软件形式部署于终端设备或云端的智能程序。
用生活例子解释:
假设你有一个“外卖小哥版AI Agent”:

  1. 它能自己思考:

     接到送餐任务后,它会自己规划最快路线,而不是每一步都问你“左转还是直行”。

  2. 它会随机应变:

     如果遇到堵车,它能立刻绕路;如果顾客电话打不通,它会发短信或等几分钟再试。

  3. 它有目标:

     核心目标不是单纯执行命令,而是“把外卖准时送到”,为此它会主动解决路上各种问题。
    和普通程序的区别:

  • 普通程序如同电饭煲

    :执行预设流程但缺乏应变能力,即使水烧干仍持续加热

  • AI Agent

    :像智能厨师,你说“做顿饭”,它会自己看冰箱里有什么菜、考虑你的口味、决定菜谱,发现没盐了还会下楼买。
    生活中的AI Agent:

  • 手机里的智能助手(比如你问“明天穿什么?”,它会查天气、看你的日程安排再建议)
  • 游戏里会配合你打怪的队友NPC
  • 能自动比价、抢优惠券的购物助手
    简单说,它就是有脑子、会主动解决问题的程序,不用你手把手教每一步,只要告诉它“要什么结果”,它自己会想办法搞定。
    从上面的例子可以明显看出,AI Agent需要可以做到 「检索」「规划」「执行」
    image.png

    image.png

二、Agent的设计理念

AI Agent = 大模型+计划+记忆+工具+行动

image.png
image.png

2.1反射(Reflection)

反射模式允许Al Agent审视自身生成的输出,并进行自我修正。
这种自我监督的能力使得AI能够在执行任务时不断优化策略, 提高准确性和效率。
例如,一个AI Agent 可能会生成一段代码,然后自我检查并修复潜在的错误,从而提升代码质量。

2.2工具使用(Tools Use)

工具使用模式是指Al Agent能够调用外部工具和API来增强自身的功能。
这种模式使得AI能够超越自身的知识库,通过与外部系统的交互来获取信息、执行操作或生成内容,极大地扩展了AI的应用范围和灵活性。

2.3规划(思维链)

规划模式赋予AI Agent将复杂任务分解为多个步骤并有序执行的能力。
通过这种方式,AI 能够更系统地处理问题,制定出有效的行动计划,并按照计划逐步推进任务完成。
这在需要长期思考和策略部署的任务中尤为重要,如市场分析或项目管理。

三、Agent落地方案

场景

技术方案

快速验证需求(闭源)

扣子、FastGPT、Dify等

可定制化开发

MetaGPT、AutoGen等

专业AI应用开发

LangChain、LangGraph等

四、实际案例

天气助手

直接使用大模型查询天气和天气AI Agent的区别

image.png
image.png

image.png
image.png

前置条件

使用高德开放平台获取天气信息

  1. 完成登录
  2. 新建应用
  3. 添加Key
  4. 获取Key
    新建应用

    新建应用

    添加Key
    添加Key

    获取Key
    获取Key

提示词

你是一个天气查询助手,用户会向你询问有关天气的问题,当用户的问题涉及到具体的某一天时,你需要先调用时间工具获得用户问题所指的时间,然后再查询对应日期的天气

使用FastGPT实现天气助手

FastGPT没有现成的工具,所以我们需要使用插件+工作流来完成天气查询工具的创建
这个工具实质上就是一个http请求,对应的接口文档为:https://lbs.amap.com/api/webservice/guide/api/weatherinfo/#t1
从接口可以看出传入的city需要是城市编码:https://lbs.amap.com/api/webservice/download
将城市编码下载到本地后使用一个简单的脚本拿到数据

import json  
import pandas as pd  

df = pd.read_excel("/Users/Downloads/AMap_adcode_citycode.xlsx")  
data_dict = df.set_index("中文名")["adcode"].to_dict()  
json_data = json.dumps(data_dict, ensure_ascii=False)  
print(json_data)

新建一个插件来获取天气

image.png
image.png

image.png
image.png

使用工作流创建Agent
image.png
image.png

image.png
image.png

测试一下
测试一下

使用Dify实现天气助手

https://agent-sit.qunhequnhe.com/

image.png
image.png

image.png
image.png

添加工具:由于我们的问题中可能会涉及到时间,所以除了获取天气的工具外,还需要获取时间的工具

获取天气工具
获取天气工具

获取时间工具
获取时间工具

image.png
image.png

使用LangGraph实现天气助手

from langchain_openai import ChatOpenAI

gpt4o_model = ChatOpenAI(  
    model="gpt-4o",  
    api_key="sk-xxx",  
    base_url="https://oneapi.qunhequnhe.com/v1"  
)
import os  
import requests  
import pandas as pd  
from langchain_core.tools import tool  

from src.utils.constant import BASEDIR  


@tool  
def get_weather(city: str) -> str:  
    """获取指定城市的天气信息"""  
    df = pd.read_excel(os.path.join(BASEDIR, "src", "tools", "AMap_adcode_citycode.xlsx"))  
    data_dict = df.set_index("中文名")["adcode"].to_dict()  
    url = f"https://restapi.amap.com/v3/weather/weatherInfo"  
    params = {  
        "key": "你的高德Key",  
        "city": data_dict.get(city),  
    }  
    response = requests.get(url, params=params)  
    if response.status_code == 200:  
        data = response.json()  
        return data  
    else:  
        return "获取天气失败"
from langgraph.prebuilt import create_react_agent  

from src.tools.get_weather import get_weather  
from src.utils.models import gpt4o_model  

agent = create_react_agent(  
    model=gpt4o_model.bind_tools([get_weather]),  
    tools=[get_weather]  
)  

result = agent.invoke({"messages": [  
    {"content": "你是一个天气查询助手,用户会向你询问有关天气的问题,当用户的问题涉及到具体的某一天时,你需要先调用时间工具获得用户问题所指的时间,然后再查询对应日期的天气", "role": "system"},  
    {"content": "杭州市和北京市今天哪边更热", "role": "user"}  
]})  
print(result['messages'][-1].content)

小结

通过天气助手的完整实现案例,我们可以总结出AI Agent落地的三个关键要素:

  1. 认知架构设计
  • 融合LLM的语义理解与符号系统的精确执行
  • 实现「感知-决策-行动」的闭环工作流
  • 工具生态集成
    • API调用需考虑:鉴权机制、限流策略、错误重试
    • 工具描述应包含:功能说明、输入输出格式、使用示例
  • 工程化实践路径
    • 低代码平台(如Dify)适合快速原型验证
    • 开发框架(如LangGraph)支持复杂Agent编排
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值