编排框架
编排框架在官方 SDK 之上再包一层抽象。经网关用它们的共同点:把框架底层的 chat model / LLM 指到网关的 OpenAI 兼容端点。每个框架都有一个「怎么改 base_url / 怎么声明模型」的特定入口,本节逐个给最小示例与各自的坑。
LangChain(Python / TypeScript)
pip install langchain-openai langchain-anthropic # Python
npm i @langchain/openai @langchain/anthropic # Nodefrom langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="http://localhost:7890/v1",
api_key="<你的访问密钥>",
model="gpt-5.4-mini",
)
print(llm.invoke("用一句话介绍你自己").content)import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
configuration: { baseURL: "http://localhost:7890/v1" },
apiKey: "<你的访问密钥>",
model: "gpt-5.4-mini",
});
const resp = await llm.invoke("用一句话介绍你自己");
console.log(resp.content);调 Claude 用 ChatAnthropic(anthropic_api_url 指到根),或用 init_chat_model 按 model 名自动选 provider:
from langchain.chat_models import init_chat_model
llm = init_chat_model(
"gpt-5.4-mini", # 网关模型名
model_provider="openai",
base_url="http://localhost:7890/v1", # 透传给 OpenAI provider
api_key="<你的访问密钥>",
)LangGraph
LangGraph 的「模型」就是 LangChain 的 chat model——把上面的 llm 传进图即可,网关对其无感知(LangGraph 只负责图编排,网络请求仍走 chat model 的 base_url):
from langgraph.graph import StateGraph, MessagesState
graph = StateGraph(MessagesState)
# ... 定义节点,节点内用上面的 llm 调用 ...LlamaIndex(Python / TypeScript)
pip install llama-index-llms-openai-like # Python
npm i @llamaindex/openai # Node坑:
OpenAI类会按模型名白名单校验。LlamaIndex 的OpenAI类只认gpt-*等它认识的家族,遇到网关里自定义的模型名会拒绝。要用OpenAILike(Python)/ 显式声明 model 信息,绕开白名单:
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="gpt-5.4-mini",
api_base="http://localhost:7890/v1",
api_key="<你的访问密钥>",
is_chat_model=True, # 声明是 chat 模型
is_function_calling_model=True, # 支持 function calling
)
print(llm.complete("用一句话介绍你自己").text)CrewAI(Python)
坑:CrewAI 底层由 LiteLLM 驱动。所以 base_url 不是框架参数,而是环境变量
OPENAI_API_BASE;model要带openai/前缀:
pip install crewaiimport os
os.environ["OPENAI_API_BASE"] = "http://localhost:7890/v1"
os.environ["OPENAI_API_KEY"] = "<你的访问密钥>"
from crewai import Agent, Task, Crew
agent = Agent(
role="助手",
goal="回答用户问题",
backstory="一个友好的助手",
llm="openai/gpt-5.4-mini", # LiteLLM 前缀 + 网关模型名
)AutoGen / AG2(Python)
坑:未知模型名需显式
model_info。经典ConversableAgentAPI 对不在它默认清单里的模型名会报错,要显式声明。
注意:AutoGen 已分裂成两线——微软的
autogen-agentchat(autogen_agentchat,即 Microsoft Agent Framework 的 Python 线)与社区 fork AG2(延续经典ConversableAgentAPI)。下方示例按经典 API 编写,from autogen import ConversableAgent的 import 路径随版本变化(AG2 1.x 已改为from ag2 import …),本节按官方文档编写、未在本环境实跑:
from autogen import ConversableAgent
config_list = [{
"model": "gpt-5.4-mini",
"base_url": "http://localhost:7890/v1",
"api_key": "<你的访问密钥>",
}]
agent = ConversableAgent(
"assistant",
llm_config={
"config_list": config_list,
"model_info": { # 显式声明,绕过模型名清单校验
"gpt-5.4-mini": {"function_calling": True, "json_output": False},
},
},
)DSPy(Python)
pip install dspyimport dspy
lm = dspy.LM("openai/gpt-5.4-mini", api_base="http://localhost:7890/v1", api_key="<你的访问密钥>")
dspy.configure(lm=lm)
qa = dspy.Predict("question -> answer")
print(qa(question="用一句话介绍你自己"))本节按官方文档编写、未在本环境实跑;
LM构造器的api_base/api_key参数名随 DSPy 版本变化。
Haystack(Python)
pip install haystack-aifrom haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
generator = OpenAIChatGenerator(
model="gpt-5.4-mini",
api_base_url="http://localhost:7890/v1",
api_key="<你的访问密钥>",
)
resp = generator.run([ChatMessage.from_user("用一句话介绍你自己")])
print(resp["replies"][0].content)本节按官方文档编写、未在本环境实跑。
Llama Stack
Llama Stack 是 Meta 的 Llama 工具链,其远程推理 provider 可指向 OpenAI 兼容端点。把它的 OPENAI_BASE_URL / OPENAI_API_KEY 指向网关即可接自托管或云端 Llama 模型;接法随其 provider 配置版本变化,以 Llama Stack 官方文档 为准(本节未在本环境实跑)。
