langchain v1.0,从零打造你的第一个智能体

163 阅读6分钟

前言

通过这篇文章,我将站在学习者的角度,详尽的描述每个步骤,从0开始创建一个本地智能体用于调试学习。包括 Python 环境配置、项目结构搭建、工具定义以及智能体运行。

目录

  1. Python环境准备
  2. 项目初始化
  3. 配置大语言模型
  4. 创建工具
  5. 创建智能体
  6. 运行智能体

1. Python环境准备

从功能完整性、最新特性支持以及生态丰富度等核心维度考量,我们仍将 LangChain 的 Python 版本 作为首选方案。

这里我们使用Anaconda来安装Python环境:

Anaconda包含了Python解释器、常用Python库、Conda包管理系统及其他相关工具。便于管理Python环境和软件包,对咱们新手更加友好。

Anaconda的国内镜像地址:mirrors.tuna.tsinghua.edu.cn/anaconda/ar…

下载完成以后我们使用conda创建python虚拟环境:

每一个Python项目所需的软件包等等东西可能不同,为了不使项目之间产生冲突,你可以为他们每一个配置一个虚拟环境,虚拟环境之间互不干扰

完成Anaconda的安装打开Anaconda Prompt命令行窗口,窗口中输入:

conda create --name langchain_v1_env python=3.12  
注意:python版本必须是3.10以上

image.png

确保你的系统已安装 Python 3.10 或更高版本:

python --version
# 输出: Python 3.10.x 或更高

查看虚拟环境:

conda env list
//带*号的就是当前激活环境

激活虚拟环境

conda activate langchain_v1_env

当然你也可以直接打开Anaconda Navigator可视化工具完成上面这些操作

image.png 通过上面的操作python环境就已经准备就绪了。

2. 项目初始化

2.1 编辑器相关配置

接下来下载python集成开发工具pycharm:

可以自行下载,也可以在Anaconda Navigator工具中通过链接跳转下载。

image.png

我们打开pycharm,新建python项目,自定义环境下选择python版本和虚拟环境。

image.png 选择刚刚创建的虚拟环境

image.png

当你在编辑器终端看到这样的效果才代表虚拟环境选择配置都ok了,咱们才能进行下一步:

image.png

我知道前面的这一堆环境配置,对于一个非python开发人员来说,可能让你经历了一些坎坷,消磨了些许耐心。现在我要告诉你距离开发一个智能体应用已经成功了一半了。

2.2 安装依赖

pip install langgraph langchain langchain-openai dotenv zhipuai

2.3 项目结构

创建以下目录结构:

my_agent_project/
├── src/
│   └── agent/
│       ├── __init__.py
│       ├── env_utils.py      # 环境变量管理
│       ├── my_lim.py         # 大模型配置
│       ├── my_agent.py       # 智能体定义
│       └── tools/
│           ├── __init__.py
│           └── web_search.py # 工具定义
├── .env                      # 环境变量(API密钥)
├── langgraph.json           # LangGraph 配置
└── pyproject.toml           # 项目配置

2.4 创建 pyproject.toml

[project]
name = "agent"
version = "0.0.1"
description = "我的第一个 LangGraph 智能体"
requires-python = ">=3.10"
dependencies = [
    "langgraph>=1.0.0",
    "langchain>=0.3.0",
    "langchain-openai>=0.2.0",
    "python-dotenv>=1.0.1",
    "zhipuai>=2.0.0",
]

