LangChain是一个用于构建和管理语言模型链的开源框架,旨在帮助开发者更高效地构建和部署复杂的自然语言处理(NLP)应用。LangChain自身并不开发LLMs,它的核心理念是为各种LLMs实现通用的接口,把LLMs相关的组件“链接”在一起,简化LLMs应用的开发难度
LangChain的应用场景非常广泛:智能问答系统、文本生成、信息提取、智能客服等等。
LangChain主要组件
- Models:模型
- Prompts:提示
- Memory:记忆
- Indexes:索引
- Chains:链,一系列对各种组件的调用
- Agents:代理,决定模型采取哪些行动
Models
Models模块提供了与不同类型语言模型进行交互的接口和能力。这些语言模型包括但不限于OpenAI的GPT系列、Google的LaMDA、Meta的LLaMa等。通过Models模块,开发者可以轻松地接入和使用这些强大的语言模型,构建复杂的自然语言处理任务。
在LangChain中,语言模型被分为LLMs、Chat Models和Text Embedding三类。Models模块针对不同类型的模型提供了相应的类和操作方法,以满足不同的应用场景需求。
常用大模型的下载库:huggingface、modelscope
代码语言:javascript复制pip install langchain
pip install qianfan
我们可以去百度千帆大模型平台,创建模型,调用API Key 和 Secret Key:
我们可以通过langchain调用文心一言4.0模型:
代码语言:javascript复制import os
from langchain_community.llms import QianfanLLMEndpoint
os.environ['QIANFAN_AK'] = "*********"
os.environ['QIANFAN_SK'] = "*********"
llm = QianfanLLMEndpoint(model="ERNIE-Bot-turbo")
res = llm("请写一首诗把")
print(res)
输出:
代码语言:javascript复制好的,以下是一首关于春天的诗:
春风轻拂绿意浓,
花开满园醉人心。
蝴蝶翩翩飞舞处,
小鸟欢歌乐不停。
田野间麦浪滚滚,
桃花笑语映日红。
万物复苏生机起,
春日美景入诗中。
Chat Models
Chat Models模块专注于处理和交互基于聊天消息格式的语言模型。与传统的LLMs(大型语言模型)不同,Chat Models的输入和输出是格式化的聊天消息,这使得它们更适合处理对话式任务和生成更加自然、上下文相关的响应。
代码语言:javascript复制import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain.schema.messages import HumanMessage
os.environ['QIANFAN_AK'] = "***"
os.environ['QIANFAN_SK'] = "***"
chat = QianfanChatEndpoint(model="ERNIE-Bot-turbo")
messages = [HumanMessage(content="给我写一首唐诗")]
res = chat(messages)
print(res)
输出:
代码语言:javascript复制content='当然可以。这是一首名为《秋日思乡》的唐诗:nn秋风吹过菊花黄,n归心似箭逐月行。n故土犹在梦难留,n望断天涯泪满衣。' additional_kwargs={'finish_reason': '', 'request_id': 'as-508nd0m8r2', 'object': 'chat.completion', 'search_info': [], 'usage': {'prompt_tokens': 5, 'completion_tokens': 50, 'total_tokens': 55}} response_metadata={'token_usage': {'prompt_tokens': 5, 'completion_tokens': 50, 'total_tokens': 55}, 'model_name': 'ERNIE-Bot-turbo', 'finish_reason': 'stop', 'id': 'as-508nd0m8r2', 'object': 'chat.completion', 'created': 1722134892, 'result': '当然可以。这是一首名为《秋日思乡》的唐诗:nn秋风吹过菊花黄,n归心似箭逐月行。n故土犹在梦难留,n望断天涯泪满衣。', 'is_truncated': False, 'need_clear_history': False, 'usage': {'prompt_tokens': 5, 'completion_tokens': 50, 'total_tokens': 55}} id='run-871f99c6-248e-48d9-91c6-7e7779bb59b2-0' usage_metadata={'input_tokens': 5, 'output_tokens': 50, 'total_tokens': 55}
提示模板
提示模板就是把一些常见的提示整理成模板,用户只需要修改模板中特定的词语,就能快速准确地告诉模型自己的需求。
代码语言:javascript复制import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain.prompts import ChatPromptTemplate
os.environ['QIANFAN_AK'] = "***"
os.environ['QIANFAN_SK'] = "***"
template_str = """你是一位专业的小红书运营官。n
对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗? 一句话"""
promp_emplate = ChatPromptTemplate.from_template(template_str)
prompt = promp_emplate.format_messages(flower_name=["玫瑰"], price='50')
print('prompt-->', prompt)
chat = QianfanChatEndpoint(
streaming=True,model="ERNIE-Bot-turbo"
)
result = chat(prompt)
print(result)
输出:
代码语言:javascript复制content='珍贵的玫瑰花瓣,如同初升的朝阳般温暖而甜美,为您的生活增添一丝独特的香气和温暖。