AI创想

标题: LangChain介绍与核心包 [打印本页]

作者: kkkzxt    时间: 3 天前
标题: LangChain介绍与核心包
作者:CSDN博客
LangChain系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 LangChain 简介和核心包;第二章 LangChain 提示词工程;第三章 LangChain 工作流

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录



前言

提示:这里可以添加本文要记录的大概内容:
本文主要整理 LangChain 的简介、框架组成、核心概念、核心包安装、第三方包安装、简易操作,以及 LangChain/LangGraph 新旧接口更新等内容。

提示:以下是本篇文章正文内容,下面案例可供参考
LangChain介绍与核心包

一、LangChain简介

1.LangChain特性

2.LangChain框架组成

3.LangChain(Libraries)库组成

4.langchain任务处理流程

5.核心概念

6.应用场景

二、LangChain核心包安装

1.LangChain生态系统是由多个不同的包组成

2.LangChain:

代码
  1. import langchain
  2. import langchain_core
  3. print("LangChain 主包版本:", langchain.__version__)print("LangChain Core 版本:", langchain_core.__version__)
复制代码
结果
  1. LangChain 主包版本: 1.2.10
  2. LangChain Core 版本: 1.2.14
复制代码
3.LangChain-core

4.LangChain-community

5.LangGraph

代码
  1. from importlib.metadata import version, PackageNotFoundError
  2. try:
  3.     v = version("langgraph")except PackageNotFoundError:import langgraph
  4.     v =getattr(langgraph,"__version__","unknown")print("当前langgraph版本:", v)
复制代码
结果
  1. 当前langgraph版本: 0.6.4
复制代码
6.LangChain-cli

7.LangServe

8.LangSmith

9.LangChain-experimental

三、LangChain第三方包安装

1.langchain-openai包

代码
  1. from langchain_openai import ChatOpenAI
  2. llm = ChatOpenAI(
  3.     model='Pro/deepseek-ai/DeepSeek-V3',
  4.     openai_api_key="************",
  5.     openai_api_base='https://api.siliconflow.cn/v1',
  6.     temperature=0.7,
  7.     max_tokens=8000)
  8. response = llm.invoke("帮我写一篇关于AI的技术文章,100个字")print(response.content)
复制代码
2.langchain-chroma包

3.FAISS包

4.Transformers框架

  1. pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
复制代码
  1. pip install transformers_stream_generator
复制代码
  1. pip install sentence_transformers
复制代码
  1. pip install bitsandbytes datasets loralib
复制代码
  1. pip install langchain-huggingface
复制代码
5.langchain-huggingface包只需单独支持Embedding模型

代码
  1. LangChain接口层
  2.    ↓
  3. HuggingFaceEmbeddings
  4.    ↓
  5. sentence-transformers
  6.    ↓
  7. PyTorch
  8.    ↓
  9. CUDA / CPU
复制代码
  1. pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
复制代码
  1. - 2 安装SentenceTransformers:pip install sentence-transformers
  2. - 3 安装langchain-huggingface:pip install langchain-huggingface
复制代码
代码
  1. from langchain_huggingface import HuggingFaceEmbeddings
  2. llm_emb = HuggingFaceEmbeddings(
  3.     model_name="all-MiniLM-L6-v2",
  4.     cache_folder="D:/python/envs/langchain2/hfmodel",
  5.     model_kwargs={"local_files_only":True,"device":"cpu",},)
复制代码
代码
  1. from langchain_huggingface import HuggingFaceEmbeddings
  2. llm_emb = HuggingFaceEmbeddings(
  3.     model_name="D:/python/envs/langchain2/hfmodel/sentence-transformers/all-MiniLM-L6-v2",)
复制代码
6.Redis包

7.使用通义千问API模型

8.langchain-ollama包

  1. pip install langchain_ollama
复制代码
四、LangChain简易操作

1.安装LangChain

2.初始化模型

