当前位置: 首页 > news >正文

langchain--2--invoke、batch、stream、ainvoke、abatch、astream

环境:本地使用ollama部署的deepseek-r1:1.5b模型

1 invoke、batch、stream

代码示例:

from pydantic import BaseModel, Field
from langchain_community.llms import Ollama
from langchain.prompts import PromptTemplate
from langchain.schema.runnable import RunnablePassthroughclass Add(BaseModel):a: int = Field(description="第一个整数")b: int = Field(description="第二个整数")result: int = Field(description="两个整数的求和结果")# 初始化LLM
llm = Ollama(model="deepseek-r1:1.5b",base_url="http://localhost:11434",temperature=0
)from langchain_core.output_parsers import JsonOutputParser
json_parser = JsonOutputParser(pydantic_object=Add)
prompt_template = PromptTemplate(template="计算两个整数的和。\n用户输入:{query}\n{format_instructions}",input_variables=["query"],partial_variables={"format_instructions": json_parser.get_format_instructions()}
)
chain = {"query": RunnablePassthrough()} | prompt_template | llm | json_parser# 1 invoke 同步;单任务 参数直接传递字符串
print("==========1 invoke 同步;单任务 参数直接传递字符串=============")
output = chain.invoke("5 加 3 等于几")
print(output)# 2 invoke 同步;单任务 参数也可以传递列表
print("==========2 invoke 同步;单任务 参数也可以传递列表=============")
output = chain.invoke(["5 加 3 等于几"])
print(output)# 3 invoke 同步;单任务 传参多个列表中有多个任务时,只会执行第一个任务,后边的任务不会执行,批量执行需要使用batch
print("==========3 invoke 同步;单任务 传参多个列表中有多个任务时,只会执行第一个任务,后边的任务不会执行,批量执行需要使用batch=============")
output = chain.invoke(["5 加 3 等于几", "10 + 8 = ?"])
print(output)# 4 batch 同步;多任务批量执行 执行多个任务
print("==========4 batch 同步;多任务批量执行 执行多个任务=============")
output = chain.batch(["5 加 3 等于几", "10 + 8 = ?"])
print(output)# 5 stream 同步;单任务,参数可以是字符串可以是单任务列表,所任务列别时只会执行第一个任务;stream流式输出不仅可以是字符串流式输出,也可以是其它数据格式比如:json、pydantic...
print("==========5 stream 同步;单任务,参数可以是字符串可以是单任务列表,所任务列别时只会执行第一个任务;stream流式输出不仅可以是字符串流式输出,也可以是其它数据格式比如:json、pydantic..=============")
for chunk in chain.stream("5 加 3 等于几"):print(chunk)print("aaaaaaa")

执行结果:

==========1 invoke 同步;单任务 参数直接传递字符串=============
{'a': 5, 'b': 3, 'result': 8}
==========2 invoke 同步;单任务 参数也可以传递列表=============
{'a': 5, 'b': 3, 'result': 8}
==========# 3 invoke 同步;单任务 传参多个列表中有多个任务时,只会执行第一个任务,后边的任务不会执行,批量执行需要使用batch=============
{'a': 5, 'b': 3, 'result': 8}
==========4 batch 同步;多任务批量执行 执行多个任务=============
[{'a': 5, 'b': 3, 'result': 8}, {'a': 10, 'b': 8, 'result': 18}]
==========5 stream 同步;单任务,参数可以是字符串可以是单任务列表,所任务列别时只会执行第一个任务;stream流式输出不仅可以是字符串流式输出,也可以是其它数据格式比如:json、pydantic..=============
{}
aaaaaaa
{'a': 5}
aaaaaaa
{'a': 5, 'b': 3}
aaaaaaa
{'a': 5, 'b': 3, 'result': 8}
aaaaaaaProcess finished with exit code 0

2 ainvoke、abatch、astream

http://www.lryc.cn/news/606540.html

相关文章:

  • 远程仓库地址发生变化
  • HTTP性能优化实战
  • Redis实战(4)-- BitMap结构与使用
  • ASIC芯片简介
  • [12月考试] C
  • 【UEFI系列】Event
  • 超简单的跳动爱心
  • 【SpringMVC】拦截器,实现小型登录验证
  • 逻辑回归——银行贷款案例分析
  • Lomsat gelral 树上启发式合并
  • Coze是什么?能做什么?
  • Dify插件安装失败,一直处于安装状态?
  • 【智能体agent】入门之--1.初体验
  • OpenCV学习day2
  • RabbitMQ的特点和消息可靠性保障
  • 【neo4j】跨版本升级数据库
  • 《Java 程序设计》第 14 章 - JavaFX 基础
  • MySQL 8.0 OCP 1Z0-908 题目解析(42)
  • 企业级部署 (基于tomcat与nginx)
  • Linux和shell
  • 【运维基础】Linux 文件系统基本管理
  • Side band ECC、Inline ECC、On-die ECC、Link ECC
  • chrome.storage 和 localStorage
  • Android 基础入门学习目录(持续更新)
  • kettle插件-kettle http client plus插件,轻松解决https接口无法调用文件流下载问题
  • 面试笔记【16:9区域问题】
  • SQL注入SQLi-LABS 靶场less25a-28a详细通关攻略
  • ESP32 外设驱动开发指南 (ESP-IDF框架)——GPIO篇:基础配置、外部中断与PWM(LEDC模块)应用
  • 机械学习--逻辑回归
  • 第1章:基础篇——第1节:基础操作与认识界面