思想
LiteFlow 2.12.0 版本的主要 Feature 就是对决策路由的支持
这样就能实现类似 Drools 中的决策表功能
之前一直对索引分析中 type range 有误解
下面是官方文档对 type range 的解释
range
can be used when a key column is compared to a constant using any of the=
,<>
,>
,>=
,<
,<=
,IS NULL
,<=>
,BETWEEN
,LIKE
, orIN()
operators:
1
2
3
4
5
6
7
8
9
10
11 SELECT * FROM tbl_name
WHERE key_column = 10;
SELECT * FROM tbl_name
WHERE key_column BETWEEN 10 and 20;
SELECT * FROM tbl_name
WHERE key_column IN (10,20,30);
SELECT * FROM tbl_name
WHERE key_part1 = 10 AND key_part2 IN (10,20,30);
IN
查询下的 range 什么时候会恶化为 ALL
呢?按照我之前的理解,可能有两点
语法
1 | SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] |
时间复杂度
一次调用是 O(1)
,完整的迭代是
O(N)
,包括不断调用直到返回 cursor 为 0;N
为集合内元素数量
Unix/Linux 操作系统提供了一个 fork
系统调用,它非常特殊,因为普通的函数调用,调用一次就返回一次,但是
fork
调用一次,返回两次
因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回,子进程永远返回
0
,而父进程返回子进程的 ID
这样做的理由是,一个父进程可以 fork
出很多子进程,所以,父进程要记下每个子进程的 ID,而子进程只需要调用
getppid
就可以拿到父进程的 ID
因为 Python 并非是工作内容需要使用的语言,所以对语法并没有系统地学习过,加上也不会使用 Python 编写什么复杂的逻辑,所以一直以来都是使用过程中遇到需要的逻辑语法就查一下
在学习 LangChain 的过程中,发现 Python 的语法糖很多,很多设计思想提供了语法层面的支持,使得阅读源码挺费劲的
所以在这里还是系统地了解下 Python 都提供了哪些语法,也了解下 Python 编写代码的主要思想
这里主要是整理下 Python 中比较特殊的、和 Java 有较大区别的操作
工具是代理可以用来与世界交互的接口,它们包括:
这些信息至关重要,使用这些信息可以用来建立行动系统,LLM 就可以使用名称、描述和 JSON 模式入参作为提示,这样它就知道如何指定要执行的操作,然后要调用的函数就相当于执行该操作
工具的输入越简单,LLM 就越容易使用它。许多代理只使用具有单个字符串输入的工具
需要注意的是名称、描述和 JSON 模式入参(如果使用)都将在提示中被使用。因此这些内容必须清楚并准确地描述应该如何使用该工具;这一点非常重要,如果 LLM 出现了不了解如何使用该工具的情况,则可能需要更改默认名称、描述或 JSON 模式入参