适用场景
- 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.7 | 2K-4K | 40% |
| Executor(执行) | GPT-5.5 | 3K-8K | 35% |
| Reviewer(审稿) | Claude Sonnet 4.6 | 1K-2K | 15% |
| Fallback(备路) | GPT-5-mini | 1K-3K | 10% |
日均跑 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