上图是一个使用AI生成的图片, 描述一下这篇文章的背景。
程序员系统学习了OpenAI提供的api接口,并熟练利用提示词结合业务解决业务问题。
现状
讲一个故事来开始今天的内容。
架构师老李在技术圈里以其卓越的技术洞察力而著称。另一边,Carter,一个年轻有为的30岁创业公司老板,正面临一个急需解决的难题。
他的公司主打全球客服平台,专为小颗粒用户提供高度个性化的服务体验,同时也为中大型客户提供了AI赋能的人工客服解决方案。
随着业务的蓬勃发展,小颗粒用户群体对AI的期待日益增长,他们希望得到即刻而准确的反馈。中大型企业的客服团队也迫切需要AI的支持,
以提高服务效率和顾客满意度。Carter清楚地意识到,如果不能迅速提升技术实力,他的公司可能会失去在这场全球化竞争中的优势。
正当Carter焦虑不已时,老李出现了。两人的一次偶然会面,让老李了解到了Carter的燃眉之急。老李建议Carter采用OpenAI 提供的API,
这是一个他个人深入研究并且对其潜力深信不疑的解决方案。他向Carter解释了如何利用这些API和提示词来提升客服平台的智能水平,不仅能够理解客户的复杂需求,还能提供实时、高质量的解答。
Carter被老李的见解所说服,并决定投资于OpenAI的技术。他组织了一支专业团队,在老李的指导下,成员们开始系统地学习OpenAI的API,
并根据公司的业务需求和客户的特定场景来定制化提示词。经过数月的努力,团队开发出了一个先进的AI客服系统,能够针对不同规模的客户提供优化服务。
新系统的上线立即产生了影响。小颗粒用户享受到了前所未有的快速而精确的服务体验,中大型企业的客服效率也得到了显著提升。
Carter的公司迅速在全球客服领域赢得了声誉,其市场份额稳步增长。
通过Carter和老李的合作,公司不仅保持了在行业中的竞争力,还树立了利用AI技术持续创新的典范。
问题
你知道基于AI有哪些典型的应用吗?如何把AI跟业务结合。
大部分的企业其实只用到了提示词,即可把自己的业务跟AI结合起来。
那么,AI有哪些典型的应用提示词呢?
实现路径
作为程序员,你必须首先知道AI能干什么?再结合业务想想自己可以干什么?
即你首先需要了解AI提供了哪些API的能力,有哪些典型应用场景。
最后结合所在公司的业务场景,灵活的使用AI的能力跟业务结合。
接口协议
在使用提示词之前,我们先熟悉一下AI提供的接口的http协议是怎样的。
大纲如下:
您可以通过任何语言的HTTP请求与API进行交互,也可以通过我们的官方Python绑定库、官方Node.js库或社区维护的库来实现。
要安装官方Python绑定库,请运行以下命令:
pip install openai
要安装官方Node.js库,请在您的Node.js项目目录中运行以下命令:
npm install openai@^4.0.0
这些命令将分别在Python和Node.js环境中安装OpenAI提供的官方库,使得开发者可以在他们选择的编程环境中方便地调用API。
我比较熟悉java语言,那么java语言的库是什么呢?
openai-java 或者使用azure的openapi库java版本来进行编程,它也支持访问openAI的接口。
认证
OpenAI API 使用 API 密钥进行认证。请访问您的 API 密钥页面以获取您将在请求中使用的 API 密钥。
请记住,您的 API 密钥是一个秘密!不要与他人分享,也不要在任何客户端代码中(浏览器、应用程序)暴露它。生产环境中的请求必须通过您自己的后端服务器路由,在此服务器中您的 API 密钥可以安全地从环境变量或密钥管理服务中加载。
所有 API 请求都应将您的 API 密钥包含在 Authorization HTTP 头中,如下所示:
Authorization: Bearer OPENAI_API_KEY
这是标准的Bearer令牌认证方式,其中OPENAI_API_KEY
是您的实际API密钥。在发送HTTP请求时,您需要在请求头中加入这个字段,以便API服务能够验证并授权您的请求。
组织
对于属于多个组织的用户,您可以通过传递一个头部(header)来指定哪个组织用于API请求。这些API请求的使用量将计入指定组织的使用量。
示例的curl命令如下:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Organization: org-uNvcRCbJ1LJApJrL0vMOj6Wa"
使用OpenAI Python包的示例:
from openai import OpenAI
client = OpenAI(
organization='org-uNvcRCbJ1LJApJrL0vMOj6Wa',
)
使用OpenAI Node.js包的示例:
import OpenAI from "openai";
const openai = new OpenAI({
organization: 'org-uNvcRCbJ1LJApJrL0vMOj6Wa',
});
组织ID可以在您的组织设置页面上找到。
发起请求时,您可以按照上述示例中的代码,通过指定组织ID来确保API请求计入相应组织的使用量。这在管理多个组织的资源和使用情况时非常有用。
发送请求
您可以将以下命令粘贴到终端中,以运行您的第一个API请求。请确保将 $OPENAI_API_KEY
替换为您的秘密API密钥。
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"temperature": 0.7
}'
这个请求查询 gpt-3.5-turbo
模型(在内部指向 gpt-3.5-turbo
模型的变体),以完成以提示 "Say this is a test" 开始的文本。您应该得到一个类似于以下的响应:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1677858242,
"model": "gpt-3.5-turbo-0613",
"usage": {
"prompt_tokens": 13,
"completion_tokens": 7,
"total_tokens": 20
},
"choices": [
{
"message": {
"role": "assistant",
"content": "\n\nThis is a test!"
},
"logprobs": null,
"finish_reason": "stop",
"index": 0
}
]
}
现在您已经生成了第一个聊天补全,让我们来解析这个响应对象。我们可以看到 finish_reason
是 stop
,这意味着API返回了模型生成的完整聊天补全,而没有遇到任何限制。
在 choices
列表中,我们只生成了一条消息,但您可以通过设置 n
参数来生成多条消息选项。
请求协议
下面归纳一下 这个接口的协议。
请求参数
响应信息
聊天补全对象
代表模型根据提供的输入返回的聊天补全响应
流式传输
OpenAI API提供了将响应流式传输回客户端的能力,以便对某些请求提供部分结果。为了实现这一点,我们遵循了服务器发送事件(Server-sent events)标准。我们的官方Node.js和Python库包含了辅助工具,以简化解析这些事件的过程。
流式传输功能支持Chat Completions API和Assistants API。本节重点介绍如何在Chat Completions中使用流式传输。有关在Assistants API中如何使用流式传输的更多信息,请访问此处。
在Python中,一个流式传输请求看起来像这样:
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Say this is a test"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
在Node.js/TypeScript中,一个流式传输请求看起来像这样:
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.chat.completions.create({
model: "gpt-4",
messages: [{ role: "user", content: "Say this is a test" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
}
main();
解析服务器发送的事件
解析服务器发送的事件并不简单,应该谨慎进行。简单的策略,如按换行符分割,可能会导致解析错误。
我们建议尽可能使用现有的客户端库。
效果就是结果是一条一条返回的,避免等待太久。
返回值格式
聊天补全块对象
代表模型根据提供的输入返回的聊天补全响应的流式传输块。
提示词典型应用场景
挨个熟悉提示词。 GPT给出了30个提示词的例子。
我举例拆解一下。
实际使用的是chat接口。
英语语法校正
辩论
面试问问题
小结
本文从一个故事出发,抛出问题,作为程序员如何系统的了解AI的能力并灵活的跟业务结合?
最后,系统的介绍了OpenAI的API图谱,和典型的提示词场景。 并作了一些实践。
在实际工作中确实也是这么做的,比如客服的AI质检, AI总结, AI知识库,AI文本聊天机器人 。
原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。