前言
根据上一篇文章:# 思维的转变:向AIGC时代迈出第一步https://juejin.cn/post/7367658043440037940 相信大家已经有了一个思维的大跳跃(当然如果有些忘记的话,我们可以先回去上一篇内容重新过一下哦),那么现在我们肯定是要对AIGC继续保持学习啦。毕竟AIGC的浪潮如此之汹涌,它不仅降低了编程门槛,还提升了开发效率等等好处,怎么能不心动呢?好咯,今天我们就来学习点open一点的东西吧。
面向未来:从传统编程到面向LLM编程的跨越
在计算机科学的历史长河中,编程范式的演进一直是推动技术革命的关键力量。从最初的机器语言、汇编语言,到后来广泛采用的面向过程编程(POP)、面向对象编程(OOP),每一步进化都让软件开发更加高效、灵活和可维护。如今,随着大型语言模型(LLM)的崛起,我们正站在一个新的编程范式变革的门槛上------面向LLM编程,这标志着人工智能与软件开发的深度融合,预示着编程的未来方向。
面向对象编程(OOP):曾经的辉煌
对于一些有编程基础的你们,我相信你们肯定知道面向对象编程的核心是什么,不过我还是要提一嘴哈哈哈。面向对象编程的核心思想在于抽象、封装、继承和多态,OOP鼓励开发者将现实世界中的事物抽象成对象,每个对象包含数据(属性)和操作数据的方法(行为)。
- 抽象:提炼出问题域中的关键特征,形成类和对象的概念。
- 封装:隐藏对象的内部实现细节,仅暴露必要的接口,增强模块间的独立性。
- 继承:子类可以继承父类的属性和方法,减少代码重复,支持软件的层次结构设计。
- 多态:允许使用父类接口引用子类对象,实现接口的多种表现形式,提高代码的灵活性。
面向LLM编程:编程范式的革新
近年来,随着机器学习特别是深度学习技术的飞速发展,大型语言模型成为人工智能领域的一颗璀璨新星。这些模型通过吸收互联网上海量文本数据进行训练,学会了理解、生成和推理自然语言,展示了令人惊叹的泛化能力。以OpenAI的通义千问为例,它不仅能回答问题、创作故事、编写代码,还能进行逻辑推理和情感交互,展现了AI在理解和生成复杂内容方面的巨大潜力。
面向LLM编程,是一种新兴的编程思维,它利用LLM的强大能力,将复杂的逻辑处理和内容生成任务委托给模型,而程序员更多地聚焦于定义问题、设定边界条件和调用LLM的服务。这种模式下,编程不再是直接编写详细的逻辑步骤,而是设计如何与智能体交互,以最自然的方式表达需求。
- 指令驱动:开发者通过高级指令或自然语言描述任务,LLM自动解析并执行。
- 人机协作:程序员与LLM共同参与问题解决,各司其职,相互补充。
- 动态适应:LLM能够根据上下文和反馈动态调整输出,增强应用的智能性和适应性。
- 快速迭代:减少编码时间,加速产品原型和功能的验证,促进快速迭代和创新。
首先,我们需要下载一下node nodejs.org/en 随后在命令行中输入node -v
,来判断是否安装成功
如果是这样,那么恭喜你安装成功咯 之后我们打开vscode,新建一个文件夹chat,并在当前目录下快速创建了一个新的index.js项目,打开集成终端
在集成终端中输入npm init -y
npm init -y
是在Node.js环境下使用npm(Node Package Manager,节点包管理器)时的一个命令组合,用于快速初始化一个新的项目。具体来说:
-
npm init
:这个命令会引导你创建一个package.json
文件。package.json
是Node.js项目的配置文件,里面包含了项目的基本信息,如名称、版本、描述、作者、入口文件、依赖包等。通常执行时,npm会提示你输入一系列问题来填充这些信息。 -
-y
:这是一个选项,意思是自动接受所有默认值,无需用户逐一回答初始化过程中的提问。当你添加这个选项后,npm将直接使用默认配置生成package.json
文件,跳过互动问答环节,这对于快速创建项目原型或者测试非常有用。
然后,我们再继续在终端中输入npm i openai
npm i openai
是一条在命令行中使用的npm(Node Package Manager,节点包管理器)命令,意在安装名为"openai"的安装包。这个命令是安装OpenAI API客户端库到你的项目中的快捷方式,允许你利用OpenAI的服务和模型(如GPT-3等)进行开发。具体来说:
npm i
是npm install
的简写形式,用于安装Node.js项目所需的依赖包。openai
是你要安装的包的名称,这里指的是能够与OpenAI API交互的库。
执行这条命令后,npm会从npm registry查找名为"openai"的包,并将其下载到项目的node_modules
目录中。
之后,拿到我们一开始创建的index.js
,输入const OpenAi = require("openai");
来调用OpenAI这个包。
javascript
const OpenAi = require("openai"); //require关键字 导入该文档
//实例化OpenAI 配置ai
const client = new OpenAi({
apiKey: "sk-0icNotaB0sMgI1xQmk5wAV4iXbgHSH9NV3zmAdI1OJPxFPBQ",
baseURL: "https://api.chatanywhere.tech/v1",
});
其中:
- apiKey是 凭证 、密钥 、算力收费( token)
- baseURL 是 转发地址
PS:我的这个apiKey是免费的,但是可能由于大多人用了,或者过期了,导致无法使用。
OK,接下来我们来写一下主函数main:
ini
async function main() {
const prompt =
`<tr class="item">
<td width="100" valign="top">
<a class="nbg" href="https://movie.douban.com/subject/35503073/" title="对你的想象">
<img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.webp" width="75" alt="对你的想象" class="">
</a>
</td>
<td valign="top">
<div class="pl2">
<a href="https://movie.douban.com/subject/35503073/" class="">
对你的想象
/ <span style="font-size:13px;">关于你的想法 / 概念中的你</span>
</a>
<p class="pl">2024-03-16(西南偏南电影节) / 2024-05-02(美国网络) / 安妮·海瑟薇 / 尼古拉斯·加利齐纳 / 艾拉·鲁宾 / 安妮·玛莫罗 / 瑞德·斯科特 / 帕芮·马费尔德 / 乔丹·亚伦·霍尔 / 玛蒂尔达·吉安诺普洛斯 / Meg Millidge / 奇克·曼诺哈 / Ray Cham / Jaiden...</p>
<div class="star clearfix">
<span class="allstar30"></span>
<span class="rating_nums">5.9</span>
<span class="pl">(21308人评价)</span>
</div>
</div>
</td>
</tr>
这是一段电影的HTML,请获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber).请使用括号的单词作为属性名,用JSON的格式返回.
`;
const chatCompletion = await client.chat.completions.create({
model: "gpt-3.5-turbo", //适合聊天的模型
messages: [
{
role: "user",
content: prompt,
},
],
});
console.log(chatCompletion.choices);
}
//运行主函数
main();
async function
:表明main函数内部有异步任务 async + awaitconst prompt =
:而prompt则是设置的一个提示词model
:是设置的一个大模型,这里用的是gpt-3.5-turbo
,因为这个模型适合聊天
然后,就该实现一下了吧,一样的,打开集中终端输入node index.js
这里生成的content内容取决于你用messages传入的,我们也可以自己定义prompt字符串。
总结
欧克欧克,本章到此就结束了,这次我们将大模型直接融入代码中,这样是否又让你感到更加兴奋和期待了呢?将大型语言模型直接嵌入到代码中,确实是一个创新的实践,它打破了传统软件开发的界限,为应用程序增添了前所未有的灵活性和智能。 总之,大模型与代码的深度融合,无疑为技术进步和创新应用开辟了新纪元,让人既兴奋又充满期待。接下来的每一章,都可能是探索AIGC的一步,让我们继续携手前行,在AIGC的浪潮中共同创造更多的可能。
快去检查一下看看你的输出结果是不是和我一样呢?
如果我的文章对你有帮助的话,不妨点点赞点点关注,也可以在评论区告诉我哪些部分特别有用,或者还想了解更多信息的地方。当然有些的不好的地方,也欢迎各位大佬指正一下😁