首页 / 资料库 / 微软 · 生成式 AI 入门

资料库12 分钟读完MIT文本生成openaiAzure入门

构建文本生成应用(上):openai 库与第一个应用

译自《Building Text Generation Applications》 · 查看英文原文

原文出处Building Text Generation Applications 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。

构建文本生成应用(上):openai 库与第一个应用

走到这里,你已经见过提示词(prompt)这样的核心概念,甚至还有一门叫"提示工程"(prompt engineering)的学问。你用得到的很多工具,像 ChatGPT、Office 365、Microsoft Power Platform 等等,都支持靠提示词来完成事情。

要给应用加上这样的体验,你得理解提示词、补全(completion)这些概念,再选定一个库来干活。这一课讲的就是这些。

引言

在这节课里,你会:

  • 认识 openai 库和它的核心概念。
  • 用 openai 做一个文本生成应用。
  • 理解怎么靠提示词、温度(temperature)、令牌(token)这些概念搭起一个文本生成应用。

学习目标

学完这节课,你将能够:

  • 说清楚什么是文本生成应用。
  • 用 openai 构建一个文本生成应用。
  • 配置应用多用或少用令牌,还能调整温度,让输出更多样。

什么是文本生成应用?

平时做一个应用,总得有一种界面,常见的像下面这样:

  • 命令行式。控制台应用就是那种你输入一条命令、它去执行任务的应用,比如 git
  • 用户界面(UI)。有些应用带图形用户界面(GUI),你点按钮、输文字、选选项。

控制台和界面应用有天花板

对比一下在命令式应用里输入命令这件事:

  • 受限。不能想输什么命令就输什么,只有应用支持的命令才算数。
  • 绑定语言。有些应用支持多种语言,但默认情况下应用是为某一种语言构建的,哪怕事后能再补语言支持。

文本生成应用的好处

那文本生成应用有什么不同?

在文本生成应用里,你的自由度高得多:不被一组命令或某种输入语言框住,可以直接用自然语言和应用对话。还有一个好处:你打交道的数据源是在海量语料上训练出来的,而传统应用往往被数据库里已有的内容框住。

文本生成应用能做点什么?

能做的东西很多。比如:

  • 聊天机器人。回答某个主题的问题,比如你们公司和自家产品的问题,就很合适。
  • 小帮手。大语言模型(LLM,Large Language Model)擅长总结文本、从文本里提炼看法、生成简历这类的文字。
  • 代码助手。取决于你用的语言模型,可以做一个帮你写代码的助手。比如用 GitHub Copilot 这样的产品,再配上 ChatGPT 来帮你写代码。

怎么开始?

你得找到接入大语言模型的办法,通常是两条路:

  • 用 API。你自己构造网络请求,把提示词发过去,拿回生成的文本。
  • 用库。库把 API 调用封装起来,用起来更省事。

库 / SDK

接入大语言模型的常见库有这么几个:

  • openai。这个库连模型、发提示词都很方便。

还有工作在更高层的库:

  • Langchain。名气很大,支持 Python。
  • Semantic Kernel。微软出的库,支持 C#、Python 和 Java。

用 openai 搭第一个应用

来看看第一个应用怎么搭:要哪些库、要装多少东西。

安装 openai

和 OpenAI 或 Azure OpenAI 交互的库市面上很多,编程语言也能选 C#、Python、JavaScript、Java 等等。我们选用 openai 这个 Python 库,用 pip 来装:

bash pip install openai

创建资源

你需要完成下面几步:

[!NOTE] 写这节课的时候,Azure OpenAI 需要先申请才能获得访问权限。

找到 API 密钥和端点

到这一步,你要告诉 openai 库该用哪个 API 密钥(API key)。找密钥的办法:进入你的 Azure OpenAI 资源的 "Keys and Endpoint"(密钥与端点)一节,复制 "Key 1" 的值。

这些信息抄好之后,接着让库去用它。

[!NOTE] API 密钥和你的代码最好分开存放。可以用环境变量来做这件事。

  • 把环境变量 OPENAI_API_KEY 设成你的密钥: export OPENAI_API_KEY='sk-...'

配置 Azure

如果你用的是 Azure OpenAI(现在归入 Microsoft Foundry),配置方法如下。我们把标准的 OpenAI 客户端指向 Azure OpenAI 的 /openai/v1/ 端点(endpoint),它兼容 Responses API,也不需要 api_version

```python import os from openai import OpenAI

client = OpenAI( api_key=os.environ["AZURE_OPENAI_API_KEY"], base_url=f"{os.environ['AZURE_OPENAI_ENDPOINT'].rstrip('/')}/openai/v1/", ) ```

上面设置了这两样:

  • api_key,你在 Azure 门户或 Microsoft Foundry 门户里找到的密钥。
  • base_url,你的 Foundry 资源端点后面加上 /openai/v1/。这个稳定的 v1 端点在 OpenAI 和 Azure OpenAI 上都通用,不用管理 api_version

[!NOTE] os.environ 用来读取环境变量,比如 AZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINT。这些变量可以在终端里设置,或者用 dotenv 这类库来加载。

生成文本

生成文本要用 Responses API 的 responses.create 方法。举个例子:

```python prompt = "Complete the following: Once upon a time there was a"

response = client.responses.create( model="gpt-5-mini", # 这里是你的模型部署名称 input=prompt, store=False, ) print(response.output_text) ```

上面的代码创建了一次响应,传入要用的模型和提示词,然后用 response.output_text 把生成的文本打印出来。

多轮对话

Responses API 单轮文本生成和多轮聊天机器人都合适。往 input 里传一个消息列表,就能把对话一轮轮接下去:

```python from openai import OpenAI

client = OpenAI(api_key="sk-...")

response = client.responses.create(model="gpt-5-mini", input="Hello world", store=False) print(response.output_text) ```

这块功能在后面的章节还会细讲。

练习:你的第一个文本生成应用

openai 的安装和配置学完了,该动手搭第一个文本生成应用。按下面步骤来:

  1. 建一个虚拟环境,装上 openai:

bash python -m venv venv source venv/bin/activate pip install openai

[!NOTE] Windows 下把 source venv/bin/activate 换成 venv\Scripts\activate

[!NOTE] Azure OpenAI 密钥的找法:打开 https://portal.azure.com/,搜索 Open AI,选中 Open AI resource(OpenAI 资源),再进 Keys and Endpoint,复制 Key 1 的值。

  1. 新建一个 app.py 文件,写入下面的代码:

```python import os from openai import OpenAI

client = OpenAI( api_key="", base_url="/openai/v1/", ) deployment_name = ""

# 在这里加上你的文本生成代码 prompt = "Complete the following: Once upon a time there was a"

# 用 Responses API 发起请求 response = client.responses.create(model=deployment_name, input=prompt, store=False)

# 打印响应 print(response.output_text) ```

[!NOTE] 如果你用的是 OpenAI 本体(不是 Azure),客户端写成 client = OpenAI(api_key="<replace this value with your OpenAI key>")(不带 base_url),并且传入 gpt-5-mini 这样的模型名,而不是部署名。

你应该能看到类似这样的输出(模型输出为英文,原样保留):

```output very unhappy _____.

Once upon a time there was a very unhappy mermaid. ```

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课