LangChain--如何使用大模型

2024-08-05 08:39:56 浏览数 (2)

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='珍贵的玫瑰花瓣,如同初升的朝阳般温暖而甜美,为您的生活增添一丝独特的香气和温暖。


	

0 人点赞