跳到主要内容

LangChain 和 LangGraph

LangChain 是用于构建 LLM 应用的框架,涵盖链、Agent、检索工作流和工具调用工作流。LangGraph 基于 LangChain 生态构建有状态 Agent 和图工作流。对于两者,网关通常接入模型客户端,而无需改变应用的其他部分。

LangChain OpenAI 包提供可调用自定义基础 URL、并可选择使用 OpenAI Responses API 的聊天模型客户端 ChatOpenAI。当 LangChain 应用需要通过 AISIX 发送 Responses API 请求时,请使用这些设置。

本指南使用带有 langchain-openai 的 LangChain Python。你将使用 AISIX 代理 URL、调用方 API Key、模型别名和 use_responses_api=True 配置 ChatOpenAI。LangGraph 应用可以在图节点或 Agent 工作流中复用同一个 ChatOpenAI 客户端。

前置条件

开始前,请准备以下内容:

  • 一个受 LangChain 支持的 Python 环境。
  • 一个代理监听器可用的运行中 AISIX 网关。
  • 一个 AISIX 调用方 API Key。
  • 一个可通过Responses API访问的模型别名。

配置 LangChain

如果应用尚未包含 LangChain OpenAI 集成,请先安装:

pip install langchain-openai langgraph

设置 LangChain 应用要使用的值:

# 请替换为实际值
export AISIX_BASE_URL="http://127.0.0.1:3000/v1"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"
export AISIX_MODEL="gpt-4o-prod"

使用 AISIX 值创建 ChatOpenAI 客户端:

import os

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
model=os.environ["AISIX_MODEL"],
api_key=os.environ["AISIX_API_KEY"],
base_url=os.environ["AISIX_BASE_URL"],
use_responses_api=True,
)

response = llm.invoke("Write one sentence about why gateways help AI teams.")
print(response.content)

模型值应填写 AISIX 模型别名,而不是上游服务提供方模型 ID。AISIX 负责模型请求路径:验证调用方 API Key、解析别名、应用策略、记录遥测数据,并将请求分发到别名背后的服务提供方。LangChain 应用仍负责链、提示词、工具、检索和响应处理。

在 LangGraph 中使用客户端

将同一个 ChatOpenAI 客户端传递给 LangGraph 节点或图状态转换:

import os

from langchain_openai import ChatOpenAI
from typing_extensions import TypedDict

from langgraph.graph import END, START, StateGraph

llm = ChatOpenAI(
model=os.environ["AISIX_MODEL"],
api_key=os.environ["AISIX_API_KEY"],
base_url=os.environ["AISIX_BASE_URL"],
use_responses_api=True,
)


class State(TypedDict):
prompt: str
answer: str


def call_model(state: State):
response = llm.invoke(state["prompt"])
return {"answer": response.content}


graph = StateGraph(State)
graph.add_node("call_model", call_model)
graph.add_edge(START, "call_model")
graph.add_edge("call_model", END)

app = graph.compile()
result = app.invoke({
"prompt": "Write one sentence about governed agents.",
})

print(result["answer"])

LangGraph 负责状态管理、图执行、重试和工具编排。AISIX 只会看到已配置的 ChatOpenAI 客户端发出的模型请求。

验证集成

在已设置 AISIX 环境变量的 Shell 中运行脚本。

请求成功后,请确认以下结果:

  • 脚本输出聊天响应。
  • AISIX 为所选模型别名记录一条成功的 POST /v1/responses 请求。

如果使用 AISIX Cloud 或私有化部署的托管控制面,请在托管网关日志中验证请求。对于自托管网关,请使用已配置的日志、指标或上游服务提供方日志。

如果请求失败,请先确认调用方 API Key 可以访问所选模型别名,且 base_url 指向包含 /v1 的 AISIX 代理 API 根路径。

LangChain 也可以通过同一个 ChatOpenAI 类使用 Chat Completions。只有已有链或依赖项要求 Chat Completions 兼容性时才使用该路径;新的 OpenAI 系列 LangChain 集成优先使用此处的 Responses API 路径。

启用流式响应、工具调用、结构化输出、内置工具或推理选项时,LangChain 可能发送可选的 OpenAI 字段。在依赖该路径的网关策略或遥测数据前,请验证实际使用的链或 Agent 工作流。

后续步骤