大模型的function call功能介绍使用

本文测试了gpt的function call功能,具体的使用示例和效果如下:

## 定义计算平方的函数
def calculator_square(num):
    num =float(num)
    return num**2

## 定义计算绝对值的函数
def calculator_abs(num):
    num =float(num)
    return abs(num)


## 配置函数描述(类似JSON化的API描述)
functions = [
    {
        "name": "calculator_square",
        "description": "Calculate the square of a number",
        "parameters":{
            "type": "object",
            "properties":{
                "num":{
                    "type": "string",
                    "description":"the input number",
                },
            },
            "required": ["num"],
        }
    },
    {
        "name": "calculator_abs",
        "description": "Calculate the absolute value of a number",
        "parameters":{
            "type": "object",
            "properties":{
                "num":{
                    "type": "string",
                    "description":"the input number",
                },
            },
            "required": ["num"],
        }
    }
]

function_mapping = {"calculator_square": calculator_square,
                    "calculator_abs": calculator_abs}


query = "计算1.4的两倍是多少"

messages = [
        {"role": "system", "content": "你是一可以执行各种复杂计算的计算器"},
        {"role": "user", "content": query},
    ]

chat_completion = GPT4o_CLIENT.chat.completions.create(
        messages=messages,
        model="gpt4o",
        functions = functions
    )

response = chat_completion.choices[0].message.dict()
print(response) 
### {'content': '1.4的两倍是2.8。', 'role': 'assistant', 'function_call': None, 'tool_calls': None}

print(response)

if response["function_call"] is not None:
    func_name = response["function_call"]["name"]
    func_args = response["function_call"]["arguments"]
    func_args = json.loads(func_args)
    print(func_name)
    print(func_args)
    func_res = function_mapping[func_name](**func_args)
    print("res:",func_res)

对应结果:

queryresponse

计算1.4的两倍是多少

{'content': '1.4的两倍是2.8。', 'role': 'assistant', 'function_call': None, 'tool_calls': None}

计算1.4的平方是多少

{'content': None, 'role': 'assistant', 'function_call': {'arguments': '{"num":"1.4"}', 'name': 'calculator_square'}, 'tool_calls': None}

计算1.4的绝对值是多少

{'content': None, 'role': 'assistant', 'function_call': {'arguments': '{"num":"1.4"}', 'name': 'calculator_abs'}, 'tool_calls': None}

GPT4o效果不错,换成GPT-3.5时,“计算1.4的两倍是多少”问题会调用calculator_abs,出现错误({'content': None, 'role': 'assistant', 'function_call': {'arguments': '{"num":"1.4"}', 'name': 'calculator_abs'}, 'tool_calls': None})。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值