国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python ChatGPT API 新增的函數(shù)調(diào)用功能演示

這篇具有很好參考價(jià)值的文章主要介紹了Python ChatGPT API 新增的函數(shù)調(diào)用功能演示。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?? CSDN 葉庭云https://yetingyun.blog.csdn.net/


一、前言

OpenAI 重磅更新,API 添加函數(shù)調(diào)用能力,能處理更長(zhǎng)上下文,價(jià)格又有所降低 …

Python ChatGPT API 新增的函數(shù)調(diào)用功能演示

知乎討論:https://www.zhihu.com/question/606520916

這次更新的主角,在我看來(lái)毫無(wú)疑問(wèn)是函數(shù)調(diào)用功能,過(guò)去要么依靠 Prompt Engineering 提供的信息,要么就需要使用 LangChain 這樣的框架實(shí)現(xiàn)?,F(xiàn)在官方提供了更穩(wěn)定的方式與本地代碼或者第三方 API,可以無(wú)縫將 GPT 的語(yǔ)言理解和解析能力整合入本地工作流中。

稍微再總結(jié)一下此次更新的主要內(nèi)容:

  • 在 Chat Completions API 中提供函數(shù)調(diào)用能力
  • 更新更易控制的 gpt-4 和 gpt-3.5-turbo 版本
  • 新的 16k 上下文版本 gpt-3.5-turbo (與標(biāo)準(zhǔn)的 4k 版本相比很香)
  • embeddings 嵌入模型價(jià)格降低了75%
  • gpt-3.5-turbo 輸入 token 價(jià)格降低 25%
  • 宣布 gpt-3.5-turbo-0301 和 gpt-4-0314 型號(hào)的棄用計(jì)劃
  • 以上所有的模型都會(huì)遵循 0301 介紹的數(shù)據(jù)隱私規(guī)則:所有使用 API 的數(shù)據(jù)不會(huì)用于訓(xùn)練。

二、主要內(nèi)容

新增的函數(shù)調(diào)用功能的解釋:我理解的是,ChatGPT 的 API 現(xiàn)在可以根據(jù)你給出的函數(shù)描述,理解你的函數(shù)輸入輸出格式要求,把用戶的自然語(yǔ)言轉(zhuǎn)化成本地 / {/} /第三方函數(shù)的輸入?yún)?shù)。然后開(kāi)發(fā)者需要拿著這個(gè)參數(shù)自己執(zhí)行一下,得到一個(gè)結(jié)果再還給 ChatGPT,ChatGPT 最后會(huì)根據(jù)這個(gè)結(jié)果回答用戶的問(wèn)題,輸出最終內(nèi)容。

函數(shù)調(diào)用的官方示例:

Python ChatGPT API 新增的函數(shù)調(diào)用功能演示

自從 ChatGPT 插件的 alpha 版本發(fā)布以來(lái),我們已經(jīng)學(xué)到了很多關(guān)于如何安全地使工具和語(yǔ)言模型協(xié)同工作的知識(shí)。然而,仍有一些未解決的研究問(wèn)題。例如,一個(gè)概念驗(yàn)證漏洞說(shuō)明了不受信任的數(shù)據(jù)可以指示模型執(zhí)行意外操作。我們正在努力減輕這些和其他風(fēng)險(xiǎn)。開(kāi)發(fā)人員可以通過(guò)只消費(fèi)來(lái)自可信工具的信息并在執(zhí)行具有現(xiàn)實(shí)影響(例如發(fā)送電子郵件、在線發(fā)布或購(gòu)買)的操作之前包含用戶確認(rèn)步驟來(lái)保護(hù)其應(yīng)用程序。

下面我們自己寫(xiě)個(gè)實(shí)例來(lái)實(shí)踐和感受一下,以查詢國(guó)內(nèi)城市今天的天氣情況為例:

API 使用的是國(guó)家氣象局的接口,完全免費(fèi)的:http://t.weather.sojson.com/api/weather/city/101010100

