Skip to main content

预测守卫 (Prediction Guard)

本页面介绍如何在LangChain中使用预测守卫 (Prediction Guard) 生态系统。它分为两个部分:安装和设置,以及对特定预测守卫包装器的引用。

安装和设置

  • 使用 pip install predictionguard 安装Python SDK
  • 获取一个预测守卫访问令牌(如此处所述),并将其设置为环境变量(PREDICTIONGUARD_TOKEN

LLM包装器

存在一个预测守卫LLM包装器,您可以使用以下代码访问:

from langchain.llms import PredictionGuard

在初始化LLM时,您可以将预测守卫模型的名称作为参数提供:

pgllm = PredictionGuard(model="MPT-7B-Instruct")

您还可以直接提供访问令牌作为参数:

pgllm = PredictionGuard(model="MPT-7B-Instruct", token="<your access token>")

最后,您可以提供一个用于结构化/控制LLM输出的"output"参数:

pgllm = PredictionGuard(model="MPT-7B-Instruct", output={"type": "boolean"})

示例用法

使用受控或受保护的LLM包装器的基本用法:

import os

import predictionguard as pg
from langchain.llms import PredictionGuard
from langchain import PromptTemplate, LLMChain

# 您的预测守卫API密钥。在predictionguard.com上获取一个。
os.environ["PREDICTIONGUARD_TOKEN"] = "<your Prediction Guard access token>"

# 定义一个提示模板
template = """根据上下文回答以下查询。

上下文:每个评论、私信和电子邮件建议都引导我们做出这个令人兴奋的公告!🎉 我们正式添加了两个新的蜡烛订阅盒选项!📦
独家蜡烛盒 - $80
每月蜡烛盒 - $45(新!)
本月香气盒 - $28(新!)
前往故事了解每个盒子的所有细节!👆 奖励:使用代码50OFF节省首个盒子的50%!🎉

查询:{query}

结果:"""
prompt = PromptTemplate(template=template, input_variables=["query"])

# 使用"guarding"或控制LLM的输出。请参阅预测守卫文档(https://docs.predictionguard.com)以了解如何使用整数、浮点数、布尔值、JSON和其他类型和结构来控制输出。
pgllm = PredictionGuard(model="MPT-7B-Instruct",
output={
"type": "categorical",
"categories": [
"产品公告",
"道歉",
"关系"
]
})
pgllm(prompt.format(query="这是什么类型的帖子?"))

使用预测守卫包装器进行基本的LLM链式调用:

import os

from langchain import PromptTemplate, LLMChain
from langchain.llms import PredictionGuard

# 可选,添加您的OpenAI API密钥。这是可选的,因为预测守卫允许您访问所有最新的开放访问模型(请参阅https://docs.predictionguard.com)
os.environ["OPENAI_API_KEY"] = "<your OpenAI api key>"

# 您的预测守卫API密钥。在predictionguard.com上获取一个。
os.environ["PREDICTIONGUARD_TOKEN"] = "<your Prediction Guard access token>"

pgllm = PredictionGuard(model="OpenAI-text-davinci-003")

template = """问题:{question}

答案:让我们逐步思考。"""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm_chain = LLMChain(prompt=prompt, llm=pgllm, verbose=True)

question = "贾斯汀·比伯出生的那一年,哪支NFL球队赢得了超级碗?"

llm_chain.predict(question=question)