LangChain 零基础入门:一步一步带你开发第一个智能体应用

部署运行你感兴趣的模型镜像

近年来,随着计算能力的提升和算法的革新,LLM的规模和能力呈现爆发式增长。作为开发者,如何快速入门并构建自己的AI应用?本文将带您从零开始,了解大模型应用的基础概念,入门LangChain框架,并动手构建第一个智能体应用。

1、大模型基本概念

1.1 LLM(大语言模型)

LLM(Large Language Model)是指参数量巨大的语言模型,通过在海量文本数据上进行预训练,具备了强大的自然语言理解和生成能力。LLM经历了从几亿参数到数千亿参数的飞跃,能力也从简单的文本生成提升至复杂的推理、规划和问题解决,甚至展现出了"涌现"特性——当模型规模达到一定程度时,突然出现之前未被预见的新能力。现代科技巨头纷纷推出大型语言模型,包括OpenAI的GPT系列、Anthropic的Claude、百度的文心一言、阿里巴巴的通义千问以及清华大学的ChatGLM等。

img

图1 大模型发展历史

LLM具备如下的特性:

1)海量参数:动辄数十亿到数千亿的参数量,使模型能够捕捉语言的复杂性

2)上下文学习:能够在对话过程中理解和记忆之前的交流内容

3)零样本/少样本学习:无需或仅需少量示例即可适应新任务

4)多模态能力:越来越多的模型能够处理文本、图像、音频等多种输入形式

1.2 RAG(检索增强生成)

(1)RAG的定义与核心思想

检索增强生成(Retrieval-Augmented Generation,RAG)是一种将大语言模型与外部知识库相结合的技术架构,通过在生成回答前先检索相关信息来增强模型的准确性和可靠性。RAG是"优化大语言模型输出的过程,使其在生成响应之前引用训练数据源之外的权威知识库"。

RAG解决了传统LLM面临的主要挑战,包括:知识截止问题、幻觉现象、领域知识局限、可解释性不足(难以追溯信息来源和验证准确性)。LLM就像一个"过度热情的新员工,拒绝了解时事但总是满怀信心地回答每个问题",而RAG则为其提供了可靠的信息来源。

(2)RAG的工作原理

RAG系统通常包含以下核心组件:

1)知识索引构建:将外部文档分割、向量化并存储在向量数据库中

2)检索过程:将用户查询转换为向量,在知识库中找到最相关的文档片段

3)生成增强:将检索信息与原始查询组合,指导LLM生成准确回答

img

图2 RAG工作原理图

(3)RAG技术演进

三篇关于RAG的关键综述[1][2][3]涵盖了RAG的庞大生态。RAG系统已经从最初的简单形态变得越来越复杂和完善,技术范式经历了显著演进:

- NaiveRAG:最基础的"检索-生成"模式,直接将检索结果拼接到提示中

- AdvancedRAG:引入预处理、后处理和检索优化,提升检索质量和生成效果

- ModularRAG:采用模块化设计,支持灵活的组件组合和流程定制

- GraphRAG:基于知识图谱的检索,能够处理复杂的关系推理

最新的AgenticRAG范式融合了数据库、模型微调、逻辑推理、智能体等多种技术,使得其可以适应于各种复杂灵活的任务场景中。这种范式不再是简单的检索-生成流程,而是具备自主决策能力的智能系统,能够支持:动态规划检索策略、多轮交互推理、工具集成调用、从用户反馈自适应学习。如LangChain官方教程所展示的,仅用约20行代码就能构建一个功能完整的RAG问答系统,这使得RAG技术具有了广泛的普及潜力。

1.3 Agent(智能体)

Agent是一个能够感知环境、做出决策并执行行动的智能系统。在大模型语境下,Agent是指能够使用工具、调用API、执行复杂任务的AI助手。根据Azilen的AI Agent架构指南,现代AI Agent需要具备五个核心能力:感知(Perception)、记忆(Memory)、规划(Planning)、执行(Execution)和学习(Learning)。

img

图3 Agent的基本功能

下面的示意图展示了一个现代化、企业级的AI Agent完整架构,它不仅仅是一个简单的问答系统,而是一个具备完整认知能力的智能体系统。