城市到代碼的轉(zhuǎn)化是參考這篇博客:https://blog.csdn.net/qq_42855293/article/details/103864266。把他分享的內(nèi)容粘貼到 Excel 并保存,方便后續(xù)使用。

完整代碼如下:

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 {"時(shí)間": date_info, "溫度": wendu, "最高溫度": high, "最低溫度": low,
            "濕度": shidu, "天氣類型": tianqi_type, "空氣質(zhì)量": air_quality,
            "注意": zhuyi, "PM2.5": pm25, "PM10": pm10, "AQI": aqi}


openai.api_key = "請(qǐng)注意:替換為你的 API KEY"      # 配置自己的 API Key
openai.api_base = 'https://你的反向代理域名-如果有的話/v1'   # 請(qǐng)注意后面 /v1 不可省略

# 如果沒(méi)有自己的反向代理   你還需要設(shè)置你掛的魔法
# 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["區(qū)域"], df["區(qū)域編號(hào)"])}
             
prompt = "今天北京的天氣怎么樣?"
print("Prompt:")
print(prompt)

my_function = [{"name": "get_current_weather",
                "description": "獲取給定位置的當(dāng)前天氣",
                "parameters": {"type": "object",
                               "properties": {"location": {"type": "string", "description": "城市,例如北京"},
                                              "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                                            },
                               "required": ["location"]
                               }
                }
               ]
# LLMs as Controller
# 據(jù)你給出的函數(shù)描述,理解你的函數(shù)輸入輸出格式要求,把用戶的自然語(yǔ)言轉(zhuǎn)化成本地${/}$第三方函數(shù)的輸入?yún)?shù)和確定調(diào)用那個(gè)函數(shù)。然后開(kāi)發(fā)者需要拿著這個(gè)參數(shù)自己執(zhí)行一下,得到一個(gè)結(jié)果再還給 ChatGPT,ChatGPT 最后會(huì)根據(jù)這個(gè)結(jié)果回答用戶的問(wèn)題,輸出最終內(nèi)容。
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)

這段代碼主要實(shí)現(xiàn)了以下功能:

  • 引入了需要用到的庫(kù),包括 ast、json、requests、pandas、openai,以及 pprint 模塊的 pprint 函數(shù)。
  • 定義了 get_current_weather 函數(shù),該函數(shù)接受一個(gè)參數(shù) city,并返回一個(gè)字典對(duì)象,包含當(dāng)?shù)氐奶鞖庑畔ⅰ?/li>
  • 配置了 OpenAI 的 API Key 和 API Base。
  • 從 Excel 文件中讀取了城市數(shù)據(jù),并將城市和編號(hào)映射為一個(gè)字典 city2code。
  • 定義了一個(gè)字符串變量 prompt,表示用戶的對(duì)話詢問(wèn)。
  • 定義了一個(gè)名為 my_function 的列表,其中包含一個(gè)名為 get_current_weather 的字典對(duì)象,描述了返回值的數(shù)據(jù)結(jié)構(gòu)和輸入?yún)?shù)的類型等信息。
  • 調(diào)用 OpenAI 的 ChatCompletion.create 函數(shù),傳入一些參數(shù),返回一個(gè) OpenAI 對(duì)話的響應(yīng)結(jié)果 resp1,其中包含對(duì)話的輸出及調(diào)用的函數(shù)名稱和參數(shù)。
  • 解析 resp1 響應(yīng)結(jié)果中的參數(shù)信息,判斷調(diào)用的函數(shù)名稱是否為 get_current_weather,如果是則調(diào)用該函數(shù)獲取當(dāng)?shù)靥鞖庑畔ⅰ?/li>
  • 再次調(diào)用 OpenAI 的 ChatCompletion.create 函數(shù),不同的是帶入了調(diào)用的函數(shù)名稱和返回的天氣信息,返回 OpenAI 對(duì)話的響應(yīng)結(jié)果 resp2。
  • 打印出 resp2 響應(yīng)結(jié)果中的內(nèi)容,即機(jī)器人回復(fù)的信息。

