当前位置: 首页 > news >正文

LLamaIndex中经常使用的三个模块

from aiostream import stream
from fastapi import Request
from fastapi.responses import StreamingResponse
from llama_index.core.chat_engine.types import StreamingAgentChatResponse

这四个模块每一个都很实用,在实际开发中经常用到,下面我就详细 一 一 介绍


✅ 1. from aiostream import stream

💡说人话:

这是个第三方库(aiostream),专门用来处理 异步的流式操作,比如你要边接收消息边处理,或者边生成数据边发送给前端,就可以用它。

🎯主要用途:

组合多个异步生成器(async generator),做异步流的数据处理(像 async 的 RxPy)

✅ 举例:
from aiostream import streamasync def gen1():yield 1yield 2async def gen2():yield 3yield 4# 把两个异步生成器合并成一个流
merged = stream.merge(gen1(), gen2())async for item in merged:print(item)
📦 场景:

你要把多个聊天流合并起来(比如 RAG + tool result),就可以用它。


✅ 2. from fastapi import Request

这是 FastAPI 中的一个请求对象类,用来拿前端发来的 HTTP 请求里的内容,比如 headers、body、query 参数等。

🎯主要用途:
  • 获取客户端传来的信息
  • 比如你要判断是谁发的消息、拿到请求体里的参数等
✅ 举例:
from fastapi import Request@app.post("/chat")
async def chat(request: Request):data = await request.json()print(data)return {"msg": "ok"}
📦 场景:

前端调用你的聊天接口 /chat,你就用这个 Request 拿到它传来的聊天内容。


✅ 3. from fastapi.responses import StreamingResponse

这是 FastAPI 提供的一个 边处理边返回响应流 的工具,比如你在聊天时一个字一个字地流式返回,就靠它了。

🎯主要用途:
  • 把一个异步生成器(或者普通生成器)当成“流式响应体”
  • 前端就可以边收边展示,不用等处理完
✅ 举例:
from fastapi.responses import StreamingResponseasync def fake_stream():yield b"hello"yield b"world"@app.get("/stream")
async def stream_data():return StreamingResponse(fake_stream(), media_type="text/plain")
📦 场景:

AI 聊天接口,字一个一个蹦出来返回,就靠它。


✅ 4. from llama_index.core.chat_engine.types import StreamingAgentChatResponse

这是 LlamaIndex 框架里定义的一个类,表示“一个聊天响应的流式版本”。

🎯主要用途:

如果你用的是 Agent 方式的聊天,它会把结果分阶段、分段以异步流的形式生成,就用这个类来接收。

✅ 举例:
response: StreamingAgentChatResponse = await chat_engine.stream_chat("你是谁?")async for chunk in response.async_response_gen():print(chunk.response)
📦 场景:

当你使用 LlamaIndex 的 Agent 聊天,想要边回答边显示,而不是等全部生成完,就会返回这个类型。


🔚 总结对比表:

模块用途举个场景
aiostream.stream异步流处理工具库多个 async generator 合并
fastapi.Request获取 HTTP 请求内容获取用户发来的 prompt
StreamingResponse把响应变成流式前端聊天字一个个显示
StreamingAgentChatResponseLlamaIndex 的流式聊天响应对象边调用边 yield 响应内容

相关文章:

  • 仿 ElementUI 搭建自己的 vue 组件库
  • Selenium入门之环境搭建
  • 2023 (ICPC) Jiangxi Provincial Contest ABCHIJKL
  • Linux内核内存管理单元 详解Linux 内核伙伴系统(Buddy System)的快速路径分配函数get_page_from_freelist
  • LeetCode 2537.统计好子数组的数目:滑动窗口(双指针)
  • HackMyVM - TryHarder
  • Linux》》bash 、sh 执行脚本
  • 大厂面试:六大排序
  • 各种排序算法
  • 从 BI 与 SQL2API 的差异,看数据技术的多元发展路径
  • 网络原理 - 初识网络 1
  • vue3.2 + element-plus 实现跟随input输入框的弹框,弹框里可以分组或tab形式显示选项
  • 操作系统之shell实现(上)
  • 力扣DAY52-54 | 热100 | 图论:腐烂的橘子、课程表、前缀树
  • 解决Flutter 2.10.5在升级Xcode 16后的各种报错
  • Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统
  • 源码分析之Leaflet中Map类扩展方法之ScrollWheelZoom
  • Redis核心数据类型在实际项目中的典型应用场景解析
  • git UserInterfaceState.xcuserstate 文件频繁更新
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——IMX335摄像头测试 #MIPI CSI
  • 男人和女人做羞羞的免费网站/灰色广告投放平台
  • 宁晋网站建设代理价格/湖南网站建设推广优化
  • 做3个网站需要多大的服务器/网上怎么免费推广
  • 泉州网站建设有哪些/五种网络营销推广方法
  • 做电影小视频在线观看网站/如何优化网站排名
  • 做网站的规范/域名解析ip地址