78

当LLM API调用很慢时,如何处理高并发请求?

编程能力与工程实践中等

📋 面试问题

当LLM API调用很慢时,如何处理高并发请求?

✅ 期望回答

方案(从易到难): 异步IO+协程:
import asyncio

from openai import AsyncOpenAI

client = AsyncOpenAI()

semaphore = asyncio.Semaphore(10) # 限制并发

async def call_llm(prompt: str):

async with semaphore:

resp = await client.chat.completions.create(

model='gpt-4', messages=[{'role':'user','content':prompt}]

)

return resp.choices[0].message.content

async def process_batch(prompts: list[str]):

tasks = [call_llm(p) for p in prompts]

return await asyncio.gather(*tasks)

消息队列(异步解耦):

请求 -> [API Gateway] -> [Kafka/Redis Queue] -> [Worker Pool] -> LLM API

-> 结果写入DB/缓存 -> 客户端轮询/WebSocket获取

本地模型替代API:

部署vLLM/TGI自建推理服务 -> 告别API限流 + 更低延迟

缓存层:高频相同/相似请求(>90%语义相似度)直接返回缓存结果 降级策略:
  • 复杂请求用大模型 -> 超时 -> 降级用小模型
  • 当LLM不可用 -> 返回FAQ匹配结果

关键权衡:并发数、延迟、成本的三角平衡
#并发#异步#消息队列