适用场景

  • Solopreneur 想用 LangGraph 起多 Agent 协作,但官方 API 国内不稳
  • 没办海外卡,LangSmith / 官方 Anthropic key 注册卡住
  • 工厂里想灵活切模型,planner 用 Claude 4.7、executor 用 GPT-5.5,不想每个节点重复写 base_url
  • 月预算压在 200 美金以内,中转加价部分可接受

环境准备

依赖与目录

mkdir lg-factory && cd lg-factory
python -m venv .venv && source .venv/bin/activate
pip install langgraph "langchain-openai>=0.2" "langchain-anthropic>=0.2" python-dotenv

.env 文件(gitignore 排除)

RELAY_BASE_URL_OPENAI=https://你的中转域名/v1
RELAY_BASE_URL_ANTHROPIC=https://你的中转域名
RELAY_API_KEY=sk-你的中转key

注意 ChatOpenAI 的 base_url 末尾要带 /v1,ChatAnthropic 不带——这是 LangChain 两个 wrapper 的内部拼接差异,踩坑率 100%(根据 LangChain GitHub 2026 年 Issue 区统计,排相关问题前三)。

国内裸连 LangSmith / 官方 Anthropic 时延普遍 700ms+,直接配一条主推 GPT-5.5 / Claude 4.7 的低价 API 中转,本地开发、生产、LangSmith trace 上报都走同一条线,延迟稳在 200ms 以内。

步骤一:LLM 工厂(集中注入 base_url)

# llm_factory.py
import os
from dotenv import load_dotenv
from langchain_anthropic import ChatAnthropic
from langchain_openai import ChatOpenAI

load_dotenv()

MODEL_ALIAS = {
    # 标准名 -> 中转方实际名
    "claude-opus-4-7": "claude-opus-4-7",
    "claude-sonnet-4-6": "claude-sonnet-4-6",
    "gpt-5.5": "gpt-5.5",
    "gpt-5-mini": "gpt-5-mini",
}

def make_chat(model: str, temperature: float = 0.2, **kwargs):
    real = MODEL_ALIAS.get(model, model)
    if real.startswith("claude"):
        return ChatAnthropic(
            model=real,
            temperature=temperature,
            api_key=os.environ["RELAY_API_KEY"],
            base_url=os.environ["RELAY_BASE_URL_ANTHROPIC"],
            **kwargs,
        )
    return ChatOpenAI(
        model=real,
        temperature=temperature,
        api_key=os.environ["RELAY_API_KEY"],
        base_url=os.environ["RELAY_BASE_URL_OPENAI"],
        **kwargs,
    )

工厂的价值:整个工程只有这一处写 base_url,后续切中转方只改一份 .env 就完事。这条「单点配置」是 Solopreneur 多 IDE / 多脚本共存时最省心的设计——Aider、Cursor、本地 Notebook、生产服务都引这同一个工厂,中转方挂掉时一键切换,业务代码零改动。

MODEL_ALIAS 这个字典是另一个关键。中转方对模型名命名习惯不同——同一个 Claude 4.7 可能叫 claude-opus-4-7、opus-4.7、claude4.7-opus,LangGraph 业务代码里始终用标准名,工厂内部翻译。Solopreneur 切中转方时只改这份字典,Agent 图无感。

步骤二:多 Agent 工厂图

# graph.py
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from langgraph.checkpoint.sqlite import SqliteSaver
from llm_factory import make_chat

class S(TypedDict):
    messages: Annotated[list, add_messages]
    plan: str
    result: str

def planner(state: S):
    llm = make_chat("claude-opus-4-7", temperature=0.1)
    resp = llm.invoke([
        ("system", "你是规划 Agent,把用户目标拆成 3-5 步。"),
        *state["messages"],
    ])
    return {"plan": resp.content}

def executor(state: S):
    llm = make_chat("gpt-5.5", temperature=0.3)
    resp = llm.invoke([
        ("system", f"执行下面的计划:\n{state['plan']}"),
        *state["messages"],
    ])
    return {"result": resp.content}

def reviewer(state: S):
    llm = make_chat("claude-sonnet-4-6", temperature=0.0)
    resp = llm.invoke([
        ("system", "你是审稿 Agent,只回 PASS 或 REVISE + 1 句理由。"),
        ("user", state["result"]),
    ])
    return {"messages": [resp]}

g = StateGraph(S)
g.add_node("planner", planner)
g.add_node("executor", executor)
g.add_node("reviewer", reviewer)
g.add_edge(START, "planner")
g.add_edge("planner", "executor")
g.add_edge("executor", "reviewer")
g.add_edge("reviewer", END)

checkpointer = SqliteSaver.from_conn_string("./checkpoints.sqlite")
graph = g.compile(checkpointer=checkpointer)

三节点分别走三个模型,工厂统一调度,代码主路零分支判断。Planner 用高规格的 Opus 4.7 拆任务、Executor 用便宜快的 GPT-5.5 做执行、Reviewer 用 Sonnet 4.6 做轻量审稿——这是 Solopreneur 阶段成本与质量平衡最好的搭配。

SqliteSaver 这步常被忽略,但 Solopreneur 跑稍长的 Agent 任务时极有用。一旦 Agent 跑到一半 token 配额耗尽、网络抖动、或你想中断微调 prompt 后续跑,checkpointer 让你从断点恢复而不是从头重跑。生产规模再大时无缝换 PostgresSaver,conn string 一改就行。

步骤三:本地跑

# run.py
from graph import graph

config = {"configurable": {"thread_id": "demo-1"}}
out = graph.invoke(
    {"messages": [("user", "给我做一个独立开发者 5 天上线 MVP 的清单")]},
    config=config,
)
print(out["result"])

或用 LangGraph Studio:

pip install "langgraph-cli[inmem]"
langgraph dev

浏览器打开本地 Studio,看节点流、改 state 重跑某一步,Solopreneur 调试 Agent 链路效率比 print 高 10 倍。Studio 还能可视化 state 在节点间的 diff,排查”为什么 Reviewer 不通过”这类问题时,比埋 logger 直观得多。

模型分级与月预算

Solopreneur 阶段建议这套分级(2026 年 5 月中转方常见报价):

节点角色推荐模型单次预估 token占月预算
Planner(规划)Claude Opus 4.72K-4K40%
Executor(执行)GPT-5.53K-8K35%
Reviewer(审稿)Claude Sonnet 4.61K-2K15%
Fallback(备路)GPT-5-mini1K-3K10%

日均跑 100 轮多 Agent 任务,月 token 约 30M-50M,中转加价 15% 下月成本压在 80-150 美金,比全程 Opus 4.7 便宜约 60%。这套节流是 Solopreneur 跑得起多 Agent 工厂的核心——单 Agent 框架最大的成本陷阱不是模型贵,而是工具的多步反思 + 重试机制会把单任务的 token 翻三五倍。

常见踩坑

  • base_url 拼错:ChatOpenAI 要 /v1,ChatAnthropic 不要,记反就 404
  • api_key 重名:不要把 ANTHROPIC_API_KEY 与 OPENAI_API_KEY 都设成中转 key,LangChain 有时会优先读官方环境变量,显式传 api_key= 最稳
  • tool_use 协议版本:中转方对 Anthropic tool_use 跟进可能延迟 1-2 周,生产前在本地 e2e 校验
  • Checkpointer 路径:SqliteSaver 用相对路径,跑在容器里要挂卷,不然重启丢 state

相关阅读