04. 提示词(Prompt)

这篇具有很好参考价值的文章主要介绍了04. 提示词(Prompt)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示词(prompt)是一种向模型提供的输入。

提示词模板

一个简单的例子

from langchain import PromptTemplate

# 设置模板template
template = """你是一名精通多门语言,专业的翻译家。你的任务是从{src_lang}翻译到{dst_lang}"""

# 实例化对象prompt
# from_template方法:从模板加载提示词模板(Load a prompt template from a template)
prompt = PromptTemplate.from_template(template)

# prompt对象调用format方法生成提示词
# format使用输入设置模板参数,返回格式化字符串
prompt.format(src_lang = "英语", dst_lang = "中文")

你应该能看到下面的输出

你是一名精通多门语言,专业的翻译家。你的任务是从英语翻译到中文

format函数:使用输入设置提示词(Format the prompt with the inputs),返回格式化的字符串

创建模板

langchian框架中提供基础模板类PromptTemplate,它包含两个参数

1. input_variables  ————输入变量

2. template  ————模板

使用{}符号将变量替换到模板中,如PromptTemplate( input_variables = ["name"], template = "My name is {name}"。)

模板的实例化通过模板类实例的format实现。

# 导入PromptTemplate类
from langchain import PromptTemplate


# 实例化对象multiple_input_prompt
multiple_input_prompt = PromptTemplate(input_variables = ["color", "animal"], 
                template = "a {color} {animal}.")

# 调用format函数,生成提示词
multiple_input_prompt.format(color = "black", animal = "bear")

应该能看到如下输出

a black bear.

聊天提示词模板

聊天模型如GPT,输入一系列消息列表,每条消息都有对应的角色,这个消息列表通常以一定的格式串联,构成模型的输入,也就是提示词。

在OpenAI的Chat Completion API中,聊天消息和assistant,human,system角色关联

langchain提供了一些列模板,更简洁的使用构建和处理提示词。官方文档提醒,在于聊天模型交互时,优先使用这些与聊天相关的模板,有助于提高模型效率。

SystemMessagePromptTemplate,AIMessagePromptTemplate,AssistantMessagePromptTemplate分别构建不同角色的提示词模板。

from langchain.prompts import (
    ChatPromptTemplate,
    PromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,    
)

from langchain.schema import (
    SystemMessage,
    AIMessage,
    HumanMessage  
)

# system提示词
system_message = "You are a professional translator that translate {src_lang} to {dst_lang}"
# 从system_message中加载提示词模板
system_message_prompt = SystemMessagePromptTemplate.from_template(system_message)

# human提示词是用户输入
human_message = "{user_input}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_message)


chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chat_prompt.format_prompt(
    src_lang = "English",
    dst_lang = "Chinese",
    user_input = "Did you eat in this morning"
).to_messages()
[SystemMessage(content='You are a professional translator that translate English to Chinese', additional_kwargs={}), HumanMessage(content='Did you eat in this morning', additional_kwargs={}, example=False)]

样本选择器

在开发LLM相关应用中,可能需要从大量样本数据中,选择部分数据包含在提示词中。样本选择器(Example Selector)正是应对这种需求,通常与提示词配合使用。langchain框架封装了基础选择器BaseExampleSelector。

本文以基于长度的样本选择器(输入越长,选择样本越少;输入越短,选择样本越多)

LengthBaseExampleSelector为例,进行演示。

from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.example_selector import LengthBasedExampleSelector

# 样本
examples = [
    {"input":"happy", "output":"sad"},
    {"input":"tall", "output":"short"},
    {"input":"energetic", "output":"lethargic"},
    {"input":"sunny", "output":"gloomy"},
    {"input":"windy", "output":"calm"}
]

# 实例化提示词模板
example_prompt = PromptTemplate(
    input_variables = ["input", "output"],
    template = "Input: {input}\nOutput: {output}"
)

# 实例化样本选择器
example_selector = LengthBasedExampleSelector(
    # 可选的样本数据
    examples = examples,
    # 提示词模板
    example_prompt = example_prompt,
    # 格式化的样本数据的最大长度,通过get_text_length函数统计
    max_length = 25    
)


# 实例化模板
dynamic_prompt = FewShotPromptTemplate(
    example_prompt = example_prompt,
    example_selector = example_selector,
    prefix = "Give the antonym of every input",
    suffix = "Input:{adjective}\nOutput: ",
    input_variables = ["adjective"]
)

print(dynamic_prompt.format(adjective = "big"))

你应该能看到如下输出:

Give the antonym of every input

Input: happy
Output: sad

Input: tall
Output: short

Input: energetic
Output: lethargic

Input: sunny
Output: gloomy

Input: windy
Output: calm

Input: big
Output:

总结:本节介绍Prompt,langchain中提供PromptTemplate和Example Selector两种Prompt。

学习创建简单的模板,聊天模板以及样本选择器事例。文章来源地址https://www.toymoban.com/news/detail-665980.html

