关键库安装:LangChain、OpenAI SDK 等

本节介绍 Agent 开发生态中最重要的库,并说明它们的用途和安装方式。

Agent 开发核心库全景

Agent开发技术栈全景

一键安装:Agent 开发标准套件

# 创建并激活虚拟环境
uv venv && source .venv/bin/activate

# 核心依赖(必装)
uv add openai langchain langchain-openai langchain-community python-dotenv pydantic

# LangGraph(有状态 Agent)
uv add langgraph

# OpenAI Agents SDK(轻量级多 Agent 框架)
uv add openai-agents

# 向量数据库(本地开发用 chromadb 就够)
uv add chromadb

# 工具库
uv add requests beautifulsoup4 wikipedia-api

# MCP 协议支持
uv add mcp

# 工程库
uv add tenacity rich

或者使用 pip:

pip install openai langchain langchain-openai langchain-community langgraph \
            openai-agents chromadb mcp python-dotenv pydantic tenacity rich

各库详解

OpenAI SDK

# 安装:pip install openai
# 用途:调用 GPT 系列模型

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

# 验证安装
import openai
print(f"OpenAI SDK 版本:{openai.__version__}")  # 应该 >= 1.0.0

LangChain

# 安装:pip install langchain langchain-openai
# 用途:Agent 框架、链式调用、工具集成

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

# 基础模型调用
llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke([HumanMessage(content="你好!")])
print(response.content)

# 验证安装
import langchain
print(f"LangChain 版本:{langchain.__version__}")  # 应该 >= 0.3.0

LangGraph

# 安装:pip install langgraph
# 用途:构建有状态的 Agent 工作流

from langgraph.graph import StateGraph, END

# 后续章节详细讲解,先验证能导入
import langgraph
print(f"LangGraph 版本:{langgraph.__version__}")

ChromaDB(向量数据库)

# 安装:pip install chromadb
# 用途:本地向量存储,用于 RAG 场景

import chromadb

# 创建本地向量数据库
client = chromadb.Client()
collection = client.create_collection("test")

# 添加文档
collection.add(
    documents=["Python 是一种解释型编程语言", "LangChain 是 Agent 框架"],
    ids=["doc1", "doc2"]
)

# 查询相似文档
results = collection.query(
    query_texts=["如何学习 Python?"],
    n_results=1
)
print(results)

import chromadb
print(f"ChromaDB 版本:{chromadb.__version__}")

Pydantic(数据验证)

# 安装:pip install pydantic
# 用途:数据模型定义、输入验证、Agent 输出解析

from pydantic import BaseModel, Field
from typing import Optional, List

class TaskInfo(BaseModel):
    """任务信息模型"""
    title: str = Field(..., description="任务标题")
    priority: str = Field(default="medium", pattern="^(high|medium|low)$")
    tags: List[str] = Field(default_factory=list)
    deadline: Optional[str] = None
    
    class Config:
        json_schema_extra = {
            "example": {
                "title": "完成项目报告",
                "priority": "high",
                "tags": ["工作", "报告"],
                "deadline": "2024-12-31"
            }
        }

# 验证数据
task = TaskInfo(title="写代码", priority="high", tags=["开发"])
print(task.model_dump())
print(task.model_dump_json())

import pydantic
print(f"Pydantic 版本:{pydantic.__version__}")  # 应该 >= 2.0

Rich(美化终端输出)

# 安装:pip install rich
# 用途:漂亮的终端输出,调试 Agent 时非常有用

from rich.console import Console
from rich.panel import Panel
from rich.syntax import Syntax
from rich.table import Table

console = Console()

# 打印带颜色的信息
console.print("[bold green]✅ Agent 启动成功[/bold green]")
console.print("[yellow]⚠️ 注意:Token 消耗较多[/yellow]")
console.print("[red]❌ 工具调用失败[/red]")

