OpenAI 的强大 GPT 模型(包括 GPT-35-Turbo 和 GPT-4)现在可以通过 Azure OpenAI 服务 访问。

此服务使开发人员能够轻松将这些模型集成到应用程序中,用于聊天机器人、代码生成、内容创建等任务,同时受益于 Azure 强大的基础设施。

本指南将帮助您使用 Python 开始使用这些模型。

为什么选择 Azure OpenAI?

Azure OpenAI 服务通过提供以下功能将 OpenAI 模型的功能扩展到企业级别:

  • 企业级安全性:完全符合 ISO、SOC 等安全标准。

  • 可扩展性:利用 Azure 的全球数据中心提供可用性和性能。

  • 与 Azure 服务集成:无缝集成 Azure Functions、Logic Apps 和 Azure Machine Learning 等其他 Azure 服务。

价格表

https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/#pricing

先决条件

在实施之前,请确保您具备以下条件:

  • Azure 订阅:您可以在此免费创建一个

  • Python 3.8 或更高版本:确保您的机器上已安装 Python。

  • Azure OpenAI 资源:部署 GPT-35-Turbo 或 GPT-4 模型。请按照此指南设置资源。

  • Python 库:需要 OpenAI 库和 os 库来管理环境变量。

不同的集成方式

Azure OpenAI 服务支持不同的访问 GPT-35-Turbo 和 GPT-4 的方式:

  • REST API:通过 HTTP 请求与模型交互。

  • Python SDK:使用 openai 库在 Python 应用程序中集成模型。

  • Azure OpenAI Studio:一个用于测试、微调和管理模型的 Web 界面。

在本指南中,我们将重点介绍 Python SDK 方法,这是开发中最通用且最广泛使用的方法。

设置您的环境

1. 安装 OpenAI Python 客户端

第一步是安装 OpenAI Python 库,该库可让您与 GPT 模型进行交互:

pip install openai

该库由 OpenAI 维护并定期更新。您可以查看发布历史以保持最新的改进。

2. 获取 API 密钥和终端节点

要对 Azure OpenAI 进行身份验证请求,您需要两条重要信息:

  1. API 密钥:在 Azure OpenAI 资源设置中的“密钥和终端节点”下找到。

  2. 终端节点:同样可在“密钥和终端节点”部分找到。

将这些值安全地存储在环境变量中,以避免在代码中硬编码敏感数据。

设置环境变量

对于 Windows:

setx AZURE_OPENAI_API_KEY "YOUR_API_KEY"
setx AZURE_OPENAI_ENDPOINT "YOUR_ENDPOINT"

对于 Linux/Mac:

export AZURE_OPENAI_API_KEY="YOUR_API_KEY"
export AZURE_OPENAI_ENDPOINT="YOUR_ENDPOINT"

或者,为了在生产环境中更好地保护安全性,可以将您的凭据存储在 Azure Key Vault 中。

创建一个基础的 Python 应用程序

现在您的环境已经设置好,让我们创建一个基础的 Python 应用程序与 GPT-35-Turbo 模型进行交互。我们将使用 openai 库向模型发送查询并打印响应。

1. 创建应用程序文件

创建一个名为 quickstart.py 的文件,并将以下代码粘贴到其中:

import os
from openai import AzureOpenAI
# Initialize the client
client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
  api_key = os.getenv("AZURE_OPENAI_API_KEY"),
  api_version = "2024-02-01"  # Update this if necessary
)
# Define the prompt and conversation
response = client.chat.completions.create(
    model="gpt-35-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is Azure OpenAI?"}
    ]
)
# Print the assistant's response
print(response.choices[0].message.content)

2. 运行应用程序

要执行脚本,只需运行:

python quickstart.py

这将提示助手解释 Azure OpenAI 是什么,并在终端中打印响应。

理解代码结构

  • 系统角色:定义助手的行为(例如,乐于助人、正式等)。

  • 用户角色:向模型发送用户的查询。

  • 助手角色:助手对用户的输入作出回应。

这种格式使处理对话式交互成为可能,尤其适用于多轮对话(用户和助手之间多次问题和答案的交换)。

添加高级功能

