前端拥抱AI:LangChain.js 入门遇山开路之PromptTemplate
PromptTemplate是什么
PromptTemplate是一个可重复使用的模板,用于生成引导模型生成特定输出的文本。与Prompt的区别: PromptTemplate相对于普通Prompt的优势,即其灵活性和可定制性。
简单了解PromptTemplate后,咱们就来聊聊LangChain里的PromptTemplate—让聊天变得像搭积木一样简单的神奇工具,我们知道通过提供不同的Prompt,AI模型能够生成风格迥异的答案。明确的Prompt能引导模型生成高质量的文本内容。
首先,咱们得明白,prompt就是那根能撬动大模型智慧的杠杆。在没有template时,需要自己一字一句地构造问题。但现在,有了PromptTemplate,就像有了个私人定制的工厂,想要什么都行!
无输入变量的模板
新手村第一站,从最基础的开始——无变量Template,就是“hello world”级别的问候。但它却是理解PromptTemplate世界的敲门砖。
引用langchain的prompts模块提供的PromptTemplate 方法传入 inputVariables 和 template,打印一下,在Jupter运行如下
import { PromptTemplate } from "npm:/@langchain/core/prompts";`` ``const greetingPrompt = new PromptTemplate({` `inputVariables: [],` `template: "hello,前端慢报",``});``const formattedGreetingPrompt = await greetingPrompt.format();``console.log(formattedGreetingPrompt);
带变量的模板
接下来,咱们升级一下,整点带变量的。比如,“{greeting},{name}”,咱们就可以根据对方的名字来定制问候了。
const autoInferTemplate = PromptTemplate.fromTemplate("{greeting},{name}");``console.log(autoInferTemplate.inputVariables);`` ``const formattedAutoInferTemplate = await autoInferTemplate.format({` `greeting: "吃了吗您",` `name: "AI降临派",``});` `console.log(formattedAutoInferTemplate)
动态变量的模板
LangChain让咱们可以像玩乐高一样组合这些PromptTemplate。想象一下,你手里有一堆五颜六色的积木块,每个都代表着不同的问候、指令或者问题。你只需要按照心情和场景,随意搭配,当我们面临需要实时动态地为PromptTemplate生成参数的情况时,我们可以巧妙地利用函数来实现这一目标。就像一位经验丰富的工匠,精心雕琢每一块拼图,函数能够精确地指定template中的部分参数,使其根据实际需求灵活变化,提升了我们的工作效率
通过写一个获取日期的函数,传给date变量,示例代码如下:
const getCurrentDate = () => {` `return new Date().toLocaleDateString();``};`` ``const promptWithDynicDate = new PromptTemplate({` `template: "今天是{date},{dowhat}。",` `inputVariables: ["date", "dowhat"],``});`` ``const partialedPromptWithDate = await promptWithDynicDate.partial({` `date: getCurrentDate,``});`` ``const formattedPromptWithDate = await partialedPromptWithDate.format({` `dowhat: "看三体",``});``console.log(formattedPromptWithDate);
与大模型结合的模板
但LangChain的神奇之处远不止于此,开胃凉菜上完了,该硬菜了。
为了方便我们构建和处理这种复杂但至关重要的聊天消息,LangChain提供了一系列强大的工具,使我们与模型的交互将更加得心应手,为了方便地构建和处理这种结构化的聊天消息,LangChain对不同的角色有不同的消息类别,分为:
HumanMessage、AIMessage、SystemMessage、ToolMessage
在下边的代码示例中,systemTemplate 和 humanTemplate 分别对应了一段 ChatMessage 不同的角色。通过角色标识消息的发送者。角色的概念对 LLM 理解和构建整个对话流程非常重要,相同的内容由不同的 role 发送出来的意义是不同的 (可以对下边的代码片段执行下,看下返回的效果)。
systemTemplate 对应的"SystemMessage"角色的消息用于设置对话的上下文或指定模型采取特定的行为模式。这些消息不会直接显示在对话中,但它们对模型的行为有指导作用。可以理解成模型的元信息,权重比较高,但并不是所有的模型都支持。
humanTemplate 对应"HumanMessage"角色代表来自用户的消息。这些消息通常是问题、指令等。
import { StringOutputParser } from "npm:/@langchain/core/output_parsers";``import { Ollama } from "npm:/@langchain/community/llms/ollama";` `import { ChatPromptTemplate } from "npm:/@langchain/core/prompts";`` ``const systemTemplate = "你是一个专业的翻译员,你的任务是将文本从{source_lang}翻译成{target_lang}。";``const humanTemplate = "请翻译这句话:{text}";``const chatPrompt = ChatPromptTemplate.fromMessages([` `["system", systemTemplate],` `["human", humanTemplate],` `]);``// only human, AI, or system message coercion is currently supported``const chatModel = new Ollama({` `baseUrl: "http://localhost:11434",` `model: "llama3",` `});``const outputPraser = new StringOutputParser();`` ``const chain = chatPrompt.pipe(chatModel).pipe(outputPraser);`` ``await chain.invoke({` `source_lang: "中文",` `target_lang: "英语",` `text: "你好,世界",``})
代码里ChatPromptTemplate 数组接受的参数目前看只支持 system, human, ai
const chatPrompt = ChatPromptTemplate.fromMessages([` `["system", systemTemplate],` `["human", humanTemplate],` `]);``// only human, AI or system message coercion is currently supported.
填写其他会报错
总结
本文介绍了
-
PromptTemplate是什么
-
无输入变量的模板
-
带变量的模板
-
动态变量的模板
-
与大模型结合的模板
通过这篇文章,读者可以深入了解LangChain.js中的PromptTemplate概念、创建方法、高级特性以及最佳实践,从而在实际项目中更好地利用这一功能。
Make your hands dirty! 动手试试吧
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
最后如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉如何学习AI大模型?👈
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
原文地址:https://blog.csdn.net/weixin_42924914/article/details/143178950
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!