从零到AI高手:用OpenAI API极速打造智能应用!

像我之前也提到过,AI 的发展愈发迅猛这是无可置疑的,但很多人知道 AI 好,却不会引进实际的业务中去。无论是市面上常见的文本生成工具,还是智能 Copilot,这些应用都展示了 AI 的强大能力。面对这些新技术,许多设计师可能会好奇:如何才能将这些能力运用到自己的项目中?其实你能用且会用 AI 工具做端外提效已经超过 80%的人了,但如何将能力接入端内?实实在在的给项目提效,而非个人。有些底层逻辑你还是要懂的。

OpenAI 的 GPT 模型是当前自然语言处理领域的核心技术之一。它不仅功能强大,而且极具灵活性,能够应对多种复杂的任务。然而,对于许多设计师来说,如何实际操作这些模型,尤其是如何利用 OpenAI 提供的 API,仍然是一个挑战。本文将详细介绍 OpenAI API 的工作原理,带你一步步了解 GPT 模型的核心概念,并让你感知到如何将这些技术应用到实际项目的底层逻辑。

这篇文章主要是技术分享,由于我是设计师出身,有些地方可能总结得不够全面,还请专业人士多多指教!

一、GPT 模型与关键概念

1. GPT 模型概述

在进入实际应用讲解之前,我们首先需要理解 GPT 模型的核心原理。GPT 是生成式预训练 Transformer(Generative Pre-trained Transformer)的缩写。这种模型经过大量的文本数据训练,能够理解和生成自然语言文本。与这些模型的交互方式通常是通过提供一个“提示”,即一段输入文本,模型会根据提示生成一个连贯的响应。正是这种能力使得 GPT 模型能够用于从内容生成到创意写作等各种任务。

GPT 模型的设计理念源自 Transformer 架构,这是一种神经网络模型,特别擅长处理序列数据。与传统的循环神经网络(RNN)不同,Transformer 依赖于自注意力机制,能够并行处理整个文本序列。这使得它在处理长文本时效率更高,并且能够捕捉更复杂的语言结构和语义关系。

这些特性使得 GPT 模型在自然语言处理 (NLP) 领域中大放异彩。无论是编写代码、撰写文章、生成对话,还是执行其他复杂的语言任务,GPT 都展示出了卓越的性能。

2. 嵌入与代币

在 NLP 领域,嵌入 (Embeddings) 和代币 (Tokens) 是两个非常重要的概念。理解这两个概念有助于我们更好地掌握 GPT 模型的工作原理。

嵌入是指将文本数据转化为向量表示的过程。这些向量保留了文本的语义信息,使得机器能够理解文本的含义。OpenAI 提供的文本嵌入模型能够将文本字符串转换为嵌入向量,这些向量可用于各种任务,如搜索、聚类和推荐。在实际应用中,嵌入的质量直接影响到模型的表现,因为它决定了模型对文本语义的理解程度。

代币是文本的基本构建块。代币化是将文本分割成一个个最小语义单元的过程。例如,“Hello, world!” 这个短语,有点代码基础的应该都不陌生吧,哈哈哈! 那这个短语可能就会被分割成四个代币:“Hello”、“,”、“world“、”!”。在 GPT 模型中,代币化的结果会影响到模型的输入和输出。特别需要注意的是,每次 API 调用时,输入和输出的总代币数不能超过模型的最大上下文长度。因此,理解代币的工作原理对于有效利用 GPT 模型至关重要。

可以在 这里 测试一下:

从零到AI高手:用OpenAI API极速打造智能应用!

官网上的 tokenizer 测试

GPT 模型使用的代币化过程基于字节对编码 (Byte Pair Encoding, BPE)。这种方法通过不断合并频繁出现的字符对,最终生成固定大小的词汇表,从而实现代币化。由于 BPE 的特性,一个词可能被分割成多个代币,尤其是对于较长或复杂的单词。例如,“tokenization” 可能会被分割成 “token”、“ization” 两个代币。这种分割方式在实际使用中对模型性能有重要影响,特别是在处理多语言文本或专有名词时。

不同的模型 API 调用的价格不一样,这个可以去官网上了解不同模型的定价,我这里就先放一张截图:

从零到AI高手:用OpenAI API极速打造智能应用!

GPT-4O 不同版本的 API 调用价格

2. OpenAI API 的工作原理

① API 基础

API(应用程序编程接口)是一组允许程序相互通信的规则。简单来说,API 是开发者与服务之间的桥梁。通过 API,开发者可以访问特定的功能或数据,而不需要了解背后的复杂实现细节。

OpenAI 的 API 使开发者能够访问其强大的 GPT 模型。这意味着你可以通过简单的 HTTP 请求与模型进行交互,发送输入文本并接收模型生成的输出文本。这种方式使得复杂的自然语言处理任务变得更加容易实现。

