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匹配结果
#并发#异步#消息队列