1. 管理长对话

Azure OpenAI 模型每个请求都有令牌限制。对于 GPT-35-Turbo,令牌限制为 4096。每次发出新的 API 请求时,您需要发送整个对话历史记录,以保留上下文。如果您的对话超过了这个限制,模型将无法处理。

为了解决这个问题,您可以移除较旧的消息,以保持在令牌限制之内。

以下是实现方法的示例:

import os
from openai import AzureOpenAI
import tiktoken


# Initialize the client
client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
  api_key = os.getenv("AZURE_OPENAI_API_KEY"),
  api_version = "2024-02-01"
)
conversation = [{"role": "system", "content": "You are a helpful assistant."}]
max_tokens = 4096
def count_tokens(messages, model="gpt-35-turbo"):
    encoding = tiktoken.encoding_for_model(model)
    num_tokens = 0
    for message in messages:
        num_tokens += len(encoding.encode(message["content"]))
    return num_tokens
while True:
    user_input = input("You: ")
    conversation.append({"role": "user", "content": user_input})
    
    # Check if token limit is reached
    if count_tokens(conversation) >= max_tokens:
        del conversation[1]  # Remove the oldest message except the system message
    response = client.chat.completions.create(
        model="gpt-35-turbo",
        messages=conversation
    )
    
    conversation.append({"role": "assistant", "content": response.choices[0].message.content})
    print("Assistant:", response.choices[0].message.content)

这个脚本将通过删除较旧的消息来动态管理令牌数量,以保持在限制范围内。

2. 微调模型

微调允许您根据特定任务定制 GPT 模型。目前,Azure OpenAI 支持 GPT-4 和 GPT-35-Turbo 模型的微调。

微调模型的步骤如下:

  1. 准备一个 JSONL 格式的数据集,其中每个条目都是带有 promptcompletion 键的字典。

  2. 将数据集上传到 Azure Storage。

  3. 使用微调 API 在您的数据集上训练模型。

3. 为不同的用例定制系统角色

system 消息对于指导模型的行为非常强大。您可以定制助手以特定方式行事或提供安全防护。以下是一些示例:

示例 1:税务助手

{"role": "system", "content": "You are an expert tax advisor. Answer all questions related to taxes, but if you don't know the answer, recommend visiting the IRS website."}

示例 2:技术支持机器人

{"role": "system", "content": "You are a helpful support assistant. Your job is to answer questions related to Azure services and guide users through troubleshooting."}

示例 3:代码助手

{"role": "system", "content": "You are a coding assistant. Help users write and debug code snippets in Python and JavaScript."}

这种灵活性使您能够根据特定任务或领域调整助手的行为。

使用 Azure OpenAI REST API

除了 Python SDK 之外,Azure OpenAI 还提供 REST API 访问。以下是如何使用 curl 进行 API 调用的简要概述:

curl https://YOUR_ENDPOINT.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT/completions?api-version=2024-02-01 \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d '{
  "model": "gpt-35-turbo",
  "messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Tell me about Azure OpenAI."}]
}'

这将返回包含助手完成内容的 JSON 响应,类似于您从 Python SDK 获得的输出。

清理资源

实验结束后,请确保清理资源,以避免不必要的费用。您可以从 Azure 门户删除 Azure OpenAI 资源,也可以使用 Azure CLI 删除资源。

az resource delete --name YOUR_RESOURCE_NAME --resource-group YOUR_RESOURCE_GROUP

总结

Azure OpenAI 服务为将高级 GPT 模型(如 GPT-35-TurboGPT-4)集成到应用程序中提供了强大的方式。

无论您是构建智能聊天机器人、自动生成内容,还是提供个性化推荐,这些模型都可以帮助增强您的解决方案。

通过利用 Azure 的安全性和可扩展性,开发人员可以自信地在生产环境中部署 AI 驱动的功能。

通过本指南,您学习了如何设置 Azure OpenAI,使用 Python SDK,管理长对话,并探索微调等高级功能。

掌握这些知识后,您已经准备好开始构建强大的 AI 启用应用程序,充分利用 OpenAI 技术在 Azure 生态系统中的优势。祝您编码愉快!

10-07 07:25