1.LCEL
工作流编排工具,可以从基本组件构建复杂任务链条,支持流处理、并行处理、日志记录等开箱即用的功能。
2.ruanable interface
简化了自定义链的创建流程。是一个标准接口,包括
stream:返回响应的数据块
invoke:对输入调用链
batch:对输入列表调用链
还有相应的异步方法,与asyncio一起使用await语法以实现并发:
astream:异步返回响应的数据块
ainvoke:异步对输入调用链
abatch:异步对输入列表调用链
astream_log:异步返回中间步骤以及最终响应
astream_event:beta流式传输链中发生的事件
同步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)
异步调用:
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())