零基础开发AI智能体教程(5)|在智能体中调用外部工具的实现指南——以天气查询为例

一、技术背景

大模型智能体(Agent)通过与外部工具的结合,可以突破纯文本处理的限制,实现更强大的功能交互。本教程将以天气查询为例,演示如何通过swarm框架实现智能体与OpenWeather API的对接。

OpenWeather注册及API key获取方法

  为了能够调用OpenWeather服务,和OpenAI的API使用过程类似,我们首先需要先注册OpenWeather账号,并获取OpenWeather API Key。这里需要注意的是,对于大多数在线服务的API来说,都需要通过API key来进行身份验证,尽管OpenWeather相对更加Open,有非常多的免费使用的次数,但身份验证仍然是必要的防止API被滥用的有效手段。OpenWeather API key获取流程如下:

  • Step 1.登录OpenWeather官网并点击Sign—>create account完成注册。该网站无需魔法即可直接登录,可以使用国内邮箱或者QQ邮箱均可进行注册,官网地址为:https://openweathermap.org/
  • Step 2.获取API-key:注册完成后,即可在API keys页面查看当前账户的API key:

 

 完成注册后,就会有一个已经激活的API-key。和OpenAI一样,OpenWeather的API key也创建多个。

二、实现步骤

步骤1:创建工具函数
def get_weather(loc):
    """
        查询即时天气函数
        :param loc: 必要参数,字符串类型,用于表示查询天气的具体城市名称,\
        注意,中国的城市需要用对应城市的英文名称代替,例如如果需要查询北京市天气,则loc参数需要输入'Beijing';
        :return:OpenWeather API查询即时天气的结果,具体URL请求地址为:https://api.openweathermap.org/data/2.5/weather\
        返回结果对象类型为解析之后的JSON格式对象,并用字符串形式进行表示,其中包含了全部重要的天气信息
        """
    # Step 1.构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {
        "q": loc,
        "appid": open_weather_key,  # 输入API key
        "units": "metric",  # 使用摄氏度而不是华氏度
        "lang": "zh_cn"  # 输出语言为简体中文
    }

    # Step 3.发送GET请求
    response = requests.get(url, params=params)

    # Step 4.解析响应
    data = response.json()
    return json.dumps(data)

 

步骤2:构建智能体
agent = Agent(
    name = "查询天气小助手",
    instructions = "如果用户问的是有关天气问题,请调用查询天气函数,根据相应内容回答。其他情况请正常回答",
    functions = [get_weather],
    model = "deepseek-chat"
)
完整代码:
 
import os
from openai import OpenAI
from swarm import Swarm, Agent
from IPython.display import Markdown, display
import swarm
import requests
import json

client = OpenAI(api_key="your_api_key", base_url="https://api.deepseek.com")
open_weather_key = "your_api_key"
def get_weather(loc):
    """
        查询即时天气函数
        :param loc: 必要参数,字符串类型,用于表示查询天气的具体城市名称,\
        注意,中国的城市需要用对应城市的英文名称代替,例如如果需要查询北京市天气,则loc参数需要输入'Beijing';
        :return:OpenWeather API查询即时天气的结果,具体URL请求地址为:https://api.openweathermap.org/data/2.5/weather\
        返回结果对象类型为解析之后的JSON格式对象,并用字符串形式进行表示,其中包含了全部重要的天气信息
        """
    # Step 1.构建请求
    url = "https://api.openweathermap.org/data/2.5/weather"

    # Step 2.设置查询参数
    params = {
        "q": loc,
        "appid": open_weather_key,  # 输入API key
        "units": "metric",  # 使用摄氏度而不是华氏度
        "lang": "zh_cn"  # 输出语言为简体中文
    }

    # Step 3.发送GET请求
    response = requests.get(url, params=params)

    # Step 4.解析响应
    data = response.json()
    return json.dumps(data)

swarm_client = Swarm(client)
question = input("您好,有什么问题您可以随时向我咨询")

agent = Agent(
    name = "查询天气小助手",
    instructions = "如果用户问的是有关天气问题,请调用查询天气函数,根据相应内容回答。其他情况请正常回答",
    functions = [get_weather],
    model = "deepseek-chat"
)
response = swarm_client.run(
    agent = agent,
    messages = [{"role":"user","content":question}]
)
print(response.messages)

三、原理解析

智能体通过分析用户输入的语义特征,结合instruction中的触发规则,决定是否调用注册函数。

 functions=[get_weather, get_stock, get_news],
    ...
)

四、结语

通过本教程,您可以快速掌握智能体调用外部工具的核心方法。实际开发中可根据业务需求扩展更多工具类型,建议从简单场景入手逐步构建复杂的智能服务系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值