例如,要与 OpenAI 的 GPT 模型进行交互,你只需发送一个 HTTP POST 请求,其中包含你想要提供的提示文本和 API 密钥。然后,API 会处理你的请求,并返回一个响应,其中包含模型生成的文本。这种简单而强大的机制使得 GPT 模型能够轻松集成到各种应用程序中,从聊天机器人到内容生成器,无所不包。

② 模型选择与代币管理

当使用 OpenAI API 时,你会发现可以选择不同的模型。这些模型各有优劣,适用于不同的任务。当前的最新模型包括 GPT-3.5 和 GPT-4。这些模型在处理自然语言任务时展示了卓越的性能,但它们之间仍然存在一些差异。例如,GPT-4 在理解复杂上下文和生成更连贯的长文本方面表现得更为出色,而 GPT-3.5 则更适合处理较简单的任务。

在选择模型时,还需要考虑代币管理。每个模型都有其最大上下文长度,这决定了它可以处理的最大代币数。为了确保 API 调用的有效性,必须控制提示和响应的总代币数不超过这个限制。理解并有效管理代币使用,对于优化模型性能、减少成本至关重要。

在实际操作中,代币管理可以通过以下几种方式实现:

  1. 简化提示:确保提示的简洁性和直接性,避免不必要的冗长描述。
  2. 控制输出:通过调整模型的参数(如温度、max_tokens)来限制输出的长度和随机性。
  3. 分割长文本:对于超长文本,可以将其分割成多个段落,并分别处理这些段落,从而避免超过模型的上下文长度限制。

3. 实际操作:与 OpenAI API 交互

① 安装与验证

要开始使用 OpenAI API,你首先需要安装必要的工具和进行验证。以下是使用 Python 与 OpenAI API 交互的基本步骤。

安装 OpenAI Python 库:

pip install openai

安装完成后,你需要获取一个 OpenAI API 密钥。这个密钥用于验证你的请求并确保安全性。在发送 API 请求时,需要在 HTTP 标头中包含此密钥。

示例代码:

import openai

# 设置 API 密钥
openai.api_key = 'your-api-key'

# 定义请求
response = openai.Completion.create(
model="gpt-4",
prompt="告诉我一些关于机器学习的有趣事实。",
max_tokens=150
)

# 打印响应
print(response['choices'][0]['text'].strip())

在上面的代码中,我们使用了 openai.Completion.create 方法来发送一个请求。我们提供了模型名称、提示文本以及生成文本的最大长度(max_tokens)。最终的响应会返回一个包含生成文本的字典对象,你可以从中提取并显示文本内容。

② 发出请求与解析响应

使用 OpenAI API 发出请求后,API 会返回一个响应,这个响应通常是 JSON 格式的。了解如何解析这个响应,对于进一步处理生成的文本至关重要。

响应结构:

一个典型的 API 响应可能包含以下几个关键部分:

  1. id: 响应的唯一标识符。
  2. object: 表示响应类型,例如 "text_completion"。
  3. created: 响应生成的时间戳。
  4. model: 使用的模型名称。
  5. choices: 生成的文本选择列表,通常我们只会使用第一个选择。
  6. usage: 显示生成该响应所使用的代币数量。

示例响应:

