LangChain(2)提示工程 Prompt Engineering

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

提示一般包含如下部分:
Instructions:整体结构,模型的人设
Instructions tell the model what to do, how to use external information if provided, what to do with the query, and how to construct the output.

External information:额外提供给模型的信息
External information or context(s) act as an additional source of knowledge for the model. These can be manually inserted into the prompt, retrieved via a vector database (retrieval augmentation), or pulled in via other means (APIs, calculations, etc.).

User input or query:用户输入的问题
User input or query is typically (but not always) a query input into the system by a human user (the prompter).

Output indicator:模型应该输出什么样的结果
Output indicator marks the beginning of the to-be-generated text. If generating Python code, we may use import to indicate to the model that it must begin writing Python code (as most Python scripts begin with import).

# 提示词
prompt = """Answer the question based on the context below. 
If the question cannot be answered using the information provided answer with "I don't know". 
Context: Large Language Models (LLMs) are the latest models used in NLP. Their superior performance over smaller models has made them incredibly useful for developers building NLP enabled applications. 
These models can be accessed via Hugging Face's `transformers` library, via OpenAI using the `openai` library, and via Cohere using the `cohere` library. 
Question: Which libraries and model providers offer LLMs? 
Answer: """


from langchain.llms import OpenAI

# initialize the models
openai = OpenAI(
model_name="text-davinci-003",
openai_api_key="YOUR_API_KEY"
)

print(openai(prompt))

>>>Hugging Face's `transformers` library, OpenAI using the `openai` library, and Cohere using the `cohere` library.

提示模板 PromptTemplate

可以将提示的问题抽象为参数,其它人设、额外信息、回答方式作为常数。这样就构成一个提示模板

from langchain import PromptTemplate

template = """Answer the question based on the context below. If the question cannot be answered using the information provided answer with "I don't know".
 Context: Large Language Models (LLMs) are the latest models used in NLP. Their superior performance over smaller models has made them incredibly useful for developers building NLP enabled applications. 
 These models can be accessed via Hugging Face's `transformers` library, via OpenAI using the `openai` library, and via Cohere using the `cohere` library. 
 Question: {query} Answer: """

# 将问题作为参数,其它人设、额外信息、回答方式作为常数
prompt_template = PromptTemplate(
input_variables=["query"],
template=template
)

# 只需给模板提供问题即可
print(openai(
prompt_template.format(query="Which libraries and model providers offer LLMs?")))

>>>Hugging Face's `transformers` library, OpenAI using the `openai` library, and Cohere using the `cohere` library.

FewShotPromptTemplate

模型的知识主要来自两部分,一是模型在训练过程的获取的,二是输入的额外信息

FewShotPromptTemplate通过给输入添加额外信息,使得模型拥有更多知识

# 一个完整的prompt,提供类人设,回答方式、
# 但可以拆分为几部分:人设、例子、问题、回答形式
prompt = """The following are exerpts from conversations with an AI assistant. 
The assistant is typically sarcastic and witty, producing creative and funny responses to the users questions. Here are some examples: 
User: How are you? 
AI: I can't complain but sometimes I still do. 
User: What time is it? 
AI: It's time to get a watch. 
User: What is the meaning of life? 
AI: """

# 通过提高temperature 值,可以使得模型输出更随意
openai.temperature = 1.0 # increase creativity/randomness of output
# 提供给模型的知识
examples = [
{
"query": "How are you?",
"answer": "I can't complain but sometimes I still do."
}, {
"query": "What time is it?",
"answer": "It's time to get a watch."
}
]

# create a example template
example_template = """ User: {query} AI: {answer} """

# create a prompt example from above template
example_prompt = PromptTemplate(
input_variables=["query", "answer"],
template=example_template
)

# 模型人设 the prefix is our instructions
prefix = """The following are exerpts from conversations with an AI assistant. 
The assistant is typically sarcastic and witty, producing creative and funny responses to the users questions. 
Here are some examples: """
# and the suffix our user input and output indicator
suffix = """ User: {query} AI: """

