外观
LangChain / LlamaIndex
LangChain
bash
pip install -U langchain-openai langchain-anthropic对话模型
python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4.1-mini", # 也可以填 claude-sonnet-4-6、gemini-3.5-flash 等
base_url="https://vip.zen-ai.top/v1",
api_key="sk-xxxxxxxx",
temperature=0.7,
)
print(llm.invoke("用一句话解释什么是 RAG").content)
# 流式
for chunk in llm.stream("写一首关于春天的诗"):
print(chunk.content, end="", flush=True)python
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-4-6",
base_url="https://vip.zen-ai.top", # 不带 /v1
api_key="sk-xxxxxxxx",
max_tokens=2048,
)
print(llm.invoke("用一句话解释什么是 RAG").content)链与提示词模板
python
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_messages([
("system", "你是一名专业翻译,把用户输入翻译成{language}。"),
("user", "{text}"),
])
chain = prompt | llm | StrOutputParser()
print(chain.invoke({"language": "英文", "text": "今天的会议改到下午三点。"}))向量模型
python
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small",
base_url="https://vip.zen-ai.top/v1",
api_key="sk-xxxxxxxx",
)
vector = embeddings.embed_query("今天天气真好")
print(len(vector))使用非 OpenAI 的向量模型
使用 bge-m3、qwen3-embedding-8b 等模型时,请加上 check_embedding_ctx_length=False,否则 LangChain 会先用 OpenAI 分词器把文本转成 token ID 再发送,导致上游报错。
LlamaIndex
bash
pip install -U llama-index llama-index-llms-openai-like llama-index-embeddings-openaipython
from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.openai import OpenAIEmbedding
Settings.llm = OpenAILike(
model="gpt-4.1-mini",
api_base="https://vip.zen-ai.top/v1",
api_key="sk-xxxxxxxx",
is_chat_model=True,
context_window=128000,
)
Settings.embed_model = OpenAIEmbedding(
model="text-embedding-3-small",
api_base="https://vip.zen-ai.top/v1",
api_key="sk-xxxxxxxx",
)
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
print(index.as_query_engine().query("这些文档的主要内容是什么?"))提示
LlamaIndex 自带的 OpenAI 类会校验模型名是否为 OpenAI 官方模型,调用 Claude、Gemini 等模型时请使用 OpenAILike。