/images/hugo/avatar.png

langchain-core 核心对象

本周开始学习 langchain,大约经历了如下的过程:

  1. 简单阅读了 langchain 文档,学习了 LCEL,LCEL 的基本接口是 Runnable
  2. 读到 astream_log 方法时候,感觉模棱两可,看 langchain-core 的代码
  3. 看到 RunnableSequence invoke 方法时,里面涉及的对象逐渐变多,开始有点迷失在代码细节,无法掌握整体的调用流程
  4. 使用 pycharm Diagrams 查看了不通模块核心类的继承关系

下面是 langchain-core 核心结构记录。查看类继承关系时,用过 pyreverse、pyan3 都不太好用,pyreverse 无法解析泛型,pyan3 一直报错,这里做一下记录。

Redis Barrier

1. 背景

2.1 背景

项目上需要周期性完成一些计算任务,这些任务具有如下特点:

  1. 任务相似但是独立
  2. 任务执行需要读取过去 7 天的历史数据,但是只有当天数据会更新
  3. 任务计算的性能要求很高,需要充分利用计算资源,尽快完成计算

为了快速完成这些任务的计算,设计了如下的分布式计算系统:

Go generate

1. go generate

1.1 简介

项目构建,通常我们会依赖一些构建管理工具,比如shell脚本、make等。通过 make 我们可以在编译和构建 Go 代码之前,完成诸如 protobuf 文件生成等等编译代码所需要的前置动作。不过,Go 1.4 版本的Go工具链中增加了在构建之前驱动执行前置动作的能力,这就是go generate命令。我们看下面这个示例:

Go 常用工具

go 原生提供的工具,在 gopath 和 module-ware 两种模式上存在一些行为差异。接下来我们会分别介绍 go 原生工具在这两种模式下的使用。

1. go get

go get 用于获取 Go 包及其依赖包

常用命令如下: