文心一言大模型-function Calling的应用
"大模型的函數(shù)調(diào)用"(Large Model Function Calling)是一個(gè)涉及到在大型人工智能模型,如 GPT-4 或類似的高級(jí)深度學(xué)習(xí)模型中使用函數(shù)調(diào)用的概念。在這種情況下,函數(shù)調(diào)用可以有兩種含義:
-
內(nèi)部函數(shù)調(diào)用: 這指的是大型模型在其內(nèi)部運(yùn)行時(shí)執(zhí)行的函數(shù)調(diào)用。這些函數(shù)調(diào)用是模型的一部分,用于處理輸入,執(zhí)行復(fù)雜的計(jì)算,生成預(yù)測(cè)等。這些內(nèi)部函數(shù)是模型架構(gòu)的一部分,對(duì)于最終用戶通常是不可見(jiàn)的。
-
外部API調(diào)用: 另一種情況是大型模型如 GPT-4 被設(shè)計(jì)為能夠與外部系統(tǒng)交互,比如通過(guò) API 調(diào)用執(zhí)行某些任務(wù)。例如,一個(gè)大型模型可能被編程為在需要時(shí)調(diào)用外部數(shù)據(jù)庫(kù)查詢函數(shù)、調(diào)用圖像處理服務(wù)或執(zhí)行其他外部功能。
在第二種情況下,大型模型的函數(shù)調(diào)用通常是指模型作為其生成過(guò)程的一部分調(diào)用外部服務(wù)或功能的能力。這種能力極大地?cái)U(kuò)展了模型的用途,使其能夠在生成文本、做出決策或執(zhí)行任務(wù)時(shí),集成更廣泛的信息和功能。
接下來(lái)本文將做個(gè)function calling 外部API調(diào)用的demo實(shí)例,采用的大模型是文心一言
- 準(zhǔn)備工作
安裝qianfan
pip install qianfan
前往百度智能云官網(wǎng)https://console.bce.baidu.com/qianfan/chargemanage/list申請(qǐng)大模型app key和secret key
- 需求概述
實(shí)現(xiàn)一個(gè)旅游景點(diǎn)推薦以及自動(dòng)下單的功能
- 用戶給大模型輸入:想去北京*附近的10公里內(nèi)的旅游景點(diǎn)
- 大模型理解輸入,獲取關(guān)鍵詞position:*,expect_distance:10000,返回需要調(diào)用的api function name:
- 用戶輸入:就去天壇公園吧
- 大模型理解輸入,返回需要調(diào)用的api function name
代碼實(shí)現(xiàn)
import qianfan
import re
with open('prompt.txt',encoding='utf-8') as f:
prompt = f.read()
def function_calling(prompt):
print("user-prompt:"+prompt)
model = "ERNIE-Bot"
print('=' * 30,'大模型-',model,' 輸出 ', '='*30,"\n")
response = chat_comp.do(
model=model,
messages=[{
"role": "user",
"content": prompt
}],
temperature=0.000000001,
functions=[
{
"name": "attractionRecommend",
"description": "景點(diǎn)推薦",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "地址信息,包括省市、街道、門牌號(hào)等"
},
"expect_distance": {
"type": "int",
"description": "距離"
}
},
"required": ["location"]
},
"responses": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "商品id"
},
"price": {
"type": "int",
"description": "商品價(jià)格"
},
"food": {
"type": "string",
"description": "商品名稱"
},
},
},
},
{
"name": "attractionReservation",
"description": "景點(diǎn)預(yù)約",
"parameters": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "景點(diǎn)id"
},
"food": {
"type": "string",
"description": "景點(diǎn)名稱"
},
},
"required": ["id"]
},
"responses": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "是否預(yù)約成功"
},
}
},
}
]
)
print(response)
return response
chat_comp = qianfan.ChatCompletion(ak="xxx", sk="xxx")
prompt_list = re.split(r"----", prompt)
for prompt in prompt_list:
response = function_calling(prompt)
#拿到response后,解析json,調(diào)用自定義的數(shù)據(jù)表api和下單api
print("\n")
print('=' * 30,"大模型響應(yīng)結(jié)束","="*30)
總結(jié)
以上是生活随笔為你收集整理的文心一言大模型-function Calling的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【JVM】一文掌握JVM垃圾回收机制
- 下一篇: 解密Prompt系列22. LLM Ag