文章目录
- 1. 什么是LangChain?
- 2. 核心组件
- 3. 为什么选择LangChain?
- 4. 实战案例
- 安装
- 简单chat案例
- 流式交互
- Prompt模板
- 5. 简单总结
1. 什么是LangChain?
- 定义:LangChain是一个用于构建大语言模型(LLM)应用的开发框架,支持链式调用、记忆管理、工具集成等。
- 核心功能:
- 连接LLM(如GPT-4、DeepSeek)与外部数据/工具
- 构建多步骤任务的工作流(如问答、摘要、数据分析)
- 支持对话记忆和上下文管理
2. 核心组件
- Models(模型),LangChain支持几乎所有的主流LLM
- Prompts(提示词),动态生成提示模板
- Chains(任务链),多步骤任务串联
- Memory(记忆),管理对话历史,甚至支持没有记忆能力的LLM
- Agents(智能代理),能自动选择工具执行相应的任务
3. 为什么选择LangChain?
场景 | 传统方法痛点 | LangChain解决方案 |
---|---|---|
多工具调用 | 需手动拼接API | 通过Agent自动选择工具 |
长文本处理 | 上下文丢失 | 分块+摘要链式处理 |
对话系统 | 状态管理复杂 | 内置Memory组件 |
4. 实战案例
安装
pip install langchain
pip install -U langchain-deepseek
简单chat案例
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate
# 这里只是示意,工程中建议使用getpass.getpass()来获取API密钥
api_key = "your DeepSeek API key"
api_base = "https://api.deepseek.com/"
def simpleDemo():
"""
简单的Langchain使用示例
"""
model = init_chat_model(
model="deepseek-chat",
api_key=api_key,
api_base=api_base,
temperature=0.8,
max_tokens=1024,
model_provider="deepseek",
)
messages = [
SystemMessage("Translate the following English text to Chinese"),
HumanMessage("Hello, how are you?")
]
response = model.invoke(messages)
print(response)
if __name__ == "__main__":
simpleDemo()
流式交互
你在使用各种LLM的时,看见LLM一个字一个字往外蹦字,是不是都惊呆了!别急,用LangChain十分容易的实现这种功能
def streamDemo():
"""
流式输出的Langchain使用示例
"""
model = init_chat_model(
model="deepseek-chat",
api_key=api_key,
api_base=api_base,
temperature=0.8,
max_tokens=1024,
model_provider="deepseek",
)
messages = [
SystemMessage("Translate the following English text to Chinese"),
HumanMessage("Hello, how are you?")
]
for token in model.stream(messages):
print(token.content, end="", flush=True)
print("\n\n")
if __name__ == "__main__":
streamDemo()
是不是代码非常简单!赶快换上你的API key体验一下吧!
Prompt模板
def promptTemplateDemo():
"""
使用PromptTemplate的Langchain使用示例
"""
model = init_chat_model(
model="deepseek-chat",
api_key=api_key,
api_base=api_base,
temperature=0.8,
max_tokens=1024,
model_provider="deepseek",
)
prompt = ChatPromptTemplate.from_messages([
SystemMessage("Translate the following English text to {language}"),
HumanMessage("{text}")
])
messages = prompt.invoke({"language": "Chinese", "text":"Hello, how are you?"})
response = model.invoke(messages)
print(response)
if __name__ == "__main__":
promptTemplateDemo()
5. 简单总结
LangChain大幅降低了LLM应用开发门槛,确实是相当简单易用。并且为我们快速替换LLM提供了非常便利的基础。