LangChain 第一课:基础入门
1. LangChain简介
LangChain 是一个用于构建基于语言模型的应用的框架。它允许开发者将不同的组件(如模型、提示、记忆等)组合在一起,创建复杂的应用。
2. 安装与配置
首先,我们需要安装 LangChain。你可以使用 pip 来安装:
pip install langchain
我们使用deepseek作为LLM服务,因此还需要安装langchain的deepseek组件。
pip install -U langchain-deepseek
有两种方式可以设置ds的API_KEY:
- export DEEPSEEK_API_KEY="your-api-key"
- 在.env中设置:DEEPSEEK_API_KEY="your-api-key",我们采用第二种
安装完成后,确保你的 Python 环境已经配置好,并且可以正常使用。
因为考虑到后续可能会对接多个LLM服务商,因此将LLM设计成工厂模式,负责生成Langchain的llm实例。
下面代码演示如何将deepseek集成到Langchain中,其他的LLM厂商的请参考相关的文档。
LLM工厂类代码:
"""
llm_factory.py 用于创建 LLM 实例
"""
import os
import dotenv
dotenv.load_dotenv()
class LLMFactory:
"""LLM 工厂类,用于创建不同类型的 LLM 实例"""
@staticmethod
def create_llm(llm_type: str = "deepseek", **kwargs):
"""
创建 LLM 实例
Args:
llm_type (str): LLM 类型,目前支持 "deepseek"
**kwargs: 传递给 LLM 的额外参数
Returns:
ChatDeepSeek: LLM 实例
Raises:
ValueError: 如果传入不支持的 llm_type
"""
if not os.getenv("DEEPSEEK_API_KEY"):
raise ValueError("请先设置 DEEPSEEK_API_KEY 环境变量")
if llm_type == "deepseek":
from langchain_deepseek import ChatDeepSeek
return ChatDeepSeek(
model="deepseek-chat",
temperature=kwargs.get("temperature", 0.7),
max_tokens=kwargs.get("max_tokens", 100),
)
else:
raise ValueError(f"不支持的 LLM 类型: {llm_type}")
3. 基本组件
- Chains:Chains 是 LangChain 中的核心概念,它允许你将多个步骤组合在一起,形成一个完整的流程,可以理解为工厂中的生产线。
- Prompts:Prompts 是用于生成模型输入的模板,你可以通过设计不同的 Prompt 来控制模型的输出。同openai等大多数的提示词模板相似,提供两种类似的提示词:
- system:全局的提示词,主要修饰用户输入的提示词的前置内容,例如”设定身份、背景、目标“等内容
- human:用户输入的提示词
- Models:Models 是 LangChain 中使用的语言模型,如 GPT-3、GPT-4 等。
- Memory:Memory 用于存储和管理对话的历史记录,以便在后续的对话中使用。
4. 简单应用
让我们从一个简单的问答系统开始。我们将使用 LangChain 的 LLMChain
来创建一个简单的问答系统。
主程序代码:
"""
lesson_1.py 使用 LangChain 的 LLMChain 进行翻译
"""
from util.llm_factory import LLMFactory
llm = LLMFactory.create_llm(llm_type="deepseek")
# 创建提示模板
#1. 生成所需要的LLM对象,这里是用deepseek。
from langchain_core.prompts import ChatPromptTemplate
# 2. 设置提示词模板,分为system和human两个层级的提示词。
prompt = ChatPromptTemplate(
[
(
"system",
"You are a helpful assistant that translates Chinese to English. Translate the user sentence.",
),
("human", "{input}"),
]
)
# 3. 接收用户的输入内容,并套用提示词模板
input = input("请输入要翻译的中文内容:")
print(f"正在翻译:{input}")
messages = prompt.format_messages(input=input)
# 4. 调用llm模型
response = llm.invoke(messages)
print(response.content)
执行结果:
python code/part-1/lesson_1.py
请输入要翻译的中文内容:我喜欢研究人工智能技术
正在翻译:我喜欢研究人工智能技术
I enjoy researching artificial intelligence technology.
评论区