img

图4 Agent流程图

Agent 和传统程序的区别如下:

特性传统程序Agent
执行方式预定义流程动态决策
适应性固定逻辑灵活应变
交互方式结构化输入自然语言
问题解决特定场景通用推理
1.4 Model Context Protocol

(1)简介与架构

Model Context Protocol(模型上下文协议)是由Anthropic于2024年11月开源的一项革命性标准,旨在解决AI助手与数据源之间的连接难题。正如Anthropic官方介绍所述,MCP就像是AI应用的"USB-C接口",提供了一种标准化的方式来连接AI模型与不同的数据源和工具。

架构采用简洁的客户端-服务器模式:MCP官方文档显示,AI应用(如Claude Desktop、IDE等)作为MCP主机,通过MCP客户端与多个MCP服务器建立1对1连接,每个服务器负责暴露特定的工具或数据源功能。这种设计使得AI系统能够安全地访问本地数据源(如文件、数据库)和远程服务(如API、云服务),所有通信都通过标准化的MCP协议进行,确保了兼容性和结构化响应。

MCP官方文档链接:

https://modelcontextprotocol.io/introduction

img

图5 MCP原理图

(2)MCP的优势与潜力

MCP的核心优势在于彻底消除了AI系统的"信息孤岛"问题,将AI从被动的问答工具转变为主动的行动执行者。根据deepset的分析,MCP标准化了上下文集成,使开发者能够更快地构建定制化AI应用,无需为每个新用例重新发明实现模式。其潜力体现在多个维度:

- 技术层面,MCP提供了预构建集成、供应商灵活性和数据安全最佳实践;

- 生态层面,AWS、GitHub甚至OpenAI等行业巨头的官方采用正在推动MCP成为企业AI系统的新标准;

- 应用层面,从金融分析师动态整合投资数据,到开发者无缝连接代码库和工具,MCP正在实现真正的"即插即用"AI集成。随着生态系统的成熟,MCP将使AI系统在不同工具和数据集之间保持上下文连续性,用可持续的架构取代当今分散的集成方案,最终实现AI从"智能对话"向"智能行动"的根本性转变。

2、LangChain核心概念与思想

2.1 LangChain简介

(1)什么是LangChain?

LangChain是一个用于开发由语言模型驱动的应用程序的框架,它提供了一套完整的工具链,让开发者能够轻松地将语言模型与外部数据源、API和工具集成,创建智能、上下文感知的AI应用。具有模块化、可扩展、标准化、易用的特点。

img

图6 LangChain功能图

(2)官方文档链接:

- 英文文档

https://python.langchain.com/docs/

- 概念指南

https://python.langchain.com/docs/concepts/

2.2 核心组件详解

根据LangChain官方文档,LangChain主要包含模型输入输出、检索、智能体、核心组件等模块:

img

图7 LangChain的核心模块图

3、开发环境搭建

Development Environment

3.1 Conda环境配置

首先安装Anaconda或Miniconda,然后创建专用的Python环境:

- Anaconda安装:

https://anaconda.org/anaconda/conda

- Miniconda安装:

https://www.anaconda.com/docs/getting-started/miniconda/install


# 创建新环境
conda create -n langchain-env python=3.11
# 激活环境
conda activate langchain-env
3.2 LangChain安装与配置

# 安装核心包
pip install langchain
# 安装社区包(包含更多集成)
pip install langchain-community
# 安装OpenAI集成
pip install langchain-openai
# 安装其他常用包
pip install langchain-core langchain-experimental
3.3 其它常用依赖包安装

# 安装HTTP客户端
pip install httpx requests
# 安装异步支持
pip install aiohttp
# 安装JSON处理
pip install pydantic
# 安装环境变量管理
pip install python-dotenv

3.4 开发工具推荐

(1)IDE:VS Code或VS Code的其它分支版本如Cursor

(2)调试工具:LangSmith(LangChain官方推荐)

- VS Code:

https://code.visualstudio.com/

- LangSmith:

https://docs.smith.langchain.com/

接下来,我们将介绍简单的LangChain链(第四部分)和智能体应用(第五部分),让读者能够逐步理解从基础链到复杂智能体的演进过程。

