当前位置:首页>python>LangChain快速入门:用Python构建你的第一个AI应用

LangChain快速入门:用Python构建你的第一个AI应用

  • 2026-09-21 00:28:31
LangChain快速入门:用Python构建你的第一个AI应用

LangChain快速入门:用Python构建你的第一个AI应用

从提示词工程到Agent实战,手把手带你玩转AI应用开发

大模型很强大,但如何让它真正为你的业务服务?

答案是:LangChain。

作为AI应用开发领域最火的框架,LangChain让开发者能够轻松地将大模型与外部工具、数据源、API连接起来,构建真正有用的AI应用。

本文将通过一个天气查询助手的实战案例,带你从零掌握LangChain的核心概念和用法。

01.

什么是LangChain?

LangChain是一个用于构建AI应用的框架,它的核心思想是"链式调用"——将大模型与其他工具串联起来,完成复杂任务。

简单理解

  • 大模型= 聪明的大脑,能理解语言、推理问题
  • LangChain= 手脚和工具,让大脑能够调用外部数据、执行具体操作

1.1 LangChain的核心模块

📦Models大模型接口(OpenAI、Anthropic等)
🔗Chains链式调用(串联多个组件)
🧩Prompts提示词模板(格式化输入输出)
📚Indexes文档检索(加载、分割、向量存储)
🔌Agents智能体(自主决策调用工具)
💾Memory记忆(保存对话历史)
02.

环境准备

2.1 安装依赖

# 创建虚拟环境

python -m venv langchain-env

source langchain-env/bin/activate

# 安装LangChain核心库

pip install langchain langchain-core

# 安装大模型provider

pip install openai

# 安装必要工具

pip install requests duckduckgo-search

2.2 配置API Key

import os

# 设置OpenAI API Key

os.environ["OPENAI_API_KEY"] = "your-api-key-here"

⚠️注意:生产环境中请使用环境变量或密钥管理服务,避免硬编码API Key。

03.

实战案例:天气查询助手

3.1 需求分析

我们构建一个智能天气助手,用户可以用自然语言查询天气:

👤 用户:"北京明天天气怎么样?"

🤖 AI:"北京明天多云转晴,最高温度18℃,适合外出。"

👤 用户:"周末想去上海旅行,带什么衣服合适?"

🤖 AI:"上海本周末有小雨,气温15-22℃,建议带薄外套和雨伞。"

3.2 方案设计

用户输入→ LangChain + 工具调用 →格式化输出

3.3 完整代码实现

第一步:定义天气查询工具

from langchain.agents import tool

import requests

@tool

def get_weather(city: str, days: int = 1) -> str:

    """

    查询城市天气的工具。

    参数:

        city: 城市名称(中文)

        days: 预报天数,默认1天

    返回:

        天气信息字符串

    """

    try:

        url = f"https://wttr.in/{city}?format=j1"

        response = requests.get(url, timeout=5)

        data = response.json()

        # ... 处理数据

    except Exception as e:

        return f"查询天气失败:{str(e)}"

第二步:创建LangChain Agent

from langchain.agents import AgentExecutor, create_react_agent

from langchain_openai import ChatOpenAI

from langchain import hub

# 1. 初始化大模型

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# 2. 创建Agent

prompt = hub.pull("hwchase17/react")

agent = create_react_agent(llm, [get_weather], prompt)

# 3. 创建执行器

agent_executor = AgentExecutor(agent=agent, tools=[get_weather], verbose=True)

第三步:运行测试

# 测试对话

queries = ["北京明天天气怎么样?", "周末去上海需要带伞吗?"]

for query in queries:

    print(f"\n{'='*50}")

    result = agent_executor.invoke({"input": query})

    print(result['output'])

04.

LangChain核心概念详解

4.1 提示词模板(Prompts)

提示词模板让你可以复用复杂的提示词结构:

from langchain.prompts import PromptTemplate

weather_template = PromptTemplate.from_template("""

你是一个专业的天气预报助手。

用户问题:{user_question}

请根据以下信息回答:{weather_info}

""")

4.2 链式调用(Chains)

链式调用将多个步骤串联起来:

from langchain.chains import LLMChain

chain = LLMChain(llm=llm, prompt=weather_template)

result = chain.run({"user_question": "...", "weather_info": "..."})

4.3 记忆(Memory)

让AI记住对话历史:

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key="chat_history",

                      return_messages=True)

# 在Agent中使用记忆

agent_executor = AgentExecutor(agent=agent, memory=memory, ...)

05.

扩展:添加更多工具

5.1 搜索工具

from langchain.agents import tool

@tool

def search_web(query: str) -> str:

    """搜索互联网获取最新信息"""

    from duckduckgo_search import DDGS

    with DDGS() as ddgs:

        results = list(ddgs.text(query, max_results=5))

    return f"搜索结果:{results}"

5.2 组合多个工具

# 创建包含多个工具的Agent

tools = [get_weather, search_web]

agent = create_react_agent(llm, tools, prompt)

agent_executor = AgentExecutor(agent=agent, tools=tools)

# Agent可以自动选择使用哪个工具

result = agent_executor.invoke({"input": "北京明天有雨吗?适合户外跑步吗?"})

06.

生产环境最佳实践

6.1 错误处理

class SafeAgentExecutor:

    def invoke(self, input_dict, retries=3):

        for i in range(retries):

            try:

                return self.executor.invoke(input_dict)

            except Exception as e:

                if i == retries - 1:

                    return {"output": f"处理失败:{str(e)}"}

            continue

6.2 成本控制

def smart_router(query: str) -> str:

    # 简单查询用便宜模型

    simple_keywords = ["天气", "时间", "日期"]

    if any(k in query for k in simple_keywords):

        return get_weather.invoke({"city": extract_city(query)})

    # 复杂问题用高级模型

    return agent_executor.invoke({"input": query})

07.

总结与下一步

7.1 核心要点回顾

概念作用示例
Tools扩展LLM能力天气API、搜索
Agents自主决策执行ReAct模式
Chains串联处理流程LLMChain
Memory保存对话历史上下文理解
Prompts格式化输入输出模板复用

7.2 进阶学习路径

阶段内容状态
第一阶段:基础入门LangChain核心概念、Tool定义✅ 你在这里
第二阶段:实战进阶RAG系统、多Agent协作⏳ 敬请期待
第三阶段:生产部署LangServe、LangSmith⏳ 未来课程

7.3 资源推荐

  • 官方文档:https://python.langchain.com/
  • GitHub:https://github.com/langchain-ai/langchain
  • 社区:LangChain Discord / 中文社区

最新文章

随机文章