AI Agent新手入门:从零构建你的第一个智能代理

1次阅读
没有评论

共计 2359 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

什么是 AI Agent

AI Agent(智能代理)是一种能够感知环境、自主决策并执行动作的软件程序。它像是一个数字世界的智能助手,能帮你完成特定任务,比如自动回复邮件、智能客服、数据分析等。

AI Agent 新手入门:从零构建你的第一个智能代理

AI Agent 的核心特点包括:

  • 自主性:能在没有人类干预下运行
  • 反应性:能感知环境变化并做出响应
  • 目标导向:为实现特定目标而设计
  • 学习能力:部分 Agent 能通过经验改进表现

开发工具选型

目前主流 AI Agent 开发框架主要有两类:

  • LangChain
  • 优点:模块化设计,支持多种大语言模型,文档丰富
  • 缺点:学习曲线较陡,需要较多配置

  • AutoGPT

  • 优点:开箱即用,自动任务分解能力强
  • 缺点:可控性较低,资源消耗大

对于初学者,建议从 LangChain 开始,因为它能让你更清楚地理解 Agent 的工作机制。

实战:构建天气查询 Agent

环境准备

  1. 安装 Python 3.8+(推荐使用 Anaconda 管理环境)
  2. 安装必要库:
    pip install openai python-dotenv requests
  3. 申请 OpenAI API Key(免费试用额度足够学习使用)

核心代码实现

创建 weather_agent.py 文件,完整代码如下:

import os
import openai
import requests
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

# 天气 API 配置
WEATHER_API_URL = "https://api.openweathermap.org/data/2.5/weather"
WEATHER_API_KEY = os.getenv("WEATHER_API_KEY")

# 基础 Agent 类
class WeatherAgent:
    def __init__(self):
        self.memory = []  # 简单的对话记忆

    def get_weather(self, city):
        """调用天气 API 获取数据"""
        try:
            params = {
                'q': city,
                'appid': WEATHER_API_KEY,
                'units': 'metric'
            }
            response = requests.get(WEATHER_API_URL, params=params)
            data = response.json()

            if response.status_code == 200:
                weather = {'city': data['name'],
                    'temp': data['main']['temp'],
                    'description': data['weather'][0]['description']
                }
                return weather
            else:
                return {"error": data.get("message", "Unknown error")}
        except Exception as e:
            return {"error": str(e)}

    def process_query(self, user_input):
        """处理用户输入并生成响应"""
        # 使用 GPT-3.5 分析用户意图
        prompt = f"""用户说:'{user_input}'. 
        这是关于天气的查询吗?如果是,请提取城市名。只回复城市名或 '不是天气查询'。"""

        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            temperature=0
        )

        city = response.choices[0].message.content.strip()

        if city.lower() == "不是天气查询":
            return "我是一个天气查询助手,请询问与天气相关的问题"

        weather = self.get_weather(city)
        if "error" in weather:
            return f"无法获取 {city} 的天气: {weather['error']}"

        return f"{weather['city']}当前天气: {weather['description']}, 温度{weather['temp']}°C"

# 示例使用
if __name__ == "__main__":
    agent = WeatherAgent()
    print(agent.process_query("北京今天天气怎么样?"))

运行测试

  1. 创建 .env 文件存储 API 密钥:
    OPENAI_API_KEY= 你的 OpenAI 密钥
    WEATHER_API_KEY= 你的天气 API 密钥
  2. 运行程序:
    python weather_agent.py
  3. 测试不同查询,例如:
  4. “ 上海明天会下雨吗?”
  5. “ 纽约现在的气温 ”
  6. “ 今天适合穿什么衣服?”(非天气查询)

生产环境注意事项

API 调用频率限制

  • OpenAI 免费账号每分钟 3 次请求
  • 天气 API 通常有每日限额

解决方案:

  • 添加请求间隔(如time.sleep(1)
  • 实现本地缓存(对相同查询返回缓存结果)
  • 监控 API 使用量

错误处理最佳实践

  1. 对所有 API 调用添加 try-catch
  2. 检查 HTTP 状态码
  3. 实现重试机制(但要注意指数退避)
  4. 记录错误日志

本地测试技巧

  • 使用 unittestpytest编写测试用例
  • Mock 外部 API 响应
  • 测试边界情况(如空输入、错误城市名)

总结与思考

通过这个简单项目,你已经实现了一个能理解自然语言并查询天气的 AI Agent。这是构建更复杂 Agent 的基础。

接下来可以思考:

  1. 如何让 Agent 记住对话历史,实现多轮对话?
  2. 除了天气查询,还能整合哪些实用功能?
  3. 如何评估和改进 Agent 的准确性?

AI Agent 开发是一个循序渐进的过程,从简单功能开始,逐步增加复杂度,是最高效的学习路径。

正文完
 0
评论(没有评论)