如何通过函数调用与生成式AI构建更智能的应用程序

创造动态、互动和 智能应用 是软件公司的关键差异化因素,尤其是在快速发展的技术环境中。生成式人工智能 (GenAI) 为帮助组织实现这一目标提供了许多机会。挑战在于将 GenAI 功能扩展到静态文本生成之外。
大型语言模型 (LLM) 的默认文本生成功能通常不够完善。这是因为它们缺乏实时的上下文知识,并且无法在训练后访问私有数据。
通过使 LLM 可以访问微流,函数调用可以帮助解决从数据检索到任务自动化的复杂问题。因此,您实际上可以以低代码方式创建虚拟代理。
终极人工智能助手
想象一下,一个人工智能支持助理可以做以下所有事情:
- 根据私人知识库中的信息回答常见问题,
- 从数据库检索实时用户数据,
- 在私人知识库中搜索解决方案,并
- 代表员工创建支持票——只需一次对话即可完成。
此功能对于负责实施的软件开发人员来说非常有价值。它还可以帮助那些寻求提高用户满意度和运营效率的产品所有者。
最重要的是,最终用户将受益于精简、高效的支持流程。这就是函数调用(也称为工具使用)发挥作用的地方。它允许 AI 模型代表当前用户执行各种任务。
下面的视频展示了我们新发布的 智能客服助手模板应用。动画基于之前描述的 IT 支持用例。它也是本文的一个例子。支持助理入门应用程序将帮助您开始构建虚拟代理。 (有关如何开始的更多提示,请参阅“如何开始”部分。)

让我们看看函数调用如何帮助您解决从数据检索到任务自动化的复杂问题。我们还将介绍如何将平台支持的 GenAI 连接器集成到您的 Mendix 应用程序。我们将为您提供实际示例和可操作的见解,以充分利用 GenAI 的潜力来构建更智能的应用程序。
什么是函数调用?
函数调用是文本生成功能(也称为聊天完成)的可选功能。它允许 LLM 连接到外部工具和系统。
函数调用是许多 LLM 支持的标准模式:
- OpenAI 聊天 GPT
- Anthropic Claude
- 梅塔骆驼
- 凝聚指挥。
允许 LLM 连接到外部工具和系统对于许多不同的用例都很有价值,例如:
资料检索
- 访问实时数据(例如实时生产指标)或特定领域信息(例如内部文档),以提供相关响应
- 检索有关当前用户的数据,以便他们可以询问有关其帐户或最近活动的问题
- 从公共外部 API 检索实时数据。例如,股票价格或天气数据,以回答诸如“鹿特丹明天的天气怎么样?”之类的问题。
触发动作
- 根据聊天对话创建订单等对象
- 使用 LLM 解释复杂请求,在内部或外部系统中启动工作流程
- 基于非结构化数据进行计算
- 通过进行更改或请求显示某些内容与页面上的对象进行交互
如何使用函数调用 Mendix
好消息是,开发人员不需要任何额外的部署、工具、服务或技能即可使用函数调用 Mendix. 一切都可以在里面配置 Mendix Studio Pro 与我们平台支持的 GenAI 连接器。
下图概述了如何从 Mendix 应用程序有效。
第一步
函数在 Mendix 本质上是可以描述并作为 LLM 请求的一部分注册的微流程。通常,向请求添加函数是可选的。如果请求不包含函数,则步骤 2 到步骤 5 不适用,LLM 会直接根据用户提示生成答案,如步骤 6 所示。
第一步
根据当前上下文和功能描述,模型决定是否应调用任何预定义函数(微流)来收集更多信息或根据用户的消息采取行动。这称为用户提示
第一步
LLM 不会自己调用函数。相反,它会返回一个结构化的响应,其中包含有关由 Mendix app 及其所需的输入参数。
步骤4和5
然后在 Mendix app。它们的返回值被发送回 LLM,以添加到正在处理的初始用户提示中。
该过程如下图第二步到第五步所示,重复进行,直到 LLM 在下一步中返回最终答案。
第一步
LLM 返回最终的助理答复。
平台支持的 GenAI 连接器中的聊天完成操作会自动处理所有六个步骤。这样,开发人员只需专注于创建要添加到请求中的功能微流,其余部分则由他们管理。
Mendix 开发人员完全控制
在一个 Mendix 应用程序,功能微流在当前用户的上下文中执行。这允许开发人员确保只检索和显示与当前用户相关的数据。因此, Mendix 应用程序可以完全控制调用哪些微流以及 LLM 使用哪些数据。
用户将拥有对数据安全和操作验证的细粒度访问。除了检索数据之外,用户还可以根据提示触发操作,从而与当前页面进行交互。
对于可能影响现实世界的操作,例如创建对象、触发微流或更新 UI 元素,最好包含一个确认步骤以让用户参与其中。您不希望您的助手意外订购 100 个披萨,而您原本想订购 10 个!(其他示例包括发送电子邮件、提交订单或预约。)
两个 OpenAI 连接器 和 Amazon Bedrock 连接器 通过利用函数调用支持聊天完成 GenAI Commons 模块. 这些模块提供了易于使用的操作来向请求添加功能。
下面的微流程展示了一个示例:
- 创建请求对象
- 增加了多项功能
- 与您首选的 AI 提供商(例如 Amazon Bedrock 或 (Azure) OpenAI)执行聊天完成操作
- 助手响应已更新,以便可以显示在页面上
当使用平台支持的 GenAI 连接器进行聊天完成操作时,开发人员只需将功能微流添加到请求中。连接器将负责响应并运行功能微流,直到 LLM 提供最终的助手响应。
支持助手启动应用中如何使用函数调用
让我们仔细看看 智能客服助手模板应用。我们想看看函数调用对于创建引人入胜且互动的用户体验有多么重要。
通常,员工访问 IT 支持应用程序是因为他们遇到了与 IT 相关的问题。在这里,支持聊天机器人应该可以减少一线支持的开销。它们通过减少创建的工单数量和处理工单所需的资源来实现这一点。
通过使用函数调用,我们为支持助理提供了选择执行以下操作的机会:
使用手册查询知识库
在这里,法学硕士会查询一个私人知识库,其中包含静态手册和指南,其中包含常见 IT 问题的解决方案。这基本上是 检索增强生成 (RAG) 对函数中包装的静态文本数据进行处理。
查询包含已解决工单的知识库
此函数会查看具有类似描述的已解决工单,以建议可能的解决方案。与使用静态自由文本数据的第一个函数不同,此函数适用于 Mendix 与对象相关且可以随时间变化的数据,称为 RAG。
如果用户使用手册或已解决的工单中的解决方案解决了问题,聊天将结束,并且不会创建工单。这为用户和帮助台员工节省了时间。
检查用户类似的未结票据并更新票据
在创建新工单之前,请检查同一员工是否已针对类似问题开具工单。如果已开具,您可以使用更新工单功能将新信息添加到现有工单中。
如果之前关闭的工单或知识库中的步骤或解决方案都不起作用,助手可以询问用户是否要创建新工单。这可以帮助用户添加重要详细信息,使支持人员的工作更轻松,并减少额外工作。
创建新工单
此功能使用对话中已提供的信息为用户创建工单。这样可以生成高质量的工单,捕获所有相关细节,从而更快地解决工单问题。
定义函数时,必须清楚地说明其用途和使用时间。描述可作为 LLM 的提示,指示何时调用函数、需要什么输入以及如何解释其返回值。
您可以在系统提示中包含有关功能执行顺序的一般准则。例如,支持助理应始终在创建新工单之前检查知识库或解决工单以寻找解决方案。
为什么应该在程序中使用函数调用 Mendix 应用
在数据检索方面,您可以使用即时工程或函数调用。但是,函数调用具有一些明显的优势:
- 很难预测哪些信息在未来的对话中是相关的,这可能导致在系统提示中添加过多的信息。虽然函数调用仍然需要您预先定义函数,但它可以防止不相关的信息扰乱聊天上下文。然后,LLM 可以根据需要确定要检索和包含哪些数据。
- 如果在系统提示中添加不必要的信息,LLM 可能会失去对重要内容的关注。这可能会导致意外的行为和响应。
- 此外,用户通常根据请求中的输入和输出令牌数量付费。包含大量额外数据会使提示更长,从而增加输入令牌,并增加不必要的成本。
函数调用通过仅在正确的时间提供所需的数据来帮助解决这些挑战,确保数据始终是最新的。
在其他需要在函数内部触发操作的情况下,快速工程效果不佳。函数调用提供了新的机会,这些机会通常需要代理或助手,但可以以低代码的方式完成。
使用平台支持的函数调用的好处 Mendix 基于GenAI Commons模块的连接器包括:
- 微流可以在 Mendix 无需通过 API 公开它们以便外部系统可以访问它们。
- 无需在 Mendix,让函数调用成为真正的低代码体验
如何开始
看看新的 智能客服助手模板应用 帮助您根据我们讨论的用例快速构建虚拟代理。这也是学习如何在 Mendix.
如果你刚开始向 Mendix 应用程序,我们强烈建议探索 GenAI展示应用程序。它具有一系列鼓舞人心的用例,从使用 对话式 UI 模块 到更高级的功能,如函数调用、检索增强生成 (RAG)、视觉和图像生成。
支持助手入门应用程序和 GenAI 展示应用程序均使用平台支持的连接器来连接两个流行的 AI 提供商: (Azure)OpenAI 和 Amazon Bedrock。您可以轻松地在这些提供商及其模型之间切换,从而轻松地进行并排测试和比较。
这些连接器建立在 GenAI Commons 模块,它提供共享域模型和可重复使用的操作,用于注册函数并将其添加到请求中。连接器处理来自 LLM 的函数调用响应,并根据当前用户的上下文执行函数。
务必检查出 支持函数调用的模型概述 并审查 技术文档.
如果您正在开发自己的 GenAI 用例并需要帮助或想要提供反馈,我们很乐意听取您的意见。请联系您的客户成功经理或在 #genai 连接器 上的频道 Mendix 社区 Slack。 在此注册!