到了这里,关于04. 提示词(Prompt)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 谷歌内部开发AI大语言模型“鹅”;OpenAI CEO 寻求大规模AI芯片全球生产投资

    谷歌内部开发AI大语言模型“鹅”;OpenAI CEO 寻求大规模AI芯片全球生产投资

    🦉 AI新闻 🚀 谷歌内部开发AI大语言模型“鹅” 摘要 :谷歌正在积极将AI技术融入其产品中,并为提升员工效率而开发了一个名为“鹅”的AI大语言模型。这一模型仅供公司内部团队使用,旨在辅助新产品的开发。据悉,“鹅”基于Google“25年的工程专业知识”训练而成,能

    2024年02月21日
    浏览(14)
  • 阿里云通义千问开源第二波!大规模视觉语言模型Qwen-VL上线魔搭社区

    阿里云通义千问开源第二波!大规模视觉语言模型Qwen-VL上线魔搭社区

    通义千问开源第二波!8月25日消息,阿里云推出大规模视觉语言模型Qwen-VL,一步到位、直接开源。Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发,支持图文输入,具备多模态信息理解能力。在主流的多模态任务评测和多模态聊天能力评测中,Qwen-VL取得了远超同等规

    2024年02月11日
    浏览(14)
  • 人工智能大模型技术基础系列之:大规模模型蒸馏

    作者:禅与计算机程序设计艺术 在深度学习的发展过程中,数据量越来越大,训练模型所需的时间也越来越长。如何降低模型训练时间、提升模型精度,一直是研究者们面临的问题。模型蒸馏(Model Distillation)技术被提出用于解决这个问题。它的核心思想是通过对一个大型的复

    2024年02月08日
    浏览(52)
  • 【第73篇】InternImage:探索具有可变形卷积的大规模视觉基础模型

    【第73篇】InternImage:探索具有可变形卷积的大规模视觉基础模型

    官方源码:https://github.com/OpenGVLab/InternImage 论文:https://arxiv.org/abs/2211.05778 官方博客:https://zhuanlan.

    2024年02月05日
    浏览(13)
  • 从0到1:如何建立一个大规模多语言代码生成预训练模型

    从0到1:如何建立一个大规模多语言代码生成预训练模型

    国产AI辅助编程工具 CodeGeeX 是一个使用AI大模型为基座的辅助编程工具,帮助开发人员更快的编写代码。可以自动完成整个函数的编写,只需要根据注释或Tab按键即可。它已经在Java、JavaScript和Python等二十多种语言上进行了训练,并基于大量公开的开源代码、官方文档和公共论

    2024年01月17日
    浏览(14)
  • MinHash-LSH 哈希模糊去重:如何解决医学大模型的大规模数据去重?

    MinHash-LSH 哈希模糊去重:如何解决医学大模型的大规模数据去重?

      问题:训练医学大模型的数据规模真的很大,其中会夹杂很多重复数据。 重复数据对于大模型微调也有较大影响,数据集必须去重后再用于模型训练。 临床数据: 20 亿条文本数据 教材数据: 1000+ 本指南 7万+ 药品说明书 N 个科室疾病培训数据 N 本古籍、教材 … 开源数据

    2024年01月19日
    浏览(11)
  • 大规模 Transformer 模型 8 比特矩阵乘简介 - 基于 Hugging Face Transformers、Accelerate 以及 bitsandbytes

    语言模型一直在变大。截至撰写本文时,PaLM 有 5400 亿参数,OPT、GPT-3 和 BLOOM 有大约 1760 亿参数,而且我们仍在继续朝着更大的模型发展。下图总结了最近的一些语言模型的尺寸。 由于这些模型很大,因此它们很难在一般的设备上运行。举个例子,仅推理 BLOOM-176B 模型,你就

    2023年04月26日
    浏览(12)
  • 基于Spark的大规模日志分析

    摘要: 本篇文章将从一个实际项目出发,分享如何使用 Spark 进行大规模日志分析,并通过代码演示加深读者的理解。 本文分享自华为云社区《【实战经验分享】基于Spark的大规模日志分析【上进小菜猪大数据系列】》,作者:上进小菜猪。 随着互联网的普及和应用范围的扩

    2024年02月09日
    浏览(13)
  • LLaMA(大规模机器学习和分析)

    LLaMA(大规模机器学习和分析)是一个先进的软件平台,是Meta 推出 AI 语言模型 LLaMA,一个有着 上百亿数量级参数的大语言模型用于大规模部署和管理机器学习模型。借助LLaMA,组织可以高效地在大型数据集上训练和部署模型,缩短投放市场的时间,并提高预测模型的准确性。

    2024年02月11日
    浏览(11)
  • etcd实现大规模服务治理应用实战

    etcd实现大规模服务治理应用实战

         导读 :服务治理目前越来越被企业建设所重视,特别现在云原生,微服务等各种技术被更多的企业所应用,本文内容是百度小程序团队基于大模型服务治理实战经验的一些总结,同时结合当前较火的分布式开源kv产品etcd,不仅会深入剖析ectd两大核心技术Raft与boltdb的实

    2024年02月12日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包