LangChain系列文章
大多数LLM应用程序不会直接将用户输入传递给LLM。通常,它们会将用户输入添加到一个更大的文本片段中,称为提示模板,该模板提供有关特定任务的附加上下文。
在前面的示例中,我们传递给模型的文本包含生成公司名称的说明。对于我们的应用程序,如果用户只需提供公司/产品的描述而不必担心给模型提供说明,那将是很好的。
PromptTemplates正是为此而设计的!它们捆绑了从用户输入到完全格式化提示的所有逻辑。这可以非常简单地开始-例如,用于生成上述字符串的提示只是:
from langchain.prompts import PromptTemplate
prompt = PromptTemplate.from_template("制造{product}的公司取什么好名字?")
prompt.format(product="彩色袜子")
制造彩色袜子的公司取什么好名字?
然而,使用这些而不是原始字符串格式化的优势有几个。你可以“部分”地提取变量 - 例如,你可以一次只格式化一些变量。你可以将它们组合在一起,轻松地将不同的模板组合成单个提示。有关这些功能的详细说明,请参阅有关提示的部分。
PromptTemplates
也可以用于生成消息列表。在这种情况下,提示不仅包含有关内容的信息,还包含每条消息(其角色,其在列表中的位置等)的信息。在这里,最常见的情况是 ChatPromptTemplate
是 ChatMessageTemplates
的列表。每个 ChatMessageTemplate
包含有关如何格式化该 ChatMessage
的说明 - 其角色,以及其内容。让我们在下面看一下:
# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI
# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate
# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain
# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv
# 导入Langchain库中的ChatOpenAI类,用于创建和管理OpenAI聊天模型的实例。
from langchain.chat_models import ChatOpenAI
# 调用dotenv库的load_dotenv函数来加载.env文件中的环境变量。
# 这通常用于管理敏感数据,如API密钥。
load_dotenv()
# 创建一个ChatOpenAI实例,配置它使用gpt-3.5-turbo模型,
# 设定温度参数为0.7(控制创造性的随机性)和最大令牌数为60(限制响应长度)。
chat = ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.7,
max_tokens=120
)
# 导入Langchain库中的模板类,用于创建聊天式的提示。
from langchain.prompts import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate
)
template = "你是一个很有帮助的助手,可以进行翻译语言从 {input_language} 到 {output_language}."
human_template = "{text}"
chat_prompt = ChatPromptTemplate.from_messages([
("system", template),
("human", human_template),
])
prompt = chat_prompt.format_messages(input_language="English", output_language="Chinese", text="I love programming.")
print('prompt >>> ', prompt)
# 使用chat函数(需要事先定义)发送生成的提示,获取结果。
result = chat(prompt)
# 打印聊天结果。
print('result >>> ', result)
[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ✗)]$ python Basic/chat_llm_prompt_template.py ──(Sat,Dec23)─┘
prompt >>> [SystemMessage(content='你是一个很有帮助的助手,可以进行翻译语言从 English 到 Chinese.'), HumanMessage(content='I love programming.')]
result >>> content='我热爱编程。'
ChatPromptTemplates也可以用其他方式构建 - 详细信息请参阅提示部分。
https://github.com/zgpeace/pets-name-langchain/tree/develop
https://python.langchain.com/docs/get_started/quickstart