1. llm-scraper
- 截止发稿星数: 377
- 仓库语言: TypeScript
- 仓库开源协议:MIT License
LLM Scraper是一个TypeScript库,允许您使用LLMs将任何网页转换为结构化数据。
在底层,它使用函数调用将页面转换为结构化数据。您可以在这里找到更多关于这种方法的信息。
特点
- 支持Local (GGUF)、OpenAI、Groq聊天模型
- 使用Zod定义模式
- TypeScript完全类型安全
- 基于Playwright框架
- 在爬取多个页面时进行流式传输
- 支持4种输入模式:
html
用于加载原始HTMLmarkdown
用于加载Markdowntext
用于加载提取的文本(使用Readability.js)image
用于加载截图(仅适用于多模态)
确保给它点一个星星!
入门
- 从npm安装所需的依赖项:
npm i zod playwright llm-scraper
- 初始化您的LLM:
OpenAI
import OpenAI from 'openai' const model = new OpenAI()
Local
import { LlamaModel } from 'node-llama-cpp' const model = new LlamaModel({ modelPath: 'model.gguf' })
- 创建一个新的浏览器实例并将LLMScraper附加到它:
import { chromium } from 'playwright' import LLMScraper from 'llm-scraper' const browser = await chromium.launch() const scraper = new LLMScraper(browser, model)
示例
在这个示例中,我们从HackerNews中提取热门故事:
import { chromium } from 'playwright'
import { z } from 'zod'
import OpenAI from 'openai'
import LLMScraper from 'llm-scraper'
// 启动浏览器实例
const browser = await chromium.launch()
// 初始化LLM提供商
const llm = new OpenAI()
// 创建一个新的LLMScraper
const scraper = new LLMScraper(browser, llm)
// 定义用于提取内容的模式
const schema = z.object({
top: z
.array(
z.object({
title: z.string(),
points: z.number(),
by: z.string(),
commentsURL: z.string(),
})
)
.length(5)
.describe('Hacker News上的前5个热门故事'),
})
// 要爬取的URL
const urls = ['https://news.ycombinator.com']
// 运行爬虫
const pages = await scraper.run(urls, {
model: 'gpt-4-turbo',
schema,
mode: 'html',
closeOnFinish: true,
})
// 从LLM中流式传输结果
for await (const page of pages) {
console.log(page.data)
}
贡献
作为一个开源项目,我们欢迎社区的贡献。如果您遇到任何错误或想要添加一些改进,请随时提出问题或拉取请求。
2. llama3-jailbreak
- 截止发稿星数: 88
- 仓库语言: Python
《简易Llama 3越狱》是一个轻松实现的程序化Llama 3越狱工具。抱歉,扎克!Meta公司在周四发布了被称为“OpenAI杀手”的Llama 3,毫无疑问,这是一个非常令人印象深刻的模型。作为培训的一部分,他们花了大量精力确保他们的模型是安全的。在安全方面,Meta团队采取了一些措施:
- 他们进行了大量的红队演练,与外部和内部专家一起进行,以测试模型在未预料到的使用方式上的表现。
- 他们实施了额外的技术来解决早期版本模型中发现的任何漏洞,比如通过向模型展示安全和有益回应的示例来进行监督微调,这些回应是他们希望模型在各种主题上学会复制的。
- 然后,他们利用人类反馈进行强化学习,这涉及到人类对模型的回应给出“偏好”反馈(例如,评价哪个回应更好、更安全)。
这无疑是一项值得赞扬的努力,而且Llama 3在标准安全基准测试中表现良好。然而,通过简单地为模型提供有害前缀,我们可以轻易地绕过这些安全措施。如果我们简单地为Llama 3的“Assistant”角色提供一个有害前缀,Llama 3经常会生成一个连贯的、有害的延续。Llama 3在帮助方面表现得如此出色,以至于它学到的安全措施在这种情况下不起作用!
方便的是,我们不需要手工制作这些有害前缀。事实上,我们可以简单地调用一个天真的、仅具有帮助功能的模型(例如Mistral Instruct)来生成一个有害的回应,然后将其作为前缀传递给Llama 3。这个前缀的长度会影响Llama 3是否最终生成有害回应。前缀太短,Llama 3可以恢复并拒绝有害生成。前缀太长,Llama 3将只回应一个EOT令牌和随后的拒绝。在增加有害助手前缀最大令牌长度的情况下,攻击成功率(ASR)的变化如下所示:
- 前缀长度: 5,ASR: 72%
- 前缀长度: 10,ASR: 80%
- 前缀长度: 25,ASR: 92%
- 前缀长度: 50,ASR: 92%
- 前缀长度: 75,ASR: 98%
- 前缀长度: 100,ASR: 98%
表1: 不同有害助手前缀长度下的ASR。Llama 3能够在较短的有害前缀下部分恢复并拒绝,但在较长的前缀下,它会偏离其对齐的分布。
除了开玩笑之外,这个简单的助手预训练越狱实验证明了一个更基本的问题:尽管LLMs拥有各种能力并且备受瞩目,但它们真的能够理解自己在说什么吗?毫无疑问,通过训练拒绝,Meta使Llama 3能够拒绝有害指令。但这个简单的实验表明,如果被诱导这样做,Llama 3基本上无法阻止自己说出愚蠢和令人憎恶的文本。它缺乏自我反思的能力,无法在说话时分析自己说了什么。这似乎是一个相当大的问题。如果您对此有想法或想聊天,请给我们发送邮件至contact@haizelabs.com。
暂无评论内容