大模型API请求超时怎么办?连接、首字节与总时长的分层排查指南
大模型API超时不一定是同一种故障。应先区分连接超时、读取超时、总时长限制和HTTP网关错误,再结合请求耗时、错误码、流式状态及请求标识逐层定位。本文给出最小复现、代理检查和安全重试方法。
小睿AI导航 ARTICLE DETAIL
本文用一个中文帮助中心匹配示例,介绍Sentence Transformers的安装、模型首次下载、批量编码和语义相似度排序。你将学会核对模型的中文支持、输入长度与许可证,检查向量数量和维度,并理解归
样式 7 内容详情排版
用户输入“密码忘记了,怎样重新设置?”,程序从几条帮助中心问题中找出语义最接近的条目。Sentence Transformers负责将文本编码为固定维度的向量,再由本地代码计算相似度、排列候选问题。这个最小示例只需要模型和内存中的向量,不需要向量数据库。
建议在独立的Python虚拟环境中执行安装命令:
python -m pip install -U sentence-transformers numpy
安装会带入所需依赖,包括PyTorch。若遇到Python版本不兼容或依赖安装失败,应根据安装报错和当前包的环境要求处理。
本例使用sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2。其模型卡列出包括中文在内的多语言支持,输出向量维度为384,Sentence Transformers配置的最大输入长度为128个token,许可证为Apache-2.0。这里的token不等于汉字数,超出长度的输入会被截断。
将下面各行依次保存为match.py。代码使用CPU,便于明确运行设备;这不代表对运行速度或内存占用的承诺。
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2', device='cpu')
questions = ['忘记登录密码后如何重置?', '已经登录,如何修改当前密码?', '收不到密码重置邮件怎么办?', '如何修改发票抬头?']
query = '密码忘记了,怎样重新设置?'
vectors = model.encode(questions, batch_size=4, convert_to_numpy=True, normalize_embeddings=True)
query_vector = model.encode([query], convert_to_numpy=True, normalize_embeddings=True)
print('候选向量形状:', vectors.shape, '查询向量形状:', query_vector.shape)
assert vectors.shape == (len(questions), 384)
assert query_vector.shape == (1, 384)
scores = vectors @ query_vector[0]
order = np.argsort(-scores)
print('\n'.join(f'{scores[i]:.4f} {questions[i]}' for i in order))
运行python match.py。首次加载时,程序需要联网下载模型权重、分词器和配置文件,并写入本机缓存;后续加载可复用缓存。下载完成后,编码计算在本机执行。需要离线运行时,可提前准备完整模型目录,将模型名称替换为本地路径。
候选向量形状应为(4, 384),查询向量形状应为(1, 384):每条文本对应一个384维向量。这里传入的是文本列表,因此即使只有一个查询,也保留了二维形状。batch_size控制每批处理的文本数量,不改变每条向量的维度。
余弦相似度是两个向量的点积除以它们长度的乘积,衡量的是方向接近程度。代码设置normalize_embeddings=True,将每个向量做L2归一化,使其长度约为1,因此点积与余弦相似度在浮点误差范围内相等。
如果没有归一化,点积还会受到向量长度影响,不能直接当作余弦相似度。示例中的@执行矩阵与向量的乘法,一次得到所有候选问题的得分,再按分数从高到低排序。
对于当前查询,“忘记登录密码后如何重置?”是应重点检查的正例;“已经登录,如何修改当前密码?”共享密码相关词汇,但操作前提不同;“收不到密码重置邮件怎么办?”涉及同一流程,却对应后续故障;发票问题则作为无关对照。运行后检查这些条目的相对顺序,不预设具体分数。
继续加入“忘记密码且旧邮箱无法使用”“想改密码但仍能登录”等真实表达,逐条确认首位结果是否满足需求。相似度分数不等于答案正确的概率,也没有适用于所有模型和业务的统一阈值。若需要自动答复,应使用带标注的业务样本验证阈值和拒答规则;更换模型或切分方式后,还应重新检查。