ChatPremAI 交互不同的聊天模型。安装与设置
我们首先安装langchain 和 premai-sdk。您可以键入以下命令进行安装
在 LangChain 中设置 PremAI 客户端
导入所需的模块后,让我们设置客户端。目前,我们假设project_id 为 8。但请确保您使用自己的 project-id,否则会报错。 要将 LangChain 与 Prem 配合使用,您无需传递任何模型名称或使用我们的聊天客户端设置任何参数。默认情况下,它将使用 LaunchPad 中使用的模型名称和参数。注意:如果您在设置客户端时更改model或任何其他参数(如temperature或max_tokens),它将覆盖 LaunchPad 中使用的现有默认配置。
聊天补全
ChatPremAI 支持两种方法:invoke(与 generate 相同)和 stream。 第一种将给我们一个静态结果。而第二种将逐个流式传输令牌。以下是生成类聊天补全的方法。Always sound like a pirate。如果需要,您还可以覆盖默认系统提示。方法如下。
如果您在此处放置系统提示,它将覆盖您在从平台部署应用程序时固定的系统提示。
使用 Prem 存储库进行原生 RAG 支持
Prem 存储库允许用户上传文档(.txt、.pdf 等)并将这些存储库连接到 LLM。您可以将 Prem 存储库视为原生 RAG,其中每个存储库都可以被视为一个向量数据库。您可以连接多个存储库。您可以在此处了解更多关于存储库的信息。 LangChain premai 也支持存储库。以下是操作方法。请注意:与现在,我们将存储库与聊天对象连接起来,以调用基于 RAG 的生成。model_name类似,当您调用参数repositories时,您可能会覆盖 Launchpad 中连接的存储库。
理想情况下,您无需在此处连接存储库 ID 即可获得检索增强生成。如果您已在 Prem 平台中连接存储库,仍然可以获得相同的结果。
Prem 模板
编写提示模板可能非常麻烦。提示模板很长、难以管理,并且必须不断调整才能改进并在整个应用程序中保持一致。 使用 Prem,编写和管理提示会变得非常简单。Launchpad 中的模板选项卡可帮助您编写所需的任意数量的提示,并在 SDK 中使用它们来使您的应用程序使用这些提示运行。您可以在此处阅读更多关于提示模板的信息。 要将 Prem 模板与 LangChain 本地使用,您需要将 ID 传递给HumanMessage。此 ID 应该是您的提示模板变量的名称。HumanMessage 中的 content 应该是该变量的值。 例如,如果您的提示模板是这样的:human_messages 传递给 ChatPremAI 客户端。请注意:不要忘记传递额外的 template_id 以使用 Prem 模板调用生成。如果您不了解 template_id,可以在我们的文档中了解更多信息。这是一个示例
流式处理
在本节中,我们来看看如何使用 LangChain 和 PremAI 流式传输令牌。方法如下。工具/函数调用
LangChain PremAI 支持工具/函数调用。工具/函数调用允许模型通过生成与用户定义模式匹配的输出,来响应给定的提示。 注意:当前版本的 LangChain ChatPremAI 不支持带有流式传输功能的函数/工具调用。带有函数调用的流式传输支持即将推出。将工具传递给模型
为了传递工具并让 LLM 选择需要调用的工具,我们需要传递一个工具模式。工具模式是函数定义以及关于函数功能、函数每个参数等适当的文档字符串。下面是一些带有其模式的简单算术函数。 注意:在定义函数/工具模式时,不要忘记添加有关函数参数的信息,否则会报错。将工具模式与我们的 LLM 绑定
现在我们将使用bind_tools 方法将上述函数转换为“工具”并将其与模型绑定。这意味着我们每次调用模型时都会传递这些工具信息。
- 在我们的第一次调用中,我们收集了 LLM 决定使用的所有工具,以便它可以将结果作为附加上下文,从而给出更准确、无幻觉的结果。
- 在我们的第二次调用中,我们将解析 LLM 决定的那些工具集并运行它们(在我们的例子中,它们将是我们定义的函数,带有 LLM 提取的参数),并将此结果传递给 LLM。
定义工具模式:Pydantic 类
上面我们展示了如何使用tool 装饰器定义模式,但是我们也可以使用 Pydantic 等效地定义模式。当您的工具输入更复杂时,Pydantic 会很有用
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。