引言
我们知道, openai可以实现多模态的数据处理。前面我们讲过利用OpenAi去进行图片描述,生成图片等一些功能。今天我们来讲讲OpenAI对提示词(prompt)的一些处理方式。
准备工作
学习prompt engineering 第一步,我们要先了解它。可以直接点链接:吴恩达的prompt engineering教程
吴恩达是chatgpt和AI领域大神级别的人物了,他对prompt engineering有着最深和最好的理解。
介绍prompt
prompt是提供给模型的一段文本或指令,引导模型产生对应输出。广泛用于NLP(机器学习)和AI领域中,例如问答,翻译,文本生成等...
Prompt的作用
- 任务指示:明确告诉模型需要执行的任务类型,例如“请根据以下信息撰写一篇新闻报道”。
- 风格指引:帮助模型理解所需输出的风格,比如“请用幽默的方式描述……”。
- 信息输入:为模型提供必要的背景信息或数据,使其能够基于这些信息生成内容。
- 情感色彩:设定输出的情感基调,如正面鼓励、负面批评等。
- 格式规定:指定输出的具体格式,例如要求输出为列表、表格或是段落形式。
设计好的Prompt的重要性
- 提高效率:良好的Prompt能够减少模型生成无效或无关输出的可能性,从而提高交互效率。
- 增强准确性:通过提供清晰的任务描述和上下文信息,有助于提升模型输出的准确性和相关性。
- 促进创新:创意性的Prompt可以激发模型产生更加新颖和有创意的响应。
实战
话不多说,直接开始实战!!!
我们在做任何项目时,第一个要做的就是初始化和安装依赖。打开终端,输入以下指令
npm init -y
npm i openai
npm i dotenv
如果一切顺利,我们可以在初始化自动创建的package.json中看到这样的情况:
假如我们在以后的程序开发中不想进行重复的安装依赖操作,我们可以直接讲上图中的内容复制给另一个程序的
package.json中,然后再终端输入npm i即可自动安装依赖。
openai
这个我们就不过多说明,详情可以点此链接:openai多模态数据处理
dotenv
dotenv主要用于保护我们的一些隐私信息,例如我们的API密钥和国内的转发地址等...从源代码中抽离出来。防止上传到github时候被别人用爬虫爬走,要是在公司里不小心全部上传了,那最好是删数据库跑路吧。
那我们怎么使用dotenv呢?
可不是仅仅安装个依赖就能解决的。
在我们的根目录下,创建一个.env文件夹,然后将自己的API密钥和转发地址输进去,然后在程序中使用,这样就可以避免重要信息暴露的情况。
注意记得在导包后输入
dotenv.config()这样程序才能加载 .env 文件中的环境变量到 process.env 对象中
代码内容
结束上述过程后,我们才正式开始了今天的学习。
首先 我们先实例化一个客户端,通过环境变量来配置API密钥和URL:
const client = new OpenAI({
// node 里的进程对象
apiKey: process.env.OPENAI_API_KEY,
baseURL:process.env.OPENAI_BASE_URL
})
然后 我们声明函数,获得一个通用的大模型框架,类型是chat,问答模式。
// es6 默认参数值
// 通用的LLM 聊天完成接口函数, 可复用
const getCompletion = async (prompt, model="gpt-3.5-turbo") =>{
// 用户提的问题
const messages=[{
role:'user',
content:prompt
}];
// AIGC chat 接口
const response = await client.chat.completions.create({
model:model,
messages:messages,
// LLM 生成内容的随机性 0-1 值越大 回答越随意
temperature:0.9
})
return response.choices[0].message.content;
}
最后,我们输入需要分析的文字,这里,我们输入对外卖评价的概况
const main = async() => {
const prod_review = `
这份外卖量大,实惠,吃的出来食材都很新鲜,下次还会再次购买。
唯一不足的是,分量稍微少了一点,有点没吃饱。外卖小哥送的很快。
`;
const prompt =`
你的任务是生成来自外卖平台的产品评论有关外卖的简短摘要,
总结以下用三个反引号分隔的评论,最多30个字。
评论:'''${prod_review}'''
`
const response = await getCompletion(prompt,'gpt-4o')
console.log(response);
}
main()
此时我们可以得到:
我们也可以对我们需要的方面进行约束,增加条件来输出我们想要的某一方面的内容:如果我们想要关于外卖食材的回答:加入
并重点关注外卖食材方面。进行约束,此时就会输出
此时就没有关于外卖运输方面的回答了。
结语
这就是关于prompt engineering 的一些基础教程。想要深入学习可以去观看吴恩达大神的课程,希望大家能从中收获知识。