LangChain中的Runnable接口
Runnable 接口是使用 LangChain 组件的基础,它在很多组件中实现,例如语言模型(language models)、输出解析器(output parsers)、检索器(retrievers)、编译的 LangGraph 图,该接口允许开发人员以一致且可预测的方式与各种 LangChain 组件进行交互。
Runnable 接口概述Runnable 的方式定义了一个标准的接口,允许 Runnable 组件:
Invoked:将单个输入转换为输出。
Batched:多个输入被有效地转换为输出。
Streamed:输出在生成时进行流式传输。
Inspected:可以访问有关 Runnable 的输入、输出和配置的示意图信息。
Composed:可以组合多个 Runnable,使用 LangChain 表达语言(LCEL)协同工作,以创建复杂的管道。
优化的并行执行(batch)LangChain Runnables 提供内置batch(和batch_as_completed)API,允许您并行处理多个输入。
当需要处理多个独立输入时,使用这些方法可以显著提高性能,因为处理可 ...
如何让 LLM 的返回值流式输出?
如何让 LLM 的返回值流式输出?流式输出大模型收到输入后并不是一次性生成最终结果,而是逐步地生成中间结果,最终结果由中间结果拼接而成。用流式输出的方式调用大模型 API,能够实时返回中间结果,减少用户的阅读等待时间,并降低请求的超时风险。
简介流式输出,也称为流式传输,指的是服务器持续地将数据推送到客户端,而不是一次性发送完毕。这种模式下,连接一旦建立,服务器就能实时地发送更新给客户端。
相比非流式输出,流式输出可以实时地将中间结果返回,您可以在模型进行输出的同时进行阅读,减少等待模型回复的时间;并且当输出内容较长时,有效降低请求超时的风险。
请求超时错误的报错信息:Request timed out, please try again later. 或 Response timeout。
适用场景流式输出的典型应用场景包括实时消息推送、股票行情更新、实时通知等,任何需要服务器向客户端实时传输数据的场合都可以使用。
与普通请求的区别与传统的 HTTP 请求不同,普通请求是基于请求-响应模型,客户端发送请求后,服务器处理完毕即刻响应并关闭连接。流式输出则保持连接开放,允许服务器连续 ...
协程 & 异步编程(asyncio)
协程 & 异步编程(asyncio)协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。例如:
def func1(): print(1) ... print(2) def func2(): print(3) ... print(4)func1()func2()
上述代码是普通的函数定义和执行,按流程分别执行两个函数中的代码,并先后会输出:1、2、3、4。但如果介入协程技术那么就可以实现函数见代码切换执行,最终输入:1、3、2、4 。
1. 协程的实现在Python中有多种方式可以实现协程,例如:
greenlet,是一个第三方模块,用于实现协程代码(Gevent协程就是基于greenlet实现)
yield,生成器,借助生成器的特点也可以实现协程代码。
asyncio,在Python3.4中引入的模块用于编写协程代码。
async & awiat,在Python3.5中引入的两个关键字,结合asyncio模块可以更方便的编写协程代码。
1.1 greenletgreen ...
舜桀的算法笔记
这里主要记录我学习算法的历程~
主要参考资料为labuladong的算法笔记
下面开始学习算法吧!
数据结构基础Java基础Java标准库数据结构的基本用法1.数组int m = 5, n = 10;// 初始化一个大小为 10 的 int 数组// 其中的值默认初始化为 0int[] nums = new int[n]; // 初始化一个 m * n 的二维布尔数组// 其中的元素默认初始化为 falseboolean[][] visited = new boolean[m][n];
2.字符串StringJava 字符串不支持用 [] 直接访问其中的字符,且不能直接修改,需要转化为 char[] 类型才能修改。
String s1 = "hello world";// 获取 s1[2] 的那个字符char c = s1.charAt(2);char[] chars = s1.toCharArray();chars[1] = 'a';String s2 = new String(chars);// 输出:hallo worldSyste ...
动手学习深度学习-记录
torch.arangetorch.arange(start, end, step=1, out=None) -> Tensor#返回一个1维张量,长度floor((end - start)/step)#包含从start到end,以step为步长的一组序列值(默认步长为1)#参数##start(float) - 序列的起始点##end(float) - 序列的终止点##step(float) - 相邻点的间隔大小##out(Tensor, optional) - 结果张量#例子x = torch.arange(12)y = torch.arange(2, 9)z = torch.arange(2, 9, 2)print(x)print(y)print(z)#结果tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])tensor([2, 3, 4, 5, 6, 7, 8])tensor([2, 4, 6, 8])
torch.zerostorch.zeros(*sizes, out=None) -> Tensor#返 ...
数据结构算法总结-自用
数据结构算法整理By 舜桀BB循环双链表的存储结构typedef struct DNode{ ElemType data; struct DNode *prior,*next;}DNode,*DLinklist;//初始化空的循环双链表bool InitDLinkList(DLinklist &L){ L = (DNode *) malloc(sizeof(DNode)); //分配一个头结点 if(L==NULL) //内存不足,分配失败 return false; L->prior = L; //头结点的prior指向头结点 L->next = L; //头结点的next指向头结点 return false;}//判断循环双链表是否为空bool Empty(DLinklist L){ if(L->next==L) return true; else return false; ...
自我 debug:修复人格代码 bug
在实习的经历中,我的leader是个非常喜欢复盘、反思的人,向他学习,在这里反思自己的缺点,希望可以监督自己修改吧
拖延症具体表现:经常把事情拖延到ddl前才匆忙把事情做完,导致自己难受也使得事情做的不好不完善;每次都想着提前做完,但是总是拖延,没有给自己规定一个时间去完成,导致拖拖拉拉。
解决办法:提前规划,比如说下周一要截至的任务,把它提前到这周六,提前完成任务,一方面给自己成就感,另一方面避免因为拖延而导致任务无法及时完成。
意志力不够坚定具体表现:在做一件事情的时候,遇到一点阻力就想放弃,阻力常常表现为不熟悉的领域、不确定的结论、不充足的时间,导致事情越来越糟糕。
解决办法:
懒散具体表现:间歇性踌躇满志,持续性混吃等死。心里是对美好的未来有憧憬的,但是经常无法坚持,会间歇地努力几天,但是没办法一直坚持,容易思想懒散。
hdw-dubbo微服务开发平台-搭建记录
DUBBO系统搭建项目介绍
hdw-dubbo微服务开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。
核心技术采用SpringBoot、Dubbo、Mybatis、Mybatis-plus、Druid、Redis、ActiveMQ、Quartz、JWT Token等主要框架和中间件。前端采用vue-element-ui组件。
前后端分离,通过token进行数据交互,可独立部署
灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求
页面交互使用Vue2.x,极大的提高了开发效率
完善的代码生成机制,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务
引入dubbo服务治理
引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
引入API模板,根据token作为登录令牌,极大的方便了APP接口开发
引入Hibernate Validator校验框架,轻松实现后端校 ...
软件能效平台-搭建记录
Software Engineering Productivity Platform软件能效平台系统介绍基于Vue2、Element UI、SpringBoot框架,用于软件研发流程管理支持以及其过程数据分析度量、质量保证技术的集成
源码地址前端:https://github.com/purang-fintech/seppf.git后端:https://github.com/purang-fintech/seppb.git
配置教程数据库配置(服务器ip:172.21.3.144;MySQL登录账户密码:root Anxin@123)
1.进入MySQL:mysql -u root -p (其中root是指我们的数据库用户名为root,后续可视具体情况修改)
然后输入密码Anxin@123即可进入数据库
2.进入数据库后执行create database sepp; (分号别漏了)
3.修改spring.properties文件,
jdbc.url=jdbc:mysql://172.21.3.144:3306/sepp?useUnicode=true&characterEnco ...