結(jié)果如下示意:

Python ChatGPT API 新增的函數(shù)調(diào)用功能演示


三、總結(jié)

所謂的「函數(shù)調(diào)用」功能,并不是說(shuō) GPT API 會(huì)幫你執(zhí)行某些第三方的功能或接口,而是說(shuō),通過(guò)提交給 GPT 函數(shù)的名稱、描述和輸入?yún)?shù),它能夠在語(yǔ)義中理解應(yīng)該調(diào)用哪一個(gè)函數(shù)去滿足用戶功能,如果此時(shí)的語(yǔ)境中缺少函數(shù)必需的參數(shù),GPT 會(huì)進(jìn)一步與用戶對(duì)話要求補(bǔ)全信息;當(dāng)滿足函數(shù)調(diào)用條件時(shí),GPT 會(huì)返回一個(gè)結(jié)果,告訴開(kāi)發(fā)者此時(shí)需要調(diào)用的函數(shù)名和相應(yīng)的參數(shù);然后開(kāi)發(fā)者自行執(zhí)行本地/第三方函數(shù),并將結(jié)果再次輸入給 GPT API,GPT API 則會(huì)根據(jù)返回值告訴用戶結(jié)果。

我們必須先理解了這個(gè)過(guò)程,至于具體的代碼很容易實(shí)現(xiàn)。從上面這段話抽取一下工作流程

  • GPT 根據(jù)開(kāi)發(fā)者給出的函數(shù)描述,理解函數(shù)功能和輸入?yún)?shù)要求;
  • GPT 理解用戶的自然語(yǔ)言,決定此時(shí)是否需要調(diào)用某函數(shù),并從對(duì)話中抽取信息轉(zhuǎn)化成本地/第三方函數(shù)的輸入?yún)?shù);
  • 如果此時(shí)缺少必要信息,GPT 會(huì)繼續(xù)與用戶對(duì)話詢問(wèn)補(bǔ)全;
  • 開(kāi)發(fā)者拿到函數(shù)名和參數(shù)后,自己本地執(zhí)行,得到一個(gè)結(jié)果再還給GPT;
  • GPT 最后會(huì)根據(jù)這個(gè)結(jié)果回答用戶的問(wèn)題。

示意圖如下所示(圖片來(lái)自知乎@段小草):
Python ChatGPT API 新增的函數(shù)調(diào)用功能演示

GPT API 是介于開(kāi)發(fā)者和用戶直接的「翻譯官」,干兩件事:

  • 把「用戶」的自然語(yǔ)言 → 合適的函數(shù)功能和參數(shù) → 返回給「開(kāi)發(fā)者」
  • 把「開(kāi)發(fā)者」接口返回的數(shù)據(jù)(一般是 JSON)→ 自然語(yǔ)言 → 返回給「用戶」

Python ChatGPT API 新增的函數(shù)調(diào)用功能演示


??? 參考鏈接:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-494820.html

  • OpenAI 重磅更新 變得更強(qiáng)啦 | 包括更多可控的 API 模型、函數(shù)調(diào)用能力、更長(zhǎng)的上下文和更低的價(jià)格
  • OpenAI API 0613 更新:GPT-3.5-turbo-16k 模型、函數(shù)調(diào)用能力、更低的調(diào)用價(jià)格
  • 知乎 | OpenAI 重磅更新,API 添加新函數(shù)調(diào)用能力,能處理更長(zhǎng)上下文,價(jià)格又降了 75%,有哪些影響?
  • Python 實(shí)現(xiàn)天氣查詢功能(外加 Excel 技巧)
  • 免費(fèi)的天氣 API 相關(guān)編碼(中國(guó)城市代碼檢索)
  • 沈向洋:致 AI 時(shí)代的我們 —— 請(qǐng)不要忽視寫(xiě)作的魅力

