LangChain极速入门:用Python构建AI应用的新范式
LangChain极速入门:用Python构建AI应用的新范式
—— 让语言模型成为你的开发助手
最近AI非常的火,而 LangChain 可以说是给开发AI 应用提供了无限可能。
为什么需要LangChain?
在GPT-4、Llama等大模型爆发的时代,开发者面临新挑战:
# 传统直接调用API的局限
response = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "user", "content": "解释量子纠缠"}]
)
# 但如何实现:记忆对话?访问网络?执行代码?组合多模型?
👉 LangChain提供了模块化组件和编排框架,解决AI应用开发的三大痛点:
- 上下文管理(记忆/检索)
- 外部工具集成(搜索/数据库/API)
- 任务链式执行(顺序/分支/循环)
核心组件图解
快速上手(Python版)
1️⃣ 安装
pip install langchain-core==0.2.0 langchain-openai==0.3.0
2️⃣ 基础链式调用
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI# 创建链
prompt = ChatPromptTemplate.from_template("{topic}是什么?")
model = ChatOpenAI(model="gpt-4-turbo")
chain = prompt | model # 管道操作符# 执行链
response = chain.invoke({"topic": "LangChain"})
print(response.content) # 输出完整解释
3️⃣ 连接外部工具
from langchain.tools import DuckDuckGoSearchRun# 创建搜索工具
search = DuckDuckGoSearchRun()# 组合模型与工具
search_chain = prompt | model | search # 模型生成搜索词 -> 执行搜索print(search_chain.invoke({"topic": "2024年AI领域突破"}))
实战:构建天气查询助手
from langchain.agents import Tool, AgentExecutor, create_react_agent# 定义天气API工具
def get_weather(city: str):# 伪代码:调用真实天气APIreturn f"{city}天气:25℃,晴"tools = [Tool(name="Weather", func=get_weather,description="查询城市天气"
)]# 创建ReAct智能体
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)# 执行对话
result = agent_executor.invoke({"input": "北京和上海哪边更适合户外活动?"
})
print(result["output"])
# 输出:模型会思考:"需要先获取两地天气→比较结果→给出建议"
高级技巧
-
记忆管理 - 自动保存对话上下文
from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() agent_executor.memory = memory
-
检索增强(RAG) - 连接私有知识库
from langchain_community.vectorstores import FAISS retriever = FAISS.load_local("my_data").as_retriever()
-
异步处理 - 并行调用多个模型
async for chunk in chain.astream({"topic": "区块链"}):print(chunk, end="", flush=True) # 流式输出
性能优化贴士
-
缓存机制 - 减少重复调用
from langchain.cache import SQLiteCache import langchain langchain.llm_cache = SQLiteCache(".langchain.db")
-
流式传输 - 提升用户体验
for chunk in chain.stream({"topic": "太空探索"}):print(chunk.content, end="")
-
量化评估 - 使用LangSmith平台
export LANGCHAIN_TRACING_V2=true export LANGCHAIN_API_KEY="your-api-key"
为什么开发者爱用LangChain?
- 标准化接口:统一对接30+模型提供商(OpenAI/Anthropic/Mistral等)
- 可视化调试:通过LangSmith查看调用链路
- 生态丰富:200+现成组件(PDF解析器/SQL生成器等)
欢迎在评论区交流你的idea!