Python ChatGPT API 新增的函数调用功能演示_chatgpt 函数调用

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

文章目录

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/


一、前言

OpenAI 重磅更新,API 添加函数调用能力,能处理更长上下文,价格又有所降低 …

在这里插入图片描述

知乎讨论:https://www.zhihu.com/question/606520916

这次更新的主角,在我看来毫无疑问是函数调用功能,过去要么依靠 Prompt Engineering 提供的信息,要么就需要使用 LangChain 这样的框架实现。现在官方提供了更稳定的方式与本地代码或者第三方 API,可以无缝将 GPT 的语言理解和解析能力整合入本地工作流中。

稍微再总结一下此次更新的主要内容:

  • 在 Chat Completions API 中提供函数调用能力
  • 更新更易控制的 gpt-4 和 gpt-3.5-turbo 版本
  • 新的 16k 上下文版本 gpt-3.5-turbo (与标准的 4k 版本相比很香)
  • embeddings 嵌入模型价格降低了75%
  • gpt-3.5-turbo 输入 token 价格降低 25%
  • 宣布 gpt-3.5-turbo-0301 和 gpt-4-0314 型号的弃用计划
  • 以上所有的模型都会遵循 0301 介绍的数据隐私规则:所有使用 API 的数据不会用于训练。

二、主要内容

新增的函数调用功能的解释:我理解的是,ChatGPT 的 API 现在可以根据你给出的函数描述,理解你的函数输入输出格式要求,把用户的自然语言转化成本地

/

{/}

/第三方函数的输入参数。然后开发者需要拿着这个参数自己执行一下,得到一个结果再还给 ChatGPT,ChatGPT 最后会根据这个结果回答用户的问题,输出最终内容。

函数调用的官方示例:

在这里插入图片描述

自从 ChatGPT 插件的 alpha 版本发布以来,我们已经学到了很多关于如何安全地使工具和语言模型协同工作的知识。然而,仍有一些未解决的研究问题。例如,一个概念验证漏洞说明了不受信任的数据可以指示模型执行意外操作。我们正在努力减轻这些和其他风险。开发人员可以通过只消费来自可信工具的信息并在执行具有现实影响(例如发送电子邮件、在线发布或购买)的操作之前包含用户确认步骤来保护其应用程序。

下面我们自己写个实例来实践和感受一下,以查询国内城市今天的天气情况为例:

API 使用的是国家气象局的接口,完全免费的:http://t.weather.sojson.com/api/weather/city/101010100

城市到代码的转化是参考这篇博客:https://blog.csdn.net/qq_42855293/article/details/103864266。把他分享的内容粘贴到 Excel 并保存,方便后续使用。

完整代码如下:

import ast
import json
import requests
import pandas as pd
import openai
from pprint import pprint


def get\_current\_weather(city):
    code = city2code[city]
    resp = requests.get(f"http://t.weather.sojson.com/api/weather/city/{code}")
    data = resp.json()["data"]
    
    date_info = data["forecast"][0]["ymd"] + " - " + data["forecast"][0]["week"]
    wendu = data["wendu"]
    shidu = data["shidu"]
    pm25 = data["pm25"]
    pm10 = data["pm10"]
    tianqi_type = data["forecast"][0]["type"]
    air_quality = data["quality"]
    zhuyi = data["forecast"][0]["notice"]
    low = data["forecast"][0]["low"]
    high = data["forecast"][0]["high"]
    aqi = data["forecast"][0]["aqi"]
    
    return {"时间": date_info, "温度": wendu, "最高温度": high, "最低温度": low,
            "湿度": shidu, "天气类型": tianqi_type, "空气质量": air_quality,
            "注意": zhuyi, "PM2.5": pm25, "PM10": pm10, "AQI": aqi}


openai.api_key = "请注意:替换为你的 API KEY"      # 配置自己的 API Key
openai.api_base = 'https://你的反向代理域名-如果有的话/v1'   # 请注意后面 /v1 不可省略

# 如果没有自己的反向代理 你还需要设置你挂的魔法
# proxies = {'http': "http://127.0.0.1:7890", 'https': "https://127.0.0.1:7890"}
# openai.proxy = proxies

df = pd.read_excel("./citycode/city.xlsx")
city2code = {k: v for k, v in zip(df["区域"], df["区域编号"])}
             
prompt = "今天北京的天气怎么样?"
print("Prompt:")
print(prompt)

my_function = [{"name": "get\_current\_weather",
                "description": "获取给定位置的当前天气",
                "parameters": {"type": "object",
                               "properties": {"location": {"type": "string", "description": "城市,例如北京"},
                                              "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                                            },
                               "required": ["location"]
                               }
                }
               ]
# LLMs as Controller
# 据你给出的函数描述,理解你的函数输入输出格式要求,把用户的自然语言转化成本地${/}$第三方函数的输入参数和确定调用那个函数。然后开发者需要拿着这个参数自己执行一下,得到一个结果再还给 ChatGPT,ChatGPT 最后会根据这个结果回答用户的问题,输出最终内容。
resp1 = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",
                                     messages=[{"role": "user", "content": prompt}],
                                     temperature=0.0,
                                     max_tokens=3072,
                                     functions=my_function,
                                     )
params = ast.literal_eval(resp1.choices[0].message.function_call["arguments"])
call_fuction = resp1.choices[0].message.function_call["name"]
if call_fuction == "get\_current\_weather":
    weather_data = get_current_weather(params["location"])

resp2 = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",
                                     messages=[{"role": "user", "content": prompt},
                                               {"role": "assistant", "content": "null", "function\_call": resp1.choices[0].message.function_call},
                                               {"role": "function", "name": "call\_fuction", "content": str(weather_data)}
                                               ],
                                        temperature=0.0,
                                        max_tokens=3072,
                                        functions=my_function,
                                     )
print("-" \* 99)
print(resp2.choices[0].message.content)

这段代码主要实现了以下功能:

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值