
网络请求是什么数据格式进行-JSON(很对版本的演进后目前JSON最火)-所以大模型最好也是使用JSON交互Function calling在人工智能 快速发展的今天大型语言模型LLM已经成为处理自然语言任务的强大工具。然而随着应用场景的不断拓展仅仅依靠模型生成文本已经无法满足复杂多样的实际需求。Function calling功能应运而生它使LLM能够根据用户的输入与外部工具、API和功能进行互动。这一功能的出现极大地拓展了模型的应用范围使其可以 ’ 从“仅仅说”转变为“实际操作” ’ 例如查询实时天气、获取股票信息等从而为用户提供更精准、更有价值的服务。类似回调函数Function calling外部函数库创建方法创建外部函数库是实现Function calling的关键步骤。首先开发者需要明确模型 需要调用的外部功能例如查询天气、获取股票数据等。然后针对每个功能编写相应的函数并定义好函数的参数和返回值。例如定义一个查询天气的函数需要指定地点和日期作为参数并返回天气信息。接着将这些函数封装成一个函数库以便模型在需要时能够调用。在实际操作中可能还需要设置API接口和认证信息以确保函数能够正确访问外部数据源。Function calling数据通信格式Function calling的通信数据格式通常采用JSONJavaScript Object Notation这是一种轻量级的数据交换格式易于阅读和编写同时也易于机器解析和生成。在Function calling中模型通过生成一个结构化的JSON对象来请求调用特定的函数并传递相应的参数。例如当用户询问天气时模型会生成一个包含函数名如get_weather和参数如地点和日期的JSON对象。外部函数执行后也会将结果以JSON格式返回给模型模型再将这些结果整合到最终的自然语言回复中。在Function calling中参数是连接模型和外部函数的关键。参数的解释和定义需要非常精确以确保模型能够正确理解用户的意图并生成符合函数要求的参数值。首先开发者需要为每个函数定义好参数的类型、描述和是否必填等信息。例如在查询天气的函数中地点是一个必填的字符串 参数而日期可能是一个可选的字符串参数。然后模型在解析用户的自然语言输入时会根据这些定义来提取和生成相应的参数值。如果参数提取不准确可能会导致函数调用失败或返回错误的结果。JSON Schema在Function calling中JSON Schema是一个非常重要的概念它用于描述函数参数的结构和约束。JSON Schema是一个基于JSON的格式用于定义JSON数据的结构和验证规则。通过使用JSON Schema开发者可以确保模型生成的参数符合函数的要求从而减少错误调用的可能性。例如在定义查询天气的函数时可以使用JSON Schema来指定地点和日期的格式以及哪些参数是必填的。模型在生成参数时会根据这些Schema定义来验证参数的合法性如果参数不符合要求模型会尝试重新生成或提示用户修正输入。Function calling的第一次响应是指模型在接收到用户的自然语言输入后生成的包含函数调用请求的响应。在这个阶段模型会首先解析用户的意图判断是否需要调用外部函数来完成任务。如果需要调用函数模型会生成一个结构化的函数调用请求包括函数名和参数并将其作为响应的一部分返回。例如当用户询问“今天北京的天气怎么样”时模型会生成一个调用get_weather函数的请求并传递地点“北京”和日期“今天”作为参数。这个请求随后会被发送给外部函数执行。[ { role: system, content: 不要假设或猜测传入函数的参数值。如果用户的描述不明确请要求用户提供必要信息 }, { role: user, content: 帮我查询1月23日北京到广州的航班 } ]{ content: null, role: assistant, tool_calls: [ { id: call_-8929800266402085722, function: { arguments: {\date\: \2024-01-23\, \departure\: \北京\, \destination\: \广州\}, name: get_flight_number }, type: function, index: 0 } ] }Function calling的第二次响应是指在外部函数执行完成后模型根据函数的执行结果生成的最终回复。在这个阶段模型会将外部函数返回的结果整合到自然语言回复中以向用户提供完整的信息。例如当外部函数返回北京今天的天气信息后模型会生成一个如“北京今天晴天25℃”的回复。如果函数调用失败或返回错误信息模型也可能会生成相应的提示信息告知用户出现问题并可能建议用户修正输入或稍后重试。Function calling作为大模型的一项重要功能极大地拓展了模型的应用能力。通过与外部函数的交互模型可以从生成文本转变为执行实际任务为用户提供更丰富、更实用的服务。在实际应用中开发者需要精心设计外部函数库、通信数据格式、参数定义以及错误处理机制以确保Function calling的顺利进行。随着技术的不断发展Function calling将在更多领域发挥重要作用为人工智能的应用开辟新的可能性。[ { role: system, content: 不要假设或猜测传入函数的参数值。如果用户的描述不明确请要求用户提供必要信息 }, { role: user, content: 帮我查询1月23日北京到广州的航班 }, { content: null, role: assistant, tool_calls: [ { id: call_-8929800266402085722, function: { arguments: {\date\: \2024-01-23\, \departure\: \北京\, \destination\: \广州\}, name: get_flight_number }, type: function, index: 0 } ] }, { role: tool, content: {\flight_number\: \8321\}, tool_call_id: call_-8929800266402085722 } ]{ content: 1月23日从北京飞往广州的航班号为8321。如果需要查询该航班的票价请告诉我。, role: assistant, tool_calls: null }