博客

  • google / langextract 从非结构化文本中提取结构化信息

    LangExtract是Google于2025年开源的Python库,能基于LLM从非结构化文本中提取结构化信息,支持精准溯源、可控输出、长文档处理与多模型适配,无需微调即可快速落地垂直场景。以下是核心信息与使用要点:

    一、核心定位与优势

    维度说明
    核心目标连接LLM与结构化数据需求,解决传统方案结果不可靠、难溯源、长文档乏力、跨域适配成本高等痛点
    关键优势1. 精确来源锚定:每条结果绑定原文起止字符偏移,支持高亮追溯与审计2. 可控结构化输出:通过少样本示例强制遵循schema,禁止改写或增删字段3. 长文档优化:分块、并行、多轮提取,适配百万token级上下文4. 交互式可视化:一键生成HTML,直观校验数千条标注5. 多模型兼容:支持Gemini等云模型及Ollama对接的本地开源LLM6. 零微调适配:用自然语言指令+少量示例快速适配医疗、法律等领域
    授权与环境Apache 2.0开源;Python ≥3.10;依赖LLM API或本地部署能力

    二、工作流程

    1.  定义任务:用自然语言描述抽取目标,指定extraction_class、attributes等输出结构。

    2.  提供示例:给出1–3条few-shot示例,作为模型输出模板。

    3.  配置模型:选择Gemini等云模型或Ollama对接的本地LLM。

    4.  执行提取:自动分块处理文本,调用模型生成带位置锚定的结构化结果。

    5.  校验与可视化:生成HTML报告,高亮原文位置并审查结果。

    三、典型应用场景

    ● 医疗:从病历/报告中提取诊断、用药、剂量等并锚定原文,满足合规审计。

    ● 法律:抽取合同关键条款、权责节点,支持追溯原文出处。

    ● 企业知识管理:从财报、会议纪要中提取指标、决议,构建可溯源知识库。

    ● 内容运营:从评论/舆情中抽取情感、诉求,输出结构化统计结果。

    四、快速上手示例

    from langextract import Extractor, ExampleData
    # 1. 定义示例(抽取产品名与价格)
    examples = [ExampleData(
    source_text="A: iPhone 15 Pro $999",
    extractions=[{
    "extraction_class": "Product",
    "extraction_text": "iPhone 15 Pro",
    "attributes": {"Price": "$999"},
    "char_interval": {"start_char": 4, "end_char": 17}
    }]
    )]
    # 2. 初始化提取器(使用Gemini)
    extractor = Extractor(
    model_name="gemini-pro",
    task_description="Extract product names and their prices",
    examples=examples
    )
    # 3. 执行提取
    result = extractor.extract("B: MacBook Air $1099")
    # 4. 输出与可视化
    print(result.extractions)
    result.generate_visualization("output.html")

    输出会包含产品名、价格及对应的字符偏移,HTML可直接打开查看高亮结果。

    五、选型建议

    对比项LangExtract传统正则/NER直接调用LLM API
    溯源能力强(字符级锚定)
    输出稳定性高(强制schema)中(规则维护成本高)低(易幻觉/格式混乱)
    长文档处理优(分块+多轮)差(需手动切分)中(上下文窗口受限)
    适配成本低(零微调+少样本)高(规则/标注成本高)中(提示词迭代成本)
    隐私合规高(支持本地部署)低(数据出境风险)

    适合需高可信度、可审计的结构化提取场景;若追求极致成本,可搭配本地开源LLM(如Llama 3)通过Ollama部署。

    六、总结

    LangExtract以“精确锚定+可控输出+零微调适配”为核心,大幅降低LLM信息抽取的落地门槛,尤其适合合规要求高、领域多变的企业级场景。结合本地部署能力,可兼顾数据隐私与成本优化,是连接非结构化文本与业务系统的高效桥梁。介绍产品 google / langextract

  • 如何用AI来放大你的专业价值

    在AI技术重构职场生态的当下,单纯的“懂技术”或“懂业务”已难以形成壁垒。真正的核心竞争力,在于将AI工具与垂直领域知识深度耦合。通过“定位-行动-展示”三步法,个体可以快速完成从“工具使用者”到“解决方案提供者”的跃迁。

    一、 定位:寻找“专业壁垒”与“AI工具”的交叉点

    打造复合竞争力的第一步,是精准找到AI无法替代的人类专业价值。AI擅长处理结构化数据、生成内容和执行重复性任务,但缺乏领域内的“隐性知识”和“判断力”。

    • 操作逻辑: 列出你的核心专业技能(如会计、法律、医疗、设计),然后思考AI在该领域的短板。
    • 落地方向:
      • 会计: 税务政策的解读(人类)+ AI数据分析(工具)= 智能税务筹划。
      • 法律: 判例库的理解(人类)+ AI法律检索(工具)= 高效案件分析。
      • 医疗: 临床经验(人类)+ AI影像识别(工具)= 精准辅助诊断。
      • 关键结论: 你的定位不是“让AI帮你干活”,而是“你驾驭AI产出高附加值成果”。

    二、 行动:掌握“提示词工程”与“场景打磨”

    定位清晰后,需要通过刻意练习将AI融入工作流。这不仅是学会使用工具,更是学会“教AI如何工作”。

    1. 工具选型与精通: 不要贪多求全。选择1-2款与你专业高度相关的工具(通用型如ChatGPT、Claude,垂直型如Midjourney、Stable Diffusion或行业大模型)。深入学习其高级功能,如GPTs的定制化、图像生成的参数调整。
    2. 场景化SOP(标准作业程序)构建: 针对你工作中的高频任务,构建一套“人类-AI”协作的SOP。
      1. 案例: 市场策划撰写推文。
        • 人类动作: 拆解营销目标、明确受众画像、确定核心卖点。
        • AI动作: 基于上述指令生成5版文案初稿。
        • 人类动作: 对初稿进行专业润色、注入品牌调性、最终定稿。 这一过程的核心是 “提示词工程” ——你需要用精确的语言描述需求边界,这本身就是专业能力的体现。

    三、 展示:构建“可感知”的AI复合能力资产

    能力需要被看见。你需要将“AI+专业”的能力进行产品化包装,形成可交付的资产。

    1. 作品集(Portfolio)升级: 不再是单纯展示最终成果,而是展示 “AI生成前” 与 “人类优化后” 的对比,或者展示你如何通过AI工具解决了传统方法难以解决的复杂问题。
    2. 构建案例库与知识图谱: 将你调试好的优质提示词、训练好的专属知识库(如企业内部文档微调模型)整理成案例。这不仅是你的工作手册,更是你专业深度与AI应用能力的证明。
    3. 开源与分享(可选): 如果你开发了某个提高行业效率的AI插件或自动化脚本(如Excel+AI的财务分析插件),将其开源或在专业社区分享,能迅速建立行业影响力。

    “AI+专业”的本质,是利用AI的算力放大人类的脑力。通过这三步法,你需要完成的思维转变是: 从“我会做什么”转变为“我能用AI带领团队/客户做到什么”。 当你能让AI成为你大脑的延伸,你就在竞争中建立了难以复制的护城河。

  • 用DeepSeek和剪映三分钟生成视频

    在短视频内容井喷的当下,效率是创作者的核心竞争力。将 DeepSeek 的强大文本生成能力与剪映的轻量化剪辑功能相结合,能够构建出一套从创意到成片的极速生产管道。以下是一套针对新手的三分钟快速上手指南,旨在通过 AI 辅助解决脚本撰写与素材匹配的痛点。

    一、 需求拆解:向 DeepSeek 下达明确指令

    大多数新手卡壳在“不知道拍什么”或“不知道写什么”。此时,DeepSeek 扮演的是“创意脑”的角色。你需要做的不是让 AI 直接写脚本,而是先进行需求拆解。

    Prompt 公式参考: “我需要制作一个关于 [目标受众,如:职场新人] 的 [核心主题,如:高效沟通技巧] 视频。要求:[视频风格,如:干货解说/动画演示],时长 [60秒/3分钟],包含 [关键信息点1/2/3]。请为我生成一份结构化的视频脚本。”

    技巧: 明确的约束条件(Constraints)能大幅提升 AI 输出的可用性。例如,要求“每段文案不超过30字”或“每句对应一个独立画面”。

    二、 脚本生成:结构化输出适配剪映

    DeepSeek 生成的文案往往是段落式的,这不利于直接剪辑。你需要引导它输出 “分镜脚本” 格式。

    引导 AI 输出格式: “请将上述内容转换为分镜脚本,包含以下列:序号、画面内容描述、时长、配音文案、背景音乐风格。”

    示例输出片段:

    表格 还在加载中,请等待加载完成后再尝试复制

    三、 素材匹配:剪映“图文成片”的无缝衔接

    拿到结构化的脚本后,不要手动去搜素材。剪映的 “图文成片” 功能是连接 DeepSeek 与剪辑的桥梁。

    1. 复制文案: 从 DeepSeek 的回复中,复制“配音文案”列的全部内容。
    2. 一键生成: 打开剪映,点击“图文成片”,粘贴文案。剪映会利用 AI 自动匹配免费的无版权素材库(如 Pexels、Pixabay),并自动生成配音。
    3. 检查与替换: 此时视频已初具雏形。检查素材是否与文案高度相关,如果 AI 匹配的画面不准确(这是常见问题),直接点击素材进行手动替换。

    四、 剪辑优化:三分钟的精修逻辑

    AI 生成的是“毛坯房”,你需要进行“精装修”,但无需复杂操作。

    1. 节奏调整: 删掉冗余的转场,确保每个镜头切换都服务于信息传递。
    2. 字幕样式: 剪映会自动生成字幕,选择一款清晰易读的黑体字,并调整字重和描边,确保在手机小屏上也能看清。
    3. BGM 替换: AI 推荐的音乐可能不合口味,在剪映的音乐库中搜索关键词(如“轻快”、“励志”),替换成更贴合视频调性的音乐,并调整音量至不干扰人声。
    4. 封面设计: 选择视频中最具冲击力的一帧,添加简洁的标题文字,作为视频封面。

    这套工作流的核心在于 “人机协作” 。DeepSeek 负责将你的模糊想法转化为结构化的执行方案,解决了“写什么”和“拍什么”的问题;剪映则负责将文本自动视觉化,解决了“怎么剪”的问题。剩下的三分钟,只需要你用人类的审美和创意,对 AI 的产出进行微调和润色。通过这种方式,即使是剪辑新手,也能实现从创意到成片的极速交付。

  • eigent-ai/eigent 多智能体桌面应用

    Eigent(Eigent AI)是CAMEL – AI团队开发的100%开源多智能体桌面应用,能构建、管理和部署定制化AI劳动力,将复杂多步骤工作流自动化,在GAIA基准测试中表现突出,且支持本地部署,数据隐私性强。以下从核心定位、架构、功能、优势、应用场景等方面详细介绍:

    核心定位

    Eigent是一款专注于复杂工作流自动化的桌面应用,区别于单智能体系统的局限,通过多智能体并行协作,为专业人士和高级用户提供更快、更可靠、成本更低的任务处理结果,用户可自定义智能体团队,适配不同业务需求。

    核心架构

    1.  Task Manager(任务管理器):作为系统“大脑”,负责理解用户整体目标,将模糊需求拆解为具体可执行的子任务,并制定整体推进计划。

    2.  Coordinator(协调器):扮演“项目经理”角色,负责调度工作、分配任务、处理任务间依赖关系,汇总所有任务完成后的结果。

    3.  Worker Nodes(工作节点):专注具体操作,如查信息、写代码、处理数据或文档等,多个节点可并行工作,互不干扰。

    4.  Owl协作框架:基于CAMEL – AI构建的多智能体协作框架,在GAIA基准测试中以58.18平均分位列开源框架第一,实现动态智能体交互,提升协作效率。

    核心功能与特性

    特性说明
    多智能体并行协作配备开发者、搜索、文档、多模态等专业化智能体,可并行执行任务,支持三级并行(workforce间、work间、子任务内工具调用),大幅提升效率
    高度自定义支持构建定制化Worker nodes,集成自定义工具,通过MCP协议接入内部API或自定义函数,内置200多个MCP工具,也可自行扩展
    隐私优先与本地部署100%开源,可本地部署,使用自有API密钥或本地LLM,数据与敏感工作流完全可控,不会离开本地环境
    人类介入机制(Human – in – the – Loop)智能体遇困或不确定时,系统自动暂停并请求人工输入,关键决策点人工可介入,保障结果符合预期
    丰富工具集成内置网络浏览、代码执行、Notion集成、Google Suite连接、Slack集成等大量MCP工具,满足多样化场景需求

    核心优势

    1.  效率显著提升:多智能体并行执行任务,相比单线程处理,整体速度提升数倍,三级并行机制进一步提高任务处理效率。

    2.  自由可控:代码开源透明,用户可自由修改、优化,甚至商用,适配不同业务场景的定制化需求。

    3.  安全可靠:本地运行,数据不上传云端,有效避免数据泄露风险,同时人类介入机制可减少错误,保证任务结果可靠。

    4.  适配性强:支持自定义智能体功能、工具扩展和本地LLM集成,可根据项目需求灵活创建AI团队,适配多种复杂工作场景。

    应用场景

    1.  开发者工作流:自动完成代码编写、调试、运行终端命令、文档生成等任务。

    2.  内容创作与调研:智能体分工协作完成资料搜索、数据收集、内容撰写、报告生成等。

    3.  企业业务流程:自动化处理市场调研、数据分析、客户服务等多步骤业务流程,集成Slack、Notion等办公工具提升协作效率。

    4.  个人高效办公:处理邮件分类、日程管理、文件整理等复杂办公任务,减少人工操作。

    部署与获取

    Eigent目前处于公开测试阶段,用户可在GitHub获取源代码,参与测试还能获得额外积分奖励,也可直接下载桌面应用进行体验,部署方式灵活,支持本地部署与云端使用两种模式。

  • NginxPulse轻量级的 Nginx 访问日志分析与可视化面板

    一、一句话概括

    NginxPulse 是一款轻量级的 Nginx 访问日志分析与可视化面板,可以实时统计访问量(PV)、按多种维度过滤日志,并自动解析 IP 归属地和客户端信息,自带 Web 前端,适合部署在个人服务器、中小站点或内部环境中使用。

    二、产品定位与核心价值

    ● 目标场景: 已经使用 Nginx 作为 Web 服务器 / 反向代理,希望通过访问日志做一些「轻量级」实时监控与分析。

    ○ 不想引入重量级监控/可观测平台(比如 ELK、Prometheus+Grafana 等),只想要一个开箱即用的小工具。

    ● 核心价值: 部署简单:Docker 一键跑起来,不需要复杂依赖。

    ○ 日志分析自动化:自动解析 Nginx 访问日志,PV/访问趋势、IP 归属地、客户端信息等全部自动完成。

    ○ 轻量:单容器内集成前端与后端,使用 SQLite 本地存储,不依赖外部数据库服务。

    三、整体工作流程示意

    下面是 NginxPulse 的大致工作流程:

    flowchart TB
      A[Nginx 服务器<br/>access.log] --> B[NginxPulse 后端<br/>定时扫描日志]
      B --> C[日志解析<br/>提取 IP / URL / 状态码 / UA 等]
      C --> D[IP 归属地查询<br/>ip2region + ip-api.com]
      C --> E[写入 SQLite 数据库]
      E --> F[后端 API 提供<br/>统计与过滤查询]
      F --> G[前端可视化面板<br/>图表与多维筛选]
      G --> H[运维/开发人员<br/>查看访问情况与异常]
    

     四、主要功能特性

    1) 日志分析与实时统计

    ● 定时扫描你指定的 Nginx 访问日志文件,解析其中的字段(如 IP、时间、URL、状态码、User-Agent 等)。

    ● 将解析后的数据写入本地 SQLite 数据库,供后续查询与可视化使用。

    ● 支持按配置的时间间隔(TASK_INTERVAL)来定时扫描,默认为 1 分钟。

    2) PV 统计与灵活过滤

    ● PV 统计可按指定 HTTP 状态码来统计(默认只统计 200 成功请求,也可自定义状态码列表)。

    ● URL 排除规则:支持配置 PV_EXCLUDE_PATTERNS(URL 正则数组),比如排除静态资源、爬虫路径等,避免污染 PV 统计。

    ● IP 排除规则:支持配置 PV_EXCLUDE_IPS,将指定 IP(如内部监控、健康检查)从统计中排除。

    ● Referer 与站内访问:通过 WEBSITES 中配置 domains,可以把来自指定域名的 referer 归类为「站内访问」,方便区分外部来源。

    3) IP 归属地解析(多级策略)

    NginxPulse 为 IP 归属地设计了一套“快速 + 准确”的多级策略:

    ● 快速过滤: 空值 / 本地 / 回环地址直接返回“本地”。

    ○ 内网地址直接返回“内网/本地网络”。

    ● 缓存优先: 内存缓存,最多缓存 50,000 条 IP 查询结果,重复 IP 直接命中缓存,减少外部 API 调用。

    ● 远程优先: 调用 ip-api.com/batch 批量接口查询归属地,超时时间 1.2s,每批最多 100 个 IP。

    ● 本地兜底: 当远程失败或者结果为“未知”时,IPv4 使用内置的 ip2region 数据库做本地查询,超时 50ms。

    ○ 本地数据库文件 ip2region.xdb 内嵌在二进制中,首次启动会自动解压到 ./var/nginxpulse_data/ip2region.xdb,并加载向量索引加速查询。

    ● IPv6 处理: IPv6 仅走远程 API,远程失败则返回“未知”。

    ● 注意: 项目会访问外网 IP 归属地 API(ip-api.com),部署环境需要放行该域名的出站访问。

    4) 客户端解析

    ● 基于 HTTP 请求中的 User-Agent 等字段,识别客户端类型(浏览器、爬虫等)与基础设备信息(具体展示形式以前端页面为准)。

    5) 可视化面板(Web UI)

    ● 前端技术栈:Vue 3 + Vite + TypeScript + PrimeVue + ECharts/Chart.js + Scss,使用组件化 UI 和图表库,便于做交互式展示。

    ● 提供在线演示:nginx-pulse.kaisir.cn(可直接访问体验可视化效果)。

    ● 常见可视化能力包括(以前端实际页面为准): 访问量趋势图(按时间维度统计 PV)。

    ○ IP 访问分布(国家/地区分布、常见来源 IP)。

    ○ URL 热度排行(哪些路径被访问最多)。

    ○ 状态码分布(2xx/3xx/4xx/5xx 比例)。

    ○ 客户端/浏览器类型统计。

    6) 多站点/多日志支持

    ● WEBSITES 支持传入数组,每个元素包含: name:站点名称。

    ○ logPath:容器内日志路径。

    ○ domains(可选):与该站点关联的域名列表,用于 referer 站内访问分析。

    ● 通过挂载多个日志文件或整个日志目录,并在 WEBSITES 中配置多条记录,即可用一个 NginxPulse 实例同时分析多个站点或多组日志。

    7) 演示模式(Demo Mode)

    ● 提供 DEMO_MODE 环境变量(默认 false),开启后: 定时生成模拟日志,并直接写入数据库。

    ○ 不再解析真实日志文件,适合演示、测试 UI 和功能,而不需要准备真实 Nginx 日志。

    五、技术架构与组件

    ● 后端: 语言:Go 1.23.x。

    ○ Web 框架:Gin。

    ○ 日志库:Logrus。

    ○ 数据存储:SQLite(使用 modernc.org/sqlite)。

    ● 前端: 框架:Vue 3。

    ○ 构建工具:Vite。

    ○ 语言:TypeScript。

    ○ UI 组件:PrimeVue。

    ○ 图表:ECharts / Chart.js。

    ○ 样式:Scss。

    ● 容器与部署: 单容器镜像内包含: 后端服务(Go)。

    ■ 前端静态资源(由 Nginx 提供访问)。

    ○ 支持 Docker / Docker Compose 一键部署与编排。

    六、部署与使用方式概览

    1) 使用 Docker Hub 远程镜像(最简单)

    ● 示例命令(来自 README):

    docker run -d --name nginxpulse \
    -p 8088:8088 \
    -p 8089:8089 \
    -e WEBSITES='[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]' \
    -v ./nginx_data/logs/all/access.log:/share/log/nginx/access.log:ro \
    -v "$(pwd)/var/nginxpulse_data:/app/var/nginxpulse_data \
    magiccoders/nginxpulse:latest

    ● 访问: 前端:http://localhost:8088

    ○ 后端 API:http://localhost:8089

    2) Docker Compose 部署

    ● 远程镜像版本的 docker-compose.yml 示例:

    version: "3.8"
    services:
    nginxpulse:
    image: magiccoders/nginxpulse:latest
    container_name: nginxpulse
    ports:
    - "8088:8088"
    - "8089:8089"
    environment:
    WEBSITES: '[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]'
    volumes:
    - ./nginx_data/logs/all/access.log:/share/log/nginx/access.log:ro
    - ./var/nginxpulse_data:/app/var/nginxpulse_data
    - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped

    ● 启动:

    docker compose up -d

    3) 手动构建与开发

    ● 前端构建:

    cd webapp
    npm install
    npm run build

    ● 后端构建:

    go mod download
    go build -o bin/nginxpulse ./cmd/nginxpulse/main.go

    ● 本地开发(前后端一起跑):

    ./scripts/dev_local.sh

    ● 开发环境说明: 前端开发服务默认 8088,并把 /api 代理到 http://127.0.0.1:8089。

    ○ 本地开发前准备好日志文件(如放在 var/log/ 下,或修改配置中的 logPath)。

    七、关键配置说明(环境变量)

    主要环境变量与含义(无配置文件时尤为关键):

    ● WEBSITES(必填): JSON 数组,每个元素为站点对象,字段: name:站点名称。

    ■ logPath:容器内日志路径。

    ■ domains(可选):站点域名列表,用于站内访问统计。

    ● CONFIG_JSON(可选): 完整配置 JSON 字符串(等同 configs/nginxpulse_config.json)。

    ○ 设置后会忽略本地配置文件,其他环境变量仍可覆盖其中字段。

    ● LOG_DEST(可选,默认:file): 日志输出位置:file 或 stdout。

    ● TASK_INTERVAL(可选,默认:1m): 扫描间隔,支持 Go duration 格式(如 5m、25s)。

    ● DEMO_MODE(可选,默认:false): 开启演示模式,生成模拟日志。

    ● SERVER_PORT(可选,默认::8089): 后端监听地址,可传 :8089 或 8089。

    ● PV_STATUS_CODES(可选,默认:[200]): 统计 PV 的状态码列表,支持 JSON 数组或逗号分隔。

    ● PV_EXCLUDE_PATTERNS(可选,默认有内置规则): 全局 URL 排除正则数组(JSON 数组)。

    ● PV_EXCLUDE_IPS(可选,默认为空或使用配置文件): 排除 IP 列表(JSON 数组或逗号分隔)。

    八、多日志与多站点实战建议

    ● 方式一:逐条挂载多个日志文件: WEBSITES 数组中为每个网站配置一个 logPath,volumes 分别挂载对应日志文件(只读)。

    ● 方式二:挂载日志目录,然后在 WEBSITES 里按需指定文件: 示例:volumes 挂载 ./nginx_data/logs:/share/log/nginx。

    ○ WEBSITES 中 logPath 写为 /share/log/nginx/access-site1.log、access-site2.log 等。

    ● 挂载 var/nginxpulse_data: 用于持久化 SQLite 数据库和解析缓存,推荐保留以便重启不丢数据。

    九、适用场景与限制

    ● 适合: 个人博客、中小型站点、内部系统访问分析。

    ○ 想「从 0 到 1」快速搭建一套日志可视化面板,而不是搭建完整可观测平台。

    ● 限制: 面向 Nginx 访问日志,主要做访问统计与可视化,不提供全面的 APM/链路追踪能力。

    ○ 使用单机 SQLite,适合中小规模;如果日志量特别大或需要多节点协同分析,需要评估或扩展。

    ○ 使用外部 IP API(ip-api.com),内网环境需要保证能访问该域名,或者自行更换/禁用远程查询功能。

    十、如何开始?

    如果你现在就想试用:

    ● 最快方式: 使用上面的 Docker 命令或 docker-compose.yml,把你的 Nginx access.log 路径映射进去。

    ○ 设置好 WEBSITES,然后访问 http://your-host:8088 查看面板。

    ● 想先看效果: 直接打开演示站点:nginx-pulse.kaisir.cn 体验 UI 与交互。

    十一、开源与许可

    ● 项目在 GitHub 上开源(likaia/nginxpulse),采用 MIT 许可证,可自由使用、修改和分发。