集成指南
在 LangChain 中使用
LangChain 用 langchain-openai 的 ChatOpenAI 和 OpenAIEmbeddings 接入土土金 API,把 base_url 设为 https://open.tutujin.com/v1;Claude 也可以用 langchain-anthropic 的 ChatAnthropic 走原生接口。含 Python 与 JavaScript 示例。
LangChain 通过 langchain-openai 包接入土土金 API:ChatOpenAI 和 OpenAIEmbeddings 都支持自定义 base_url,设为 https://open.tutujin.com/v1,api_key 用土土金的 Key,model 填模型广场里的模型名。想走 Claude 原生接口,用 langchain-anthropic 的 ChatAnthropic,base_url 填 https://open.tutujin.com。
安装
pip install langchain-openai langchain-anthropicnpm install @langchain/openai @langchain/core对话模型
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini",
base_url="https://open.tutujin.com/v1",
api_key=os.environ["TUTUJIN_API_KEY"],
temperature=0.3,
max_retries=3,
timeout=60,
)
print(llm.invoke("用一句话解释向量数据库。").content)
# 流式
for chunk in llm.stream("写一段 100 字的产品介绍"):
print(chunk.content, end="", flush=True)import { ChatOpenAI } from '@langchain/openai'
const llm = new ChatOpenAI({
model: 'gpt-5.4-mini',
apiKey: process.env.TUTUJIN_API_KEY,
configuration: { baseURL: 'https://open.tutujin.com/v1' },
temperature: 0.3,
})
const res = await llm.invoke('用一句话解释向量数据库。')
console.log(res.content)
// 流式
for await (const chunk of await llm.stream('写一段 100 字的产品介绍')) {
process.stdout.write(String(chunk.content))
}换模型只改 model。目录里标注支持 Chat Completions 的模型,包括 DeepSeek、通义千问、Claude、Gemini 等,都可以用 ChatOpenAI 调用。
组合成链
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你是电商文案编辑,输出不超过 60 字。"),
("user", "为这件商品写一句卖点:{product}"),
])
chain = prompt | llm | StrOutputParser()
print(chain.invoke({"product": "304 不锈钢保温杯,500ml"}))向量模型
import os
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small",
base_url="https://open.tutujin.com/v1",
api_key=os.environ["TUTUJIN_API_KEY"],
)
vectors = embeddings.embed_documents(["退货政策是什么?", "多久发货?"])
query_vector = embeddings.embed_query("怎么退货")使用 OpenAI 以外的向量模型(例如 qwen3-embedding-8b)时,加上 check_embedding_ctx_length=False。默认情况下 OpenAIEmbeddings 会先用 OpenAI 的分词器把文本转成 token 再发送,其他厂商的模型不认这种输入,关掉后直接发送原始文本:
embeddings = OpenAIEmbeddings(
model="qwen3-embedding-8b",
base_url="https://open.tutujin.com/v1",
api_key=os.environ["TUTUJIN_API_KEY"],
check_embedding_ctx_length=False,
)向量可以接 LangChain 支持的任意向量库(如 PGVector、Milvus、Qdrant、Chroma),做检索增强生成,完整方案见企业知识库与 RAG。
用原生接口调用 Claude
import os
from langchain_anthropic import ChatAnthropic
claude = ChatAnthropic(
model="claude-sonnet-5-5",
base_url="https://open.tutujin.com",
api_key=os.environ["TUTUJIN_API_KEY"],
max_tokens=1024,
)
print(claude.invoke("用三点总结这份会议纪要的要点:……").content)base_url 填站点根地址,不带 /v1。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 404 | ChatOpenAI 的 base_url 要带 /v1;ChatAnthropic 的不带 |
| 向量接口报 400 | 非 OpenAI 向量模型没有加 check_embedding_ctx_length=False |
503 并提示 model_not_found | Key 所在分组没有这个模型,见选择分组 |
没找到答案?加客服微信 JsnonoChat,发送报错信息里的 request id,我们帮你排查。