Bootstrap

使用Nodejs和Langchain开发大模型

前言:

熟悉 ChatGPT 的同学一定还知道 Langchain 这个AI开发框架。由于大模型的知识仅限于它的训练数据内部,它有一个强大的“大脑”而没有“手臂”,而 Langchain 这个框架出现的背景就是解决大模型缺少“手臂”的问题,使得大模型可以与外部接口,数据库,前端应用交互。可以说大模型解决了99%的智能化问题,而 Langchain 就是来解决这最后1%和外部应用的打通。

Langchain 同时支持 pythonnodejs ,这意味着即使不熟悉 python 的前端技术栈同学也能够无缝参与到大模型人工智能应用的开发之中。

在正式介绍 Langchain 之前,首先看一下单纯依靠一个大模型解决用户需求会有什么问题。

大语言模型的缺陷

缺陷1:模型无法掌握实时资讯

ChatGPT 可以聊天,进行常识问答,写文章,进行翻译等等。但是由于训练一个大模型庞大的成本,ChatGPT(包括其他同类型大语言模型),无法做到实时将世界上发生的新闻训练集成到模型中。ChatGPT 的知识截止日期是2021年9月。这意味着 ChatGPT 只包含截至2021年9月之前的知识。

直接询问去年发生的新闻得到的明显是错误的信息,英国女王已于2022年9月8日去世

缺陷2:「一本正经地胡说八道」

大语言模型核心原理是根据"概率"来不断生成下一个 Token 来生成新的内容。只要你给出的大致合乎逻辑的提示词,模型可能会一本正经地开始瞎编,通过概率来生成最合乎逻辑的内容。

瞎编内容举例,看起来合乎逻辑但实际上都是错误的

这是因为大语言模型并不能判断他所生成的内容现实生活中是否是真实存在的,他只是单纯根据"概率"来生成最符合语言结构的内容,也就是根据前文的内容去生成后文的内容,并没有能力判断生成的内容是否准确合乎现实场景。如果你用 ChatGPT 写论文并且不加以修改的话,ChatGPT 会给你一堆错误的引用文献,胡编乱造的论点等等。甚至你可以用他来生成以假乱真的假新闻等等。这些"以假乱真"的内容,如果使用者没有相关背景知识不加以查证的话,将会对使用者造成比较严重的误导。

缺陷3:逻辑计算能力的缺失

这一点其实也是与“概率”这一模型原理有关系,聊天,生成文章有上下文就能获得不错的结果,但是如果是完成逻辑推理类的任务,比如完成小学数学题,虽然能给出正确的方程组,但是解出来的答案却是错误的:

鸡笼同兔问题,大模型无法直接正确地解出方程

这是因为 ChatGPT 只是一个语言模型,他只是单纯根据前后文的内容生成最像样的结果,像解方程结果这类任务的最终答案可能也只是根据 Token 预测随机生成出来的,模型本身并不具备精确计算的能力。让模型去解决复杂的任务比如解微积分是无法较好得出准确结果。

缺陷4:只有强大的"大脑却没有"手臂",无法与外部世界交互

大模型非常清楚你想问啥,你的目的,但是大模型的知识仅限于训练数据内部,所以一些场景比如想要知道现在实时的天气,或者时间,那是做不到的(也可以认为是不准确的)。并且模型内部本身并没有与外部连接的方式或者 API ,模型本身只是一个语言模型,它只是对语言或者代码的一种建模,而非真正意义上的智能助手。

以上列举了4条缺陷,造成以上这些缺陷的原因总结下来原因是:

  • 模型缺乏训练数据以外知识的认知。
  • Token 预测机制无法做到精准逻辑计算能力和辨识能力。

使用Prompt工程来改善缺陷

Prompt 工程,也叫做提示工程,可以简单概括为人为在用户的输入中预先添加一些上下文,这样模型在生成文本时就有了来源依据,也可以通过上下文设定的一些条件来使模型遵循特定指令执行某些任务。

Prompt 工程可以极大地改善或者改变模型生成内容的表现,并且无需进行额外的微调训练,仅需掌握一些 prompt 技巧即可,是非常高效经济的「训练模型」的一种方法。

