langchain学习笔记之工作流编排

1.LCEL

工作流编排工具,可以从基本组件构建复杂任务链条,支持流处理、并行处理、日志记录等开箱即用的功能。

2.ruanable interface

简化了自定义链的创建流程。是一个标准接口,包括

stream:返回响应的数据块

invoke:对输入调用链

batch:对输入列表调用链

还有相应的异步方法,与asyncio一起使用await语法以实现并发:

astream:异步返回响应的数据块

ainvoke:异步对输入调用链

abatch:异步对输入列表调用链

astream_log:异步返回中间步骤以及最终响应

astream_event:beta流式传输链中发生的事件

langchain学习笔记之工作流编排_第1张图片

同步streamAPI:

from langchain_openai import ChatOpenAI
from pydantic import SecretStr
model = ChatOpenAI(model='deepseek-chat',
                    api_key=SecretStr('mykey'),
                    base_url='https://api.deepseek.com')
chunks =[]
for chunk in model.stream("迪迦奥特曼有几种形态"):
    chunks.append(chunk)
    print(chunk.content,end='',flush=True)

langchain学习笔记之工作流编排_第2张图片

异步调用:

from langchain_openai import ChatOpenAI
from pydantic import SecretStr
import asyncio
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template("请和我介绍一下{aoteman}奥特曼")
model = ChatOpenAI(model='deepseek-chat',
                    api_key=SecretStr('mykey'),
                    base_url='https://api.deepseek.com')
para = StrOutputParser()
chain = prompt|model|para


async def dijia():
    async for chunk in chain.astream({"aoteman":"迪迦"}):
        print(chunk,end='',flush=True)
"""async def yake():
    async for chunk in chain.astream({"aoteman": "亚刻"}):
        print(chunk, end='', flush=True)"""
asyncio.run(dijia())

事件查看:

from langchain_openai import ChatOpenAI
from pydantic import SecretStr
import asyncio
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

#prompt = ChatPromptTemplate.from_template("请和我介绍一下{aoteman}奥特曼")
model = ChatOpenAI(model='deepseek-chat',
                    api_key=SecretStr('mykey'),
                    base_url='https://api.deepseek.com')
'''para = StrOutputParser()
chain = prompt|model|para
'''

"""async def dijia():
    async for chunk in chain.astream({"aoteman":"迪迦"}):
        print(chunk,end='',flush=True)"""
"""async def yake():
    async for chunk in chain.astream({"aoteman": "亚刻"}):
        print(chunk, end='', flush=True)"""
async  def event_stream():
    events = []
    async for event in model.astream_events(input = '你好',version='v2'):
        events.append(event)
    print(events)
asyncio.run(event_stream())

你可能感兴趣的:(langchain,学习,笔记)