Labs

突破Groq免费层限制:构建多模型LLM路由系统提升AI应用性能

突破Groq免费层限制:构建多模型LLM路由系统提升AI应用性能

在构建一个旨在分析研究论文的AI应用时,我遇到了Groq免费层API的Token限制,这促使我开发了一套多模型LLM路由系统。这个系统的目标是绕过限制,并最终提升应用性能。最初,我并没有打算构建一个如此复杂的系统,只是想免费总结一篇40页的研究论文。

我的侧项目Papers.ai就是从这种痛点中诞生的。学术文献回顾往往冗长乏味,一篇几十页的论文,你可能要花20分钟才能判断其相关性。我的初衷是解决这个问题,并且希望是免费的。

技术栈与最初的挑战

最初的技术栈非常简洁:React前端,Node.js后端,Firebase处理认证和存储,Groq作为LLM提供商。选择Groq的原因很简单:它真的非常快,相比大多数LLM API,其速度令人震惊。而且其免费层足以支撑真实项目的开发。

最初的设想是:用户上传PDF → 提取文本 → 发送给Groq → 获取摘要。简单直接。然而,实际情况远非如此。

我遇到的第一个瓶颈是Groq免费层对每个模型每分钟的Token限制。当需要总结一篇研究论文时,单次请求通常会达到8,000到15,000个Token。一旦达到限制,就会收到429错误。反复触发,应用将无法使用。

我最初的反应是尝试截断论文,只发送前N个Token进行总结。虽然这确实解决了Token限制问题,但效果非常糟糕。摘要可能会完全遗漏结果部分,跳过方法论,或者仅仅根据摘要和引言给出自信但错误的信息。因此,截断方案不可行,我需要一个更智能的解决方案。

多模型路由的构思

关键的洞察在于:Groq提供了多种LLM模型,并且每个模型都有独立的速率限制桶:

  • llama3-8b-8192:参数较少,速度更快,上下文窗口为8k Token。
  • llama3-70b-8192:参数更多,智能程度更高,上下文窗口为8k Token。
  • mixtral-8x7b-32768:上下文窗口更大,支持32k Token。

Mixtral模型具有更大的上下文窗口,是解决问题的关键。我意识到,不同的任务需要不同的模型能力。例如,简单的关键词提取不需要70B模型,而对多篇论文的方法论进行深度综合分析则可能需要。因此,我决定不再将所有请求都发送给同一个模型,而是构建了一个简单的路由器,根据实际任务的需求来选择合适的模型。

路由系统的工作原理

路由逻辑非常直观,一旦理解,甚至会觉得它很简单:

function routeToModel(task, tokenCount) {
  if (tokenCount > 20000) {
    // 只有mixtral能处理如此大的上下文
    return 'mixtral-8x7b-32768';
  }

  if (task === 'summary' || task === 'qa') {
    // 这些任务需要推理能力——使用大模型
    return 'llama3-70b-8192';
  }

  if (task === 'extraction' || task === 'keywords') {
    // 结构化提取任务不需要70B模型
    return 'llama3-8b-8192';
  }

  // 默认回退
  return 'llama3-70b-8192';
}

这个函数会根据传入的任务类型(task)和Token数量(tokenCount)来决定使用哪个Groq模型。如果Token数量超过20000,则强制使用上下文窗口最大的mixtral-8x7b-32768。对于总结(summary)和问答(qa)这类需要较强推理能力的任务,会选择更智能的llama3-70b-8192。而对于提取(extraction)和关键词(keywords)这类结构化任务,则选择更高效的llama3-8b-8192。如果以上条件都不满足,则默认使用llama3-70b-8192。通过这种智能路由,我不仅成功绕过了Groq免费层的Token限制,还显著提升了应用的效率和准确性。

↗ 阅读原文