我刚刚发布了LLM 0.13 ,这是我的 LLM 命令行工具的最新版本,用于处理大型语言模型 – 既可以通过 API,也可以使用插件在本地运行模型。
以下是新版本的带注释的发行说明。
- 添加了对新 OpenAI 嵌入模型的支持:
3-small
和3-large
以及具有不同尺寸大小的三个变体3-small-512
、3-large-256
和3-large-1024
。有关详细信息,请参阅OpenAI 嵌入模型。第394章
发布新版本的最初灵感是 OpenAI 昨天宣布的新模型:新的嵌入模型和 API 更新。
我在《嵌入:它们是什么以及它们为何重要》中编写了嵌入指南。直到最近,唯一可用的 OpenAI 嵌入模型是ada-002
– 于 2022 年 12 月发布,现在感觉有点过时了。
新的3-small
型号与 ada-002 类似,但价格便宜得多(价格是 ada-002 的五分之一),并且基准分数更高。
3-large
具有更高的基准,但也产生更大的向量。 ada-002
和3-small
产生 1536 维向量, 3-large
产生 3072 维!
每个维度对应于嵌入一段内容时生成的数字数组中的一个浮点数。数字越多,这些向量所需的存储空间就越大,对它们进行余弦相似度计算所需的时间就越长。
不过,事情变得非常有趣的地方是:由于人们通常希望用质量来换取更小的向量大小,OpenAI 现在支持一种让模型返回更小的向量的方法。
LLM 还没有将选项传递给嵌入模型的机制(与可以采用-o setting value
选项的语言模型不同),但我仍然希望提供新的较小尺寸。
这就是为什么我包含3-small-512
、 3-large-256
和3-large-1024
:这些是硬编码到指定向量大小的核心模型的变体。
将来我希望支持嵌入模型的选项,但这是一个有用的权宜之计。
- 默认的
gpt-4-turbo
模型别名现在指向gpt-4-turbo-preview
,它使用最新的 OpenAI GPT-4 Turbo 模型(当前为gpt-4-0125-preview
)。第396章
昨天还宣布 – gpt-4-0125-preview
是 GPT-4 模型的最新版本,根据 OpenAI 的说法,“比之前的预览模型更彻底地完成代码生成等任务,旨在减少“懒惰”的情况模型没有完成任务的地方”。
这在技术上是一个重大变化 – gpt-4-turbo
LLM 别名过去指向旧模型,但现在指向 OpenAI 的gpt-4-turbo-preview
别名,而后者又指向最新模型。
- 新的 OpenAI 模型别名
gpt-4-1106-preview
和gpt-4-0125-preview
。
这些别名允许您显式调用这些模型:
llm -m gpt-4-0125-preview '编写大量代码而不偷懒'
- OpenAI 模型现在支持
-o json_object 1
选项,这将导致其输出作为有效的 JSON 对象返回。第373章
这是一个有趣的功能,它使用 OpenAI 选项,声称可以保证有效的 JSON 输出。
奇怪的是,使用此功能时,您必须在提示中包含单词“json”,否则 OpenAI 将返回错误!
llm -m gpt-4-turbo \
' JSON 格式的宠物鹈鹕的 3 个名称和简短简介' \
-o json_object 1
刚才为我返回了以下内容:
{ “鹈鹕” :[ { “姓名” : “格斯” , “简介” : “格斯是一只充满好奇心的年轻鹈鹕,对冒险有着永不满足的渴望。他因顽皮地抢夺太阳镜而在码头工人中出名。格斯整天都在探索码头,特别喜欢表演空中特技来获得美食。 ” }, { “姓名” : “苏菲” , "bio" : "索菲是一只优雅的鹈鹕,举止温柔。她在海滩上已经成为当地的名人,经常看到她精心整理羽毛或耐心地摆姿势给游客拍照。索菲有一个特别喜欢观赏的地方每天傍晚的日落。 ” }, { “名字” : “比基船长” , "bio" : " Beaky 船长是海湾的非官方监督者,性格严肃但又可爱。作为一位经验丰富的沿海天空老手,他喜欢带领他的羊群进行钓鱼探险,并且总是第一个发现归来的渔船到港口。他受到鹈鹕同伴和渔民的尊敬。 ” } ] }
它使用的 JSON 模式完全是虚构的。您可以使用示例模式来提示它,它可能会坚持使用它。
- 自上次发布以来的新插件包括llm-mistral 、 llm-gemini 、 llm-ollama和llm-bedrock-meta 。
前两个是我写的,但llm-ollama
是由Sergey Alexandrov编写的, llm-bedrock-meta
是由Fabian Labat编写的。我的插件编写教程开始得到回报了!
- 用于存储 API 密钥的
keys.json
文件现已创建,具有600
文件权限。第351章
克里斯托弗·贝尔 (Christopher Bare) 提出了一个巧妙的建议。
LLM 是为 Homebrew打包的。 Homebrew 软件包不久前升级到了 Python 3.12,这导致了令人惊讶的问题,因为事实证明PyTorch (某些 LLM 插件的依赖项)还没有针对 3.12 的稳定构建。
Christian Bush 在 LLM 问题线程中分享了一种解决方法,我现在已将其添加到文档中。
- 底层 OpenAI Python 库已升级至
>1.0
。这可能会导致也依赖于该库的 LLM 插件的兼容性问题。第325章
这是大部分工作。 OpenAI几个月前发布了他们的 1.0 Python 库,与之前的版本相比,它有大量的重大更改。
当时,我将 LLM 固定到以前的版本以弥补中断,但这意味着您无法在与其他需要更新 OpenAI 版本的库相同的环境中安装 LLM。
发生了很多变化!您可以在我捆绑了工作的拉取请求中找到升级的详细说明。
- 箭头键现在可以在
llm chat
命令中使用。第376章
这样做的秘诀很奇怪:
导入阅读线 阅读线。 parse_and_bind ( " \\ e[D: 向后字符" ) 阅读线。 parse_and_bind ( “ \\ e[C:forward-char” )
我在 Mastodon 上询问是否有人知道一个不那么晦涩的解决方案,但看起来这可能是我们能做的最好的了!
LLM_OPENAI_SHOW_RESPONSES=1
环境变量现在输出有关对 OpenAI(和 OpenAI 兼容)API 进行的 HTTP 请求和响应的更详细信息。第404章
此功能在 OpenAI >1.0 升级之前通过利用某些requests
内部结构来发挥作用。 OpenAI 放弃了对httpx
requests
,因此我不得不从头开始重建此功能。
我最终得到了一个 TIL:使用 HTTPX 记录 OpenAI API 请求和响应。
- 放弃了对 Python 3.7 的支持。
我不想再看到pkg_resources 相关的警告,这意味着切换到 Python 3.8 的importlib.medata
。 Python 3.7早在 2023 年 6 月就停止了支持,所以我认为这是一个不错的改变。
原文: https://simonwillison.net/2024/Jan/26/llm/#atom-everything