前言
在之前我们几次讲过如何利用调用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
进行查找看看是否成功。
上面是引入项目依赖最简单基础的方法,如果你要重
复调用创建这些依赖包未免繁琐,所以我们就可以将dependencies:{包名+版本(项目依赖的描述)} 部份直接拷贝到package.json中,再通过,npm i
,就能同时全部完成安装,更加方便。
首先我们在顶部引入包
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尽可能详细准确的给出,并给它添加约束,最后进行打印,让我们来看看效果:
至此,已成艺术。
小结
这就是prompt设计模式的基础运用,从这里我们可以体会到AI的强大运用,在prompt方面我们还需要更加细致深入的学习,这样才能更好的训练大模型,创造出质量更高的模板和AI应用,希望能对你有帮助。