Agent 从小白到架构师
← 返回教程总览
第一课

LangChain 入门

从 LangChain 入门到带记忆的 Web 旅行规划助手

1. LangChain 概述

LangChain 是一个开源 Agent 框架,可以让开发者快速把大模型、工具调用和工作流组织在一起。它支持 Python 和 TypeScript,两种语言都能构建 Agent 应用。

  • 官方文档:https://docs.langchain.com/
  • 适合场景:工具调用、RAG、工作流编排、聊天应用、多 Agent 系统
  • 这套课程使用 Python 版本进行演示

2. 环境准备

推荐使用 `uv` 管理虚拟环境和依赖。

```sh

uv venv source .venv/bin/activate

安装 LangChain

uv add langchain langchain-openai langchain-anthropic

如果你习惯 pip,也可以这样安装

pip install -U langchain langchain-openai langchain-anthropic ```

本课程示例使用智谱 API。你可以前往 https://bigmodel.cn/ 控制台获取 API Key,然后设置环境变量:

```sh export ZHIPU_API_KEY="你的智谱API密钥" ```

3. 创建最小 Agent

先创建一个最简单的 LLM 与工具集合。

```python import os from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langchain.agents import create_agent

llm = ChatOpenAI( temperature=0.6, model="glm-4.7", openai_api_key=os.getenv("ZHIPU_API_KEY"), openai_api_base="https://open.bigmodel.cn/api/paas/v4/", )

@tool def add(a: int, b: int) -> int: """计算两个数字的和""" return a + b

@tool def multiply(a: int, b: int) -> int: """计算两个数字的乘积""" return a * b

tools = [add, multiply] agent = create_agent(llm, tools) ```

这里最关键的点有两个:

  1. `@tool` 把普通 Python 函数变成 Agent 可调用的工具。
  2. docstring 会直接影响模型对工具用途的理解,不能省略。

4. 运行 Agent

```python if name == "main": print("=" * 50) print("LangChain Agent Demo - 使用智谱 GLM-4") print("=" * 50)

question = "用 add 工具计算 3+5,再用 multiply 工具把结果乘以 2"
result = agent.invoke({"messages": [{"role": "user", "content": question}]})

print("\n消息历史:")
for i, msg in enumerate(result["messages"], 1):
    msg_type = type(msg).__name__
    print(f"\n[{i}] {msg_type}:")

    if msg_type == "HumanMessage":
        print(f"    用户: {msg.content}")
    elif msg_type == "AIMessage":
        if msg.tool_calls:
            print("    AI 决定调用工具:")
            for tc in msg.tool_calls:
                print(f"       -> {tc['name']}({tc['args']})")
        if msg.content:
            print(f"    AI: {msg.content}")
    elif msg_type == "ToolMessage":
        print(f"    工具 [{msg.name}] 返回: {msg.content}")

print("\n最终答案:", result["messages"][-1].content)

```

5. 这一课要理解什么

Agent 会自动完成这条链路:

  1. 理解用户要求先加法、再乘法
  2. 调用 `add(3, 5)`
  3. 调用 `multiply(8, 2)`
  4. 汇总结果,返回最终答案

到这里,你已经有了一个最小可运行的 LangChain Agent。