代码
  1. from langchain_openai import ChatOpenAI
  2. llm = ChatOpenAI()
复制代码
3.使用LLM 构建简单的链(chains)

代码
  1. from langchain_core.prompts import ChatPromptTemplate
  2. # 创建一个提示模板prompt template# 消息模板定义两条消息,system消息告诉模型扮演的角色,user消息代表用户输入的问题# 用了一个占位符{input} 代表接受一个模版参数input。
  3. prompt = ChatPromptTemplate.from_messages([("system","你是世界级的技术专家"),("user","{input}")])# 基于LCEL表达式构建LLM链,lcel语法类似linux的管道语法|,从左到右按顺序执行# 编排了一个简单的工作流:# 首先执行prompt完成提示词模板(prompt template)格式化处理# 然后将格式化后的prompt传递给llm模型执行,最终返回llm执行结果
  4. chain = prompt | llm
  5. # 调用LLM链并设置模板参数input# invoke会把调用参数传递给prompt提示模板,开始chain定义的步骤开始逐步执行。
  6. chain.invoke({"input":"帮我写一篇关于AI的技术文章,100个字"})
复制代码
4.输出转换

代码
  1. from langchain_core.output_parsers import StrOutputParser
  2. # 创建一个字符串输出解析器
  3. output_parser = StrOutputParser()# LLM链的最后一步将llm模型输出的结果传递给output_parser进行格式转换
  4. chain = prompt | llm | output_parser
  5. # 调用LLM链并提出问题
  6. chain.invoke({"input":"帮我写一篇langchain的技术文章,100个字"})
复制代码
五、LangChain/LangGraph更新接口

1.LangChain的hub接口更新:

旧代码
  1. from langchain import hub
  2. prompt = hub.pull("hwchase17/react")
复制代码
新代码
  1. from langsmith import Client
  2. client = Client()
  3. prompt = client.pull_prompt("hwchase17/react")
复制代码
2.LangChain的create_react_agent和AgentEXecutor接口更新:

旧代码
  1. from langchain.agents import create_react_agent, AgentExecutor
  2. from langchain.agents.react import agent
  3. from langchain.agents.agent import AgentExecutor
  4. # agent = agent.create_react_agent(...)
复制代码
新代码
  1. from langchain_classic.agents import create_react_agent, AgentExecutor
  2. from langchain_classic.agents.react import agent
  3. from langchain_classic.agents.agent import AgentExecutor
复制代码
旧代码
  1. from langchain_community.agent_toolkits.sql.toolkit import SQLDatabaseToolkit
  2. from langchain_community.utilities import SQLDatabase
  3. from langchain_openai import ChatOpenAI
  4. from langsmith import Client
  5. from langchain_classic.agents import AgentExecutor, create_react_agent
  6. model = ChatOpenAI(
  7.     model="Pro/deepseek-ai/DeepSeek-V3",
  8.     openai_api_key="************",
  9.     openai_api_base="https://api.siliconflow.cn/v1",
  10.     temperature=0,
  11.     max_tokens=8000,)
  12. db = SQLDatabase.from_uri(
  13.     database_uri=r"sqlite:///D:\python\envs\langchain2\db\database.db")
  14. toolkit = SQLDatabaseToolkit(db=db, llm=model)
  15. sql_tools = toolkit.get_tools()
  16. client = Client()
  17. prompt = client.pull_prompt("hwchase17/react")
  18. text_agent = create_react_agent(
  19.     llm=model,
  20.     tools=sql_tools,
  21.     prompt=prompt,)
  22. agent_executor = AgentExecutor(agent=text_agent, tools=sql_tools)input="请执行SQL语句统计sqlite数据库中student表的总行数,给出具体的数字答案"
  23. result = agent_executor.invoke({"input":input})print(result)