{
"id": "cmpl-5uXf8u9GZFmVgtHKg3JpJ7nE5X",
"object": "text_completion",
"created": 1690446648,
"model": "gpt-4",
"choices": [
{
"text": "\n\n 机器学习是人工智能的一个分支,致力于开发可以从数据中学习的算法。",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 35,
"total_tokens": 50
}
}

在这个响应中,最重要的部分是 choices,它包含了模型生成的文本。你可以通过 choices[0]['text'] 来获取这个文本并进行进一步处理。

③ 提示工程:制作有效提示

  1. 提示工程是使用 GPT 模型生成高质量响应的关键技术。有效的提示不仅能够引导模型生成理想的结果,还能提高模型的响应效率。
  2. 提示的设计可以分为以下几种策略:
  3. 明确指令:清晰简洁的提示可以有效减少模型生成错误信息的可能性。例如,与其简单地问“谁是世界上最好的足球运动员?”,不如直接说明背景:“在 2022 年的世界杯上,谁表现最为突出?”
  4. 分步提示:对于复杂任务,可以将提示分解为多个步骤。例如,如果你想生成一篇关于机器学习的简短文章,你可以先要求模型提供一个概述,然后分别生成每个章节的内容。
  5. 使用上下文:在对话生成中,提供上下文信息可以帮助模型生成更连贯的响应。例如,通过添加一条系统消息“你是一名体育记者”,可以让模型更好地理解接下来的问题。
  6. 控制输出格式:在某些情况下,你可能需要模型生成特定格式的输出。例如,你可以要求模型以 JSON 格式返回信息,或者以列表形式展示数据。

示例代码:

response = openai.Completion.create(
model="gpt-4",
prompt="请用三点总结人工智能的未来发展趋势:",
max_tokens=50,
temperature=0.5
)

print(response['choices'][0]['text'].strip())

在这个例子中,我们通过设置 temperature 参数控制模型输出的随机性,同时通过 max_tokens 限制输出长度,确保响应集中在我们需要的内容上。

4. 实战示例:创建定制化 AI 代理

① 从简单到复杂的 AI 代理

创建一个 AI 代理的过程可以从一个简单的聊天机器人开始,然后逐步扩展其功能。以下是一个使用 OpenAI API 构建简单 AI 代理的示例:

第一步:初始化代理

首先,我们定义一个函数来初始化代理并设置基本的对话上下文。

import openai

openai.api_key = 'your-api-key'

def initialize_agent():
return [{"role": "system", "content": "你是一位友好的 AI 助手,随时准备帮助用户。"}]

conversation_history = initialize_agent()

第二步:发送用户消息并获取响应

我们定义一个函数,用于发送用户消息并将其添加到对话历史中。

def send_message(conversation_history, user_message):
conversation_history.append({"role": "user", "content": user_message})

response = openai.ChatCompletion.create(
model="gpt-4",
messages=conversation_history
)

assistant_message = response['choices'][0]['message']['content']
conversation_history.append({"role": "assistant", "content": assistant_message})

return assistant_message

user_input = "告诉我今天的新闻热点是什么?"
response = send_message(conversation_history, user_input)
print(response)

第三步:扩展代理功能

随着代理的基础功能建立起来,你可以添加更多的功能,例如将代理与外部 API 集成,实现动态数据检索。下面是一个示例,展示如何将代理与天气 API 集成。

import requests

def get_weather(location):
api_key = "your-weather-api-key"
url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={location}&aqi=no"
response = requests.get(url)
weather_data = response.json()
return f"{location} 的天气是

 {weather_data['current']['condition']['text']},温度为 {weather_data['current']['temp_c']}°C。"

def send_message_with_weather(conversation_history, user_message):
if "天气" in user_message:
location = user_message.split("天气")[1].strip()
weather_info = get_weather(location)
assistant_message = f"以下是你请求的天气信息:\n{weather_info}"
conversation_history.append({"role": "assistant", "content": assistant_message})
else:
assistant_message = send_message(conversation_history, user_message)

return assistant_message

user_input = "告诉我北京的天气"
response = send_message_with_weather(conversation_history, user_input)
print(response)

在这个示例中,我们通过识别用户输入中的关键词“天气”,调用外部 API 获取实时数据并将其整合到代理的响应中。

② 使用工具和高级功能

OpenAI API 提供了一些高级工具,可以进一步增强 AI 代理的功能。例如,代码解释器和文件检索工具。

使用代码解释器

代码解释器允许代理直接运行 Python 代码并返回结果。这对于自动化任务和数据分析非常有用。

import openai

def run_code(code):
response = openai.Completion.create(
model="gpt-4",
prompt=f"执行以下 Python 代码:\n```python\n{code}\n```",
max_tokens=150,
temperature=0
)
return response['choices'][0]['text'].strip()

code_to_run = """
import math
result = math.sqrt(25)
result
"""
output = run_code(code_to_run)
print(f"代码执行结果: {output}")

使用文件检索

文件检索工具允许代理在给定的文档中搜索信息。这在处理大量数据或长文档时非常有用。

def upload_and_search_file(file_path, query):
file = openai.File.create(
file=open(file_path),
purpose='search'
)
response = openai.Completion.create(
model="gpt-4",
prompt=f"在上传的文件中找到与 '{query}' 相关的信息。",
file_ids=[file['id']],
max_tokens=150
)
return response['choices'][0]['text'].strip()

file_path = "path_to_your_file.pdf"
query = "人工智能的发展历程"
result = upload_and_search_file(file_path, query)
print(result)

结论

通过本文的介绍,我们从基础到进阶,详细探讨了如何使用 OpenAI API 构建和定制基于 GPT 模型的应用。从理解 GPT 模型的核心概念,到实际操作中的安装、验证、提示工程,再到创建功能齐全的 AI 代理,本文为你提供了全面的指导。

随着技术的发展,GPT 模型的应用场景也在不断扩展。未来,AI 的能力将更加广泛,应用也会更加深入。作为开发者,可以利用这些工具创造出更强大、更个性化的应用,满足各种需求。作为设计师,我们要了解底层逻辑,并掌握一定的代码基础,才能更好的配合技术侧推进项目建设。

无论你是设计师,还是开发者,掌握和学习 OpenAI API 并将其应用到实际项目中,都是我认为现阶段的玩法必备。希望本文能为你提供启发,激发你在 AI 开发领域的更多创意。继续探索、不断创新,你将发现人工智能的无限可能!

收藏 11
点赞 40

复制本文链接 文章为作者独立观点不代表优设网立场,未经允许不得转载。