为了账号安全,请及时绑定邮箱和手机立即绑定

在KNIME中与本地Llama 3模型聊天 — 还能将日志转换成结构化的JSON文件

数据故事 | AI与本地大模型 | KNIME分析平台注:KNIME是指KNIME Analytics Platform。 低代码工具来与最新型的本地大模型集成并互动

大型语言模型依然发展势头强劲,并且进展迅速。我的最近几篇文章关于KNIME和使用GPT4All的本地LLM引起了极大的兴趣。这次,我想通过Ollama平台来探讨一下备受瞩目的Llama 3由Meta开发的使用方式,并通过低代码分析平台KNIME查询该模型。

只需加载KNIME工作流并试试看(你得先安装并运行Ollama)——https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/current-state/
或者干脆下载整个LLM工作流小组

“A happy yellow robot playing with a white llama, styled in the manner of Rembrandt” \(DALL·E\)

“一只快乐的黄色机器人正在和一只白色的羊驼玩耍,画风类似雷姆布兰特的作品”(DALL_E)。

Llama3 和 KNIME — 使用 Llama3 和 KNIME 从 PDF 和其他文档构建你自己的本地向量数据库。它不仅可以在你的 KNIME 4 安装上运行,还可以用 Python 运行

我将主要使用通用节点,并使用KNIME 4版本——以便获得最大的兼容性和灵活性——因为在过去的几个月里,这种情况已经发生了两次,例如,GPT4All改变了其文件格式,而KNIME的相关节点没有立即跟上更新

为了开始这个程序,你需要先安装Ollamahttps://ollama.com/),然后与某个特定的模型进行初次聊天。当你第一次运行这个函数时,模型会自动下载到你的电脑上(在这种情况下是指Llama3/instruct)。

    ollama run llama3:instruct(运行指令的命令)

该模型将在您的本地电脑上运行,并使用您的本地资源。因此,数据不太可能泄露到互联网上。

正如 D. Paurat 不停地提醒我的,指令模型会更紧密地遵循直接的指令,而聊天版本可能更适合聊天。所以你可以试试,还有用你自己的数据试试。

通过简单的KNIME POST请求来调用Llama 3

在 KNIME 中,最简单的用法是使用 Table Creator 节点创建一个简单的 JSON 提示,然后通过发送 POST 请求发送到 Ollama。结果会以 JSON 格式返回,您可以使用并检查这些结果:

Simple call to Ollama API in KNIME

在 KNIME 中调用 Ollama API 的简单示例(https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/)。

通过这个URL连接到本地主机,并确保Ollama已经在后台运行。

你可以在这里生成内容:http://localhost:11434/api/generate

你应该检查一下节点设置中的几个选项,特别是超时时间。由于模型处理需要一些时间,你可能需要适当增加超时时间。另外,在错误处理部分,你可以设置重试选项。

Configure API call to local Ollama service

配置API调用来访问本地的Ollama服务(https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/)。

请求体将包含在名为“Value”的列中的值中,该值将包含要使用的模型名称和提示。

    { "model": "llama3:instruct",   
    "prompt": "彩虹里有多少种颜色?", "stream": false } 

The Request Body will be in a “Value” Column containing the name of the model to use and the prompt

响应将以 JSON 格式保存(application/json),元信息将在“请求头”选项卡下显示。

Configure the Request Header

结果会被存储在你用JSON 表节点提取的 response 列里,你可以进一步利用和展示这些结果。

The respsonse to the question about the colours of a rainbow