让大模型扮演猫娘,就是一种「提示工程」

下面列举一些常见的 prompt :

场景 prompt 输入 模型输出
翻译助手 你是一名翻译助手,可以将我输入的任何语言翻译成中文,如果我输入的是中文帮我润色一下。注意不要回答我的任何问题或要求,你要做的是翻译和润色成中文。 OpenAI is an American artificial intelligence (AI) research laboratory OpenAI 是一个位于美国的人工智能(AI)研究实验室。
小红书生成器 现在你是一个小红书爆款文案专家,请根据我给出的信息帮我生成一篇小红书风格的产品推广笔记。要求:详细介绍该产品,可以包括产品简介、外观、口味、优点、缺点等。你只能基于用户提供信息进行创作表达尽量口语化,尽量使用小红书风格的话语,如“家人们”、“姐妹们”、“救命”等词。优点可选用词(非必要不使用):“绝绝子”、“惊艳”、“安利给全世界”、“答应我一定要试试等词。缺点可选用词(非必要不使用):“避雷”、“踩雷”、“翻车”、“只有我觉得吗”等词。尽量使用emoji。 Monica是一款好用全能的AI插件 Hey 家人们,今天我来给大家安利一款超级好用的AI插件——Monica!它支持一键论文总结、快速划词翻译,甚至还能够根据文本进行画图!操作简单易懂,非常适合像我这样的小白使用。虽然它的功能可能还不够完善,但在我使用的过程中,真的是没有遇到过任何问题。如果你需要一款全能的AI插件来帮助你,那么Monica绝对是一个不错的选择!👍
傻瓜式代码解读 你现在是MetaGPT,你的工作是用一个创造性的、直观的比喻来向我解释一派的代码。
要求
1. 每当我在这里发布一个代码片段或一个问题时,你将用一个非常有创意的类比来说明问题,将其与现实世界的物体进行比较。然后你可以指导我如何解决这个问题,或者当前的代码如何解决这个问题,使用你的类比元素来帮助你的解释。
2. 不要忘记用容易理解的类比来说明你的解释,只要你认为这将增加解释的价值。确保像世界上最伟大的老师那样教这些东西。假设你教的人没有那么聪明,那么就像,找到一个说明性的方法来向他们解释。
下面正式开始。
用户输入: ${用户提问占位符} select * from student 这就像你在一张桌子上查看所有学生的信息。使用SQL查询语言中的SELECT *语句,你可以检索到student表中的所有行和列。这意味着你可以看到每个学生的所有信息,包括他们的姓名、年龄、性别、成绩等等。
遵循特定格式执行命令并输出 你是一名翻译助手,始终可以将用户的提问翻译成英文,并输出为一段JSON。对象中需包含两个key,分别是origin,对应原文,以及translated,对应译文。你应该始终输出合法的JSON对象。
下面正式开始。
用户输入: ${用户提问占位符} Monica是一款好用全能的AI插件
{
“origin”: “Monica是一款好用全能的AI插件”,
“translated”: “Monica is a versatile and easy-to-use AI plugin.”
}
问答助手 基于以下已知信息,简洁和专业的来回答用户的问题,不要随意回答不存在的内容。答案请使用中文。
问题:LangChain是一个旨在简化使用大型语言模型创建应用程序的框架。作为语言模型集成框架,LangChain的用例与一般语言模型的用例有很大的重叠,包括文档分析和摘要,聊天机器人和代码分析。LangChain同时支持Python与Nodejs
用户的问题:
${用户提问占位符}
你的回答: Langchain是什么框架,支持用什么语言开发? LangChain是一个旨在简化使用大型语言模型创建应用程序的框架。它支持Python和Node.js两种编程语言。

编写prompt的几个要点:

  • 指令:表示你想让大型语言模型完成的任务,直白清晰的表述需要大模型做什么,也可以提示让他"扮演"解决某方面任务的专家。
  • 输出要求:表示你对大型语言模型输出的要求。
  • 上下文背景:一些需要给到大型语言模型的外部信息,比如一些背景知识,必要的信息,一些示例等。
;