4、第一个LangChain应用:问答链

LangChain Application: Question-Answering Chain

深入复杂的智能体之前,让我们先从最基础的LangChain应用开始——构建一个简单的问答链。这将帮助您理解LangChain的核心概念和工作流程。

4.1 什么是LangChain链?

链(Chain)是LangChain的基础概念,它将多个组件按顺序连接起来,形成一个完整的处理流程。链可以将提示模板、语言模型和输出解析器组合在一起,创建强大的AI应用。

一个基本的链通常包含输入处理、提示构建、模型调用、输出处理四个步骤:

img

图8 链的基本流程

4.2 项目结构设置

让我们先创建一个简单的项目结构:


langchain_demo/
├── simple_chain.py     # 简单问答链
├── rag_chain.py        # RAG问答链
├── data/               # 数据文件
│   └── sample.txt      # 示例文档
└── .env                # 环境变量
4.3 基础问答链实现

(1)步骤1:创建环境变量文件


# .env
OPENAI_API_KEY=your_openai_api_key_here

(2)步骤2:实现简单问答链


# simple_chain.py
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 加载环境变量
load_dotenv()

defcreate_simple_qa_chain():
"""创建简单的问答链"""

# 1. 初始化语言模型
    llm = ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0.7,  # 稍高的温度让回答更有创意
        api_key=os.getenv("OPENAI_API_KEY")
    )

# 2. 创建提示模板
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是一个知识渊博、友善的AI助手。请用简洁明了的语言回答用户的问题。"),
        ("user", "{question}")
    ])

# 3. 创建输出解析器
    output_parser = StrOutputParser()

# 4. 使用LCEL(LangChain Expression Language)构建链
    chain = prompt | llm | output_parser

return chain

defmain():
"""主函数"""
    print("🤖 简单问答助手启动成功!")
    print("您可以问我任何问题,输入 'quit' 退出。\n")

# 创建问答链
    qa_chain = create_simple_qa_chain()

whileTrue:
try:
# 获取用户输入
            question = input("用户:").strip()

if question.lower() in ['quit', 'exit', '退出']:
                print("再见!👋")
break

ifnot question:
continue

# 执行链
            response = qa_chain.invoke({"question": question})
            print(f"助手:{response}\n")

except KeyboardInterrupt:
            print("\n再见!👋")
break
except Exception as e:
            print(f"出现错误:{str(e)}\n")

if __name__ == "__main__":
    main()

4.4 进阶:RAG问答链

现在让我们构建一个更实用的RAG(检索增强生成)问答链,它可以基于您的文档回答问题:


# rag_chain.py
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_core.runnables import RunnablePassthrough

load_dotenv()

defcreate_rag_chain():
"""创建RAG问答链"""

# 1. 加载和处理文档
    print("📚 正在加载文档...")

# 创建示例文档
    sample_text = """
    LangChain是一个用于开发由语言模型驱动的应用程序的框架。
    它提供了标准化的接口和工具,让开发者能够轻松构建复杂的AI应用。

    LangChain的核心组件包括:
    1. Model I/O:与语言模型的接口
    2. Retrieval:与应用特定数据的接口  
    3. Agents:让模型选择使用哪些工具

    通过LangChain,开发者可以构建聊天机器人、文档问答系统、代码助手等各种应用。
    """

# 保存示例文档
    os.makedirs("data", exist_ok=True)
withopen("data/sample.txt", "w", encoding="utf-8") as f:
        f.write(sample_text)

# 加载文档
    loader = TextLoader("data/sample.txt", encoding="utf-8")
    documents = loader.load()

# 2. 分割文档
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=500,
        chunk_overlap=50
    )
    splits = text_splitter.split_documents(documents)

# 3. 创建向量存储
    print("🔍 正在创建向量索引...")
    embeddings = OpenAIEmbeddings()
    vectorstore = FAISS.from_documents(splits, embeddings)
    retriever = vectorstore.as_retriever()

# 4. 创建提示模板
    prompt = ChatPromptTemplate.from_template("""
    基于以下上下文信息回答问题。如果上下文中没有相关信息,请说"根据提供的信息无法回答这个问题"。

    上下文:
    {context}

    问题:{question}

    回答:
    """)

