前言
通过这篇文章,我将站在学习者的角度,详尽的描述每个步骤,从0开始创建一个本地智能体用于调试学习。包括 Python 环境配置、项目结构搭建、工具定义以及智能体运行。
目录
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以上
确保你的系统已安装 Python 3.10 或更高版本:
python --version
# 输出: Python 3.10.x 或更高
查看虚拟环境:
conda env list
//带*号的就是当前激活环境
激活虚拟环境
conda activate langchain_v1_env
当然你也可以直接打开Anaconda Navigator可视化工具完成上面这些操作
通过上面的操作python环境就已经准备就绪了。
2. 项目初始化
2.1 编辑器相关配置
接下来下载python集成开发工具pycharm:
可以自行下载,也可以在Anaconda Navigator工具中通过链接跳转下载。
我们打开pycharm,新建python项目,自定义环境下选择python版本和虚拟环境。
选择刚刚创建的虚拟环境
当你在编辑器终端看到这样的效果才代表虚拟环境选择配置都ok了,咱们才能进行下一步:
我知道前面的这一堆环境配置,对于一个非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的方式都大同小异,参照下面的方式进行操作(注意:确保可用务必先在账户下充值,不需要太多,用于学习几元就够了)
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 界面进行调试。
当你看到浏览器打开这个界面时说明已经成功了
智能体开发道阻且长,通常本篇文章只是对于新手小白的一个入门过程。进一步的开发我们后面再一起探索交流。