切换日光/暗黑模式
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分类见 错误码。
常见报错
| 现象 | 原因 | 怎么办 |
|---|---|---|
401 | Key 不对 | 重新复制 |
404 | base_url 少了 /v1 | 改成 https://api.wxiai.com/v1 |
| Embeddings 报错 | 我们没有 embedding 模型 | 换别家,见上方警告 |
model_not_found | 模型名不对 | 用 GET /v1/models 查 |
相关页
- OpenAI SDK —— 不用框架时的直接写法
- 对话补全 —— 底层接口参数
- 自定义集成 —— 上面都不合适时
