前言
闲来无事在喝茶,突然想到如果喝茶的步骤用传统编程一步步实现会是怎样的?那如果再结合AIGC又是怎样的呢?
使用传统经典编程来泡茶
构造函数Tea
function Tea(type) {
this.type = type
console.log('您准备泡一杯' + this.type);
}
添加方法
// 对象 prototype 添加方法
Tea.prototype.boilWater = function() {
console.log('把水煮沸')
}
Tea.prototype.steepTeaBag = function() {
console.log('用沸水浸泡茶叶')
}
Tea.prototype.pourInCup = function() {
console.log('把茶水倒进杯子')
}
Tea.prototype.addLemon = function() {
console.log('加柠檬')
}
实例化与方法调用
var lemonTea = new Tea('柠檬茶');
lemonTea.boilWater();
lemonTea.steepTeaBag();
lemonTea.pourInCup();
lemonTea.addLemon();
传统经典编程遇上模板方法模式
在前面的实例化与方法调用中,每增加一个实例,都需重新调用泡茶的四个方法,于是我们在 Tea.prototype
上定义了一个模板方法 init
,它调用了上述的四个步骤方法。这个方法就是所谓的“模板”,定义了泡茶的固定流程。通过在子类中调用 init
,可以保证每种茶的制作都遵循这个流程。
模板方法 init
Tea.prototype.init = function() {
this.boilWater();
this.steepTeaBag();
this.pourInCup();
this.addLemon();
}
实例化与调用
var lemonTea = new Tea('柠檬茶');
lemonTea.init();
传统经典编程和AIGC结合
安装dotenv
包
在集成终端打开,输入
- npm i dotenv
安装openai
包
- npm i openai
创建.env
文件
利用dotenv
库(通过dotenv.config()
方法)可以将Key等敏感信息存储在项目根目录下的.env
文件中。这样可以避免将密钥直接写入源代码,减少泄露风险。
- OPENAI_KEY =YOUR_API_KEY
创建main.js
此时您的目录应该如下所示
① 环境变量配置
require('dotenv').config();
② 导入OpenAI模块并创建实例
const OpenAI = require('openai')
const client = new OpenAI({
apiKey: process.env.OPENAI_KEY,
baseURL:'https://api.chatanywhere.tech/v1'
})
③ 创建异步函数getChatResponse
const getChatResponse = async function(model,prompt,n){
const response = await client.chat.completions.create({
model:model, // 适合聊天的模型 有很多种
messages: [{
role : 'user',
content : prompt
}]
})
return response.choices[0].message.content;
}
④ 主函数mian()
利用AIGC的优势处理文本,生成内容
const main = async () => {
const text = `
泡一杯茶很容易。首先,需要把水烧开。
在等待期间,拿一个杯子并把茶包放进去。
一旦水开了,就把它倒在茶包上。
等待一会儿,让茶叶浸泡,几分钟后,取出茶包。
如果你愿意,可以加一些糖或牛奶调味。
就这样,您可以享受一杯美味的茶了。
`
const prompt = `
您将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令。
第一步 - ...
第二部 - ...
...
第N步 - ...
如果文本中不含一系列的指令,则直接写“未提供步骤”
"""${text}"""
`
const result = await getChatResponse('gpt-3.5-turbo', prompt);
console.log(result);
}
⑤ 运行
调用main()函数运行程序。
main()
总结
模板方法模式通过将不变的流程放在父类的模板方法中,减少了代码重复;结合AIGC,模板方法中的部分内容可以由AI模型自动填充或优化,使得算法更加灵活高效。