Function Call是什么 ?
简单来说就是给 LLM 提供了调用外部工具或函数的能力。这个函数或工具可以是可以自定义的,这样可玩性就很大了,一个是 LLM 本身能力可以依靠Function Call得到极大补充,另一个是 LLM 可以极大地适配你的业务。
应用场景
- 获取你的内部业务数据。例如:一个智能客服系统,客户可能想查询自己订单的情况,在给 LLM 对应的订单ID后,LLM 可以调用Function Call来调取你本地的数据,获取对应的订单信息并解决客户问题。
- 对接各种工具获取更加强大的能力。例如:LLM 可以通过 Function Call 获取天气、新闻、股票价格等实时信息。
- 执行各种操作。例如:LLM 可以通过 Function Call 发送邮件、创建日历事件、控制智能家居设备等,对于业务上 LLM 可以通过调用 Function Call 完成对应用户的需求比如发送退款申请,查询订单状态,完成商品上架等。
是不是感觉 LLM 的能力一下子就上来了?实际上通过Function Call,LLM 已经成为了一个强大的agent,通过自身的决策,完成各种外部信息的查询以及各种操作,放在家里那就是整个一智能管家呀。
如何使用Function Call?
deepseek是适配open AI的Function Call的,我们调用deepseek来进行演示如何调用一个Function Call。
看看结果
- 首先用户先向模型提问北京天气,
- 模型是无法知道天气的,通过Function Call调用我们识别天气的函数。
- 最后模型根据我们给的结果对用户问题进行解答。
下面我们详细讲一下怎么实现
定义被调用的函数
def get_weather(location):
# 这里可以添加实际的天气获取逻辑
# 例如,调用一个天气API并返回结果
# 为了示例,我们假设返回一个固定的天气信息
return f"The weather in {
location} is 24℃."
定义函数描述
函数描述中详细描述了这个函数的功能以及需要填入的参数类型和属性(比如是否必填),之后模型会根据你的描述使用你的函数,并给你提供对应的参数
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather of a location, the user should supply a location first",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",