Skip to main content
你可以使用 LangSmith 的 Python 和 TypeScript SDK 以编程方式管理提示词。
此功能先前位于现已弃用的 langchainhub 包中。未来所有功能都将迁移到 langsmith 包中。

安装包

在 Python 中,你可以直接使用 LangSmith SDK(推荐,功能完整),也可以通过 LangChain 包使用(仅限于推送和拉取提示词)。 在 TypeScript 中,你必须使用 LangChain npm 包来拉取提示词(它也支持推送)。对于所有其他功能,请使用 LangSmith 包。

配置环境变量

如果你已经将 LANGSMITH_API_KEY 设置为当前 LangSmith 工作空间的 API 密钥,可以跳过此步骤。 否则,请通过导航到 LangSmith 中的 Settings > API Keys > Create API Key 获取工作空间的 API 密钥。 设置环境变量。
我们所说的“提示词”过去被称为“仓库”,因此代码中任何对“repo”的引用都指的是提示词。

推送提示词

要创建新提示词或更新现有提示词,可以使用 push prompt 方法。
你也可以将提示词作为提示词和模型的 RunnableSequence 推送。这对于存储你希望与此提示词一起使用的模型配置非常有用。提供者必须受 Playground 支持,请参阅支持的模型提供者

推送 StructuredPrompt

StructuredPrompt 将提示词模板与输出模式相结合,确保模型返回的数据符合定义的结构。使用 StructuredPrompt.from_messages_and_schema(Python)或 StructuredPrompt.fromMessagesAndSchema(TypeScript)创建一个,然后像推送其他提示词一样将其推送到 hub。

不包含模型

当你希望独立于任何模型配置存储模板和模式时,可以单独推送结构化提示词。

包含模型

将结构化提示词作为 RunnableSequence 与模型一起推送,以在 hub 中存储完整的流水线,包括模型配置。

拉取提示词

要拉取提示词,可以使用 pull prompt 方法,该方法将提示词作为 langchain 的 PromptTemplate 返回。 要拉取私有提示词,你不需要指定所有者句柄(但如果你设置了句柄,也可以指定)。 要从 LangChain Hub 拉取公共提示词,你需要指定提示词作者的句柄。
与推送提示词类似,你也可以将提示词作为提示词和模型的 RunnableSequence 拉取。只需在拉取提示词时指定 include_model。如果存储的提示词包含模型,它将作为 RunnableSequence 返回。确保为你使用的模型设置了正确的环境变量。
拉取提示词时,你还可以指定特定的提交哈希或提交标签来拉取提示词的特定版本。
要从 LangChain Hub 拉取公共提示词,你需要指定提示词作者的句柄。
对于拉取提示词,如果你使用的是 Node.js 或支持动态导入的环境,我们建议使用 langchain/hub/node 入口点,因为它会自动处理与提示词配置关联的模型的反序列化。如果你在非 Node 环境中,对于非 OpenAI 模型不支持“includeModel”,你应该使用基础的 langchain/hub 入口点。

提示词缓存

LangSmith SDK 包含内置的内存中提示词缓存。启用后,LangSmith 会将拉取的提示词缓存在内存中,减少频繁使用提示词的延迟和 API 调用。缓存使用全局单例实例,该实例在所有客户端之间共享,并在进程的整个生命周期内持续存在。它实现了陈旧-重新验证模式,确保你的应用程序始终获得快速响应,同时在后台保持提示词的最新状态。 要求:
  • Python SDK:langsmith >= 0.7.0
  • TypeScript SDK:langsmith >= 0.5.0

默认行为

缓存默认启用。启用后,默认设置如下: 刷新时,全局缓存将使用最后请求给定提示词的客户端来获取新数据。

使用缓存

默认情况下,所有客户端都使用全局提示词缓存。无需配置:

配置全局缓存

你可以配置所有客户端默认使用的全局提示词缓存。这在你想在整个应用程序中自定义缓存行为时非常有用:

禁用缓存

要为特定客户端禁用缓存,请传递 disable_prompt_cache=True。你也可以全局配置最大大小为零:

跳过缓存

要为单个请求绕过缓存并从 API 获取新的提示词,请使用 skip_cache 参数:
这在需要确保拥有提示词的最新版本时非常有用,例如在 LangSmith UI 中进行更改后。

离线模式

对于网络连接有限或没有网络连接的环境,你可以预先填充缓存并离线使用。将 ttl_seconds 设置为 None(Python)或 null(TypeScript)以防止缓存条目过期并禁用后台刷新。 步骤 1:将提示词导出到缓存文件(在线时)
步骤 2:在离线环境中加载缓存文件

缓存操作

缓存支持多种管理缓存提示词的操作:

清理

你可以手动调用 stop() 来停止后台刷新任务:
后台刷新任务仅在首次在缓存中设置值时启动,并且仅当 ttl_seconds 不为 None 时。如果 ttl_secondsNone(离线模式),则不会创建后台任务。

不使用 LangChain 使用提示词

如果你希望将提示词存储在 LangSmith 中,但直接与模型提供者的 API 一起使用,可以使用我们的转换方法。这些方法将你的提示词转换为 OpenAI 或 Anthropic API 所需的负载。 这些转换方法依赖于 LangChain 集成包内的逻辑,除了你选择的官方 SDK 外,你还需要安装相应的包作为依赖项。以下是一些示例:

OpenAI

Anthropic

列出、删除和点赞提示词

你也可以使用 list promptsdelete promptlike promptunlike prompt 方法来列出、删除和点赞/取消点赞提示词。有关这些方法的详细文档,请参阅 LangSmith SDK 客户端