功能调用
您可以在 OpenAiChatClient 中注册自定义 Java 函数,并让 OpenAI 模型智能地选择输出一个包含参数的 JSON 对象,以调用一个或多个已注册的函数。这允许您将 LLM 功能与外部工具和 API 连接。OpenAI 模型被训练以检测何时应调用函数,并以符合函数签名的 JSON 响应。
OpenAI API 不会直接调用函数;相反,模型会生成 JSON,您可以使用该 JSON 在代码中调用函数,并将结果返回给模型以完成对话。
Spring AI 提供灵活且用户友好的方法来注册和调用自定义函数。通常情况下,自定义函数需要提供函数名称、描述和函数调用签名(作为 JSON 架构),以让模型知道该函数期望的参数。描述有助于模型理解何时调用函数。
作为开发者,您需要实现一个函数,该函数接受来自 AI 模型的函数调用参数,并将结果返回给模型。您的函数可以进一步调用其他第三方服务来提供结果。
Spring AI 使支持函数调用的代码编写变得简单。它为您代理了函数调用对话。您可以简单地将您的函数定义为 @Bean,然后在调用 ChatClient 时提供该函数的 bean 名称。您还可以在提示选项中引用多个函数 bean 名称。
功能调用的工作原理
假设我们希望 AI 模型响应它没有的信息,例如给定位置的当前温度。
我们可以为 AI 模型提供有关我们自己函数的元数据,以便在处理您的提示时使用这些信息来检索该信息。
例如,如果在处理提示的过程中,AI 模型确定需要了解给定位置的温度信息,它将启动一个服务器端生成的请求/响应交互。AI 模型调用客户端函数。AI 模型提供方法调用细节作为 JSON,客户端负责执行该函数并返回响应。
模型-客户端交互在 Spring AI 功能调用流程图中进行了说明。