file

上图是一个使用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协议是怎样的。

大纲如下:

file

您可以通过任何语言的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_reasonstop,这意味着API返回了模型生成的完整聊天补全,而没有遇到任何限制。

choices 列表中,我们只生成了一条消息,但您可以通过设置 n 参数来生成多条消息选项。

请求协议

下面归纳一下 这个接口的协议。

file

请求参数

file

响应信息

聊天补全对象
代表模型根据提供的输入返回的聊天补全响应

file

流式传输

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();

解析服务器发送的事件

解析服务器发送的事件并不简单,应该谨慎进行。简单的策略,如按换行符分割,可能会导致解析错误。

我们建议尽可能使用现有的客户端库。

效果就是结果是一条一条返回的,避免等待太久。

file

file

file

返回值格式

聊天补全块对象
代表模型根据提供的输入返回的聊天补全响应的流式传输块。

file

提示词典型应用场景

挨个熟悉提示词。 GPT给出了30个提示词的例子。

file

我举例拆解一下。

实际使用的是chat接口。

英语语法校正

file

辩论

file

file

面试问问题

file

file

小结

本文从一个故事出发,抛出问题,作为程序员如何系统的了解AI的能力并灵活的跟业务结合?

最后,系统的介绍了OpenAI的API图谱,和典型的提示词场景。 并作了一些实践。

在实际工作中确实也是这么做的,比如客服的AI质检, AI总结, AI知识库,AI文本聊天机器人 。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

李福春
119 声望11 粉丝

code for life .