复制代码
新代码
  1. from langchain_community.agent_toolkits.sql.toolkit import SQLDatabaseToolkit
  2. from langchain_community.utilities import SQLDatabase
  3. from langchain_openai import ChatOpenAI
  4. from langsmith import Client
  5. from langchain.agents import create_agent
  6. model = ChatOpenAI(
  7.     model="Pro/deepseek-ai/DeepSeek-V3",
  8.     openai_api_key="************",
  9.     openai_api_base="https://api.siliconflow.cn/v1",
  10.     temperature=0,
  11.     max_tokens=8000,)
  12. db = SQLDatabase.from_uri(
  13.     database_uri=r"sqlite:///D:\python\envs\langchain2\db\database.db")
  14. toolkit = SQLDatabaseToolkit(db=db, llm=model)
  15. sql_tools = toolkit.get_tools()
  16. client = Client()
  17. prompt = client.pull_prompt("hwchase17/react")
  18. agent = create_agent(
  19.     model=model,
  20.     tools=sql_tools,
  21.     system_prompt=("你是一个 SQLite 数据库助手。""当用户询问数据库内容时,先查看可用表和表结构,再生成正确的 SQL。""如果工具返回了查询结果,就基于结果直接给出最终答案。"),)input="请执行SQL语句统计sqlite数据库中student表的总行数,给出具体的数字答案"
  22. result = agent.invoke({"messages":[{"role":"user","content":input}]})print(result)
复制代码
3.LangChain的text_splitter接口更新:

  1. pip install langchain-text-splitters
复制代码
旧代码
  1. from langchain.text_splitter import MarkdownTextSplitter
  2. from langchain.text_splitter import CharacterTextSplitter
  3. from langchain.text_splitter import TokenTextSplitter
  4. from langchain.text_splitter import RecursiveCharacterTextSplitter
复制代码
新代码
  1. from langchain_text_splitters import MarkdownTextSplitter
  2. from langchain_text_splitters import CharacterTextSplitter
  3. from langchain_text_splitters import TokenTextSplitter
  4. from langchain_text_splitters import RecursiveCharacterTextSplitter
复制代码
4.LangChain的TavilySearch接口更新:

旧代码
  1. from langchain_community.tools.tavily_search import TavilySearchResults
  2. # 工具对象
  3. web_search = TavilySearchResults(
  4.     max_results=2,
  5.     tavily_api_key="************")
复制代码
新代码
  1. from langchain_tavily import TavilySearch  # Tavily网络搜索工具# 工具对象
  2. web_search = TavilySearch(
  3.     tavily_api_key="************",# Tavily密钥
  4.     max_results=2,# 限制搜索结果数量,减少冗余
  5.     search_depth="basic"# 基础搜索模式(速度快,适合通用问题))
复制代码
5.LangGraph的AgentState状态结构体废弃:

旧代码
  1. from langgraph.prebuilt.chat_agent_executor import AgentState
  2. """
  3. AgentState的状态结构体
  4. class AgentState(TypedDict):
  5.     messages: Annotated[Sequence[BaseMessage], add_messages]
  6.     remaining_steps: NotRequired[RemainingSteps]    # 定义最多的思考次数
  7. """
复制代码
新代码
  1. from typing_extensions import TypedDict
  2. from typing import Annotated
  3. from langgraph.graph.message import add_messages
  4. from langchain_core.messages import BaseMessage
  5. classMyAgentState(TypedDict):
  6.     messages: Annotated[list[BaseMessage], add_messages]# 可增加另外需要的状态键
复制代码

总结

本文整理了 LangChain 的基础概念与核心包生态,包括 langchain-core、langchain-community、langchain、LangGraph、LangServe、LangSmith,以及常用第三方集成包的安装方式。实际开发中,建议根据项目需要按需安装模型、向量数据库、Embedding、检索、Agent 等相关依赖,并注意新版本 LangChain/LangGraph 的接口变化,避免继续使用已废弃的旧接口。

原文地址:https://blog.csdn.net/qq_40248599/article/details/160978522




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4