65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure 上的 Node.js:利用 AI 构建云原生服务

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (2投票s)

2021 年 5 月 3 日

CPOL

6分钟阅读

viewsIcon

4064

downloadIcon

46

在本文中,我们将探索一些 Azure 认知服务,它们通过云为任何应用程序带来强大的 AI 能力。

在我们上一篇文章中,我们使用了Azure Active Directory B2C 的云管理身份验证为我们的云原生应用程序添加了用户登录功能。由于您的应用程序应该专注于其核心竞争力,并将其他流程外包,因此这一次我们将仅用几行代码将 Azure 的一些云人工智能服务集成到我们的应用程序中。也许这会激发您进一步探索云原生应用程序的可能性!

Azure 认知服务

Azure 认知服务通过云使复杂的强大人工智能变得易于使用。您无需投资硬件来获得大规模计算能力,也无需投入数据和时间来训练 AI。Azure 提供各种不同的 AI 功能,从用于文本和语音分析的自然语言处理 (NLP) 技术,到包括人脸和物体检测在内的计算机视觉。

探索 Azure 广泛的API,并查看一些有趣实用的Azure 项目。您可能会注意到,使用这些服务可以快速轻松地将高度复杂的人工智能集成到项目中。

在本文中,让我们在应用程序中使用文本分析和语言翻译服务。

项目设置

此项目的起点是我们上一篇文章结束时关于职位列表和身份验证的地方。如果您需要,可以查看并 fork 此存储库作为起点。

如果您喜欢直接跳到最终代码,以了解预期内容,可以在GitHub上找到完整的存储库。

职位描述分析

文本分析是一项 NLP 服务,它使用 AI 从文本数据中推断和提取信息。它使我们能够检测文本语言、预测文章的正面或负面情绪,甚至从段落或整个研究论文中提取关键短语和术语。要了解更多关于文本分析和自然语言处理的信息,请查阅Microsoft 的文档

让我们将这些分析应用于我们的应用程序。

首先,创建一个文本分析资源并为此资源命名。您可以使用免费的 F0 层试用该服务,每月有 5000 次免费事务。

打开该资源,并从“密钥和终结点”页面提供的两个 API 密钥中复制一个。您将使用此密钥和终结点从代码中调用文本分析 API。

在“职位缓存”进程的 jobs 文件夹中,通过运行以下命令安装文本分析库:

npm install @azure/ai-text-analytics@5.1.0-beta.3

导入文本分析并在 index.ts 中设置客户端对象。请务必将 textAnalyticsKeytextAnalyticsEndpoint 的值替换为从资源复制的文本,以便服务能够正确连接。

import { TextAnalyticsClient, AzureKeyCredential } from "@azure/ai-text-analytics";

const textAnalyticsKey = "SECRET KEY";
const textAnalyticsEndpoint = "TEXT ANALYTICS ENDPOINT";
const textAnalyticsClient = new TextAnalyticsClient( textAnalyticsEndpoint,  new AzureKeyCredential( textAnalyticsKey ) );

让我们使用文本分析客户端添加三个新 API:情绪检测、语言检测和关键短语提取。

Web.APIs[ "/sentiment" ] = async ( qs, body, opts ) => {
    const sentiment = await textAnalyticsClient.analyzeSentiment( [ qs.text ] );
    return sentiment;
};

Web.APIs[ "/language" ] = async ( qs, body, opts ) => {
    const language = await textAnalyticsClient.detectLanguage( [ qs.text ] );
    return language;
};

Web.APIs[ "/phrase" ] = async ( qs, body, opts ) => {
    const phrases = await textAnalyticsClient.extractKeyPhrases( [ qs.text ] );
    return phrases;
};

您可以使用职位列表描述在本地测试这些 API,方法是将文本作为查询字符串参数传递。例如,来自本地终结点 https://:8081/sentiment 的情绪分析输出提供了整体情绪和置信度得分,并将文本分解为具有单独分析的各个句子。您还可以使用 /language 和 /phrase 终结点测试 API 输出。

以下是一个您可以尝试的示例链接