# 5. 初始化模型
    llm = ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0,
        api_key=os.getenv("OPENAI_API_KEY")
    )

# 6. 构建RAG链
defformat_docs(docs):
return"\n\n".join(doc.page_content for doc in docs)

    rag_chain = (
        {"context": retriever | format_docs, "question": RunnablePassthrough()}
        | prompt
        | llm
        | StrOutputParser()
    )

return rag_chain

defmain():
"""主函数"""
    print("📖 RAG问答助手启动中...")

# 创建RAG链
    rag_chain = create_rag_chain()

    print("✅ RAG问答助手启动成功!")
    print("您可以基于加载的文档问我关于LangChain的问题,输入 'quit' 退出。\n")

whileTrue:
try:
# 获取用户输入
            question = input("用户:").strip()

if question.lower() in ['quit', 'exit', '退出']:
                print("再见!👋")
break

ifnot question:
continue

# 执行RAG链
            print("🔍 正在搜索相关信息...")
            response = rag_chain.invoke(question)
            print(f"助手:{response}\n")

except KeyboardInterrupt:
            print("\n再见!👋")
break
except Exception as e:
            print(f"出现错误:{str(e)}\n")

if __name__ == "__main__":
    main()
4.5 运行与测试

# 运行简单问答链
python simple_chain.py
# 运行RAG问答链
python rag_chain.py

测试示例

  • 简单问答链:

用户:什么是人工智能?
助手:人工智能(AI)是计算机科学的一个分支,致力于创建能够执行通常需要人类智能的任务的系统...

用户:Python有什么优势?
助手:Python的主要优势包括:1. 语法简洁易读 2. 丰富的库生态系统 3. 跨平台兼容性...
  • RAG问答链:

用户:LangChain的核心组件有哪些?
助手:根据提供的信息,LangChain的核心组件包括:
1. Model I/O:与语言模型的接口
2. Retrieval:与应用特定数据的接口  
3. Agents:让模型选择使用哪些工具

用户:LangChain可以构建什么应用?
助手:通过LangChain,开发者可以构建聊天机器人、文档问答系统、代码助手等各种应用。
4.6 链的工作原理解析

让我们深入理解链的工作机制:

- LCEL语法: prompt | llm | output_parser 使用管道操作符连接组件

- 数据流: 用户输入 → 提示格式化 → LLM处理 → 输出解析 → 最终结果

- 组件复用: 每个组件都可以独立测试和替换

- 错误处理: 链会自动处理组件间的数据传递和错误

5、进阶应用:构建智能体

通过前面的学习,我们已经掌握了基础的链操作。现在让我们进入更高级的领域——智能体(Agent)。智能体不仅能回答问题,还能主动使用工具执行复杂任务。

5.1 从链到智能体的演进

下表展示了链和智能体的区别:

特性链(Chain)Agent
执行方式预定义流程动态决策
工具使用固定调用智能选择
适应性有限高度灵活
复杂度简单复杂

智能体的核心优势在于它能够:

- 动态推理: 根据情况选择最合适的工具

- 多步执行: 完成需要多个步骤的复杂任务

- 错误恢复: 当某个工具失败时能够尝试其他方案

5.2 项目设置

基于openai的函数调用能力,我们构建一个智能天气助手,具备以下功能:

img

图9 天气查询系统流程图

项目结构如下:


weather_agent/
├── main.py              # 主程序
├── tools/               # 工具模块
│   └── weather_tool.py  # 天气工具
├── config/              # 配置文件
│   └── settings.py      # 设置
└── .env                 # 环境变量

5.3 代码实现步骤

(1)步骤1:创建环境变量文件


# .env
OPENAI_API_KEY=your_openai_api_key_here
WEATHER_API_KEY=your_weather_api_key_here

天气API如下:

https://openweathermap.org/api

(2)步骤2:实现天气工具


# tools/weather_tool.py
import requests
from langchain.tools import BaseTool
from typing import Optional
import os
from dotenv import load_dotenv

load_dotenv()