到了這里,關(guān)于Python ChatGPT API 新增的函數(shù)調(diào)用功能演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python調(diào)用chatGPT的API

    python調(diào)用chatGPT的API

    最近一直在研究GPT,LLM,把其他東西都荒廢了,隨便更新一個(gè),湊個(gè)字?jǐn)?shù)。 1.python標(biāo)準(zhǔn)接口使用 python接入chatGPT,用flask封裝成API接口,這樣你就可以自己把他接入到微信,小程序,公眾號(hào)或者各種地方了。 先上代碼: 里面有幾個(gè)點(diǎn)需要注意。 1.是APIkey的獲取。 首先登陸Op

    2024年02月08日
    瀏覽(19)
  • 使用python調(diào)用ChatGPT API 簡(jiǎn)單示例

    使用python調(diào)用ChatGPT API 簡(jiǎn)單示例

    如果你已經(jīng)獲得了 OpenAI的API密鑰 ,并且想要使用Python發(fā)起ChatGPT對(duì)話,你可以使用OpenAI的Python SDK來(lái)實(shí)現(xiàn)。下面是一個(gè)簡(jiǎn)單的示例代碼: 首先,你需要確保已安裝OpenAI的Python SDK。你可以使用pip來(lái)安裝: 然后,你可以使用以下代碼來(lái)發(fā)起對(duì)話: 確保將 \\\'YOUR_API_KEY\\\' 替換為你的實(shí)

    2024年02月12日
    瀏覽(35)
  • 若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    前言 看了幾篇文章感覺(jué)都不太滿意,索性自己來(lái)寫(xiě)一篇。 一、后端 后端新建業(yè)務(wù)模塊流程大致如下: 看一下目錄結(jié)構(gòu), business 就是我們自己的業(yè)務(wù)模塊: 1.0 新建業(yè)務(wù)模塊 就是在 ruoyi-module模塊 下新建一個(gè) springboot 工程模塊,大家既然都學(xué)到cloud了,我相信這一步也不用多

    2024年02月17日
    瀏覽(19)
  • 一文學(xué)會(huì)python調(diào)用ChatGPT3.5的API

    一文學(xué)會(huì)python調(diào)用ChatGPT3.5的API

    ??作者簡(jiǎn)介:熱編程的貝貝,致力于C/C++、Java、Python等多編程語(yǔ)言,熱愛(ài)跑步健身,喜愛(ài)音樂(lè)的一位博主。 ??本文收錄于貝貝的日常匯報(bào)系列,大家有興趣的可以看一看 ??相關(guān)專欄深度學(xué)習(xí)、目標(biāo)檢測(cè)系列等,大家有興趣的可以看一看 ??C++零基礎(chǔ)入門系列,Web入門篇系列

    2024年01月17日
    瀏覽(22)
  • 【課件】Python調(diào)用OpenAI API實(shí)現(xiàn)ChatGPT多輪對(duì)話

    【課件】Python調(diào)用OpenAI API實(shí)現(xiàn)ChatGPT多輪對(duì)話

    如何實(shí)現(xiàn)多輪對(duì)話? gpt-3.5-turbo 模型調(diào)用方法 openai.ChatCompletion.create 里傳入的 message 是一個(gè)列表,列表里每個(gè)元素是字典,包含了角色和內(nèi)容,我們只需將每輪對(duì)話都存儲(chǔ)起來(lái),然后每次提問(wèn)都帶上之前的問(wèn)題和回答即可。 代碼解析: ChatGPT 類,包含三個(gè)函數(shù): __init__ 初始

    2024年02月03日
    瀏覽(25)
  • chatgpt賦能python:Python調(diào)用主函數(shù)語(yǔ)句

    Python是一種高級(jí)編程語(yǔ)言,語(yǔ)法簡(jiǎn)單,易于學(xué)習(xí)和使用。在Python程序中,主函數(shù)是程序的入口,是程序的核心。本文將介紹Python調(diào)用主函數(shù)語(yǔ)句的相關(guān)知識(shí)。 在Python程序中,主函數(shù)也稱為程序入口函數(shù),是整個(gè)程序的核心。主函數(shù)通常包含程序的主要邏輯和功能,用于執(zhí)行程

    2024年02月11日
    瀏覽(27)
  • 自動(dòng)化API測(cè)試工具ReadyAPI新增業(yè)務(wù)歷史記錄功能

    解鎖無(wú)縫軟件開(kāi)發(fā):探索ReadyAPI虛擬化 的力量 在快速發(fā)展的軟件開(kāi)發(fā)環(huán)境中,創(chuàng)建穩(wěn)健且反應(yīng)靈敏的應(yīng)用程序已然成為重中之重。 讓我們一起來(lái)看看ReadyAPI虛擬化。這個(gè)解決方案讓開(kāi)發(fā)人員能夠在受控的環(huán)境中模擬和測(cè)試其應(yīng)用程序的性能,從而確保無(wú)縫的用戶體驗(yàn)。 隨著

    2024年02月06日
    瀏覽(20)
  • React Dva項(xiàng)目創(chuàng)建Model,并演示數(shù)據(jù)管理與函數(shù)調(diào)用

    React Dva項(xiàng)目創(chuàng)建Model,并演示數(shù)據(jù)管理與函數(shù)調(diào)用

    本文的話 我們講一下定義Model 也就是Dva中redux的部分 我們打開(kāi)一個(gè)剛創(chuàng)建的Dva項(xiàng)目 看到 src下的models 下 就是Model部分 這里 他給我們了一個(gè)案例 如果用 react-redux 管理 模塊多了之后會(huì)看著比較亂 或 很麻煩 但是 大家會(huì)發(fā)現(xiàn) 在Model中 他將這些都放在一起了 只需要?jiǎng)?chuàng)建一個(gè)這樣

    2024年02月15日
    瀏覽(15)
  • LLMs:OpenAI官方重磅更新——新增GPT-3.5Turbo調(diào)和API更新功能

    LLMs:OpenAI官方重磅更新——新增GPT-3.5Turbo調(diào)和API更新功能

    LLMs:OpenAI官方重磅更新——新增GPT-3.5Turbo調(diào)和API更新功能 導(dǎo)讀 :2023年8月22日,OpenAI官方發(fā)布,開(kāi)發(fā)者現(xiàn)在可以 使用自己的數(shù)據(jù) 來(lái) 定制 適用于其用例的 GPT-3.5 Turbo模型 。GPT-3.5 Turbo的微調(diào)現(xiàn)在已經(jīng)可用,GPT-4的微調(diào)將在今年秋季推出。此更新使開(kāi)發(fā)者 能夠定制模型 ,以便為

    2024年02月10日
    瀏覽(28)
  • LLM大語(yǔ)言模型(三):使用ChatGLM3-6B的函數(shù)調(diào)用功能前先學(xué)會(huì)Python的裝飾器

    LLM大語(yǔ)言模型(三):使用ChatGLM3-6B的函數(shù)調(diào)用功能前先學(xué)會(huì)Python的裝飾器

    目錄 ChatGLM3-6B的函數(shù)調(diào)用模式示例 本地啟動(dòng)ChatGLM3-6B工具模式 如何在ChatGLM3-6B里新增一個(gè)自定義函數(shù)呢? get_weather基于Python的裝飾器實(shí)現(xiàn) 函數(shù)注解@register_tool 現(xiàn)在我們來(lái)自定義一個(gè)kuakuawo()函數(shù) ChatGLM3-6B目前有三種使用模式: 對(duì)話模式 工具模式(也就是本文要介紹的函數(shù)調(diào)用

    2024年01月25日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包