https://:8081/sentiment?text=<p>关于此职位:</p>\n<p>Microsoft 工程师激励、赋能并领导。作为一名在 Microsoft 爱尔兰的工程师,您可以开发被全球数亿人使用的解决方案。随着团队致力于 Microsoft 365、Azure、现代工作场所转型解决方案、身份和自然语言体验,您的成就将无限可能</p>\n<p>我们正在为各部门招聘软件工程师。成功的候选人必须具备探究精神和“能做”的心态。打破障碍、挑战现状并在各组织之间建立联系的能力至关重要。

您现在已经为应用程序添加了强大的 AI 文本分析功能。现在,如果您愿意,可以将此代码更进一步,并将其直接集成到主要的职位列表网页中。

翻译职位描述

我们将在此项目中集成的另一个 API 是Azure 翻译。此 API 提供实时文本翻译,支持 90 种不同的语言和方言。它有助于打破任何业务的语言障碍,因此对于您的应用程序“走向全球”而言,它可能是一个游戏规则的改变者。让我们使用它来翻译我们的职位列表中的职位描述。

要将 Azure 翻译添加到您的 Node.js 应用程序,请首先创建一个翻译器资源并为此资源命名。您可以使用免费的 F0 层,每月翻译多达两百万个字符。

接下来,打开该资源,并从“密钥和终结点”页面提供的两个 API 密钥中复制一个。我们需要密钥、终结点和位置才能从代码中调用翻译 API。

在包含“职位缓存”进程的 jobs 文件夹的 index.ts 文件中,添加凭据和一个翻译辅助函数

const translationKey = "TRANSLATION KEY";
const translationEndpoint = "TRANSLATION ENDPOINT";
const translationRegion = "TRANSLATION LOCATION";

async function translate( text, to ) {
    let translation = await fetch( `${translationEndpoint}translate?api-version=3.0&to=${to}`, {
        method: "POST",
        headers: {
            "Ocp-Apim-Subscription-Key": translationKey,
            "Ocp-Apim-Subscription-Region": translationRegion,
            "Content-type": "application/json",
        },
        body: JSON.stringify([{
            "text": text
        }])
    } ).then( r => r.json() );
    return translation;
}

让我们添加一个新的 API,将文本翻译成查询字符串中指定的任何支持的语言

Web.APIs[ "/translate" ] = async ( qs, body, opts ) => {
    const translation = await translate( qs.text, qs.to );
    return translation;
};

通过将文本和目标语言作为查询字符串参数传递,在本地使用职位列表描述测试此 API。API 会检测文本语言并提供翻译。

例如,打开此 URL 来测试职位描述从英语到法语的翻译:https://:8081/translate?to=fr&text=<p>关于此职位:</p>\n<p>Microsoft 工程师激励、赋能并领导。作为一名在 Microsoft 爱尔兰的工程师,您可以开发被全球数亿人使用的解决方案。随着团队致力于 Microsoft 365、Azure、现代工作场所转型解决方案、身份和自然语言体验,您的成就将无限可能</p>\n<p>我们正在为各部门招聘软件工程师。成功的候选人必须具备探究精神和“能做”的心态。打破障碍、挑战现状并在各组织之间建立联系的能力至关重要。

有了触手可及的 Azure 翻译 AI,语言不再是职位列表的障碍。何不将其直接集成到主网页中,以用户偏好的语言显示职位?

此项目的最终代码可在GitHub上找到。

总结

恭喜您,您已经完成了本系列!

首先,我们部署了一个 Azure Functions 应用程序,使其在 Kubernetes Pod 中协同工作,并通过 Azure DevOps 管道自动化 Pod 部署。然后,我们为容器化的 Kubernetes 应用程序添加了监控,并启用了根据需求进行扩展。在此基础上,我们使用 Azure AD 的云身份验证保护了对我们应用程序的访问。最后,在本文中,我们通过分析和翻译文本来探索 Azure AI 的功能。

这仅仅是您在构建云原生 Node.js 应用程序的冒险之旅的开始。既然您已经正式成为云原生开发者,您就可以轻松地创建自己的经过身份验证和自动化的应用程序,并利用内容审核、语音识别、情绪检测等强大的 AI 工具。

感谢您踏上这段从零到云原生的 Azure 之旅。我们希望它能激发您使用这些技术创造更多、做得更多!

要详细了解如何使用 Kubernetes 和 Azure 构建云原生应用程序,请浏览《Kubernetes 电子书合集》《Azure 上的 Kubernetes 入门》

© . All rights reserved.