我尝试了新的 OpenAI 连接器,它太棒了!

Title Image for OpenAI Connector

我们上个月发布的新连接器将 Open AI 集成简化为仅需几步操作。 我实现了聊天完成 API(有和没有上下文),并想编写一个关于其工​​作原理的快速教程。

先决条件

与往常一样,在进入主要构建之前我们需要做一些准备工作。 你会需要:

获取 API 密钥并配置计费

获取您的 API 密钥很简单。 使用注册的 OpenAI 账户登录 OpenAI 开发者门户,导航到 API 密钥页面来创建一个新的密钥。 确保将其保存在安全的地方,因为创建后将无法查看它。 (但如果需要,您可以创建新的密钥。)

配置计费非常简单,只需按照 OpenAI 编写的指南进行操作即可。

完成 OpenAI 配置后,请确保下载社区共享模块以及加密模块。

开始构建

打好基础后,您就可以开始正式的构建了。 您的第一步是从 Mendix 市场下载并配置 OpenAI 连接器

将模块导入项目后,您需要启用应用程序管理员来配置连接器。 这非常简单。 模块中有一个名为“Configuration_Overview”的预建页面,您可以将其包含在导航中。

或者 您可以创建自己设计的新页面,并简单包含代码片段“Snippet_Configurations”。 无论您选择哪种方法,您的管理员角色都需要所需的模块角色才能访问。

要为应用程序管理员分配所需的权限,请打开安全概览,导航到用户角色选项卡,然后打开管理员角色。 确保分配权限 OpenAIConnector.Administrator 模块角色。

这也是确保授予应用程序用户 OpenAIConnector.User 角色的好时机。

应用程序安全屏幕

接下来,运行您的应用程序,以管理员用户身份登录(MxAdmin 适用于本地环境),然后导航到 OpenAI 的配置概述。 到达那里后,单击“新建”按钮创建一个新的 OpenAI 配置。

给你的配置命名。 我将我的命名为“TestConfig”。 接下来,选择您的 API 类型,Azure 或 OpenAI。 对于本教程,请选择“OpenAI”。 端点只是 OpenAI 端点或 URL。 我的设置为“https://api.openai.com/v1/”,按照表单中的示例建议。

最后,在 Token 字段中输入您的 API 密钥。 对输入的详细信息满意后,请单击“保存”按钮关闭表单。

编辑配置屏幕

保存配置后,最好测试一下连接。 打开“测试配置”页面,输入提示以及您尝试使用的 GPT 模型。 就我而言,我使用的模型是 gpt-4-turbo。 但您可以根据用例需要使用其他内容。 如果所有配置正确并且正常运行,您将收到以下形式的绿色成功消息:

测试配置屏幕

实现聊天完成(无历史记录)

验证连接正常且您可以对提示生成响应后,您需要将模型集成到微流中。

在我的主页“Home_Web”上,我有一个简单的聊天窗口供用户输入他们的消息。 有一个“发送”按钮,无论聊天是否记住历史记录,它都会调用相同的微流程。

创建新的聊天屏幕

当用户点击“发送”按钮时,它会调用微流“ACT_SendMessageToModel”。 该微流在决策“UseChatHistory”上分支。 默认情况下,此布尔值为假,但用户可以在页面中启用此功能。

微流屏幕

如果“UseChatHistory”为假,则会触发微流“SUB_SendMessage_NoHistory”。 此流程在“$ChatHistory”实体中创建用户提供的提示的内部副本。 然后,它使用提供的操作调用连接器并创建模型响应的副本:

第二个微流屏幕

下面详细介绍了如何配置操作:

“聊天完成(无历史记录)”

如果您已正确完成所有操作,您可以运行您的应用程序并测试此功能。 接下来,我们整合更高级的“带历史记录”选项。

实现聊天完成(带历史记录)

这种方法与第一种方法略有不同,需要做一些额外的工作来设置。 它有三个主要步骤:

1. 为聊天创建一个会话。 这是 OpenAI Connectors 域模型中的非持久性对象。 每次发送消息时都需要创建一个新会话。 它仅仅是请求的持有者。 您需要为每个新提示重新创建它。

2. 接下来,我们需要填充聊天历史记录。 这涉及检索聊天中的所有消息、循环遍历每条消息并将其附加到聊天历史记录中。 您可以使用连接器中提供的名为“ChatCompletionsSession_AddMessage”的微流来执行此操作。

第三个微流屏幕

如果您想向模型提供系统提示,您可以在此处进行。 添加到历史记录中的每条消息都被分配了一个角色。 用户被分配“用户”,模型被分配“助手”,任何系统提示都被分配“系统”。 您可以使用系统提示来微调特定风格、格式或语气的回应 它还告知模型其目的,使其能够提供更有针对性的响应。

3. 最后,我们就可以真正调用该模型了。 您可以使用提供的操作“聊天完成(带历史记录)”执行此操作。 此操作需要我们之前手动创建的“$ChatCompletionsSession”实体,以及配置、模型和预期响应格式。

第四个微流屏幕

第二次“聊天完成(包含历史记录)”

    是时候测试一下了!

    如果一切顺利,您可以最后一次运行您的应用程序并测试这两个功能。 下面是我使用该机器人的一个版本的屏幕截图,其中该机器人被告知它是 Mendix 开发方面的专家,它应该可以帮助那些学习该平台的人:

    机器人截图

    我遇到的主要问题是弄清楚需要为每条消息重新创建的 ChatSession 实体。 一旦我弄清楚了这一点,只需将聊天内容存储在数据库中,然后在发送最新的回复之前重新提交每条消息即可。 还要记得将模型自己的反应附加到这个历史记录中,因为如果没有这个,它就不会记住自己的反应。

    最后,系统提示选项比它看上去的更强大。 这使得您只需提供几句话就可以非常轻松地完全定制您的机器人。 您可以创建与您的目标完全一致的机器人。

    如果您想了解有关此集成如何运作的更多信息,请务必访问我们的文档页面。 您还可以在 OpenAI 平台上阅读更多信息,或从 Mendix 市场下载 OpenAI 展示应用程序