- 博客(37)
- 收藏
- 关注
原创 初探全同态加密1 —— FHE的定义与历史回顾
在开始之前,我们先温习一下最最传统的加密体系。构建一个加密系统,往往都需要一个密钥 Key。通过这个密钥,我们可以一头把明文的信息加密成密文,然后在另一头通过密钥再把密文变回原来的样子。如果没有这个 Key 的话,其他的人很难知道我们到底传递了什么信息。上文的图例基本展示了所有常见加密体系的全貌。通过一个生成算法KeyGen1λKeyGen1λ来随机生成一对用于加密和解密的密钥EncKeyDecKeyEncKeyDecKey。
2024-09-12 21:37:00
18
原创 6、LangChain —— 使用 Huggingface 中的开源模型
大语言模型,不止 ChatGPT 一种。调用 OpenAI 的 API,当然方便且高效,不过,如果我就是想用其他的模型 (比如说开源的 Llama2 或者 ChatGLM),该怎么做?再进一步,如果我就是想在本机上从头训练出来一个新模型,然后在 LangChain 中使用自己的模型,又该怎么做?关于大模型的微调 (或称精调)、预训练、重新训练、乃至从头训练,这是一个相当大的话题,不仅仅需要足够的知识和经验,还需要大量的语料数据、GPU 硬件和强大的工程能力。
2024-07-29 11:05:40
73
原创 5、LangChain —— 提示工程 (下) 思维链和思维树
上面我们讨论了 Chain of Thought 和 Tree of Thought 这两个概念,并探讨了如何利用它们引导大型语言模型进行更深入的推理。CoT核心思想是通过生成一系列中间推理步骤来增强模型的推理能力。在 Few-Shot CoT 和 Zero-Shot CoT 两种应用方法中,前者通过提供链式思考示例传递给模型,后者则直接告诉模型进行要按部就班的推理。ToT进一步扩展了 CoT 的思想,通过搜索由连贯的语言序列组成的思维树来解决复杂问题。具体过程可以通过学习。
2024-07-26 14:16:48
111
原创 4、LangChain —— 提示工程 (上) fewshottemplate 和 exampleselector
其实,在上一章中就提到了提示词工程,输出解析器的原理实际上就是通过提示词明确地告诉 llm 应该做什么。之前有说过吴恩达老师说过的提示词两大原则:清晰具体的指令、给模型思考的时间。实际上,在 Open AI 的官方文档 GPT 最佳实践中,也给出了和上面这两大原则一脉相承的6大策略写清晰的指示给模型提供参考,也就是示例将复杂任务拆分成子任务给 GPT 时间思考使用外部工具反复迭代问题。
2024-07-25 17:10:48
62
原创 3、LangChain —— 模型I/O,输入提示、模型调用、解析输出
从这节课开始,我们将对 LangChain 中的六大核心组件一一进行详细的剖析。Model 模型,位于 LangChain 框架的最底层,它是基于语言模型构建的应用的核心元素,因为所谓 LangChain 应用开发,就是以 LangChain 作为框架,通过 API 调用大模型来解决具体问题的过程。
2024-07-23 11:34:05
61
原创 2、LangChain —— RAG基本架构
LLM 支持的最强大的应用程序之一是复杂的问答 (Q&A) 聊天机器人。这些应用程序可以回答有关特定源信息的问题。这些应用程序使用一种称为检索增强生成 (RAG)的技术。这里将展示如何基于文本数据源构建一个简单的问答应用程序。在此过程中,我们将介绍典型的问答架构,并重点介绍更多高级问答技术的资源。我们还将了解LangSmith如何帮助我们跟踪和理解我们的应用程序。随着我们的应用程序变得越来越复杂,LangSmith 将变得越来越有用。RAG 是一种利用附加数据增强 LLM 知识的技术。
2024-07-22 09:29:03
737
原创 1、LangChain —— 基础知识储备
大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多。你可以将大语言模型想象成一个巨大的预测机器,其训练过程主要基于“猜词”:给定一段文本的开头,它的任务就是预测下一个词是什么。LangChain 是一个全方位的、基于大语言模型这种预测能力的应用开发工具,它的灵活性和模块化特性使得处理语言模型变得极其简便。LangChain 的预构建链功能,就像乐高积木。
2024-07-22 08:33:07
637
原创 LangChain —— Chat Model
使用消息序列作为输入并返回 chat message 作为输出的语言模型 (与使用纯文本相反)。这些是传统上较新的模型 (旧模型通常是 LLM,见下文)。Chat Model 支持为对话消息分配不同的角色,有助于将 messages 与 AI、user 和 system message 等指令区分开来。尽管底层模型是消息输入、消息输出,但 LangChain 包装器也允许这些模型将字符串作为输入。这意味着您可以轻松地使用 Chat Model 来代替 LLM。
2024-07-13 20:03:12
328
原创 LangChain —— Prompt Templates —— How to use few shot examples in chat models
本指南介绍了如何使用示例输入和输出提示 char model。为模型提供几个这样的例子被称为 few-shotting,这是一种简单而强大的方法来指导生成,在某些情况下可以大大提高模型性能。对于如何最好地进行 few-shot 提示,似乎没有达成一致意见,最佳提示编译可能会因模型而异。因此,langchain 提供 few-shot 提示模板,如 FewShotChatMessagePromptTemplate,作为一个灵活的起点,我们可以根据需要修改或替换它们。
2024-07-13 15:35:26
642
原创 LangChain —— Prompt Templates —— How to use few shot examples
在本指南中,我们将学习如何创建一个简单的提示模板,在生成时为模型提供示例输入和输出。为 LLM 提供一些这样的例子被称为 “few-shotting”,这是一种简单而强大的方法来指导生成,在某些情况下可以大大提高模型性能。一个 few-shot 提示模板可以从一组示例中构建,也可以从负责从定义的集合中选择示例子集的 Example Selector 类中构建。本指南将介绍一些使用字符串提示模板的 few-shot。有关 Chat Message 进行 few-shot 的指南,请参阅下一篇文章。
2024-07-13 15:10:22
503
原创 LangChain —— Message —— How to merge consecutive messages of the same type
某些模型不支持传递相同类型的连续消息(即相同消息类型的“运行”)。merge_message_runs 使合并相同类型的连续消息变得容易。
2024-07-13 14:48:03
244
原创 LangChain —— Message —— how to filter messages
在更复杂的链和代理中,我们可能会使用消息列表跟踪状态。此列表可以开始累积来自多个不同模型、说话者、子链等的消息,我们可能只想将此完整消息列表的子集传递给链/代理中的每个模型调用。filter_message 使按 type、id、name 过滤消息变得容易。
2024-07-13 14:33:27
166
原创 LangChain —— Message
一些语言模型将消息列表作为输入并返回消息。有几种不同类型的消息。所有消息都有一个 role、content 和 response_metadata 属性。role 描述了 WHO 正在传达的信息。LangChain 为不同的角色提供了不同的消息类。content 描述消息的内容。字符串,大多数模型处理此类内容。字典列表,用于多模态输入,其中字典包含有关该输入类型和输入位置的信息。
2024-07-13 13:10:29
665
原创 LangChain —— Message —— How to trim messages
所有模型都有有限的上下文窗口,这意味着它们可以作为输入的 token 数量是有限的。如果你有很长的消息,或者一个 chain 或 agent 累积了很长的历史消息,你需要管理你传递给模型的消息的长度。trim_messages util 提供了一些基本策略,用于将消息列表修剪为特定的 token 长度。为了获取消息列表中的最后一个 max_tokens,我们可以设置 strategy=“last”。
2024-07-13 13:09:17
431
原创 LangChain —— Prompt Templates
提示模板有助于将用户输入和参数转换为语言模型的指令。这可用于指导模型的响应,帮助它理解上下文并生成相关和连贯的基于语言的输出。提示模板将字典作为输入,其中每个键表示提示模板中要填写的变量。提示模板输出提示PromptValue 值。此 PromptValue 可以传递给 LLM 或 ChatModel,也可以转换为字符串或消息列表。此 PromptValue 存在的原因是便于在字符串和消息之间切换。
2024-07-12 19:19:00
726
原创 LangChain —— 多模态大模型的 prompt template
在这里,我们演示了如何将多模式输入直接传递给模型。对于其他的支持多模态输入的模型提供者,langchain 在类中提供了内在逻辑来转化为期待的格式。在这里,我们将描述一下怎么使用 prompt templates 来为模型格式化 multimodal imputs。我们可以直接在“image_URL”类型的内容块中提供图像URL。但是注意,只有一些模型提供程序支持此功能。传入图像最常用的方法是将其作为字节字符串传入。这应该适用于大多数模型集成。我们也可以给模型传入多个图片。我们也可以传多个图片。
2024-07-11 15:11:03
787
原创 LangChain 部署本地 LLM —— ollama
PrivateGPT、llama.cpp、Ollama、GPT4All、llamafile 等项目的流行凸显了在本地 (在本地设备上) 运行 LLM 的需求。 这至少有两个重要的好处:隐私:您的数据不会发送给第三方,也不受商业服务的服务条款约束成本:没有推理费,这对于 token 密集型应用程序 (例如,长时间运行的模拟、摘要)很重要
2024-07-04 16:57:18
541
原创 LangChain 概述 (模块索引)
LCEL 是一种创建任意自定义链的方法。它基于 Runnable 协议。传输和处理,而不是一次性批量传输。提示模板负责将用户输入格式化为可以传递给语言模型的格式。聊天模型是一种较新的语言模型,可以接收消息并输出消息。LangChain 所称的 LLMs 是语言模型的。示例选择器负责选择正确的几个短示例传递给提示。通常指的是一种数据处理方式,其中数据是。消息是聊天模型的输入和输出。:快速概览如何使用主要 LCEL 原语。,它以字符串为输入,以字符串为输出。,描述了消息的来源。
2024-07-04 16:24:15
400
原创 LangSmith 的使用
您使用 LangChain 构建的许多应用程序将包含多个步骤,并多次调用 LLM 调用。随着这些应用程序变得越来越复杂,能够检查链或代理内部究竟发生了什么变得至关重要。最好的方法是使用LangSmith。LangSmith 是一个用于构建生产级 LLM 应用程序的平台。它允许您密切监控和评估您的应用程序,以便您可以快速而自信地交付。无需使用 LangChain,即单独使用 LangSmith 可以独立运行!初始化并包装OpenAI客户端以支持自动跟踪。
2024-06-19 15:22:40
1243
原创 构建一个 RAG 应用
LLM 支持的最强大的应用程序之一是复杂的问答 (Q&A) 聊天机器人。这些应用程序可以回答有关特定源信息的问题。这些应用程序使用一种称为检索增强生成 (RAG)的技术。这里将展示如何基于文本数据源构建一个简单的问答应用程序。在此过程中,我们将介绍典型的问答架构,并重点介绍更多高级问答技术的资源。我们还将了解LangSmith如何帮助我们跟踪和理解我们的应用程序。随着我们的应用程序变得越来越复杂,LangSmith 将变得越来越有用。RAG 是一种利用附加数据增强 LLM 知识的技术。
2024-06-18 14:32:08
192
原创 《图解密码技术 (认证)》第八章 —— 消息认证码
消息认证码是密码学家工具箱中 6个重要的工具之一。我们来回忆一下,这 6个重要工具分别是:对称密码、公钥密码、单向散列函数、消息认证码、数字签名、伪随机数生成器。使用消息认证码可以确认自己收到的消息。,也就是说,使用消息认证码可以。
2024-06-01 17:16:57
260
原创 《图解密码技术 (认证)》第七章 —— 单向散列函数
Alice 在公司里从事软件开发工作。一天晚上,她的软件终于完成了,接下来只要把文件从 Alice 的电脑中复制出来并制作成母盘就可以了。不过,Alice 已经很累了,她决定今天晚上早点回家休息,明天再继续弄。第二天,Alice 来到公司准备把文件从自己的电脑中复制出来,但她忽然产生了这样的疑问:“这个文件和我昨晚生成的文件是一样的码?总而言之,Alice需要知道从昨天到今天的这段时间内,Mallory 是否篡改了文件的内容。这种 “一样的” 的性质称为完整性 (integrity)
2024-05-30 17:48:24
572
原创 《图解密码技术 (密码)》第五章 —— 公钥密码
在现实世界中使用对称密码时,我们一定会遇到密钥配送问题 (key distribution problem)。假设 Alice 和 Bob 用过对称加密进行对话。Alice 不但要将密文发送给 Bob,还需要将密钥也发送给 Bob,这样 Bob 才能解密 密文 得到 明文。但是,如果同时发送密文和密钥,则 Eve 也能够同时拿到 密文和密钥 完成解密,图5-1。当然,如果窃听者 Eve无法知道使用的是什么密码算法,那么即便得到了密文和密钥也是无法解密的。然而,
2024-05-24 22:48:38
1023
1
原创 《图解密码技术 (密码)》第四章 —— 分组密码的模式
我们在 第3章 中介绍的 DES 和 AES都属于分组密码,它们。是对数据流进行连续处理的一类密码算法。在第3章 “对称密码” 中所介绍的算法中,只有。例如,如果使用上面骡子的故事中所提到的。,最后再来考察一下到底应该使用哪一种模式。处理完一个分组就结束了,因此不需要通过。是对一串数据流进行连续处理,因此。这一章可以先跳过,为了快速读完本书。分组密码有很多种模式,如果。本章中,我们将首先讲解。的一类密码算法,这里的。,就需要对分组密码进行。
2024-05-24 19:19:33
361
1
原创 《图解密码技术 (密码)》第三章 ——对称密码 (共享密钥密码)
只要通过暴力破解法对密钥空间进行遍历,无论什么密文总有一天也都能够被破译。然而,本节中将要介绍的一次性密码本 (one-time pad)却是一个例外。即便用暴力破解法遍历整个密钥空间,一次性密码本也绝对无法被破译。DES (Data Encryption Standard) 是1977年美国联邦信息处理标准 (FIPS) 中所采用的一种对称密码 (F1PS 46-3)。但是,由于 DES 的密文可以在短时间内被破译,因此除了用它来解密以前的密文以外,现在我们不应该再使用 DES 了。
2024-05-22 22:53:22
661
1
原创 《图解密码技术 (密码)》第二章 —— 历史上的密码
恺撒密码是通过将明文中所使用的字母表按照一定的字数“平移”来进行加密的。在日语 (例如平假名) 或者 汉语 (例如汉语拼音) 中也可以用同样的思路来实现恺撒密码,但为了简化内容,在这里我们只使用英文字母。
2024-05-20 16:43:18
367
原创 《A Graduate Course in Applied Cryptography0.6》第二十一章 —— 认证密钥交换
假设 Alice 和 Bob 希望通过不安全的网络进行安全通信。他们想用安全通道。第9章中,我们看到了如果 Alice 和 Bob 已经有了一个共享密钥1,他们是如何做到这一点的;特别是,我们研究了现实世界中的协议,如SSL和TLS记录协议,它们提供了对数据包的认证加密,并且还保证数据包按顺序发送,且没有重复。然而,这引出了一个问题:Alice 和 Bob如何建立这样一个共享密钥来开始?用于此目的的协议称为认证密钥交换 (AKE) 协议,也是本章的主题。
2024-05-13 20:21:27
615
原创 《图解密码技术 (密码)》第一章 —— 环游密码世界
如果两个散列值一致,就说明下载的文件与发布者所发布的文件是相同的。用上面的例子来说,Alice 可以对 “以100万元的价格购买该商品” 的内容加上数字签名后再通过邮件发送,而 Bob 则可以对该数字签名进行。想象一下,我们在网页下载某个软件,如何知道我们下载的软件和开发者上传的是一样的没有被恶意植入或修改呢?,这种系统结合了 对称密码和公钥密码的优势 (关于混合密码系统,我们将在 第5章 详细讲解)。将消息加密后发送的话,即使消息被窃听,窃听者得到的也只是密文,而无法得知加密前的明文内容。
2024-05-08 17:34:29
824
原创 隐私计算 第一篇论文阅读笔记 (未完待续)
但是,为了使这些基因数据可用于科学研究,患者将自己暴露在侵犯隐私的风险中。即使数据是匿名的,个体患者的基因组数据也可以被重新识别,并可能使近亲面临类似的风险。基于政治的解决方案数据去标识化近似查询应答和基于密码学的技术解决方案。新兴的加密解决方案正迅速变得越来越重要。加密是一种工具,它本质上允许人们将数据密封在一个隐喻的保险库中,只有持有秘密解密密钥的人才能打开。同态加密 HE允许其他方在不拥有密钥的情况下对数据进行操作(比喻通过手套箱将手伸入保险库并操纵数据)。全同态加密 FHE。
2024-04-05 23:33:37
290
原创 排序算法笔记 - 快速排序
设定两个指针 i 和 j,最开始时 i 在序列的最左边,j 在序列的最右边,将指针 i 和 j 分别向中间移动,每次移动一位,直到 i 到了一个值大于 x 的位置,j 到了一个值小于 x 的位置上,然后将 i 和 j 所在的位置上的数组交换 …:调整范围,将序列中小于 x 的元素放在一个标记的左边,记这个标记为 i,将大于 x 的元素放在 i 的右边,最终使得小于 x 的元素都在 x 的左边,大于 x 的都在 x 的右边,相等的则左右都可以存在;时间复杂度——O(n logn)
2024-04-05 11:40:14
197
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人