本模板介绍如何使用LangStudio构建Function-Calling应用流。在该应用流中,开发者可以提供多个函数,将问题以及函数描述传递给LLM,让LLM返回合适的函数名和参数,然后通过Python节点执行对应的函数,返回结果。根据需要,开发者可以在本模板基础上进行二次开发。
LLM 工具使用介绍
tools
是OpenAI API中的一个可选参数,用于使模型生成符合指定规范的工具参数。
模型并不会实际执行任何工具调用,开发者需要根据模型输出自行执行工具调用。
通过设置tools
参数传递可用工具列表,并将tool_choice
参数设置为auto
,模型会自动选择使用某个工具。tools
参数格式可参考下面的代码示例。
如果使用了tools
,输出响应将包含"finish_reason": "tool_calls"
,并附带一个tool_calls
对象,该对象包含需要调用的工具名称和工具参数。根据工具名称,开发者可以执行相应的操作。
import openai
# 定义函数
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"]
}
}
}
]
# 使用函数
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" # 让模型自己决定是否使用函数
)
# 检查是否有函数调用
if response.choices[0].message.tool_calls:
# 处理函数调用
function_call = response.choices[0].message.tool_calls[0]
# ... 执行相应的操作 ...
详细信息可参考OpenAI API文档。
快速上手
创建连接
构建应用流前,您需要准备如下工作:
开通大模型服务平台百炼。
访问阿里云百炼大模型服务平台 开通服务。
在控制台创建API Key,用于调用Qwen-Max、通义万相、语音合成CosyVoice大模型服务。
在连接管理中创建百炼大模型服务连接,并将api_key填入对应字段。具体操作,请参见连接管理。
申请SerpApi Key。
访问SerpApi 官网注册账号并获取API Key,用于调用搜索引擎。
在连接管理中创建自定义连接。具体操作,请参见连接管理。
构建应用流
参考应用流开发,构建如下应用流节点:
gather_tool
python节点,用于生成全部tools描述。tools描述要求符合OpenAI API规范,详情可参考OpenAI API文档。模板中该节点合并输出预制tools和自定义
tools
的描述,其中自定义tools使用user_define_tool.json
文件进行描述。function_call_router
LLM节点,以Function calling方式调用LLM,需要配置如下参数:
connection
:选择前面创建的百炼大模型服务连接。model
:选择支持Function calling的模型,例如qwen-max,详细模型列表见模型列表。
search
search_connection
:选择前面配置的SerpApi自定义连接。num
:搜索引擎返回结果数量。location
:搜索引擎需要的位置信息。engine
输入搜索引擎,该模板仅支持Bing和Baidu,其他搜索引擎请自行修改模板支持。
说明可自定义该节点,使用其他方式调用搜索引擎。
answer_with_search
LLM节点,接收search节点搜索的结果,并将搜索结果和问题传给LLM,生成回答,需要配置如下参数:
connection
:选择前面创建的百炼大模型服务连接。model
:模型名,例如qwen-max,详细模型列表见模型列表。
image_synthesis
python节点,用于调用百炼大模型服务,生成图像,需要配置如下参数:
dashscope_connection
:选择前面配置的百炼大模型服务连接,本模板会默认调用通义万相。
voice_synthesis
python节点,用于调用百炼大模型服务,生成语音,需要配置如下参数:
dashscope_connection
:选择前面配置的百炼大模型服务连接,本模板会调用语音合成CosyVoice。
direct_generate
python节点,如果function_call_router判断不做function调用,直接生成回答,则会通过该节点透传回答。
gather_output
python节点,用于收集并合并所有节点的输出。
测试应用流
首先,单击右上角启动运行时按钮,配置运行资源以及VPC。这里VPC需要和数据库所在的VPC保持一致,或者已经打通。
等待运行时启动完成,单击右上角对话按钮,开始对话。
部署应用流
测试完成,单击右上角部署按钮,填写服务名/部署资源组、VPC信息,将工作流部署成EAS服务。这里的VPC同样需要和数据库所在的VPC保持一致。服务调用方法请参见调用方式概览。