LangChain使用通义千问的向量模型时的报错和大坑 code:400 - ‘error‘: {‘message‘: ‘contents is neither str nor list of str
摘要: 使用LangChain接入通义千问的向量模型时遇到400报错,显示输入内容格式不符。解决方案是在OpenAIEmbeddings构造方法中添加check_embedding_ctx_length=False参数,成功解决问题。该参数可能绕过了长度检查机制,最终实现了示例选择器的相似度匹配功能,效果验证通过。(98字) 精简版(60字): LangChain接入通义千问向量模型报400错误,
·
0 前言
最近尝试使用LangChain来接入国内的大模型,如通义千问,接入聊天模型时很顺利,但是尝试使用向量模型就死活跑不通,去问LangChain官网的AI助手也给不出解决方案,报错如下:
openai.BadRequestError: Error code: 400 - {'error': {'message': 'contents is neither str nor list of str.: payload.input.contents', 'type': 'InvalidParameter', 'param': None, 'code': 'InvalidParameter'}, 'id': '6888b4e3-f57a-437f-a605-0ef1608107ca', 'request_id': '6888b4e3-f57a-437f-a605-0ef1608107ca'}
1 报错的代码
import os
from langchain_community.vectorstores import Chroma
import dotenv
from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
dotenv.load_dotenv()
os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")
# 获取对话模型
embeddings_model = OpenAIEmbeddings(
model="text-embedding-v2",
)
# 定义示例组
examples = [{"question": "地球是什么形状的?", "answers": "地球是一个两极稍扁、赤道略鼓的不规则球体"},
{"question": "水的化学式是什么?", "answers": "水的化学式是 H₂O"},
{"question": "世界上最高的山峰是什么?", "answers": "世界上最高的山峰是珠穆朗玛峰"},
{"question": "一年有几个季节?", "answers": "一年有四个季节,分别是春季、夏季、秋季和冬季"},
{"question": "计算机的基本组成部分有哪些?",
"answers": "计算机的基本组成部分包括硬件系统和软件系统,硬件系统主要有中央处理器、存储器、输入设备和输出设备"}]
# 定义示例选择器
example_selector = SemanticSimilarityExampleSelector.from_examples(
# 示例列表
examples=examples,
# 嵌入模型
embeddings=embeddings_model,
# 向量数据库
vectorstore_cls=Chroma,
# 生成的示例数量
k=1
)
question = "世界上哪座山最高?"
selected_example = example_selector.select_examples({"question": question})
print(f"最相近的示例: {selected_example}")
2 解决方案
在大模型构造方法的参数中加入check_embedding_ctx_length=False,如下
# 获取对话模型
embeddings_model = OpenAIEmbeddings(
model="text-embedding-v2",
check_embedding_ctx_length=False
)
具体原因也不太确定,这个参数似乎是用于跳过长度检查,但是不知道这个和报错说的无效参数有啥关系,但最终代码成功跑通。
3 运行效果

更多推荐
所有评论(0)