所有文章 > API使用场景 > 使用Azure AI服务:使用C#和Python进行REST API调用
使用Azure AI服务:使用C#和Python进行REST API调用

使用Azure AI服务:使用C#和Python进行REST API调用

配置 Azure AI 服务资源

Azure AI 服务提供一套功能强大的基于云的服务,可将高级人工智能功能直接引入您的应用程序。

无论您需要自然语言处理、计算机视觉还是其他 AI 功能,Azure AI 服务都能提供可扩展且高效的解决方案。

本文将指导您配置 Azure AI 服务资源并将其集成到您的应用程序中。

步骤 1:登录 Azure 门户

1、打开 Web 浏览器并转到Azure 门户。

2、使用与你的 Azure 订阅关联的 Microsoft 帐户登录。

步骤 2:创建 Azure AI 服务资源

1、在 Azure 门户中,使用顶部搜索栏搜索Azure AI 服务。

2、从搜索结果中选择Azure AI 服务。

单击“创建”开始配置新的多服务帐户资源。

步骤 3:配置资源设置

创建 Azure AI 服务资源时,需要配置以下设置:

订阅:

选择您的 Azure 订阅。

资源组:

选择现有资源组或创建新资源组。如果您的权限受限,请使用提供给您的资源组。

区域:

选择适合您需求的可用区域。

名称:

为您的资源输入一个唯一的名称。

定价层:

选择标准 S0作为定价层。

步骤 4:完成并创建资源

1、通过选择所需的复选框来查看条款和条件。

2、单击“创建”以部署您的资源。

3、等待部署完成。此过程可能需要几分钟。

步骤 5:访问资源详细信息

部署完成后,请按照以下步骤查看资源详细信息:

1、进入资源页面,查看部署详情。

2、导航到密钥和端点页面。

此页面包含连接到资源的基本信息,包括:

HTTP 端点:客户端应用程序可以发送请求的端点。
身份验证密钥:客户端应用程序可用于身份验证的两个密钥。任一密钥均可用于对请求进行身份验证。

Location:资源的托管位置,某些 API 请求需要该位置。

在您的应用程序中使用 Azure AI 服务

设置 Azure AI 服务资源后,你现在可以将 AI 功能整合到应用程序中。以下是如何使用这些服务的一般概述:

1、发出 HTTP 请求:

使用提供的 HTTP 端点从客户端应用程序发送请求。确保在请求标头中包含其中一个身份验证密钥。

2、处理响应:

处理来自 Azure AI 服务的响应,以将 AI 功能(例如自然语言处理、计算机视觉或其他功能)合并到您的应用程序中。

3、特定区域的 API:

对于某些 API,您需要在请求中指定资源的位置。

将 REST 接口与 Azure AI 服务结合使用

Azure AI 服务 API 基于 REST,允许你通过 HTTP 发送 JSON 请求来与它们交互。

在本文中,我们将介绍一个使用控制台应用程序使用语言 REST API 执行语言检测的示例。

此原则适用于 Azure AI 服务资源支持的所有 API。

先决条件

  • 您的机器上安装了 Visual Studio Code
  • Azure AI 服务资源终结点和身份验证密钥
  • 具备 C# 或 Python 基础知识

设置你的项目

1. 选择您的首选语言

您可以选择使用 C# 或 Python 进行此练习。根据您的偏好,在 Visual Studio Code 中展开相应的文件夹:

  • 对于 C#:展开C-Sharp文件夹。
  • 对于 Python:展开Python文件夹。

2.更新配置设置

导航到rest-client文件夹并打开配置文件:

C#:appsettings.json

Python:.env

更新配置值以反映您的 Azure AI 服务端点和身份验证密钥,然后保存更改。

3.检查客户端应用程序代码

打开您选择的语言的主代码文件:

C#:Program.cs

using System;
using Newtonsoft.Json.Linq;
using System.Text;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
using Microsoft.Extensions.Configuration;
using System.Threading.Tasks;

