1 提示词模板简介
在LangChain中,提示模板(Prompt Templates)扮演着至关重要的角色,它们允许开发者以结构化的方式向语言模型提供输入,从而引导模型生成所需的输出。
1.1 提示词模板的内容
提示词模板本质上跟平时大家使用的邮件模板、短信模板没什么区别,就是一个字符串模板,模板可以包含一组模板参数,通过模板参数值可以替换模板对应的参数。
一个提示词模板可以包含下面内容:
-
发给大语言模型(LLM)的指令。
-
一组问答示例,以提醒AI以什么格式返回请求。
-
发给语言模型的问题。
1.2 提示模板在LangChain中的作用
提示模板在LangChain中的作用是定义一个结构化的输入格式,该格式包含了模型在生成输出时所需的所有信息。通过使用提示模板,开发者可以确保向模型提供的输入是清晰、一致且易于理解的,从而提高模型的输出质量。
2 提示词模板实战
2.1 字符串提示词模板
在LangChain中,可以使用 `PromptTemplate` 类创建简单的提示词。提示词模板可以内嵌任意数量的模板参数,然后通过参数值格式化模板内容。
from langchain.prompts import PromptTemplate
# 定义一个提示模板,包含adjective和content两个模板变量,模板变量使用{}包括起来
prompt_template = PromptTemplate.from_template(
"给我讲一个关于{content}的{adjective}故事。"
)
# 通过模板参数格式化提示模板
result = prompt_template.format(adjective="童话", content="一千零一夜")
print(result)
2.2 聊天消息提示词模板
聊天模型(Chat Model)以聊天消息列表作为输入,这个聊天消息列表的消息内容也可以通过提示词模板进行管理。这些聊天消息与原始字符串不同,因为每个消息都与“角色(role)”相关联。
在OpenAI的聊天模型中,给不同的聊天消息定义了三种角色类型分别是助手(assistant)、人类(human)或系统(system)角色。
-
助手(Assistant) 消息指的是当前消息是AI回答的内容
-
用户(user)消息指的是你发给AI的内容。
-
系统(system)消息通常是用来给AI身份进行描述
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages(
[
("system", "你是一位人工智能助手,你的名字是{name}。"),
("human", "你能做什么"),
("ai", "设计课程,谢谢!"),
("human", "{user_input}"),
]
)
messages = chat_template.format_messages(name="教学助手",
user_input="你的名字叫什么?")
print(messages)
2.4 MessagesPlaceholder
MessagesPlaceholder 提示模板负责在特定位置添加消息列表。 在上面的 ChatPromptTemplate 中,我们看到了如何格式化两条消息,每条消息都是一个字符串。如果我们希望用户传入一个消息列表,就可以通过MessagesPlaceholder 的方式将其插入到特定位置。
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.prompts import MessagesPlaceholder
from langchain_core.messages importHumanMessage
prompt_template = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant"),
#可以传入一组消息
MessagesPlaceholder("msgs")
])
result = prompt_template.invoke({"msgs": [HumanMessage(content="您好!"),
HumanMessage(content="langchain!")]})
print(result)
3.2 提示词追加示例
提示词中包含交互样本的作用是为了帮助模型更好地理解用户的意图,从而更好地回答问题或执行任务。小样本提示模板是指使用一组少量的示例来指导模型处理新的输入。这些示例可以用来训练模型,以便模型可以更好地理解和回答类似的问题。
提示词交互示例:
examples = [
{
"question": "电话和电灯的发明者是否毕业于同一所大学?",
"answer":
"""
这里需要跟进问题吗:是的。
跟进:电话的发明者是谁?
中间答案:电话的发明者是Alexander Graham Bell。
跟进:Alexander Graham Bell毕业于哪所大学?
中间答案:Alexander Graham Bell没有正式大学学位,他在爱丁堡大学短暂学习过。
跟进:电灯的发明者是谁?
中间答案:电灯的发明者是Thomas Edison。
跟进:Thomas Edison毕业于哪所大学?
中间答案:Thomas Edison没有大学学位,他是自学成才的发明家。
所以最终答案是:不是
"""
}
]
告诉模型根据,Q是问题,A是答案,按这种格式进行问答交互。提示词追加示例代码如下。
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.prompt import PromptTemplate
from prompt_example import examples # examples是交互示例
example_prompt = PromptTemplate(input_variables=["question", "answer"],
template="问题:{question}\\n{answer}")
print(example_prompt.format(**examples[0]))
大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集***
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