[build-system]
requires = ["setuptools>=73.0.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.package-dir]
"agent" = "src/agent"

2.5 配置环境变量

创建 .env 文件,填入你的 API 密钥:

# DeepSeek API (或其他 OpenAI 兼容接口)
ANTHROPIC_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
ANTHROPIC_API_KEY=xxxx


# 智谱 AI API (用于网络搜索工具)
ZHIPU_API_KEY=xxxx

注意: 不要将 .env 文件提交到 Git 仓库,记得添加到 .gitignore

3. 配置大语言模型

这里问题来了,我们要怎么获取API_KEY呢? 目前应用于开发,我们可以在国内的一些大模型平台购买token,下面是我们会用到的两个平台:

百炼平台:bailian.console.aliyun.com

智普AI:open.bigmodel.cn

不管是哪个平台购买API_KEY的方式都大同小异,参照下面的方式进行操作(注意:确保可用务必先在账户下充值,不需要太多,用于学习几元就够了)

image.png

3.1 环境变量管理 (env_utils.py)

import os
from dotenv import load_dotenv

# 加载 .env 文件
load_dotenv(override=True)

# 读取环境变量
OWN_API_KEY = os.getenv("ANTHROPIC_API_KEY")
OWN_BASE_URL = os.getenv("ANTHROPIC_BASE_URL")
ZHIPU_API_KEY = os.getenv("ZHIPU_API_KEY")

3.2 初始化大模型 (my_lim.py)

from langchain_openai import ChatOpenAI
from zhipuai import ZhipuAI

from agent.env_utils import OWN_API_KEY, OWN_BASE_URL, ZHIPU_API_KEY

# 创建 LLM 实例 (使用 DeepSeek)
lim = ChatOpenAI(
    model_name="deepseek-v3",
    temperature=0.5,
    api_key=OWN_API_KEY,
    base_url=OWN_BASE_URL
)

# 创建智谱客户端 (用于网络搜索)
zhipuai_client = ZhipuAI(api_key=ZHIPU_API_KEY)

说明:

  • ChatOpenAI 支持所有 OpenAI 兼容的 API 接口
  • temperature 控制输出的随机性,0 表示确定性输出,1 表示更随机
  • 通过 base_url 可以切换到不同的模型提供商

4. 创建工具

工具是智能体与外部世界交互的方式。LangChain 提供两种定义工具的方式。

4.1 方式一:使用 @tool 装饰器(推荐)(tools/web_search.py)

from langchain_core.tools import tool
from agent.my_lim import zhipuai_client


@tool("web_search", parse_docstring=True)
def web_search(query: str) -> str:
    """互联网搜索工具,可以搜索所有公开信息。

    Args:
        query: 需要进行互联网查询的信息
    """
    try:
        resp = zhipuai_client.web_search.web_search(
            search_engine='search_pro',
            search_query=query
        )
        if resp.search_result:
            return "\n\n".join([d.content for d in resp.search_result])
        return "没有任何搜索结果"
    except Exception as e:
        return f"Error: {e}"

要点:

  • @tool 装饰器将普通函数转换为智能体可用的工具
  • parse_docstring=True 会解析 docstring 中的 Args 作为参数描述
  • 注意:使用 parse_docstring=True 时,不要在 docstring 中写 Returns 部分

4.2 方式二:继承 BaseTool 类

适用于需要更复杂逻辑的工具:

from typing import Type
from langchain_core.tools import BaseTool
from pydantic import BaseModel, Field

from agent.my_lim import zhipuai_client


class SearchArgs(BaseModel):
    """搜索参数定义"""
    query: str = Field(..., description="搜索关键词")


class MyWebSearchTool(BaseTool):
    name: str = "web_search"
    description: str = "使用这个工具进行网络搜索"
    args_schema: Type[BaseModel] = SearchArgs

    def _run(self, query: str) -> str:
        """工具的执行逻辑"""
        try:
            resp = zhipuai_client.web_search.web_search(
                search_engine='search_pro',
                search_query=query
            )
            if resp.search_result:
                return "\n\n".join([d.content for d in resp.search_result])
            return "没有任何搜索结果"
        except Exception as e:
            return f"Error: {e}"

要点:

  • args_schema 使用 Pydantic 的 BaseModel 定义参数结构
  • 类型注解格式为 args_schema: Type[BaseModel] = SearchArgs(注意是冒号不是等号)
  • 必须实现 _run 方法

5. 创建智能体及本地测试环境

我们需要创建一个本地环境来测试调试智能体

5.1 安装langgraph-cli

pip install --upgrade "langgraph-cli[inmen]"

5.2 配置langSmisth的环境变量

在环境变量env文件配置

LANGSMITH_API_KEY="xxxx"

在这个网站中获取LANGSMITH_API_KEY:smith.langchain.com/settings

5.3使用 create_agent(my_agent.py)

from langchain.agents import create_agent

from agent.my_lim import lim
from agent.tools.web_search import web_search


# 创建智能体
agent =create_agent(
    lim,
    tools=[web_search],
    prompt="你是一个智能助手,可以帮助用户搜索互联网上的信息。"
)

5.4 配置langgraph.json,

在外层项目目录下创建langgraph.json,指定智能体入口文件

{
  "dependencies": [
    "."
  ],
  "graphs": {
    "agent": "./src/agent/my_agent.py:agent"
  },
  "env": ".env"
}

说明:

  • dependencies: 项目依赖路径
  • graphs: 定义智能体入口,格式为 文件路径:变量名
  • env: 环境变量文件路径

6. 运行智能体

6.1 安装项目本身依赖

pip install -e .

6.2 使用 LangGraph 开发服务器

# 在项目根目录运行
langgraph dev

这将启动一个本地开发服务器,你可以通过浏览器访问 LangGraph Studio 界面进行调试。

当你看到浏览器打开这个界面时说明已经成功了

image.png

智能体开发道阻且长,通常本篇文章只是对于新手小白的一个入门过程。进一步的开发我们后面再一起探索交流。