为什么我用举措Initiative而不是项目(译) 举措”这个词在团队中涵盖的工作范围更加广泛。而“项目”这个词表示的过于狭窄。在牛津词典中,对“项目”这个词的定义是一个项目是“一个个人或协作的企业,经过精心计划以实现特定目标”。根据项目管理协会(PMI)的定义,项目是“为了创造一个独特的产品、服务或结果而进行的暂时性努力”。这两种定义都很好,尽管我必须承认,作为一个前PMI高管,我对PMI的定义有所偏好。项目的一个有趣之处在于它们是暂时性的,有开始和结束,而问题就在这里。
一个好用mybatis-flex生成器配置 这里使用的mysql数据库,生成表,而且约定了entity和TableDef必须为自动生成,且不应该手动修改。mapper和mapperxml可以进行手动修改。
使用Rust编写一个web todolist应用 这里要求返回的结果必须实现IntoResponse,否则无法在axum的Route中注册,可以使用axum提供的Json Struct包括数据和结果,这样就能将数据正常转换为Respone。这样,整体一个简单的todolist webserver就已完成,这里面还有一个update部分没有编写,不过仿照上面的handler也可以编写出来。State则在axum中进行注册,可以直接在参数列表中传入,这里bb8提供的Pool,不用考虑所有权,不使用clone,直接进行get使用。本次开发的服务使用的依赖有。
一种docker start放回Error response from daemon: task xxx错误的解决方式 执行重启命令后,发现docker中有的应用无法启动,并显示出Exit(255)的错误提示。重新执行后发现返回错误。
Next中的App Router 在next的13版本中,推出了一个新的App路由,由React Server Components构建,它支持共享布局、内部路由、加载状态、错误处理等。next中也包含一些特殊的文件,这些文件均为一种特殊的component,可以在react中直接使用。和Pages router类似,App router同样使用文件系统的目录结构。nextjs中的目录,可以创建特殊的文件夹,来实现特殊的功能。目录,保持原先的行为,而一些使用新的App Router。每一个文件夹在路径中都表示为路由中的一个片段。
babyAGI(6)-babyCoder源码阅读4_Embbeding代码实现 在进入到主程序前,我们还需要看一个Embedding的实现代码,这里的功能主要是为了计算代码之间的相关性。embedding可以文本中的词语转化为低维实数向量的表示,来计算两段文字间的几何距离来判断词语的含义是否相近。
babyAGI(7)-babyCoder源码阅读3(任务执行相关agent) 该agent会根据,objective和task的内容自动分配要执行的agent整个任务分配的agent分成了两部分,一部分是任务推荐建议的agent,给出推荐的agent的建议第二部分,是结合推荐的建议,给出一个确定的agent推荐。
babyAGI(6)-babyCoder源码阅读2任务描述部分 废话不多说,我们直接看task的prompt这里需要注意的是,每个openai_call的temperature都不相同,这也是开发程序时需要调整和关注的一点。
BabyAGI(4)-babycoder第一部分,配置项和agent tools函数 babyCoder是一个工作在AI系统的上的工具,它可以根据一些简单的目标写一些短的代码。作为babyagi的一部分,babycoder的目标是为越来越厉害的人工智能agent打下基础,能够生成更大、更复杂的项目。babycoder主要的目的是为编写代码和修改的代码的AI agent提供一个简单的框架,随着时间的推移,变成一个更通用的系统。下面是整个babycoder的流程,同样从一个目标开始,然后进行任务创建、任务分解、调用相应的agents,编程代码。
babyAGI(3)-COOPERATIVE_MODE babyAGI中有cooperative模式,其核心是调用ray库,实现分布式多进程执行任务。从BabyAGI的源码中,我们可以学习ray core的使用。
在DeepLn环境中安装VLLM与ChatGLM3 总体而言,vllm的优势有- vLLM通过PagedAttention机制,可以高效地管理大语言模型的keys和values,显著提高吞吐量。- memory sharing机制可以实现不同样本间的显存共享,进一步提升吞吐量。- 使用pip安装vLLM后,可以通过几行代码进行离线推理。- 也可以启动在线服务,然后通过API调用vLLM。- vLLM兼容主流的预训练模型,可以不修改模型结构就获得显著的加速效果。
设置RabbitMQ超时时间 RabbitMQ默认的超时时间是30分钟,在消息消费超过30分钟后,rabbitMQ会发生错误,导致整个channel被销毁,无法继续消费。值得注意的是,这个事临时更改,永久更改需要进入rabbit.conf文件里修改。在RabbitMQ安装的终端执行。命令,将超时时间延长。可以查看设置的超时值。
谈谈TIME_WAIT 当主机1要关闭TCP连接时,会先发送FIN报文给主机2。主机2进入CLOSE_WAIT状态,并发送一个ACK应答。同时,主机2通过read调用获得EOF,并将此结果通知应用程序进行主动关闭操作,发送FIN报文。主机1在接收到FIN报文后发送ACK应答,此时进入TIME_WAIT状态。主动发起关闭行为的客户端会进入到TIME_WAIT状态。主机1在TIME_WAIT停留时间是固定的,是MSL(maximum segment lifetime)的两倍,一般称为2MSL。
Java中无符号数的处理 核心思想使用位数更长的数字覆盖之前的无符号位,如果我们使用short计算,那么我们就要转换到int类型去计算,int的无符号类型就需要使用long以此类推。在使用java编写虚拟机类型的程序时,经常会使用无符号数来作为地址或者操作数。java原生语言中并不支持无符号数,因此需要我们将有符号数转为无符号数。使用&计算符号,将有符号的参数提升到无符号参数。对于short而言使用&0xffff,来获取无符号数的真实值。获得结果可以使用&0xff,来获取无符号数的真实值。在编写8bit计算时十分有用。
使用zap日志替代xorm日志 xorm提供了日志接口,也就是说我们可以自己实现这些接口,用自己的日志框架啊替代原生的日志框架。直接在engine出调用SetLogger即可。这段代码实现了xorm.logger接口。下面是我用zap实现该接口的代码。