# 展示代码
code = """
def hello_agent():
    return "Hello, World!"
"""
syntax = Syntax(code, "python", theme="monokai")
console.print(Panel(syntax, title="Agent 代码"))

# 展示表格
table = Table(title="工具列表")
table.add_column("工具名", style="cyan")
table.add_column("描述", style="green")
table.add_column("状态", style="yellow")

table.add_row("search", "搜索互联网", "✅ 可用")
table.add_row("calculator", "数学计算", "✅ 可用")
table.add_row("email", "发送邮件", "❌ 未配置")

console.print(table)

Tenacity(重试机制)

# 安装:pip install tenacity
# 用途:API 调用的重试逻辑,生产环境必备

from tenacity import (
    retry,
    stop_after_attempt,
    wait_exponential,
    retry_if_exception_type
)
from openai import RateLimitError, APIError

@retry(
    stop=stop_after_attempt(3),           # 最多重试3次
    wait=wait_exponential(min=1, max=10), # 指数退避:1s, 2s, 4s...
    retry=retry_if_exception_type((RateLimitError, APIError)),
    reraise=True
)
def robust_api_call(messages: list) -> str:
    """带重试的 API 调用"""
    from openai import OpenAI
    client = OpenAI()
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=messages
    )
    return response.choices[0].message.content

# 自动处理速率限制和临时错误
result = robust_api_call([{"role": "user", "content": "你好"}])

完整安装验证脚本

创建以下脚本来一次性验证所有依赖:

# verify_installation.py
"""运行此脚本验证所有依赖是否正确安装"""

import sys
from rich.console import Console
from rich.table import Table

console = Console()

def check_package(package_name: str, import_name: str = None) -> tuple:
    """检查包是否安装"""
    import_name = import_name or package_name.replace("-", "_")
    try:
        import importlib
        module = importlib.import_module(import_name)
        version = getattr(module, '__version__', 'unknown')
        return True, version
    except ImportError:
        return False, None

# 检查列表
packages = [
    ("openai", "openai"),
    ("langchain", "langchain"),
    ("langchain-openai", "langchain_openai"),
    ("langgraph", "langgraph"),
    ("chromadb", "chromadb"),
    ("pydantic", "pydantic"),
    ("python-dotenv", "dotenv"),
    ("tenacity", "tenacity"),
    ("rich", "rich"),
    ("requests", "requests"),
    ("beautifulsoup4", "bs4"),
]

table = Table(title="依赖安装检查", show_header=True)
table.add_column("包名", style="cyan")
table.add_column("版本", style="yellow")
table.add_column("状态", style="green")

all_ok = True
for pkg_name, import_name in packages:
    installed, version = check_package(pkg_name, import_name)
    status = "✅ 已安装" if installed else "❌ 未安装"
    version_str = version if installed else "-"
    table.add_row(pkg_name, version_str, status)
    if not installed:
        all_ok = False

console.print(table)

if all_ok:
    console.print("\n[bold green]🎉 所有依赖已正确安装!可以开始 Agent 开发了。[/bold green]")
else:
    console.print("\n[bold red]⚠️ 部分依赖未安装,请运行:pip install <缺失的包>[/bold red]")

# 检查 Python 版本
python_version = sys.version_info
if python_version >= (3, 10):
    console.print(f"[green]✅ Python {python_version.major}.{python_version.minor} - 版本满足要求[/green]")
else:
    console.print(f"[red]❌ Python {python_version.major}.{python_version.minor} - 需要 >= 3.10[/red]")

运行验证:

python verify_installation.py

小结

Agent 开发的核心依赖:

分类推荐库用途
LLM 接口openai调用 GPT 模型
Agent 框架langchain + langgraph构建 Agent 逻辑
向量存储chromadbRAG 文档检索
数据验证pydantic结构化输出
工程工具tenacity + rich重试 + 漂亮日志

下一节:2.3 API Key 管理与安全最佳实践