Function-Calling應(yīng)用流
本模板介紹如何使用LangStudio構(gòu)建Function-Calling應(yīng)用流。在該應(yīng)用流中,開發(fā)者可以提供多個函數(shù),將問題以及函數(shù)描述傳遞給LLM,讓LLM返回合適的函數(shù)名和參數(shù),然后通過Python節(jié)點執(zhí)行對應(yīng)的函數(shù),返回結(jié)果。根據(jù)需要,開發(fā)者可以在本模板基礎(chǔ)上進行二次開發(fā)。
LLM 工具使用介紹
tools
是OpenAI API中的一個可選參數(shù),用于使模型生成符合指定規(guī)范的工具參數(shù)。
模型并不會實際執(zhí)行任何工具調(diào)用,開發(fā)者需要根據(jù)模型輸出自行執(zhí)行工具調(diào)用。
通過設(shè)置tools
參數(shù)傳遞可用工具列表,并將tool_choice
參數(shù)設(shè)置為auto
,模型會自動選擇使用某個工具。tools
參數(shù)格式可參考下面的代碼示例。
如果使用了tools
,輸出響應(yīng)將包含"finish_reason": "tool_calls"
,并附帶一個tool_calls
對象,該對象包含需要調(diào)用的工具名稱和工具參數(shù)。根據(jù)工具名稱,開發(fā)者可以執(zhí)行相應(yīng)的操作。
import openai
# 定義函數(shù)
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
}
]
# 使用函數(shù)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=[{"role": "user", "content": "What's the weather like in Boston?"}],
tools=tools,
tool_choice="auto" # 讓模型自己決定是否使用函數(shù)
)
# 檢查是否有函數(shù)調(diào)用
if response.choices[0].message.tool_calls:
# 處理函數(shù)調(diào)用
function_call = response.choices[0].message.tool_calls[0]
# ... 執(zhí)行相應(yīng)的操作 ...
詳細信息可參考OpenAI API文檔。
快速上手
創(chuàng)建連接
構(gòu)建應(yīng)用流前,您需要準備如下工作:
開通大模型服務(wù)平臺百煉。
訪問阿里云百煉大模型服務(wù)平臺 開通服務(wù)。
在控制臺創(chuàng)建API Key,用于調(diào)用Qwen-Max、通義萬相、語音合成CosyVoice大模型服務(wù)。
在連接管理中創(chuàng)建百煉大模型服務(wù)連接,并將api_key填入對應(yīng)字段。具體操作,請參見連接管理。
申請SerpApi Key。
訪問SerpApi 官網(wǎng)注冊賬號并獲取API Key,用于調(diào)用搜索引擎。
在連接管理中創(chuàng)建自定義連接。具體操作,請參見連接管理。
構(gòu)建應(yīng)用流
參考應(yīng)用流開發(fā),構(gòu)建如下應(yīng)用流節(jié)點:
gather_tool
python節(jié)點,用于生成全部tools描述。tools描述要求符合OpenAI API規(guī)范,詳情可參考OpenAI API文檔。模板中該節(jié)點合并輸出預(yù)制tools和自定義
tools
的描述,其中自定義tools使用user_define_tool.json
文件進行描述。function_call_router
LLM節(jié)點,以Function calling方式調(diào)用LLM,需要配置如下參數(shù):
connection
:選擇前面創(chuàng)建的百煉大模型服務(wù)連接。model
:選擇支持Function calling的模型,例如qwen-max,詳細模型列表見模型列表。
search
search_connection
:選擇前面配置的SerpApi自定義連接。num
:搜索引擎返回結(jié)果數(shù)量。location
:搜索引擎需要的位置信息。engine
輸入搜索引擎,該模板僅支持Bing和Baidu,其他搜索引擎請自行修改模板支持。
說明可自定義該節(jié)點,使用其他方式調(diào)用搜索引擎。
answer_with_search
LLM節(jié)點,接收search節(jié)點搜索的結(jié)果,并將搜索結(jié)果和問題傳給LLM,生成回答,需要配置如下參數(shù):
connection
:選擇前面創(chuàng)建的百煉大模型服務(wù)連接。model
:模型名,例如qwen-max,詳細模型列表見模型列表。
image_synthesis
python節(jié)點,用于調(diào)用百煉大模型服務(wù),生成圖像,需要配置如下參數(shù):
dashscope_connection
:選擇前面配置的百煉大模型服務(wù)連接,本模板會默認調(diào)用通義萬相。
voice_synthesis
python節(jié)點,用于調(diào)用百煉大模型服務(wù),生成語音,需要配置如下參數(shù):
dashscope_connection
:選擇前面配置的百煉大模型服務(wù)連接,本模板會調(diào)用語音合成CosyVoice。
direct_generate
python節(jié)點,如果function_call_router判斷不做function調(diào)用,直接生成回答,則會通過該節(jié)點透傳回答。
gather_output
python節(jié)點,用于收集并合并所有節(jié)點的輸出。
測試應(yīng)用流
首先,單擊右上角啟動運行時按鈕,配置運行資源以及VPC。這里VPC需要和數(shù)據(jù)庫所在的VPC保持一致,或者已經(jīng)打通。
等待運行時啟動完成,單擊右上角對話按鈕,開始對話。
部署應(yīng)用流
測試完成,單擊右上角部署按鈕,填寫服務(wù)名/部署資源組、VPC信息,將工作流部署成EAS服務(wù)。這里的VPC同樣需要和數(shù)據(jù)庫所在的VPC保持一致。服務(wù)調(diào)用方法請參見調(diào)用方式概覽。