news 2026/6/23 19:37:39

【大模型】-LangChain--stream流式同步异步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【大模型】-LangChain--stream流式同步异步

文章目录

  • 1.同步stream流
  • 2.异步astream流
  • 3.异步astream流json输出
  • 4.异步事件astream_events流
  • 5.异步多线程

1.同步stream流

importosfromlangchain_community.chat_modelsimportChatTongyi os.environ["DASHSCOPE_API_KEY"]="sk-秘钥"llm=ChatTongyi(model="qwen-plus")chunks=[]forchunkinllm.stream(#stream同步,异步是astream"天空是什么颜色?"):chunks.append(chunk)print(chunk.content,end="|",flush=True)#print(StrOutputParser().parse(chunks))

2.异步astream流

importosimportasynciofromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplate,HumanMessagePromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.messagesimportSystemMessage os.environ["DASHSCOPE_API_KEY"]="sk-秘钥"llm=ChatTongyi(model="qwen-plus")prompt=ChatPromptTemplate.from_template("给我讲一个{topic}的故事")output_parser=StrOutputParser()chain=prompt|llm|output_parserasyncdefasync_astream_chain():asyncforchunkinchain.astream({"topic":"干将"}):print(chunk,end="|",flush=True)asyncio.run(async_astream_chain())

3.异步astream流json输出

importosimportasynciofromlangchain_core.output_parsersimportStrOutputParser,JsonOutputParserfromlangchain_core.promptsimportChatPromptTemplate,HumanMessagePromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.messagesimportSystemMessage os.environ["DASHSCOPE_API_KEY"]="sk-秘钥"llm=ChatTongyi(model="qwen-plus")#prompt = ChatPromptTemplate.from_template("给我讲一个{topic}的故事")output_parser=JsonOutputParser()chain=llm|output_parserasyncdefasync_astream_chain():asyncforchunkinchain.astream("以JSON格式输出法国、西班牙和日本的国家和人口列表"):print(chunk,flush=True)asyncio.run(async_astream_chain())

4.异步事件astream_events流

importosimportasynciofromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplate,HumanMessagePromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.messagesimportSystemMessage os.environ["DASHSCOPE_API_KEY"]="sk-秘钥"llm=ChatTongyi(model="qwen-plus")asyncdefasync_astream():events=[]asyncforeventinllm.astream_events("hello",version="v2"):events.append(event)print(events)asyncio.run(async_astream())""" 事件 [{ 'event': 'on_chat_model_start', 'data': { 'input': 'hello' }, 'name': 'ChatTongyi', 'tags': [], 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = 'Hello', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = '! How', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = ' can I assist', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = ' you today?', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = ' 😊', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = '', additional_kwargs = {}, response_metadata = { 'finish_reason': 'stop', 'request_id': '3952154f-a9f5-4b39-a3c5-6eb8c85a6213', 'token_usage': { 'input_tokens': 9, 'output_tokens': 11, 'total_tokens': 20, 'prompt_tokens_details': { 'cached_tokens': 0 } } }, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'parent_ids': [] }, { 'event': 'on_chat_model_stream', 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'data': { 'chunk': AIMessageChunk(content = '', additional_kwargs = {}, response_metadata = {}, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9', chunk_position = 'last') }, 'parent_ids': [] }, { 'event': 'on_chat_model_end', 'data': { 'output': AIMessageChunk(content = 'Hello! How can I assist you today? 😊', additional_kwargs = {}, response_metadata = { 'finish_reason': 'stop', 'request_id': '3952154f-a9f5-4b39-a3c5-6eb8c85a6213', 'token_usage': { 'input_tokens': 9, 'output_tokens': 11, 'total_tokens': 20, 'prompt_tokens_details': { 'cached_tokens': 0 } } }, id = 'lc_run--ef708116-49b9-4572-8860-9bcf04c304e9') }, 'run_id': 'ef708116-49b9-4572-8860-9bcf04c304e9', 'name': 'ChatTongyi', 'tags': [], 'metadata': { 'ls_provider': 'tongyi', 'ls_model_type': 'chat', 'ls_model_name': 'qwen-plus' }, 'parent_ids': [] }] """

5.异步多线程

await asyncio.gather(task1(), task2())

importosimportasynciofromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplate,HumanMessagePromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.messagesimportSystemMessage os.environ["DASHSCOPE_API_KEY"]="sk-秘钥"llm=ChatTongyi(model="qwen-plus")asyncdeftask1():prompt=ChatPromptTemplate.from_template("给我讲一个{topic}的故事,100字")output_parser=StrOutputParser()chain=prompt|llm|output_parserasyncforchunkinchain.astream({"topic":"干将"}):print(chunk,end="|",flush=True)asyncdeftask2():prompt=ChatPromptTemplate.from_template("给我讲一个{topic}的故事,100字")output_parser=StrOutputParser()chain=prompt|llm|output_parserasyncforchunkinchain.astream({"topic":"秦始皇"}):print(chunk,end="|",flush=True)asyncdefmain():#同步调用# await task1()# await task2()# 异步awaitasyncio.gather(task1(),task2())asyncio.run(main())
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 13:22:43

兜兜英语每日短语:逃单篇

1. 🍽️💨 dine and dash(吃霸王餐 / 吃完就跑) 英文:Nine diners in Chongqing dined and dashed, leaving one person behind. 中文:重庆 9 名食客吃霸王餐后逃单,只留下一人 “背锅”&#x…

作者头像 李华
网站建设 2026/6/23 21:31:57

计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统

计算机毕业设计springboot汽车智慧检修系统a93520rj (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 当汽车从“机械”进化为“数据孤岛”,每一次打火、每一脚刹车都…

作者头像 李华
网站建设 2026/6/23 21:32:54

python3

import osdef traverse_files(path):# 遍历当前路径下的所有文件和文件夹for item in os.listdir(path):# 拼接完整路径item_path os.path.join(path, item)if os.path.isfile(item_path):# 是文件则输出路径print("文件:", item_path)elif os.path.isdir(item_path…

作者头像 李华
网站建设 2026/6/22 21:17:00

【3D图像技术分析与实现】Apple Vision Pro三维成像技术栈深度解析

作为空间计算的标杆产品,Apple Vision Pro的三维成像能力是其实现虚实融合体验的核心基石。它并未依赖单一技术路径,而是通过“多传感器硬件阵列专用芯片算力全栈软件框架”的协同架构,构建了兼具精度、实时性与沉浸感的三维感知系统。本文将…

作者头像 李华
网站建设 2026/6/23 19:36:45

经典算法题详解之统计重复个数(三)

算法我们设计一个哈希表 recall:哈希表 recall 以 s2 字符串的下标 index 为索引,存储匹配至第 s1cnt 个 s1 的末尾,当前匹配到第 s2cnt 个 s2 中的第 index 个字符时, 已经匹配过的 s1 的个数 s1cnt 和 s2 的个数 s2cnt 。我们在…

作者头像 李华
网站建设 2026/6/23 20:29:43

移动应用开发实验室大一上考核

文章目录一、二叉树的前序遍历递归法迭代法二、用栈实现队列1. push(int x):将元素加入队列尾部2. pop():移除并返回队列头部元素3. peek():返回队列头部元素4. empty():判断队列是否为空三、无重复字符的最长字串四、打家劫舍1. …

作者头像 李华