LangChain
用 ChatOpenAI 与 ChatAnthropic 调用 ModelSite:base URL、为什么 Anthropic 要带 Bearer 头,以及推理 token 的提示
状态:已对 ModelSite 实测,langchain-openai 1.7.2 与 langchain-anthropic 1.7.6,2026-10-24:两者都回答正确。
OpenAI 格式
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="glm-5.3-flash",
base_url="https://api.modelsite.ai/v1",
api_key=os.environ["MODELSITE_API_KEY"],
max_tokens=400,
)
print(llm.invoke("Reply with the single word: pong").content) # pongAnthropic 格式
ChatAnthropic(api_key=...) 会把 Key 放进 x-api-key 头,平台不读这个头。我们复现了对应的 401 missing or invalid authorization header。请改用 Bearer 头发送 Key。
import os
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="glm-5.3-flash",
base_url="https://api.modelsite.ai", # 不带 /v1
api_key="unused", # 类要求必填,ModelSite 不读它
default_headers={"Authorization": f"Bearer {os.environ['MODELSITE_API_KEY']}"},
max_tokens=400,
)
print(llm.invoke("Reply with the single word: pong").content)这种写法请求成功。返回的内容是一个列表,文本前面有一个 thinking 块。
提示:给推理模型留足空间
glm-5.3-flash 会先思考再回答,思考也计入 max_tokens。max_tokens=20 时我们的 OpenAI 格式调用返回了空字符串,改成 400 就返回了 pong。回答很短时也请给几百个 token 或更多。
限制
LangChain 的流式输出、工具调用和嵌入没有在这次验证范围内。其他框架见 SDK、框架与客户端。