天天看點

OpenAI函數調用執行個體

作者:AITalker324
OpenAI函數調用執行個體

介紹

大型語言模型 (LLM) 與一般的會話 UI 一樣,可以有效地以會話自然語言的形式接收高度非結構化的資料。

這些非結構化資料随後被結構化、處理并随後以自然語言輸出的形式再次非結構化。

OpenAI函數調用執行個體

OpenAI 函數調用以 API 的形式為機器消費建構輸出,與以非結構化自然語言形式的人類消費相對

函數調用

通過 API 調用,您可以向gpt-3.5-turbo-0613和提供函數gpt-4–0613,并讓模型智能地生成一個包含參數的 JSON 對象,然後您可以使用這些參數在您的代碼中調用該函數。

Chat Completion API 不直接調用函數;相反,它會生成一個 JSON 文檔,您可以在代碼中使用該文檔。

在此處閱讀有關 OpenAI 函數調用的更多資訊。

使用 OpenAI 函數調用,重點是 JSON 輸出。

OpenAI函數調用執行個體

下面是函數調用的實際例子:

建立通過調用外部 API 回答問題的聊天機器人:

在此示例中,編譯了一封電子郵件,其中定義了幾個字段,需要從自然語言輸入中填充這些字段。

如果 JSON 文檔定義不正确,OpenAI 模型将引發錯誤。是以,在定義需要填充的 JSON 結構方面存在一定程度的剛性。

pip 安裝 openai導入

o ​s

導入o​​penai

導入請求

導入json

openai.api_key = "xxxxxxxxxxxxxxxxxx"

url = "https://api.openai.com/v1/chat/completions"

payload = json.dumps({

"model" : "gpt -4-0613" ,

"messages" : [

{

"role" : "user" ,

"content" : "給 HumanFirst AI 的 Cobus 發一封電子郵件,請他提供銷售預測電子表格。安排明天中午 12 點發送郵件。 "

}

],

"函數":[

{

“名稱”: "send_email" ,

"description" : "發送電子郵件的模闆。" ,

“參數”:{

“類型”:“對象”,

“屬性”:{

“to_address”:{

“類型”:“字元串”,

“描述”:“電子郵件位址”

},

“正文”:{

“ type" : "string" ,

"description" : "郵件正文"

},

"

:“必須發送電子郵件的日期。”

},

"time" : {

"type" : "string" ,

"description" : "郵件必須發送的時間。"

}

} }

}

]

}

)

headers = {

'Content-Type' : 'application/json' ,

'Authorization' : 'Basic xxxxxxxxxxxx'

}

response = requests.request( "POST" , url, headers=headers, data=payload )

列印(response.text)

模型的響應:

{

“id” : “chatcmpl-7RjMh7I0rVmCJkTCk4wvHDSNg8uQQ” ,

“對象” : “chat.completion” ,

“建立” : 1686843595 ,

“模型” : “gpt-4-0613” ,

“選擇” : [

{

“索引” : 0 ,

“消息” : {

“角色” : “助理” ,

“内容” : 空,

“function_call” : {

“名稱” : “send_email” ,

“參數” : "{\n \"to_address\": \"[email protected]\",\n \"body\": \"你好 Cobus,\\n\\n你能提供銷售預測電子表格嗎?\\n\\n最好的問候\",\n \"date\": \"tomorrow\",\n \"time\": \"12 noon\"\n}" } }

,

" finish_reason

" : " function_call"

}

] ,

"usage" : {

"prompt_tokens" : 118 ,

"completion_tokens" : 65 ,

"total_tokens" : 183

}

}

綜上所述

但是,有一些注意事項:

  1. 以程式設計方式,聊天機器人/會話 UI 必須知道 LLM 的輸出必須是 JSON 格式。是以,必須有某種分類或意圖識别來檢測輸出類型應該是 JSON。
  2. 必須存在并定義一個預定義模闆,以輸入完成 LLM。如示例中所示,JSON 模闆指導 LLM 如何填充值。
  3. 更重要的是,如示例中所示,必須明确定義應填充的參數。失敗會導緻以下錯誤:“We could not parse the JSON body of your request. (HINT: This likely means you aren’t using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)”

繼續閱讀