利用DuckDB 1.5的json和struct功能分析llama web-ui导出的对话json文件

1.表格方式输出

输出全部列

复制代码
memory D from 'convlo.json';
┌───────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────┐
│                           conv                            │                         messages                         │
│ struct(id uuid, "name" varchar, lastmodified bigint, curr │ struct(convid uuid, "role" varchar, "content" varchar, " │
│                        node uuid)                         │ type" varchar, "timestamp" bigint, toolcalls varchar, ch │
│                                                           │ ildren json[], extra json[], id uuid, parent uuid, model │
│                                                           │  varchar, timings struct(cache_n bigint, prompt_n bigint │
│                                                           │ , prompt_ms double, prompt_per_token_ms double, prompt_p │
│                                                           │ er_second double, predicted_n bigint, predicted_ms doubl │
│                                                           │ e, predicted_per_token_ms double, predicted_per_second d │
│                                                           │                        ouble))[]                         │
├───────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────┤
│ {                                                         │ [{'convId': f62d63fc-f8c4-4d28-b02e-175dc3f96d72, 'role' │
│   'id': f62d63fc-f8c4-4d28-b02e-175dc3f96d72,             │ : user, 'content': 用python编写快速排序算法程序,不做别  │
│   'name': 用python编写快速排序算法程序,不做别的。,       │ 的。, 'type': text, 'timestamp': 1773207683626, 'toolCal │
│   'lastModified': 1773207683516,                          │ ls': '', 'children': [], 'extra': [], 'id': 91abdcce-13c │
│   'currNode': b9053f77-2277-4d99-aee7-834efdaf1238        │ 6-4a22-a16d-0bf4e3477236, 'parent': baff5274-5c5e-407d-8 │
│ }                                                         │ 2f1-b0fb3608510a, 'model': NULL, 'timings': NULL}, {'con │
│                                                           │ vId': f62d63fc-f8c4-4d28-b02e-175dc3f96d72, 'role': assi │
│                                                           │ stant, 'content': '当然可以,以下是一个纯 Python 编写的  │
│                                                           │ 快速排序算法程序,不包含任何额外功能或注释,仅实现快速排 │
│                                                           │ 序的核心逻辑:\n\n```python\ndef quicksort(arr):\n    if │

将message中的content列单独提取出来

复制代码
memory D select unnest(messages).content from 'convlo.json';
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                             (unnest(messages))."content"                                             │
│                                                       varchar                                                        │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 用python编写快速排序算法程序,不做别的。                                                                             │
│ 当然可以,以下是一个纯 Python 编写的快速排序算法程序,不包含任何额外功能或注释,仅实现快速排序的核心逻辑:\n\n```py... │
│ 编写python程序,算出1-13的全部4个数字组合(允许重复)加减乘除能够算出24点的组合及对应的表达式,比如1234:1x2x3x4,用A... │
│ ```python\nfrom itertools import permutations, product\nimport operator\nfrom functools import reduce\n\nops = {\n ... │
│ 改写为不用eval,不做别的                                                                                             │
│ ```python\nfrom itertools import permutations, product\nimport operator\nfrom functools import reduce\n\nops = {\n ... │
│ 输出方式改为字母,比如(1*10)*(12/5)', (1, 5, 10, 12)) 输出15AC:(1xA)x(C/5),一行只输出一组,只给出最后一步输出的代码...  │
│ ```python\nfrom itertools import permutations, product\n\nops = {'+': '+', '-': '-', '*': '*', '/': '/'}\n\ndef sol... │
│ 我的意思是把return sorted(set((expr, tuple(sorted(nums))) for expr, nums in res))改为输出以换行分隔的字符串,比如(1... │
│ ```python\nres = []\nfor a, b, c, d in permutations(range(1, 14), 4):\n    if a == b == c == d:\n        continue\n... │
│ 不考虑前面的问题,下面是一个新程序的需求:已知列表a,类似[('(1*10)*(12/5)', (1, 5, 10, 12)), ('(1*10)+(12+2)', (1, ... │
│ ```python\nfor item in [('(1*10)*(12/5)', (1, 5, 10, 12)), ('(1*10)+(12+2)', (1, 2, 10, 12))]:\n    expr, nums = it... │
│ 用A、B、C、D表示10、11、12、13,1-9不变,请修改                                                                      │

上述json中含有\n转义符,在表格模式中无法替换成换行。输出和刚才一样。

复制代码
memory D select replace(unnest(messages).content,'\n',chr(10)) from 'convlo.json';
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                "replace"((unnest(messages))."content", '\n', chr(10))                                │
│                                                       varchar                                                        │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 用python编写快速排序算法程序,不做别的。                                                                             │
│ 当然可以,以下是一个纯 Python 编写的快速排序算法程序,不包含任何额外功能或注释,仅实现快速排序的核心逻辑:\n\n```py... │
│ 编写python程序,算出1-13的全部4个数字组合(允许重复)加减乘除能够算出24点的组合及对应的表达式,比如1234:1x2x3x4,用A... │
│ ```python\nfrom itertools import permutations, product\nimport operator\nfrom functools import reduce\n\nops = {\n ... │
│ 改写为不用eval,不做别的                                                                                             │
│ ```python\nfrom itertools import permutations, product\nimport operator\nfrom functools import reduce\n\nops = {\n ... │
│ 输出方式改为字母,比如(1*10)*(12/5)', (1, 5, 10, 12)) 输出15AC:(1xA)x(C/5),一行只输出一组,只给出最后一步输出的代码...  │
│ ```python\nfrom itertools import permutations, product\n\nops = {'+': '+', '-': '-', '*': '*', '/': '/'}\n\ndef sol... │
│ 我的意思是把return sorted(set((expr, tuple(sorted(nums))) for expr, nums in res))改为输出以换行分隔的字符串,比如(1... │

在list模式中可以把\n转义符替换成换行,这样近似原始对话的效果。但是把问题和回答合在一行了。不能两全。

markdown 复制代码
memory D .mode list
memory D select replace(unnest(messages).content,'\n',chr(10)) from 'convlo.json';
"replace"((unnest(messages))."content", '\n', chr(10))
用python编写快速排序算法程序,不做别的。当然可以,以下是一个纯 Python 编写的快速排序算法程序,不包含任何额外功能或注释,仅实现快速排序的核心逻辑:
python 复制代码
def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

这个版本使用了分治法,每次选择中间元素作为基准,将数组分为小于、等于、大于基准的三部分,递归排序后合并。

如果你希望一个原地排序的版本(不使用额外空间),也可以使用如下版本:

python 复制代码
def quicksort_inplace(arr, low=0, high=None):
    if high is None:
        high = len(arr) - 1
    if low < high:
        pivot = arr[high]
        i = low - 1
        for j in range(low, high):
            if arr[j] < pivot:
                i += 1
-- More  --
相关推荐
猫头虎-前端技术2 小时前
这个项目需要Node 16,那个项目需要Node 18:如何解决多项目Node.js版本管理问题
前端·javascript·chrome·typescript·node.js·json·firefox
IT_陈寒2 小时前
JavaScript性能翻倍的5个隐藏技巧,90%的开发者都不知道!
前端·人工智能·后端
鹏北海2 小时前
微前端中的 UMD:必要性解析
前端
少云清2 小时前
【UI自动化测试】3_IOS自动化测试 _使用真机
ui·ios
CHU7290352 小时前
暖心陪诊,便捷就医——医疗陪诊预约小程序前端功能解析
前端·小程序
倔强的石头1062 小时前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
json·全文检索·数据库架构·kingbase
代码的奴隶(艾伦·耶格尔)2 小时前
Hbase的使用
java·前端·hbase
招风的黑耳2 小时前
【实战原型】TMS物流运输管理系统高保真交互原型
ui·交互·axure·原型
C澒2 小时前
企业私有前端物料 AI 化集成方案(RAG+DSL2Code)
前端·ai编程