> 原始 Markdown 孪生体（构建期从源 Markdown 生成）。渲染页：https://docs.gatellm.io/zh-CN/sdk/orchestration-frameworks · 文档索引：https://docs.gatellm.io/zh-CN/llms.txt


# 编排框架

编排框架在官方 SDK 之上再包一层抽象。经网关用它们的共同点：**把框架底层的 chat model / LLM 指到网关的 OpenAI 兼容端点**。每个框架都有一个「怎么改 base_url / 怎么声明模型」的特定入口，本节逐个给最小示例与各自的坑。

## LangChain（Python / TypeScript） {#langchain}

```bash
pip install langchain-openai langchain-anthropic     # Python
npm i @langchain/openai @langchain/anthropic         # Node
```

::: code-group

```python [Python]
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="http://localhost:7890/v1",
    api_key="<你的访问密钥>",
    model="gpt-5.4-mini",
)
print(llm.invoke("用一句话介绍你自己").content)
```

```ts [TypeScript]
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：

```python
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}

LangGraph 的「模型」就是 LangChain 的 chat model——把上面的 `llm` 传进图即可，网关对其**无感知**（LangGraph 只负责图编排，网络请求仍走 chat model 的 base_url）：

```python
from langgraph.graph import StateGraph, MessagesState

graph = StateGraph(MessagesState)
# ... 定义节点，节点内用上面的 llm 调用 ...
```

## LlamaIndex（Python / TypeScript） {#llamaindex}

```bash
pip install llama-index-llms-openai-like        # Python
npm i @llamaindex/openai                         # Node
```

> **坑：`OpenAI` 类会按模型名白名单校验**。LlamaIndex 的 `OpenAI` 类只认 `gpt-*` 等它认识的家族，遇到网关里自定义的模型名会拒绝。要用 `OpenAILike`（Python）/ 显式声明 model 信息，绕开白名单：

```python
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}

> **坑：CrewAI 底层由 LiteLLM 驱动**。所以 base_url 不是框架参数，而是环境变量 `OPENAI_API_BASE`；`model` 要带 `openai/` 前缀：

```bash
pip install crewai
```

```python
import 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） {#autogen}

> **坑：未知模型名需显式 `model_info`**。经典 `ConversableAgent` API 对不在它默认清单里的模型名会报错，要显式声明。

> **注意**：AutoGen 已分裂成两线——微软的 `autogen-agentchat`（`autogen_agentchat`，即 [Microsoft Agent Framework](/zh-CN/sdk/agent-sdks.md#microsoft-agent) 的 Python 线）与社区 fork **AG2**（延续经典 `ConversableAgent` API）。下方示例按经典 API 编写，`from autogen import ConversableAgent` 的 import 路径随版本变化（AG2 1.x 已改为 `from ag2 import …`），本节按官方文档编写、未在本环境实跑：

```python
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） {#dspy}

```bash
pip install dspy
```

```python
import 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） {#haystack}

```bash
pip install haystack-ai
```

```python
from 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}

Llama Stack 是 Meta 的 Llama 工具链，其远程推理 provider 可指向 OpenAI 兼容端点。把它的 `OPENAI_BASE_URL` / `OPENAI_API_KEY` 指向网关即可接自托管或云端 Llama 模型；接法随其 provider 配置版本变化，以 [Llama Stack 官方文档](https://llama-stack.readthedocs.io/) 为准（本节未在本环境实跑）。

## 下一步 {#next}

- Agent 专用框架（OpenAI Agents / Claude Agent / Pydantic AI…）：看 [Agent SDK](/zh-CN/sdk/agent-sdks.md)。
- 这些框架底层的模型能力（图像/向量/重排）：看 [官方厂商 SDK](/zh-CN/sdk/vendor-sdks.md)。