classWeatherTool(BaseTool):
    name = "get_weather"
    description = "获取指定城市的当前天气信息。输入应该是城市名称。"
    
    def_run(self, city: str) -> str:
        """获取天气信息"""
        api_key = os.getenv("WEATHER_API_KEY")
        base_url = "http://api.openweathermap.org/data/2.5/weather"
        
        params = {
            "q": city,
            "appid": api_key,
            "units": "metric",
            "lang": "zh_cn"
        }
        
        try:
            response = requests.get(base_url, params=params)
            data = response.json()
            
            if response.status_code == 200:
                weather = data["weather"][0]["description"]
                temp = data["main"]["temp"]
                feels_like = data["main"]["feels_like"]
                humidity = data["main"]["humidity"]
                
                returnf"{city}当前天气:{weather},温度{temp}°C,体感温度{feels_like}°C,湿度{humidity}%"
            else:
                returnf"无法获取{city}的天气信息,请检查城市名称是否正确。"
                
        except Exception as e:
            returnf"获取天气信息时出错:{str(e)}"
    
    asyncdef_arun(self, city: str) -> str:
        """异步运行(暂时使用同步实现)"""
        return self._run(city)

(3)步骤3:创建智能体


# main.py
import os
from dotenv import load_dotenv
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from tools.weather_tool import WeatherTool

# 加载环境变量
load_dotenv()

defcreate_weather_agent():
"""创建天气智能体"""

# 初始化LLM
    llm = ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0,
        api_key=os.getenv("OPENAI_API_KEY")
    )

# 创建工具列表
    tools = [WeatherTool()]

# 创建提示词模板
    prompt = ChatPromptTemplate.from_messages([
        ("system", """你是一个专业的天气助手。你可以帮助用户查询任何城市的天气信息。

        当用户询问天气时,请:
        1. 识别用户想查询的城市
        2. 使用get_weather工具获取天气信息
        3. 用友好、自然的语言回复用户

        如果用户没有明确指定城市,请询问具体的城市名称。"""),
        ("user", "{input}"),
        MessagesPlaceholder(variable_name="agent_scratchpad"),
    ])

# 创建智能体
    agent = create_openai_functions_agent(llm, tools, prompt)

# 创建执行器
    agent_executor = AgentExecutor(
        agent=agent,
        tools=tools,
        verbose=True,
        handle_parsing_errors=True
    )

return agent_executor

defmain():
"""主函数"""
    print("🌤️ 天气智能助手启动成功!")
    print("您可以询问任何城市的天气情况,输入 'quit' 退出。\n")

# 创建智能体
    agent = create_weather_agent()

whileTrue:
try:
# 获取用户输入
            user_input = input("用户:").strip()

if user_input.lower() in ['quit', 'exit', '退出']:
                print("再见!👋")
break

ifnot user_input:
continue

# 执行智能体
            response = agent.invoke({"input": user_input})
            print(f"助手:{response['output']}\n")

except KeyboardInterrupt:
            print("\n再见!👋")
break
except Exception as e:
            print(f"出现错误:{str(e)}\n")

if __name__ == "__main__":
    main()
5.4 运行与测试
# 激活环境
conda activate langchain-env

# 运行程序
python main.py

测试对话示例:


用户:北京今天天气怎么样?
助手:北京当前天气:晴,温度15°C,体感温度13°C,湿度45%

用户:上海会下雨吗?
助手:上海当前天气:多云,温度18°C,体感温度17°C,湿度60%。目前没有降雨。

6、总结

通过本文的学习,我们完成了从基础到进阶的完整学习路径:

1. 大模型基础概念: 了解了LLM、Agent、MCP等核心概念

2. LangChain框架: 掌握了LangChain的设计理念和核心组件

3. 环境搭建: 完成了从零开始的开发环境配置

4. 基础应用: 构建了简单问答链和RAG问答链

5. 进阶应用: 构建了第一个具备工具调用能力的智能体

这个学习路径帮助您从简单的链开始,逐步理解LangChain的工作原理,通过RAG链学习如何处理自定义数据,最终掌握智能体的构建,实现真正的AI助手。

这只是LangChain应用开发的起点。在下一篇文章中,我们将深入探讨更高级的应用场景,并学习LangGraph框架来构建更复杂的多智能体(multi-agent)应用和AI工作流(workflow)

那么,如何系统的去学习大模型LLM?

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值