Azure Machine Learning - 使用 Azure OpenAI 服务生成文本

使用 Azure OpenAI 服务生成文本
关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

环境准备

  • Azure 订阅 - 免费创建订阅

  • 已在所需的 Azure 订阅中授予对 Azure OpenAI 的访问权限

    目前,仅应用程序授予对此服务的访问权限。 可以通过在 https://aka.ms/oai/access 上填写表单来申请对 Azure OpenAI 的访问权限。

  • Python 3.7.1 或更高版本

  • 以下 Python 库:os、requests、json

  • 已部署 gpt-35-turbo-instruct 模型的 Azure OpenAI 服务资源。

设置

使用以下项安装 OpenAI Python 客户端库:

  • OpenAI Python 0.28.1

  • OpenAI Python 1.x

    pip install openai==0.28.1

    pip install openai

检索密钥和终结点

若要成功对 Azure OpenAI 服务发出调用,需要准备好以下各项:

变量名称
ENDPOINT 从 Azure 门户检查资源时,可在"密钥和终结点"部分中找到此值。 也可在"Azure OpenAI Studio">"操场">"代码视图"中找到该值。 示例终结点为:https://docs-test-001.openai.azure.com/
API-KEY 从 Azure 门户检查资源时,可在"密钥和终结点"部分中找到此值。 可以使用 KEY1KEY2
DEPLOYMENT-NAME 此值将对应于在部署模型时为部署选择的自定义名称。 此值可在 Azure 门户中的"资源管理">"部署"下,或者在 Azure OpenAI Studio 中的"管理">"部署"下找到此值。

在 Azure 门户中转到你的资源。 可以在"资源管理"部分找到"终结点和密钥"。 复制终结点和访问密钥,因为在对 API 调用进行身份验证时需要这两项。 可以使用 KEY1KEY2。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。

为密钥和终结点创建和分配持久环境变量。

环境变量

为密钥和终结点创建和分配持久环境变量。

  • 命令行

  • PowerShell

  • Bash

    setx AZURE_OPENAI_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"

    setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

    [System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_KEY', 'REPLACE_WITH_YOUR_KEY_VALUE_HERE', 'User')

    [System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_ENDPOINT', 'REPLACE_WITH_YOUR_ENDPOINT_HERE', 'User')

    echo export AZURE_OPENAI_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE" >> /etc/environment && source /etc/environment

    echo export AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE" >> /etc/environment && source /etc/environment

创建新的 Python 应用程序

  1. 创建名为 quickstart.py 的新 Python 文件。 然后在你偏好的编辑器或 IDE 中打开该文件。

  2. quickstart.py 的内容替换为以下代码。 修改代码以添加密钥、终结点和部署名称:

  • OpenAI Python 0.28.1

  • OpenAI Python 1.x

    import os
    import openai

    openai.api_key = os.getenv("AZURE_OPENAI_KEY")
    openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT") # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
    openai.api_type = 'azure'
    openai.api_version = '2023-05-15' # this might change in the future

    deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME' #This will correspond to the custom name you chose for your deployment when you deployed a model.

    Send a completion call to generate an answer

    print('Sending a test completion job')
    start_phrase = 'Write a tagline for an ice cream shop. '
    response = openai.Completion.create(engine=deployment_name, prompt=start_phrase, max_tokens=10)
    text = response['choices'][0]['text'].replace('\n', '').replace(' .', '.').strip()
    print(start_phrase+text)

    import os
    from openai import AzureOpenAI

    client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_KEY"),
    api_version="2023-10-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

    deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME' #This will correspond to the custom name you chose for your deployment when you deployed a model.

    Send a completion call to generate an answer

    print('Sending a test completion job')
    start_phrase = 'Write a tagline for an ice cream shop. '
    response = client.completions.create(model=deployment_name, prompt=start_phrase, max_tokens=10)
    print(response.choices[0].text)

  1. 使用快速入门文件中的 python 命令运行应用程序:

    复制代码
    python quickstart.py

输出

输出将包含 Write a tagline for an ice cream shop. 提示后的响应文本。 在此示例中,Azure OpenAI 返回了 The coldest ice cream in town!

复制代码
Sending a test completion job
Write a tagline for an ice cream shop. The coldest ice cream in town!

再运行代码几次,以查看会得到其他哪些类型的响应,因为响应并不始终相同。

理解结果

由于我们的 Write a tagline for an ice cream shop. 示例提供的上下文有限,因此模型通常不会始终返回预期结果。 如果响应似乎是意外响应或被截断,可以调整最大令牌数。

Azure OpenAI 还会对提示输入和生成的输出执行内容审核。 检测到有害内容时,可能会筛选提示或响应。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

相关推荐
特立独行的猫a21 分钟前
AI 智能硬件:下一个风口的底层逻辑与产品机会
人工智能·ai·智能硬件·趋势·风口·机会
tedcloud12322 分钟前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
世优科技虚拟人26 分钟前
AI数字人企业升级全息舱交互,数字人全息仓让展厅展馆更智慧
人工智能·ai数字人·全息舱数字人·全息数字人
webor200628 分钟前
<七>从3秒记忆到过目不忘——语言模型的三代进化
人工智能·语言模型·自然语言处理
TechEdu20260629 分钟前
[人工智能]SciPy在工程计算中的作用与实践
人工智能·ai·scipy
七牛云行业应用30 分钟前
DeepSeek Harness vs Codex vs Claude Code:三款 AI 编程 Harness 深度对比
人工智能·agent·ai编程
无凭34 分钟前
拆解 DeerFlow Memory:Agent 的长期记忆到底怎么做?
人工智能·设计模式
格尔曼Noah1 小时前
文本转音频技术选型指南:2026年主流TTS与端到端语音大模型深度对比
人工智能·语音识别
瀚高PG实验室1 小时前
SQL优化案例:使用分区表优化SQL查询性能
linux·服务器·数据库·sql·microsoft·postgresql
hans汉斯1 小时前
采煤工作面隐患目标检测中YOLO11与Faster R-CNN的对比研究
人工智能·目标检测·计算机视觉·cnn·信息与通信·信号处理