我们上个月发布的新连接器将 Open AI 集成简化为仅需几步操作。 我实现了聊天完成 API(有和没有上下文),并想编写一个关于其工作原理的快速教程。
先决条件
与往常一样,在进入主要构建之前我们需要做一些准备工作。 你会需要:
- 带有 API 密钥的 OpenAI 开发者帐户
- 为 OpenAI 配置的计费。 (预付信用卡可以正常使用。 请参阅 OpenAI 定价页面。)
- 社区共享和加密模块
获取 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 展示应用程序。