优化基础模型提示 编程的Python工具包
Manifest是一个轻量级Python工具包,致力于简化基础模型的提示设计和迭代。该工具支持多种API模型,为生成、评分和嵌入操作提供统一接口,并通过缓存机制提升效率和可重现性。Manifest还具备异步查询、流式响应和模型池功能,为开发者提供了灵活使用各类大型语言模型的能力。
如何让使用基础模型进行提示编程变得更容易一些。
安装:
pip install manifest-ml
安装支持扩散模型的版本:
pip install manifest-ml[diffusers]
安装支持 HuggingFace 本地模型的版本:
pip install manifest-ml[api]
开发安装:
git clone git@github.com:HazyResearch/manifest.git cd manifest make dev
开始使用非常简单。如果使用 OpenAI,设置 export OPENAI_API_KEY=<OPENAIKEY>
(或通过变量 client_connection
传入密钥),然后运行
from manifest import Manifest # 启动连接到 OpenAI 的 manifest 会话 - 默认 `engine=text-davinci-003` manifest = Manifest( client_name = "openai", ) manifest.run("为什么草是绿色的?")
我们在 examples 目录下提供了示例笔记本和 Python 脚本。这些示例展示了如何使用不同的模型、模型类型(如文本、扩散或嵌入模型)以及异步运行。
Manifest 旨在成为一个非常轻量级的包,帮助进行提示设计和迭代。Manifest 的三个关键设计决策是:
Manifest 为 OpenAI、AI21、Cohere、Together 和 HuggingFace 提供模型客户端(关于如何使用本地托管的 HuggingFace 模型,请参见下文)。你可以通过更改 client_name
和 client_connection
在这些模型之间切换。例如,如果在本地加载了 HuggingFace 模型,运行
manifest = Manifest( client_name = "huggingface", client_connection = "http://127.0.0.1:5000", )
如果你想使用 Cohere,运行
manifest = Manifest( client_name = "cohere", client_connection = <COHERE_API_KEY>, )
你也可以直接设置 export COHERE_API_KEY=<COHERE_API_KEY>
,而不使用 client_connection
。
如果你想使用 AI21 Labs,运行
manifest = Manifest( client_name = "ai21", client_connection = <AI21_API_KEY>, )
你可以通过以下方式查看模型详情和可能的 run()
模型输入:
print(manifest.client_pool.get_current_client().get_model_params()) print(manifest.client_pool.get_current_client().get_model_inputs())
我们支持将查询和结果存储在可以在用户之间共享的全局缓存中。我们将输入和输出视为键值对,并支持 SQLite 或 Redis 后端。要使用 SQLite 开始全局缓存,运行
manifest = Manifest( client_name = "openai", cache_name = "sqlite", cache_connection = "mycache.sqlite", )
缓存将保存在 mycache.sqlite
中。
我们还支持 Redis 后端。
manifest = Manifest( client_name = "openai", cache_name = "redis", cache_connection = "localhost:6379" )
提示:如果你想运行 Redis,请参见下面开发部分的 docker run
命令。
一旦你打开了一个会话,你就可以编写和开发提示。
result = manifest.run("你好,我的名字是 Laurel")
如果客户端支持,你也可以在多个示例上运行。
results = manifest.run(["猫在哪里?", "狗在哪里?"])
我们还支持异步查询:
import asyncio results = asyncio.run(manifest.arun_batch(["