Error invoking remote method 'knowledge-base:search': Error: 413 input must have...
🚨 错误信息
🤖 AI解决方案
原文:Error: Error invoking remote method 'knowledge-base:search': Error: 413 input must have less than 512 tokens
译文:错误:调用远程方法 'knowledge-base:search' 时出错:错误:413 输入必须少于512个令牌(Token)。
原因分析
此错误源于调用一个名为 'knowledge-base:search' 的API接口时,传入的查询文本过长。错误代码 413 通常代表“请求实体过大”。接口明确限制输入文本的Token数量不得超过512个,而当前传入的文本超出了此限制。
解决方案
需要将发送给 knowledge-base:search 方法的查询字符串进行截断或精简,确保其Token数少于512。以下是通用处理逻辑:
javascript
// 假设这是你的原始查询字符串
let userQuery = "这里是非常长的用户查询文本...";// 方案1:简单截断(可能破坏语义,但快速有效)
const MAX_TOKENS = 500; // 留出一些余量
let truncatedQuery = userQuery.substring(0, MAX_TOKENS); // 简单按字符截断
// 更优方案2:按单词或句子截断,以尽量保持语义完整
function truncateByTokens(text, maxTokens) {
// 这是一个简化的示例。实际计算Token数更复杂,通常使用与模型相同的分词器。
// 例如,可以近似按空格分词来计算单词数(1个Token约等于0.75个英文单词或1个中文字符)。
const words = text.split(/\s+/);
if (words.length <= maxTokens) {
return text;
}
return words.slice(0, maxTokens).join(' ');
}
let safeQuery = truncateByTokens(userQuery, 500);
// 然后使用 safeQuery 调用远程方法
// e.g., invoke('knowledge-base:search', safeQuery)
️ 预防措施
gpt-tokenizer 用于OpenAI模型),以便在发送请求前进行准确计算和截断。