给自己创建的GPTs添加Action(查天气)

前言

在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。

GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。
如果调用官方的GPT4接口,就可以按使用量付费,用多少付多少,而且没有3个小时内只能提问50条的使用限制。
但是对很多人来说调用接口是比较麻烦的。如果开发一个网站,后台调用GPT4的接口,大家一起用,
分摊一下服务器的成本,就比较划算了。见文末【参考链接】

{
  "openapi": "3.1.0",
  "info": {
    "title": "获取城市的天气数据",
    "description": "获取指定地区的当前天气情况",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://chat.xutongbao.top"
    }
  ],
  "paths": {
    "/api/light/chat/getWeather": {
      "get": {
        "description": "获取指定地区的当前天气情况",
        "operationId": "GetCurrentWeather",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "城市,例如:深圳,城市的值必须是中文",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "extensions",
            "in": "query",
            "description": "extensions可选值:base/all base:返回实况天气 all:返回预报天气",
            "required": true,
            "enum": ['base', 'all'],
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}

nodejs后台代码:

let baseApiKeyOnServer = 'Basic xxx'



const chatGetWeather = async (req, res) => {
  let { city = '北京', extensions = 'all' } = req.query
  let headers = req.headers
  let authorization = req.headers?.authorization
  console.log('天气', city, headers, req.query)

  if (authorization === baseApiKeyOnServer) {
    let resultCity = cityList.find((item) => item.name.includes(city))
    let cityCode = '110000'
    if (resultCity && resultCity.adcode) {
      cityCode = resultCity.adcode
    }
    console.log('高德天气查询', city, cityCode, extensions)

    //	extensions可选值:base/all base:返回实况天气 all:返回预报天气
    let result = await axios.get(
      `https://restapi.amap.com/v3/weather/weatherInfo?key=${weatherApiKey}&city=${cityCode}&extensions=${extensions}`
    )
    const searchResult = result.data

    let functionResponse
    if (searchResult && Array.isArray(searchResult.lives)) {
      functionResponse = `${JSON.stringify(searchResult.lives)}`
    } else if (searchResult && Array.isArray(searchResult.forecasts)) {
      functionResponse = `${JSON.stringify(searchResult.forecasts)}`
    } else {
      functionResponse = `${JSON.stringify(searchResult)}`
    }
    res.send({
      code: 200,
      data: {
        city,
        headers,
        result: functionResponse,
      },
      message: '成功',
    })
  } else {
    res.send({
      code: 400,
      message: '失败:参数headers.authorization',
    })
  }
}

测试:

 

参考链接:

https://chat.xutongbao.top

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐同保

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值