namespace rest_client
{
class Program
{
private static string AiSvcEndpoint;
private static string AiSvCKey;
static async Task Main(string[] args)
{
try
{
// Get config settings from AppSettings
IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
IConfigurationRoot configuration = builder.Build();
AiSvcEndpoint = configuration["AIServicesEndpoint"];
AiSvCKey = configuration["AIServicesKey"];

// Get user input (until they enter "quit")
string userText = "";
while (userText.ToLower() != "quit")
{
Console.WriteLine("Enter some text ('quit' to stop)");
userText = Console.ReadLine();
if (userText.ToLower() != "quit")
{
// Call function to detect language
await GetLanguage(userText);
}

}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
static async Task GetLanguage(string text)
{
// Construct the JSON request body
try
{
JObject jsonBody = new JObject(
// Create a collection of documents (we'll only use one, but you could have more)
new JProperty("documents",
new JArray(
new JObject(
// Each document needs a unique ID and some text
new JProperty("id", 1),
new JProperty("text", text)
))));

// Encode as UTF-8
UTF8Encoding utf8 = new UTF8Encoding(true, true);
byte[] encodedBytes = utf8.GetBytes(jsonBody.ToString());

// Let's take a look at the JSON we'll send to the service
Console.WriteLine(utf8.GetString(encodedBytes, 0, encodedBytes.Length));

// Make an HTTP request to the REST interface
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);

// Add the authentication key to the header
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", AiSvCKey);

// Use the endpoint to access the Text Analytics language API
var uri = AiSvcEndpoint + "text/analytics/v3.1/languages?" + queryString;

// Send the request and get the response
HttpResponseMessage response;
using (var content = new ByteArrayContent(encodedBytes))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response = await client.PostAsync(uri, content);
}

// If the call was successful, get the response
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
// Display the JSON response in full (just so we can see it)
string responseContent = await response.Content.ReadAsStringAsync();
JObject results = JObject.Parse(responseContent);
Console.WriteLine(results.ToString());

// Extract the detected language name for each document
foreach (JObject document in results["documents"])
{
Console.WriteLine("\nLanguage: " + (string)document["detectedLanguage"]["name"]);
}
}
else
{
// Something went wrong, write the whole response
Console.WriteLine(response.ToString());
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}

}
}
}

Python: rest-client.py

from dotenv import load_dotenv
import os
import http.client, base64, json, urllib
from urllib import request, parse, error

def main():
global ai_endpoint
global ai_key

try:
# Get Configuration Settings
load_dotenv()
ai_endpoint = os.getenv('AI_SERVICE_ENDPOINT')
ai_key = os.getenv('AI_SERVICE_KEY')

# Get user input (until they enter "quit")
userText =''
while userText.lower() != 'quit':
userText = input('Enter some text ("quit" to stop)\n')
if userText.lower() != 'quit':
GetLanguage(userText)

except Exception as ex:
print(ex)

def GetLanguage(text):
try:
# Construct the JSON request body (a collection of documents, each with an ID and text)
jsonBody = {
"documents":[
{"id": 1,
"text": text}
]
}

# Let's take a look at the JSON we'll send to the service
print(json.dumps(jsonBody, indent=2))

# Make an HTTP request to the REST interface
uri = ai_endpoint.rstrip('/').replace('https://', '')
conn = http.client.HTTPSConnection(uri)

# Add the authentication key to the request header
headers = {
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': ai_key
}

# Use the Text Analytics language API
conn.request("POST", "/text/analytics/v3.1/languages?", str(jsonBody).encode('utf-8'), headers)

# Send the request
response = conn.getresponse()
data = response.read().decode("UTF-8")

# If the call was successful, get the response
if response.status == 200:

# Display the JSON response in full (just so we can see it)
results = json.loads(data)
print(json.dumps(results, indent=2))

# Extract the detected language name for each document
for document in results["documents"]:
print("\nLanguage:", document["detectedLanguage"]["name"])

else:
# Something went wrong, write the whole response
print(data)

conn.close()

except Exception as ex:
print(ex)

if __name__ == "__main__":
main()

检查代码,注意以下细节:

命名空间和导入:导入各种命名空间以启用 HTTP 通信。

主要函数:主要函数检索 Azure AI 服务资源的端点和密钥,用于向文本分析服务发送 REST 请求。

用户输入:该程序接受用户输入并使用该GetLanguage函数为您的端点调用文本分析语言检测 REST API。

JSON 请求:发送到 API 的请求由包含输入数据的 JSON 对象组成,其中包括文档对象的集合,每个对象都有一个 id 和文本。

身份验证:您的服务的密钥包含在请求标头中,用于验证您的客户端应用程序。

JSON 响应:来自服务的响应是客户端应用程序可以解析的 JSON 对象。

4. 运行客户端应用程序

右键单击rest-client文件夹,选择在集成终端中打开,然后运行适合您的语言的命令:

Python

C#

5.测试应用程序

出现提示时,输入一些文本来测试语言检测服务。例如,您可以尝试输入“Hello”、“Bonjour”或“Gracias”。检测到的语言将在 JSON 响应中返回。

6.停止程序

当您完成应用程序测试后,输入“quit”以停止该程序。

Azure AI 服务简化了向应用程序添加复杂 AI 功能的过程。

通过遵循本指南中概述的步骤,您可以快速配置 Azure AI 服务资源并开始利用人工智能的强大功能。

无论您构建的是需要语言理解、图像识别还是其他 AI 功能的应用程序,Azure AI 服务都可以提供创新和增强解决方案所需的工具。

文章转自微信公众号@PikeTalk

#你可能也喜欢这些API文章!