langchain如何进行异步加载(该文主要针对Agent)

langchain如何进行流式输出

在使用langchain框架,当希望让模型输出的数据可以在前端进行流式输出时,可以采用该方法。

a.astream_events解释:a为Agent_executor,这个for循环,会将在进行流式输出的事件都给循环一下,其中的判断是看是否到了模型输出的部分。

事件例子如下所示:

{'event': 'on_llm_start', 'data': {'input': {'input': '你好'}}, 'name': 'Ollama', 'tags': ['seq:step:3'], 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text='Thought')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=':')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' The')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' user')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' has')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' greeted')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' me')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=',')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
{'event': 'on_llm_stream', 'data': {'chunk': GenerationChunk(text=' but')}, 'run_id': 'e8e7f241-d3bc-445b-b1c9-f3d3e4d1a62e', 'name': 'Ollama', 'tags': ['seq:step:3'], 'metadata': {}, 'parent_ids': ['0f0c607d-d651-4f47-90d0-654fb746ee44', '8f7d306d-6ac3-4e3a-9d85-36238cfe2ea5']}
--------
async def stream_out():
    chunks = ''
    async for event in a.astream_events({'input': '你好'}, version='v2', include_names=['Ollama']):
        if event['event'] == 'on_llm_stream':
            chunks = chunks + event['data']['chunk'].text
            print(chunks)
    # pprint.pprint(chunks, depth=1)


asyncio.run(stream_out())

而我们想要的东西仅仅是在llm_stream过程中的,因而进行判断。include_names是可以根据名字排除掉一些不需要的事件。

除了Agent之外的如何进行流式输出可以查看官方文档里面的,有问题欢迎大家在评论区进行留言。

参考链接:

How to stream runnables | 🦜️🔗 LangChain

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值