跳至内容

2023

Python 中的缓存简介

Instructor 使处理语言模型变得容易,但它们仍然计算开销很大。

今天,我们将深入研究优化 Instructor 代码,同时保持 Pydantic 模型提供的优秀开发体验 (DX)。我们将解决缓存 Pydantic 模型的挑战(通常与 pickle 不兼容),并探索使用 decorator (如 functools.cache) 的解决方案。然后,我们将使用 diskcacheredis 构建自定义装饰器,以支持持久化缓存和分布式系统。

生成器和 LLM 流式传输

延迟至关重要,尤其是在电子商务和像 ChatGPT 这样的新型聊天应用中。流式传输是一种解决方案,它使我们能够在不提高响应速度的情况下增强用户体验。

是什么让流式传输成为可能?生成器!

使用 Pydantic 验证 LLM 引用

确保信息的准确性至关重要。本博客文章探讨了 Pydantic 强大而灵活的验证器如何通过引用验证来增强数据准确性。

我们将首先使用简单的子字符串检查来验证引用。然后,我们将利用 instructor 本身来驱动一个 LLM,以验证引用并将答案与给定引用对齐。最后,我们将探索如何使用这些技术生成准确响应的数据集。

使用 asyncioInstructor 在 Python 中异步处理 OpenAI

今天,我将向您介绍在 Python 中使用 asyncio 的各种方法。我们将将其应用于使用 instructor 批量处理数据,并学习如何使用 asyncio.gatherasyncio.as_completed 进行并发数据处理。此外,我们将探讨如何使用 asyncio.Semaphore 限制对服务器的并发请求数量。

通过微调 GPT-3.5 和密度链实现更智能的摘要

了解如何使用 Instructor 将像密度链这样的迭代方法提炼成一个单一的微调模型

在本文中,我们将指导您使用 Instructor 实现原始的密度链方法,然后展示如何提炼 GPT 3.5 模型以匹配 GPT-4 的迭代摘要能力。使用这些方法,我们能够将延迟降低 20 倍,成本降低 50 倍,并保持实体密度。

最后,您将得到一个 GPT 3.5 模型(使用 Instructor 出色的工具进行微调),该模型能够生成与密度链效果媲美的摘要 [Adams et al. (2023)]。一如既往,所有代码都在我们 repo 的 examples/chain-of-density 文件夹中提供,供您参考。

好的 LLM 验证就是好的验证

如果你的验证逻辑可以像人一样学习和适应,但却以软件的速度运行呢?这就是验证的未来,而且它已经到来。

验证是可靠软件的基石。但传统方法是静态的、基于规则的,无法适应新的挑战。本文探讨了如何使用 Python 库(如 PydanticInstructor)将动态的、机器学习驱动的验证引入到你的软件堆栈中。我们使用符合如下结构的验证函数来验证这些输出。

def validation_function(value):
    if condition(value):
        raise ValueError("Value is not valid")
    return mutation(value)

随着大型语言模型 (LLM) 的出现,检索增强生成 (RAG) 已成为热门话题。然而,在过去一年中,帮助初创公司将 LLM 集成到其堆栈中时,我注意到接受用户查询、对其进行嵌入并直接搜索向量存储的模式实际上只是一种演示。

什么是 RAG?

检索增强生成 (RAG) 是一种使用 LLM 生成响应的技术,但使用搜索后端来增强生成。在过去一年中,使用文本嵌入和向量数据库是我看到的最流行的社交化方法。

RAG

简单的 RAG,嵌入用户查询并进行搜索。

所以,让我们从审视我称之为“傻瓜式”RAG 模型开始——一个比你想象的更常见的基本设置。