news 2026/5/13 20:51:04

【大模型】-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/5/1 18:12:08

基于Python+Django的学生成绩管理系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦校园教学管理中成绩统计繁琐、数据查询不便的痛点,设计并开发基于PythonDjango的学生成绩管理系统。系统以Python作为核心开发语言,依托Django框架搭建高效稳定的后端服务架构,负责处理用户权限管控、成绩录入、数据统计、…

作者头像 李华
网站建设 2026/5/1 10:26:36

机器学习25:了解领域自适应(Domain Adaptation)

摘要本周课程介绍了领域自适应(Domain Adaptation)的基本概念与必要性。当训练数据与测试数据分布不一致时,模型性能会显著下降,领域自适应旨在解决此问题。课程重点讲解了领域对抗训练方法,通过特征提取器与领域分类器…

作者头像 李华
网站建设 2026/5/13 16:21:06

*边值分析**:聚焦输入域边界,选取边界值及其邻近值

测试用例示例如三角形判定通过输入三边 a、b、c 判断三角形类型,其设计逻辑体现了对正常与异常场景的全面覆盖。正常情况包括等边(abc)、等腰(ab≠c 等)、不等边(a≠b≠c)三角形;而异…

作者头像 李华
网站建设 2026/5/4 14:04:04

JVM 学习小记(边学边充实)

🐱‍👓 一、JVM 1.1 JVM基本定义 定义:Java Virtual Machine-Java 程序的运行环境(Java二进制字节码的运行环境) 好处: 一次编写后,任意环境都可运行 自动内存管理、垃圾回收功能 数组下标…

作者头像 李华