从零学习Prompt 设计模式:构建高效 AI 应用的基石

855 阅读3分钟

前言

在之前我们几次讲过如何利用调用openai接口来实现AI编程,今天我们将基础的学习吴恩达课程中的prompt设计模式,具体想了解的小伙伴可以移步吴恩达Prompt Engineering,了解了prompt设计模式,学会运用它们的模板,便可以在以后构建AI应用。

什么是 Prompt 设计模式?

Prompt 是用户与 AI 模型之间的交互界面,它定义了用户输入的内容以及模型应该如何理解和响应这些输入。Prompt 设计模式 是指通过精心设计和优化 Prompt,使 AI 模型能够更准确、更有效地生成符合预期的结果。一个好的 Prompt 不仅能提高模型的性能,还能显著提升用户体验。

prompt设计

首先还是在根目录下初始化一个后端项目

npm init -y

接下来我们将项目的依赖包openai和dotenv添加到package.json文件中

npm i openai
npm i dotenv

opneai是我们将要调用的大模型,而dotenv是一个很重要的依赖包。它是用于管理环境变量,比方说我们的apikey或者baseURL等隐私的东西,它不能在代码中明文出现,引入了dotenv库后,你可以在根目录下创建一个.env文件,将你需要的东西存放进去,最后在入口文件中通过dotenv.config()引入,它会找到.env文件中的配置信息,添加到process.env对象上,我们再通过此对象就能进行访问。

在提交到远程仓库时,我们可以将.env文件写入到.gitignore的顶部,这样在你进行代码提交时它便不会将.env文件上传,可以通过ctrl+f进行查找看看是否成功。

image.png

上面是引入项目依赖最简单基础的方法,如果你要重 复调用创建这些依赖包未免繁琐,所以我们就可以将dependencies:{包名+版本(项目依赖的描述)} 部份直接拷贝到package.json中,再通过,npm i,就能同时全部完成安装,更加方便。

image.png

首先我们在顶部引入包

import OpenAI from "openai";
import dotenv from "dotenv";

然后将读取env中的配置信息传给process.env对象,在这里可以打印它来看看有没有传递成功

dotenv.config();
console.log(process.env);//打印看看是否传入
const client = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
    baseURL: process.env.OPENAI_BASE_URL
});

接下来我们创建一个用于聊天的接口函数模板,这样可以实现复用

//在es6中可设置参数的默认值
const getCompletion = async(prompt,model="gpt-3.5-turbo") => {
    // 用户提的问题
    const messages = [{
        role: "user",
        content: prompt
    }]
    // AIGC chat 接口
    const resopnse = await client.chat.completions.create({
        model:model,
        messages:messages,
        // LLM 生成内容的随机性
        temperature:0
    })
    //返回大模型生成的第一个回答
    return resopnse.choices[0].message.content
};

在这里我们的temperature负责大模型生成内容的随机性,它可以设置成0-1,越接近于0它的回答将会越严谨且固定,越往1走则越随机

const main = async() => {
    const prod_review = `
    我玩完艾尔登法环后久久难以释怀,觉得再也没有比这更好玩的游戏了,
    好想要一个没有玩过它的脑子。
  `;
// 初级prompt 设计原则
// 准确表达任务
// 给他一个角色
// 减少出错的可能
// 商品评论prompt 模板
  const prompt = `
  你的任务是从steam游戏评论页面中提取出玩家高质量评论,
  并对此进行一个摘要。
  总结下面用三个反引号分隔的评论,最多15个字。
  评论:'''${prod_review}'''
  `;
    const response = await getCompletion(prompt)
    console.log(response);
};

main()

接下来我们就调用上面的getCompletion函数将pormpt尽可能详细准确的给出,并给它添加约束,最后进行打印,让我们来看看效果:

image.png

至此,已成艺术。

小结

这就是prompt设计模式的基础运用,从这里我们可以体会到AI的强大运用,在prompt方面我们还需要更加细致深入的学习,这样才能更好的训练大模型,创造出质量更高的模板和AI应用,希望能对你有帮助。