欢迎来到我们关于openai和microsoftsentinel的系列!大型语言模型或llm,例如openai的gpt3系列,正在通过文本摘要、类人对话、代码解析和调试以及许多其他示例等创新用例接管公众的想象力。我们已经看到chatgpt编写剧本和诗歌、创作音乐、撰写论文,甚至将计算机代码从一种语言翻译成另一种语言。
在我们开始之前,让我们先了解一些先决条件:
我们将从一个基本的事件触发剧本开始(Sentinel>Automation>Create>Playbookwithincidenttrigger)。
选择订阅和资源组,添加剧本名称,然后移至“连接”选项卡。您应该会看到带有一个或两个身份验证选项的MicrosoftSentinel-我在此示例中使用的是托管身份-但如果您还没有任何连接,您也可以在逻辑应用程序设计器中添加Sentinel连接.
查看并创建剧本,几秒钟后,资源将成功部署并将我们带到逻辑应用程序设计器画布:
让我们添加我们的OpenAI连接器。单击“新建步骤”并在搜索框中键入“OpenAI”。您会在顶部窗格中看到连接器,并在其下方看到两个操作:“创建图像”和“GPT3完成您的提示”:
确保在添加OpenAIAPI密钥时完全按照说明进行操作-它需要单词“Bearer”,后跟一个空格,然后是密钥本身:
我们快完成了!保存逻辑应用并转到MicrosoftSentinel事件以对其进行测试运行。我的实例中有来自MicrosoftSentinelTrainingLab的测试数据,因此我将针对恶意收件箱规则警报触发的事件运行此剧本。
单击该项目可查看有关逻辑应用运行的详细信息。我们可以展开任何操作块以查看详细的输入和输出参数:
我们的GPT3操作只用了两秒钟就成功完成了。让我们单击操作块将其展开并查看其输入和输出的完整详细信息:
让我们仔细看看“输出”部分中的“选择”字段。这是GPT3返回其完成的文本以及完成状态和任何错误代码的地方。我已将Choices输出的全文复制到VisualStudioCode中:
这些是什么意思,我们如何调整它们以获得最佳结果?为了帮助我们了解每个参数对结果的影响,让我们转到OpenAIAPIPlayground。我们可以在逻辑应用程序运行的输入字段中粘贴准确的提示,但在单击“提交”之前,我们要确保参数匹配。下面是一个快速表格,用于比较AzureLogicAppOpenAI连接器和OpenAIPlayground之间的参数名称:
让我们使用以下OpenAIAPIPlayground设置来匹配我们的逻辑应用程序操作:
这是我们从GPT3引擎得到的结果。
看起来响应在句子中间被截断了,所以我们应该增加最大长度参数。否则,此响应看起来还不错。我们正在使用最高可能的温度值——如果我们降低温度以获得更确定的响应,会发生什么?以温度为零为例:
在temperature=0时,无论我们重新生成此提示多少次,我们都会得到几乎完全相同的结果。当我们要求GPT3定义技术术语时,这很有效;作为MITREATT&CK战术的“防御规避”的含义应该没有太大差异。我们可以通过添加频率惩罚来提高响应的可读性,以降低模型重复使用相同词的倾向(“技术如”)。让我们将频率惩罚增加到最大值2:
到目前为止,我们只使用了最新的达芬奇模型来快速完成任务。如果我们下降到OpenAI更快、更便宜的模型之一,例如Curie、Babbage或Ada,会发生什么?让我们将模型更改为“text-ada-001”并比较结果:
嗯……不完全是。让我们试试巴贝奇:
Babbage似乎也没有返回我们正在寻找的结果。也许居里会过得更好?
回到我们的逻辑应用程序,让我们将我们从Playground发现的设置传输到OpenAI操作块: