LangChain
从 LangChain(Python、TypeScript)使用 Echo Token Station 模型的设置。
LangChain 是用来开发内置 AI 模型的应用的库。用 LangChain 面向 OpenAI 和面向 Anthropic 的类,把接入地址换成 Echo。
验证情况:用 LangChain 的 Python 版(1.x)和 TypeScript 版,确认了 ChatOpenAI 和 ChatAnthropic 的调用、工具调用、流式输出(2026-09-27,Echo 的验证环境)
| 使用的类 | 格式 | 接入地址 |
|---|---|---|
ChatOpenAI | OpenAI 格式 | https://token.echohub.io/v1 |
ChatAnthropic | Anthropic 格式 | https://token.echohub.io(不加 /v1) |
Claude 的模型用 ChatAnthropic、其他模型用 ChatOpenAI,就能按各厂商原本的格式调用。用与提供方不同的格式调用时的注意事项,见 API 参考的「格式与模型的组合」。
API 密钥先放进环境变量 ECHO_API_KEY(参见快速开始)。
ChatOpenAI(OpenAI 格式)
bash
# 创建并启用虚拟环境
python3 -m venv .venv && source .venv/bin/activate
pip install -U langchain-openaiPython
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek-flash",
base_url="https://token.echohub.io/v1",
api_key=os.environ["ECHO_API_KEY"],
)
print(llm.invoke("日本の首都はどこですか?").content)bash
npm install @langchain/openai @langchain/coreTypeScript
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "deepseek-flash",
apiKey: process.env.ECHO_API_KEY,
configuration: {
baseURL: "https://token.echohub.io/v1",
},
});
const res = await llm.invoke("日本の首都はどこですか?");
console.log(res.content);ChatAnthropic(Anthropic 格式)
bash
# 创建并启用虚拟环境
python3 -m venv .venv && source .venv/bin/activate
pip install -U langchain-anthropicPython
import os
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://token.echohub.io",
api_key=os.environ["ECHO_API_KEY"],
max_tokens=1024,
)
print(llm.invoke("日本の首都はどこですか?").content)bash
npm install @langchain/anthropic @langchain/coreTypeScript
import { ChatAnthropic } from "@langchain/anthropic";
const llm = new ChatAnthropic({
model: "claude-sonnet-5",
apiKey: process.env.ECHO_API_KEY,
maxTokens: 1024,
clientOptions: {
baseURL: "https://token.echohub.io",
},
});
const res = await llm.invoke("日本の首都はどこですか?");
console.log(res.content);注意事项
- 据 LangChain 的官方文档,
ChatOpenAI只针对 OpenAI 官方的规范。OpenAI 规范里没有的响应项目不会被取出 - TypeScript 版的
ChatOpenAI在流式输出(一点一点接收回答的方式)时会发送stream_options这个参数。LangChain 的文档写着,接入的服务不支持这个参数时要设置streamUsage: false。Echo 接受这个参数,所以不需要这个设置
不能正常使用时
| 症状 | 原因 | 处理方法 |
|---|---|---|
| 404,返回的是 HTML 页面而不是 JSON | ChatOpenAI 的接入地址没有 /v1 | 改成 https://token.echohub.io/v1 |
404 和 Invalid URL (POST /v1/v1/messages) | ChatAnthropic 的接入地址加了 /v1 | 改成 https://token.echohub.io |
401 和 Invalid API key | 密钥错误、已停用、已过期,或使用上限已用完 | 在控制台确认密钥的状态 |
403 和 Insufficient balance | 余额不足 | 充值 |
503 和 The model … does not exist or is not available | 模型 ID 错误,或 Echo 不提供的模型 | 确认模型 ID |
错误正文的一览见错误与处理。
信息来源
| 内容 | 来源 | 确认日期 |
|---|---|---|
ChatOpenAI 的 base_url、api_key、只针对 OpenAI 官方规范的注意事项 | https://docs.langchain.com/oss/python/integrations/chat/openai | 2026-09-26 |
ChatAnthropic 的 base_url、api_key | https://docs.langchain.com/oss/python/integrations/chat/anthropic | 2026-09-26 |
TypeScript 的 configuration.baseURL、stream_options 的注意事项 | https://docs.langchain.com/oss/javascript/integrations/chat/openai | 2026-09-26 |
TypeScript 的 clientOptions.baseURL | https://docs.langchain.com/oss/javascript/integrations/chat/anthropic | 2026-09-26 |
Anthropic SDK 会在接入地址后面加上 /v1/messages | https://github.com/anthropics/anthropic-sdk-python | 2026-09-26 |
用 ChatOpenAI、ChatAnthropic 调用、工具调用、流式输出、接受 stream_options、Echo 这边的 HTTP 状态码和错误正文 | Echo 验证环境中的实测。使用与正式环境相同的中转设置,并用返回测试响应的服务器代替上游 API | 2026-09-27 |