# now create the few shot prompt template
few_shot_prompt_template = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix=prefix,
suffix=suffix,
input_variables=["query"],
example_separator="\n\n"
)

参考:
https://www.pinecone.io/learn/series/langchain/langchain-prompt-templates/文章来源地址https://www.toymoban.com/news/detail-558243.html

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

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

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

相关文章

  • 一文读懂「Prompt Engineering」提示词工程

    在了解提示过程之前,先了解一下什么是提示prompt,见最后 附录部分 参考资料: 吴恩达《面向开发者的ChatGPT Prompt Engineering工程》 提示工程(Prompt Engingering),也被称为上下文提示(In-Context Prompting),指的是通过结构化文本等方式来完善提示词,引导LLM输出我们期望的结

    2024年02月01日
    浏览(47)
  • 如何驯化生成式AI,从提示工程 Prompt Engineering 开始

    胡老师语录:

    2023年04月09日
    浏览(54)
  • ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

    出处:https://download.csdn.net/download/weixin_45766780/87746321 感谢中文版翻译https://github.com/datawhalechina/prompt-engineering-for-developers/tree/main/content 国内 == 需要对openapi的endpoint做一个反向代理,并修改本地openai包的源代码== 如下图: completion 原则一:编写清晰、具体的指令 你应该通过提供

    2024年02月03日
    浏览(54)
  • 提示工程(Prompt Engineering)将ChatGPT调教为傲娇猫娘~喵

    Prompt Engineering(提示工程)是指通过设计精心构造的提示(prompt)或者输入,来引导大型语言模型生成特定类型的输出。这个技术背后的原理是利用模型对输入的敏感性,通过提供特定格式或者内容的提示,引导模型生成符合预期的输出。 Prompt Engineering通过设计和构造精心设

    2024年02月05日
    浏览(66)
  • 【简单入门】ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

    出处:https://download.csdn.net/download/weixin_45766780/87746321 感谢中文版翻译https://github.com/datawhalechina/prompt-engineering-for-developers/tree/main/content 国内 == 需要对openapi的endpoint做一个反向代理,并修改本地openai包的源代码== 如下图: completion 原则一:编写清晰、具体的指令 你应该通过提供

    2024年02月05日
    浏览(52)
  • OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(5)转换 / Transforming翻译

    输入一段文本,将其转换或翻译为另一种语言,或帮助拼写和语法纠正 转换格式,例如输入HTML并输出JSON 和(①指南)一样需要搭建一个环境 将以下英文文本翻译为西班牙文 识别语言 同时进行多种翻译,翻译成法语、西班牙语、英语海盗语 有正式和非正式之分。 正式场合

    2024年02月07日
    浏览(47)
  • LLM学习《Prompt Engineering for Developer》

    教程地址:https://github.com/datawhalechina/prompt-engineering-for-developers 分割符 :分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ```,“”\\\", , ,: 等做分隔符,只要能明确起到隔断作用即可。 寻求结构化的输出 。按照某种格式组织

    2024年02月11日
    浏览(34)
  • Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering

    主题: 与 ChatGPT 对话 Python 笔记本 Topics: ChatGPT介绍 审查对话任务 与ChatGPT对话 Python笔记本 ChatGPT介绍 ChatGPT是OpenAI训练的一种新型模型,可以进行对话交互。该模型经过训练,可以按照提示中的指令,在对话上下文中提供适当的回应。ChatGPT 可以帮助回答问题、建议菜谱、按

    2024年02月04日
    浏览(56)
  • 《ChatGPT Prompt Engineering for Developers》课程-提示词原则

    本章的主要内容为编写 Prompt 的原则,在本章中,我们将给出两个编写 Prompt 的原则与一些相关的策略,你将练习基于这两个原则来编写有效的 Prompt,从而便捷而有效地使用 LLM。 本教程使用 OpenAI 所开放的 ChatGPT API,因此你需要首先拥有一个 ChatGPT 的 API_KEY(也可以直接访问

    2024年02月03日
    浏览(41)
  • prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

    ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理,提供了最佳的提示工程实践,并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外,课程里面提供了 Jupyter Notebook 代码实例,可以直接使用

    2024年02月12日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包