跳到正文
土土金API

集成指南

在 LlamaIndex 中使用

LlamaIndex 用 OpenAILike 接入土土金 API 的对话模型、用 OpenAIEmbedding 接入向量模型,api_base 设为 https://www.tutujin.com/v1,再交给 VectorStoreIndex 做文档问答。含完整 Python 示例。

LlamaIndex 接入土土金 API 用两个类:对话模型用 OpenAILike(任何模型名都能用),向量模型用 OpenAIEmbedding。两者的 api_base 都设为 https://www.tutujin.com/v1,api_key 用土土金的 Key,然后设成全局默认,就能直接搭文档问答。

安装

cURL
pip install llama-index llama-index-llms-openai-like llama-index-embeddings-openai

配置对话模型

LlamaIndex 自带的 OpenAI 类会校验模型名,只认 OpenAI 的模型。调用 DeepSeek、Claude、通义千问等模型时用 OpenAILike:

Python
import os
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    model="deepseek-v4.1-flash",
    api_base="https://www.tutujin.com/v1",
    api_key=os.environ["TUTUJIN_API_KEY"],
    is_chat_model=True,
    timeout=60,
)
print(llm.complete("用一句话解释什么是检索增强生成。"))

is_chat_model=True 让它走 Chat Completions 接口。OpenAILike 默认的上下文窗口参数 context_window 比较保守,处理长文档时按所选模型官方公布的上限设置。

配置向量模型

Python
from llama_index.embeddings.openai import OpenAIEmbedding

embed_model = OpenAIEmbedding(
    model_name="text-embedding-3-small",
    api_base="https://www.tutujin.com/v1",
    api_key=os.environ["TUTUJIN_API_KEY"],
)
vector = embed_model.get_text_embedding("退货政策是什么?")
print(len(vector))

搭一个文档问答

Python
from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex

Settings.llm = llm
Settings.embed_model = embed_model

documents = SimpleDirectoryReader("./docs").load_data()  # 你的 PDF、Word、Markdown 等
index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine(similarity_top_k=5)
print(query_engine.query("员工报销需要哪些材料?"))

建索引时每个文本块都会调用一次向量接口,按向量模型的价格计费;之后每次提问调用一次向量接口和一次对话接口。费用怎么估算,见企业知识库与 RAG 里的成本表。

流式输出

Python
query_engine = index.as_query_engine(streaming=True)
response = query_engine.query("总结一下差旅制度的要点")
response.print_response_stream()

常见问题

现象原因与处理
报错提示未知的模型名用了 LlamaIndex 的 OpenAI 类,换成 OpenAILike
404api_base 要带 /v1,应为 https://www.tutujin.com/v1
回答被截断或长文档出错调大 context_window、max_tokens,或减少 similarity_top_k
503 并提示 model_not_foundKey 所在分组没有这个模型,见选择分组

没找到答案?加客服微信 JsnonoChat,发送报错信息里的 request id,我们帮你排查。