核心提示词管理功能可用性保障

可用性保障

💡

通常没必要做这一步,因为它会给你的应用增加复杂度。Litefuse Prompt 管理本身具备很高的可用性,得益于多层缓存机制,并且我们密切监控其性能(状态页)。但如果你确实需要 100% 可用性,可以采用下面的方案。

Litefuse API 的可用性很高,并且 prompt 会在 SDK 中本地缓存,避免网络问题影响你的应用。

不过,get_prompt()/getPrompt() 在以下情况下会抛出异常:

  • 本地(无论是新鲜的还是陈旧的)都没有缓存的 prompt -> 新的应用实例首次拉取 prompt
  • 并且 网络请求失败 -> 出现网络问题或 Litefuse API 故障(重试之后仍然失败)

要保证 100% 可用性,有两种方案:

  1. 在应用启动时预取 prompt,如果不可用就退出应用。
  2. 提供一个 fallback prompt,在上述情况下使用。

方案 1:预取 prompt

在应用启动时预取 prompt,如果不可用就退出应用。

from flask import Flask, jsonify
from langfuse import Langfuse
 
# Initialize the Flask app and Langfuse client
app = Flask(__name__)
langfuse = Langfuse()
 
def fetch_prompts_on_startup():
    try:
        # Fetch and cache the production version of the prompt
        langfuse.get_prompt("movie-critic")
    except Exception as e:
        print(f"Failed to fetch prompt on startup: {e}")
        sys.exit(1)  # Exit the application if the prompt is not available
 
# Call the function during application startup
fetch_prompts_on_startup()
 
@app.route('/get-movie-prompt/<movie>', methods=['GET'])
def get_movie_prompt(movie):
    prompt = langfuse.get_prompt("movie-critic")
    compiled_prompt = prompt.compile(criticlevel="expert", movie=movie)
    return jsonify({"prompt": compiled_prompt})
 
if __name__ == '__main__':
    app.run(debug=True)

方案 2:Fallback

提供一个 fallback prompt,在上述情况下使用:

from langfuse import Langfuse
langfuse = Langfuse()
 
# Get `text` prompt with fallback
prompt = langfuse.get_prompt(
  "movie-critic",
  fallback="Do you like {{movie}}?"
)
 
# Get `chat` prompt with fallback
chat_prompt = langfuse.get_prompt(
  "movie-critic-chat",
  type="chat",
  fallback=[{"role": "system", "content": "You are an expert on {{movie}}"}]
)
 
# True if the prompt is a fallback
prompt.is_fallback
这个页面对你有帮助吗?