一、前言
在当今的自然语言处理领域,LangChain 框架因其强大的功能和灵活性而备受关注。掌握一些实用的小技巧,能够让您在使用 LangChain 框架时更加得心应手,从而更高效地开发出优质的自然语言处理应用。
二、术语
2.1.LangChain
是一个全方位的、基于大语言模型这种预测能力的应用开发工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain 提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。
LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。
LangChain的主要特性:
1.可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等
2.允许语言模型与其环境交互
3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件
4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
5.围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。
2.2.ChatPromptTemplate
是 LangChain 框架中用于创建聊天模型提示的类。
三、前提条件
3.1. 基础环境
- 操作系统:不限
3.2. 安装虚拟环境
conda create --name langchain python=3.10
conda activate langchain
pip install langchain langchain-openai langchain-community
四、技术实现
4.1.ChatPromptTemplate使用示例一
使用SystemMessagePromptTemplate/HumanMessagePromptTemplate/AIMessagePromptTemplate
import os
from langchain.chains.llm import LLMChain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
if __name__ == '__main__':
system_message_template = SystemMessagePromptTemplate.from_template("你是一个乐于助人的AI助手")
human_message_template1 = HumanMessagePromptTemplate.from_template("你好,我叫蜘蛛侠")
ai_message_template1 = AIMessagePromptTemplate.from_template("很高兴认识你,蜘蛛侠!作为一名人工助理,我会尽我所能为你提供帮助。你有什么需要我协助的吗?")
human_message_template2 = HumanMessagePromptTemplate.from_template("我住在广州,你呢?")
ai_message_template2 = AIMessagePromptTemplate.from_template("作为一名人工智能助理,我不居住在任何地方。")
human_message_template3 = HumanMessagePromptTemplate.from_template("我马上要高考了,我喜欢编程,你能推荐一些大学的对口专业吗?")
ai_message_template3 = AIMessagePromptTemplate.from_template("对于喜欢编程的学生来说,以下一些大学专业可能会很适合:1.计算机科学和技术,2.软件工程,3.信息安全,4.人工智能")
human_message_template4 = HumanMessagePromptTemplate.from_template("请问我叫什么名字?")
chat_prompt = ChatPromptTemplate.from_messages(
[system_message_template, human_message_template1, ai_message_template1, human_message_template2, ai_message_template2, human_message_template3, ai_message_template3,
human_message_template4])
# print(chat_prompt.format_prompt(input="我叫什么?").to_messages())
llm = ChatOpenAI(model_name='gpt-3.5-turbo-1106', temperature=0.1, max_tokens=512)
# 创建一个对话链
chain = LLMChain(
llm=llm,
prompt=chat_prompt,
verbose=True
)
print(chain.predict())
调用结果:
4.2.ChatPromptTemplate使用示例二
使用SystemMessage/HumanMessage/AIMessage
import os
from langchain.chains.llm import LLMChain
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
if __name__ == '__main__':
system_message = SystemMessage("你是一个乐于助人的AI助手")
human_message1 = HumanMessage("你好,我叫蜘蛛侠")
ai_message1 = AIMessage("很高兴认识你,蜘蛛侠!作为一名人工助理,我会尽我所能为你提供帮助。你有什么需要我协助的吗?")
human_message2 = HumanMessage("我住在广州,你呢?")
ai_message2 = AIMessage("作为一名人工智能助理,我不居住在任何地方。")
human_message3 = HumanMessage("我马上要高考了,我喜欢编程,你能推荐一些大学的对口专业吗?")
ai_message3 = AIMessage("对于喜欢编程的学生来说,以下一些大学专业可能会很适合:1.计算机科学和技术,2.软件工程,3.信息安全,4.人工智能")
human_message4 = HumanMessage("请问我叫什么名字?")
chat_prompt = ChatPromptTemplate.from_messages([system_message,human_message1,ai_message1,human_message2,ai_message2,human_message3,ai_message3,human_message4])
llm = ChatOpenAI(model_name='gpt-3.5-turbo-1106', temperature=0.1, max_tokens=512)
chain = LLMChain(
llm=llm,
prompt=chat_prompt,
verbose=True
)
print(chain.predict())
调用结果:
4.3.ChatPromptTemplate使用示例三
import os
from langchain.chains.llm import LLMChain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
if __name__ == '__main__':
chat_prompt = ChatPromptTemplate.from_messages(
[
("system", "你是一个乐于助人的AI助手"),
("human", "你好,我叫蜘蛛侠"),
("ai", "很高兴认识你,蜘蛛侠!作为一名人工助理,我会尽我所能为你提供帮助。你有什么需要我协助的吗?"),
("human", "我住在广州,你呢?"),
("ai", "作为一名人工智能助理,我不居住在任何地方。"),
("human", "我马上要高考了,我喜欢编程,你能推荐一些大学的对口专业吗?"),
("ai", "对于喜欢编程的学生来说,以下一些大学专业可能会很适合:1.计算机科学和技术,2.软件工程,3.信息安全,4.人工智能"),
("human", "{input}"),
]
)
llm = ChatOpenAI(model_name='gpt-3.5-turbo-1106', temperature=0.1, max_tokens=512)
# 创建一个对话链
chain = LLMChain(
llm=llm,
prompt=chat_prompt,
verbose=True
)
print(chain.predict(input="我叫什么?"))
调用结果:
标签:__,ai,LangChain,ChatPromptTemplate,开源,langchain,human,import,message From: https://blog.csdn.net/qq839019311/article/details/140776043