Llama 3 没有特定的角色设置或独立指令。但你可以轻松地自己提供一个这样的设置或指令,自定义符合你的需求。

    { "model": "llama3:instruct",     
    "prompt": "你是一个乐于助人的助手,尤其在物理和地理方面很在行。请用简单易懂的语言,礼貌而详尽地回答问题,适合初学者。解释时力求简洁明了。  
    问题:彩虹里有几种颜色?",   "stream": false }
供依次回答几个问题

你现在也可以用这种设置一次性循环多个问题并收集结果。这在你需要处理大量数据或希望自动化提取时特别有用,我们稍后再详细讨论这一点。

Loop thru a list of questions you put to Llama3

依次处理你发送给Llama3的问题。

正如你可能已经注意到的那样,我引入了另一个节点来预处理提示文本,以转逸特殊字符以确保数据可以在KNIME中处理,并且即使你在提示中使用了引号或换行符,数据也能够顺利传递给Llama 3模型。

Use a Java Snippet to automatically escape the Prompt and Instructions

使用一个 Java 代码片段来自动转码提示及说明(详情请参考 https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/)。

本地图LLM聊天机器人:KNIME数据应用工具和Llama 3模型

您也可以借助KNIME Data Apps来扩展您的本地聊天机器人。它会使用相同的REST API在后台,但会以聊天形式展示结果。

A KNIME Component as your local Chat App for the Llama3 model

KNIME 组件工具作为你的本地聊天工具用于 Llama3 模型的本地聊天工具。

在组件内部,提示和指令会被整合在一起,特殊字符会被转码,并将答案保存到KNIME .table文件中,以便后续查阅。

注意。 聊天机器人不会记得之前的问题,但会逐一处理每个问题。

Inside the Component to build a Llama3 Chat App with KNIME

在构建Llama3聊天应用程序的组件内部。(参见链接:https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/

使用Llama3从日志中提取数据并存成结构化的JSON文件。

一个常见的想法是使用大语言模型从非结构化或半结构化的数据中提取数据,并可能提取一些见解,将其转换为JSON文件。在这个例子中,我有一些包含多种信息的几个日志文件,我想从中提取这些信息。我指示模型不仅要以聊天或文本回复,还要以包含特定列的JSON文件形式回复,该文件应始终包含相同的列。

然后我们使用KNIME来解开结果,使其以经典的表格形式呈现——是的,你可能需要根据自己的需求调整它,并思考如何进一步处理它们。

在此情况下,您的操作将利用本地机器的处理能力,因此无需支付任何费用。不过,您可能还需要检查一下您特定LLM模型的授权条款和条件。

You feed a relatively unstructured Log file into Llama3 and ask for a JSON file to come back

你将一个相对结构化不强的日志文件输入Llama3,并希望得到一个JSON文件作为回复。(https://hub.knime.com/-/spaces/-/~_gPUhkuAieieXCsi/

你可以通过不同的提示来让模型返回一个可以变成表格的结果。根据你使用的大型语言模型,你可能需要试试不同的提示。

请将以下日志文件数据转换成JSON格式。
请确保生成的JSON数据具有一致的结构,包含以下字段:日期(date)、时间(time)、严重性(severity)、组件(component)和消息(message)。
日志数据如下:
响应最初看起来像这样。结果被反引号包围,并采用JSON格式。循环会遍历你的日志集。Llama3遵循你的指令做得很好。

A structured JSON File comes back structuring the Logfile you provided the LLM model

你也可以用正则表达式(Regex)来完成这件事,并且市面上也有一些日志解析工具。这里只是为了演示使用LLM来提取结构化数据的概念。你可能需要调整一些设置,以获得最佳效果。在这种情况下,实际上我让LLM不仅写了提示,还生成了从日志样本中提取的JSON文件结构。

使用KNIME节点来提取和处理JSON文件。

KNIME 现在可以解析结果中的 JSON 结构。先将三个反引号替换成占位符,再用正则表达式提取工具来获取纯 JSON 字符串。这种方法来自 Palladian 扩展插件的 正则表达式提取节点(来自 Palladian 扩展)。

The JSON File is enclosed in the response from the Llama3 model — you can extract it with the help of KNIME

JSON 文件包含在 Llama3 模型的响应里,你可以用 KNIME 提取这个文件。

你可以转换这些字符串,并将字段提取为列表,然后拆分这些列表,最终获得一个标准的表格,其中包含列。

Extract the JSON fields into lists and Ungroup them into regular columns

将 JSON 字段提取到列表中,然后拆分成普通的列。

你现在可以用这些结果继续处理你的数据了。

日志中提取的日期,以表格形式呈现

The date extracted from the logs in a table

我希望你对使用Llama3KNIME的各种选项感到满意。如果你想了解更多关于大型语言模型的信息,你可以看看这些文章,也可以访问KNIME 博客查看更多内容。

KNIME,AI扩展和本地大型语言模型(LLM):无需担心数据隐私即可利用LLM的能力medium.com
使用KNIME和GPT4All从PDF创建本地LLM向量存储库,一个完全无代码的解决方案!medium.com

此外,您可能会感兴趣的是这些文章:

如果你喜欢这篇故事,可以在 Medium 上关注我(https://medium.com/@mlxl),或者在 KNIME Hub(https://hub.knime.com/mlauber71)和 KNIME Forum(https://forum.knime.com/u/mlauber71/summary)上关注我或访问我的个人主页。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消