Skip to content
场景示例

LangChain

LangChain 是构建 LLM 应用的开发框架。它通过 langchain-openai 接入任何 OpenAI 兼容服务,所以我们这边改 base_url 就能用。

安装 ​

bash
pip install langchain-openai

基础用法 ​

python
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="grok-4.6",
    base_url="https://api.wxiai.com/v1",
    api_key=os.environ["WXIAI_API_KEY"],
)

resp = llm.invoke("用一句话介绍你自己")
print(resp.content)

⚠️ 最重要的提醒:我们没有 Embeddings ​

LangChain 做 RAG(检索增强)时一定会用到 Embeddings,但我们不提供 embedding 模型。

Grok 官方没有 embedding 能力,所以我们也没有。如果你要搭建向量检索链路:

组件用什么
对话 / 生成我们的 Grok 模型
文本向量(Embeddings)必须另找一家(OpenAI、Cohere、本地模型等)
python
# 对话用我们
chat = ChatOpenAI(
    model="grok-4.6",
    base_url="https://api.wxiai.com/v1",
    api_key=os.environ["WXIAI_API_KEY"],
)

# 向量必须用别家——下面的写法是示意,不是我们能提供的
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    api_key=os.environ["OTHER_PROVIDER_KEY"],   # 注意:不是我们的 Key
)

在动手前先确认这一点,否则会卡在"为什么 embeddings 一直报错"上。

常见组件对照 ​

LangChain 的组件很多,这里标一下哪些能用我们的:

组件能用吗说明
ChatOpenAI支持对话主力
ChatOpenAI + streaming=True支持流式输出
bind_tools() 工具调用支持底层走 tools 字段
with_structured_output()支持结构化输出
OpenAIEmbeddings不支持我们没有 embedding 模型
OpenAIWhisperParser⚠️语音识别有 Grok 接口,但 LangChain 的封装是否兼容需实测

工具调用示例 ​

python
from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    """查询指定城市的天气。"""
    return f"{city}:晴,25°C"

llm_with_tools = llm.bind_tools([get_weather])
resp = llm_with_tools.invoke("北京今天天气怎么样?")
print(resp.tool_calls)

流式输出 ​

python
for chunk in llm.stream("写一首关于雨的短诗"):
    print(chunk.content, end="", flush=True)

接入建议 ​

1. 模型配置集中一处,别散落各文件

python
# config.py —— 统一在这里建实例
import os
from langchain_openai import ChatOpenAI

def get_llm(model: str = "grok-4.6", **kwargs) -> ChatOpenAI:
    return ChatOpenAI(
        model=model,
        base_url="https://api.wxiai.com/v1",
        api_key=os.environ["WXIAI_API_KEY"],
        **kwargs,
    )

链式调用里到处 ChatOpenAI(...) 会导致改配置要翻遍代码。

2. 长链路的 token 消耗要盯住

LangChain 的 Agent 会反复调用模型(每次工具调用都是一轮),消耗比单次对话大一个量级。建议在 https://api.wxiai.com 定期看用量。

3. Key 从环境变量读

bash
export WXIAI_API_KEY="sk-你的APIKey"

别写进代码——一旦提交到 Git 就等于泄露。

4. 错误处理要用 code 判断

python
import openai

try:
    resp = llm.invoke("你好")
except openai.APIStatusError as e:
    code = ((e.body or {}).get("error") or {}).get("code")
    if code == "rate_limit":
        ...  # 退避重试
    else:
        raise

分类见 错误码。

常见报错 ​

现象原因怎么办
401Key 不对重新复制
404base_url 少了 /v1改成 https://api.wxiai.com/v1
Embeddings 报错我们没有 embedding 模型换别家,见上方警告
model_not_found模型名不对用 GET /v1/models 查

相关页 ​

基于 Apache-2.0 许可发布